| /*************************************************************** **联系:请勿转载! **功能描述:1602显示 dht11温度湿度 **管脚说明:显示器1602管脚RS_P2.4,RW_P2.5,EN_P2.6 排口P0 dht11管脚date_P2.7 蜂鸣器P2^3 加湿器继电器控制端_P2^2 **更新时间:2019/4/16 ****************************************************************/ # include <reg51.h> //头文件不需做修改 # include <intrins.h> typedef unsigned char BYTE; //定义部分 typedef unsigned int WORD; #define uint unsigned int #define uchar unsigned char sbit beep=P2^3; //蜂鸣器 sbit hd=P2^2; //继电器控制端 sbit io=P2^7; //dht11data端接单片机的P2.7口 sbit rw=P2^5; //一下三行是设置lcd1602的使能端 sbit rs=P2^4; sbit ep=P2^6; 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个多机器周期,欧博allbet一个机器周期为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)(P0&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初始化// { w(责任编辑:) | 
