1、0123456789ABCDEFint f4;int tvalue;float ftvalue;uint warnl=320;uint warnh=992;/*lcd程序*/void delayms(uint ms)/延时uint i,j;for(i=ms;i0;i-)for(j=110;jj-);void wrcom(uchar com)/写指令delayms(1);rs=0;P3=com;e=1;e=0;void wrdat(uchar dat)/写数据rs=1;P3=dat;delayms(5);void lcdinit()/初始化lcddelayms(15);wrcom(0x38);d
2、elayms(5);wrcom(0x0c);wrcom(0x06);wrcom(0x01);void display(uchar *p)/显示while(*p!=0)wrdat(*p);p+;delayms(1);displayinit()/初始化显示lcdinit();wrcom(0x80);display(table0);/*ds18b20程序*/void dsrst()/ds18b20复位uint i;ds=0;i=103;while(i0)i-;ds=1;i=4;bit dsrd0()/读一位数据bit dat;i+;dat=ds;i=8;while(ireturn(dat);ucha
3、r dsrd()/读1个字节数据uchar i,j,dat;dat=0;for(i=8;j=dsrd0();dat=(j1);void dswr(uchar dat)/写数据uchar j;bit testb;for(j=8;j-)testb=dat&0x01;dat=dat1;if(testb)ds=0;i+;ds=1;i=8;elsevoid tmstart()/初始化ds18b20sp=1;d1=1;d2=1;dsrst();dswr(0xcc);dswr(0x44);void read_dealtemp()/读取并处理温度uchar i,j,t;uchar a,b;for(j=0;j4
4、;j+)dsrst();dswr(0x55);for(i=0;i8;i+)dswr(lcdromji);/发送64位序列号dswr(0xbe);a=dsrd();b=dsrd();tvalue=b;tvalue=8;tvalue=tvalue|a;if(tvaluewarnl)d2=0;sp=0;elsed2=1;sp=1;d2=1;wrdat( );warnh)d1=0;d1=1;if(j=0)wrcom(0x8e); wrdat(2if(j=1)3if(j=2) 4if(j=3)5ftvalue=tvalue*0.0625;tvalue=ftvalue*10+0.5;ftvalue=ftv
5、alue+0.05;fj=tvalue;/温度扩大十倍,精确到一位小数tvalue=fj;t=tvalue/1000;wrcom(0x80+0x41);wrdat(table1t);/显示百位 t=tvalue%1000/100;/显示十位t=tvalue%100/10;/显示个位wrdat(0x2e); /显示小数点儿t=tvalue%10/1;/显示小数位 delayms(5000);/*主函数*/void main() displayinit();/初始化显示 while(1) tmstart();/初始化 read_dealtemp();/读取温度 /*序列号读取程序*/#includ
6、e sbit DQ = P11; /温度传感器信号线sbit rs = P14; /LCD数据/命令选择端(H/L)位声明sbit lcden = P16; /LCD使能信号端位声明void delay(uint z); /延时函数void DS18B20_Reset(void); /DQ18B20复位,初始化函数bit DS18B20_Readbit(void); /读1位数据函数uchar DS18B20_ReadByte(void); /读1个字节数据函数void DS18B20_WriteByte(uchar dat); /向DQ18B20写一个字节数据函数void LCD_Write
7、Com(uchar com); /1602液晶命令写入函数void LCD_WriteData(uchar dat); /1602液晶数据写入函数void LCD_Init(); /LCD初始化函数void Display18B20Rom(char Rom); /显示18B20序列号函数/*/* 主函数 */ uchar a,b,c,d,e,f,g,h; LCD_Init(); DS18B20_Reset(); delay(1); DS18B20_WriteByte(0x33); a = DS18B20_ReadByte(); b = DS18B20_ReadByte(); c = DS18B20_ReadByte(); d = DS18B20_ReadByte(); e = DS18B20_ReadByte(); f = DS18B
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1