这是我的程序,当时是为了做一个小冰箱的温控器做的,用的是51单片机,共阴数码管,P0口做段选,P1.4-1.7做位选。
#include
#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
//相比以前的函数解决了显示不了百位,不能直接显示负号等
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
// 0 1 2 3
0x66,0x6d,0x7d,0x07,
// 4 5 6 7
0x7f,0x6f,0x40
//8 9 -
};
void display(uchar , uchar ,uchar ,uchar );
void delay_led(uint z);
void init_led();
uchar wei_3,v,wei_4,wei_5,wei_6,FWD,flag;
int shuju,a; //得到的温度值
uchar temp[2]={0,0}; //存放DS18B20的温度寄存器值
uint value = 0;
sbit DQ=P1^0; //数据线
sbit key=P1^1; //被控开关
sbit key1=P3^4; //温度加
sbit key2=P3^5; //温度减
sbit d1=P1^2; //设置指示灯
sbit we1=P1^4;
sbit we2=P1^5;
sbit we3=P1^6;
sbit we4=P1^7;
void ow_reset(void);
void tmstart (void);
void Read_Temperature(void);
void write_byte(char);
uint read_byte(void);
void delay_18B20(uint);
/*******主函数**********/
void main()
{
init_led();//初始化子程序
tmstart ();//18b20初始化
delay_18B20(50); /*等待转换结束*/
while(1)
{
Read_Temperature();