• 大小: 44KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-07-18
  • 语言: 其他
  • 标签:

资源简介

该程序为51单片机控制加湿器继电器,通过1602显示DHT11温度湿度的应该程序,带有手动按键功能,报警功能和提示音等,带管教说明。经过测试,完美运行。

资源截图

代码片段和文件信息

/***************************************************************

**功能描述:1602显示 dht11温度湿度
**管脚说明:显示器1602管脚RS_P2.4RW_P2.5EN_P2.6 排口P0
            dht11管脚date_P2.7 
  蜂鸣器P2^3 
  加湿器继电器控制端_P2^2
蓝牙TX_RX RX_TX
按键KEY1_P12 KEY2_P11 KEY3_P10
水位输出为P21
**更新时间:2019/4/16

****************************************************************/

# include              //头文件不需做修改
# include 

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; 

sbit key1=P1^2;   //按键声明
sbit key2=P1^1; 
sbit key3=P1^0; 

sbit water=P2^1; //读取水位脚
 

typedef bit BOOL;               //此声明一个布尔型变量即真或假// 

uchar data_byte;                //定义部分
uchar RHRLTHTLnum; 

 

//***************延时函数************************************* 

 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)(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初始化// 

  write_cmd(0x38);//设置LCD两行显示一个数据由5*7点阵表示数据由8跟线传输 
  delay(1); 
  write_cmd(0x0c);//清除屏幕显示 
  delay(1); 
  write_cmd(0x06);//设定输入方式增量不移位 
  delay(1); 
  write_cmd(0x01);//开整体显示关光标不闪烁 
  delay(1); 

void io_init()//管脚初始化
{
  beep=0;      //关闭继电器和蜂鸣器
hd=1;
key1=0;    //按键位置零
key2=0;
key3=0;

}
/*******************************************************************************/

/**************************cld显示函数*******************************************/

void display(uchar 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       85639  2019-04-25 13:01  程序\1.uvgui.超哥
     文件        5454  2019-04-16 14:39  程序\1.uvopt
     文件       14024  2019-04-16 14:37  程序\1.uvproj
     目录           0  2019-04-21 16:06  程序\Listings\
     文件       29269  2019-04-21 16:06  程序\Listings\1.m51
     文件       21038  2019-04-21 16:06  程序\Listings\main.lst
     文件       14545  2019-04-21 16:05  程序\Listings\STARTUP.lst
     文件       11348  2019-04-21 17:01  程序\main.c
     目录           0  2019-04-21 16:06  程序\objects\
     文件        6771  2019-04-21 16:06  程序\objects\1
     文件        1330  2019-04-21 16:06  程序\objects\1.build_log.htm
     文件        3740  2019-04-21 16:06  程序\objects\1.hex
     文件          93  2019-04-21 16:06  程序\objects\1.lnp
     文件         109  2019-04-21 16:06  程序\objects\main.__i
     文件        9145  2019-04-21 16:06  程序\objects\main.obj
     文件         828  2019-04-21 16:05  程序\objects\STARTUP.obj
     文件        6376  2016-04-01 17:01  程序\STARTUP.A51

评论

共有 条评论