DHT11温湿度传感器51单片机在LCD1602显示程序
《DHT11温湿度传感器51单片机在LCD1602显示程序》由会员分享,可在线阅读,更多相关《DHT11温湿度传感器51单片机在LCD1602显示程序(9页珍藏版)》请在装配图网上搜索。
1、51单片机控制温湿度传感器DHT11然后在LCD1602上显示当前的温湿度及单位其中湿度在第一行显示温度在第二行显示。单片机为YL-9最小系统。# includevreg51.h# includevintrins.htypedefunsignedcharBYTE;typedefunsignedintWORD;#defineuintunsignedint#defineucharunsignedcharsbitio=P1A0;/dht11data端接单片机的P1A0口sbitrw=P2A1;/一下三行是设置lcd1602的使能端sbitrs=P2A0;sbitep=P2A2;typedefbitB
2、OOL;/此声明一个布尔型变量即真或假uchardata_byte;ucharRH,RL,TH,TL;/*延时函数*voiddelay(ucharms)延时模块uchari;while(ms-)for(i=0;iv100;i+);晶振为12MHzvoiddelay1()/一个for循环大概需要8个多机器周期一个机器周期为1us也就是说本函数延时8us多此延时函数必须德稍微精确一点uchari;for(i=0;ivl;i+);/led模块BOOLlcd_bz()测试led忙碌状态返回值为布尔型数值真或假l.OBOOLresult;rs=0;/读忙信号rw=1;ep=1;_nop_();_nop_
3、();_nop_();_nop_();result=(BOOL)(P2&0x80);ep=0;result;voidwrite_cmd(ucharcmd)写指令while(lcd_bz();rs=0;rw=0;ep=0;_nop_();_nop_();P0=cmd;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=0;voidwrite_addr(ucharaddr)/写地址/write_cmd(addrl0x80);/LCD第一行的首地址为0x80第二行的首地址为0x80+0x40=0xc0void
4、write_byte(uchardat)写字节while(lcd_bz();rs=1;rw=0;ep=0;_nop_();_nop_();P0=dat;_nop_();_nop_();_nop_();_nop_();ep=1;_nop_();_nop_();_nop_();_nop_();ep=O;voidlcd_init()/led初始化/write_cmd(0x38);设置LCD两行显示一个数据由5*7点阵表示,数据由8跟线传输delay(l);write_cmd(0x0c);清除屏幕显示delay(1);write_cmd(0x06);设定输入方式增量不移位delay(1);write_
5、cmd(0x01);开整体显示关光标不闪烁delay(1);voiddisplay(ucharaddr,ucharq)在某一地址上显示内容adder表示的是地址偏移量示显示的字符或数字/delay(10);write_addr(addr);write_byte(q);delay(1);修改此时间可以改变LCD上数值跳变的数度voidstart()开始信号io=1;delay1();io=0;delay(25);主机把总线拉低必须大于18ms保证DHT11能检测到起始信号io=1;发送开始信号结束后拉高电平延时20-40usdelay1();以下三个延时函数差不多为24us符合要求delay1(
6、);delay1();ucharreceive_byte()接收一个字节uchari,temp;for(i=0;iv8;i+)接收8bit的数据while(!io);等待50us的低电平开始信号结束delay1();开始信号结束之后延时26us-28us以下三个延时函数delay1();delayl();temp=O;时间为26us-28us表示接收的为数据Oif(io=1)temp=1;如果26us-28us之后还为高电平则表示接收的数据为1while(io);/等待数据信号高电平0为26us-28usT为70usdata_bytevv=1;接收的数据为高位在前右移data_bytel=te
7、mp;returndata_byte;voidreceive。/接收数据/ucharT_H,T_L,R_H,R_L,check,num_check,i;start();开始信号/io=1;主机设为输入判断从机DHT11响应信号if(!io)判断从机是否有低电平响应信号while(!io);判断从机发出80us的低电平响应信号是否结束/while(io);/判断从机发出80us的高电平是否结束如结束则主机进入数据接收状态R_H=receive_byte();湿度高位R_L=receive_byte();湿度低位T_H=receive_byte();温度高位T_L=receive_byte();温
8、度低位check=receive_byte();校验位io=0;当最后一bit数据接完毕后从机拉低电平50usfor(i=0;iv7;i+)差不多50us的延时delayl();io=l;总线由上拉电阻拉高进入空闲状态num_check=R_H+R_L+T_H+T_L;if(num_check=check)判断读到的四个数据之和是否与校验位相同RH=R_H;RL=R_L;TH=T_H;TL=T_L;check=num_check;voidmain()/主函数模块lcd_init();初始化LCDwhile(l)receive。;/接收数据display(OxOO,R);/LCD的第一行显示display(OxO1,:);display(0x02,RH/10+0x30);0x30表示带字库的LCD1602中0x30的位置放有数字0RH/10+0x30即表示湿度的十位数字在字库RH/10+0x30的位置处放着display(0x03,RH%10+0x30);display(0X04,%);display(0x40,T);/LCD的第二行显示display(0x41,:);display(0x42,TH/10+0x30);display(0x43,TH%10+0x30);display(0x44,0xdf);以下两个是温度单位的处理display(0x45,0x43);另附效果图:
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 嵌入式系统概论-以S3C2440核心为架构课件
- 地理事象的季节变化课件
- 地理中外著名旅游景观欣赏课件
- 地理中图版选修5第一章第二节主要自然灾害及其分布课件
- 地理中考复习-地图课件
- 北师大版历史八年级下册第17课《筑起钢铁长城》课件1
- 北师大版历史八下《祖国统一的历史大潮》课件5
- 北师大版历史八下《欣欣向荣的科教文体事业》3课件
- 北师大版历史八下《蓝色的地中海文明》课件
- 北师大版历史九年级下册第10课“冷战”与“热战”丁飞鹤T-课件
- 北师大版历史八下第17课《大河流域的文明曙光》课件
- 北师大版历史九上1718课课件
- 高中化学热力学复习10多重平衡与化学计算ppt课件
- 高中化学第1章化学反应与能量转化第3节化学能转化为电能电池ppt课件1鲁科版选修
- 高中化学第三节玻璃、陶瓷和水泥公开课课件