18B20溫度1602顯示
void ReadTemp(void)
{
uchar a=0;
uchar b=0;
uchar t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
delay_18B20(100); // this message is wery important
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
delay_18B20(100);
a=ReadOneChar(); //讀取溫度值低位
b=ReadOneChar(); //讀取溫度值高位
temp_value=b<<4;
temp_value+=(a&0xf0)>>4;
}本文引用地址:http://m.butianyuan.cn/article/201611/323945.htm
void time1(void)
{
unsigned char i;
for(i=0;i<20;i++)
{
TMOD = 0x01;
TH0 = 0x3C;
TL0 = 0x0B0;
TR0 = 1;
while(!TF0);
TF0=0;
TH0=0x3c;
TL0=0x0b0;
TR0=1;
}
}
void wait() //等待繁忙
{
P0=0xff;
do
{
EN=0;
RS=0;
RW=1;
EN=1;
}while(busy==1);
EN=0;
}
void writecmd(unsigned char k)//寫命令
{
wait();
RS=0;
RW=0;
P0=k;
EN=1;
EN=0;
}
void writedat(unsigned char p) //寫數(shù)據(jù)
{
wait();
RS=1;
RW=0;
P0=p;
EN=1;
EN=0;
}
void init1602() //1602初始化
{
writecmd(0x38);
writecmd(0x0c);
writecmd(0x06);
writecmd(0x01);
}
void main()
{
unsigned char *p;
init1602();
p=show1;
writecmd(0x80);
while(*p!=