完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
开始制作
没有电路图自己飞线接的。。。 使用ADC1的通道0、1;采集QM2或QM9的模拟信号 PA0,PA1 模拟I2C显示0.96寸液晶显示PA9,PA10 蜂鸣器使用低电平有效PB8 按键全部是低有效 大按键PB15 小按键PB4、PB5、PB6 探头供电5V,蜂鸣器供电3.3V 编写程序 main.c #include "delay.h" #include "sys.h" #include "adc.h" #include "key.h" #include "oled.h" #include "beep.h" #include "rtc.h" #include "bmp.h" u8 co; u8 yw; u8 moni[2]; u8 k1=0; u8 k2=0; u8 k3=0; u8 k4=0; u8 y=0; u8 t=0; u8 nian,yue,ri,shi,fen,miao; u16 temp; u8 timnum=0; u8 timdat_flang=0; u16 uu=0; u8 len=0; u8 lend=0; u8 boond=0; int main(void) { u16 ti=200; delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); key_init(); BEEP_Init(); ADC1_Init(); OLED_Init(); OLED_Clear(); while(RTC_Init()) //RTC初始化 ,一定要初始化成功 { OLED_ShowString(5,7,"RTC ERROR!",8); delay_ms(800); OLED_ShowString(6,7,"RTC Trying...",8); } OLED_ShowString(0,1,"Welcome to air !",8); delay_ms(1000); OLED_Clear(); OLED_ShowString(0,1,"Loading. ",8); delay_ms(1000); OLED_ShowString(0,1,"Loading.. ",8); delay_ms(1000); OLED_ShowString(0,1,"Loading...",8); delay_ms(1000); OLED_Clear(); OLED_ShowString(0,0,"MQ-2 Loading...",8); delay_ms(1000); OLED_ShowString(0,1,"MQ-9 Loading...",8); delay_ms(1000); OLED_ShowString(0,2,"Key Loading...",8); delay_ms(1000); OLED_ShowString(0,3,"Loading. ",8); delay_ms(1000); OLED_ShowString(0,3,"Loading.. ",8); delay_ms(1000); OLED_ShowString(0,3,"Loading...",8); delay_ms(1000); OLED_ShowString(0,4,"Welcome *_* ",8); delay_ms(1000); GPIO_ResetBits(GPIOB,GPIO_Pin_9); delay_ms(50); GPIO_SetBits(GPIOB,GPIO_Pin_9); OLED_Clear(); //shezhishijian(); OLED_ShowCHinese(0+11,0,0);// OLED_ShowCHinese(18+11,0,1);// OLED_ShowCHinese(36+11,0,2);// OLED_ShowCHinese(54+11,0,3);// OLED_ShowCHinese(72+11,0,4);// OLED_ShowCHinese(90+11,0,5);// OLED_ShowCHinese(0,3,10);// OLED_ShowCHinese(18,3,11);// OLED_ShowCHinese(36,3,12);// OLED_ShowCHinese(54,3,13);// OLED_ShowCHinese(72,3,14);// OLED_ShowCHinese(0,5,6);// OLED_ShowCHinese(18,5,7);// OLED_ShowCHinese(36,5,8);// OLED_ShowCHinese(54,5,9);// OLED_ShowCHinese(72,5,14);// OLED_ShowString(0,7,"MQ-2:",8); OLED_ShowString(68,7,"MQ-9:",8); OLED_ShowString(102,3,"PPb",16); OLED_ShowString(102,5,"PPb",16); PWR_BackupAccessCmd(ENABLE); temp=BKP_ReadBackupRegister(BKP_DR2); if(BKP_ReadBackupRegister(BKP_DR3)!=0x5555) { BKP_WriteBackupRegister(BKP_DR3,0x5555); co=80; yw=90; } else { co=(temp>>8)&0xff; yw=temp&0xff; } //OLED_DrawBMP(30,2,38,3,BMP2); while(1) { Get_ADC_dat(); KEY_Scan(); shijian(); if(t>100) { OLED_ShowNum(77,3,moni[0],3,16); OLED_ShowNum(77,5,moni[1],3,16); t=0; } t++; uu++; if(uu>65534) { y=0; uu=0; } if((moni[0]>co)|(moni[1]>yw)) { if(y==0) { while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_9); delay_ms(ti); GPIO_SetBits(GPIOB,GPIO_Pin_9); delay_ms(ti); KEY_Scan(); Get_ADC_dat(); OLED_ShowNum(37,7,co,3,14);OLED_ShowNum(105,7,yw,3,14); if((moni[0]>(co+20))|(moni[1]>(yw+20))) { ti=100; } else { ti=200; } OLED_ShowNum(77,3,moni[0],3,16); OLED_ShowNum(77,5,moni[1],3,16); if((moni[0] break; y=0; } if(k1==1) { y=1; k1=0; break; } } } } key_mode(); //****************************************** if((moni[0] y=0; k1=0; } k1=0; temp=co; temp<<=8; temp|=yw; PWR_BackupAccessCmd(ENABLE); BKP_WriteBackupRegister(BKP_DR2,temp); //BKP_DR1~BKP_DR42 } } 一顿瞎写,想提意见的下载附件源码 运行效果: 源码下载地址:STM32的一氧化碳检测报警装置 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1864浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:41 , Processed in 0.581050 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号