標(biāo)題: 基于51單片機(jī)的溫濕度顯示及控制系統(tǒng)代碼 [打印本頁]

作者: clf1195997052    時(shí)間: 2018-7-10 09:04
標(biāo)題: 基于51單片機(jī)的溫濕度顯示及控制系統(tǒng)代碼
#include <reg52.h>
#include <intrins.h>
#include <absacc.h>
#include <math.h>                       //包含頭文件
  
#define uchar unsigned char
#define uint unsigned int       //宏定義
//定義四個(gè)輸出端口
sbit Led_jiashi=P3^4;           //加濕
sbit Led_qushi=P3^3;          //去濕
sbit Led_jiangwen=P3^1;            //降溫
sbit Led_shengwen=P3^2;          //升溫
//定義三個(gè)設(shè)置按鍵
sbit Key_SET = P2^0;           //設(shè)置按鍵
sbit Key_ADD = P2^1;         //加按鍵
sbit Key_SUB = P2^2;          //減按鍵
sbit Key_OK = P2^3;         //確定按鍵
//定義24C02數(shù)據(jù)口
sbit SCL = P1^0;
sbit SDA = P1^1;
//定義DHT11數(shù)據(jù)口
sbit DATA = P1^7;
sbit buzz=P3^5;                         //蜂鳴器接口
//定義LCD1602端口
sbit E=P1^3;         //1602使能引腳
//sbit RW=P2^6;          //1602讀寫引腳     我們只需要向液晶里寫數(shù)據(jù),不需要讀取數(shù)據(jù),所以就把讀寫引腳直接接地,程序里就不用單獨(dú)控制了
sbit RS=P1^2;              //1602數(shù)據(jù)/命令選擇引腳
//定義全局變量
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;                                                                                                                                                //設(shè)置模式、讀取到的濕度溫度數(shù)據(jù)存儲變量
char TH,TL,HH,HL;                                                                                                                                                                         //溫濕度的上下限變量
bit bdataFlagStartRH,hot,cold,humid,dry,BJ;                                                                                                                           //開啟轉(zhuǎn)換溫濕度標(biāo)志位、熱冷濕干和報(bào)警變量
//定時(shí)器0初始化
void Timer0_Init()
{
       ET0= 1;        //允許定時(shí)器0中斷
       TMOD= 0x11;       //定時(shí)器工作方式選擇
       TL0= 0xb0;     
       TH0= 0x3c;     //定時(shí)器賦予初值50ms
       TR0= 1;        //啟動(dòng)定時(shí)器T0
}
//定時(shí)器0中斷
void Timer0_ISR (void) interrupt 1 using 0
{
       ucharRHCounter;                       //定義計(jì)數(shù)變量
       TL0= 0xb0;
       TH0= 0x3c;     //定時(shí)器賦予初值
       RHCounter++;                                   //每進(jìn)一次中斷就是50ms,此變量加一
       if(RHCounter%10==0&&BJ==1)          //加到10的整數(shù)倍,并且報(bào)警標(biāo)志位為1
       buzz=!buzz;                                       //開啟報(bào)警,每500ms蜂鳴器引腳取反一次,就是蜂鳴器一秒響一次
       elseif(BJ==0)                              //報(bào)警標(biāo)志位為0時(shí)
       buzz=1;                                             //關(guān)閉報(bào)警
       //每2秒鐘啟動(dòng)一次溫濕度轉(zhuǎn)換
   if (RHCounter >= 40)                  //計(jì)數(shù)到40次,就是2s,啟動(dòng)一次溫濕度轉(zhuǎn)換
    {
      FlagStartRH = 1;                          //啟動(dòng)轉(zhuǎn)換變量置1
          RHCounter = 0;                             //計(jì)數(shù)變量清零
    }
}
余下完整程序見附件

基于51單片機(jī)的溫濕度控制程序.docx

20.46 KB, 下載次數(shù): 38, 下載積分: 黑幣 -5


作者: gyg    時(shí)間: 2019-12-27 17:41
請問有原理圖嗎?
作者: EarthZero    時(shí)間: 2021-7-17 17:30
你這個(gè)是普中科技的單片機(jī)嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1