- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
dht在stc程序.doc
上面为项目文件结构,使用STC15F104E单片机在6MHz时钟频率调试成功,因为dht11对软件延时精度要求比较高,以上程序的软件延时是通过逻辑分析仪得出,不能移植与其他单片机,只能用于stc12c/stc11使用6 MHz晶振或者其它晶振使用分频产生6 MHz主时钟,
或者使用stc15f10X系列无晶振单片机把主时钟调整为6MHz.
源程序1 …………………………dht11.c
#include STC12.h
#include 5110.h
#include intrins.h
#define uint unsigned int
#define uchar unsigned char
sbit io=P3^4;//DHT11数据端
uchar data_byte;
uchar HH,HL,TH,TL;
void delay(uchar z) //10ms @6Mhz
{
unsigned char i, j,k;
for(k=0;kz;k++)
{
_nop_();
_nop_();
i = 59;
j = 89;
do
{
while (--j);
} while (--i);
}}
void delay1() //延时5us @6Mhz
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void Delay2() //@6.000MHz 200us
{
unsigned char i, j;
_nop_();
_nop_();
i = 2;
j = 38;
do
{
while (--j);
} while (--i);
}
void start()//开始信号
{
io=1;
delay(5);
io=0;
delay(2);
io=1;
}
uchar receive_byte()
{
uchar i,count;
for(i=0;i8;)
{
while(!io)
count =0;
while(io)
{
count++;
delay1();
}
if((count13)(count17))
{
data_byte=1;
data_byte|=0x01;
++i;
}
if((count3)(count7))
{
data_byte=1;
++i;
}
}
return data_byte;
}
void receive()
{
uchar T_H,T_L,H_H,H_L,check,num_check;
start(); //开始信号
while(io); //读取DHT11响应信号
{
Delay2();
H_H=receive_byte();
H_L=receive_byte();
T_H=receive_byte();
T_L=receive_byte();
check=receive_byte();
io=1;
num_check=H_H+H_L+T_H+T_L;
if(num_check==check) //校验数据
{
HH=H_H;
HL=H_L;
TH=T_H;
TL=T_L;
check=num_check;
}
}
}
main()
{
uchar g;
delay(50);
for(g=0;g10;g++) //输出延时波形用于调整软件延时
{
io=!io;
delay1();
}
LCD_init(); //初始化LCD模块
LCD_clear(); //清屏幕
HH=0;TH=0;HL=0;TL=0;
LCD_write_hanzi(0,0,0); //初始化屏幕
LCD_write_hanzi(2,0,1);
LCD_write_hanzi(0,2,2);
LCD_write_hanzi(2,2,3);
while(1)
{
receive();
LCD5110ShowNum(4,0,TH); //显示温度
LCD5110ShowNum(4,2,HH); //显示数据
delay(255);
HH=0;
TH=0;
HL=
您可能关注的文档
- CMOS菜单祥解.doc
- CMPP.协议.doc
- CMTS-CM、EPON+LAN、EPON+EOC.doc
- CMYK色彩模式.doc
- Cntkrq浅谈教育小学英语学习习惯的培养策略技巧归纳.doc
- COBOL语言基础培训教程.doc
- cocosd-x学习笔记.doc
- COD-说明书.doc
- CodeMissile简易使用手册.doc
- CodeProAnalytix介绍及使用说明.doc
- 高校教师资格证之《高等教育法规》综合提升测试卷及参考答案详解(模拟题).docx
- 实验小学――学年第一学期班主任计划六3班班主任工作计划.pptx
- 知识服务与用户需求关联分析-深度研究.pptx
- 高校教师资格证之《高等教育法规》练习题库附答案详解(研优卷).docx
- 知识服务与数字资源推荐-深度研究.pptx
- 高校教师资格证之《高等教育法规》练习题精选答案详解.docx
- 2024年甘肃省兰州市中考语文真题(解析版).pdf
- 零信任认证模块行业发展方向及匹配能力建设研究报告.docx
- 高校教师资格证之《高等教育法规》综合提升测试卷及参考答案详解(完整版).docx
- 高校教师资格证之《高等教育法规》练习题库附参考答案详解(满分必刷).docx
文档评论(0)