欢迎来到天天文库
浏览记录
ID:31476574
大小:200.50 KB
页数:11页
时间:2019-01-11
《[51单片机]温度传感器ds18b20程序.lcd1602显示》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WORD格式整理仿真截图://仿真文件网盘地址:http://pan.baidu.com/s/1qW8sGQK//程序:#include#include#defineucharunsignedchar#defineuintunsignedintsbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;s
2、bitP13=P1^3;sbitP14=P1^4;学习参考资料分享WORD格式整理sbitP15=P1^5;sbitP16=P1^6;sbitP17=P1^7;sbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;sbitP23=P2^3;sbitP24=P2^4;sbitP25=P2^5;sbitP26=P2^6;sbitP27=P2^7;sbitP30=P3^0;sbitP31=P3^1;sbitP32=P3^2;sbitP33=P3^3;sbitP34=P3^4;sbitP35=P3^5;sbitP36=P3^6;sbitP37=P3^
3、7;//******DS18B20******#defineDQP17/*************精确延时函数*****************/voiddelay10us(void)//误差0us{unsignedchara,b;for(b=1;b>0;b--)for(a=2;a>0;a--);}voiddelay20us(void)//误差0us{unsignedchara,b;for(b=1;b>0;b--)for(a=7;a>0;a--);}voiddelay30us()//误差0us{unsignedchara,b;for(b=3;b>0;b--)for(
4、a=3;a>0;a--);}学习参考资料分享WORD格式整理voiddelay100us()//误差0us{unsignedchara,b;for(b=1;b>0;b--)for(a=47;a>0;a--);}voiddelay200us(void)//误差0us{unsignedchara,b;for(b=1;b>0;b--)for(a=97;a>0;a--);}voiddelay500us()//误差0us{unsignedchara,b;for(b=71;b>0;b--)for(a=2;a>0;a--);}voidDS18B20_init()//DS18B20
5、初始化复位{DQ=1;_nop_();_nop_();_nop_();_nop_();//延时几个时钟周期保证DQ引脚稳定在高电平DQ=0;delay500us();//最短为480us的低电平信号复位DQ=1;//拉高总线15-60usdelay30us();delay200us();//延时足够时间复位基本上都会成功因此不必再判断是否复位成功DQ=1;//释放总线}ucharRead_One_Byte(){uchari;ucharbyte=0;for(i=0;i<8;i++){DQ=1;_nop_();学习参考资料分享WORD格式整理_nop_();_nop_(
6、);_nop_();//延时几个时钟周期保证DQ引脚稳定在高电平DQ=0;byte>>=1;delay20us();DQ=1;//给脉冲产生读时间间隙delay10us();//延时一定时间后,读DQ的值if(DQ){byte
7、=0x80;}//读得DQ为1将1写到dat最高位;读得DQ为0不必处理delay100us();DQ=1;}return(byte);}voidWrite_One_Byte(ucharbyte){uchari=0;for(i=0;i<8;i++){DQ=1;_nop_();_nop_();_nop_();_nop_();//延时几个时钟周期
8、保证DQ引脚稳定在高电平DQ=0;DQ=byte&0x01;//写所给数据最低位delay30us();byte>>=1;}}intRead_Temp()////////***读取温度值***********/////每次读写均要先复位{intt;floattep;uchara,b;DS18B20_init();Write_One_Byte(0xcc);//跳过ROM命令单个传感器所以不必读取ROM里的序列号Write_One_Byte(0x44);//开始转换DS18B20_init();Write_One_Byte(0xcc);//跳过ROM命令Write_
此文档下载收益归作者所有