基于单片机模块STC89C52模块的酒精浓度测试

合集下载

基于单片机的酒精浓度测试仪设计

基于单片机的酒精浓度测试仪设计

基于单片机的酒精浓度测试仪设计摘要中国经济的飞速发展使得私家车的占有量越来越高。

人们生活水平的提高,车辆的大幅度增多,也使得道路安全问题越来越严重。

有些事故是让人回天乏术的,而有些事故是完全可以避免的。

比如酒后驾车,这种行为是对自己以及他人生命的严重不负责。

为了遏制这种行为,对驾驶员进行酒精浓度测试不失为一种有效的方法。

酒精浓度测试仪不仅要能准确测出酒精的浓度,而且要让测试人员读出该浓度。

当然也要有报警装置,提醒人们浓度超标。

本设计目的在于实现对不同的酒精浓度的检测和显示,通过适当改进可以用于对驾驶员进行是否酒后驾车的检测。

本文主要采用STC89C52单片机与MQ-3型气体传感器,而且能够对显示出所测量的数据,加之二极管的使用就可以简单地显示出所测的酒精浓度。

当其浓度超过允许值时,检测仪将发出蜂鸣声。

关键词:酒精浓度检测;STC89C52单片机;MQ-3气体传感器;A/D转换,Alcohol tester based on MCUAbstractThe rapid development of China's economy makes the share of private cars increase. What’s more, the improvement of people's living standards and a substantial increase in the vehicle makes the road safety problem get worse. Some accidents are beyond resurrection, while others are completely can be avoided . Such as drunk driving. such behavior is serious not responsible to their and the others’lives . In order to curb this behavior, the driver alcohol test is an effective method. Alcohol tester is not only able to accurately measure the concentration of alcohol, but also can let testers reads the concentration. Of course, we have an alarm system to alert people to the concentration exceeded. The design aims to achieve different alcohol concentration detection and display. And it can be used for the driver is drunk driving tests through appropriate improvements. This paper uses STC89C52 MCU and MQ-3 Gas Sensor as the main devices. With the use of the diode, the alcohol tester can display the measured data and simply show the alcohol concentration measured. When the concentration exceeds the allowable value, the detector will beep.Keywords STC89C52 microcontroller; MQ-3 gas sensor; A/D conversion目录第1章绪论 (1)1.1酒精测试仪现状和发展趋势 (1)1.2酒精浓度检测仪设计的意义 (1)1.3 研究内容 (2)1.4系统总体思路 (2)第2章系统总体方案设计 (3)2.1总体设计 (3)2.2控制模块方案论证 (3)2.3显示模块方案论证 (4)第3章硬件电路设计 (5)3.1单片机电路设计 (5)3.1.1 单片机介绍 (5)3.1.2 STC89C52的功能特性 (6)3.1.3 STC89C52的原理说明 (6)3.2MQ3气体传感器 (7)3.2.1 MQ-3主要技术指标 (8)3.2.2 MQ-3结构、外形、测试电路 (8)3.2.3 MQ-3传感器调理电路 (10)3.3电源电路 (11)3.4ADC0809 (11)3.5LCD液晶显示模块 (12)3.5.1 LCD1602显示模块技术参数 (12)3.5.2 LCD602显示模块功能 (13)3.6发光二极管显示报警电路 (15)3.7阈值存储电路 (15)3.8系统硬件设计原理图分析 (16)第4章软件系统的设计与实现 (18)4.1主程序设计 (18)4.2分部分软件设计 (19)4.2.1 ADC程序流程图 (19)4.2.2 LCD程序流程图 (20)第5章系统的调试及实验结果 (21)5.1 调试步骤 (21)5.1.1 按键修改酒精阈值程序 (21)5.1.2 模数转换测试 (21)5.1.3 液晶显示程序设计 (22)5.1.4 声光报警测试 (25)5.1.5 整体功能调试程序 (25)5.2实验结果 (25)结论 (27)致谢 (28)参考文献 (29)附录A 译文 (30)STC89C51RC/ RD+系列MCU (30)附录B 外文原文 (38)STC89C51RC/RD+ SERIES MCU (38)附录C (50)附录a:全局变量头文件和延时模块 (50)附录b:AD转化模块 (52)附录c:24c08存储模块 (52)附录d:LCD显示模块 (57)附录e:主函数 (63)第1章绪论1.1 酒精测试仪现状和发展趋势汽车的发明,使世界的文明跨出了一大步。

基于89C52的酒精测试仪设计

基于89C52的酒精测试仪设计

基于89C52的酒精测试仪设计摘要酒后驾车问题越来越得到社会的关注,酒精浓度对工业安全生产也很重要,为此设计了酒精测试仪来检测空气中酒精浓度。

AT89C52是一种可编程控制的微处理器,具有体积小,价格低,性能稳定的特点,被广泛的应用于工业自动化、智能仪器仪表等领域。

酒精传感器MQ3以其灵敏度高、性能稳定、价格便宜、体积小在酒精检测设计中被广泛使用。

酒精测试仪硬件主要由89C52、酒精传感器MQ3、A/D转换器TLC549、数码管、键盘、蜂鸣器六部分组成,其中89C52是核心。

软件用汇编语言进行编程,采用模块化设计思想。

在该装置中,MQ3将检测到的酒精浓度值转化为电压信号,电压信号经TLC549转化为数字信号,并送入单片机,单片机对所输入数字信号分析处理,并送至数码管显示。

由于不同环境对酒精浓度要求不同,这里可以通过键盘设定不同阀值,并送至数码管显示,与检测值比较。

当检测值大于阀值,单片机将会控制蜂鸣器发出警报,实现了对酒精浓度的监测、显示、报警功能。

Proteus7.5中仿真结果表明,该酒精测试仪可实现对空气中酒精浓度10~1000ppm范围的监测,精度可到到±4ppm,性能稳定,LED显示器能够对设定值和检测值实时显示,并能够实现声光报警功能。

关键词:酒精测试仪,89C52,TLC549,酒精传感器MQ3Alcohol Concentration Monitor Based on 89C52ABSTRACTDrinking driving is becoming a serious social problem with more social concerns, alcohol concentration is also important in industrial production, so an alcohol detector is designed to detect the alcohol concentration in the air.89C52 is a programmable control microprocessor, with small volume, low price, stable performance characteristics, and widely applied to industrial automation, intelligent instrument, etc. Alcohol sensor MQ3 is widely used for its high sensitivity, stability, price cheap, small volume.Alcohol detector's hardware consists of STC89C52, alcohol sensor MQ3, A/D converter TLC549, LED, keyboard and buzzer. Huibian language is used to realize the software. Alcohol concentration signal is changed into voltage signal by MQ3,then the voltage signal is changed into digital signal through A/D converter. Digital signal is analyzed and processed by 89C52 and sent to display. Because different environments require different alcohol concentration, here you can set different values by the keyboard, then displayed on LED , comparing with the detecting value. When detecting value is more than setting value, 89C52 will control buzzer alarms. The device realizes the monitor, display and alarm.Simulation results in the Proteus7.5 show that alcohol detector can monitor the range10~1000ppm alcohol,precision to ±4ppm and realizes real-time display,sound-light alarm function. In addition, the alcohol detector has stable performance and promising market prospect .KEY WORDS: Alcohol Concentration Monitor,89C52,TLC549,Alcohol Sensor MQ3目录前言 (1)第1章酒精测试仪的整体结构 (2)1.1 酒精测试仪的特点 (2)1.2 硬件设计及功能方案框图 (2)第2章酒精测试仪的硬件结构设计及原理 (5)2.1 硬件原理 (5)2.1.1 硬件原理说明 (5)2.1.2 实践方法步骤 (7)2.2 各元器件的选取与介绍 (7)2.2.1 89C52单片机的选择 (7)2.2.2 酒精传感器MQ3的选择 (9)2.3 各模块电路工作原理 (12)2.3.1 按键电路工作原理及按键作用 (12)2.3.2 检测电路及A/D转换电路 (13)2.3.3 显示电路和报警电路 (14)2.3.4 时钟电路和复位电路 (15)第3章酒精测试仪软件的设计 (17)3.1 主程序流程概述 (17)3.2 键盘扫面子程序 (18)3.3A/D转换与比较子程序流程图 (19)第4章测试与仿真 (20)4.1 软件的调试 (20)4.2 测试仿真 (21)4.2.1仿真过程 (21)4.2.2 仿真结果 (21)结论 (24)谢辞 (25)参考文献 (26)附录 (27)外文资料翻译 (35)前言近年来,随着我国经济的高速发展,人民的生活水平迅速提高,越来越多的人有了自己的私家车,而酒后驾车造成的交通事故也频频发生。

基于单片机的酒精浓度检测仪毕业设计论文

基于单片机的酒精浓度检测仪毕业设计论文

摘要本文研究设计了一种用于公共场所具有检测及超限报警功能的酒精浓度智能测试仪。

其设计方案基于89C51单片机,MQ3酒精浓度传感器。

系统将传感器输出信号通过A/D转换电路调理后,经由单片机进行数据处理,最后由LCD显示酒精浓度值。

从而让驾车的人知道自己该在什么情况下可以开车,这是一个在现代生活很实用。

经过大量的验证,基于单片机的酒精浓度监测仪检测仪比传统的机械检测仪或酒精计灵敏,监测精度高,准确方便,可靠性好,扩展简单,控制功能强大。

对超出阀值进行声光报警,直观准确。

所以基于单片机的酒精浓度监测仪的研究具有一定的价值。

关键词:酒精浓度传感器单片机数模转换硬件设计数码管显示AbstractThis paper studies has been designed for public inspection and overrun alarm function with the alcohol concentration intelligent tester. Its design scheme based on 89C51, MQ3 alcohol concentration sensor. System will sensor output signal through the A/D circuit recuperation, data processing by MCU, finally by LCD display alcohol chroma value. So let the people know what oneself should drive in what circumstances can drive, this is a very practical in modern life.After a great deal of verification, based on SCM alcohol concentration monitor detector than traditional mechanical detector or alcohol plans, monitoring high precision, sensitivity, good dependability, precise convenient extended simple, control powerful functions. Beyond the value of acousto-optic alarm, intuitive accurate. So based on SCM alcohol concentration monitor research has certain value..Keywords:Alcohol concentration sensor microcontroller digital-to-analogHardware design Digital pipe display毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

基于STC89C52单片机防酒驾测试仪的设计

基于STC89C52单片机防酒驾测试仪的设计

基于STC89C52单片机防酒驾测试仪的设计酒驾是一种严重的交通违法行为,不仅危害驾驶者自身的安全,还会对其他交通参与者造成严重伤害甚至生命危险。

为了提高交通安全意识,减少酒驾事故的发生,设计一种基于STC89C52单片机的防酒驾测试仪是非常必要和重要的。

本文将详细介绍该设计方案及其实现过程。

第一章:引言1.1研究背景近年来,随着我国经济的快速发展,汽车保有量逐年上升,交通事故也呈上升趋势。

其中,酒驾导致的交通事故占比居高不下,给人民的生命安全和社会稳定带来严重威胁。

为了降低酒驾事故的发生率,我国政府对酒驾行为的打击力度越来越大,同时也出台了相应的法律法规来严格规范驾驶行为。

在此背景下,研究防酒驾测试仪具有重要的现实意义。

1.2研究意义研究防酒驾测试仪的目的在于开发一款能够实时、准确地检测驾驶员是否酒驾的设备,从而降低酒驾事故的发生。

这对于保障道路交通安全,减少因酒驾造成的经济损失和人员伤亡具有十分重要的意义。

1.3国内外研究现状目前,国内外已经有很多关于酒驾测试仪的研究成果。

主要有酒精传感器、红外线传感器、呼气式酒精检测仪等类型。

然而,这些设备在实际应用中仍存在一定的局限性,如检测准确性、设备成本、操作简便性等方面。

因此,有必要对现有技术进行改进和优化,提高酒驾测试仪的整体性能。

第二章:STC89C52单片机概述2.1 STC89C52单片机特点STC89C52单片机是一款高性能、低功耗的8位微控制器,具有如下特点:1)高速:指令执行速度快,可达到24MHz;2)丰富的外设接口:方便与其他器件连接;3)强大的抗干扰能力:适应恶劣环境;4)低功耗:节能环保,适用于长时间运行。

2.2 STC89C52单片机引脚功能及连接方式STC89C52单片机具有40个引脚,包括电源、地、时钟、复位、串行通信等常用接口。

根据实际需求,合理选择引脚并进行连接。

2.3 STC89系列开发环境搭建STC89系列单片机开发环境主要包括硬件调试器、编程器、仿真器等工具。

酒精浓度测试

酒精浓度测试

酒精浓度测试设计题目: 酒精溶度测试仪智能酒精浓度检测仪的设计摘要:随着科技的进步,智能产品在社会生产和人们生活等方面扮演着越来越重要的角色。

本文介绍的是一款智能酒精浓度检测仪的设计方案,以STC89C52单片机和酒精传感器为核心,具有声光报警和LCD显示功能。

为了满足不同环境下的监测,可依照不同的环境设置不同的阀值,超过阀值即进行声光报警,提示危害。

该设计方案的优点是硬件电路设计简单,软件功能采纳C 语言进行调试,方便灵活。

而该仪器具有灵敏度高、工作性能好、低功耗、低成本,较高的性价比等优点。

可用于交通检测、酒厂和食品工厂发酵监控等场所。

关键词:智能;酒精浓度;检测仪;STC89C52单片机;阀值;C语言;交通检测Design for Intelligent Alcohol Concentration DetectorAbstract: With the progress of science, intelligent products gradually play an important role in many aspects, such as social produce, people’s daily life. This paper introduces an intelligent alcohol concentration detector, which is based on STC89C52 single-chip microcomputer and alcohol sensor (transducer). It has several functions, including detecting alcohol concentration in different environment, giving an alarm with voice and glowing, and LCD display, except for this, we can also set the valve number of alcohol concentration to meet different environment’s detecting, namely, when the detecting num over the value, the detector can suggest danger. The excellences of this design precept : easy hardware circuit ,software function adopt to C language to test, which is convenient and flexible .what’s more, the detector with high delicacy, low energy consumption and spending. It can be used in traffic detect, wine factory, food factory and so on.Key words: intelligent; alcohol concentration; detector; STC89C52 single-chip microcomputer; value ;C language; traffic detect目录第1章绪论 01.1选题的依据和课题的意义 01.2国内外研究概况 01.3课题研究方法 (1)1.4设计构成及研究内容 (1)第2章系统的工作原理与结构 (2)2.1工作原理 (2)2.2结构框图 (3)2.3智能酒精浓度检测仪的整体结构特点 (3)第3章检测仪的硬件设计 (3)3.1单片机的选择 (3)3.2酒精浓度检测的设计 (5)3.2.1 MQ-3气敏传感器的结构和外形 (6)3.2.2 MQ-3灵敏度特性曲线 (7)3.2.3 MQ-3的标准工作条件和环境条件 (7)3.2.4酒精浓度信号的采集 (8)3.3模数转换电路的设计 (9)3.3.1 ADC0809的特点 (9)3.3.2 模数转换电路 (9)3.4按键设定阈值及阈值储备电路的设计 (10)3.5液晶接口电路的设计 (10)3.6声光报警电路的设计 (11)3.7单片机与PC机串口通讯 (12)3.8晶振电路的设计 (12)3.9复位电路的设计 (13)3.10附加功能电路的设计 (13)第4章检测仪的整体原理图和实物图 (14)第5章检测仪的软件实现 (15)5.1A/D转换的软件实现 (15)5.2阈值设定及显示的软件操纵 (16)5.3整体软件操纵流程 (17)第6章检测仪的软件功能调试 (19)6.1按键修改酒精阈值程序 (19)6.2模数转换测试 (19)6.3液晶显示程序设计 (20)6.4声光报警测试 (23)6.5整体功能调试程序 (23)第7章结论 (24)参考文献 (25)致谢 ......................................................................................................... 错误!未定义书签。

基于STC89C52酒精浓度报警概要

基于STC89C52酒精浓度报警概要

电气工程学院2013年“萌芽计划”科创训练计划报告题目名称:基于 51 单片机的酒精浓度测量报警装置作者姓名学号班级:王伟敏 20121843 电气 2012-2 班周彤昕 20123699 电气 2012-2 班刘少博20121762 电气 2012-1 班指导老师:二〇一四年四月电气工程学院2013年“萌芽计划”科创训练计划报告目录目录..........................................................................................................................1 第 1 章绪论.......................................................................................................................2 第2 章设计方案 (2)2.1 概述 (2)2.1.1 实验任务 (2)2.1.2 测试仪特点 (2)2.2 确立方案 (3)2.2.1 设计方案的比较 (3)2.2.2 设计方案的选择 (4)2.2.3 可行性分析 (4)2.3 硬件设计 (5)2.3.1 微控制单元 STC89C52 (5)2.3.22.3.32.3.4 MQ-3 酒精传感器....................................................................................7 AD0832 模数转换.................................................................................... 8 LCD1602 液晶显示. (9)2.4 软件设计 (10)2.4.1 编译语言的选择 (10)2.4.2 主程序模块 (10)2.4.3 A/D 转换模块 (11)2.4.4 按键输入模块 (11)2.4.5 液晶显示输出模块 (12)第 3 章实验结果 (15)3.1 理论分析与计算 (15)3.2 测试方法与仪器 (15)3.3 测试数据及测试结果分析 (16)3.4 心得体会 (16)参考文献 (17)附录 (18)1电气工程学院2013年“萌芽计划”科创训练计划报告第1章绪论随着我国经济的增长和社会的转变,汽车成为现代社会主要的交通工具,随之带来的酒后驾驶已成为形成交通事故最主要的因素。

基于单片机的呼气式酒精气体检测仪的设计

基于单片机的呼气式酒精气体检测仪的设计

基于单片机的呼气式酒精气体检测仪的设计设计目的:
设计一个基于单片机的呼气式酒精气体检测仪,用于检测人们呼气中的酒精含量。

设计流程:
1. 确定检测原理
我们采用的是半导体传感器的检测原理。

半导体传感器可以检测到空气中的酒精气体,根据酒精气体浓度的不同,传感器的电阻值也会发生变化。

2. 确定硬件平台
我们选择STC89C52单片机作为硬件平台,它拥有多个IO引脚和模拟转换器,可以满足我们的需求。

同时,我们还需要一块LCD 显示器、一个酒精传感器、电源电路以及其他必要的元器件。

3. 确定软件流程
软件流程包括初始化、读取传感器数据、计算酒精浓度、控制LCD显示器和报警器等部分。

4. 硬件连接
将单片机、传感器、LCD显示器、报警器等连接起来,并加上相应的电源电路。

5. 软件编程
根据软件流程编写程序,并将程序下载到单片机中。

6. 测试调试
将检测仪连接到电脑或其他设备上进行测试,检查功能是否正常以及是否有漏洞。

7. 操作使用
设计好的检测仪可被人们用来检测自己或他人的呼气中是否含有酒精。

如果检测结果显示酒精超标,就需要禁止其驾驶机动车辆等高危操作。

总体来说,基于单片机的呼气式酒精气体检测仪,可以在保证安全的前提下,及时发现和制止酒后驾车行为,减少交通事故发生率。

基于单片机控制的酒精浓度检测系统的设计_王瑜瑜

基于单片机控制的酒精浓度检测系统的设计_王瑜瑜

基于单片机控制的酒精浓度检测系统的设计王瑜瑜 刘少军(西安航空职业技术学院 西安 710089)摘 要:以当下社会普遍关注的酒驾问题为研究背景,设计了酒精浓度的控制与检测系统,为及时预防交通事故的发生提供了依据和可能性。

采用STC89C52单片机、MQ-3酒精浓度传感器、LED显示等模块设计的酒精浓度测试系统,兼有浓度监测与报警的功能。

经实验证明,该系统具有功耗低、体积小、稳定性强、测量精度高、反应灵敏等优势。

它的测量浓度范围为:0.104~0.172mg/L,误差小于0.002mg/L,非常适合在饮酒量自测、酒精浓度监控等场合应用。

关键词:STC89C52单片机;MQ-3传感器;测试系统;酒精浓度检测中图分类号:TE937 文献标识码:A 国家标准学科分类代码:510.1010Design of alcohol concentration testing system based-on the MCU controlWang Yuyu Liu Shaojun(Xi’an Aeronautical Polytechnic Institute,Xi’an 710089,China)Abstract:This thesis put the alcohol driving issue of common concern to society as research background.The text de-signs the alcohol concentration control and test system and provides the basis and possibility of timely preventing the traf-fic accidents.The alcohol concentration test system designed by using STC89C52micro-controller,MQ-3alcohol concen-tration sensor,LED display module in this paper has both the concentration monitoring and alarm functions.The experi-ment shows that the system has the advantages of low power consumption,small volume,high stability,and high meas-uring accuracy sensitive reaction and so on.Its measuring range is 0.104-0.172mg/L and the error is less than 0.002mg/L.It is very suitably applied in the drinking self-test,the alcohol concentration monitoring.Keywords:STC89C52micro-controller;MQ-3sensor;testing system;alcohol concentration test 收稿日期:2014-081 引 言调查显示大约60%的交通事故都是酒后驾驶造成的,酒后驾车已成为威胁人类生命的“隐形杀手”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录目录 01. 实验任务 (1)2.设计方案 (1)2.1硬件设计 (1)2.1.1 MCU微控制单元 (1)2.1.2 MQ-3酒精传感器 (3)2.1.3 TLC549模数转换 (4)2.1.4 LCD1602液晶显示 (5)2.2软件设计 (5)2.2.1 编译语言的选择 (5)2.2.2 主程序模块 (5)2.2.3 A/D转换模块 (6)2.2.4 按键输入模块 (7)2.2.5 液晶显示输出模块 (8)3.实验结果 (9)4.心得体会 (10)附录 (11)附录1 参考文献 (11)附录2 硬件电路原理图 (12)附录3 硬件电路PCB图 (14)附录4 程序清单 (16)1. 实验任务设计一个基于单片机的酒精浓度检测系统,检测结果用LED或LCD显示器显示。

基于STC89C52单片机,MQ-3酒精浓度传感器,本设计设计一种具有检测及超限报警功能的酒精浓度测试系统。

2.设计方案2.1硬件设计由于本次设计需要用到单片机,来完成对酒精浓度的检测,分析了网上的相似课题,有很多是用酒精浓度传感器MQ-3来完成酒精浓度检测系统的设计。

鉴于本次时间限制,本次设计中采用的是STC89S52单片机来控制整个电路,电路中采用的是LCD1602来显示实验实时数据。

A/D芯片的选择中,用到的是TI公司生产的TLC549,主要是这块芯片的性能优良,时序操作简单,能很好的解决本次设计中对实时数据转换的要求。

系统结构框图如图1所示:图1 系统结构框图2.1.1微控制单元STC89C52基于本系统设计内容的需要,综合考虑后,我们选择STC89C52单片机为控制核心。

主要基于考虑STC89C52是低功耗,超低价,高速,高可靠,强抗静电,强抗干扰,功能强大的单片机。

STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内振荡器及时钟电路。

同时STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。

其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本。

STC单片机有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。

STC89C52单片机引脚如图2:图2 STC89C52引脚图•Vcc:电源电压•GND:地•P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。

•P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

•P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱(吸收或输出电流)4个TTL逻辑门电路。

•P3口:P3口时一组带有内部上拉电阻的8位双向I/O口。

P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。

•RST:复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

•ALE :当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。

一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

•PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当89C5X 单片机由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。

在次期间,当访问外部数据存储器,将跳过两次信号。

• EA/VPP:外部访问允许。

欲使CPU仅访问外部程序存储器(地址为0000H-FFFH),端必须保持低电平(接地)。

•XTAL1:振荡器反相放大器及内部时钟发生器的输入端。

•XTAL2:振荡器反相放大器的输出端2.1.2 MQ-3酒精传感器MQ-3酒精传感器对乙醇蒸气有很高的灵敏度,并且响应和恢复快速。

另外,MQ-3酒精传感器简单的驱动回路和可靠的稳定性是相比较于其他型号传感器的优点。

MQ-3酒精传感器可用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也可用于其他场所乙醇蒸气的检测。

MQ-3酒精传感器有6只针状管脚,其中4个管脚(两个A和两个B)用于信号读取,两个H脚用于提供加热电流。

电路图如下图3:图3 MQ-3传感器电路原理图2.1.3 TLC549模数转换TLC549是TI公司生产的一种低价位、高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,其转换速度小于17us,最大转换速率为40000HZ,4MHZ典型内部系统时钟,电源为3V至6V。

它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。

TLC549有8引脚,为双列直插是封装,起相应引脚功能如下:REF+:正基准电压输入 2.5V≤REF+≤Vcc+0.1。

REF-:负基准电压输入端,-0.1V≤REF-≤2.5V。

且要求:(REF+)-(REF-)≥1V。

VCC:系统电源3V≤Vcc≤6V。

GND:接地端。

CS:芯片选择输入端,要求输入高电平VIN≥2V,输入低电平VIN≤0.8V。

DATA OUT:转换结果数据串行输出端,与 TTL 电平兼容,输出时高位在前,低位在后。

ANALOGIN:模拟信号输入端,0≤ANALOGIN≤Vcc,当ANALOGIN≥REF+电压时,转换结果为全“1”(0FFH),ANALOGIN≤REF-电压时,转换结果为全“0”(00H)。

I/O CLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。

在实际使用过程中,起时序图如图4所示。

图4 TLC549时序图2.1.4 LCD1602液晶显示LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16×1,16×2,20×2和40×2行等的液晶显示模块,模块组件内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。

2.2软件设计2.2.1 编译语言的选择对于单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。

汇编语言的可控性较高级语言来说更具优越性。

程序编写语言比较常见的有C语言、汇编语言。

汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。

C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。

还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。

且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。

基于C语言和汇编语言的优缺点,本系统采用C语言编写方法。

软件编写的主体思路是将系统按功能模块化划分,然后根据模块要实现的功能写各个子程序。

整个软件程序的编写采用查询式方式编写的。

2.2.2 主程序模块主程序实现的功能:与硬件相结合实现酒精浓度检测系统的各个功能。

主要是检测与显示,门限调整与显示,检测数据显示功能子函数的调用。

见图5图5 主程序流程图2.2.3 A/D转换模块(1)模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给MCU。

(2)TLC549转换的流程图见下图6图6 数转换流程图当CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB (A7)自DATA OUT 端输出,接着要求自I/O CLOCK 端输入8个外部时钟信号,前7个I/O CLOCK信号的作用,是配合TLC549 输出前次转换结果的A6-A0 位,并为本次转换做准备:在第4个I/O CLOCK 信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个I/O CLOCK 信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。

转换时间为36 个系统时钟周期,最大为17us。

直到A/D转换完成前的这段时间内,TLC549 的控制逻辑要求:或者CS保持高电平,或者I/O CLOCK 时钟端保持36个系统时钟周期的低电平。

由此可见,在自TLC549的I/O CLOCK 端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换开始。

2.2.4 按键输入模块(1)按键时显现人机对话的一个控制按钮,通过按键的操作,对系统进行发送操作指令,后经与MCU串行通信,然后在液晶上显示。

(2)按键查询式的流程图见下图7:图 7 按键查询式的流程图按键的四个键分别接P1.0,P1.1,P1.2,P1.3,由于P1口具有上拉电阻,所以不再需要加上拉电阻进行电压的放大。

2.2.5 液晶显示输出模块LCD1602模块在本系统中主要起着开界面数字显示,以及各控制效果的显示。

采用直接访问方式。

液晶显示的操作流程图见下图8:图8 液晶显示的操作流程图液晶显示D0到D7口接P0.0到 P0.7,单独使用一个口,为了避免数据的干扰,由于P0口没有上拉电阻,所以需要一个排阻进行电压的扩大.3.实验结果本次设计的酒精浓度检测系统,通过设计相关的硬件电路及进行相应的软件调试,最后实现了实时检测酒精浓度,并的在LCD1602上显示的目的。

设计出的电路,完全符合本次实验的设计要求,通过按键可以实现调整门限值,对于检测到的酒精浓度高于设定门限值时,会显示实时酒精浓度值,系统会自动实现灯光报警功能。

硬件成品图硬件上电开机界面酒精浓度低红灯不报警酒精浓度高红灯报警4.心得体会通过本次课程设计,让我重新的系统的复习了微机原理与单片机方面的知识,收获颇丰。

首先,对于以前学习过的有关单片机方面的知识,在设计电路过程中又有了新的认识,对于各种概念的理解也有了提高。

在做板的过程中要非常小心。

硬件调试过程是相对繁锁的,要特别注意以下几点。

其一,通电之后看AT89S51晶振是否起振,晶振起振后是标准的正弦波,示波器测得其频率为11.0592MHz;其二,硬件电路的设计既要追求实际功能的实现,也要考虑元器件的购买方便。

在本次课设中学到的知识,我将它们发挥到其他的学习中去,也将在今后的学习中不断的提高和完善;而在此期间发现的不足,我将努力改善,通过学习实践等方式不断提高,克服那些知识障碍,以求在今后的学习过程中获得更大的进步!附录附录1 参考文献[1]《微机原理及应用》黄冰等编著重庆:重庆大学出版社,2003[2]李维提,郭强.《液晶显示应用技术》北京:电子工业出版社,2000.[3]《基于Proteus的电路及单片机系统设计与仿真》周润景等编著北京:北京航空航天大学出版社,2006[4]《单片机实验与实践教程》万光毅等编著北京:北京航空航天大学出版社,2006[5]《单片机人机接口实例集》公茂法等编著北京:北京航空航天大学出版社,1997[6]《单片机应用设计200例》张洪润等编著北京:北京航空航天大学出版社,2006[7]《单片机程序设计实例》先锋工作室编著北京:清华大学出版社,2003[8]《单片机C语言编程与实例》赵亮,侯国锐编著北京:人民邮电出版社,2003[9]《新编MCS-51单片机应用设计》张毅刚等编著哈尔滨:哈尔滨工业大学出版社,2004附录2 硬件电路原理图附录3 硬件电路PCB图附录4 程序清单主程序main.c#include<reg52.h>#include<intrins.h>/*******************宏定义**********************/#define uint unsigned int#define uchar unsigned charsbit k0=P1^0; //start the systemsbit k1=P1^1; //setup the stand_valuesbit k2=P1^2; //the stand_value upsbit k3=P1^3; //the stand_value downsbit alarm=P2^0; //the alarm port/*************************变量及字符串的定义*************************/ uchar LCD_Char[]="0123456789ABCDEF-.";uchar LCD_string0[]="welcome to guet";uchar LCD_string1[]="102021226";uchar M_Time[]="2011--9--8";// show timeuchar M_Detect[]="Detect:"; //检测uchar M_Detect1[]="Alcohol:";uchar M_Detect2[]="set_val:";//uchar M_time1[]={"Time"}; //时间//uchar M_Storage[]={"Storage"}; //memoryuint data_temp=0;uint flag=0;/*******************函数声明**********************/extern void initial_lcd1602(void);extern void Display_List_Char(uchar x,uchar y,uchar *str); //the extern have no mean ,only to explain the function is in the other fileextern void write_lcd_command( uchar write_data); //the function of write commandextern void Display_One_Char(uchar x,uchar y,uchar dat);extern void write_lcd_command( uchar write_data);extern void xs_int(unsigned int shuju,bit t);extern unsigned char ADconv(void);extern void display(unsigned int shuju,bit t);/*******************子函数**********************/void delay_ms(uint n){ uint i,j; //delay 10msfor(i=n;i>0;i--){for(j=1200;j>0;j--){_nop_();}}}/******************主函数**********************/void main()uint set_value=200; //is mean 20.0mg/ml ; the big_value is 800.0mg/ml mean alcohol; alcohol drive is 20.0mg/100ml=0.2mg/mluchar data_char=0;initial_lcd1602();delay_ms(100);Display_List_Char(0,0,LCD_string0); //welcomedelay_ms(100); //delay 3sDisplay_List_Char(1,0,LCD_string1); //welcomedelay_ms(300);write_lcd_command(0x01); //clean screenDisplay_List_Char(0,0,M_Time); //show timedelay_ms(30);Display_List_Char(0,0,M_Time); //show timedelay_ms(100);Display_List_Char(1,0,M_Detect); //show detect interfacedelay_ms(100);// Display_List_Char(1,0,M_Detect); //show detect interface// delay_ms(300);while(1){_nop_();if(k0==0||k1==0||k2==0||k3==0){if(k0==0){flag=0;Display_List_Char(1,0,M_Detect1); //show detect interface delay_ms(50);data_char=ADconv();data_temp=data_char;delay_ms(10);xs_int(data_temp,1);delay_ms(10);if(data_temp>=set_value){alarm=0;}else { alarm=1;}}if(k1==0){Display_List_Char(1,0,M_Detect2);xs_int(set_value,1);flag=1;}if(k2==0&&flag==1){delay_ms(10);if(k2==0){set_value=set_value+10;xs_int(set_value,1);}delay_ms(50);}if(k3==0&&flag==1){delay_ms(10);if(k3==0){set_value=set_value-10;xs_int(set_value,1);}delay_ms(50);}}}}显示程序LCD1602.c#include<reg52.h>#include<string.h>#define uchar unsigned char#define uint unsigned int#define LCDPORT P0sbit RS=P2^5; //RS数据命令选择端,高电平数据,低电平命令sbit RW=P2^6; //RW读写选择端,高电平读操作,低电平写操作sbit EN=P2^7; //EN使能控制端,E高电平跳变为低电平时LCD执行命令/******************************LCD1602驱动程序*************************************/void lcd_delay(uchar delaytime){while(delaytime)delaytime--;}void write_lcd_command(uchar write_command){lcd_delay(40);RS=0;RW=0;LCDPORT=write_command;EN=1;EN=0;}void write_lcd_data(uchar write_data){lcd_delay(40);RS=1;RW=0;LCDPORT=write_data;EN=1;EN=0;}void Display_One_Char( uchar x,uchar y,uchar dat) //x表示行,y表示列{switch(x){case 0:write_lcd_command(0x80+y);break;case 1:write_lcd_command(0xc0+y);break;}write_lcd_data(dat);}void Display_List_Char(uchar x,uchar y,uchar *str){/* switch(x){case 0:write_lcd_command(0x80+y);break;case 1:write_lcd_command(0xc0+y);break;}while (*str!='\0'){write_lcd_data(*str);str++;}*/while (*str!='\0'){Display_One_Char(x,y,*str);str++;y++;if(y==16){ //若y等于16,进入if语句y=0;x^=1; // y赋0,x与1按位异或取反}}}void xs_int(unsigned int shuju,bit t) //显示一个数字{unsigned int huancun[6]={0};unsigned char biaozhi=0,i;if (shuju < 10) biaozhi = 1;else if(shuju < 100) biaozhi = 2;else if(shuju < 1000) biaozhi = 3;else if(shuju < 10000) biaozhi = 4;else if(shuju <=65535) biaozhi = 5;switch(biaozhi){case 5:huancun[0] = shuju/10000;case 4:huancun[5] = shuju%10000/1000;case 3:huancun[4] = shuju%1000/100;case 2:huancun[3] = shuju%100/10;case 1:huancun[1] = shuju%10;break;default:break;}for(i=6;i>1;i--){if(i==3)Display_One_Char(t,12,'.');else Display_One_Char(t,15-i,0x30+huancun[i-1]); } Display_One_Char(t,14,'m');Display_One_Char(t,15,'g');}void display(unsigned int shuju,bit t) //显示一个数字{unsigned int huancun[6]={0};unsigned char biaozhi=0,i;if (shuju < 10) biaozhi = 1;else if(shuju < 100) biaozhi = 2;else if(shuju < 1000) biaozhi = 3;else if(shuju < 10000) biaozhi = 4;else if(shuju <=65535) biaozhi = 5;switch(biaozhi){case 5:huancun[5] = shuju/10000;case 4:huancun[4] = shuju%10000/1000;case 3:huancun[3] = shuju%1000/100;case 2:huancun[2] = shuju%100/10;case 1:huancun[1] = shuju%10;break;default:break;}for(i=6;i>1;i--){Display_One_Char(t,15-i,0x30+huancun[i-1]);}Display_One_Char(t,14,'*');Display_One_Char(t,15,'g');}void initial_lcd1602(void) //初始化LCD1602{uchar i;EN=0;for(i=200;i>0;i--)lcd_delay(248);write_lcd_command(0x38); //0x38命令,双行显示,显示5x7的点阵字符for(i=4;i>0;i--)lcd_delay(248);write_lcd_command(0x38); //再写一次0x38命令,双行显示,显示5x7的点阵字符for(i=4;i>0;i--)lcd_delay(248);write_lcd_command(0x0c); //无光标,不闪烁for(i=4;i>0;i--)lcd_delay(248);write_lcd_command(0x06); //光标右移,文字不移动for(i=4;i>0;i--)lcd_delay(248);write_lcd_command(0x01); //清屏for(i=4;i>0;i--)lcd_delay(248);}A/D转换程序Tlc549.c#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit CLK = P3^4; /* AD时钟信号*/ sbit CS = P3^5; /* AD片选信号*/ sbit DOUT = P3^3; /* 数据输出*/uchar adc_result = 0; /* AD计算结果*/void delay(uchar us){while(us--);}/* 读取AD输出的8bit数据*/uchar ADconv(void){uchar data_out=0;uchar i;CS = 1;_nop_();CS = 0;for (i=0; i<8; i++) /* 读取8位数据*/{CLK = 0;data_out = (data_out<<1)|DOUT;CLK = 1;_nop_();}CLK = 0;CS = 1;delay(2); /*转换间隔延时21us以上*/ return(data_out);}。

相关文档
最新文档