资源简介
基于51单片机的dht11温度湿度测量,用的是LCD1602显示
代码片段和文件信息
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit dht=P2^0;
sbit P2_1=P2^1;
sbit RS=P2^4;
sbit RW=P2^5;
sbit E=P2^6;
sbit dula=P3^7;
uchar num;
uchar tab[]=“0123456789“;
uchar LCD_tab[]=“HUMI: . %“;
uchar LCD_tab1[]=“TEMP: . C“;
uchar ij;
uchar dht_data; //存储DHT11发来的一个字节的数据
uchar d1d2d3d4d5; //存放DHT11发来的一个字节的数据
uchar dht_tab[5]; //存放DHT11发来的数据
void delay(uint x) //延时2us,误差 0us
{
uchar ab;
while(x--)
{
for(b=9;b>0;b--)
for(a=1;a>0;a--);
}
}
void delay_20ms()
{
uchar abc;
for(c=57;c>0;c--)
for(b=138;b>0;b--)
for(a=29;a>0;a--);
}
void DHT11()
{
P2_1=1;
dht=0;
dht_data=0;
delay_20ms(); //主机至少拉低18ms
dht=1; //拉高并延时
while(dht); //等待主机开始信号结束
// P1=~1;
while(!dht); //输出相应信号延时
// P1=~2;
while(dht); //拉高后延时
// P1=~4;
for(j=0;j<5;j++) //五个字节,共四十位
{
for(i=0;i<8;i++) //一个字节数据
{
//dht=1;
dht_data<<=1;//左移一位,最低位存储DHT11发来的数据
while(!dht); //1bit开始(延时12-14us)
delay(30); //延时60us后
P1=~8;
if(dht==1) //判断总线信号的高低(高:数据为1)
{
dht_data|=0x01;//存储发来的数据
while(dht);
// P1=~(1<<5);
}
if(dht==0)
{
dht_data|=0x00;
while(!dht);
// P1=~(1<<5);
}
}
dht_tab[j]=dht_data;//存储到数组中
}
delay(30);
d1=dht_tab[0]; //湿度整数部分
d2=dht_tab[1]; //湿度小数部分
d3=dht_tab[2]; //温度整数部分
d4=dht_tab[3]; //温度小数部分
d5=dht_tab[4]; //校检部分
}
void Wr_com(uchar com)
{
RS=0;
RW=0;
delay(200);
P0=com;
delay(100);
E=1;
delay(100);
E=0;
}
void Wr_data(uchar dat)
{
RS=1;
RW=0;
delay(200);
P0=dat;
delay(100);
E=1;
delay(100);
E=0;
}
void init()
{
P0=0;
dula=0;
Wr_com(0x38); //功能设置,8位接口,两行显示,5*10点阵字符
Wr_com(0x0c); //显示开关控制
Wr_com(0x06); //输入方式设置
Wr_com(0x01); //清屏
}
void main()
{
init();
while(1)
{
DHT11();
Wr_com(0x80);
for(num=0;num<11;num++)
{
Wr_data(LCD_tab[num]);
}
Wr_com(0x80+0x40);
for(num=0;num<12;num++)
{
Wr_data(LCD_tab1[num]);
}
Wr_com(0x80+0x40+0x0a);
Wr_data(0xdf);
Wr_com(0x80+0x05);
Wr_data(tab[d1/10]);
Wr_data(tab[d1%10]);
Wr_com(0x80+0x08);
Wr_data(tab[d2/10]);
Wr_data(tab[d2%10]);
Wr_com(0x80+0x40+0x05);
Wr_data(tab[d3/10]);
Wr_data(tab[d3%10]);
Wr_com(0x80+0x40+0x08);
Wr_data(tab[d4/10]);
Wr_data(tab[d4%10]);
// P1=~0;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11482 2015-10-26 12:13 1602温湿度显示的\1602温湿度
文件 2181 2015-10-26 12:13 1602温湿度显示的\1602温湿度.hex
文件 98 2015-10-26 12:13 1602温湿度显示的\1602温湿度.lnp
文件 16560 2015-10-26 12:13 1602温湿度显示的\1602温湿度.M51
文件 358 2015-10-26 12:17 1602温湿度显示的\1602温湿度.plg
文件 55525 2015-10-26 12:17 1602温湿度显示的\1602温湿度.uvopt
文件 13452 2015-10-25 12:25 1602温湿度显示的\1602温湿度.uvproj
文件 55527 2015-10-25 22:27 1602温湿度显示的\1602温湿度_uvopt.bak
文件 13448 2015-10-25 10:14 1602温湿度显示的\1602温湿度_uvproj.bak
文件 2771 2011-09-29 22:26 1602温湿度显示的\DHT11.c
文件 15065 2015-10-26 12:13 1602温湿度显示的\DHT11.lst
文件 12831 2015-10-26 12:13 1602温湿度显示的\DHT11.obj
文件 6376 2009-05-07 14:37 1602温湿度显示的\STARTUP.A51
文件 14077 2015-10-26 12:13 1602温湿度显示的\STARTUP.LST
文件 775 2015-10-26 12:13 1602温湿度显示的\STARTUP.obj
目录 0 2015-10-26 12:18 1602温湿度显示的
----------- --------- ---------- ----- ----
220526 16
- 上一篇:UML系统建模
- 下一篇:Logisim Mips单周期处理器
相关资源
- 基于物联网实验验环境的温湿度实时
- 基于STM32F4的DHT11温湿度传感器的源代
- DHT11库文件和
- 单片机或者STM32能直接用的sht读温湿度
- modbus通讯协议进行温湿度数据的采集
- 基于Arduino的温湿度系统设计
- protel99se原创电路图PCB图 温湿度控制
- STC15F2K60S2读取DHT11温湿度传感器数据串
- SHT75温湿度气压传感器驱动程序
- DHT11温湿度传感器MSP430F149)
- 基于51单片机的多路温湿度实时监测的
- stc12单片驱动DHT11温湿度传感器
- DHT11 温湿度传感器1602显示 可用程序
- HMT360露点仪日常维护及常见问题处理
- 由AT89C51/55构成的温湿度自动监测系统
- AT89C51/55构成温湿度自动监测系统
- sht30温湿度模块驱动
- 台达PLC与温湿度传感器MODBUS通讯
- Arduino DHT11温湿度传感器库文件
- AM2302(DHT22)串口显示温湿度STM32程序
- STM32和SHT3X 高精度温湿度传感器驱动
- stm32f103vet6_usart1_AHT10.zip
- ALIENTEK MiniSTM32 DHT11 温湿度传感器模块
- DHT22 温湿度传感器51代码
- 基于BC26接入阿里云物联网收发温湿度
- 基于51单片机的DHT11温湿度测量报警系
- 基于51单片机的温湿度检测与报警系统
- STC89C51单片机温湿度DHT11检测仪环境检
- SHT20温湿度传感器中文技术手册
- 基于51单片机和DHT11的温湿度检测设计
评论
共有 条评论