資源簡介
基于STC89C52的溫濕度檢測,包含有單片機燒寫的源程序,可直接燒進你的單片機,溫濕度檢測采用DHT11。里面還有我的WORD報告,非常完整~

代碼片段和文件信息
#include?
#define?uint?unsigned?int?
#define?uchar?unsigned?char
typedef?bit?BOOL??;?
sbit?io?=?P1^0?;//DHT11信號接收端
sbit?rs?=?P2^4?;?//寄存器選擇信號,高表示數據、低表示指令
sbit?rw?=?P2^5?;?//讀寫控制信號,高表示讀、低表示寫
sbit?ep?=?P2^6?;//片選使全能信號,下降沿觸發
uchar?data_byte;
uchar?RHRLTHTL;
/***********************************************************************************************************
************************************************延時模塊***************************************************/
void?delay(uchar?ms)
{???????//?延時子程序
?uchar?i?;
?while(ms--)
?{
?? for(i?=?0?;?i<250;i++)?;
?}
}
void?delay1()//延時10us
{
uchar?i;
i--;
i--;
i--;
i--;
i--;
i--;
}
void?longdelay(uchar?s)?//長延時
{
?while(s--)
?{
?? delay(60)?;
?}
}
/**************************************************************************************************************
***********************************************LCD模塊********************************************************/
BOOL?lcd_bz()//測試LCD忙碌狀態
{??????
?BOOL?result?;
?rs?=?0?;//指令
?rw?=?1?;//讀
?ep?=?1?;//使能
?result?=?(BOOL)(P0?&?0x80)?;//讀忙標志和地址計數器ACC值,P0口如果等于0x80,則說明不忙碌,數據總線的高位為1
?ep?=?0?;//使能下降沿觸發
?return?result?;?
}
void?write_cmd(uchar?cmd)//?寫指令
{???????
? while(lcd_bz())?;
rs?=?0?;
rw?=?0?;
ep?=?0?;//下降沿
P0?=?cmd?;//寫指令數據
ep?=?1?;
ep?=?0?;??
}
void?write_addr(uchar?addr)//寫地址
{???????
? write_cmd(addr|0x80)?;
}
void?write_byte(uchar?dat)//寫字節
{??????
? while(lcd_bz())?;
?? rs?=?1?;
?? rw?=?0?;
?? ep?=?0?;
?? P0?=?dat?;
?? ep?=?1?;
?? ep?=?0?;?
}
void?lcd_init()//?LCD初始化
{???????
?write_cmd(0x38)?;?//打開顯示開頭、允許移動位置、允許功能設置8位2行
?delay(1);
?write_cmd(0x08)?;??
?delay(1);
?write_cmd(0x01)?;?//清除LCD的顯示內容
?delay(1);
?write_cmd(0x06)?;//設置輸入方式、光標返回,讀寫字符指針加1屏幕不移
?delay(1);
?write_cmd(0x0c)?;?//打開顯示開頭、設置輸入方式
?delay(1);
}
void?display(uchar?addr?uchar?q)//在某一地址上顯示一字節
{? ?
?delay(10)?;
?write_addr(addr)?;
?????write_byte(q)?;
?longdelay(2)?;
?
}
/*************************************************************************************************************
************************************************?DHT11測試模塊***********************************************/
void?start()//開始信號
{
io=1;
delay1();
io=0;//總線拉低必須大于18ms,保證DHT11能檢測到起始信號
delay(20);//>18ms
io=1;//總線拉高,讀取DHT11的響應信號
delay1();//20-40us
delay1();
delay1();
delay1();
delay1();
}
uchar?receive_byte()//接收一個字節
{
uchar?itempcount;
for(i=0;i<8;i++)//每次采集8位數據
{
count=2;
while((!io)&&count++)//拉低50us?為接受一bit數據作準備
temp=0;
delay1();delay1();delay1();delay1();?//因為0的高電平只持續26-28us,所以延時40us左右再判斷是什么電平
if(io==1)temp=1;?//temp代表本次讀到的是1還是0
count=2;
while((io)&&count++);//延時等待電位降低進行下一次循環?
if(count==1)break;
data_byte<<=1;
data_byte|=temp;//將值賦給data_byte每次賦一位
}
return?data_byte;
}
void?receive()//接收數據
{
uchar?T_HT_LR_HR_Lchecknum_check;
uchar?count;
start();//開始信號
io=1;
if(!io)/
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????3233280??2014-04-02?16:15??林炳文-傳感器作業\傳感器作業?.doc
?????文件????????442??2012-12-21?09:30??林炳文-傳感器作業\程序\MY_DHT11\MY?DHT11.LST
?????文件???????3052??2012-12-21?09:53??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11
?????文件???????5078??2012-12-26?14:21??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.c
?????文件???????1761??2012-12-21?09:53??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.hex
?????文件?????????33??2012-12-21?09:53??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.lnp
?????文件???????9438??2012-12-21?09:53??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.LST
?????文件??????14528??2012-12-21?09:53??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.M51
?????文件???????4847??2012-12-21?09:53??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.OBJ
?????文件????????967??2012-12-21?11:36??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.Opt
?????文件????????716??2012-12-21?11:36??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.plg
?????文件???????1675??2012-12-21?11:36??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11.Uv2
?????文件????????836??2012-12-21?09:31??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11_Opt.Bak
?????文件??????????0??2012-12-21?09:32??林炳文-傳感器作業\程序\MY_DHT11\MY_DHT11_Uv2.Bak
?????目錄??????????0??2014-04-02?12:37??林炳文-傳感器作業\程序\MY_DHT11
?????目錄??????????0??2014-04-02?12:37??林炳文-傳感器作業\程序
?????目錄??????????0??2014-04-02?16:15??林炳文-傳感器作業
-----------?---------??----------?-----??----
??????????????3276653????????????????????17
評論
共有 條評論