stc12c4052AD读取DHT11数据并显示
硬件说明:
单片机:STC12C4052AD
晶振:12M
数码管:共阴4位数码管
关于DHT11这个传感器的时序,大家可以自行百度
为了读取这个传感器,费了我不少时间,网上搜来的计时程序都不靠谱,后来在STC-ISP上找到了标准计时函数,才总算解决了时序问题。
这个程序目前还不能实现温度的实时变化,琢磨着要进入定时中断。改天再试试;
这个程序参考了众多大神的内容,谢谢众神。
/********
programename: DHT11
hardware: STC12C2052AD
/*****/
#include <STC12C2052AD.h> //STC12C2052AD header file
#include <stdio.h> //
#include <intrins.h> //用于引用_NOP_语句;
sbit BUS=P3^7;// 接P3^5不行,不知道为什么
//**************数码管段定义
#define D0{a=1;b=1;c=1;d=1;e=1;f=1;g=0;}
#define D1{a=0;b=1;c=1;d=0;e=0;f=0;g=0;}
#define D2{a=1;b=1;c=0;d=1;e=1;f=0;g=1;}
#define D3{a=1;b=1;c=1;d=1;e=0;f=0;g=1;}
#define D4{a=0;b=1;c=1;d=0;e=0;f=1;g=1;}
#define D5{a=1;b=0;c=1;d=1;e=0;f=1;g=1;}
#define D6{a=1;b=0;c=1;d=1;e=1;f=1;g=1;}
#define D7{a=1;b=1;c=1;d=0;e=0;f=0;g=0;}
#define D8{a=1;b=1;c=1;d=1;e=1;f=1;g=1;}
#define D9{a=1;b=1;c=1;d=1;e=0;f=1;g=1;}
//*数码管位定义
sbit w1=P3^3;
sbit w2=P3^2;
sbit w3=P3^1;
sbit w4=P3^0;
//*数码管段端口定义
sbit a=P1^0;
sbit b=P1^6;
sbit c=P1^4;
sbit d=P1^2;
sbit e=P1^1;
sbit f=P1^7;
sbit g=P1^5;
sbit h=P1^3;
//声明全局变量
unsigned char RH_L_temp,RH_H_temp,TP_L_temp,TP_H_temp,check_temp;
unsigned char RH_L,RH_H,TP_L,TP_H,check_num;
// 延时函数区
// 40us延时,本程序没有用到
void Delay40us() //@12.000MHz
{
unsigned char i;
i = 117;
while (--i);
}