DS18B20多点测温(51C程序).doc

DS18B20多点测温(51C程序).doc

ID:53278824

大小:66.50 KB

页数:11页

时间:2020-04-02

DS18B20多点测温(51C程序).doc_第1页
DS18B20多点测温(51C程序).doc_第2页
DS18B20多点测温(51C程序).doc_第3页
DS18B20多点测温(51C程序).doc_第4页
DS18B20多点测温(51C程序).doc_第5页
资源描述:

《DS18B20多点测温(51C程序).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、DS18B20多点测温由于本人在前两天找DS18B20多点测温(51C程序),网上下载了很多,但是都不是很理想,后来,自己总结前人的知识,重新写了这个程序。其中包括程序一:单个读序列号。程序二,匹配并且读两个DS18B20,当然,读多个与读两个基本原理一样,只要加上其序列号等即可。本程序所有显示都是用LCD1602显示。程序一:度序列号,并用1602显示,1602从左到右分别是低到高位。#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^7;//ds18b20与单片

2、机连接口sbitRS=P3^0;sbitRW=P3^1;sbitEN=P3^2;unsignedcharcodestr1[]={""};unsignedcharcodestr2[]={""};ucharfCode[8];uchardatadisdata[5];uinttvalue;//温度值uchartflag;//温度正负标志/lcd1602程序/voiddelay1ms(unsignedintms)//延时1毫秒(不够精确的){unsignedinti,j;for(i=0;i

3、nsignedcharcom)//写指令//{delay1ms(1);RS=0;RW=0;EN=0;P2=com;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidwr_dat(unsignedchardat)//写数据//{delay1ms(1);;RS=1;RW=0;EN=0;P2=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}voidlcd_init()//初始化设置//{delay1ms(15);wr_com(0x38);delay1ms(5);wr_com(0x08);delay1ms(5

4、);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5);wr_com(0x0c);delay1ms(5);}voiddisplay(unsignedcharp)//显示//{while(p!=''){wr_dat(p);p++;delay1ms(1);}}voidinit_play()//初始化显示{lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2);}/ds1820/voiddelay_18B20(unsignedinti)//

5、延时1微秒{while(i--);}voidds1820rst()/ds1820复位/{ucharx=0;DQ=1;//DQ复位delay_18B20(4);//延时DQ=0;//DQ拉低delay_18B20(100);//精确延时大于480usDQ=1;//拉高delay_18B20(40);}uchards1820rd()/读数据/{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat=0x80;delay_18B20(10);}return(dat

6、);}voidds1820wr(ucharwdata)/写数据/{uchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}read_temp()/读取温度值并转换/{uchara,b;ds1820rst();ds1820wr(0xcc);//跳过读序列号/ds1820wr(0x44);//启动温度转换/ds1820rst();ds1820wr(0xcc);//跳过读序列号/ds1820wr(0xbe);//读取温度/a=ds1820rd();b=ds1820r

7、d();tvalue=b;tvalue<<=8;tvalue=tvaluea;if(tvalue<0x0fff)tflag=0;else{tvalue=~tvalue+1;tflag=1;}tvalue=tvalue(0.625);//温度值扩大10倍,精确到1位小数return(tvalue);}//voidds1820disp()//温度值显示{ucharflagdat;disdata[0]=tvalue/1000+0x30;//百位数disdata[1]=tvalue%1000/100+0x30;//十位数disdata[2]=tvalue%100/1

8、0+0x30;//个位数disdata[3]=tva

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

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

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