新手请教下dht11测温后串口数据发送给上位机(PC)的问题

2019-07-21 02:15发布

自己用的是 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);   
                }

    }
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。