嵌入式多路温湿度监控系统(十51单片机温湿度采集模块)

硬件:STC89C52开发板、1602数显、DHT温湿度传感器(利用其I2C数据线)

软件:Keil v4 C语言编译平台,stc-ipc-15xx-v6.85烧录程序

对DHT温度数据的解析有点问题,室温25度左右,温度的高、低位的最高位均为1,这与硬件说明文档不符,我就都屏蔽掉了最高位,得出的温度数据还比较靠谱,也不知怎么回事,各位读者如果知道的话不吝赐教!!!


DHT12的SDA、SCL分别接P2.0、P2.1,连接好电源、接地后采集结果如下图:


串口传出的数据分别通过P3.0 、P3.1传送给arm开发板
数据格式是每个数据前后各加一个空格,如:“空格78.5空格空格25.6空格……”,51单片机开发板的miniUSB是一个串口转USB的设备,通过它插入PC,就可以在PC端查看串口传出来的数据了,PC上通过串口助手看到单片机输出的结果,如下图:



代码:包括了利用I2C时序采集DHT的温湿度数据、1602显示采集到数据、利用串口中断将数据发送出去三大部分

#include <reg52.h>
#include <intrins.h> 

#define  AddWr 0xb8    //自己买的温湿度传感器DHT12器件地址

sbit sda=P2^0;
sbit scl=P2^1;

sbit rw = P1^1; 
sbit RS = P1^0;  
sbit LCDEN = P2^5; 

unsigned char bai,shi,ge;
unsigned char table1[]="wendu:";
unsigned char table2[]="shidu:";
unsigned char table3[]="0123456789";
unsigned char table4[]="CRC Error !!!";
unsigned char table5[]="Sensor Error !!";

int Temprature,Humi;


void delayUs()
{
    _nop_();
}

 void delayMs(unsigned int a)
{
    unsigned int i, j;
    for(i = a; i > 0; i--)
        for(j = 100; j > 0; j--);
 }


void delay(unsigned char dat)
{
	unsigned char i;
  for(i=dat;i>0;i--)_nop_();
}
	
/*******************************************************************
                     总线初始化              
函数原型: void  I2c_Init();  
功能:     启动I2C总线,即发送I2C起始条件.
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值