找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1109|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

溫度傳感器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:854459 發(fā)表于 2021-1-5 23:05 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
WSD.C(溫濕度主程序)
/*
晶振12.0MHZ,MCUAT89S51
DHT11數(shù)字溫濕度傳感器數(shù)碼管顯示程序。
P2^2DATA
8個(gè)共陰數(shù)碼管接法:段選
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數(shù)據(jù)接入
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();
//主機(jī)拉低18ms
TRH=0;
delay_180ms();
TRH=1;
//DATA總線由上拉電阻拉高主機(jī)延時(shí)20us
delay_10us();
delay_10us();
delay_10us();
delay_10us();
TRH=1;
//判斷DHT11是否有低電平響應(yīng)信號(hào)如不響應(yīng)則跳出,響應(yīng)則向下運(yùn)行
if(!TRH)
{
//判斷DHT11發(fā)出 80us 的低電平響應(yīng)信號(hào)是否結(jié)束
while(!TRH);
//判斷從機(jī)是否發(fā)出 80us 的高電平,如發(fā)出則進(jìn)入數(shù)據(jù)接收狀態(tài) while(TRH);
//數(shù)據(jù)接收狀態(tài)
RH_temp = receive();
RL_temp = receive();
TH_temp = receive();
TL_temp = receive();
CK_temp = receive();
TRH=1;
//數(shù)據(jù)校驗(yàn)
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;
}
}
//濕度整數(shù)部分
str[0] =RH_data/10;
str[1] =RH_data%10;
//濕度小數(shù)部分
str[2] = RL_data/10 ;
//溫度整數(shù)部分
str[3] = TH_data/10;
str[4] = TH_data%10;
//溫度小數(shù)部分
str[5] = TL_data/10;
//主函數(shù)
//TH,TL,RH,RL分別代表溫濕度的整數(shù)和小數(shù)部分
void main()
{
delay_3s();
read_TRH();
for(;j<10000;j++)
disp(str);
}
smg.c(數(shù)碼管顯示C程序)
#include<reg52.h>
#include"smg.h"
#include"head.h"
//后加的8個(gè)數(shù)碼管的段碼和位碼。
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(時(shí)間函數(shù))
#include<reg52.h>
#include<intrins.h>
#include"head.h"

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

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表