首页资源分类PCB layout > DHT11传感器基于51的程序实现

DHT11传感器基于51的程序实现

已有 445025个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:DHT11传感器

    分    享:

    文档简介

    DHT11温湿度传感器资料说明,基于简单单片机的程序运行

    文档预览

    #include #define uchar unsigned char #define uint unsigned int char read_data(); void delay(uchar z); sbit wela=P2^7; sbit dula=P2^6; sbit rs=P3^5; sbit rw=P3^4; sbit lcd=P3^6;//使能 sbit rd=P3^7;//串并行 sbit DHT=P1^0; uchar shiZ,shiX,wenZ,wenX,check; uchar tr_shiZ,tr_shiX,tr_wenZ,tr_wenX; uchar flag; uchar table[]="现在温度";//数组形式 uchar table1[]="现在湿度"; void delay(uchar z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void write_com(uchar com) { rs=0; rw=0; P2=com; delay(5); lcd=1; delay(5); lcd=0; } void write_date(uchar date) { rs=1; rw=0; P2=date; delay(5); lcd=1; delay(5); lcd=0; } void init() { wela=0; dula=0; rd=1;//并行 write_com(0x03);//位置归位 write_com(0x0c);//显示开关设置 write_com(0x01);//清屏 } void delay_1ms(uint i) { uint j=88; for(;i>0;i--) { while(j>0)j--; } } void delay_10us() { uchar i; i--; i--; i--; i--; i--; i--; } void read_init() { DHT=0; //主机使DHT11低电平并延时至少18ms delay_1ms(21); DHT=1; //主机置DHT11高电平20~40us,并等待从机相应 delay_10us(); delay_10us(); delay_10us(); delay_10us(); DHT=1; if(!DHT) //从机发出响应信号 { flag=2; while((!DHT)&&flag++);//等待从机发高电平结束 flag=2; while(DHT&&flag++); //开始采集数据 tr_shiZ=read_data();//采集湿度整数部分 tr_shiX=read_data();//采集湿度小数部分 tr_wenZ=read_data();//采集温度整数部分 tr_wenX=read_data();//采集温度小数部分 check=read_data(); //采集校验位 } DHT=0; delay(20);//采集完数据后 } char read_data() { uchar i,num,temp; num=0; for(i=0;i<8;i++) { flag=2; while((!DHT)&&flag++);//等待50毫秒低电平 delay_10us();//延时判断0还是1 delay_10us(); delay_10us(); delay_10us(); if(DHT==1) { temp=1; flag=2; while(DHT&&flag++); } else temp=0; num<<=1; num|=temp; } return(num); } void writed(uchar add,uchar date) //在固定位置写数字 { uchar shi,ge; shi=date/10; ge=date%10; write_com(add); write_date(0x30+shi);//送数字的方法 哈哈 在字符的那里 write_date(0x30+ge); } void display() { uchar i; write_com(0x80);//第1行地址 for(i=0;i<8;i++) { write_date(table[i]); delay(4); } write_com(0x90);//第二行地址 for(i=0;i<8;i++) { write_date(table1[i]); delay(4); } } void zifu() //显示冒号和点 { write_com(0x84); write_date(0x3a); write_com(0x94); write_date(0x3a); write_com(0x86); write_date(0x2e); write_com(0x96); write_date(0x2e); } void main() { uchar temp; init(); while(1) { display(); read_init(); temp=tr_shiZ+tr_shiX+tr_wenZ+tr_wenX; if(check==temp) { shiZ=tr_shiZ; shiX=tr_shiX; wenZ=tr_wenZ; wenX=tr_wenX; writed(0x85,wenZ);//大写的 writed(0x87,wenX); writed(0x95,shiZ); writed(0x97,shiX); zifu(); } } }

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。