内蒙古科技大学课程设计论文
b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else
{tvalue=~tvalue+1; tflag=1; }
tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 return(tvalue); }
/*******************************************************************/ void ds1820disp()//温度值显示 { uchar flagdat; disdata[0]=tvalue/1000+0x30;//百位数
disdata[1]=tvalue00/100+0x30;//十位数 disdata[2]=tvalue0/10+0x30;//个位数 disdata[3]=tvalue+0x30;//小数位
if(tflag==0) flagdat=0x20;//正温度不显示符号 else
flagdat=0x2d;//负温度显示负号:-
if(disdata[0]==0x30) {disdata[0]=0x20;//如果百位为0,不显示 if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位为0,十位为0也不显示 } } wr_com(0xc0); wr_dat(flagdat);//显示符号位 wr_com(0xc1); wr_dat(disdata[0]);//显示百位 wr_com(0xc2); wr_dat(disdata[1]);//显示十位 wr_com(0xc3); wr_dat(disdata[2]);//显示个位 wr_com(0xc4); wr_dat(0x2e);//显示小数点
23
内蒙古科技大学课程设计论文
wr_com(0xc5); wr_dat(disdata[3]);//显示小数位 }
/********************主程序***********************************/ void main()
{ init_play();//初始化显示 while(1) {read_temp();//读取温度 ds1820disp();//显示 } }
24