使用 DHT11 温湿度传感器完成测量,并打印结果到串口;使用 SDCC 工具链编译
1. 下载并安装 SDCC,在 EIDE 上设置好安装路径
下载链接:SDCC
2. 使用 EIDE 新建一个 C51 项目
3. 编写代码
main.c
#include "dht11.h"
#include "stdio.h"
#include "soft_uart.h"
/**
*
* 使用 DHT11 温湿度传感器完成测量,并打印结果到串口;使用 SDCC 工具链编译
*
* 时钟频率 16 Mhz,要修改时钟频率,更改宏 CLOCK 的值即可;
* 注意:CLOCK 的值为:晶振频率/一条指令所需周期数,如 12M 晶振的 89c52 单片机:CLOCK=1
*
* -------------------- 引脚配置 ---------------------
*
* DHT11 DATA 引脚:P11
*
* 串口输出引脚 TX:P10
*
* ---------------------- 串口配置 ------------------------
*
* 波特率:9600,位宽度:8,停止位:1
*
*
*/
void main()
{
DHT11_Data dhtData;
DHT11_Init();
while (1)
{
switch (DHT11_Measure(&dhtData))
{
case DHT11_CONNECT_ERR:
printf("connect DHT11 failed !\n");
break;
case DHT11_VERIFY_ERR:
printf("data verify error !\n");
break;
default:
printf("temp: %d, humidity: %d%%\n", (uint8_t)dhtData.temperature, dhtData.humidity);
break;
}
Delay(2000);
}
}
int putchar(int c)
{
TxSend((uint8_t)c);
return c;
}
dht11.h
#ifndef _H_DHT11
#define _H_DHT11
#include "stdint.h"
/**
* Interface define
*/
#include "mcs51/8051.h"
#include "delay.h"
#define DATA_WRITE(val) P1_1 = (val)
#define DATA_READ() P1_1
#define _Delay(ms) Delay(ms)
void<