dht11 c语言编程,dht11的c语言程序.docx

dht11的c语言程序

#include #define uint unsigned int #define uchar unsigned char sbit TRH = P1^0;//温湿度传感器DHT11数据接入uchar str[]={0,0,0,0,0,0,0,0};uint TH,TL,RH,RL,CK; uint THc,TLc,RHc,RLc,CKc; uint xh,sum; // void delay(uchar s) //延时10us// {// uchar v;// for(;s>0;s--)// for(v=25;v>0;v--);// } void delay(uchar b) //误差 0us{ unsigned char a; for(;b>0;b--) for(a=2;a>0;a--);}//void delay1( )// 延时20ms//{ //uchar x,y,z;//for(x=15;x>0;x--)//for(y=4;y>0;y--)//for(z=248;z>0;z--);//}void delay1(uchar c) //误差 0us{ unsigned char a,b; for(;c>0;c--) for(b=142;b>0;b--) for(a=2;a>0;a--);}void delay2()//数码管显示用的延时{ uchar l,j,k;for(l=2;l>0;l--)for(j=4;j>0;j--)for(k=100;k>0;k--);} void start() { TRH=1; delay(2); TRH=0; //主机拉低18ms delay1(20); TRH=1; //DATA总线由上拉电阻拉高主机延时20 delay(3); }uchar receive() { uchar i,temp; xh=0; while(TRH); for(i=0;i<8;i++) { while(!TRH); delay(3); if(TRH) { temp=1;while(TRH);} else temp=0; xh<<=1; xh|=temp; } return (xh);} void display(){uchar a[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};uchar m,n,s,i; m= str[3];//数码管显示部分 n= str[4]; s= str[5]; while(1) { for(i=0;i<10;i++){ if(m==i) m=a[i]; } P0=m; P2=0x10; delay2(); for(i=0;i<10;i++){ if(n==i) n=a[i]; } P0=n-0X80; P2=0x20; delay2(); for(i=0;i<10;i++){ if(s==i) s=a[i]; } P0=s; P2=0x40;delay2(); P0=0X9C; P2=0x80; delay2();} } void main() { while(1) { start(); TRH=1; // 读取数据并写入指令 if(!TRH) { while(!TRH); //判断DHT11发出 80us 的低电平响应信号是否结束while(TRH);delay(8); RHc = receive(); //数据接收状态 RLc = receive(); THc = receive(); TLc = receive(); CKc = receive();} TRH=1; sum=(RHc+RLc+THc+TLc);//数据校验 if(sum==CKc) { RH = RHc; RL = RLc; TH= THc; TL = TLc; CK = CKc; str[0] =RH/10; //湿度整数部分 str[1] =RH%10; str[2] = RL/10 ; str[3] = TH/10; //温度整数部分 str[4] = TH%10; str[5] = TL/10; } display(); } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值