找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3096|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的温湿度显示及控制系统代码

[复制链接]
跳转到指定楼层
楼主
ID:368387 发表于 2018-7-10 09:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>                       //包含头文件
  
#define uchar unsigned char
#define uint unsigned int       //宏定义
//定义四个输出端口
sbit Led_jiashi=P3^4;           //加湿
sbit Led_qushi=P3^3;          //去湿
sbit Led_jiangwen=P3^1;            //降温
sbit Led_shengwen=P3^2;          //升温
//定义三个设置按键
sbit Key_SET = P2^0;           //设置按键
sbit Key_ADD = P2^1;         //加按键
sbit Key_SUB = P2^2;          //减按键
sbit Key_OK = P2^3;         //确定按键
//定义24C02数据口
sbit SCL = P1^0;
sbit SDA = P1^1;
//定义DHT11数据口
sbit DATA = P1^7;
sbit buzz=P3^5;                         //蜂鸣器接口
//定义LCD1602端口
sbit E=P1^3;         //1602使能引脚
//sbit RW=P2^6;          //1602读写引脚     我们只需要向液晶里写数据,不需要读取数据,所以就把读写引脚直接接地,程序里就不用单独控制了
sbit RS=P1^2;              //1602数据/命令选择引脚
//定义全局变量
uchar U8FLAG,U8temp,U8comdata,U8RH_data_H_temp,U8RH_data_L_temp,U8T_data_H_temp,U8T_data_L_temp,U8checkdata_temp;       //定义读取温湿度变量
ucharU8RH_data_H,U8RH_data_L,U8T_data_H,U8T_data_L,U8checkdata;
uchar Mode,humidity,temperature;                                                                                                                                                //设置模式、读取到的湿度温度数据存储变量
char TH,TL,HH,HL;                                                                                                                                                                         //温湿度的上下限变量
bit bdataFlagStartRH,hot,cold,humid,dry,BJ;                                                                                                                           //开启转换温湿度标志位、热冷湿干和报警变量
//定时器0初始化
void Timer0_Init()
{
       ET0= 1;        //允许定时器0中断
       TMOD= 0x11;       //定时器工作方式选择
       TL0= 0xb0;     
       TH0= 0x3c;     //定时器赋予初值50ms
       TR0= 1;        //启动定时器T0
}
//定时器0中断
void Timer0_ISR (void) interrupt 1 using 0
{
       ucharRHCounter;                       //定义计数变量
       TL0= 0xb0;
       TH0= 0x3c;     //定时器赋予初值
       RHCounter++;                                   //每进一次中断就是50ms,此变量加一
       if(RHCounter%10==0&&BJ==1)          //加到10的整数倍,并且报警标志位为1
       buzz=!buzz;                                       //开启报警,每500ms蜂鸣器引脚取反一次,就是蜂鸣器一秒响一次
       elseif(BJ==0)                              //报警标志位为0时
       buzz=1;                                             //关闭报警
       //每2秒钟启动一次温湿度转换
   if (RHCounter >= 40)                  //计数到40次,就是2s,启动一次温湿度转换
    {
      FlagStartRH = 1;                          //启动转换变量置1
          RHCounter = 0;                             //计数变量清零
    }
}
余下完整程序见附件

基于51单片机的温湿度控制程序.docx

20.46 KB, 下载次数: 38, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:497598 发表于 2019-12-27 17:41 | 只看该作者
请问有原理图吗?
回复

使用道具 举报

板凳
ID:954109 发表于 2021-7-17 17:30 | 只看该作者
你这个是普中科技的单片机吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表