DS18B20温度显示程序(共3页)_第1页
DS18B20温度显示程序(共3页)_第2页
DS18B20温度显示程序(共3页)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DS18B20传感器温度数码管显示#include#include /传感器 DS18B20#include /字符操作库sbit g1=P27;sbit g2=P26;sbit g3=P25;sbit g4=P24;sbit lv=P22; sbit jin=P33; /进sbit jia=P34; /加sbit jian=P35; /减uint shiwen;uint zuigao=30; /最高30度uint zuidi=20; /最低20度/*键盘调节/uchar flag=0; /记录第一个按键次数 flag=0正常 1最高 2最低 uchar flag2=0; /记录第四个按键次数

2、 flag2=0正常 1调节小时 2调节分钟 uchar tableshu=0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xe0,0xff ,0xf7 ; uchar tableshudi=0x08,0xcb,0x12,0x82,0xc1,0x84,0x04,0xca,0x00,0xc0,0xff ; void main()uchar TL; /储存暂存器的温度低位 uchar TH; /储存暂存器的温度高位 uint TN; /储存温度的整数部分 uchar TD; /储存温度的小数部分 uchar ba,sh,ge,di,ba1,sh1,ge1

3、,di1;bit flag1; /判断显示正负0负 1正 delay1(5); /延时5ms给硬件一点反应时间 while(1) /不断检测并显示温度 init();/读温度准备if(flag1=1) dis(ba,sh,ge,di); else dis(11,sh,ge,di); TL=ReadOneChar(); /先读的是温度值低位 TH=ReadOneChar(); /接着读的是温度值高位 if(TH&0xf8)!=0x00)/判断高五位 得到温度是负 flag1=0; TL=TL; /取反 TH=TH; /取反 TL=TL+1; /低位加1 TN=(TH*256+TL)*0.625;

4、 /实际温度值10倍=(TH*256+TL)*0.625,if(TN%160=0) TN=TN+160; sh=TN/100%10; ge=TN/10%10; di=TN%10; dis(ba,sh,ge,di); /显示温度 else/判断高五位 得到温度是正 flag1=1; TN=(TH*256+TL)*0.625; /实际温度值10倍=(TH*256+TL)*0.625, /这样前几位是温度的整数部分,最后一位是温度的小数部分 ba=TN/1000; sh=TN/100%10; ge=TN/10%10; di=TN%10; dis(ba,sh,ge,di); /显示温度的整数部分 sh

5、iwen=TN; biaozhun(); tfz();if(flag1=1) dis(ba,sh,ge,di); else dis(11,sh,ge,di);kongzhi()/温度调整驱动程序void kongzhi() if(shiwenzuidi) lv=0; /控制P2口输出电平 else lv=1; void dis(uchar ba,uchar sh,uchar ge,uchar di) g1=0;P0=tableshuba; delay1(5); g1=1;P0=tableshu10;g2=0;P0=tableshush; delay1(5); g2=1;P0=tableshu1

6、0;g3=0;P0=tableshudige; delay1(5); g3=1;P0=tableshudi10; g4=0;P0=tableshudi;delay1(5); g4=1;P0=tableshu10; void disdi(uchar ba,uchar sh,uchar ge,uchar di) g1=0;P0=tableshudiba; delay1(5); g1=1;P0=tableshu10; g2=0;P0=tableshudish;delay1(5); g2=1;P0=tableshu10; g3=0;P0=tableshudige; delay1(5); g3=1;P0

7、=tableshudi10; g4=0;P0=tableshudidi; delay1(5); g4=1;P0=tableshu10;void biaozhun() if(jin=0) delay1(5); if(jin=0) while(!jin);flag+; if(flag=3) flag=0; /*调幅值*/ void tfz() uchar ba,sh,ge,di; if(flag=1) while(1) ba=zuigao/1000; sh=zuigao/100%10; ge=zuigao/10%10; di=zuigao%10; dis(ba,sh,ge,di); if(jia=0) delay1(5); if(jia=0) zuigao=zuigao+10;while(!jia); dis(ba,sh,ge,di); if(jian=0) zuigao=zuigao-10;while(!jian);dis(11,sh,ge,di); biaozhun(); if(flag!=1) break; if(flag=2) while(1) ba=zuidi/1000; sh=zuidi/100%10; ge=zuidi/10%10; di=zuidi%10; dis(ba,sh,ge,di);if(ji

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论