MSP430F5529用DHT11与OLED实现显示温度的功能的代码
时间: 2024-02-18 21:04:57 浏览: 84
MSP430F5529代码1
以下是MSP430F5529用DHT11与OLED实现显示温度的功能的代码:
```c
#include <msp430.h>
#include "DHT11.h"
#include "OLED.h"
#define DHT11_PIN BIT4
void main(void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
P4DIR |= BIT0; //设置P4.0为输出
P4OUT &= ~BIT0; //使P4.0输出低电平
_delay_cycles(50000); //延时50ms
P4OUT |= BIT0; //使P4.0输出高电平
_delay_cycles(50000); //延时50ms
P4DIR &= ~BIT0; //设置P4.0为输入
P4IE |= BIT0; //使能P4.0中断
P4IES &= ~BIT0; //设置P4.0中断触发边沿为上升沿
P4IFG &= ~BIT0; //清除P4.0中断标志位
__bis_SR_register(GIE); //开启全局中断
OLED_Init(); //初始化OLED
OLED_Clear(); //清屏
while(1)
{
int dht11_data[5]; //定义DHT11数据数组
DHT11_Read_Data(dht11_data, DHT11_PIN); //读取DHT11数据
if(dht11_data[4] == (dht11_data[0]+dht11_data[1]+dht11_data[2]+dht11_data[3])) //校验数据是否正确
{
char temp_str[10]; //定义温度字符串数组
sprintf(temp_str, "Temp: %dC", dht11_data[2]); //格式化温度字符串
OLED_ShowString(0, 0, temp_str); //在OLED上显示温度字符串
}
_delay_cycles(2000000); //延时2s
}
}
#pragma vector=PORT4_VECTOR
__interrupt void Port_4(void)
{
_delay_cycles(30000); //延时30us
if(!(P4IN & BIT0)) //判断是否为下降沿触发
{
DHT11_Start(); //发送DHT11开始信号
}
P4IFG &= ~BIT0; //清除P4.0中断标志位
}
```
注:这里的DHT11和OLED驱动代码需要自行编写或引用其他开源库。
阅读全文