可以实现温湿度显示pm2.5显示可以根究外界亮度改变亮度可以更换flash内的图片
单片机源程序如下:
- #include "stm32f10x.h"
- #include "stdio.h"
- #include "dida.h"
- #include "usar.h"
- #include "lcd.h"
- #include "HTU21D.H"
- #include "iic.h"
- #include "spi.h"
- #include "flash.h"
- #include "adc.h"
- #include "pwm.h"
- #include "iwdg.h"
- const u8 pm[]={"pm2.5:"};
- const u8 ug[]={"ug/m3"};
- extern u8 G,j;
- extern u8 cnt;
- u16 pmu;
- u8 j1,m;
- static float tem=-5,htu=0;
- static int data;
- int main()
- {
- adc_init();//adc-gpio初始化
- SPI_Flash_Init(); //SPI FLASH 初始化9g
- Lcd_Init(); //初始化OLED
- LCD_ShowPicture(0,0,239,239,0);
- TIM1_PWM_Init(4096,71);
- HTU21DInit();//HTU21D初始化函数
- usart_init(9600);//串口初始化
- LCD_ShowChinese(10,180,0,16,WHITE,1);
- LCD_ShowChinese(26,180,1,16,WHITE,1);
- LCD_ShowChar(42,180,':',1,WHITE);
-
- LCD_ShowChinese(10,200,2,16,WHITE,1);
- LCD_ShowChinese(26,200,3,16,WHITE,1);
- LCD_ShowChar(42,200,':',1,WHITE);
- LCD_ShowChinese(92,200,5,16,WHITE,1);
-
- LCD_ShowString(10,220,pm,WHITE);
- LCD_ShowString(92,220,ug,WHITE);
- didal_init(90000);//滴答定时器初始化
- iwdg_init(4,1500);//看门狗初始化
- while(1)
- {
- data=Get_Adc_Average(3,1);
- if(data<400)
- {
- TIM_SetCompare1(TIM1,(4096-data));
- }
- else
- {
- TIM_SetCompare1(TIM1,(4096-400));
- }
- if(j!=j1)
- {
- j1=j;
- LCD_ShowPicture(0,0,239,239,j);
- LCD_ShowChinese(10,180,0,16,WHITE,1);
- LCD_ShowChinese(26,180,1,16,WHITE,1);
- LCD_ShowChar(42,180,':',1,WHITE);
-
- LCD_ShowChinese(10,200,2,16,WHITE,1);
- LCD_ShowChinese(26,200,3,16,WHITE,1);
- LCD_ShowChar(42,200,':',1,WHITE);
- LCD_ShowChinese(92,200,5,16,WHITE,1);
-
- LCD_ShowString(10,220,pm,WHITE);
- LCD_ShowString(96,220,ug,WHITE);
- }
- if(G&&(j==j1))
- {
- G=0;
- if(tem>=0)
- {
- LCD_Fill1(50,180,114,196,j);
- LCD_ShowNum1(50,180,tem,4,WHITE);
- LCD_ShowChinese(92,180,4,16,WHITE,1);
- }
- else
- {
- LCD_Fill1(50,180,116,196,j);
- LCD_ShowChar(50,180,'-',1,WHITE);
- LCD_ShowNum1(58,180,tem,4,WHITE);
- LCD_ShowChinese(100,180,4,16,WHITE,1);
- }
- LCD_Fill1(50,200,90,216,j);
- LCD_ShowNum1(50,200,htu,4,WHITE);
- LCD_Fill1(58,216,88,234,j);
- LCD_ShowNum(58,220,pmu,4,WHITE);
- if(tem<20)
- {
- LCD_Fill1(160,180,224,196,j);
- LCD_ShowChinese(160,180,6,16,WHITE,1);
- LCD_ShowChinese(176,180,7,16,WHITE,1);
- LCD_ShowChinese(192,180,8,16,WHITE,1);
- LCD_ShowChinese(208,180,9,16,WHITE,1);
- }
- else if(tem>20&&tem<37)
- {
- LCD_Fill1(160,180,224,196,j);
- LCD_ShowChinese(160,180,10,16,WHITE,1);
- LCD_ShowChinese(176,180,11,16,WHITE,1);
- LCD_ShowChinese(192,180,12,16,WHITE,1);
- LCD_ShowChinese(208,180,13,16,WHITE,1);
- }
- else if((tem>37))
- {
- LCD_Fill1(160,180,224,196,j);
- LCD_ShowChinese(160,180,14,16,WHITE,1);
- LCD_ShowChinese(176,180,15,16,WHITE,1);
- LCD_ShowChinese(192,180,16,16,WHITE,1);
- LCD_ShowChinese(208,180,17,16,WHITE,1);
- }
- if(htu<45)
- {
- LCD_Fill1(160,200,224,216,j);
- LCD_ShowChinese(160,200,18,16,WHITE,1);
- LCD_ShowChinese(176,200,19,16,WHITE,1);
- LCD_ShowChinese(192,200,20,16,WHITE,1);
- LCD_ShowChinese(208,200,21,16,WHITE,1);
- }
- else if((htu>45)&&(htu<60))
- {
- LCD_Fill1(160,200,224,216,j);
- LCD_ShowChinese(160,200,10,16,WHITE,1);
- LCD_ShowChinese(176,200,11,16,WHITE,1);
- LCD_ShowChinese(192,200,12,16,WHITE,1);
- LCD_ShowChinese(208,200,13,16,WHITE,1);
- }
- else if(htu>60)
- {
- LCD_Fill1(160,200,224,216,j);
- LCD_ShowChinese(160,200,22,16,WHITE,1);
- LCD_ShowChinese(176,200,23,16,WHITE,1);
- LCD_ShowChinese(192,200,24,16,WHITE,1);
- LCD_ShowChinese(208,200,25,16,WHITE,1);
- }
- if(pmu<=50)
- {
- LCD_Fill1(160,220,224,236,j);
- LCD_ShowChinese(160,220,26,16,WHITE,1);
- }
- else if((pmu>50)&&(pmu<=100))
- {
- LCD_Fill1(160,220,224,236,j);
- LCD_ShowChinese(160,220,27,16,WHITE,1);
- }
- else if((pmu>100)&&(pmu<=150))
- {
- LCD_Fill1(160,220,224,236,j);
- LCD_ShowChinese(160,220,28,16,WHITE,1);
- LCD_ShowChinese(176,220,29,16,WHITE,1);
- LCD_ShowChinese(192,220,30,16,WHITE,1);
- LCD_ShowChinese(208,220,31,16,WHITE,1);
- }
- else if((pmu>150)&&(pmu<=200))
- {
- LCD_Fill1(160,220,224,236,j);
- LCD_ShowChinese(160,220,32,16,WHITE,1);
- LCD_ShowChinese(176,220,33,16,WHITE,1);
- LCD_ShowChinese(192,220,34,16,WHITE,1);
- LCD_ShowChinese(208,220,35,16,WHITE,1);
- }
- else if((pmu>200)&&(pmu<=300))
- {
- LCD_Fill1(160,220,224,236,j);
- LCD_ShowChinese(160,220,36,16,WHITE,1);
- LCD_ShowChinese(176,220,37,16,WHITE,1);
- LCD_ShowChinese(192,220,38,16,WHITE,1);
- LCD_ShowChinese(208,220,39,16,WHITE,1);
- }
- else if((pmu>300))
- {
- LCD_Fill1(160,220,224,236,j);
- LCD_ShowChinese(160,220,40,16,WHITE,1);
- LCD_ShowChinese(176,220,41,16,WHITE,1);
- LCD_ShowChinese(192,220,42,16,WHITE,1);
- LCD_ShowChinese(208,220,43,16,WHITE,1);
- }
- }
- tem=HTU21DWork(0xf3)/(float)100;//触发开启温度检测
- htu=((HTU21DWork(0xf5)/(float)100));//触发开启湿度检测
- IWDG_ReloadCounter();
- }
- }
复制代码
所有资料51hei提供下载:
pcb工程.7z
(2.23 MB, 下载次数: 19)
温湿度pm2.5.7z
(200.85 KB, 下载次数: 31)
其他资料.7z
(4.66 MB, 下载次数: 24)
|