找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 2445|回復(fù): 0
收起左側(cè)

stm32的溫濕度加pm2.5相冊(cè)的制作 附源程序

[復(fù)制鏈接]
ID:355312 發(fā)表于 2021-1-13 20:29 | 顯示全部樓層 |閱讀模式
可以實(shí)現(xiàn)溫濕度顯示pm2.5顯示可以根究外界亮度改變亮度可以更換flash內(nèi)的圖片

效果圖

效果圖

單片機(jī)源程序如下:
  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初始化函數(shù)
  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);//滴答定時(shí)器初始化
  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;//觸發(fā)開(kāi)啟溫度檢測(cè)
  182.                 htu=((HTU21DWork(0xf5)/(float)100));//觸發(fā)開(kāi)啟濕度檢測(cè)
  183.                 IWDG_ReloadCounter();
  184.         }
  185. }
復(fù)制代碼

所有資料51hei提供下載:
pcb工程.7z (2.23 MB, 下載次數(shù): 19)
溫濕度pm2.5.7z (200.85 KB, 下載次數(shù): 31)
其他資料.7z (4.66 MB, 下載次數(shù): 24)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表