基于单片机的酒精浓度测试的设计与研究毕业设计

上传人:痛*** 文档编号:71265027 上传时间:2022-04-06 格式:DOC 页数:42 大小:446KB
返回 下载 相关 举报
基于单片机的酒精浓度测试的设计与研究毕业设计_第1页
第1页 / 共42页
基于单片机的酒精浓度测试的设计与研究毕业设计_第2页
第2页 / 共42页
基于单片机的酒精浓度测试的设计与研究毕业设计_第3页
第3页 / 共42页
点击查看更多>>
资源描述
毕 业 设 计设计题目:基于单片机的酒精浓度测试的设计与研究 系 别: 信息工程系 班 级: 电子信息工程 基于单片机的酒精浓度测试的设计与研究摘 要对于人体内酒精浓度的高低的判断主要依据于人酒后所呼出的气体中酒精浓度的高低做出适当的判断。随着经济的发展,人民生活水平的提高,酒后驾驶所造成的交通事故频频发生。为防止此类事故的发生,交通执法者检测驾驶员是否酒后驾驶尤为重要。本文设计了一个基于单片机的酒精浓度检测报警系统,单片机作为主控芯片。MQK2酒精传感器将检测到的信息发送至芯片和设定的阈值比较后判断是否报警,若报警GSM模块实现了将报警信号发送至手机端,同时在液晶显示屏上显示测量结果。本次设计的检测装置将89c51作为主要控制芯片、MQ302A 酒精传感器、AD0804 转换器、AT89C51 单片机控制器、声光报警、LCD1602 显示器、GSM模块等构成 。文中对酒精浓度检测的原理做出具体的分析和设计方案,对各个子模块进行了论证和比较。硬件设计采用Protel DXP软件,完成了各个模块的原理图设计。软件设计采用KeilB编程软件,实现了对酒精浓度信号处理过程的编程和调试。关键字:单片机 酒精浓度传感器 LCD1602 GSM模块 声光报警Design And Research Of The Alcohol Concentration Test Based On MCUAbstractMake a proper judgment on the alcohol concentration of alcohol concentration to determine the main basis to drunk the exhaled gas in the level of. With the development of economy, peoples living standards improve, drunken driving caused by traffic accidents happen frequently. To prevent this kind of accident, traffic law enforcement detect whether the driver drunk driving is particularly important.This paper describes the design of an alarm system for detecting alcohol concentration based on single-chip microcomputer, microcontroller as the main control chip. MQK2 alcohol sensor will detect the information sent to the chip and the set threshold comparison to determine whether the alarm, the alarm GSM module to achieve the alarm signal will be sent to the mobile phone terminal, at the same time, the measured results are displayed on the LCD screen.The detection device design will form the 89C51 as the main control chip, MQ302A alcohol sensor, AD0804 converter, AT89C51 controller, alarm, LCD1602 display, GSM module etc. Principle of alcohol concentration detection in this paper makes the analysis and the specific design of each module, are discussed and compared. The hardware design using Protel DXP software, completed the design of each module principle diagram. Software design using Keil uVision2, the realization of signal processing of alcohol concentration during programming and debugging.Keywords: SCM alcohol concentration sensor LCD1602 GSM module sound-light alarm目 录1 引言12 系统总体方案设计22.1 总体设计思路分析22.2 总体设计框图分析23 系统硬件设计43.1STC89C5A60S2单片机电路设计43.1.1.STC89C5A60S2单片机特性概述43.1.2 STC89C5A60S2引脚功能43.1.3 晶振电路53.1.4 复位电路63.2 酒精浓度模块设计73.2.1 酒精浓度传感器MQ3的特点73.2.2 A/D 转换电路83.2.3 MAX3232电路93.3 液晶显示器LCD160293.3.1 LCD1602介绍93.3.2 系统LCD1602显示说明103.4通信模块设计113.4.1 GSM模块介绍123.5 按键键盘设计123.5.1按键键盘说明123.5.2 按键电路设计123.6 报警电路设计123.6.1蜂鸣器说明123.6.2发光二极管说明133.6.3声光报警电路134 系统软件设计144.1 软件设计概述144.1.1 Keil软件介绍144.2 系统软件设计144.2.1 主程序流程图144.2.2 酒精浓度检测子程序154.2.3 LCD显示子程序154.2.4 无线通信子程序164.2.5 报警子程序204.2.5 串行口子程序215 硬件焊接及调试235.1 概要说明235.1.1硬件焊接235.1.2 软件调试235.1.3 软硬联调235.2 调试中出现的问题及解决方法246 结论25谢辞26参考文献27附录281 引言近年来,随着我国经济的高速发展,人民的生活水平迅速提高,越来越多的人有了私家车,伴随而来的酒后驾车造成的交通事故也频频发生。酒后驾车引起的交通事故是由于司机的过量饮酒造成人体内酒精浓度过高,麻痹神经,造成大脑反应迟缓,肢体不受控制等造成的。多年前交通管理者判定驾驶人员是否有饮酒只能靠主观判断、肉眼的观察和去医院进行血液中酒精含量的检测,这些不科学不及时的方法造成了很多不必要的误会和麻烦;而现在伴随着科技的发展酒精浓度测试仪已经基本装备了交通管理者的队伍。为此,需要设计一款便携式仪器能够监测驾驶员体内酒精含量。本毕业设计通过对酒精浓度测试的研究和设计,使学生认识了解单片机对数据采集分析的过程、方法与步骤,提高并巩固学生所学的理论知识,结合课题的需要提高学生获取新知识的能力。使学生能掌握单片机基本使用方法。力求使学生在收集资料,查阅文献,调查研究,方案设计,外文应用,计算机处理,撰文论证,文字表达等方面加强训练,实现所学知识向能力的转化。能够熟练使用设计所依赖的开发平台。本文所述酒精浓度测试仪采用MQK2酒精浓度传感器检测人呼出气体中酒精的浓度并且输出电压信号,然后把信号输出到高集成度的混合集成芯片C8051F040作处理,并完成数据采集、判断处理、数据的传输等功能。测试仪进行气体测试的基本步骤是:单片机采集酒精传感器的响应信号,并且进行转换,储存在数据存储器(SRAM)中,然后单片机进行气体浓度的识别,并且将结果输出到液晶显示屏上,同时可发出浓度阈值的光(声)警报信号也可通过网络将警报发送至手机。2 系统总体方案设计2.1 总体设计思路分析本文所述的酒精浓度测试仪分为硬件部分和软件部分。其中硬件部分利用MQ3气敏传感器采集空气中酒精的浓度,并转换为电压信号经 A/D 转换后传给单片机系统,由单片机及其外围电路进行信号的处理,显示浓度值以及超阈值声光报警;并且将报警信号经过GSM模块发送至所设定的手机。软件设计采用C语言编程,程序采用模块化设计思想。各个子程序的功能相对独立,便于调试和修改。而硬件电路又大体可分为单片机小系统电路、A/D 转换电路、声光报警电路、LED显示电路,GSM模块电路,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使C语言编程。2.2 总体设计框图分析本文的总体设计框图如下:酒精传感器显示语音报警A/D转换单片机GSM模块网络手机图2-1 系统总体设计框图各模块说明功能如下:1.MQ3酒精浓度传感器是一种检测装置对乙醇蒸汽有很高的灵敏度和良好的选择性。经过MQ3检测空气中的酒精浓度后,检测值经过数模转换器传送至单片机,经过单片机处理与所设定的阈值进行比较,判断是否报警。2.显示部分是将采集到的酒精浓度进行显示。本设计采用LCD1602显示屏对采集到的数据进行显示的。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,完全可以满足对温湿度的显示。3.本设计为了更加便于使用,相比于普通的酒精浓度测试仪增加了GSM模块。当单片机判断所检测到的酒精浓度超出所设定的阈值时,发出声光报警的同时并将报警信号发送至提前设定好的手机。4. STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代51单片机。指令代码完全兼容传统的51单片机,但是速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换。5.GSM模块内有GSM射频芯片、系带处理芯片、存储器、功放器件等。能够发送手机短信。6. .设定值由接收端的按键控制,其中一个为设置键,另有两个按键控制设定值的加减,比较报警选用蜂鸣器和LED电路表示报警信号。3 系统硬件设计3.1STC89C5A60S2单片机电路设计3.1.1.STC89C5A60S2单片机特性概述STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代51单片机。指令代码完全兼容传统的51单片机,但是速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换。增强型8051 CPU,1T,单时钟/机器周期,工作频率范围:0 - 35MHz,相当于普通8051的 0420MHz,片上集成1280字节RAM,有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM),内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);工作温度范围:-40 - +85(工业级) / 0 - 75(商业级)21。封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通I/O口线外接 74HC164/165/595(均可级联)来扩展I/O口, 还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。3.1.2 STC89C5A60S2引脚功能1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051。2.工作电压:STC12C5A60S2系列工作电压:5.5V- 3.3V(5V单片机)。TC12LE5A60S2系列工作电压:3.6V- 2.2V(3V单片机)。3.工作频率范围:0 - 35MHz,相当于普通8051的 0420MHz。4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节.5.片上集成1280字节RAM。6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口) 可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏 每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55mA。7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)。10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)。11.外部掉电检测电路:在P4.6口有一个低压门槛比较器,5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3%。12.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟 常温下内部R/C振荡器频率为:5.0V单片机为:11MHz15.5MHz,3.3V单片机为:8MHz12MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准。13.共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器,做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。14. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟。15.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,Power Down模式可由外部中断唤醒,INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2 ),CCP1/P1.4 (也可通过寄存器设置到P4.3)。16. PWM(2路)/PCA(可编程计数器阵列,2路),也可用来当2路D/A使用 -也可用来再实现2个定时器,也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)。17.A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)18.通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口。19. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3)。20.工作温度范围:-40 - +85(工业级) / 0 - 75(商业级)21.封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通I/O口线外接 74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。3.1.3 晶振电路晶振是石英振荡器的简称,它是时钟电路中最重要的部件,它的主要作用是向显卡、网卡、主板等配件的各部分提供基准频率,它就像个标尺,工作频率不稳定会造成相关设备工作频率不稳定,自然容易出现问题。STC89C52片内有一个高增益反相放大器,其输入端(XTAL1)和输出端(XTAL2)用于外接石英晶体和微调电容,构成振荡器,如图3-2所示:电容C3和C4对频率有微调作用,电容的选择范围一般为1.212MHz,晶振频率越快,单片机指令周期越短,运行越快。内部时钟信号由振荡器输出的振荡脉冲经2分频得到,用来控制单片机内部各功能部件按照顺序协调工作,其周期称为时钟周期。一个机器周期由6个时钟周期构成,指令周期以机器周期为单位,所以晶振频率越快,单片机指令周期越短,运行越快。本设计晶振选择频率为11.0529MHz,电容选择30pF。经计算得单片机工作机器周期约为:1s。3.1.4 复位电路为确保单片机系统稳定可靠工作,复位电路是必可少的一部分,复位电路的第一功能是上电复位。所谓上电复位,是指在计算机上电瞬间,要在RST引脚上产生宽度大于10ms的正脉冲,使计算机进入复位状态。等待系统电源稳定后,复位信号停止。当系统在工作中受到干扰后,容易出现程序“跑飞”而盲目运行甚至出现死机现象。此时复位信号有效,使微机系统重新恢复正常运行。目前为止,单片机复位电路主要有四种类型:1.微分型复位电路;2.积分型复位电路;3.比较器型复位电路;4.看门狗型复位电路7。在本设计中,当电源VCC上电时,因电容C3两端电压不能突变,所以RES 在上电时会有一段时间为高电平,电容中的电流越来越小,R1上的电压就越来越小,呈指数变化。过一段时间后,电容逐渐充电完毕,RST端恢复高电平,复位有效。持续一段时间后,复位撤除,微机开始工作。该电路具有结构简单、实用等优点。本设计采用按键结合上电复位,当电源连接后,按下按键则系统复位,单片机程序从头开始执行,具体的复位电路如图3-3所示: 3.2 酒精浓度模块设计3.2.1 酒精浓度传感器MQ3的特点MQ3酒精浓度传感器是一种检测装置对乙醇蒸汽有很高的灵敏度和良好的选择性,快速的反应和恢复速度,长期的寿命和可靠的性能,并且所需要的驱动电路简单。MQ3酒精浓度传感器的探测浓度范围为:0.01mg/L-10mg/L。适合用于检测机动车驾驶员是否为酒后驾驶;也可用于其他场合乙醇浓度的检测。MQ3 型气敏传感器由微型Al2O3、陶瓷管和SnO2 敏感层、测量电极和加热器构成的敏感元件固定在塑料或者不锈钢的腔体内,加热器为气敏元件的工作提供了必要的工作条件。传感器的标准回路有两部分组成:其一为加热回路;其二为信号输出回路,它可以准确反映传感器表面电阻的变化。传感器表面电阻RS 的变化,是通过与其串联的负载电阻RL 上的有效电压信号VRL 出面获得的。二者之间的关系表述为:RS/RL=(VCVRL)/VRL,其中VC 为回路电压,10V。负载电阻RL 可调为0.5200K,加热电压Uh 为5V。MQ3 的结构和外形MQ3标准回路 传感器阻值变化率与酒精浓度、外界温度之间的关系为了更好地使用酒精传感器MQ3,现将MQ3 的标准工作条件和环境条件进行介绍,如表一和表二所示。表一标准工作条件表二酒精传感器MQ3 的环境条件3.2.2 A/D 转换电路 在单片机应用系统中,被测量对象的有关变化量,如温度、压力、流量、速度等非电物理量,须经传感器转换成连续变化的模拟电信号(电压或电流),这些模拟电信号必须转换成数字量后才能在单片机中用软件进行处理。实现模拟量转换成数字量的器件称为 A/D 转换器(ADC)。A/D 转换器大致分有三类:一是双积分 A/D 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式 A/D 转换器,精度、速度、价格适中;三是并行 A/D 转换器,速度快,价格也昂贵。本设计中采用的A/D 转换器是STC12C5A60S2单片机内部所带的A/D 转换器。此单片机A/D转换为10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)。3.2.3 MAX3232电路 MAX3232收发器采用专有的低压差发送器输出级,具有一个完整的串口(3路驱动器/5路接收器)。利用双电荷泵在3.0V至5.5V电源供电时能够实现真正的RS-232性能。器件仅需四个0.1F的外部小尺寸电荷泵电容。MAX3222确保在120kbps数据速率下维持RS-232输出电平。MAX3232具有2路接收器和2路驱动器。MAX3232电路如下图所示:MAX323电路3.3 液晶显示器LCD16023.3.1 LCD1602介绍LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,不带背光的比带背光的薄,在应用中是否带背光并无差别。LCD1602的主要技术参数:1.显示容量:一行16个字符,共32字符;2.芯片工作电压:4.55.5V;3.芯片工作电流:2.0mA(5.0V);4.模块最佳工作电压:+5V;5.每个字符尺寸:2.954.35mmLCD1602液晶模块内部的控制器共有11条控制指令,分别为:指令1:清屏。指令码0x01H,光标复位到0x00H这个地址的位置。指令2:光标复位。光变应该回到地址0x00H。指令3:设置输入模式。I/D:它表示光标应该移动的方向,高电平的时候右移,低电平的时候左移;S:它控制屏幕上所有的文字方向是左移或右移,高电平有效,而低电平此位无效。指令4:用于显示的开关控制。D:它表示整体的显示开与关,高电平时显示为开,低电平时显示为关;C:它表示了光标开与关,有光标时是高电平,无光标时是低电平。 B:它表示光标的闪烁,闪烁时高电平,不闪烁时低电平。指令5:光标以及显示的移位。S/C:若移动显示的文字则是高电平,若移动光标则是低电平;R/L:右移时高电平,左移时低电平。指令6:设置功能的命令。D/L:4位总线时高电平,8位总线时低电平;D:高电平时,双行显示,低电平时,单行显示;F:若为高电平,则显示510,若为低电平,则显示57。指令7:设置RAM的地址。指令8:设置DDRAM的地址。指令9:读光标地址以及忙信号。BF:为忙标志位,忙的时候是高电平,这时其不收命令或数据,不忙的时候是低电平。指令10:写数据。指令11:读数据。3.3.2 系统LCD1602显示说明LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,本设计选用16引脚的带背光接口,LCD1602引脚接口说明如表3-2所示:表3-2 LCD1602引脚接口说明 编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令控制12D5数据5R/W读/写控制13D6数据6E使能信号14D7数据7D0数据15BLA背光源电源端8D1数据16BLK背光源接地端在该设计系统中,单片机将DHT11温湿度传感器送入的40位数据按照5个8位字节存入不同的变量中,然后通过变换形式转换为字符形式在LCD1602上显示。本设计中LCD1602与单片机连接图如图3-5所示:图3-5 LCD1602显示电路从图中可以看出:1引脚为接地端,与单片机的地相连;2引脚接+5V电源,连接单片机的+5V电源;3引脚为液晶显示偏压,连接一个最大阻值为10K的电位器,通过调节电位器的阻值可以调节液晶屏的显示清晰度,使酒精浓度的数值清晰地显示在液晶屏上;4引脚RS为寄存器选择,为高电平时选择数据寄存器,低电平时选择指令寄存器,设计时RS接单片机的P2.0引脚,通过程序对其状态进行控制;5引脚RW为读/写信号选择线,为高电平时进行读操作,低电平时进行写操作,设计时RW接单片机的P2.1引脚,通过编程控制其状态变化;6引脚E(或EN)端为模块使能控制端,编程时结合RS和RW控制液晶屏完成显示任务,硬件连接时接单片机的P2.2引脚;714脚P0P7为8位双向数据端,和单片机的P0口相连,程序中对LCD1602进行写命令和写数据都通过这8个数据端进行传输;15脚为背光源正极,必须和电源的正极相连;16脚为背光源负极,必须和电源的负极相连。在使用液晶模块之前要先进行初始化,首先要设置其显示模式,在液晶模块显示字符时光标是自动右移的,不需要重新设置。在每次输入指令前都要判断液晶模块是否处于忙的状态。3.4通信模块设计随着科学技术的不断发展,无线通信已经渗透到人们的生活,工作,和学习当中。在智能家居、车辆监控防盗、机器人控制、无线抄表、门禁系统、工业数据采集系统等方面都广泛的使用无线传输模块。现今无线通信技术已经十分成熟,无线通信模块可以实现短时间、长距离、低功耗、高灵敏度、抗干扰性、高集成度,从而节省了人力、物力,并且还能进行实时监测,及时处理现场突发状况。因此本设计选用无线传输模块GSM模块作为酒精浓度测试的通信模块。3.4.1 GSM模块介绍GSM模块是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块电路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。因此,GSM模块具有发送SMS短信,语音通话,GPRS数据传输等基于GSM网络进行通信的所有基本功能。简单来讲,GSM模块加上键盘、显示屏和电池,就是一部手机。在本设计中单片机处理的数据经过MAX3232处理后经过串口将报警数据传输到GSM模块,然后GSM模块将报警信号发送至所设定的手机终端。3.5 按键键盘设计3.5.1按键键盘说明按键是单片机系统中常用的信息输入部件,同时也是人机对话中不可缺少的输入设备。在和单片机构成系统时,按键通常有两种接法,一种叫独立式按键,另一种叫矩阵式按键。用口线较多时,可以将键盘接成矩阵的形式,这种形式节省口线。本设计中采用的是独立式按键。3.5.2 按键电路设计本设计中的按键主要完成对酒精浓度阈值的设定。其电路图如下:按键图 本设计中,S1按键为对酒精浓度控制的选择键,S2和S3酒精浓度的调节键,S2控制设定值的增加,S3控制酒精浓度的减小。3.6 报警电路设计3.6.1蜂鸣器说明蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、定时器等电子产品中作发声器件。蜂鸣器分为有源与无源两种。有源蜂鸣器直接接额定电源就可连续发声,而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声。有源蜂鸣器和无源蜂鸣器的主要差别是对输入信号的要求不一样,有源蜂鸣器工作的理想信号是直流电,无源蜂鸣器工作的理想信号是方波。无源蜂鸣器接直流电是不会工作的。本设计采用一个有源蜂鸣器进行声音报警。3.6.2发光二极管说明50年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于1960LED是英文light emitting diode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部电路的效果,所以LED的抗震性能很好。发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。 当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。3.6.3声光报警电路 本设计中采用的是声光同事报警,在采集到的酒精浓度的值超过报警值时,电路同事发出声光报警信号。声光报警电路如下图:声光报警电路 由上图可以看出,蜂鸣器通过一个PNP型三极管放大连接。三极管选择9012型三极管,它的发射极直接连接+5V电源,基极通过1K的电阻和单片机的P2.3引脚相连,集电极连接蜂鸣器的正极,蜂鸣器的负极接地。发光二极管的样机与单片机的P1.6引脚相连,阴极接一个1K的电阻与放大器的发射极相连同事接在+5V的电源上,电路的主要作用是用9012三极管将基极电流放大以驱动蜂鸣器和发光二极管工作。工作过程为:当酒精浓度值大于设定的上限值,程序会将对应三极管基极连接的单片机引脚置为低电平,这样三极管就可以驱动蜂鸣器和发光二极管工作,发出声光报警。4 系统软件设计4.1 软件设计概述系统软件设计是整个控制器系统设计至关重要的组成部分,软件部分设计的好坏,直接关系到整个系统功能实现和运行的可靠性。随着计算机技术的不断进步,计算机程序设计也在不断向前发展,用来描述程序的语言也在不断地进步完善,程序设计语言也从初期的机器语言到用符号表示的汇编语言以至发展到高级语言。在设计过程中,人们也开始摆脱进行程序设计必须先熟悉机器内部结构的桎梏,把精力集中于解决思路和方法上。本设计使用Keil软件开发平台。发送端、接收端和通信设备使用C语言编程实现 。4.1.1 Keil软件介绍随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil C51软件是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为uVision2 (通常称为uV2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案。 利用Keil软件编程流程:(1)建立一个新工程:单击Project菜单,在弹出的下拉菜单中选中New Project选项;(2)选择单片机的型号,根据所使用的单片机来选择,本设计所使用的是STC89C52,选择STC89C52之后,然后点击确定设置工程的配置参数,选中创建HEX文件;(3)打开/建立程序文件。创建的文件用*.c形式保存;(4)编译和连接工程。在进行编译和链接前,需要将创建的源代码文件添加到工程中,在Source Group1处单击右键然后点add group.;(5)纠正程序中的书写和语法错误并重新编译连接。在编译窗口中把需要编译的程序输入,然后点编译按钮,即可对所写程序编译。4.2 系统软件设计系统的软件设计分为C语言程序。C语言编写的程序又由主程序流程和子程序流程组成,子程序流程分为:酒精浓度检测子程序,LCD显示子程序,无线通信子程序,按键设定上限值子程序和串行子程序。4.2.1 主程序流程图本设计发送端与接收端分别使用一个单片机作为控制芯片,发送端主程序包括酒精浓度检测子程序、显示子程序、无线通信子程序的初始化声明,以及将各子程序联系起来共同完成发送端的所有功能;接收端主程序包括无线接收子程序、按键设定上限值、串口子程序的初始化声明及各子程序联系。发送端和接收端主流程图如图4-1所示:开始酒精浓度检测子程序无线通信子程序显示子程序发送子程序各部分初始化开始GSM初始化接收数据子程序调用串口子程序串口初始化上下限设定子程序报警子程序图4-1发送端与接收端主流程图4.2.2 酒精浓度检测子程序数据采集子程序主要是采集检测传感器输出的模拟电压信号,并将其转换为单片机程序控制所需的数字量信号。首先对AD转换器进行初始化,然后将其0通道输入的0-5V的模拟信号转换为对应的数字量OOH-FFH,然后将对应数值存储到3FH内存单元。4.2.3 LCD显示子程序系统采用LCD1602液晶显示模块作为温湿度的显示器件。在对LCD1602编程时,首先需要对其初始化,测试LCD1602是否处在忙碌状态,若忙碌则等待到空闲时间,检测到空闲时对其进行写控制指令。初始化完成后可以在指定的地址上显示相应的数据。由于LCD1602自带字母字符库和数字字符库,因此可以直接可以在程序中写字母和数字字符。显示子程序流程图如下图4-3所示:子程序入口LCD是否忙碌?YNLCD1602初始化调用显示程序返回主程序图4-3显示子程序流程图LCD初始化程序如下:void LCD_Init(void)LCD_EN=0;/LCD_WriteCmd(CMD_CLEAR_SCREEN);/_nop_();LCD_WriteCmd(CMD_WORK_MODE);_nop_();/LCD_WriteCmd(CMD_HOME);/_nop_();LCD_WriteCmd(CMD_INPUT_MODE3);_nop_();LCD_WriteCmd(CMD_DISPLAY_MODE1);_nop_();LCD_WriteCmd(CMD_DDRAM_ADDR);4.2.4 无线通信子程序 本设计中采用GSM模块作为通信模块,将报警信号发送至提前设定好的手机终端。而且所要报警的手机号码可以通过发送短信的方式进行更改。其主程序如下:#include gsm.hextern unsigned char uart1_busy;unsigned char ct=0;unsigned char xdata gsm_buffer120;void delay_ms(unsigned char ms)unsigned int j;for(ms;ms0;ms-)for(j=110*12;j0;j-);void clear_buffer()unsigned char i;for(i=0;i120;i+) gsm_bufferi=0;ct=0;unsigned char init_command(unsigned char *command)unsigned char time=0;/uart1_init();douart1_sendstring(command);delay_ms(500);if(strstr(gsm_buffer,OK)!=NULL)time=0;clear_buffer();return 1;elseclear_buffer();time+;if(time=MAX_TIME)return 0;while(1);unsigned char gsm_init()if(init_command(ATr)=0)return AT_ERROR;if(init_command(AT+CSCA?r)=0)return CSCA_ERROR;if(init_command(AT+CNMI=1,1,2r)=0)return CNMI_ERROR;if(init_command(AT+CMGF=1r)=0)return CMGF_ERROR;return 0;void send_message(unsigned char *num,unsigned char *s)uart1_sendstring(AT+CMGF=1r);delay_ms(500);uart1_sendstring(AT+CSMP=17,167,0,0r);delay_ms(500);uart1_sendstring(AT+CSCS=GSMr);delay_ms(500);uart1_sendstring(AT+CMGS=);uart1_sendstring(num);uart1_send(r);delay_ms(500);uart1_sendstring(s);uart1_send(0x1a);/delay_ms(500);clear_buffer();unsigned char is_message_coming()return ct;void get_message(unsigned char *numbuf,unsigned char *buf)unsigned char *p;unsigned char *p1;unsigned char n;delay_ms(1000);if(strstr(gsm_buffer,+CMTI)!=NULL)p=strchr(gsm_buffer,);n=*(p+1);clear_buffer();uart1_sendstring(AT+CMGR=);uart1_send(n);uart1_send(r);delay_ms(1000);p=strchr(gsm_buffer,);p+=2;p1=strchr(p,);memset(numbuf,0,20);memcpy(numbuf,p,p1-p);/p=NULL;p1+=1;p1=strchr(p1,);p1+=1;p1=strchr(p1,);p1+=3;p=strchr(p1,r);if(p=NULL) memcpy(buf,p1,(gsm_buffer+119-p1);else memcpy(buf,p1,p-p1);/*if(p=NULL)memcpy(buf,p1,39);elseif(p-p1)39)memcpy(buf,p1,p-p1);elsememcpy(buf,p1,39); */p1=NULL;clear_buffer();uart1_sendstring(AT+CMGD=);uart1_send(n);uart1_send(r);delay_ms(10);clear_buffer();elseclear_buffer();void uart1() interrupt 4 if(RI) if(ct119)gsm_bufferct=SBUF;ct+; RI=0; if(TI) TI=0;uart1_busy=1; 4.2.5 报警子程序系统设定的阈值保存在以50H开始的3个单元,是为了便于比较和显示,阈值的百位放入50H中,十位放入5lH,个位放人52H中。本电路中报警电路分为蜂鸣器报警电路和发光报警电路两部分,当输入端P2.3为低电平时,有电流通过蜂鸣器,蜂鸣器发出声音报警;而当输入端为高电平时不报警。当输人端P1.6为低电平时,LED点亮报警,反之输入端P1.6为高电平则不报警。 报警子程序执行之前,将报警阈值转换为压缩的BCD码并存放在两个存储单元中。传感器输入值经A/D转换后,首先调用比较子程序,再进行数据处理、数据显示和测量值与阈值之间的比较运算,小于阈值则继续执行显示程序,若大于阈值则将单片机的P1.6、P2.3两端口清零进行声光报警。40H、4lH、42H单元存放A/D转换后,并进行十进制转换后的结果。40H和50H分别存放的是处理后的测量值与阈值的百位的压缩BCD码,41H和51H分别存放的是处理后的测量值与阈值的十位压缩的BCD码,42H和52H分别存放的是处理后的测量值与阈值的个位的压缩BCD码。程序首先对40H、50H中的值进行比较大小,如果40H中的值大于50H中的值,则进行报警。4.2.5 串行口子程序串行传送数据时需传8个值,两个监测点的温湿度值和4个设定的温湿度上限值。发送前要先对串口初始化,设置波特率等参数。发送中将两组温湿度值存放到一个数组中,每次发送时调用8次串口发送程序将数据发送出去。对SCON选工作方式,对PCON设波特率加倍位“SMOD”(缺省值=0),采用中断方式,要打开 ES串口中断允许位和总中断EA位。初始化程序如下:void uart1_init()/*SCON=0X50;TMOD=0X20;PCON &= -(FOSC/32/BAUD);TH1=TL1=0xfd;TR1=1;ES=1;EA=1; */PCON |= 0x80;/UART0 Double Rate EnableSCON = 0x50;/UART0 set as 10bit , UART0 RX enableTMOD &= (16);/Timer1 Set as Timer, 12TTMOD = (TMOD & 0x30) | 0x20;/Timer1 set as 8 bits auto relaodTH1 = T1_TimerReload;/Load the timerTR1 = 1;ES = 1;EA = 1;void uart2_init()/*S2CON=0X5a;BRT=-(FOSC/32/BAUD1);AUXR=0X14;IE2=0X01;EA=1;*/AUXR |= (1 3);/串口2波特率加倍S2CON = (S2CON & 0x3f) | (16);/串口2模式1,8位UART,(2S2SMOD / 32) * BRT溢出率S2CON |= 1 4;/允许串2接收AUXR |= 1 4;/baudrate use BRTBRT = BRT_Reload;IE2 |= 1;/允许串口2中断需要发送的数据通过单片机的串口SBUF送出去,完成后会自动将发送完成标志位TI置1,通过检测TI的值检测是否发送完成。5 硬件焊接及调试5.1 概要说明本设计硬件焊接包括单片机最小系统模块、酒精浓度采集模块、无线通信模块、LCD显示模块。首先需要使用Protel DXP软件绘制整体的电路原理图,然后按照设计原理要求使用Keil软件新建工程,编写程序。程序分模块编写完成后通过Keil软件进行编译调试,程序没有语法问题后生成HEX文件,并将部分模块的HEX文件添加到Proteus中进行仿真,最后下载到硬件中进行调试。在本次设计中,酒精浓度采集采用MQ3气敏传感器,输出信号为数字信号可直接与单片机进行通信,因此电路连接简单明了。酒精浓度显示模块选用液晶显示模块LCD1602,LCD1602由16引脚与单片机连接,连线方便,本身自带的字母和数字字符库,又便于编程,非常适合本设计对于温湿度的显示要求。无线传通信模块采用GSM模块。5.1.1硬件焊接在焊接硬件之前首先要先绘制好电路的原理图。在电路原理图绘制的过程中,由于不太熟悉Protel DXP软件,我通过查阅相关参考资料、明确了电路图绘制流程。在添加某些元件的过程中基本元件库中没有,这时候就需要自己建立元件库编辑元件,并将编辑好的元件添加到原理图中。系统焊接前应熟悉各芯片的引脚,焊接时参照电路图,仔细地连接引脚。按照以下原则进行焊接:1.先焊接各芯片的电源线和地线,这样确保各芯片有正确的工作电压;2.同类的芯片应顺序焊接,在一片焊接并检查好之后,其他的同类芯片便可以参照第一片进行焊接。这样便可大大节省时间,也可降低出错率。5.1.2 软件调试本系统的软件系统很大,全部用C语言来编写。程序编写完成后,首先进行编译确保程序没有语法问题,之后再生成HEX文件才可以下载到单片机中。除了语法差错外,当确认程序没问题时,再下载到单片机来调试。采取的是自下到上的调试方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个完整的系统调试。5.1.3 软硬联调系统做好后,检查电路没有问题后将程序下载到硬件电路,进行系统的完整调试。主要任务是检验是否按照设想的功能显示效果,并校正数值。根据实测数据,逐步校正数据,使测量结果更准确。这里采用分模块调试,各模块没有问题后再将模块组合到一起进行调试,得到最终结果。5.2 调试中出现的问题及解决方法硬件焊接完成后,首先进行硬件电路的检查调试,硬件连接没问题后开始进行程序的编写及调试,最后将程序下载到硬件上进行整体的调试。在设计操作过程中遇到的问题及解决方法如下:1.单片机最小系统焊接完成后,发现复位电路不起作用,无法对单片机复位。检查电路发现无论开关闭合还是开启,单片机复位引脚的电压没有变化,说明开关的焊接有问题,经检查发现开关连接的两个引脚不能实现开关和闭合,用万用表测开关两个脚的电阻,找到两个脚开关不闭合时阻值无穷大而闭合后阻值为0,重新焊好后单片机能够正常使用。2.程序编写完毕往硬件下载时怎么也下载不进去,串口无法找到。通过询问其他同学知道原来需要安装串口驱动才可以下载,安装后程序能够正常下载。3.在调试温湿度显示时发现LCD1602总是一片绿屏,什么都没有显示。查找相关资料了解到此时应该调节VL连接的
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!