【TB作品】msp430g2553单片机,家用可燃气体监测报警器,MQ-2,MQ5,PWM风扇

本文主要是介绍【TB作品】msp430g2553单片机,家用可燃气体监测报警器,MQ-2,MQ5,PWM风扇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

功能

//家用可燃气体监测报警器
//硬件:MQ-2 MQ5 OLED 蜂鸣器 按键 风扇
//1 OLED显示天然气、液化气浓度
//2 OLED显示可燃气体报警临界值
//3 2个按键用于修改可燃气体报警临界值
//4 MQ2检测到的浓度或者MQ7检测到的浓度 高于临界值时,蜂鸣器报警+风扇打开

//line:
//mq2 vcc-3.3v gnd-gnd data-p6.0
//mq5 vcc-3.3v gnd-gnd data-p6.1
//oled vcc-3.3v gnd-gnd scl-p2.0 sda-p2.2
//buzzer vcc-3.3v gnd-gnd data-p3.6
//fan vcc-3.3v gnd-gnd data-p3.5
//key1-p1.1 key2-p2.1 nocare

部分程序


int main(void)
{unsigned char dis[10];unsigned char time_cyc = 0;int set_value = 50;  //设置临界值int adc_prec[4];  //adc结果的百分比结果WDTCTL = WDTPW + WDTHOLD; /* Stop WDT *//* 初始化显示 */OLED_Init(); /* OLED初始化 */OLED_ShowString(0, 0, "MQ-2:");OLED_ShowString(0, 2, "MQ-5:");OLED_ShowString(0, 4, " SET:");dis[0] = set_value % 100 / 10 + '0';dis[1] = set_value % 10 + '0';dis[2] = 37;                     //这表示百分号dis[3] = 0;OLED_ShowString(8 * 6, 4, dis);/*按键端口 */P1DIR &= ~BIT1;P1SEL &= ~BIT1;P1REN |= BIT1;P1OUT |= BIT1;P2DIR &= ~BIT1;P2SEL &= ~BIT1;P2REN |= BIT1;P2OUT |= BIT1;/* 风扇端口 P35 */P3DIR |= BIT5;/* 蜂鸣器端口P3.6  PWM 频率是(1MHZ/1000)   占空比是TBCCR6/TBCCR0 */P3SEL |= BIT6;                       // P3.5-7.6 option select_EINT();while (1){//显示MQ2 MQ5delay_ms(10);time_cyc = (time_cyc + 1) % 10;if (time_cyc == 1) /* 10 个10ms执行一次 */{adc_prec[0] = (int) ((float) (ADCresults[0]) * 1.0 / 4096.0 * 100); //结果转化成百分比dis[0] = adc_prec[0] % 100 / 10 + '0';dis[1] = adc_prec[0] % 10 + '0';dis[2] = 37;                     //这表示百分号dis[3] = 0;OLED_ShowString(8 * 6, 0, dis);//第一排显示MQ2adc_prec[1] = (int) ((float) (ADCresults[1]) * 1.0 / 4096.0 * 100); //结果转化成百分比dis[0] = adc_prec[1] % 100 / 10 + '0';dis[1] = adc_prec[1] % 10 + '0';dis[2] = 37;                     //这表示百分号dis[3] = 0;OLED_ShowString(8 * 6, 2, dis);//第一排显示MQ5}//按键1检测处理if (!(P1IN & BIT1)){while (!(P1IN & BIT1));if (set_value < 95)set_value += 1;                     //临界值加1adc_prec[0] = (int) ((float) (ADCresults[0]) * 1.0 / 4096.0 * 100); //结果转化成百分比dis[0] = set_value % 100 / 10 + '0';dis[1] = set_value % 10 + '0';dis[2] = 37;                     //这表示百分号dis[3] = 0;OLED_ShowString(8 * 6, 4, dis);}//按键2检测处理if (!(P2IN & BIT1)){while (!(P2IN & BIT1));if (set_value > 5)set_value -= 1;                     //临界值-1adc_prec[0] = (int) ((float) (ADCresults[0]) * 1.0 / 4096.0 * 100); //结果转化成百分比dis[0] = set_value % 100 / 10 + '0';dis[1] = set_value % 10 + '0';dis[2] = 37;                     //这表示百分号dis[3] = 0;OLED_ShowString(8 * 6, 4, dis);}//临界值判断if (adc_prec[0] > set_value || adc_prec[1] > set_value) //MQ2>临界值  或者 MQ7>临界值{TBCCR6 = 500; //打开蜂鸣器P3OUT &= ~BIT5;//打开风扇}else{TBCCR6 = 0; //关闭打开蜂鸣器P3OUT |= BIT5;//关闭风扇}}
}#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)
{switch (__even_in_range(ADC12IV, 34)){case 12:                                  // Vector 12:  ADC12IFG3ADCresults[0] = ADC12MEM0;         // Move A0 results, IFG is clearedADCresults[1] = ADC12MEM1;         // Move A1 results, IFG is clearedADCresults[2] = ADC12MEM2;         // Move A2 results, IFG is clearedADCresults[3] = ADC12MEM3;         // Move A3 results, IFG is cleareddefault:break;}
}

在这里插入图片描述

在这里插入图片描述

全部程序

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

这篇关于【TB作品】msp430g2553单片机,家用可燃气体监测报警器,MQ-2,MQ5,PWM风扇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1033308

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Linux的系统性能监测参数获取方法介绍

目前的工程需要简单的监测一下Linux系统的:CPU负载、内存消耗情况、几个指定目录的磁盘空间、磁盘I/O、swap的情况还有就是网络流量。   Linux下的性能检测工具其实都有很多。   mrtg(http://people.ee.ethz.ch/~oetiker/webtools/mrtg/)就是一个很不错的选择。不过用mrtg就要装sysstat、apache、snmp、pe

基于stm32的河流检测系统-单片机毕业设计

文章目录 前言资料获取设计介绍功能介绍具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机设计精品

VB和51单片机串口通信讲解(只针对VB部分)

标记:该篇文章全部搬自如下网址:http://www.crystalradio.cn/thread-321839-1-1.html,谢谢啦            里面关于中文接收的部分,大家可以好好学习下,题主也在研究中................... Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口

MCU5.51单片机的最小系统

1.最小系统的组成部分 晶振电路(时钟),复位电路,电源电路(控制电压,保持稳定),下载电路(外加的,用于烧录程序) 烧录: 通过下载电路,把程序下载到单片机中用于运行 2.晶振电路 电路图: 是晶振 是电容 为了防止晶振起振时产生影响,因此加电容 3.复位电路 电路图: 按按钮RSTK1(保持一段时间的高电平)即可实现STC芯片的复位 4.电源电路 电路图:

电子发射与气体导电

物理电磁学练习题:电子发射与气体导电 说明: 以下题目考察对电子发射和气体导电基本概念的理解和应用。 1. 解释以下概念:      (a) 热电子发射      (b) 光电效应      © 逸出功      (d) 等离子体 2. 比较并对比热电子发射和光电效应的异同。 3. 钨的逸出功为 4.5 eV。      (a) 计算能够从钨表面发射电子的最长波长光。      (b) 如

单片机XTAL引脚引出的晶振分析

51单片机的18,19脚XTAL1,XTAL2用来提供外部振荡源给片内的时钟电路。 XTAL1和XTAL2引脚,该单片机可以使用外部时钟也可以使用内部时钟。 当使用内部时钟时,此二引线端用于外接石英晶体和微调电容; 当使用外部时钟时,用于接外部时钟信号,NMOS接XTAL2,CMOS接XTAL1。 原理: XTAL1和XTAL2分别是一个反相器的输入和输出。NMOS的反相器是