资源简介
温湿度传感器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(!(
评论
共有 条评论