52单片机DS18B20温度计(1602显示)_第1页
52单片机DS18B20温度计(1602显示)_第2页
52单片机DS18B20温度计(1602显示)_第3页
52单片机DS18B20温度计(1602显示)_第4页
52单片机DS18B20温度计(1602显示)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档/按下K1显示序列码,按下K2显示实时温度(本实验适合初学者调试理解18B20用, )#include <reg52.h>/52单片机#define uchar unsigned char#define uint unsigned int /uint 无符号整数sbit DQ=P22; /单总线(与自己的开发板相匹配) uint temp; /温度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(i>0) i-

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

4、 /从18b20读1字节 uchar i,j,dat; dat=0; for(i=1;i<=8;i+) j=tmpreadbit(); dat=(j<<7)|(dat>>1); return(dat);void tmpwritebyte(uchar dat) /18b20写1bit (只能用于写命令) uint i; uchar j; bit testb; for(j=1;j<=8;j+) /一位一位地传 testb=dat&0x01; dat=dat>>1; if(testb) DQ=0; i+;i+; DQ=1; i=8;while(

5、i>0)i-; else DQ=0; i=8;while(i>0)i-; DQ=1; i+;i+; void tmpchange(void) /温度转换子程序 DQreset(); delay(1); tmpwritebyte(0xcc); /CCH跳过ROM tmpwritebyte(0x44); /44H温度转换uint tmp() /读取温度子程序 float tt; uchar a,b; DQreset(); /无论什么命令, 首先都要发起初始化 delay(1); tmpwritebyte(0xcc); /跳过ROM(本实验中实验板上只连接一块18B20) tmpwrit

6、ebyte(0xbe); /读便签存储器(温度以二进制储存于BEH) a=tmpread();/a为低八位 b=tmpread();/b为高八位 temp=b; temp<<=8; temp=temp|a; tt=temp*0.0625; /二进制乘0.0625为十进制 temp=tt*1000; /精度为0.001 return temp;void LCD_WriteCom(uchar com)/LCD写入命令 rs = 0;rw = 0; P0 = com; delay(5); lcden = 0; delay(5); lcden = 1; delay(5); lcden =

7、0; void LCD_WriteData(uchar dat)/LCD写入数据 rs = 1; rw = 0; lcden = 0; P0 = dat; delay(5); lcden = 1; delay(5); lcden = 0; delay(5);void LCD_Init() /LCD初始化 LCD_WriteCom(0x38); delay(15); LCD_WriteCom(0x08); delay(3); LCD_WriteCom(0x01); delay(3); LCD_WriteCom(0x06); delay(3); LCD_WriteCom(0x0c); void D

8、isplay18B20Rom(char Rom) /display rom uchar h,l; l = Rom & 0x0f; h = Rom & 0xf0; h >>= 4; if( ( h >= 0x00 )&&( h <= 0x09 ) ) LCD_WriteData(h+0x30); else LCD_WriteData(h+0x37); if( ( l >= 0x00 )&&( l <= 0x09 ) ) LCD_WriteData(l+0x30); else LCD_WriteData(l+0x3

9、7); 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)%100)/10;A5=(temp%10000)%1000)%100)%10;LCD_WriteCom(0x80);LCD_WriteData('t') ;LC

10、D_WriteData('e');LCD_WriteData('m') ;LCD_WriteData('p') ;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&

11、#39;+A4);LCD_WriteData('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 =

12、 tmpread(); LCD_WriteCom(0x80);/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); Displa

温馨提示

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

评论

0/150

提交评论