毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc

上传人:文库蛋蛋多 文档编号:3981198 上传时间:2023-03-30 格式:DOC 页数:39 大小:680.50KB
返回 下载 相关 举报
毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc_第1页
第1页 / 共39页
毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc_第2页
第2页 / 共39页
毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc_第3页
第3页 / 共39页
毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc_第4页
第4页 / 共39页
毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的酒精浓度测试系统设计.doc(39页珍藏版)》请在三一办公上搜索。

1、 编号 毕 业 设 计(论文)题目 基于单片机的酒精浓度测试系统设计 二级学院 电子信息及其自动化 专 业 自动化 班 级 学生姓名 学号 指导教师 雁 职称 副教授 时 间 2015年6月 目 录摘 要IAbstractII1 绪论11.1 酒精浓度测试的背景11.1.1什么叫做酒后驾驶11.1.2酒后驾驶会产生的危害11.2酒精浓度检测仪的设计内容12 总体方案设计22.1总体设计基本结构22.2主要模块32.2.1 STC89C51单片机32.2.2 LCD1602液晶显示42.2.3 ADC0832数模转换82.3 小结93 硬件设计103.1单片机最小系统103.1.1.晶振电路10

2、3.1.2 复位电路113.2 数据采集设计123.2.1 MQ-3酒精传感器123.2.2 A/D转换器123.3 按键设计133.4 液晶显示设计143.5 报警设计163.6 小结174 软件设计184.1软件介绍184.2 主程序模块184.3 A/D转换模块194.4 按键输入模块194.5 液晶显示模块204.6 小结225 系统调试235.1系统仿真调试235.2 系统硬件调试235.3 小结246 结论25致谢26参考文献27附录28附录一 硬件设计仿真与实物图28附录二 设计主程序29摘 要随着中国经济飞速发展,人民生活水平不断提高,作为代步出行的汽车已经迅速发展起来了。汽车

3、作为一种交通工具不但能够进行远距离的行驶也能在公路上保持相当高的速度,大大节省了出行时间,并且提供了方便个人出行的方式,极大的丰富了社会交通工具的多样性。汽车通过消耗柴油和汽油完成能量的转化,来提供行驶需要的能量。但是驾驶员却是保证汽车安全驾驶的最为关键的地方,如果因为驾驶员的错误操作而使得汽车发生交通事故酿成惨剧,是得不偿失的。而酒后驾发生交通事故占了总交通事故很大的一个比重。所以对酒后驾驶的管理是十分重要的,最主要的方法就是通过测试酒精浓度判断驾驶员是否酒后驾驶。本文研究设计了一种检测酒精浓度的智能测试仪,该仪器在检测到酒精浓度后会通过与上限值比较,当超出酒精浓度上限值后会发出警报提醒酒精

4、浓度超标。实验方案基于89c51单片机,MQ-3酒精浓度传感器设计。传感器负责将测试的酒精浓度信号传送给AD0832,AD0832通过A/D转换将电信号转换为数字信号传送给单片机,单片机接受信号进行处理后传送到LCD上显示。关键词: 单片机89c51 A/D转换 酒精浓度传感器AbstractThe continuous improvement of peoples living standards with Chinas rapid economic development.As a means of travel has quickly developed a car.Car as a m

5、eans of transport not only capable of traveling long distances,and it can be maintained at a very high speed on the highway.It significant savings in travel time,and provides a convenient way of personal mobility.It also greatly enriched the diversity of the community transport. Automotive diesel an

6、d gasoline consumption by complete transformation of energy to provide energy traveling needs.But the driver is the most crucial part of the car to ensure the safe driving,if because of an error operation of the driver and makes the car traffic accident led to the tragedy, is worth the wait.Drink-dr

7、iving traffic accidents accounted for a large proportion of the total accidents,so the management of drinking and driving is very important.The main way is through alcohol concentration test determines whether the driver drunk driving.In this paper, design a method for detecting alcohol concentratio

8、n of intelligent tester.The instrument will be by comparison with the upper limit after detecting alcohol concentration, when the alcohol concentration exceeds the limit alerts to remind alcohol concentration exceeded.Based on the experimental program microcontroller89c51, MQ-3 alcohol concentration

9、 sensor design.Alcohol concentration sensor signal is transmitted to the AD0832 is responsible for testing.By AD0832 A / D converter converts the electrical signal into a digital signal is transmitted to the MUC.After the MUC receives signals and sends them to the LCD display.Key words: MCU89C51; A/

10、D converter; Alcohol concentration sensor 1 绪论1.1 酒精浓度测试的背景1.1.1什么叫做酒后驾驶作为交通事故中最为常见的酒后驾驶指的是在喝酒后驾驶车辆。根据在驾驶员喝酒的量可以分为饮酒后驾驶和醉酒后驾驶,血液中酒精含量大于等于20毫克/100毫升但是并没有超出80毫克/100毫升为饮酒驾驶,而醉酒驾驶的标准则是大于或者等于80毫克/100毫升即为醉酒驾驶。现在由于酒后驾驶的危害性,现在交通法的规定只要是酒后驾驶就吊销驾驶执照。1.1.2酒后驾驶会产生的危害(1) 由于酒精的作用会使触觉能力降低,而且容易让精神处于亢奋状态。酒后人的会因为酒精作用无

11、法像正常状态一样轻松的控制油门、刹车及转向系统。(2)人在饮酒后会因为酒精作用受到麻痹,判断力会比正常情况弱很多,对灯光和声音的刺激会延长,不能很好的协调身体的动作,无法正常判断车距和速度。(3)饮酒后的视觉会受到一定的影响,饮酒越多,视线越模糊,看到交通指示牌和标志也不能准确判断,对于附近车辆也难以发现,容易发生交通事故。(4)当人饮酒后会因为酒精产生麻痹作用,往往容易过高估计自己的能力,对于本来自身不能做到的事情产生盲目自。(5)饮酒后最主要的还是产生疲劳和困倦,许多可以避免的交通事故都是由于疲劳驾驶引起的,当人十分疲劳时,他的判断力和执行力将受到大幅下降,驾驶车辆将变得十分危险,甚至在驾

12、驶时睡着,这不但会对自己产生严重的危害,也会对道路上其他车辆产生严重的危害。1.2酒精浓度检测仪的设计内容酒精的测试设计主要包括以下几个方面:基于89c51单片机的控制,基于ADC0832数模转换,LCD1602的液晶显示。本文围绕这个几个主要点来构建一个完整的酒精浓度测试模块,通过设计完成以下内容:超标报警,浓度检测,浓度设置,数据显示。2 总体方案设计2.1总体设计基本结构本次设计主要通过使用MQ-3酒精传感器来测试酒精浓度,它将测试得到的电子信号传送给数模转换器ADc0832,由此将电子信号换为数字信号传回单片机89c51。89c51作为微处理器MCU处理接收的信号并将结果送到液晶显示器

13、LCD1602上。按键和时钟作为人为控制单片机操作的模块,改变报警的上限和时间显示1。总体设计如图2.1图2.1 总体设计结构图2.2主要模块2.2.1 STC89C51单片机STC系列单片机是美国STC公司推出的一种51内核的单片机。这种单片机有两种机器周期:一种是6时钟型的,一种是12时钟型的。STC89C51一般工作在0-40MHZ。它不但有一个异步通信口还有3个16位的定时器2。该单片机可以存储,通过内部的RAM,不过这个RAM不大只有512B。片内含有Flash程序存储器、SRAM、UART、SPI、AD、PWM等模块。通用的I/O口一共有32或者36个。这个单片机的工作要求电压是3

14、.8-5.5V。并且一般的外部封装有两种,一种是40个引脚的PDIP,还有一种是44脚PLCC和PQFP等。封装如图2.2图2.2 PLCC和PDIP封装图89C51单片机的引脚有很多功能,需要了解其基本使用方法:(1)VCC:表示的是该芯片的电源接入,没有电源就无法启动(2)GND:这是整个芯片的接地端 (3)P0口:是地址/数据总线复用口,它的每一个端口都是漏极开路型双向I/O口,共有8个端口。P0口可以作为输出口使用,如果需要高阻抗输入端用则需要对端口写入高电平。在作为输入端口使用时这8个口则通过时间不同分为地址总线和数据总线,当被激活需要使用时,内部会拉上上拉电阻。(4) P1口:P1

15、口同样也是8位双向I/O口,和P0一样同样的可以作为输出口使用。也同样的可以作为输入口使用,对输入口使用时需要对端口写高电平,内部就会自动的高。(5)P2口:和P1相同,P2是8位双向I/O口,在内部同样有上拉电阻。有上拉电阻即还在端口给高电平,内部上拉电阻便会激活,这样就可以作为输入端使用。在作为输出端使用时,P2会送出在地址端处于高8位的数据。(6)P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。除了与P1和P2的功能一样外, P3口除了作为一般的I/O口线外,它还有一些其他的特别功能,比如串行口的输入输出,定时和中断等等。(7)RST:复位输入。(8)EA/VPP:外部访问允许。

16、(9)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 (10)XTAL2:振荡器反相放大器的输出端。 (11)数据存储器:89C51是由一个内部RAM的,作为数据处理和存储的地方。RAM对于现在来说并不大只有256个字节。(12)中断:89C51共有6个中断向量:分为INT0和INT1的是外部中断,主要是处理外部引起的中断;还有3个定时器中断0,1,2,在编程内部设置的中断由定时中断处理;最后还有一个串行口中断,如果需要外部信息中断时,它就发挥作用了。 (13)时钟振荡器:单片机作为一个微处理器,它必须要有精准的时间计数,不然所有的信号和指令都混在一起根本无法进行有序的处理和执行。8

17、9C51的最小系统中就要有晶振构成,晶振连接在引脚XTAL1和XTAL2上,共同构成内部振荡器的高增益反相放大器。有了这个放大器加上晶振一起构成自激振荡器,使得89C51能够有序的执行指令和数据的传送。 2.2.2 LCD1602液晶显示LCD1602的中文名字是工业字符型液晶,作为广泛应用的显示器,它的后缀1602表示的是16x02,非常简单的解释了它的功能是显示16列的2行字符。LCD1602主要是用来显示字母、数字、符号的,它的每一个字符都是由固定的点阵构成的,所以根据点阵的数量可以形成数字,字符和一些常用的符号3。这是它的优点,但它的缺点就是由点阵形成的字符位的点阵并不多,无法很好的表

18、现图形。LCD1602由16个管脚构成,其中P7到P14是用来接收数据显示的。管脚如下图2.3图2.3 LCD1602管脚图1602采用标准的16脚接口,其中:第1脚:GND为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端第4脚:RS为寄存器选择,当RS不同时选择的寄存器也不一样,数据寄存器的选择指令是使RS得到高电平;要选择指令寄存器时则相反,使它为低电平。第5脚:RW为读写信号线,如果要进行写操作时处于高电平则不能进行,只能进行读的操作;而只有低电平时才能进行写的操作,否则是无效的。第6脚:E为使能端,想要读取数据时需要令它为高电平,这个时候使能激活;在跳变到低电平

19、是,则开始执行数据。第714脚:D0D7为8位双向数据端。15:脚背光正极16:脚背光负极。特性一般在3.3V或者5V的稳压电源下即可工作,对比度可以又第3脚调整。内含复位电路有80字节显示数据存储器DDRAM内建有192个5X7点阵的字型的字符发生器CGROM8个可由用户自定义的5X7的字符发生器CGRAM特征应用在低电压下即可工作,功耗低使用于各种小型设备,而且体积不大,方便使用。字符集LCD1602里面自带有CGROM,这是一个字符发生存储器,专门用来存储不同的点阵字符图形,这些字符以一定的顺序表示则能显示我们熟悉的阿拉伯数字和图形符号4。里面字符对应有一个代码,这个代码在编程中可以写入

20、来在显示器上表示。下面是LCD1602各个引脚的功能指令如表2-3和2-4表2-3 引脚功能令RSR/WD7D6D5D4D3D2D1D0清显示0000000001归位000000001*显示开关控制指令0000001DCB进入模式设置指令00000001I/DS光标或显示移位指令000001S/CR/L*功能设定00001DLNF*设置CGRAM地址0001AC5AC4AC3AC2AC1AC0设定DDRAM地址0010AC5AC4AC3AC2AC1AC0读忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0写RAM指令10D7D6D5D4D3D2D1D0读RAM指令11D7D6D5D

21、4D3D2D1D0表2-4 功能说明说明清显示把DDRAM写入20H,将DDRAM的地址计数器(AC)写为00H归位把DDRAM的地址计数器(AC)写为00H,游标将被重新现在在开头显示开关控制指令D=1: 整体显示 ON,C=1: 游标ON,B=1:游标位置反白允许进入模式设置指令I/D=1,光标或闪烁向右移动,AC增加1。I/D=0,光标或闪烁向左移动,AC减少1,S整个显示移动光标或显示移位指令如果没有读写指令,光标会根据指示左右移动功能设定DL=0/1:4/8位数据,N=0/1,单行/双行显示,F=0/1,5*8/5*10点阵显示模式设置CGRAM地址CGRAM地址设置指令设置CGRA

22、M地址指针,设定DDRAM地址DDRAM地址设置指令设置DDRAM地址读忙标志和地址当BF=1时模块不接受任何外部指令。否则BF=0时即可以接受外部指令并且能读地址计数器(AC)的值。写RAM指令把D0-D7的数据写入RAM中,用户自定义的字符则写入CGRAM读RAM指令从RAM读取D0-D7的数据2.2.3 ADC0832数模转换 ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯,用来进行数模转换,将电信号转为数字信号。ADC0832作为一种典型的数模转换器,使用的是8位分辨率。在工作时需要提供5V的输入电压。它的接口是双通道的数模转换,在工作电压定下后,工作的频率

23、为250KHZ,在这个条件下ADC0832能保持稳定的工作状态。转换时间由具体的使用方式确定,一般在32S左右5。这种模块的功耗一般都比较小在15MW左右。芯片如图2.4 图2.4 芯片引脚图芯片接口说明: CS 在高电平时是片选使能,当在低电平时由芯片使能。 CH0 模拟输入通道0,或作为IN+/-使用。 CH1 模拟输入通道1,或作为IN+/-使用。 GND 0电位(地)。 DI 数据信号输入,选择通道控制。 DO 数据输出 CLK 芯片时钟输入。 Vcc/REF 电源输入及参考电压输入(复用)ADC0832是一个拥有8位分辨率的数模转换芯片,分辨率根据其使用要求最多可达256级。模拟电压

24、的输入范围在0-5V,这是由于内部的电源输入和参考电压复用造成的6。转换时间仅为32S.芯片通过使能端可以方便的连接器件和控制器,而其中改变通道功能的选择的是DI输入端口。2.3 小结本章主要是介绍总体的方案设计和后面需要使用到的相关模块和芯片,这其中包括了输入输出的控制和显示端口。相关的设计都是围绕它们的功能来实现的,每一个模块都有一个具体的功能,这些功能都相互连接才能达到设计目的。设计成模块就是为了方便调整和修改,在调试过程中可以比较方便的检测出问题的所在。3 硬件设计3.1单片机最小系统单片机最小系统由晶振电路和复位电路构成。如图3.1图 3.1单片机最小系统3.1.1.晶振电路一个功能

25、完整的单片机如果要工作起来必定需要定时功能,在单片机系统中这是由时钟和定时电路来组成的。单片机必须在时钟信号的作用下以节拍方式工作,所以需要一个电路来提供准确的时钟信号7。时钟信号是由振荡电路来提供的,一般的振荡电路则需要电容和电感来组成。但片中C1和C2就是振荡电路中的电容,它们的取值范围根据晶振的种类及频率来确定。XTAL1、XTAL2则是单片机的时钟信号的输入输出口,由它们与电容连接,但是此时的振荡电路还不够完整,需要在两个电容之间加上晶振来组成振荡器,这样就完成了振荡电路。通过振荡电路就可以形成时钟信号。时钟的产生有以下两种方式: 方式一:内部方式这是一般简单实用单片机最实用的时钟产生

26、方式,在XTAL1和XTAL2引脚上串连上一个晶振,再和两个电容并联后接地,组成并联谐振电路8。电容的选择根据需要的振幅来决定,晶振则一般为12MHZ。通过这样单片机内部产生一个和外部晶振一样的振荡,这个振荡的产生标志着振荡电路的完成。方式二:外部时钟方式如果采用外部时钟方式,此时要把XTAL1接到外部始终提供电路,XTAL2接地。这种情况一般是当整个单片机系统已经有时钟源或则在多机系统中取得时钟上的同步。本方案采用内部时钟方式。如下图3.2图3.2 晶振电路3.1.2 复位电路复位电路是为了保证在开始和需要重置时使整个单片机系统重新启动的装置。复位后不管是CPU还是各部件都处于确定的初始状态

27、,它们会再次从这个初始状态工作。51单片机的复位信号是从RST处得到的,RST端信号进入施密特触发器最终获得这个信号。一般来说如果在RST引脚得到一个高电平,并且这个高电平维持的时间在两个机器周期以上,那么CPU就会相应这个指令,对单片机进行系统复位9。单片机系统的复位方式有:手动按钮复位和上电复位。复位电路如图3.3图3.3 复位电路手动按钮复位手动复位不同于上电复位,但是原理都是使RST得到高电平,所以应该在这上面即一个高电平。为了方便控制,一般要在其中增加一个按钮来控制平常的正常工作。上电复位上电复位时使RESET处于高电平,而且保持高电平一段时间。因为这一点接地,所以在接地的作用下这一

28、点会慢慢由高点平变为低电平。而且由于RESET变为低,所以单片机复位。一般来说这个一段时间为2个机器周期。3.2 数据采集设计本设计的数据的采集由MQ-3酒精传感器完成,传感器得到的数据是电子信号,必须通过放大,滤波,采集,转换才能被MCU识别和处理。所以数据采集由MQ-3酒精传感器和ADC0832完成,最后将数据传给MCU。3.2.1 MQ-3酒精传感器MQ-3是现在使用的酒精传感器,它是一个电阻传感器,检测的酒精浓度是以电信号传送出去的。在本设计中主要需要将该仪器通上5V电源,并在GND接地,OUT用来输出测试浓度。MQ-3作为一款酒精传感器是有自己的特点的,首先是测试气体是比较灵敏的,而

29、且在响应方面具有快速反应性。并且由于它比较简单的结构,它的使用期限和稳定性是可以得到保证的。在使用过程中最主要的是需要通过它检测的电压得到酒精的浓度,这其中有一个关系,电压每升高1V时,相应的气体浓度就会升高200ppm。这是编程过程中最需要注意的一个环节。3.2.2 A/D转换器ADC0832一共有8端口,与单片机连接的则一般只有4个端口,为CS、CLK、DO、DI。在很多情况下DO端与DI端并不是同时有效的,在DO端使用的时候DI端一般是待机状态,所以将上述两个端口可以接在一起,共用一根数据线。CS表示使能端,当需要芯片工作时不要把它置为低电平,因为这个时候芯片禁用10。在芯片禁用时,CL

30、K 和DO/DI并没有工作任务,此时他们不管接高电平还是接低电平都无所谓。反之芯片要工作时,CS必须要给低电平,直到工作结束。由于Proteus仿真软件没有MQ3酒精传感器,因此用滑动变阻器代替电信号作为输入。如下图3.4图3.4 A/D转换器3.3 按键设计按键设置主要分为独立式和行列式(矩阵式)两种。独立式键盘顾名思义就是每个按键都是独立的,这个独立指的是相互不影响连接到单片机的I/O 口,而单片机的I/O 口不需要使用外部中断之内的编程,只需要输入口即可读取按键。这种独立式键盘可以连接上拉电阻或者是下拉电阻,这并不影响数据的读取,只需要判读输入口的电平。由于独立式键盘简单的结构,所以对于

31、单片机的编程就变得简单了。但是由于每一个按键都必须接上一个I/O 口,在按键较少的情况下还是能够使用足够的I/O 口,但是如果一旦按键变得比较多的话,单片机就不会有足够的I/O 口来供按键使用,所以一般这是就会使用行列式结构。行列式键盘则不像独立式键盘那样直接与单片机的I/O 口相接,顾名思义行列式即行列要相交的地方而不相同,接的不是I/O 口而是上一个按键,按键和按键相连。假设我们只有A+B个I/O口,如果使用独立式键盘则也只有A+B个按键,而我们把A个I/O接上A个按键当作行线,而另为B个I/O口接上B个按钮当作列线,一共则可以得到AB个按键11,可以大大增减按键数量。由于本方案只有两个按

32、键来控制设定值的增减,所以选用简单的独立式键盘结构。如下图3.5图3.5 按键设置3.4 液晶显示设计本方案使用LCD1602来显示数据,因为LCD1602与51单片机相连有以下几个优点:(1)显示质量高 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不象阴极射线管显示器(CRT)那样需要不断刷新亮点。因此,液晶显示器画质高而且绝对不会闪烁,把眼睛疲劳降到最低。 (2)数字式接口 液晶显示器都是数字式的,不像阴极射线管彩显采用模拟接口。也就是说,使用液晶显示器,显卡再也不需要像往常那样把数字信号转化成模拟信号再行输出了。理论上,这会使色彩和定位都更加准确完美。 (3)

33、体积小、重量轻 传统的阴极射线管显示器,后面总是拖着一个笨重的射线管。液晶显示器突破了这一限制,给人一种全新的感觉。传统显示器是通过电子枪发射电子束到屏幕,因而显像管的管颈不能做得很短,当屏幕增加时也必然增大整个显示器的体积。而液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示目的,即使屏幕加大,它的体积也不会成正比的增加,而且在重量上比相同显示面积的传统显示器要轻得多12。 (4)功耗低 传统的显示器内部由许多电路组成,这些电路驱动着阴极射线显像管工作时,需要消耗很大的功率,而且随着体积的不断增大,其内部电路消耗的功率肯定也会随之增大。相比而言,液晶显示器的功耗主要消耗在其内部的电极和驱

34、动IC上,因而耗电量比传统显示器也要小得多13。这次的功能仅仅是通过LCD1602来显示单片机发送的数据,所以将D0-D7直接接到P0口,用来接收数据如图3.6图3.6 LCD1602与单片机的连接VSS与VEE和VDD接高电平,RS作为命令/数据端口接上P2.7。RS的两个状态为选择命令和选择数据,低为选择命令,高为选择数据。读/写端RW则接P2.6,它也是两个状态,为低时向LCD1602写入命令或数据;为高时,从LCD1602读取状态或数据14。这两个端口由单片机控制读写和数据的接收,由于本方案LCD1602显示数据,所以只用到了读的功能。使能端E则是控制LCD1602是否运行接P2.5,

35、如果是高电平,LCD1602则激活启动,当为低电平时则保持待机状态。D0D7,并行数据输入/输出引脚,用来接收的P0的8个I/O口15。因为接P0口,P0口在单片机中作为输出口时,输出能力较弱,应该接4.7K10K的上拉电阻。如图3.7图3.7 P0口的上拉电阻3.5 报警设计当酒精浓度到了设定的值就需要发出警报提醒检测人员超出了检测设定值,来方便的判定是否酒后酒后驾车,所以可以使用LED灯加上一个蜂鸣器来完成声光报警。在单片机电路中由于单片机的输出能力较弱驱动蜂鸣器可能会出现声音较小或不出声的情况,所以需要增设一个三极管放大电路,使输出增强。而声光报警电路最好使用并联方式,以防一条电路损坏倒

36、是报警系统完全不能工作,而并联凡是即使一条电路损坏于另一条电路并不影响。如图3.8图3.8 声光报警电路3.6 小结这一章具体完成了每一个功能的设计,以及在仿真中如何达到的。通过对需要进行的功能的思考,不断完善电路的设计。在仿真中对键盘的控制是比较好实现的,因为本设计的键盘是独立式的,仅仅控制酒精浓度设定值的增减,但是编程中却必须结合MQ-3酒精浓度传感器的相应比例,当1V电压减少时,就有200ppm的降低来设计,不能不根据实际情况来编写程序。LCD1602的控制就需要根据显示的数据需求来完成,这一点可以根据查LCD的指令功能表来完成。需要注意的是虽然设计中的声光报警电路十分简单,但是在仿真时

37、就能发现其实报警输出的低电平信号并不是不变的,而是在变化,这样就会造成蜂鸣器的间隙性启动。所以在这其中很多问题都能在仿真中发现,并且想办法解决。4 软件设计4.1软件介绍Keil软件是我常用的单片机编程软件,它不但可以进行汇编的编程也可以进行C的编程。由于在学校学习的基本上是C语言的使用,所以Keil的编程对于我比较有优势。而且Keil自带丰富的数据库,很多头文件是可以在这里面找到的,相较于自己编写能节约时间,当然要使用特别的功能也是可以自己编写后再加入数据库。在该程序中也可以将编译成功的文件生成.HEX文件,方便进行仿真和测试。Proteus软件是我使用的仿真测试软件,该软件里有各种元件和单

38、片机的外围器件。在该软件中可以自己进行原理图布局,使各个元件能够紧凑整齐的分布,一目了然的观察到各个模块进行工作的状态。可以实时进行检查,通过自带的万能表等工具了解到线路和仪器工作的状态和数据。通过在单片机中拷入.HEX文件,上电即可进行实验仿真。对于其中出现的结果可以在断电后立即进行修改再测试。而且对于该实验中没有的仪器也可以通过自己设计封装,最后达到想要的结果。4.2 主程序模块主程序主要实现将各个模块连接,并检测和显示数据,如图4.1图4.1 主程序流程图4.3 A/D转换模块数模转换的主要功能就是将传感器送过来的电信号转换成MCU能够读取的数字信号,使得MCU能够处理传感器感应到的酒精

39、浓度。ADC0832的转换流程如下图4.2图4.2 ADC0832的转换流程在进行工作时芯片的CLK口需要连接单片机的P2.3口,只有通过单片机的P2.3口,来自MCU的时钟信号向芯片输入脉冲,CS接P2.4,并在开始工作时输入低电平,直至工作结束。DO和DI连接到一根线上,DO和DI端口使用的都是DI端口的信号,DI端输入通道的信号即功能选择信号由此传送过去16。在第一个时钟脉冲的下沉之前DI端是有要求的,必须让DI端表现高低平,否则不能发出启示信号。在第二、三个脉冲下沉之前DI端有重要的做药,DI端此时需要通过输入的数据来选择通道的功能,不然没有办法清楚分出选用的功能17。4.4 按键输入

40、模块本方案通过两个按键来控制设定值的增减,对MCU发出指令并在LCD上显示。按键查询式的流程图见下图4.3图4.3 按键查询式的流程图按键分别接P1.2和P1.3,由于P1端口自带上拉电阻,所以不需要像P0那样接上上拉电阻进行电压放大17。4.5 液晶显示模块液晶显示模块主要用来显示当前测量酒精浓度和预期设置的报警上限,由于显示简单直接接P0获得数据显示。LCD1602流程如下图4.4图4.4 LCD1602流程 由于P0并没有自带上拉电阻,所以需要在P0口与LCD1602的D0-D7中加上上拉电阻进行电压扩大18。LCD1602的读写工作时序图如图4.5和图4.6所示图 4.5 LCD160

41、2读操作时序当处于读状态时,RS处于低脉冲,R/W为高脉冲,E为高脉冲 ,D0D7=状态字当处于读数据时,RS处于高脉冲,R/W为高脉冲,E为高脉冲,D0D7=数据19。图4.6 LCD1602写操作时序当处于写指令时,RS为低脉冲,R/W为低脉冲,D0D7=指令码,E=高脉冲当处于写数据时,RS为高脉冲,R/W为低脉冲,E为高脉冲,D0D7=数据20.4.6 小结在软件流程方面,各个模块因为都是常用的元件,所以流程和检测都比较简单。值得注意的主程序流程,虽然因为整体设计比较简单而且功能实现比较单一显得简陋,但是由于流程结构较短,而且没有分支和等待,所以整个流程在功能实现时是身份快速的,酒精浓

42、度的一点点增加都灵敏的使测试数据增加,即使在测试仅仅呼吸一口气也能立马测试出酒精浓度的最大值,达到报警的设定值。按键方面也因为独立式按键的简单结构使得按键准确,并且在编程通过延时消除抖动。整个流程都十分简洁明了。5 系统调试当所有模块和设计都完成之后就可以开始调试了,因为设计之初和完成过程中可能会出现各种各种的问题,在调试时将所有出现问题解决才能达到当初设计的目标。而调试分为硬件焊接调试和软件仿真调试。5.1系统仿真调试软件的仿真调试主要是在仿真软件上,测试是否能完成设定的内容。本方案首先测试的是LCD1602的上电显示,在通过在程序上的修改使LCD显示设定的数值。若不正确则先检查编程问题,然

43、后是连线的正确与否。将问题解决后能看到正确数值则说明,LCD显示模块没有问题。其次既是按键模块,由于按键模块连线十分简单主要通过观察单片机传给LCD1602的高低电平来判断编程的正确与否。检测到按下的按键与传送给LCD的高低电平一致则说明没有问题,并且会在LCD上显示设定数值的增减。然后是传感模块,由于Proteus并没有MQ-3酒精传感器的模块,所以用一个滑动变阻器代替测试的数据。通过改变滑动变阻器在A/D转换器的输出端观察电信号的改变,如果没有问题,在接上LCD后会在上面显示数字,改变滑动变阻器数字会随之改变。最后剩下报警模块,这个模块由LED灯和蜂鸣器并联,蜂鸣器需要增加一个三极管为其放

44、大电信号,不然发出的声音极有可能达不到报警的标准。5.2 系统硬件调试硬件调试看起来比软件调试简单,但是由于自己焊接,所以问题比较多,而且硬件有时出现问题并不是焊连线的问题,有时候是元件的损坏。必须通过万用表在出问题的地方一段一段的测试才能找出来。理论上软件仿真没有问题,那么只有硬件焊接连线或者元件出了问题才会使功能不能实现。所以焊接时十分仔细,每焊接一个地方都会对着软件上的仿真图一步一步的对应好后才下手,做到务必没有差错。而且在焊接完后上电时必须确定程序已经拷入芯片,不然整个系统不会正常工作。在看到LCD上正常显示数值并且按键能够控制设定值的增减时,就可以用来测试酒精浓度。至此硬件就彻底完成。5.3 小结在实际操作中,硬件调试问题比较多,除了因为焊接和失误的问题外,最主要的问题就是仿真和实际焊接的差距。虽然在仿真上各个模块的连线的比较整齐和规划,但是实际操作起来,特别是与单片机连接的导线特别复杂。本来是准备使各个导线都在下面尽量不互相交叉,到后面才发现这并不现实。只好尽量在飞线时比较整齐,方面后面调试时进行检查。而且操作时切忌心浮气躁,容易将导线连错。6 结论

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号