資源簡介
該程序為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??程序\ob
?????文件????????6771??2019-04-21?16:06??程序\ob
?????文件????????1330??2019-04-21?16:06??程序\ob
?????文件????????3740??2019-04-21?16:06??程序\ob
?????文件??????????93??2019-04-21?16:06??程序\ob
?????文件?????????109??2019-04-21?16:06??程序\ob
?????文件????????9145??2019-04-21?16:06??程序\ob
?????文件?????????828??2019-04-21?16:05??程序\ob
?????文件????????6376??2016-04-01?17:01??程序\STARTUP.A51
- 上一篇:Hspice Cmos反相器
- 下一篇:LogoTool(1.0.3.2)
評論
共有 條評論