找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stm32的温湿度加pm2.5相册的制作 附源程序

[复制链接]
跳转到指定楼层
楼主
可以实现温湿度显示pm2.5显示可以根究外界亮度改变亮度可以更换flash内的图片

单片机源程序如下:
  1. #include "stm32f10x.h"
  2. #include "stdio.h"
  3. #include "dida.h"
  4. #include "usar.h"
  5. #include "lcd.h"
  6. #include "HTU21D.H"
  7. #include "iic.h"
  8. #include "spi.h"
  9. #include "flash.h"
  10. #include "adc.h"
  11. #include "pwm.h"
  12. #include "iwdg.h"
  13. const u8 pm[]={"pm2.5:"};
  14. const u8 ug[]={"ug/m3"};
  15. extern u8 G,j;
  16. extern u8 cnt;
  17. u16 pmu;
  18. u8 j1,m;
  19. static float tem=-5,htu=0;
  20. static int data;
  21. int main()
  22. {        
  23.         adc_init();//adc-gpio初始化
  24.         SPI_Flash_Init();                  //SPI FLASH 初始化9g
  25.         Lcd_Init();                        //初始化OLED
  26.         LCD_ShowPicture(0,0,239,239,0);
  27.         TIM1_PWM_Init(4096,71);
  28.         HTU21DInit();//HTU21D初始化函数
  29.         usart_init(9600);//串口初始化
  30.         LCD_ShowChinese(10,180,0,16,WHITE,1);
  31.         LCD_ShowChinese(26,180,1,16,WHITE,1);
  32.         LCD_ShowChar(42,180,':',1,WHITE);
  33.                                 
  34.         LCD_ShowChinese(10,200,2,16,WHITE,1);
  35.         LCD_ShowChinese(26,200,3,16,WHITE,1);
  36.         LCD_ShowChar(42,200,':',1,WHITE);
  37.         LCD_ShowChinese(92,200,5,16,WHITE,1);
  38.                                 
  39.         LCD_ShowString(10,220,pm,WHITE);
  40.         LCD_ShowString(92,220,ug,WHITE);
  41.         didal_init(90000);//滴答定时器初始化
  42.         iwdg_init(4,1500);//看门狗初始化
  43.         while(1)
  44.         {
  45.                 data=Get_Adc_Average(3,1);
  46.                 if(data<400)
  47.                 {
  48.                         TIM_SetCompare1(TIM1,(4096-data));
  49.                 }
  50.                 else
  51.                 {
  52.                         TIM_SetCompare1(TIM1,(4096-400));
  53.                 }
  54.                 if(j!=j1)
  55.                 {
  56.                         j1=j;
  57.                         LCD_ShowPicture(0,0,239,239,j);
  58.                         LCD_ShowChinese(10,180,0,16,WHITE,1);
  59.                         LCD_ShowChinese(26,180,1,16,WHITE,1);
  60.                         LCD_ShowChar(42,180,':',1,WHITE);
  61.                                 
  62.                         LCD_ShowChinese(10,200,2,16,WHITE,1);
  63.                         LCD_ShowChinese(26,200,3,16,WHITE,1);
  64.                         LCD_ShowChar(42,200,':',1,WHITE);
  65.                         LCD_ShowChinese(92,200,5,16,WHITE,1);
  66.                                 
  67.                         LCD_ShowString(10,220,pm,WHITE);
  68.                         LCD_ShowString(96,220,ug,WHITE);
  69.                 }
  70.                 if(G&&(j==j1))
  71.                 {
  72.                         G=0;
  73.                         if(tem>=0)
  74.                         {
  75.                                 LCD_Fill1(50,180,114,196,j);
  76.                                 LCD_ShowNum1(50,180,tem,4,WHITE);
  77.                                 LCD_ShowChinese(92,180,4,16,WHITE,1);
  78.                         }
  79.                         else
  80.                         {
  81.                                 LCD_Fill1(50,180,116,196,j);
  82.                                 LCD_ShowChar(50,180,'-',1,WHITE);
  83.                                 LCD_ShowNum1(58,180,tem,4,WHITE);
  84.                                 LCD_ShowChinese(100,180,4,16,WHITE,1);
  85.                         }
  86.                         LCD_Fill1(50,200,90,216,j);
  87.                         LCD_ShowNum1(50,200,htu,4,WHITE);
  88.                         LCD_Fill1(58,216,88,234,j);
  89.                         LCD_ShowNum(58,220,pmu,4,WHITE);
  90.                         if(tem<20)
  91.                         {
  92.                                 LCD_Fill1(160,180,224,196,j);
  93.                                 LCD_ShowChinese(160,180,6,16,WHITE,1);
  94.                                 LCD_ShowChinese(176,180,7,16,WHITE,1);
  95.                                 LCD_ShowChinese(192,180,8,16,WHITE,1);
  96.                                 LCD_ShowChinese(208,180,9,16,WHITE,1);
  97.                         }
  98.                         else if(tem>20&&tem<37)
  99.                         {
  100.                                 LCD_Fill1(160,180,224,196,j);
  101.                                 LCD_ShowChinese(160,180,10,16,WHITE,1);
  102.                                 LCD_ShowChinese(176,180,11,16,WHITE,1);
  103.                                 LCD_ShowChinese(192,180,12,16,WHITE,1);
  104.                                 LCD_ShowChinese(208,180,13,16,WHITE,1);
  105.                         }
  106.                         else if((tem>37))
  107.                         {
  108.                                 LCD_Fill1(160,180,224,196,j);
  109.                                 LCD_ShowChinese(160,180,14,16,WHITE,1);
  110.                                 LCD_ShowChinese(176,180,15,16,WHITE,1);
  111.                                 LCD_ShowChinese(192,180,16,16,WHITE,1);
  112.                                 LCD_ShowChinese(208,180,17,16,WHITE,1);
  113.                         }
  114.                         if(htu<45)
  115.                         {
  116.                                 LCD_Fill1(160,200,224,216,j);
  117.                                 LCD_ShowChinese(160,200,18,16,WHITE,1);
  118.                                 LCD_ShowChinese(176,200,19,16,WHITE,1);
  119.                                 LCD_ShowChinese(192,200,20,16,WHITE,1);
  120.                                 LCD_ShowChinese(208,200,21,16,WHITE,1);
  121.                         }
  122.                         else if((htu>45)&&(htu<60))
  123.                         {
  124.                                 LCD_Fill1(160,200,224,216,j);
  125.                                 LCD_ShowChinese(160,200,10,16,WHITE,1);
  126.                                 LCD_ShowChinese(176,200,11,16,WHITE,1);
  127.                                 LCD_ShowChinese(192,200,12,16,WHITE,1);
  128.                                 LCD_ShowChinese(208,200,13,16,WHITE,1);
  129.                         }
  130.                         else if(htu>60)
  131.                         {
  132.                                 LCD_Fill1(160,200,224,216,j);
  133.                                 LCD_ShowChinese(160,200,22,16,WHITE,1);
  134.                                 LCD_ShowChinese(176,200,23,16,WHITE,1);
  135.                                 LCD_ShowChinese(192,200,24,16,WHITE,1);
  136.                                 LCD_ShowChinese(208,200,25,16,WHITE,1);
  137.                         }
  138.                         if(pmu<=50)
  139.                         {
  140.                                 LCD_Fill1(160,220,224,236,j);
  141.                                 LCD_ShowChinese(160,220,26,16,WHITE,1);
  142.                         }
  143.                         else if((pmu>50)&&(pmu<=100))
  144.                         {
  145.                                 LCD_Fill1(160,220,224,236,j);
  146.                                 LCD_ShowChinese(160,220,27,16,WHITE,1);
  147.                         }
  148.                         else if((pmu>100)&&(pmu<=150))
  149.                         {
  150.                                 LCD_Fill1(160,220,224,236,j);
  151.                                 LCD_ShowChinese(160,220,28,16,WHITE,1);
  152.                                 LCD_ShowChinese(176,220,29,16,WHITE,1);
  153.                                 LCD_ShowChinese(192,220,30,16,WHITE,1);
  154.                                 LCD_ShowChinese(208,220,31,16,WHITE,1);
  155.                         }
  156.                         else if((pmu>150)&&(pmu<=200))
  157.                         {
  158.                                 LCD_Fill1(160,220,224,236,j);
  159.                                 LCD_ShowChinese(160,220,32,16,WHITE,1);
  160.                                 LCD_ShowChinese(176,220,33,16,WHITE,1);
  161.                                 LCD_ShowChinese(192,220,34,16,WHITE,1);
  162.                                 LCD_ShowChinese(208,220,35,16,WHITE,1);
  163.                         }
  164.                         else if((pmu>200)&&(pmu<=300))
  165.                         {
  166.                                 LCD_Fill1(160,220,224,236,j);
  167.                                 LCD_ShowChinese(160,220,36,16,WHITE,1);
  168.                                 LCD_ShowChinese(176,220,37,16,WHITE,1);
  169.                                 LCD_ShowChinese(192,220,38,16,WHITE,1);
  170.                                 LCD_ShowChinese(208,220,39,16,WHITE,1);
  171.                         }
  172.                         else if((pmu>300))
  173.                         {
  174.                                 LCD_Fill1(160,220,224,236,j);
  175.                                 LCD_ShowChinese(160,220,40,16,WHITE,1);
  176.                                 LCD_ShowChinese(176,220,41,16,WHITE,1);
  177.                                 LCD_ShowChinese(192,220,42,16,WHITE,1);
  178.                                 LCD_ShowChinese(208,220,43,16,WHITE,1);
  179.                         }
  180.                 }
  181.                 tem=HTU21DWork(0xf3)/(float)100;//触发开启温度检测
  182.                 htu=((HTU21DWork(0xf5)/(float)100));//触发开启湿度检测
  183.                 IWDG_ReloadCounter();
  184.         }
  185. }
复制代码

所有资料51hei提供下载:
pcb工程.7z (2.23 MB, 下载次数: 17)
温湿度pm2.5.7z (200.85 KB, 下载次数: 29)
其他资料.7z (4.66 MB, 下载次数: 22)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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