主代码,还有个LCD1602的设置代码

#include<reg51.h>
#include<intrins.h>
#include<LCD1602.h>
#define uchar unsigned char
#define uint unsigned int
sbit Data=P3^6;   //定义数据线
sbit BUZZER=P2^4;
uchar rec_dat[9];   //用于显示的接收数据数组int Tmax=40,Tmin=10;//设定最高温度40度,最低温度10度
int Rmax=80,Rmin=40;//设定最高湿度80%,最低湿度40%bit fg=1;//初始化函数
void DHT11_delay_us(uchar n)
{while(--n);
}void DHT11_delay_ms(uint z)
{uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);
}void DHT11_start()
{Data=1;DHT11_delay_us(2);Data=0;DHT11_delay_ms(30);   //延时18ms以上Data=1;DHT11_delay_us(30);
}uchar DHT11_rec_byte()      //接收一个字节
{uchar i,dat=0;for(i=0;i<8;i++)    //从高到低依次接收8位数据{         while(!Data);   等待50us低电平过去DHT11_delay_us(8);     //延时60us,如果还为高则数据为1,否则为0dat<<=1;           //移位使正确接收8位数据,数据为0时直接移位if(Data==1)    //数据为1时,使dat加1来接收数据1dat+=1;while(Data);  //等待数据线拉低   }  return dat;
}void DHT11_receive()      //接收40位的数据
{uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;DHT11_start();if(Data==0){while(Data==0);   //等待拉高     DHT11_delay_us(40);  //拉高后延时80usR_H=DHT11_rec_byte();    //接收湿度高八位  R_L=DHT11_rec_byte();    //接收湿度低八位  T_H=DHT11_rec_byte();    //接收温度高八位  T_L=DHT11_rec_byte();    //接收温度低八位revise=DHT11_rec_byte(); //接收校正位DHT11_delay_us(25);    //结束if((R_H+R_L+T_H+T_L)==revise)      //校正{RH=R_H;RL=R_L;TH=T_H;TL=T_L;}/*数据处理,方便显示*/rec_dat[0]='0'+(RH/10);rec_dat[1]='0'+(RH%10);rec_dat[2]='R';rec_dat[3]='H';rec_dat[4]=' ';rec_dat[5]=' ';rec_dat[6]='0'+(TH/10);rec_dat[7]='0'+(TH%10);rec_dat[8]='C';}
}void Alarm()//警报函数
{  uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;DHT11_start();if(Data==0){while(Data==0);   //等待拉高     DHT11_delay_us(40);  //拉高后延时80usR_H=DHT11_rec_byte();    //接收湿度高八位  R_L=DHT11_rec_byte();    //接收湿度低八位  T_H=DHT11_rec_byte();    //接收温度高八位  T_L=DHT11_rec_byte();    //接收温度低八位revise=DHT11_rec_byte(); //接收校正位DHT11_delay_us(25);    //结束if((R_H+R_L+T_H+T_L)==revise)      //校正{RH=R_H;RL=R_L;TH=T_H;TL=T_L;}
if(TH+TL<=Tmin||TH+TL>=Tmax||RH+RL<=Rmin||RH+RL>=Rmax)//低于下限,高于上限就会触发警报BUZZER=0;
elseBUZZER=1;
}
}void main()
{  LCD_init();LCD_send(1,0,"Temperature:",12);DHT11_delay_ms(100);    //DHT11上电后要等待1S以越过不稳定状态在此期间不能发送任何指令while(1)   {   DHT11_receive();LCD_send(2,0,rec_dat,9);Alarm();//警报函数}   }   

LCD1602的代码

#include <LCD1602.h>
#include "reg51.h" sbit RS = P2^6;sbit RW = P2^5;sbit EN = P2^7;void LCD_send(unsigned char i,unsigned char j,unsigned char str[],unsigned char n)
{//输入:显示行数i,列数j,输出字符,输出字符长度nunsigned char x=0;if(i==1){write_com(0x80+j);}else{write_com(0x80+0x40+j);}for(x=0;x<n;x++){write_date(str[x]);delay(150);}
}int LCD_init()//初始化函数体
{EN = 0;write_com(0X38);//设置16*2显示,5*7点阵,8位数据接口write_com(0X0C);//设置开显示,不显示光标write_com(0X06);//写一个字符时,整屏右移write_com(0X01);//显示清零return 0;
}int write_com(unsigned char com)//写命令的函数体
{RS = 0;RW = 0;P0 = com;delay(5);EN = 1;delay(5);EN = 0;return 0;
}int write_date(unsigned char data1)//写数据的函数体
{RS = 1;RW = 0;P0 = data1;delay(5);EN = 1;delay(5);EN = 0;return 0;
}int delay(unsigned char xms)
{unsigned char x,y;for(x=xms;x>0;x--)for(y=110;y>0;y--);return 0;
}

仿真效果图如下

51单片机温湿度传感器DHT11液晶显示屏显示LCE1602相关推荐

  1. 基于51单片机温湿度传感器

    DHT11 温湿度传感器 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通 空调:汽车:消费品:气象站:湿度调节器:除湿器:家电:医疗:自动控制 相对湿度和温度 ...

  2. 119、基于51单片机温湿度光照强度仿真设计

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 一.硬件电路组成 二.功能 三.电脑开发环境 四.Protues仿真 五.程序 六.资料包括 一.硬件电路组成 51最小系统+51单片机+Lcd16 ...

  3. 25-基于51单片机温湿度的检测及控制的设计

    1.设计目的及需求 单片机最小系统+LCD1602液晶显示模块+温湿度采集模块+继电器驱动模块+风扇模块+LED指示灯模块+按键模块+AT24C02存储模块+蜂鸣器报警模块 具体功能: 1.AT24c ...

  4. Arduino基础入门之十三 温湿度传感器DHT11

    一 硬件 DHT11这款温湿度传感器,精度湿度±5%RH, 温度±2℃,如下图所示[1] 4个引脚接线一目了然,2号data用于传感器与微控制器之间的通信,接UNO的某数字引脚,3号NC空置即可.目前 ...

  5. 基于51单片机驱动ADXL346 (LCD1602显示)

    基于51单片机驱动ADXL346 (LCD1602显示) 一.ADXL346传感器介绍 1.实物图 2.产品说明 3.电气参数 4.通信协议 二.驱动代码 1.引脚定义 2.初始化函数 3.主函数 三 ...

  6. 湿度检测仪输入示数计算机编程,温湿度传感器DHT11驱动程序 - 全文

    温湿度传感器DHT11驱动程序 - 全文 来源:网络整理 作者:2018年01月22日 16:52 [导读] 本文开始介绍了驱动程序的定义与驱动程序的作用,其次介绍了DHT11温湿度传感器特性.引脚说 ...

  7. 基于51单片机霍尔传感器测速(仿真+源程序)

    资料编号:196  下面是该资料仿真演示视频: 196-基于51单片机霍尔传感器测速(仿真+源程序+全套资料) 功能简介: 51单片机计数测速转速测量,在仿真中等价于测量外部脉冲频率:如果修改输入脉冲 ...

  8. zigbee CC2530 系列教程 15 温湿度传感器DHT11实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.12温湿度传感器DHT11实验 4.12.1 实验目的 学习使用温湿度传感器DHT11,并在串口显示温湿度数据. 4.12. ...

  9. 【FPGA】Verilog代码实现温湿度传感器DHT11

    #今天也是咸鱼的一天~ 因为参加Robei 杯 是要做一个机器人,先不说这个机器人具体怎么机器法,但是和外界互通的传感器肯定少不了,通过获取外界环境数据,进行处理,然后做出各种各样的功能. 先来讲个简 ...

最新文章

  1. 股票系列,动态规划,加油,九月太浪了,十月不许浪
  2. 基于DGCNN和概率图的轻量级信息抽取模型
  3. udp需要arp请求吗_当你随便浏览一个网页时,你知道背后做了多少工作吗?
  4. Bootstrap学习笔记之Nestable可拖拽树结构
  5. 菜单黑暗模式UI动画素材模板
  6. IntelliJ IDEA 调试技巧,比 Eclipse 强太多了!
  7. OneNote使用教程
  8. 海康摄像机激活失败解决方法
  9. 4999以内阿拉伯数字转罗马字符
  10. 嵌入式单片机学习入门到大牛
  11. 凡泰极客:远程办公,你礼貌吗?
  12. 20155201李卓雯 20155212江振思 20155313杨瀚《信息安全技术》 实验三 数字证书应用...
  13. python安装reporter
  14. 深以为然-为什么一些JAVA EE / J2EE 工程是效率低下或者至少是效率欠佳的(翻译)
  15. 华为云人脸识别服务 FRS 之初体验
  16. CTE递归 MAXRECURSION 遇到的问题
  17. 在Linux环境下怎么编译Android源码?
  18. 哈哈,word 多少页 一千字?
  19. 咸鱼看书之《射频与微波电子学》(3:电路学数学基础之:相量)
  20. 签名MD5与文件MD5概念

热门文章

  1. 机器视觉学习之--贝叶斯学习 MATLAB二维正态分布二维图
  2. 计算机软件技术代码,计算机软件技术基础VisualBasic程序设计代码.ppt
  3. 微信小程序嵌入Udesk即时通讯网页插件
  4. 从零开始,搭建博客系统MVC5+EF6搭建框架(1),EF Code frist、实现泛型数据仓储以及业务逻辑
  5. 数码管静态显示到动态显示——六位8段数码管(共阴极)按顺序间隔1s显示数字1~6
  6. 企业信使(企信通)辅助系统V1.1上线
  7. Flutter 实现九宫格抽奖动画效果
  8. Mybatis 向数据库表中插入记录 不携带id值
  9. 【Java】Array、List的类型转换
  10. Windows内核--读懂源代码的特殊“标志“(1.4)