欢迎光临~ 开云体育登录入口

行业新闻

酒精浓度测的试仪doc

时间: 2023-10-31 00:10:59 |   作者: 开云全站APP

  酒精浓度测试仪毕业论文 题 目: 此外,因为交通事故造成的经济损失也相当惊人。据事故调查统计,大约50%—60%的车祸与饮酒有关。中国公安部门在2009年8月,在全国各地加强查处酒后驾驶的力度,以减少由酒后驾驶造成的恶通事故。要查处就涉及到检测人体内的酒精含量和使用设备来进行仔细的检测的问题。 本文研究设计了一种用于公共场所具有检测及超限报警功能的酒精浓度智能测试仪。其设计的具体方案基于89C51单片机,MQ3酒精浓度传感器。系统将传感器输出的4~20mA的标准信号通过以AD0832为核心的A/D转换电路调理后,经由单片机进行数据处理,最后由LCD显示酒精浓度值。文中详细的介绍了数据采集子系统、数据处理过程以及多个方面数据显示子系统和报警电路的设计方法和过程。系统对于采样地点超出规定的酒精浓度时二极管报警电路提醒监测人员。同时,操作人员对于具体报警点的上限值能够最终靠单片机编程进行设置。 关键词:酒精浓度传感器(MQ3);MCU;A/D转换器;软件设计;硬件设计 Abstract Since 2000, with Chinas rapid economic development and the rapid increase peoples living standard, China has gradually stepped into car society, drink driving accident caused by more and more impact on society is also growing, Alcohol is becoming more and more brutal killers. According to statistics, the worldwide number of people killed in road accidents every year on more than 60 million people, left with permanent disability of 400 million or more, usually the injured were numerous. In many countries, traffic accidents have become the first cause of accidental deaths. In addition, the economic losses caused by the accident is quite amazing. Accident investigation, according to statistics, about 50% -60% of car accidents and alcohol-related. China’s Ministry of Public Security in August 2009, around the country to strengthen efforts to investigate and deal with drink driving, to reduce the drink driving accident caused by the vicious. To investigate the human body involving the detection of alcohol and use of equipment to detect problems. In this paper, design a public place for the detection and limit alarm functions with an alcohol concentration of intelligent tester. This design,based on STC89C51 microcontroller and MQ3 alcohol concentration sensor. System sensor output 4 ~ 20mA standard signal through AD0832 core A / D converter circuit, after conditioning, data processing by the MCU, the final alcohol concentration value from the LCD display. This paper describes the data acquisition subsystem, data processing and data display subsystem and alarm circuit design methods and processes. System requirements for the sampling sites exceeding the alcohol concentration diode reminder alarm circuit monitors. Meanwhile, the operator specific alarm point for the upper limit set by MCU programming. Alcohol tester will bring a driving signal prior to a safe Key words:Alcohol concentration sensor (MQ3); STC85C52 MUC; A / D converter; Software design;Hardware design 目 录 引言 1 1. 绪论 2 1.1 酒精浓度检测仪开发背景 2 1.2 酒精浓度检测仪的发展 2 1.3 酒精浓度检测仪设计内容 2 2. 方案器件简介 3 2.1 MCU选择的简介 3 2.2 数模转换器的简介 5 2.3 时钟芯片的简介 7 2.4 液晶显示器的简介 8 3 总体方案设计 9 3.1 STC89C52单片机 9 3.2 ADC0832数模转换 10 3.3 AT24C02存储器 10 3.4 LCD1602液晶显示 10 3.5 编译软件介绍 12 4 硬件设计 13 4.1 最小系统的实现 13 4.2 数据采集设计 15 4.3 A/D转换设计 16 4.4 按键设计 16 4.5 外围扩充存储器电路 17 4.6 时钟芯片电路 18 4.7 LCD1602液晶显示设计 19 4.8 报警设计 21 4.9 电源电路设计 22 5. 软件设计 22 5.1 编译语言的选择 22 5.2 主程序模块 23 5.3 A/D转换模块 23 5.4 按键输入模块 24 5.5 时钟模块 24 5.6 液晶显示输出模块 26 5.7 外围存储模块 27 6. 系统调试 28 6.1 系统硬件调试 28 6.1.1元器件的焊接 28 6.1.2电路测试 28 6.2 系统软件调试 29 6.3 系统整体调试 29 7. 结束语 29 谢 辞 31 参考文献 32 附 录 33 附录一 硬件设计仿线 附录二 硬件设计原理图和PCB图 34 附录三 检测程序 35 引言 随着中国经济的快速地发展,人民生活水平的迅速提高,中国逐渐步入“汽车社会”,酒后驾驶行为所造成事故慢慢的变多,对社会的影响也慢慢变得大,酒精正在成为越来越凶残的“马路杀手”。慢慢的变多的交通事故在我们的身边发生,让人心痛,经济的发展,任何一个人都希望人的安全意识也该发展。此外,由交通事故造成的经济损失也相当惊人。据事故调查统计,超过半数的车祸与饮酒有关。在全国各地加强查处酒后驾驶的力度,以减少由酒后驾驶造成的恶通事故。要查处就涉及到检测人体内的酒精含量和使用设备来进行仔细的检测的问题。 本文研究设计了一种用于公共场所具有检测及超限报警功能的酒精浓度智能测试仪。其设计的具体方案基于89C52单片机,MQ3酒精浓度传感器。系统将传感器输出信号通过A/D转换电路调理后,经由单片机进行数据处理,最后由LCD显示酒精浓度值。从而让驾车的人清楚自己该在啥状况下可以开车,这是一个在现代生活很实用,很负责的一个设计,给社会带来福音。 1. 绪论 1.1 酒精浓度检测仪开发背景 酒精的及其重要的作用,是逐渐使得脑部及神经系统反应迟钝——这也是许多人喜欢适量饮酒的根本原因。喝一、两杯酒对人有镇定或松弛的作用。即使是少量的酒精,也没有刺激振奋的作用,这跟许多人的想法正好相反。然而,酒精有时会造成抑制力明显减弱,这会导致创造力的出现,或者是有时会导致实际的侵略攻击性行为。 根据WHO数据,全球2003年的人均纯酒精消费量为6.2L,其中欧洲地区人均达11.9L,美洲地区人均为8.7L。俄罗斯及其周边的东欧国家酒精消费量最高,其次为欧洲其他几个国家。在人均国民生产总值(GDP)低于7000美元的低收入国家,酒精消费量与人均GDP相关,GDP越高酒精消费量越高。 受到酒精影响的司机通常会有如下特征:对信号灯反应慢;逆向行驶;摇摆不定、突然转向、飘忽不定或在道路中线驾驶;乱踩刹车;转弯幅度大;蛇形;没有原因就停车;开车速度极慢;突然转弯或违法转弯;天黑时不开前灯。据统计,驾驶员酒后开车,其发生交通事故的比率为没有饮酒情况下的16倍。由日常道路交互与通行安全违背法律规定的行为和交通肇事案例来看,机动车驾驶员酒后驾车约占38.6%;而摩托车交通肇事中,酒后驾驶的比例则高达72.3%。 酒后驾驶让人付出了惨痛的代价,为了尽最大可能避免类似事故的发生,酒精浓度检测仪随之产生。 1.2 酒精浓度检测仪的发展 以对气体中酒精含量进行仔细的检测的设备有五种基本类型,即:燃料电池型(电化学)、半导体型、红外线型、气体色谱分析型、比色型。但由于价格和使用起来更便捷的原因,目前(截止2009年8月)常用的只有燃料电池型(电化学型)和半导体型两种。 燃料电池是当前全世界都在广泛研究的环保型能源,它可以直接把可燃气体转变成电能,而不产生污染,酒精传感器只是燃料电池的一个分支。燃料电池酒精传感器采用贵金属白金作为电极,在燃烧室内充满特种催化剂,使进入燃烧室内的酒精充分燃烧转变为电能,也就是在两个电极上产生电压,电能消耗在外接负载上,此电压与进入燃烧室内气体的酒精浓度成正比。 与半导体型相比,燃料电池型呼气酒精测试仪具有稳定性高,精度高,抗干扰性好的优点。但是由于燃料电池酒精传感器的结构要求非常精密,制造难度相当大,目前(2009年)只有美国、英国、德国等少数几个国家能够生产,加上材料成本高,因此价格相当昂贵,是半导体酒精传感器的几十倍。 1.3 酒精浓度检测仪设计内容 本论文主要完成酒精浓度检测仪软件设计,设计内容有:A/D转换器程序、控制程序、超标报警、键盘检测、多个方面数据显示等。 本系统采用单片机为控制核心,以实现便携式酒精浓度检测仪的基本控制功能。系统基本功能内容有:数据处理、时间设置、开始测量、超标报警、键盘检测 本系统模块设计采用功能模块化的设计思想,本论文内容分为以下几个章节:设计器件简介和选择;硬件的设计;软件设计和系统调试。 2. 方案器件简介 硬件设计部分最重要的包含:MCU、A/D、时钟芯片、LCD、外围扩展数据RAM等芯片的选择,以下做一些器件的比较。 2.1 MCU选择的简介 本系统采用单片机为控制核心。单片机/MCU主要有51基本型和52增强型,而相比之下52型比51型功能更为强大,ROM和RAM存储空间更大,52还兼容51指令系统。基于本系统模块设计内容的需要,考虑后,我们最终选择单片机STC89C52为控制核心;主要是基于考虑STC89C52是无法解密低功耗,超低价高速,高可靠强抗静电,强抗干扰,功能强大的单片机。 STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内振荡器及时钟电路, 89C5X可根据常规办法来进行编程,也可以在线Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本。STC单片机有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不一样产品的需求。 STC89C52单片机单片机引脚功能(如图2.1): ?Vcc:电源电压 ?GND:地 图2.1 单片机引脚图 ?P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线位)和数据总线复用,在访问器件激活内部上拉电阻。 在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 ?P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表2-1。 Flash编程和程序校验期间,P1接收低8位地址。表2-1为 P1.0和P1.1的第二功能 表-1 P1.0和P1.1的第二功能 ?P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,同时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOV@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOV@RI指令)时,P2口输出P2锁存器的内容。 Flash编程或校验时,P2亦接收高位地址和一些控制信号。 ?P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入‘1’时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。 P3口作为一般的I/O口线外,更重要的用途是它的第二功能,如表2-2所示: 此外,P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 ?RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。 ?ALE :当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。正常的情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。 表-2 P3口第二功能端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 (外中断0) P3.3 (外中断1) P3.4 T0(定时/计数器0) P3.5 T1(定时/计数器1) P3.6 (外部数据存储器写选通) P3.7 (外部数据存储器读选通) )。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位复位,可禁止ALE操作。该位置复位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。 ? :程序储存允许()输出是外部程序存储器的读选通信号,当89C5X单片机由外部程序存储器取指令(或数据)时,每个机器周期两次 有效,即输出两个脉冲。在次期间,当访问外部数据存储器,将跳过两次信号。 ? /VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFH), 端一定要保持低电平(接地)。必须要格外注意的是:如果加密位LB1被编程,复位时内部会锁存 端状态。 如 端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。 Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。 ?XTAL1:振荡器反相放大器及内部时钟发生器的输入端。 ?XTAL2:振荡器反相放大器的输出端。 2.2 数模转换器的简介 实现A/D转换的基本方法很多,有计数法、逐次逼近法、双斜积分法和并行转换法。由于逐次逼近式A/D转换具有速度,分辨率高等优点,而且采用这种方法的ADC芯片成本低,所以我们采用逐次逼近式A/D转换器。逐次逼近型ADC包括1个比较器、一个模数转换器、1个逐次逼近寄存器(SAR)和1个逻辑控制单元。逐次逼近型是将采样信号和已知电压不断作比较,一个时钟周期完成1位转换,依次类推,转换完成后,输出二进制数。这类型ADC的分辨率和采样速率是相互牵制的。优点是分辨率低于12位时,价格较低,采样速率也很好。 ADC0832模数转换器具有8位分辨率、双通道A/D转换、输入输出电平与TTL/CMOS相兼容、5V电源供电时输入电压在0~5V之间、工作频率为250KHZ 、转换时间为32 微秒、一般功耗仅为15MW等优点,适合本系统的应用,所以我们采用ADC0832为模数转换器件。 ADC0832 具有以下特点: ? 8位分辨率; ? 双通道A/D转换; ? 输入输出电平与TTL/CMOS相兼容; ? 5V电源供电时输入电压在0~5V之间; ? 工作频率为250KHZ,转换时间为32μS; ? 一般功耗仅为15mW; ? 8P、14P—DIP(双列直插)、PICC 多种封装; ? 商用级芯片温宽为0度 to +70度,工业级芯片温宽为?40度 to +85度;芯片接口说明: ? CS_ 片选使能,低电平芯片使能。 ? CH0 模拟输入通道0,或作为IN+/-使用。 ? CH1 模拟输入通道1,或作为IN+/-使用。 ? GND 芯片参考0 电位(地)。 ? DI 数据信号输入,选择通道控制。 ? DO 数据信号输出,转换数据输出。 ? CLK 芯片时钟输入。 ? Vcc/REF 电源输入及参考电压输入(复用)。 ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。其内部有一个8通道多路开关,它能够准确的通过地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。 主要特征: DC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近,ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能: IN0~IN7:8路模拟量输入端。 ?8位数字量输出端。 ?ADDA、ADDB、ADDC:3位地址输入线路模拟输入中的一路 ?ALE:地址锁存允许信号,输入,高电平有效。 ?START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 ?EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 ?OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 ?CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 ?REF(+)、REF(-):基准电压。 ?Vcc:电源,单一+5V。 ?GND:地。 2.3 时钟芯片的简介 DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路.提供秒分时日日期.月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM 指示决定采用24 或12 小时格式.DS1302 与单片机之间能简单地采用同步串行的方式来进行通信,仅需用到三个口线 I/O 数据线 SCLK串行时钟.时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信.DS1302 工作时功耗很低,保持数据和时钟信息时功率小于1mW.DS1302 是由DS1202 改进而来,增加了以下的特性.双电源管脚用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器.它大范围的应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域. 8 位暂存数据存储RAM; 使用串行I/O 口方式使得管脚数量最少; 工作电压:2.0~5.0V; 工作电流2.0V 时,小于300nA; 读/写时钟或RAM 数据时有两种传送方式单字节传送和多字节传送字符组方式; 8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配; 简单3 线接口; 与TTL 兼容Vcc=5V; 可选工业级温度范围-40 +85; 图2.1 DS1302引脚图 图2.1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302做相关操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST一定要保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向)。SCLK始终是输入端。 根据上述介绍和这次设计的要求,我选择使用DS1302作为这次设计的时钟芯片(如图2.1)。 2.4 液晶显示器的简介 带中文字库的128X64是一种具有4位/8位并行、2线线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块;基本特性: 低电源电压(VDD:+3.0--+5.5V)(2)、显示分辨率:128×64点 ?内置汉字字库,提供8192个16×16点阵汉字(简繁体可选) ?内置 128个16×8点阵字符,2MHZ时钟频率 ?显示方式:STN、半透、正显,驱动方式:1/32DUTY,1/5BIAS ?视角方向:6点,背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 ?通讯方式:串行、并口可选,内置DC-DC转换电路,无需外加负压 ?无需片选信号,简化软件设计,工作时候的温度: 0度 - +55度 ,存储温度: -20度 - +60度。 LCD1602字符型液晶显示器其用法: ?单5V电源电压,低功耗、长寿命、高可靠性 ?内置192种字符(160个5×7点阵字符和32个5×10点阵字符) ?具有64个字节的自定义字符RAM,可自定义8个5×8点阵字符或4个5×11点阵字符 ?显示方式:STN、半透、正显 ?驱动方式:1/16并口,1/5串口 ?背光方式:底部LED ?通讯方式:4位或8位并口可选 ?标准的接口特征:适配MC51和M6800系统MPU的操作时序 LCD1602液晶显示屏的主要技术参数如下表所示:(表2-3) 表2-3 LCD1602液晶主要参数 显示容量 16×2个字符 芯片工作电压 4.5~5.5V 工作电流 2.0mA(5.0V) 模块最佳工作电压 5.0V 字符尺寸 2.95×4.35(mm) 3 总体方案设计 在这次的整体设计中主要涉及下面几个维度(如图3.1): 图3.1 整体方案结构图 下面介绍各个模块使用的器件: 3.1 STC89C52单片机 STC89C52是的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的只读程序存储器(PEROM)和256K bytes的随机存取数据存储器,器件使用高密度,非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器和FLASH存储单元,功能强大,STC89C52单片机适合于许多较为复杂控制应用场合。 主要性能参数: ?8K字节可重擦写FLASH闪存存储器 ?1000次写/擦循环 ?时钟频率:0Hz—24MHz ?三级加密存储器 ?256字节内部RAM ?32个可编程I/O口线个中断源 ?可编程串行UART通道 ?低功耗的空闲和掉电模式 ?片内振荡器和时钟电路 3.2 ADC0832数模转换 ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,能适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更便利。通过DI 数据输入端,可以轻易的实现通道功能的选择。 3.3 AT24C02存储器 在本设计中使用的是24C02存储芯片,是电可擦除的PROM,8个引脚功能及两线串行接口。电压允许范围1.8V~5V。串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。在一般单片机系统中,24C02 数据受到干扰的情况是很少的,基本的读写功能外,还对地址功能和WP引脚保护功能进行了全面的检测,发现一种ATMEL(激光印字)以及XICOR牌号的24C02具有全面的符合I2C总线协议的功能,而有些牌号24C02要么没有WP引脚保护功能,要么没有器件地址功能(即2 片24C02不能共用一个I2C总线),有些甚至两种功能均无。所以说一些同样功能型号的电子器件在兼容性上往往会带来意想不到的问题,值得引起注意。 3.4 LCD1602液晶显示 LCD1602字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16×1,16×2,20×2和40×2行等的液晶显示模块,模块组件内部主要由LCD显示屏、控制器、列驱动器和偏压产生电路构成。 LCD1602液晶显示屏外观尺寸 LCD1602液晶显示屏分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如图3.2所示: 图3.2 LCD1602尺寸图 1602液晶显示屏采用标准的16脚接口,其中各接口的功能如下表(2-4)所示: 表2-4 LCD1602的16管脚功能 引脚号 引脚名 电平 输入/输出 引脚说明 1 VSS 电源地 2 VDD 电源正极(+5V) 3 VL 液晶显示偏压信号 4 RS 0/1 输入 数据/命令选择端,0:输入指令,1:输入数据 5 R/W 0/1 输入 读/写选择端,0:向LCD写入指令或数据,1:从LCD读取信息 6 E 1→0 输入 使能信号,1时读取信息,1→0(下降沿)执行指令 7 D0 0/1 输入/输出 数据总线 输入/输出 数据总线 输入/输出 数据总线 输入/输出 数据总线 输入/输出 数据总线 输入/输出 数据总线 输入/输出 数据总线 输入/输出 数据总线 BLA +VCC LCD背光电源正极 16 BLK 接地 LCD背光电源负极 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会使屏幕显示不清晰,使用时能够最终靠一个10K的电位器调整对比度。 第4脚:RS为数据/命令选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写选择端,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线 编译软件介绍 Keil软件简介: 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的持续不断的发展,从广泛使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在持续不断的发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 4 硬件设计 4.1 最小系统的实现 在本次设计中我们采用STC89C51来实现一个单片机系统能运行起来的需求最小的系统,电路图见图4.1 图4.1单片机最小系统图 上图由晶振电路和复位电路,STC89C51芯片组成,构成最小的单片机系统, 下面详细的介绍其中的两个电路。 晶振电路 单片机工作的过程中各指令的微操作在时间上有严格的次序,这种微操作的时间次序称作时序,单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准,89c52的时钟产生方式有两种,一种是内部时钟方式,一种是外部时钟方式。内部时钟方式即在单片机的外部接一个晶振电路与单片机里面的振荡器组合作用产生时钟脉冲信号,外部时钟方式是把外部已有的时钟信号引入到单片机内,此方式常用于多片89C52单片机同时工作,以便于各单片机的同步,一般要求外部信号高电平的维持的时间大于20ns.且为频率低于12MHz的方波。对于CHMOS工艺的单片机,外部时钟要由XTAL1端引入,而XTAL2端应悬空。 本系统中为了尽可能降低功耗的原则,采用了内部时钟方式。 电路图见图4.2: 图4.2晶振电路图 在89C52单片机的内部有一个震荡电路,只要在单片机的XTAL1和XTAL2引脚外接石英晶体(简称晶振)就构成了自激振荡器并在单片机内部产生时钟脉冲信号,图中电容器C1和C2稳定频率和快速起振,电容值在5—30pF,典型值是22pF,晶振CYS选择的是12MHz。 复位电路 单片机开始工作的时候,必须处于一种确定的状态,否则,不知哪是第一条程序和如何开始运行程序。端口线电平和输入输出状态不确定可能使外围设备误动作,导致严重事故的发生;内部一些控制寄存器(专用寄存器)内容不确定可能会引起定时器溢出、程序尚未开始就要中断及串口乱传向外设发送数据……..因此,任何单片机在开始工作前,都一定要进行一次复位过程,使单片机处于一种确定的状态。 当在89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。 实际应用中,复位操作有两种基本形式:一种是上电复位,另一种是上电与按键均有效的复位,上电复位,要求接通电源后,单片机自动实现复位操作。常用的上电复位,上电瞬间RST引脚获得高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。 本设计中复位电路采取的是开关复位电路,开关S9未按下是上电复位电路,上电复位电路在上电的瞬间,由于电容上的电压不能突变,电容处于充电(导通)状态,故RST脚的电压与VCC相同。随着电容的充电,RST脚上的电压才慢慢下降。选择合理的充电常数,就能保证在开关按下时是RST端有两个机器周期以上的高电平从而使STC89C52内部复位。开关按下时是按键手动复位电路,RST端通过电阻与VCC电源接通,通过电阻的分压就能轻松实现单片机的复位。电路图见图4.3: 图4.3 复位电路图 RST引脚的高电平只要能保持充足的时间(2个机器周期),单片机就能够直接进行复位操作。该电路典型的电阻和电容参数为:晶振为12MHz时,C1为10uF:R4为8.2。 4.2 数据采集设计 (1)从传感器过来的电压信号,必须放大,滤波,采集,转换才能被MCU识别和处理。由于假若每一路都设置放大、滤波等器件,那么成本会很大,所以信号的采集一般用多路模拟通路做出合理的选择。然而选择多路模拟开关时一定要考虑以下的几个因素:通道数量、切换速度、开关电阻和器件的封装形式。总之数据采集与硬件的选择有很大的关系。 (2)传感器的选择 酒精浓度传感器是由MQ3传感器组成。MQ3传感器/MQ3模块详细的介绍如下表4-1: (3)测量电路 测量电路由酒精浓度传感器MQ3,ADC0832组成。 酒精传感MQ3经AD0832与STC89C52单片机相连,在显示器上显示出酒精的浓度值,当超过国家规定的标准时报警。 表4-1 传感器参数表 名称 MQ3传感器 参数名称 技术条件 备注 Vc 回路电压 ≤15V AC or DC VH 加热电压 5.0V±0.2V AC or DC RL 负载电阻 可调 ? RH 加热电阻 31Ω±3Ω 室温 PH 加热功耗 ≤900mW ? B.环境条件 符号 参数名称 技术条件 备注 Tao 使用温度 -10℃-50℃ ? Tas 储存温度 -20℃-70℃ RH 相对湿度 小于95% RH O2 氧气浓度 21%(标准条件) 氧气浓度会影响灵敏度特性 最小值大于2% C.灵敏特性 符号 参数名称 技术参数 备注 Rs 敏感体电阻 1MΩ- 8 MΩ (200ppm alcohol ) 适合使用的范围: 10-1000ppm Alcohol α (200/100)alcohol ? 浓度斜率 ≤0.6 标准工作条件 温度: 20℃±2℃ Vc:5.0V±0.1V 相对湿度: 65%±5% Vh: 5.0V±0.1V 预热时间 不少于24小时 4.3 A/D转换设计 正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示起始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能。如图4.4: 图4.4 模数转换电路图 4.4 按键设计 ⑴本系统应用有人机对话功能,该功能即能随时发出各种控制命令和数据输入以及和LCD连接显示运作时的状态和运行结果。键盘分为:独立式和矩阵式两类,每一类按其编码方法又可大致分为编码和非编码两种。由于本系统只有UP、DOWN 、OK 、CANCEL 4个控制命令,所需按键较少,所以本系统选择独立式按键。电路图见图4.5: 图4.5 按键电路图 ⑵独立式按键是直接用I/O口线构成的单个按键电路。每个独立式按键占有一根I/O口线。各根I/O口线之间不会相互影响。在此电路中,按键输入部采用低电平有效,上拉电阻保证了按键断开时,I/O口线有确定的高电平,(STC89C52 .P1口内部接有上拉电阻)所以就不需要再外接上拉电阻。 ⑶键盘抖动的消除:抖动的消除大概能分为硬件削抖和软件削抖。 ①硬件削抖是采用硬件电路的方法对键盘的按下抖动及释放抖动进行削抖,经过削抖电路后使按键的电平信号只有两种稳定状态。 ②软件削抖的基本原理是当检测出键盘闭合时,先执行一个延时子程序产生数毫秒的延时,待接通时的前沿抖动消失后再判别是否有健按下。当按键释放时,也要经过数毫秒延时,待后沿抖动消失后再判别键是否释放。 ③由于应用硬件削抖还需要外加器件,成本相对较高,所以本系统选择软件延时削抖的方法。 4.5 外围扩充存储器电路 基于STC85C52单片机具有4KB的程序存储器(ROM),256B的数据存储器(RAM),由于考虑到本系统的数据处理与存储所需的容量,现在需要扩充存储器的容量。在应用中要保存一些参数和状态,据了解基于EEPROM的存储芯片是一种很好的选择。我们选定了AT24C02存储器。电路图见图4.6: 图4.6 外围扩充存储电路图 4.6 时钟芯片电路 因为此系统需要记录测量发生的时间,所以需要时钟芯片来记录不同人在不同时间的监测数据,因此我们在系统中加入了时钟芯片。对时钟芯片的要求首先是低功耗,其次是编程简单,缩短程序开发时间,实际上也就缩短了系统用于实际生产所用的开发周期以及成本,在本系统,我们选择了DS1302时钟芯片。 图4.7 时钟电路图 ⑴我们时钟电路选择的芯片是 DS1302,其内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与单片机通信。而通信时,仅需要3个口线)RES(复位), (2)I/O数据线)SCLK(串行时钟)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。其工作时功耗很低,广泛应用于电话,传真,便携式仪器等产品领域。 寄存器名 命令字 取值 范围 各位内容 写操作 读操作 7 6 5 4 3~0 秒寄存器 80H 81H 00~59 CH 10SEC SEC 分寄存器 82H 83H 00~59 0 10MIN MIN 时寄存器 84H 85H 01~12 00~23 1/24 0 10/(A/P) HR HR 日寄存器 86H 87H 01~28,29、30、31 0 0 10DATE DATE 月寄存器 88H 89H 01~12 0 0 0 10M MONTH 周寄存器 8AH 8BH 01~07 0 0 0 0 DAY 年寄存器 8CH 8DH 01~99 10YEAR YEAR 写保护寄存器 8EH 8FH WP 0 0 0 0 慢充电寄存器 90H 91H TCS TCS TCS TCS DS DS RS RS 时钟突发寄存器 BEH BFH 表4-2 时钟控制字对照表 ⑵ DS1302主要性能有:时实时钟能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年的调整能力;读/写时钟或RAM数据时,有单字节和多字节传送两种方式;与DS1202/TTL兼容。 ⑶ DS1302引脚概述:X1,X2:振荡源,外接32。768KHZ晶振;SCLK:串行时钟输入端。 ⑷ 日历、时钟寄存器与控制字对照表、日历、时钟寄存器命令字、取值范围以及各位内容对照表。见表4-2。 4.7 LCD1602液晶显示设计 LCD1602液晶显示模块与计算机的接口电路有两种方式。它与单片机的接口方法分为直接访问方式和间接控制方式。 直接访问方式是把液晶模块作为存储器或I/O设备直接接在单片机的总线上,单片机以访问存储器或I/O设备的方式操作液晶显示模块的工作。间接控制方式则不使用单片机的数据系统,而是利用它的I/0口来实现与显示模块的联系。即将液晶显示模块的数据线口连接作为数据总线,另外三根时序控制信号线口中未被使用的I/O口来控制。这种访问方式不占用存储器空间,它的接口电路与时序无关,其时序完全靠软件编程实现。本系统采用间接控制方式: 以下为液晶显示电路接线 液晶电路图 在单片机系统中应用液晶显示器作为输出器件有以下几个有点: 显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。 数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。 体积小、重量轻:液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻的多。 功耗低:相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器要少的多。 在主电路图中接在P0口处有一个排阻RP1 ,由于P0口没有内接上拉电阻,为了为P0口外接线路有确定的高电平,所以要接上排阻RP1,使用的是10K的排阻,以确保有P0口有稳定的电平。电路连接图见图4.9: LCD按其显示方式通常可大致分为断式、点字符式、点阵式等。还有黑白、多灰度、彩色显示等。液晶显示原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就显示黑色,这样就可以显示出图形。针对于本系统要显示汉字,字母,数字等,以及其在一个界面同时要显示的字数,本系统要以图形的形式显示各运行结果,我们最 终选择LCD1602型号的LCD。 ⑵ 字符显示:字符显示比较复杂,一个字符由16x8点阵组成,即要找到和显示屏是某几个位置对应的RAM区的字节,再使不同的位置为‘1’其他的为‘0’;为‘1’的点亮,为‘0’的不亮,这样就显示出一个字符。 图4.9 上拉电阻电路图 4.8 报警设计 在单片机应用系统中,一般的工作状态可以通过指示灯或数码显示来指示,供操作人员参考,了解系统的工作状况。但对于某些紧急状态,比如系统检测到的错误状态等,为了使操作人员不至于忽视,及时采取措施,往往还需要有某种更能引人注意,提起警觉的报警信号。这种报警信号通常有三种类型:一是闪光报警,因为闪动的指示灯更能提醒人们注意;二是鸣音报警,发出特定的音响,作用于人的听觉器官,易于引起和加强警觉;三是语音报警,不仅能起到报警作用,还能直接给出警报种类的信息。其中,前两种报警装置因硬件结构简单,软件编程方便,常常在单片机应用系统中使用;而语音报警虽然警报信息较直接,但硬件成本高,结构较复杂,软件量也增加。闪光报警实现单频音报警的接口电路比较简单,。 图4.10 报警电路图 这一章比较具体的说明了系统硬件设计的内容,通过模块化的设计思想,把一个复杂的单片机系统按照功能划分成一个个单独的电路模型,分别进行设计,最后在集成到一起。这种方法对于设计复杂的单片机系统很有效。大大提高系统设计的效率与质量。由于我主要负责的是硬件设计,所以只是简单的介绍硬件方面的内容。 4.9 电源电路设计 在本次设计中,需要一个比较大的电压源和一个5V的单片机供电源,为了实现便携式,设用一个9V的电压源,一般6节电池和一个9V的电池都可以提供,因而需要一个电压转换吧9V转换成5V,设用选用了,ASM117稳压芯片。工作原理如图4.11低压层直流稳压电源电路原理图。该电路是由基准电压、电压放大和电流放大等3个环节组成。其中,基准电压由TL431产生,按图中电路连接,当通过R0的电流在0.5~10 mA时可获得稳定的2.5 V基准输出。 图4.11 低压层直流稳压电源电路原理图 输出电压的具体数值由运算放大器UA确定,采用同相放大器的优越性在于其输入阻抗极大,可很好地将TL431输出的2.5 V电压与后级电路隔离,使其不受负载变化的影响;运放与电阻R3和R2组成比例放大环节,可对基准电压按要求进行比例放大输出,但输出电压最大不能超过运放的电源电压。 5. 软件设计 5.1 编译语言的选择 对于单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。汇编语言的可控性较高级语言来说更具优越性。程序编写语言比较常见的有C语言、汇编语言。汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。 C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。基于C语言和汇编语言的优缺点,本系统采用C语言编写方法。 软件编写的主体思路是将系统按功能模块化划分,然后根据模块要实现的功能写各个子程序。整个软件程序的编写采用查询式方式编写的。 5.2 主程序模块 主程序实现的功能:与硬件相结合实现便携式酒精浓度检测仪的各个功能。主要是检测与显示,时间调整与显示,数据存储。功能子函数的调用。见图5.1 图5.1 主程序流程图 5.3 A/D转换模块 ⑴模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给MCU。 ⑵ADC0832转换的流程图见下图5.2 图 5.2数转换流程图 A/D芯片的数据CS口,连接51单片机的P3.1口,CLK接P3.2,D1和D0接P3.3口。 工作时序如下所示: ADC0832有8只引脚,CH0和CH1为模拟输入端,CS为片选引脚,只有CS置低才能对ADC0832进行配置和启动转换。CLK为ADC0832的时钟输入端。CS在整个转换过程中都必须为低,当CS为低时,在数据输入端DI(数据输入端)加一个高电平,接着在CLK上加一个时钟,DI上的逻辑1就会使ADC0832的DI脱离高阻态,然后通道配置数据伴随着时钟通过DI端移入多路器,当最后一位数据移入多路器时,,DI变为高阻态,在这以前DO(数据输出端)都为高阻态。在经过一个时钟,DO脱离高阻态,从而启动转换。接着从处理器接收时钟信号,每经过一个时钟,转换后的数据就会从高位到低位依次从DO移出,经过8个时钟后,数据又以从低位到高位的形式从DO移出(也是每个时钟移一位)。当最后一位数据移出时转换完成。当CS从低变为高时,ADC0832内部所有寄存器清零。如想要进行下一次转换,CS必须做一个从高到低的跳变,后跟着地此配置数据重复上面的过程。 5.4 按键输入模块 ⑴按键时显现人机对话的一个控制按钮,通过按键的操作,对系统进行发送操作指令,后经与MCU串行通信,然后在液晶上显示。 ⑵按键查询式的流程图见下图(图5.3): 图 5.3按键查询式的流程图 按键的四个键分别接P1.0,P1.1,P1.2,P1.3,由于P1口具有上拉电阻,所以不在需要加上拉电阻进行电压的放大。 5.5 时钟模块 ⑴DS1302模块主要是用于设置时间和与MCU通信经LCD显示时间。 ⑵时钟模块操作流程图见下图5.4: 图 5.4 时钟模块操作流程图 时钟芯片的RST接P3.5,SCLK接P3.6,I/O口接P3.7,我使用的是串行接口通信。进行数据的改变和控制。 DS1302时序图(如图5.5) 图5.5 DS1302读/写时序图 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。数据输入是在输入写命令字的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的上升沿输入数据,数据从0位开始。如果有额外的SCLK周期,它们将被忽略。数据输出是在输出命令字的8个SCLK周期之后,在接下来的8个SCLK周期中的每个脉冲的下降沿输出数据,数据从0位开始。需要注意的是,第一个数据位在命令字节的最后一位之后的第一个下降沿被输 出。只要RST保持高电平,如果有额外的SCLK周期,将重新发送数据字节,即多字节传送。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表4-2: 此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 Ds1302内部寄存器: CH:时钟停止位 寄存器2的第7位; CH=0 震荡工作允许 BIT7=1,12小时模式 CH=1 振荡器停止 BIT7=1,24小时模式 5.6 液晶显示输出模块 LCD模块在本系统中主要起着开界面汉字显示,以及各控制效果的显示。采用直接访问方式。液晶显示的操作流程图见下图5.6: 图 5.6液晶显示的操作流程图 液晶显示D0到D7口接P0.0到 P0.7,单独使用一个口,为了避免数据的干扰,由于P0口没有上拉电阻,所以要一个排阻进行电压的扩大. LCD1602的读写工作时序图如图5.7和图5.8所示: 图 5.7 LCD1602读操作时序 当处于读状态时,RS处于低脉冲,R/W为高脉冲,E为高脉冲 ,D0~D7=状态字 当处于读数据时,RS为高脉冲,R/W为高脉冲,E为高脉冲,D0~D7=数据。 图 5.8 LCD1602写操作时序 当处于写指令RS为低脉冲,R/W,D0D7=指令码,E=高脉冲写数据RS为高脉冲,R/W,ED0~D7=数据 LCD1602 液晶上显示相应的读写数据。在液晶上显示的格式如下: C 0 2 A D D R E S S : 0 X 0 1 W R : 0 1 0 R E A D : 0 1 0 24C02管脚图(如图5.9): 图5.9 24C02管脚图 24C02器件的地址: A0,A1,A2和WP都是接地,所以24C02的读器件地址为:1010001,即0xa1; 写器件地址为即0xa0。 往24C02写数据方式(如图5.10): 图5.10 24C02写数据 当MSB电位为高脉冲时,24C02芯片开始工作,选择地址位写(读)地址位和ACK为低脉冲,芯片开始写入地址并存入数据。 从24C02读是数据方式((如图5.11): 图5.11 24C02读数据 当MSB电位为高脉冲时,24C02芯片开始工作,选择地址位写(读)地址位和ACK为低脉冲,芯片开始读取地址栏中的数据。 6. 系统调试 在前面几章中,我们详细讨论了酒精浓度测试仪的硬件和软件设计,但是要系统真正的运行起来达到预期的指标和功能,就必须对系统进行调试。系统的调试包括系统的硬件和软件设计。 6.1 系统硬件调试 6.1.1元器件的焊接 焊接前应对整个电路板进行检查。首先,用万用表对印制的电路板线路进行检查,该过程是在焊接元器件之前的必要工作,主要是检查印制的电路板线路是否有断路的情况,如果检查没有问题,则可以对元器件进行焊接。焊接前对电阻、电容的量值要进行测量、筛选,选择与电路中参数值一致的元器件,在选择芯片时,要注意芯片与设计要求的型号、规格和安装是否一致。在焊接时,应将印制的电路板认真对照原理图,查看元器件的引脚焊接是否正确。 6.1.2电路测试 电路板焊接完成后,需要对每个元器件的引脚逐个进行检查,一方面是检查有没有引脚虚焊或与其他信号线短路,另一方面是对器件引脚功能的再检查,查看设计是否正确。检查电路焊接没有问题后,则可以进行上电测试。上电测试是调试的关键部分,按照系统方案设计的模块化思想,应该分模块测试系统。首先还是应该测试电源部分,系统上电以后,测试各个电源端口和器件的电源部分是否工作正常,同时应注意系统中有无器件过热情况,如果有的话,可能是相应的器件损坏或电路中有短路,需要认真检查之后再加电。如果没有问题,则可以进行功能的检测。 由于系统硬件较复杂,硬件电路装配、焊接完成后,可能不能正常工作。为了方便调试,采用分块调试的方法。在通电前,一定要检查电源电压的幅值和极性,否则很容易造成芯片的损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V~5.5V之间属正常范围。 6.2 系统软件调试 硬件调试完成以后,软件调试就非常重要。系统软件调试时也要分模块来进行调试,这样才能使进程有条不紊的进行下去,而不至于出现混乱。 首先,检查LCD1602液晶显示屏。LCD1602显示屏上电后,检查是否可以正常显示,第一行显示英文字符,第二行显示时间,此时,按下按键即可对时间进行调整。 其次,调试存储模块。检查存储模块是否能够读写信息,当存入一个数据的时候,从LCD1602中,读出来,看是否与之前存入的数据一致,而可认为存储模块正常工作。 再次,调试单片机与数模转换模块,在LCD模块调试成功之后,就可以调试数模转换模块,在模拟的测试一个电压,若LCD1602能够正常显示记录的数据,则调试成功。 最后调试传感模块,根据传感器的要求,输入一个9V高电压和一个5V电压,则传感能通过AD的转换,在LCD1602显示正常的电压,则调试成功,之后进行程序的运算,使LCD实现酒精浓度数值 6.3 系统整体调试 在软件和硬件的分别调试成功后,然后进行程序的捎入单片机中,进行整块系统的调试,提供9V的电压,使单片机和传感器,和各个元件都能正常工作后,要对传感的最大值和最小值的调试,最小值调试,即把传感器在空气中,环境为无酒精环境,调节滑动变阻器,使LCD1602显示为0,进行多次断电,最终没有数据变化,数值为零,即对传感器的最小值调试成功;传感器的最大值为5V即相对应的浓度为1000PPM,在目前条件找不到如此浓度的酒精,进而,对一般数值的酒精浓度调试,就是在三个相同的容器下,倒入不同量的酒精,然后进行稀释,然后进行测量,在大致的估计得浓度下,看是否有很大偏差,没有就说明,整体调试成功。 7. 结束语 目前,随着人们的生活水平的提高,私家车的数量也越来越多,从而引发的交通是事故也急剧增加,其中大部分是由于酒后驾车。所以设计具有民用价值的便携式酒精浓度检测仪的研制受到了人们的高度重视。设计能够满足生活需要,携带方便的便携式酒精浓度检测仪迫在眉睫。针对目前的现状,该系统模块设计遵守体积小,质量轻,性价比高的原则。 便携式酒精浓度检测仪的设计主要分为硬件设计和软件设计。根据设计前对该系统所要实现功能的要求,综合考虑我们采用STC89C52单片机为控制核心。 软件是用C语言相编写的,具有很好的编写语言的优点,具有很好的可控性、模块化和移植性。编写的思路就是模块化的思想,将系统的各个功能进行划分,然后对各个模块进行设计。本系统的主要模块为传感检测、A/D转换、液晶显示和时钟设置。 软件与硬件相结合的演示的大体流程是:主页面-----显示4个子菜单功能----按键的4个控制-----进入子菜单-----有确认和取消-----按确认----实现相应功能(按取消则返回)。由于所学知识的限制,本系统实现的功能不是很健全 ,但在设计该系统的过程中,让我学会了系统设计的方法,和养成了系统思考的思维方式。 首先要了解系统所要实现的功能;其次根据功能去选择相应的硬件资源;再次将一个大的系统来进行模块化划分,然后逐一去攻破。最后把所有模块进行优化整合,便得到了一个完整的系统。基于这样的思路,完成了便携式酒精浓度检测仪的基本设计。 同时由于本设计是采用在proteus上进行仿真,在keil软件上进行编程,最后二者联调,实现设计任务,但在仿真是无法实现酒精浓度的测试,因此本设计采用滑动变阻器模拟传感器检测酒精浓度时输出的模拟信号,经AD0832转换输入单片机,从而从液晶显示上显示出来。通过对本次毕业设计,我学习了很多在大学遗漏的知识,让我在以后的工作中,更加的得心应手。这不仅仅是一次简单的毕业考察,而是对我们四年大学所学得知识的总结。 谢 辞 本论文是在老师的悉心指导下完成的。林老师渊博的专业相关知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。本论文从选题到完成,每一步都是在林老师的指导下完成的,倾注了林老师大量的心血。在此,谨向林老师表示崇高的敬意和衷心的感谢!对于系里领导的关心和实验室的老师们的辛勤,给咱们提供了实验室这样一个良好的设计环境表示深深地感谢。在四年的学习期间,曾得到很多班级同学的关心和帮助,在此表示深深的感谢。没有他们的帮助和支持是没有很好的方法完成我的毕业论文的,同窗之间的友谊永远长存。我的毕业课题是基于单片机酒精浓度测试仪的设计,是一个实际的小工程。作为一个本科生,我对实际的工程设计认识不够,经验不足,难免在设计的整体框架中,有很多的细节没考虑。我们的指导老师:林科老师并没有指责,而是给予我们鼓励和很多宝贵的建议,并且悉心引导,给予我们一个比较清晰的设计思路。我们沿着这条经验之路,不断地尝试摸索,慢慢地也掌握了设计的基本流程和思考的方法。我们遇到了很多的难题,比如硬件器件的选择,功能的实现等。然而这样的问题并不是我一个能所能解决的,幸运的是有我们的指导老师的悉心指导和小组搭档的全心帮助,所以一个个看似复杂的问题便迎刃而解。 最后我还要再次深深地感谢林科老师、各位小组成员,正是基于林老师的悉心指点和大家的全心的帮助,我才能比较顺利地完成毕业设计。谢谢你们. 参考文献 [1] 黎小桃, 刘祖明Protel 99 SE入门与提高北京:电子工业出版社,2009王东锋,王会良,董冠强单片机C语言应用100例北京:电子工业出版社,2009兰吉昌单片机C51完全学习手册北京:化学工业出版社,2009吕俊芳, 钱政传感器接口与检验测试仪器电路北京:国防工业出版社,2009赵阳电磁兼容工程入门教程北京:机械工业出版社,2009[6] Italian Conference on Sensors and Microsystems?Di Natale, C. Proceedings of the 7th Italian Conference :sensors and microsystems : Bologna, Italy, 4-6 February 2002 [M]. Singapore ;River Edge, N.J. :World Scientific,c2002. [7] 李维提.《液晶显示应用技术》 北京:电子工业出版社,2000. [8] 北京精电蓬远显示技术有限公司.内藏KS0108B/HD61202控制器图形液晶显示模块使用手册. [9] 徐爱钧,彭爱华.《单片机高级语言C51应用程序设计》〔M〕.北京工业出版社,1999. [10] 马忠梅等.单片机的C语言应用程序设计北京:北京航空航天大学出版社,1997 附录三 检测程序 一:主程序 #include reg52.h #include stdio.h #includeLCD1602.h #includeDs1302.h #includeAT24c02.h #includeADC0832.h #define uint unsigned int #define uchar unsigned char //键盘 sbit k0=P1^0; sbit k1=P1^1; sbit k2=P1^2; sbit k3=P1^3; //变量 bit flg=0; //数组 uchar M_time[]={Time}; //时间 uchar M_Detect[]={Detect}; //检测 uchar M_Storage[]={Storage}; //存储 uchar stor[4]; //以定义函数 void initial_lcd1602(void); void delays1(uint n) { while(n--); } /***************子程序************************/ void chang_h(void) { int g; if(k0==0) {for(g=0;g20;){delays1(100);g++;} if(k0==0) {wr_data[4]=readtimeR[4]+1; if(wr_data[4]0x23)wr_data[4]=0x00; } } if(k1==0) {for(g=0;g20;){delays1(100);g++;} if(k1==0) {wr_data[4]=readtimeR[4]-1; if(readtimeR[4]==0x00)wr_data[4]=0x00; } } DS1302_init(); showdata(); Display_List_Char(1,0,lcd_time); } /***************************************/ void chang_m(void) { int g; if(k0==0) {for(g=0;g20;){delays1(100);g++;} if(k0==0) {wr_data[5]=readtimeR[5]+1; if(wr_data[5]0x23)wr_data[5]=0x00; } } if(k1==0) {for(g=0;g20;){delays1(100);g++;} if(k1==0) {wr_data[5]=readtimeR[5]-1; if(readtimeR[5]==0x00)wr_data[5]=0x00; } } DS1302_init(); showdata(); Display_List_Char(1,0,lcd_time); } /*************************************/ void chang_s(void) { int g; if(k0==0) {for(g=0;g20;){delays1(100);g++;} if(k0==0) {wr_data[6]=readtimeR[6]+1; if(wr_data[6]0x23)wr_data[6]=0x00; } } if(k1==0) {for(g=0;g20;){delays1(100);g++;} if(k1==0) {wr_data[6]=readtimeR[6]-1; if(readtimeR[6]==0x00)wr_data[6]=0x00; } } DS1302_init(); showdata(); Display_List_Char(1,0,lcd_time); } /**************************************************/ //主函数 /**************************************************/ void main() { uchar i,dd; uint g; uchar show[4]; unsigned int data_temp=0; initial_lcd1602(); DS1302_init(); delays1(100); Display_List_Char(0,0,LCD_Code2); for(g=0;g100;){delays1(100);g++;} while(1) { if(k0==0k1==0k2==0k3==0) { write_lcd_command(0x01); //清屏 for(g=0;g100;){delays1(100);g++;} Display_List_Char(0,0,M_time); Display_List_Char(0,8,M_Detect); Display_List_Char(1,0,M_Storage); for(g=0;g10;){delays1(100);g++;} /**********************时间**************************/ if(k0==0) //时间 { write_lcd_command(0x01); //清屏 do { if(k3==0) flg=1; showdata(); Display_List_Char(0,0,lcd_dat+3); Display_List_Char(1,0,lcd_time); /************************调时间**************************/ if(k2==0) { do { Display_One_Char(1,10,H); if(k3==0) flg=1; chang_h(); for(g=0;g100;){delays1(100);g++;} if(k2==0) {do { Display_One_Char(1,10,M); if(k3==0) flg=1; chang_m(); for(g=0;g100;){delays1(100);g++;} if(k2==0) {do { Display_One_Char(1,10,S); if(k3==0) flg=1; chang_s(); }while(flg==0); } }while(flg==0); } }while(flg==0);flg=0; write_lcd_command(0x01); } for(g=0;g500;){delays1(100);g++;} } while(flg==0);flg=0; } /*************检测*******************/ if(k1==0) { write_lcd_command(0x01); do { if(k3==0) flg=1; data_temp=ADconv(); stor[0]=data_temp; xs_int(196*data_temp,1); }while(flg==0);flg=0; } /***************存储****************/ if(k2==0) { write_lcd_command(0x01); //清屏 do { if(k3==0) flg=1; for(i=0;i3;) { // i2c_write(0x00+i,0x63+i/*要存的数据*/); i2c_write(0x00+i,stor[0]/*要存的数据*/); i++; } _nop_(); i=0; for(i=0;i3;) { dd=i2c_read(0x00+i);/*读地址数据*/ show[i]=dd; i++; } Display_List_Char(1,0,show); }while(flg==0);flg=0; for(g=0;g500;){delays1(100);g++;} } /***************************************/ } } } 二:

  部编版人教版语文六年级上册期中两套考试测试试卷及答案(两套)35.docx

  部编版人教版语文六年级上册期中两套考试测试试卷及答案(两套)38.docx

  部编版人教版语文六年级上册期中两套考试测试试卷及答案(两套)211.docx

  部编版人教版语文六年级上册期中两套考试测试试卷及答案(两套)310.docx

  北师大版一年级数学上册《分类——整理房间》教学PPT课件(3篇).pptx

  七年级上册 劳动教育《 社会劳动 垃圾分类,你我同行 》作业设计.docx

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者