資源簡介
溫濕度傳感器AM2301/DHT21源程序代碼,編譯下載便可使用,LCD12864顯示,C語言編程,51程序
代碼片段和文件信息
/******************************************************************************
名稱:溫濕度傳感器AM2301/DHT21
功能:在串行12864上顯示溫度濕度
作者:張紀寬
時間:2011/07/31
*****************************************************************************/
#include“12864.h“//串行
sbit?WSD_DATE=P1^0;//定義溫濕度數據傳送端
/********************************************************************
變量定義
******************************************************************/
uchar?shidu_0hshidu_0lwendu_0hwendu_0ljiaoyan0;
uchar?shidu_hshidu_lwendu_hwendu_ljiaoyan;?//高低位,校驗位
uchar?shidu_bshidu_sshidu_gwendu_bwendu_swendu_g;
uchar?a;//判斷時間用
uchar?datecomdate;
uint?shiduwendu;
void?nelaymS?(unsigned?int?dly)???????????????????
{
unsigned?int?i;
for?(?;?dly>0;?dly--)
{
for?(i=0;i<166;i++);????????
}
}
void??nelay_40us()
{
????????unsigned?char?i;?????????????????????
????????i++;i++;i++;i++;i++;i++;
i++;i++;i++;i++;i++;i++;
}
void?read_date(void)
{
??uchar?i;
??for(i=0;i<8;i++)
??{
?? a=2;
while((!(WSD_DATE==1))&&a++);//判斷是否拉低50us,1bit開始
if(a==1)
break;
nelay_40us();
date=0;
if(WSD_DATE==1)
date=1;
a=2;
while((WSD_DATE==1)&&a++);
if(a==1)//超時則跳出for循環
break;
comdate<<=1;
comdate|=date;
??}
}
void?read(void)
{
??WSD_DATE=0;??//主機拉低500us
??nelaymS(1);
??WSD_DATE=1;??//主機拉高30us
??nelay_40us();
?
?if(WSD_DATE==1)
? a=1;//拉高判斷是否從機拉低
?while(!(
評論
共有 條評論