at89c52控制温度传感器ds18b20的源程序

at89c52控制温度传感器ds18b20的源程序

ID:11602421

大小:39.00 KB

页数:4页

时间:2018-07-12

at89c52控制温度传感器ds18b20的源程序_第1页
at89c52控制温度传感器ds18b20的源程序_第2页
at89c52控制温度传感器ds18b20的源程序_第3页
at89c52控制温度传感器ds18b20的源程序_第4页
资源描述:

《at89c52控制温度传感器ds18b20的源程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、AT89C52控制温度传感器DS18B20的源程序--------------------------------------------------------------------------------AT89C52控制温度传感器DS18B20的源程序C语言源程序:#includecodeunsignedcharseg7code[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//显示段码voidDelay(unsignedinttc)//显示延时程序{while

2、(tc!=0){unsignedinti;for(i=0;i<100;i++);tc--;}}sbitTMDAT=P3^1;//DS18B20的数据输入/输出脚DQ,根据情况设定unsignedintsdata;//测量到的温度的整数部分unsignedcharxiaoshu1;//小数第一位unsignedcharxiaoshu2;//小数第二位unsignedcharxiaoshu;//两位小数bitfg=1;//温度正负标志voiddmsec(unsignedintcount)//延时部分{unsignedchari;while(count--){for(

3、i=0;i<115;i++);}}voidtmreset(void)//发送复位{unsignedchari;TMDAT=0;for(i=0;i<103;i++);TMDAT=1;for(i=0;i<4;i++);}bittmrbit(void)//读一位//{unsignedinti;bitdat;TMDAT=0;i++;TMDAT=1;i++;i++;//微量延时//dat=TMDAT;for(i=0;i<8;i++);return(dat);}unsignedchartmrbyte(void)//读一个字节{unsignedchari,j,dat;dat=

4、0;for(i=1;i<=8;i++){j=tmrbit();dat=(j<<7)

5、(dat>>1);}return(dat);}voidtmwbyte(unsignedchardat)//写一个字节{unsignedcharj,i;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){TMDAT=0;//写0i++;i++;TMDAT=1;for(i=0;i<8;i++);}else{TMDAT=0;//写0for(i=0;i<8;i++);TMDAT=1;i++;i++;}}}voidt

6、mstart(void)//发送ds1820开始转换{tmreset();//复位dmsec(1);//延时tmwbyte(0xcc);//跳过序列号命令tmwbyte(0x44);//发转换命令44H,}voidtmrtemp(void)//读取温度{unsignedchara,b;tmreset();//复位dmsec(1);//延时tmwbyte(0xcc);//跳过序列号命令tmwbyte(0xbe);//发送读取命令a=tmrbyte();//读取低位温度b=tmrbyte();//读取高位温度if(b>0x7f)//最高位为1时温度是负{a=~a;b

7、=~b+1;//补码转换,取反加一fg=0;//读取温度为负时fg=0}sdata=a/16+b*16;//整数部分xiaoshu1=(a&0x0f)*10/16;//小数第一位xiaoshu2=(a&0x0f)*100/16%10;//小数第二位xiaoshu=xiaoshu1*10+xiaoshu2;//小数两位}voidDS18B20PRO(void){tmstart();//dmsec(5);//如果是不断地读取的话可以不延时//tmrtemp();//读取温度,执行完毕温度将存于TMP中//}voidLed(){if(fg==1)//温度为正时显示的数

8、据{P2=P2&0xef;P0=seg7code[sdata/10];//输出十位数Delay(8);P2=P2

9、0xf0;P2=P2&0xdf;P0=seg7code[sdata%10]

10、0x80;//输出个位和小数点Delay(8);P2=P2

11、0xf0;P2=P2&0xbf;P0=seg7code[xiaoshu1];//输出小数点后第一位Delay(8);P2=P2

12、0xf0;P2=P2&0x7f;P0=seg7code[xiaoshu2];//输出小数点后第二位Delay(4);P2=P2

13、0xf0;}if(fg==0)//温度为负时显示的数据{P2=

14、P2&0xef;P0=s

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

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

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