//51 单片机控制温湿度传感器 DHT11然后在 LCD1602 上显示当前的温湿度及单位其中湿度在第一行显示温度在第二行显示。单片机为YL-9 最小系统。# include 〈reg51.h〉# include typedef unsigned char BYTE;typedef unsigned int WORD;#define uint unsigned int #define uchar unsigned char sbit io=P1^0;//dht11data 端接单片机的 P1^0 口// sbit rw=P2^1;//一下三行是设置 lcd1602 的使能端// sbit rs=P2^0; sbit ep=P2^2; typedef bit BOOL;//此声明一个布尔型变量即真或假// uchar data_byte; uchar RH,RL,TH,TL; //***************延时函数************************************* void delay(uchar ms) //延时模块// { uchar i; while(ms-—) for(i=0;i〈100;i++); } void delay1()//一个 for 循环大概需要 8 个多机器周期一个机器周期为1us晶振为 12MHz也就是说本函数延时 8us 多此延时函数必须德略微精确一点 { uchar i; for(i=0;i<1;i++); } //*************************************************************** //lcd 模块// BOOL lcd_bz()//测试 lcd 忙碌状态返回值为布尔型数值真或假’1'。'0' { BOOL result; rs=0; // 读忙信号 rw=1; ep=1; _nop_(); _nop_(); _nop_(); _nop_(); result = (BOOL)(P2&0x80); ep=0; result ;} void write_cmd(uchar cmd)//写指令// { 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;} void write_addr(uchar addr)//写地址// { write_cmd(addr|0x80);//LCD 第一行的首地址为 0x80第二行的首地址为 0x80+0x40=0xc0 } void write_byte(uchar dat) //写字节// { while (lcd_bz()); rs=1; rw=0; ep=0; _nop_(); _nop_(); P0=dat ; _nop_(); _nop_(); _nop_(); _nop_(); ep=1; _nop_(); _nop_(); _nop_(); _nop_(); ep=0;} void lcd_init() //lcd 初始化// { write_cmd(0x38);//设置 LCD 两行显示一个数据由5*7 点阵表示,数据由 8...