【毕业设计】16-基于单片机的酒精浓度监测系统设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)
文章目录
【毕业设计】16-基于单片机的酒精浓度监测系统设计(原理图+仿真+源代码+实物图+答辩论文+答辩PPT)资料下载链接任务书设计说明书摘要设计框架架构设计说明书及设计文件源码展示资料下载链接
任务书
主要内容:
理解并掌握单片机的基本知识;了解STC89C52单片机的工作原理和基本结构;设计基于单片机的具有酒精浓度检测功能的电路;制作具有报警功能及LCD显示功能,根据不同的环境设定不同的浓度值,超过所允许浓度值时值,发出报警。
基本要求:
1、掌握STC89C52发展情况以及它的工作原理和基本构造。
2、主要研究电压到浓度的线性转换和最终浓度值的LCD显示,对设计的传感器进行了标定。
3、要求所设计的具有酒精浓度的测量,并对测量数据进行显示,同时利用液晶显示器简单显示浓度的高低,在高出允许值时发出报警。
资料链接
1.原理图工程
2.源代码工程
3.仿真工程
4.实物焊接过程图+实物图
5.论文(低重复率),22518字
6.答辩PPT
设计说明书
摘要
近年来,我国的经济在逐步上升,私家车数量也在逐渐增加,但是酒后驾驶行为屡禁不止,所导致的道路交通事故量逐年上涨。本文针对当前交通道路酒驾检测行为设计一款基于单片机的酒精浓度检测系统,用来检测酒精浓度,并可以通过调节系统的报警浓度,实现系统的检测及报警功能。本次设计系统选择使用STC89C52单片机,MQ-3气体传感器作为系统的酒精浓度检测传感器,ADC0832作为系统的模数转换器,LCD1602作为系统的液晶显示器。系统工作原理为,通过酒精浓度传感器将检测到的酒精浓度信号通过ADC0832,将模拟信号转换成为数字信号,通过单片机计算,通过系统将传感器输出信号通过模数转换电路处理后,再经由单片机进行数据处理,由LCD1602显示浓度值与阈值。
通过众多的实验证明,较于以前的酒精计或是机械检测设备,基于单片机的酒精检测设备更灵敏,检测精度更高,精准便捷,可靠性强,扩展简易,功能强大。对超出阀值的情况进行声光报警,直观精准。因此研究设计基于单片机的酒精检测系统是具有一定的价值。
设计框架架构
前 言 1
第一章 绪论 2
第一节 研究背景 2
第二节 国内研究情况 2
第三节 国外研究情况 3
第四节 本文的主要研究内容 3
第五节 本章小结 4
第二章 酒精浓度检测系统方案设计 5
第一节 系统功能分析 5
第二节 系统主要元器件选型 5
一、单片机选型 5
二、模数转换器选型 6
三、显示器选型 6
第三节 系统硬件总框图 7
第四节 本章小结 8
第三章 酒精浓度检测系统硬件电路设计 9
第一节 主控制器最小系统设计 9
第二节 电源模块设计 10
第三节 按键电路模块设计 11
第四节 LED显示模块电路设计 12
第五节 LCD液晶显示模块电路设计 12
第六节 酒精浓度检测模块电路设计 14
第七节 蜂鸣器报警模块电路设计 15
第八节 系统总电路图设计 16
第九节 本章小结 16
第四章 酒精浓度检测系统的软件设计 17
第一节 软件开发工具介绍 17
第二节 软件总架构设计 17
一、主程序设计流程 17
二、主程序源码 18
第三节 按键模块程序设计 19
一、按键程序设计流程 19
二、按键程序源码 20
第四节 LCD液晶显示模块程序设计 21
一、液晶显示模块程序设计流程 21
二、液晶显示程序源码 22
第五节 酒精浓度检测模块程序设计 23
一、酒精浓度检测程序设计流程 23
二、酒精浓度检测源码 24
第六节 蜂鸣器报警及LED模块程序设计 24
一、蜂鸣器及LED程序设计流程 24
二、蜂鸣器及LED程序源码 25
第七节 本章小结 26
第五章 酒精浓度检测系统的仿真实现 27
第一节 仿真开发工具介绍 27
第二节 仿真电路搭建及调试 27
第三节 系统仿真测试 28
第四节 本章小结 31
总 结 33
致 谢 34
参考文献 35
附 录 37
一、英文原文 37
二、英文翻译 40
三、工程图纸 44
四、源代码 45
设计说明书及设计文件
源码展示
/*此处的蜂鸣器是NPN型的*/#include "reg52.H"#include "1602.h"#include "ADC0832.h"#define uchar unsigned char#define uint unsigned int//#include "eeprom52.h"//声明常量#define ALCH 80 //报警值//K_MG_MV和K_ZERO为传感器校准系数,要根据每个MQ-3模块校准#define K_MG_MV 80/160 //传感器灵敏度系数#define K_ZERO20//传感器零点漂移//定义按键sbit Key_Up = P3^6;sbit Key_Down = P3^7;//定义LED报警灯sbit Led_Warn1 = P3^4;sbit Led_Warn2 = P3^5;sbit beep=P1^4; //蜂鸣器IO口//定义标识volatile bit FlagStartAL = 0; //开始转换标志volatile bit FlagKeyPress = 0; //有键弹起标志//全局变量定义uchar Threshold; //酒精浓度上限报警值uint ALCounter;//酒精转换计时器long ALValue; //酒精测量值float ALtemp;//计算临时变量uchar n;uint keyvalue, keyUp, keyDown; //键值char * pSave; //EEPROM存盘用指针//函数声明void Data_Init();void Timer0_Init();void Port_Init();void ADC_Init();uchar GetADVal();void KeyProcess(uint );void DELAY(unsigned int t){while(t!=0)t--;}//数据初始化void Data_Init(){ALCounter = 30;ALValue = 0;Led_Warn1 = 1;Led_Warn2 = 2;keyvalue = 0;keyUp = 1;keyDown = 1;}void di(){beep = 0;DELAY(500);beep = 1;}void Timer0_Init(){ET0 = 1; //允许定时器0中断TMOD = 0x01; //定时器工作方式选择TL0 = (65536-2000)%256;TH0 = (65536-2000)/256;//定时器赋予初值TR0 = 1; //启动定时器}//定时器0中断void Timer0_ISR (void) interrupt 1 using 0{TL0 = (65536-2000)%256;TH0 = (65536-2000)/256;//定时器赋予初值//每1秒钟启动一次AD转换ALCounter ++;if (ALCounter >= 500){FlagStartAL = 1;ALCounter = 0;}}