992b81030c187f9c
获得 0 次赞
帮助过0人
#include <REG51.h>#define uchar unsigned char#define uint unsigned intsbit RS=P2^0;sbit RW=P2^1;sbit EN=P2^2;sbit DQ=P3^4;uchar code table1[]="Temperature is:";uint table2[6]temperaturetemperatureflag;uint wei_baiwei_shiwei_gexiaoshufuhaowendu;void delay(int a){ int ij; for(i=a;i>0;i--) for(j=0;j<110;j++);}void delayus(int a){ while(a--);}void write_com(uchar com){ P0=com; RS=0;RW=0;EN=1; delay(10); EN=0;}void write_dat(uchar dat){ P0=dat; RS=1;RW=0;EN=1; delay(10); EN=0;}void init_LM1602(){ write_com(0x01); write_com(0x38); write_com(0x0c); write_com(0x06);}uchar read_onebyte(){ uchar itemp=0; for(i=0;i<8;i++) { DQ=0; temp>>=1; DQ=1; if(DQ) temp|=0x80; delayus(4); } return temp;}void write_onebyte(uchar dat){ uchar i; for(i=0;i<8;i++) { DQ=0; DQ=dat&0x01; delayus(10); DQ=1; dat>>=1; }}void init_DS18B20(){ uchar x=0; DQ=1; delayus(8); DQ=0; delayus(80); DQ=1; delay(4); x=DQ; delayus(20);}uchar read_Temparature(){ uchar tempL=0tempH=0; init_DS18B20(); write_onebyte(0xcc); write_onebyte(0x44); delayus(100); init_DS18B20(); write_onebyte(0xcc); write_onebyte(0xbe); tempL=read_onebyte(); tempH=read_onebyte();/@@* if(tempH&0xF0) //显示负数 { tempL=~tempL; tempH=~tempH; temperature=(tempH*256+tempL)/16*(-1)-1; temperatureflag=1; } else //显示正数 { temperature=(tempH*256+tempL)*0.0625; temperatureflag=0; }*/ temperature=tempH; temperature=temperature<<8; temperature=temperature|tempL; if(temperature>0x0fff) { temperature=~temperature+2; temperatureflag=1; } else temperatureflag=0; temperature=temperature*0.0625*10; return temperature;}void display(){ wendu=read_Temparature(); if(temperatureflag==1) fuhao=0x2d; else fuhao=0x2b; wei_bai=wendu/1000+0x30; wei_shi=wendu%1000/100+0x30; wei_ge=wendu%100/10+0x30; xiaoshu=wendu%10+0x30; write_com(0xc3); write_dat(fuhao); write_dat(wei_bai); write_dat(wei_shi); write_dat(wei_ge); write_dat(0x2e); write_dat(xiaoshu); write_dat(0xdf); write_dat(0x43);}void main(){ uchar i; init_LM1602(); while(1) { write_com(0x80); for(i=0;i<15;i++) { write_dat(table1[i]); delay(5); } display(); }}复制代码