OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4241|回复: 4

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

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-1-20
在线时间
7 小时
发表于 2018-1-20 22:42:54 | 显示全部楼层 |阅读模式
10金钱
自己用的是 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;//设置字体为蓝色
        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("\r\n湿度为:humidity \r\n\r\n");
                        for(x=0;x<len;x++)
                        {
                                USART_SendData(USART1,USART_RX_BUF[t]);//向串口1发送数据
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
                        }
                        printf("\r\n\r\n");//插入换行
                        USART_RX_STA=0;
       
      }else
                {
                        times++;
                        if(times%5000==0)
                        {
                                printf("\r\n精英STM32开发板 串口实验\r\n");
                                printf("正点原子@ALIENTEK\r\n\r\n");
                        }
                        if(times%200==0) printf("\r\n温度为:temperature \r\n\r\n");
                        if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
                        //delay_ms(10);   
                }

    }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-1-21 00:34:50 | 显示全部楼层
把串口通信实验多学习学习就知道了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

778

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6745
金钱
6745
注册时间
2017-4-12
在线时间
1258 小时
发表于 2018-1-21 10:34:51 | 显示全部楼层
可以把你的数据保存在一个数组里,然后再用串口发送出去就可以了
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2018-1-20
在线时间
7 小时
 楼主| 发表于 2018-1-21 20:56:32 | 显示全部楼层
正点原子 发表于 2018-1-21 00:34
把串口通信实验多学习学习就知道了

谢谢原子哥,还在看手册
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2019-4-27 18:22:49 | 显示全部楼层
[mw_shl_code=c,true]                        printf("Temp:%d C\r\n",temperature);                //打印温度数据
                        printf("Humi:%d %% \r\n",humidity);                        //打印湿度数据[/mw_shl_code]在DHT11例程的基础上如下修改就行了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 05:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表