DHT11传感器STC12单片机程序_第1页
DHT11传感器STC12单片机程序_第2页
DHT11传感器STC12单片机程序_第3页
DHT11传感器STC12单片机程序_第4页
DHT11传感器STC12单片机程序_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DHT11传感器 STC12单片机程序#include#include#includesbit DHT = P00;/管脚定义,DHT11 总线输入输出;uchar data_byte;uchar Tem_Z,Tem_X,Hum_Z,Hum_X,Check;void LCD_Display();/ 声明LCD_Display 液晶显示函数;void Rec_DHT();/ 声明Rec_DHT,DHT11 接收数据函数;void receive();/主函数void main()lcd_init();while(1)Rec_DHT();LCD_Display();delayms(1000);/延

2、时函数 ,/延时 msvoid delays()/12.000MHz uchar i, j, k;i = 1;j = 234;k = 113;dodowhile (-k); while (-j); while (-i);/延时 iusvoid delay10us()uchar i;for(i=0;i6;i+)_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); /*主机发出开始信号 */void DHT11_Start()DHT=1;delay10us();DHT=0;delays();/保持电平时间大于 18ms,延

3、时 20msDHT=1;delay10us();/延迟等待 20-40us,延时 20usdelay10us();delay10us();delay10us();DHT=1;/ 拉高等待DHT11 响应/DHT11 接收一个字节数据uchar receive_data()uchar i,temp,count;data_byte=0;for(i=0;i8;i+)count=2;while(!DHT)&count+);/ 等待 50us 低电平结束delay10us();/ 等待40us 高电平,后判断电平高低低 :DHT 为 0delay10us();delay10us();delay10us(

4、);temp=0;if(DHT=1)/DHT 为高 :1,位为 1 count=2; while(DHT)&count+);待 DHT 高电平结束 if(count=1) break;为低 :0,位为 0 data_byte35) write( 注意防署 );else if(Tem_Z70) write( 注意除湿 );else if(Hum_Z0;i-) 片机晶振频率为 12MHZ ;for(j=120;j0;j-); 单片机 12 倍速度运行 /12864 写命令void write_com(uchar com) uchar i;/11111000-写指令 0uchar i_data; i

5、_data=0xf8;cs=1; sclk=0;for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0;sclk=1;i_data=i_data1;i_data=com; i_data&=0xf0; for(i=0;i8;i+) sid=(bit)(i_data&0x80); sclk=0;sclk=1; i_data=i_data1;i_data=com;i_data=i_data4; for(i=0;i8;i+)sid=(bit)(i_data&0x80);sclk=0;sclk=1; i_data=i_data1;cs=0;delayms(10);/1

6、2864 写数据void write_data(uchar date)uchar i;uchar i_data;i_data=0xfa;/写数据cs=1;for(i=0;i8;i+)sid=(bit)(i_data&0x80);sclk=0;sclk=1; i_data=i_data1;i_data=date;i_data&=0xf0;for(i=0;i8;i+)sid=(bit)(i_data&0x80);sclk=0;sclk=1; i_data=i_data1;i_data=date;i_data=i_data4;for(i=0;i8;i+) sid=(bit)(i_data&0x80)

7、;sclk=0;sclk=1; i_data=i_data1;cs=0; delayms(10);/lcd12864 初始化void lcd_init()psb=0;/ 液晶屏为串行数据传输模式rst=0;/复位delayms(2);rst=1;delayms(2);write_com(0x30); / 基本指令 , 扩 充指令为 34Hdelayms(4);write_com(0x02);delayms(4); write_com(0x0c);delayms(4);write_com(0x01);delayms(4);/清除 ddram/显示开 , 关光标/清屏/设定显示位置 ,x、y 为 12864 轴坐标, x:1-4 ;y: 1-16;void lcd_pos(uchar x,uchar y)uchar pos;if(x=1) x=0x80; /x 为第 几行 1-4;else if(x=2) x=0x90;else if(x=3) x=0x88;else if(x=4) x=0x98;pos=x+y-1; write_com(pos);/指定位置显示任意文字、字符void write(uchar * str)uchar i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论