欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1155|回復: 0
打印 上一主題 下一主題
收起左側

溫度傳感器

[復制鏈接]
跳轉到指定樓層
樓主
ID:854459 發表于 2021-1-5 23:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
WSD.C(溫濕度主程序)
/*
晶振12.0MHZ,MCUAT89S51
DHT11數字溫濕度傳感器數碼管顯示程序。
P2^2DATA
8個共陰數碼管接法:段選
P1.7->A;P1.5->B;P1.1->C;P1.3->D;P1.4->E;P1.6->F;P1.0->G;P1.2->DP
位選
P0.0->7;P0.1->6;P0.2->5;P0.3->4;P0.4->3;P0.5->2;P0.6->1;P0.7->0*/
#include<reg52.h>
#include <intrins.h>
#include"smg.h"
#include"head.h"
unsigned char str[]={0,0,0,0,0,0,0,0};
sbit TRH = P2^2;//溫濕度傳感器DHT11數據接入
uint j=0;
uintTH_data,TL_data,RH_data,RL_data,CK_data;
uintTH_temp,TL_temp,RH_temp,RL_temp,CK_temp;
uint com_data,untemp,temp;
char receive()
{
uint i;
com_data=0;
for(i=0;i<=7;i++)
{
while(!TRH);
delay_10us();
delay_10us();
delay_10us();
if(TRH)
{
temp=1;
while(TRH);
}
else
temp=0;
com_data<<=1;
com_data|=temp;
}
return(com_data);
}
void read_TRH()
TRH=1;
delay_5us();
//主機拉低18ms
TRH=0;
delay_180ms();
TRH=1;
//DATA總線由上拉電阻拉高主機延時20us
delay_10us();
delay_10us();
delay_10us();
delay_10us();
TRH=1;
//判斷DHT11是否有低電平響應信號如不響應則跳出,響應則向下運行
if(!TRH)
{
//判斷DHT11發出 80us 的低電平響應信號是否結束
while(!TRH);
//判斷從機是否發出 80us 的高電平,如發出則進入數據接收狀態 while(TRH);
//數據接收狀態
RH_temp = receive();
RL_temp = receive();
TH_temp = receive();
TL_temp = receive();
CK_temp = receive();
TRH=1;
//數據校驗
untemp=(RH_temp+RL_temp+TH_temp+TL_temp);
if(untemp==CK_temp)
{
RH_data = RH_temp;
RL_data = RL_temp;
TH_data = TH_temp;
TL_data = TL_temp;
CK_data = CK_temp;
}
}
//濕度整數部分
str[0] =RH_data/10;
str[1] =RH_data%10;
//濕度小數部分
str[2] = RL_data/10 ;
//溫度整數部分
str[3] = TH_data/10;
str[4] = TH_data%10;
//溫度小數部分
str[5] = TL_data/10;
//主函數
//TH,TL,RH,RL分別代表溫濕度的整數和小數部分
void main()
{
delay_3s();
read_TRH();
for(;j<10000;j++)
disp(str);
}
smg.c(數碼管顯示C程序)
#include<reg52.h>
#include"smg.h"
#include"head.h"
//后加的8個數碼管的段碼和位碼。
sbit smg_dw1=P0^0;
sbit smg_dw2=P0^1;
sbit smg_dw3=P0^2;
sbit smg_dw4=P0^3;
sbit smg_dw5=P0^4;
sbit smg_dw6=P0^5;
sbit smg_dw7=P0^6;
sbit smg_dw8=P0^7;
uchar
smg_du[]={0xfa,0x22,0xb9,0xab,0x63,0xcb,0xdb,0xa2,0xfb,0xeb,0xf3,0x5b,0xd8,0x3b,0xd9,0xd1,0x04};
void disp(uchar *p)
{
P1=smg_du[*p];
smg_dw1=0;
delay_17us(1);
smg_dw1=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw2=0;
delay_17us(1);
smg_dw2=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw3=0;
delay_17us(1);
smg_dw3=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw4=0;
delay_17us(1);
smg_dw4=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw5=0;
delay_17us(1);
smg_dw5=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw6=0;
delay_17us(1);
smg_dw6=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw7=0;
delay_17us(1);
smg_dw7=1;
delay_17us(1);
p++;
P1=smg_du[*p];
smg_dw8=0;
delay_17us(1);
smg_dw8=1;
delay_17us(1);
}
time.c(時間函數)
#include<reg52.h>
#include<intrins.h>
#include"head.h"

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表