52单片机DS18B20温度计(1602显示)

上传人:优*** 文档编号:63641970 上传时间:2022-03-20 格式:DOC 页数:7 大小:673.50KB
收藏 版权申诉 举报 下载
52单片机DS18B20温度计(1602显示)_第1页
第1页 / 共7页
52单片机DS18B20温度计(1602显示)_第2页
第2页 / 共7页
52单片机DS18B20温度计(1602显示)_第3页
第3页 / 共7页
资源描述:

《52单片机DS18B20温度计(1602显示)》由会员分享,可在线阅读,更多相关《52单片机DS18B20温度计(1602显示)(7页珍藏版)》请在装配图网上搜索。

1、/按下K1显示序列码,按下K2显示实时温度(本实验适合初学者调试理解18B20用, )#include /52单片机#define uchar unsigned char#define uint unsigned int /uint 无符号整数sbit DQ=P22; /单总线(与自己的开发板相匹配) uint temp; /温度整理为word格式uchar flag1; /符号 sbit rs = P10; / 控制LCD (与自己的开发板相匹配) sbit rw = P11; / 控制LCD (与自己的开发板相匹配) sbit lcden = P25; /led使能端(与自己的开发板相匹配

2、)sbit K1=P34; /独立按键k1(与自己的开发板相匹配)sbit K2=P35; /独立按键k2 (与自己的开发板相匹配)sbit du=P26;/位选(防LED灯乱闪)(与自己的开发板相匹配)sbit we=P27; /段选(防LED灯乱闪) (与自己的开发板相匹配)uchar a,b,c,d,e,f,g,h,A1,A2,A2t,A3,A4,A5;/写在LCD上的字符,具体在程序中看 void delay(uint count) /延迟程序 (200*count)/8 毫秒 uint i; while(count) i=200; while(i0) i-; count-; void

3、 DQreset(void) /初始化,主机将DQ拉高 (上升沿) (从机检测到上升沿后延时15到60毫秒,从机拉低总线60到240毫秒表示“我”在线) /从机的工作是自动完成的 uint i; DQ=0; i=103; while(i0)i-; DQ=1; i=4; while(i0)i-; bit tmpreadbit() /从18b20读1位 uint i; bit dat; DQ=0;i+; DQ=1;i+;i+; dat=DQ; i=8;while(i0)i-; return (dat); /返回datuchar tmpread() /从18b20读1字节整理为word格式 ucha

4、r i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); return(dat);void tmpwritebyte(uchar dat) /18b20写1bit (只能用于写命令) uint i; uchar j; bit testb; for(j=1;j1; if(testb) DQ=0; i+;i+; DQ=1; i=8;while(i0)i-; else DQ=0; i=8;while(i0)i-; DQ=1; i+;i+; void tmpchange(void) /温度转换子程序 DQreset(); delay(1);

5、 tmpwritebyte(0xcc); /CCH跳过ROM tmpwritebyte(0x44); /44H温度转换uint tmp() /读取温度子程序整理为word格式 float tt; uchar a,b; DQreset(); /无论什么命令, 首先都要发起初始化 delay(1); tmpwritebyte(0xcc); /跳过ROM(本实验中实验板上只连接一块18B20) tmpwritebyte(0xbe); /读便签存储器(温度以二进制储存于BEH) a=tmpread();/a为低八位 b=tmpread();/b为高八位 temp=b; temp= 4; if( ( h

6、 = 0x00 )&( h = 0x00 )&( l = 0x09 ) ) LCD_WriteData(l+0x30); else LCD_WriteData(l+0x37); void temshow() /温度显示/LCD_WriteCom(0x01); 写命令不能放在此位置DQreset(); /无论什么命令, 首先都要发起初始化tmpchange(); /温度转换(相当于读温度前的初始化)temp=tmp();/读温度A1=temp/10000;A2=(temp%10000)/1000;A3=(temp%10000)%1000)/100;A4=(temp%10000)%1000)%10

7、0)/10;A5=(temp%10000)%1000)%100)%10;LCD_WriteCom(0x80);LCD_WriteData(t) ;LCD_WriteData(e);LCD_WriteData(m) ;LCD_WriteData(p) ;整理为word格式LCD_WriteData(:);LCD_WriteCom(0x80+0x40);LCD_WriteData(+) ;LCD_WriteData(0+A1);LCD_WriteData(0+A2) ;LCD_WriteData(.) ;LCD_WriteData(0+A3);LCD_WriteData(0+A4);LCD_Wri

8、teData(0+A5);void romshow()/序列码显示LCD_Init();rw = 0;DQreset();/无论什么命令, 首先都要发起初始化delay(1);tmpwritebyte(0x33);/读ROM,允许主机读出DS18B20的64为二进制序列码(仅限于总线上存在单只DS18B20) delay(1); a = tmpread(); b = tmpread(); c = tmpread(); d = tmpread(); e = tmpread(); f = tmpread(); g = tmpread(); h = tmpread(); LCD_WriteCom(0

9、x80);/LCD第一行开始LCD_WriteData(n);LCD_WriteData(u);LCD_WriteData(m);LCD_WriteData(b);LCD_WriteData(e);LCD_WriteData(r); LCD_WriteCom(0x80+0x40);/lCD第二行开始 Display18B20Rom(a); Display18B20Rom(b); Display18B20Rom(c); Display18B20Rom(d); Display18B20Rom(e); Display18B20Rom(f); Display18B20Rom(g); Display18B20Rom(h); 整理为word格式void main() du=0;/(防LED灯乱闪)we=0;/(防LED灯乱闪)if(K2=0) /独立键盘k2按下LCD_WriteCom(0x01);while(K1!=0) /用while循环实时扫描,当K1没被按下,一直扫描temshow(); if(K1=0) /独立键盘k1按下 LCD_WriteCom(0x01);romshow(); 友情提示:本资料代表个人观点,如有帮助请下载,谢谢您的浏览! 整理为word格式

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!