AT89S52与DS18B20数字温度传感器测试结束 作者: 时间:2016-11-29 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 /************************************************************************ 温度获取***********************************************************************/void get_tem(){uchar tem1,tem2;float aaa;reset(); //复位write_byte(0xCC);//跳过ROMwrite_byte(0x44);//温度转换reset();write_byte(0xCC);write_byte(0xBE);tem1=read_byte();tem2=read_byte();TH=tem2;if(tem2>0x7f)tem2=~tem2;aaa=(tem2*256+tem1)*6.25;temper=(int)aaa;a1=temper/1000;a2=temper%1000/100;a3=temper%100/10;a4=temper%10;}/************************************************************************ 清屏***********************************************************************/void init(){P1=0x00;P0=0xff;}/*********************************************************************** * 正温度时,显示************************************************************************/void disp(uchar num1,uchar num2,uchar num3,uchar num4){P1=table[num1];P0=0xfe;delayms(2);P1=table1[num2];P0=0xfd;delayms(2);P1=table[num3];P0=0xfb;delayms(2);P1=table[num4];P0=0xf7;delayms(2);}/*********************************************************************** * 负温度时,显示************************************************************************/void disp1(uchar num1,uchar num2,uchar num3){P1=0x40;//显示负号P0=0xfe;delayms(2);P1=table[num1];P0=0xfd;delayms(2);P1=table1[num2];P0=0xfb;delayms(2);P1=table[num3];P0=0xf7;delayms(2);}/*********************************************************************** * 毫秒级的延时* 晶振7.3728M***********************************************************************/ void delayms(uchar i) //误差 -0.651041666667us{uchar a,b;for(;i>0;i--)for(b=47;b>0;b--)for(a=5;a>0;a--);}/*********************************************************************** * 定时器0中断服务程序, 设置20毫秒计时器。每1秒钟采集一次温度值************************************************************************/void Timer0Interrupt(void) interrupt 1{TH0 = 0x88;TL0 = 0x00;//add your code here!time++;if(time==20){time=0;get_tem();}} 上一页 1 2 下一页
评论