欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于51單片機的1602液晶屏顯示DHT11溫濕度程序
[打印本頁]
作者:
cuiguang
時間:
2018-12-4 12:09
標題:
基于51單片機的1602液晶屏顯示DHT11溫濕度程序
基于51單片機的1602液晶屏顯示DHT11溫濕度
單片機源程序如下:
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit leden=P1^0; //EN使能
sbit ledrs=P1^2; //高寫指令低寫數據
sbit ledbj=P1^4;
sbit Data=P3^6; //定義數據線
uchar rec_dat[11]; //用于顯示的接收數據數組
uchar num,i;
uchar code table[]="I LIKE QAU";
void csh();
void delay1ms(uint a);
void DHT11_delay_us(uchar n);
void DHT11_delay_ms(uint z);
void DHT11_start();
void DHT11_receive();
void com(uchar c);
void dat(uchar d);
void main()
{
com(0x01); //清屏
csh();
while(1)
{
DHT11_delay_ms(1500); //DHT11上電后要等待1S以越過不穩定狀態在此期間不能發送任何指令
com(0x80+0x02);
DHT11_receive();
for(i=0;i<11;i++) //顯示溫度數據
dat(rec_dat[i]);
}
}
void csh() //1602初始化
{ ledbj=0;
leden=0;
com(0x38);
com(0x0C);
com(0x06);
com(0x80);
com(0x80+0x43);
for(num=0;num<10;num++) //顯示table1值
{
dat(table[num]);
delay1ms(200);
}
}
void delay1ms(uint a) //100000=1s,1ms=100
{ uint i,j;
for(i=a;i>0;i--)
for(j=100;j>0;j--);
}
void com(uchar com) //寫指令
{
ledrs=0;
P2=com;
delay1ms(5); //
leden=1;
delay1ms(5);
leden=0;
}
void dat(uchar dat) //寫數據
{
ledrs=1;
P2=dat;
delay1ms(5);
leden=1;
delay1ms(5);
leden=0;
}
void DHT11_delay_us(uchar n)
{
while(--n);
}
void DHT11_delay_ms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void DHT11_start()
{
Data=1;
DHT11_delay_us(2);
Data=0;
DHT11_delay_ms(20); //延時18ms以上
Data=1;
DHT11_delay_us(30);
}
uchar DHT11_rec_byte() //接收一個字節
{
uchar i,dat=0;
for(i=0;i<8;i++) //從高到低依次接收8位數據
{
while(!Data); ////等待50us低電平過去
DHT11_delay_us(8); //延時60us,如果還為高則數據為1,否則為0
dat<<=1; //移位使正確接收8位數據,數據為0時直接移位
if(Data==1) //數據為1時,使dat加1來接收數據1
dat+=1;
while(Data); //等待數據線拉低
}
return dat;
}
void DHT11_receive() //接收40位的數據
{
uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
DHT11_start();
if(Data==0)
{
while(Data==0); //等待拉高
DHT11_delay_us(40); //拉高后延時80us
R_H=DHT11_rec_byte(); //接收濕度高八位
R_L=DHT11_rec_byte(); //接收濕度低八位
T_H=DHT11_rec_byte(); //接收溫度高八位
T_L=DHT11_rec_byte(); //接收溫度低八位
revise=DHT11_rec_byte(); //接收校正位
DHT11_delay_us(25); //結束
if((R_H+R_L+T_H+T_L)==revise) //校正
{
RH=R_H;
RL=R_L;
TH=T_H;
TL=T_L;
}
/*數據處理*/
rec_dat[0]=' ';
rec_dat[1]='T';
rec_dat[2]='E';
rec_dat[3]='M';
rec_dat[4]=' ';
rec_dat[5]=' ';
rec_dat[6]='0'+(TH/10);
rec_dat[7]='0'+(TH%10);
rec_dat[8]='.';
rec_dat[9]='0'+TL;
rec_dat[10]='C';
if(TH>=32)
{
ledbj=1;
}
else
{
ledbj=0;
}
}
}
復制代碼
所有資料51hei提供下載:
測量溫度顯示.zip
(90.98 KB, 下載次數: 41)
2018-12-4 12:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
賣蘋果的喬布斯
時間:
2018-12-19 23:38
你寫的是些什么東西啊 直接亂搞
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1