自己用的是 stm32f1精英板,想结合实验4 串口无线通信以及 dht11实验 将测得的温湿度发送给上位机(PC),温湿度数据在tft屏上能正常显示,但是 usart.c的TX函数一直不是很理解,不知道怎么将温湿度数据通过串口1发送,自己是新手,希望大家帮一下谢谢,以下是主函数代码,其余部分均和 dht11实验例程相同。主函数代码:
#include "led.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "dht11.h"
/************************************************
ALIENTEK精英STM32开发板实验29
DHT11数字温湿度传感器 实验
技术支持:
www.openedv.com
淘宝店铺:
http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司
作者:正点原子 @ALIENTEK
************************************************/
int main(void)
{
u8 t=0;
u8 temperature;
u8 humidity;
u16 len;
u16 times=0;
u16 x;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init(); //初始化LCD
POINT_COLOR=RED; //设置字体为?
LCD_ShowString(30,50,200,16,16,"ELITE STM32");
LCD_ShowString(30,70,200,16,16,"DHT11 TEST");
LCD_ShowString(30,90,200,16,16,"WANGLIWEITEST");
LCD_ShowString(30,110,200,16,16,"2018/1/20");
while(DHT11_Init()) //DHT11初始化
{
LCD_ShowString(30,130,200,16,16,"DHT11 Error");
delay_ms(200);
LCD_Fill(30,130,239,130+16,WHITE);
delay_ms(200);
}
LCD_ShowString(30,130,200,16,16,"DHT11 OK");
POINT_COLOR=BLUE;//设置字体为蓝 {MOD}
LCD_ShowString(30,150,200,16,16,"Temp: C");
LCD_ShowString(30,170,200,16,16,"Humi: %");
while(1)
{
if(t%10==0) //每100ms读取一次
{
DHT11_Read_Data(&temperature,&humidity); //读取温湿度值
LCD_ShowNum(30+40,150,temperature,2,16); //显示温度
LCD_ShowNum(30+40,170,humidity,2,16); //显示湿度
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
//printf("
湿度为:humidity
");
for(x=0;x<len;x++)
{
USART_SendData(USART1,USART_RX_BUF[t]);//向串口1发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
}
printf("
");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("
精英STM32开发板 串口实验
");
printf("正点原子@ALIENTEK
");
}
if(times%200==0) printf("
温度为:temperature
");
if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
//delay_ms(10);
}
}
}
一周热门 更多>