找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5152|回复: 6
打印 上一主题 下一主题
收起左侧

STM32系统操作温湿度模块并通过TFTLCD屏显示源程序

[复制链接]
跳转到指定楼层
楼主
DHT11传感器的数据口接在PG11管脚,电源接入开发板上电源上,多大的电压取决于你的DHT11传感器模块供电电压。


单片机源程序如下:
  1. #include "system.h"
  2. #include "SysTick.h"
  3. #include "led.h"
  4. #include "usart.h"
  5. #include "tftlcd.h"
  6. #include "dht11.h"
  7. #include "smog.h"
  8. #include "adc.h"
  9. #include "sys.h"
  10. #include "delay.h"



  11. void data_pros()        //数据处理函数
  12. {
  13.         u8 t;
  14.         u32 temp_val=0;
  15.         u8 temp;              
  16.         u8 humi;
  17.         u8 temp_buf[3],humi_buf[3];
  18.         DHT11_Read_Data(&temp,&humi);
  19.         temp_buf[0]=temp/10+0x30;        
  20.         temp_buf[1]=temp%10+0x30;
  21.         temp_buf[2]='\0';
  22.         LCD_ShowString(55,60,tftlcd_data.width,tftlcd_data.height,16,temp_buf);
  23.                
  24.         humi_buf[0]=humi/10+0x30;        
  25.         humi_buf[1]=humi%10+0x30;
  26.         humi_buf[2]='\0';
  27.         LCD_ShowString(55,80,tftlcd_data.width,tftlcd_data.height,16,humi_buf);               




  28.         for(t=0;t<SMOG_READ_TIMES;t++)
  29.         {
  30.                 temp_val+=Get_Adc(SMOG_ADC_CHX);        //读取ADC值
  31.                 delay_ms(5);
  32.         }
  33.         temp_val/=SMOG_READ_TIMES;//得到平均值
  34.         printf("Smog_ADC_Val:%d\r\n", temp_val);
  35.    // return (u16)temp_val;


  36. }

  37. int main()
  38. {
  39.         u8 i=0;
  40.         u16 adcx1,adcx2;
  41.         float temp;
  42.   delay_init();            //延时函数初始化         
  43.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应
  44.         SysTick_Init(72);
  45.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中断优先级分组 分2组
  46.         LED_Init();
  47.         USART1_Init(9600);
  48.         USART1_Init(115200);                 //串口初始化为115200
  49.         TFTLCD_Init();                        //LCD初始化
  50.         Smog_Init();
  51.         Adc_Init();                                  //ADC初始化

  52.         
  53.         LCD_Clear(BLACK);
  54.         
  55.         FRONT_COLOR=GREEN;
  56.         LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"      STM32F103ZET6");
  57.         LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"DHT11 Test");
  58.         LCD_ShowString(10,60,tftlcd_data.width,tftlcd_data.height,16,"Temp:   C");
  59.         LCD_ShowString(10,80,tftlcd_data.width,tftlcd_data.height,16,"Humi:   %RH");
  60.   
  61.         LCD_DrawLine( 0,  100, 279,  100);
  62.         
  63.         FRONT_COLOR=BLUE;//设置字体为蓝色
  64.         LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");              
  65.         LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");
  66.   LCD_ShowString(60,190,200,16,16,"ADC_CH0_VAL:");              
  67.         LCD_ShowString(60,210,200,16,16,"ADC_CH0_VOL:0.000V");
  68.         
  69.         FRONT_COLOR=RED;
  70.         
  71.         while(DHT11_Init())        //检测DHT-11是否存在
  72.         {
  73.                 LCD_ShowString(130,30,tftlcd_data.width,tftlcd_data.height,16,"Error   ");        
  74.                 delay_ms(500);               
  75.         }
  76.         LCD_ShowString(130,30,tftlcd_data.width,tftlcd_data.height,16,"Success");
  77.         
  78.         while(1)
  79.         {
  80.                
  81.                 i++;
  82.                 if(i%20==0)
  83.                 {
  84.                         led1=!led1;
  85.                         data_pros();           //读取一次DHT11数据最少要大于100ms
  86.                 }
  87.                
  88.                 delay_ms(10);
  89.                         
  90.         }
  91.         while(1)
  92.         {
  93.                 adcx1=Get_Adc_Average(ADC_Channel_10,10);
  94.                 LCD_ShowxNum(156,130,adcx1,4,16,0);//显示ADC的值
  95.                 temp=(float)adcx1*(3.3/4096);
  96.                 adcx1=temp;
  97.                 LCD_ShowxNum(156,150,adcx1,1,16,0);//显示电压值
  98.                 temp-=adcx1;
  99.                 temp*=1000;
  100.                 LCD_ShowxNum(172,150,temp,3,16,0X80);
  101.         
  102.         adcx2=Get_Adc_Average(ADC_Channel_11,10);
  103.                 LCD_ShowxNum(156,190,adcx2,4,16,0);//显示ADC的值
  104.                 temp=(float)adcx2*(3.3/4096);
  105.                 adcx2=temp;
  106.                 LCD_ShowxNum(156,210,adcx2,1,16,0);//显示电压值
  107.                 temp-=adcx2;
  108.                 temp*=1000;
  109.                 LCD_ShowxNum(172,210,temp,3,16,0X80);
  110.         
  111.                 delay_ms(250);        
  112.   }
  113. }
  114.         
复制代码

失败的程序,求大神帮助:
缺文件,不能编译.7z (179.73 KB, 下载次数: 90)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩2
回复

使用道具 举报

沙发
ID:558088 发表于 2019-11-22 19:45 | 只看该作者
下载的东西里面很多都空的
回复

使用道具 举报

板凳
ID:523117 发表于 2020-5-1 12:39 | 只看该作者
缺少很多头文件和源文件
回复

使用道具 举报

地板
ID:314410 发表于 2020-5-18 08:47 | 只看该作者
什么都没有,空空如也
回复

使用道具 举报

5#
ID:754532 发表于 2020-5-18 10:07 | 只看该作者
看了该帖子的很多评论,是不是楼主压载错数据包了
回复

使用道具 举报

6#
ID:516571 发表于 2020-10-29 10:51 | 只看该作者
yujingnihaoma 发表于 2020-5-18 10:07
看了该帖子的很多评论,是不是楼主压载错数据包了

可能是压缩包错了
回复

使用道具 举报

7#
ID:516571 发表于 2021-5-9 00:28 | 只看该作者
压缩文件确实是,后来核对源文件被误删了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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