DS18B20程序-超详细注释

DS18B20程序-超详细注释

ID:40964119

大小:33.02 KB

页数:4页

时间:2019-08-12

DS18B20程序-超详细注释_第1页
DS18B20程序-超详细注释_第2页
DS18B20程序-超详细注释_第3页
DS18B20程序-超详细注释_第4页
资源描述:

《DS18B20程序-超详细注释》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P2^2;                      //数据口defineinterfacesbitdula=P2^6;                    //数码管段选sbitwela=P2^7;                   //数码管位选uinttemp;                         //温度值variableoftemperature//不带小数点

2、unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//带小数点unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};/*************精确延时函数*****************/voiddelay(unsignedchari){while(--i);}/***********

3、*******************************此延时函数针对的是12Mhz的晶振delay(0):延时518us误差:518-2*256=6delay(1):延时7us  (原帖写"5us"是错的)delay(10):延时25us  误差:25-20=5delay(20):延时45us  误差:45-40=5delay(100):延时205us误差:205-200=5delay(200):延时405us误差:405-400=5*******************************************//****************

4、*DS18B20******************/voidInit_Ds18b20(void)    //DS18B20初始化sendresetandinitializationcommand{DQ=1;                    //DQ复位,不要也可行。delay(1);                //稍做延时DQ=0;                   //单片机拉低总线delay(250);               //精确延时,维持至少480usDQ=1;                   //释放总线,即拉高了总线dela

5、y(100);               //此处延时有足够,确保能让DS18B20发出存在脉冲。}ucharRead_One_Byte()     //读取一个字节的数据readabytedate                           //读数据时,数据以字节的最低有效位先从总线移出{uchari  =0;uchardat=0;for(i=8;i>0;i--){  DQ=0;                //将总线拉低,要在1us之后释放总线                          //单片机要在此下降沿后的15us内读数据才会有效

6、。  _nop_();                //至少维持了1us,表示读时序开始  dat>>=1;              //让从总线上读到的位数据,依次从高位移动到低位。  DQ=1;                 //释放总线,此后DS18B20会控制总线,把数据传输到总线上  delay(1);                //延时7us,此处参照推荐的读时序图,尽量把控制器采样时间放到读时序后的15us内的最后部分  if(DQ)                 //控制器进行采样  {   dat

7、=0x80;           

8、//若总线为1,即DQ为1,那就把dat的最高位置1;若为0,则不进行处理,保持为0  }         delay(10);              //此延时不能少,确保读时序的长度60us。}return(dat);}voidWrite_One_Byte(uchardat){uchari=0;for(i=8;i>0;i--){  DQ=0;                       //拉低总线  _nop_();                     //至少维持了1us,表示写时序(包括写0时序或写1时序)开始  DQ=dat&0x01;   

9、            

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。