




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的酒精浓度测试仪摘要本设计实现了对不同浓度酒精的检测和显示,通过适当改进可以用于检测酒后驾车。本文用STC12C5A16AD单片机与MQ-3型气体传感器实现了对酒精浓度的测量,并对测量数据进行显示,同时利用二极管简单显示浓度的高低,在设计允许值时发出报警。论文主要研究了(1)硬件方面,MQ-3气体传感器技术参数的检测和将它接入到酒精浓度检测模块中;将模拟电压信号放大驱动发光二极管点亮报警;将采集到的模拟电压信号通过单片机控制经A/D转换,得到数字电压信号;用于显示浓度的数码管显示模块。(2)软件方面,主要研究了电压到浓度的线性转换和最终浓度值的数码管显示。(3)对设计的传感器进行了标定。设计的传感器对酒精气体反应灵敏,能在有效范围内测量它的浓度值。并且在检测低浓度酒精时误差较小,最大误差为8.2%满足设计要求。关键词:MQ-3气体传感器,A/D转换,STC12C5A16AD单片机目录第一章 绪论3第二章 总体设计42.1 设计任务42.2 设计要求4第三章 硬件设计53.1 硬件设计原理分析53.2 乙醇信号检测及调理电路63.2.1 MQ-3主要技术指标63.2.2 MQ-3结构、外形、测试电路63.2.3 MQ-3传感器调理电路83.3 单片机模块93.3.1 STC12C5A16AD的功能特性103.3.2 STC12C5A16AD的引脚说明113.3.3 单片机系统原理图123.4、显示电路133.4.1 LCD1602显示模块技术参数133.4.2 LCD1602显示模块功能133.4.3 LCD1602显示器工作原理143.5 阈值存储153.6 供电及程序下载电路16第四章 软件设计17第五章 Protel硬件开发软件185.1 Protel软件组成185.2 PCB板设计19第六章 总结与展望226.1 设计结果226.2 设计体会与展望22参考文献23附录一24附录二25附录三26致谢37第一章 绪论从工厂企业到居民家庭,酒精泄露的检测、监控以及对酒后驾车的监测对居民的人身和财产安全都是十分重要且必不可少的。同时,随着我国经济的高速发展,人民的生活水平迅速提高,越来越多的人有了自己的私家车,酒后驾车是导致交通事故的一个主要因素,资料显示,我国近几年发生的重大交通事故中,有将近三分之一是由酒后驾车引起的。由于人们安全意识增强,对环境安全性和生活舒适性要求的提高,为了防止机动车辆驾驶人员酒后驾车,现场实时对人体呼气中酒精含量的检测已日益受到重视,酒精浓度测试仪逐渐得到广泛应用。此外,酒精测试仪也可应用于食品加工、酿酒等需要监控空气中酒精浓度的场合。如今,气体传感器向低功耗、多功能、集成化方向的发展,因此,酒精浓度测试仪具有十分广阔的现实市场和潜在的市场要求。本设计基于STC12C5A16AD单片机设计的酒精气体浓度探测仪,可用来检测酒精气体浓度,酒精气体浓度测试仪在生产生活中有重要的应用,比如,在一些环境要求严格的生产车间,用这种酒精浓度探测仪,可随时检测车间内的酒精气体浓度,当酒精气体浓度高于允许限定值时,发出警报,提醒人们及时通风换气,做到安全生产,此酒精测试仪经过再一步的改进可以使用到酒后驾驶测试上面去,利用该测试仪来告诫驾驶员请勿酒后驾驶。在这次的设计中,利用了MQ-3型酒精的传感器通过对空气中的酒精浓度测试转换成05V的模拟量电压进行输出,把这个05V的电压传送到STC12C5A16AD内部自带的A/D转换模块中去,通过模拟量模块的转换输出一个8位0255的数据给单片机的P1口,再通过单片机进行一些软件程序的处理显示在LCD的液晶上面。第二章 总体设计2.1 设计任务本研究设计的酒精浓度测试仪是一款实用性强、安全可靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC12C5A16AD对检测信号进行A/D转换和处理,最后通过液晶屏显示输出。本研究设计的酒精浓度测试仪还具有醉酒阀值设定功能,可以根据法律法规或用户需要设定修改醉酒阀值,并进行保存,根据信号的传输可初步设计其系统设计方框图如图2-1。 传感器模拟输出单片机LCD显示输出控制输出 图2-1 系统设计方框图2.2 设计要求1) 传感器MQ-3的电压模拟输出范围为05V;2) STC12C5A16AD芯片为52内核8位单片机,内部集成了10位多路A/D转换模块;3) 单片机STC12C5A16AD工作频率为12MHz;4) LCD显示器用1K的电阻分压使其清晰显示,消除“鬼影”。第三章 硬件设计3.1 硬件设计原理分析本硬件由四部分组成:单片机模块,酒精传感器模块,显示模块,存储模块。本系统由单片机STC12C5A16AD控制,其直接控制两个模块:阀值存储模块将与酒精传感器采集到并输送到单片机控制处理后的数字信号相比较,LCD显示模块可以将经过单片机处理过的酒精气体浓度具体量化值显示出来,其硬件系统原理图如图3-1所示。MQ-3乙醇气体传感器输出信号经信号调理电路处理,输出随乙醇浓度变化的电压信号,该电压信号送入单片机系统,经A/D转换,与设定的醉酒阀值进行比较,并显示或报警。图3-1 酒精浓度测试仪方框图3.2 乙醇信号检测及调理电路MQ-3乙醇气体传感器可以应用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。其技术特点为:l 对乙醇蒸汽有很高的灵敏度和良好的选择性l 快速的响应恢复特性l 长期的寿命和可靠的稳定性l 简单的驱动回路3.2.1 MQ-3主要技术指标3.2.2 MQ-3结构、外形、测试电路MQ-3气敏元件的结构和外形如图3-2所示, 由微型Al2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流,表3-3对各个部件进行了详细的描述。图3-2 MQ-3气敏元件的结构外形图表3-3 MQ-3气敏元件的组成材料表 部件材料1气体敏感层二氧化锡2电极金(Au)3测量电极引线铂(Pt)4加热器镍铬合金(Ni-Cr)5陶瓷管三氧化二铝6防爆网100目双层不锈钢(SUB316)7卡环镀镍铜材(Ni-Cu)8基座胶木9针状管脚镀镍铜材(Ni-Cu)MQ-3乙醇气体传感器灵敏度曲线如图3-4所示,其传感原理为气敏电阻的输出阻值随乙醇气体等浓度变化而变化。图3-4 MQ-3乙醇气体传感器灵敏度曲线3.2.3 MQ-3传感器调理电路 MQ-3乙醇气体传感器及其调理电路原理如图3-5所示。其外形如图3-6所示。经过调理,检测信号由电阻值转变成电压值,便于后续电路进行A/D转换和处理。图3-5 传感器及调理模块原理图图3-6 MQ-3传感器模块外形图该传感器模块具有如下特点,方便与单片机系统接口组成检测仪器。l 具有信号输出指示。l 双路信号输出(模拟量输出及TTL电平输出)l TTL输出有效信号为低电平。(当输出低电平时信号灯亮,可直接接单片机) l 模拟量输出05V电压,浓度越高电压越高。3.3 单片机模块STC12C5A16AD是宏晶科技生产的新一代8051单片机,包含有中央处理器(CPU)、程序存储器(FLASH)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶振振荡等模块,几乎包含了数据采集和控制中所需的所有单元模块。STC12C5A16S2单片机相比传统C51功能更加强大,有些特殊功能寄存器被扩展为专用的特殊寄存器。其引脚图和内部结构如图3-7所示:图3-7 STC12C5A16AD单片机管脚图3.3.1 STC12C5A16AD的功能特性(1) 高速:1个时钟/机器周期,增强型8051内核,速度比普通8051快812倍。(2) 宽电压:3.35.5V。(3) 增加外部掉电检测电路,可在掉电时及时将数据保存进EEPROM,正常工作时无需操作EEP。(4) 增加第二复位功能脚,(高可靠复位,可调复位门槛电压,频率小于12Hz,无需此功能)。(5) 低功耗设计:空闲模式(可由任意一个中断唤醒);掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程唤醒。(6) 工作频率:035MHz,相当于普通8051:04205MHz。(7) 时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置。(8) 8/16/20/32/40/48/52/56/60/62K字节片内FLASH程序存储器,擦写次数10万次以上。(9) 1280字节片内RAM数据存储器。(10) 芯片内EEPROM功能,擦写次数10万次以上。(11) ISP/IAP,在系统可编程/在在应用可编程,无需编程器/仿真器。(12) 8通道,10位高速ADC,高速可达25万次/秒,2位PWM还可当2路D/A使用。(13) 2通道捕获/比较单元(PWM/PCA/CCP),也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)。(14) 4个16位定时器,兼容8051的定时器T1/T0,2路PCA实现2个定时器。(15) 可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟。(16) 硬件看门口(WDT)。(17) 高速SPI串行通信端口。(18) 全双异步串行口(UART),兼容普通8051串口。(19) 先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令。(20) 通用I/O口(37/40/44个),复位后为准双向口/弱上拉(普通8051 I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不超过100mA。3.3.2 STC12C5A16AD的引脚说明单片机采用40引脚的双列直插封装方式。图3-7为引脚排列图,40条引脚说明如下:1)主电源引脚Vss和Vcc2)外接晶振引脚XTAL1和XTAL23)控制或与其它电源复用引脚RST,ALE和NA4)输入/输出引脚P0.0P0.7,P1.0P1.7,P2.0P2.7,P3.0P3.7(1)P0口(P0.0P0.7)是一个漏极开路型准双向I/O口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。(2)P1口(P1.0P1.7)是带内部上拉电阻的8位双向I/O口。在EPROM编程和程序验证时,它接收低8位地址。(3)P2口(P2.0P2.7)是一个带内部上拉电阻的8位双向I/O口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。(4)P3口(P3.0P3.7)是一个带内部上拉电阻的8位双向I/O口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。3.3.3 单片机系统原理图该芯片为52内核8位单片机,内部集成了10位多路A/D转换模块,适用于常用检测电路。由STC12C5A16AD组成的单片机系统原理图如图3-8所示。图中AOUT为MQ-3传感器模块输出的检测电压信号,送入ADC7端口进行处理,DOUT为传感器模块输出的数字电平信号,该信号可以根据乙醇气体浓度直接输出报警信号,报警阈值通过模块上的电位器进行调节。图3-8 单片机系统原理图 图3-8中,按键K2和K3为醉酒阈值调整键,其中K2为“增加”,K3为“减小”按键。L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。3.4、显示电路1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。主要功能有:40通道点阵LCD驱动;可选择当作行驱动或列驱动;输出能产生202个LCD驱动波形输入接受控制器送出的串行数据和控制信号,偏压;通过单片机控制将所测的频率信号读书显示出来。3.4.1 LCD1602显示模块技术参数(1) 显示容量:162个字符;(2) 芯片工作电压:4.55.5V;(3) 最佳工作电压:5.0V;(4) 最佳工作电流:2.0Mv;(5) 字符尺寸:2.954.35mm。3.4.2 LCD1602显示模块功能LCD1602显示模块具体功能可见表3-9。表3-9 LCD1602引脚,符号功能说明引脚标号状态说明GND1接地VDD2电源(5V)VO3液晶显示偏压信号,液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)RS4输入寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。R/W5输入读/写信号,高电平1时进行读操作,低电平0时进行写操作E6输入使能信号,下降沿使能,下降沿能触发锁存数据DB0DB7714三态数据总线,进行数据输出BLA15输入背光电源(5V)BLK16输入背光接地3.4.3 LCD1602显示器工作原理LCD1602有11个控制指令,见表3-10。其中,DDRAM:显示数据RAM,用来寄存待显示的字符代码;CGROM:字符发生存储器;CGRAM:用户自定义的字符图形RAM。表3-10 LCD1602控制指令表指令功能清屏清DDRAM和AC值归位AC=0,光标、画面回HOME位输入方式设置设置光标、画面移动方式显示开关控制设置显示、光标及闪烁开、关光标、画面位移光标、画面移动,不影响DDRAM功能设置工作方式设置(初始化指令)CGRAM地址设置设置CGRAM地址。A5A0=03FHDDRAM地址设置DDRAM地址设置读BF和AC值读忙标志BF和和地址计数器AC值写数据数据写入DDRAM或CGRAM读数据从DDRAM或CGRAM数据读出1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”,具体寄存器的选择控制表3-11有操作说明。因为LCD1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如A。表3-11 LCD1602寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01忙标志以及读取位址计数(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据与单片机接口电路如图3-12所示。其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。J2的4、5、6引脚分别接液晶的RS、E/W和E控制引脚,J2的714引脚为数据引脚。图3-12 LCD与单片机接口电路3.5 阈值存储醉酒阈值存储在EEPROM芯片AT24C04中,并可以通过 “增加”、“减少”按键调节并保存。AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。其电路如图3-13所示。图中A0、A1和A2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。图3-13 EEPROM存储电路3.6 供电及程序下载电路本设计采用USB接口供电,电源电压5V。同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写。其电路原理如图10所示。图10 供电及程序下载电路第四章 软件设计本设计软件主程序流程图如图4-1所示。当检测到酒精气味时,气体传感器MQ-3两个电极端A-B间电阻将变小,对应与气体传感器负载电阻的分压将变大,输出电压也将变大。图4-1主程序流程图第五章 Protel硬件开发软件Protel是目前国内最流行的通用EDA软件,它是将电路原理图设计、PCB板图设计、电路仿真和PLD设计等多个实用工具软件组合后构成的EDA工作平台,是第一个将EDA软件设计成基于Windows的普及型产品。它集成了软件界面、仿真功能和PLD设计和信号完整性分析,在此基础上Protel 99SE又增加了一些新的功能,用户使用更加方便灵活。Protel的功能十分强大,在电子电路设计领域占有极其重要的地位。它以其强大功能和实用性,逐渐获得广大硬件设计人员的青睐,是目前众多EDA设计软件中用户最多的产品之一。5.1 Protel软件组成Protel软件主要由电路原理图设计模块、印制电路板设计模块(PCB设计模块)、电路信号仿真模块和PLD逻辑器件设计模块等组成,各模块具有强大的功能,可以很好的实现电路设计与分析。(1) 原理图设计模块(Schematic模块)电路原理图是表示电气产品或电路工作原理的重要技术文件,电路原理图主要由代表各种电子器件的图形符号、线路和结点组成。图4.1所示为一张电路原理图。该原理图是由Schematic模块设计完成的。Schematic模块具有如下功能:丰富而灵活的编辑功能、在线库编辑及完善的库管理功能、强大的设计自动化功能、支持层次化设计功能等。 (2) 印制电路板设计模块(PCB设计模块)印制电路板(PCB)制板图是由电路原理图到制作电路板的桥梁。设计了电路原理图后,需要根据原理图生设计成印制电路板的制板图,然后在根据制板图制作具体的电路板。印制电路板设计模块具有如下主要功能和特点:可完成复杂印制电路板(PCB)的设计;方便而又灵活的编辑功能;强大的设计自动化功能;在线式库编辑及完善的库管理;完备的输出系统等。(3) 电路信号仿真模块电路信号仿真模块是一个功能强大的数字/模拟混合信号电路仿真器,能提供连续的模拟信号和离散的数字信号仿真。它运行在Protel的EDA/Client集成环境下,与Protel Advanced Schematic原理图输入程序协同工作,作为Advanced Schematic的扩展,为用户提供了一个完整的从设计到验证仿真设计环境。在Protel中进行仿真,只需从仿真用元器件库中放置所需的元器件,连接好原理图,加上激励源,然后单击防真按钮即可自动开始。5.2 PCB板设计(1) 定元件的封装 打开网络表(可以利用一些编辑器辅助编辑),将所有封装浏览一遍,确保所有元件的封装都正确无误并且元件库中包含所有元件的封装,网络表中所有信息全部大写,一面载入出问题,或PCB BOM不连续。 标准元件全部采用公司统一元件库中的封装。 元件库中不存在的封装,应自己建立元器件库。(2) 建立PCB板框 根据PCB结构图,或相应的模板建立PCB文件,包括安装孔、禁布区等相关信息。 尺寸标注。在钻孔层中应标明PCB的精确结构,且不可以形成封闭尺寸标注。(3) 载入网络表 载入网表并排除所有载入问题,具体请看PROTEL技术大全。其他软件载入问题有很多相似之处,可以借鉴。 如果使用PROTEL,网表须载入两次以上(没有任何提示信息)才可以确认载入无误。(4) 布局 首先要确定参考点。一般参考点都设置在左边和底边的边框线的交点(或延长线的交点)上或印制板的插件的第一个焊盘。 一但参考点确定以后,元件布局、布线均以此参考点为准。布局推荐使用25MIL网格。 根据要求先将所有有定位要求的元件固定并锁定。 布局的基本原则 A. 遵循先难后易、先大后小的原则。B. 布局可以参考硬件工程师提供的原理图和大致的布局,根据信号流向规律放置主要原器件。C. 总的连线尽可能的短,关键信号线最短。D. 强信号、弱信号、高电压信号和弱电压信号要完全分开。E. 高频元件间隔要充分。F. 模拟信号、数字信号分开。 相同结构电路部分应尽可能采取对称布局。 按照均匀分布、重心平衡、版面美观的标准来优化布局。(5) PCB设计遵循的规则 地线回路规则:图5-1 地线回路规则环路最小规则,即信号线与其回路构成的环面积要尽可能小,环面积要尽可能小,环面积越小,对外的辐射越少,接收外界的干扰也越小。针对这一规则,在地平面分割时,要考虑到地平面与重要信号走线的分布,防止由于地平面开槽等带来的问题;在双层板设计中,在为电源留下足够空间的情况下,应该将留下的部分用参考地填充,且增加一些必要的过孔,将双面信号有效连接起来,对一些关键信号尽量采用地线隔离,对一些频率较高的设计,需特别考虑其地平面信号回路问题,建议采用多层板为宜。 窜扰控制窜扰(CrossTalk)是指PCB上不同网络之间因较长的平行布线引起的相互干扰,主要是由于平行线间的分布电容和分布电感的作用。克服窜扰的主要措施是:A.加大平行布线的间距,遵循3W规则。B.在平行线间插入接地的隔离线。C.减少布线层与地平面的距离 屏蔽保护图5-2 屏蔽保护对应地线回路规则,实际上也是为了尽量减小信号的回路面积,多用于一些比较重要的信号,如时钟信号,同步信号;对一些特别重要,频率特别高的信号,应该考虑采用铜轴电缆屏蔽结构设计,即将所布的线上下左右用地线隔离,而且还要考虑好如何有效的让屏蔽地与实际地平面有效结合。 走线方向控制规则相邻层的走线方向成正交结构,避免将不同的信号线在相邻层走成同一方向,以减少不必要的层间窜扰;当由于板结构限制(如某些背板)难以避免出现该情况,特别是信号速率较高时,应考虑用地平面隔离各布线层,用地信号线隔离各信号线。 电源与地线层的完整性规则对于导通孔密集的区域,要注意避免孔在电源和地层的挖空区域相互连接,形成对平面层的分割,从而破坏平面层的完整性,并进而导致信号线在地层 的回路面积增大。第六章 总结与展望6.1 设计结果本次设计的酒精浓度检测系统,通过设计相关的硬件电路及进行相应的软件调试,最后实现了实时检测酒精浓度,并的在LCD1602上显示的目的。设计出的电路,完全符合本次实验的设计要求,通过按键可以实现调整门限值,对于检测到的酒精浓度高于设定门限值时,会显示实时酒精浓度值,系统会自动实现灯光报警功能,具体工作图见附录2。6.2 设计体会与展望此次酒精测试仪的设计参考了一些网上搜集来得资料,主要是软件方面,在硬件设计上还是花费了一些时间,尤其是对EEPROM的操作上,自上单片机课程以来对于外部访问,尤其是地址操作很不习惯也不熟悉,所以在操作上存在一定的困难。在硬件上对于单片机选型也是一门学问,这次课题设计中必须要用到的两样东西是ADC和串口,那么ATMEL公司的AT89C51系列的单片机不具备自带ADC功能,必须外接ADC0809如此一来在硬件的设计上又增加了新的难度,为了简化电路,提高成功率我选择了STC系列单片机具体型号为STC12C5A16AD,此型号单片机自带8位高速ADC经过软件编程设计即可派上用场,这样大大减轻了设计压力。在一开始的设计电路时本来准备把阀值设定成一个定值输入烧进单片机的程序里,可是后来经过翻阅各种书刊发现各种环境下的阀值是不同的,所以决定用AT24C02来存储阀值,并可以通过两个升降按键来自行调节阀值。在本次毕业设计中学到的知识,我将它们发挥到其他的学习中去,也将在今后的学习中不断的提高和完善;而在此期间发现的不足,我将努力改善,通过学习实践等方式不断提高,克服那些知识障碍,以求在今后的学习过程中获得更大的进步!参考文献1 张福学.现代传感器电路.中国计量出版社,2000.2 万隆, 巴奉丽.单片机原理及应用技术.清华大学出版社,2010.3 李琳,李爱传.酒精浓度测试仪的设计.黑龙江信息科技.2011.04.4 汤竟南,沈国琴.51单片机C语言开发与实例.人民邮电出版社.2008.5 赵春雨.基于STC单片机的矿用智能甲烷传感器的开发与研究.自动化应用.2011.076 雷伏容,张小林,崔浩.51单片机常用模块设计查询手册.清华大学出版社,2010.7 冉伟刚.气体酒精浓度监测报警器. 农业网络信息.2011.10.8 吴桂秀.传感器应用制作入门.浙江科学技术出版社.2004.附录一附录二附录三#include 2402.hvoid DELAY(unsigned int t)while(t!=0)t-;void IICStart(void) SCL=0; DELAY(1); SDA=1; SCL=1; DELAY(1); SDA=0; DELAY(1); SCL=0; void IICStop(void) SDA=0;SCL=1; DELAY(1); SDA=1; DELAY(1); SCL=0; void SEND0(void)SDA=0;SCL=1;DELAY(1);SCL=0;void SEND1(void)SDA=1;DELAY(1);SCL=1;DELAY(1);SCL=0;bit Check_Ack(void) unsigned char errtime=250; DELAY(1); SCL=1; DELAY(1); CY=SDA; while(CY) errtime-; CY=SDA; if (!errtime) IICStop(); return 1; DELAY(1); SCL=0; return 0;void Write_byte(unsigned char dat) unsigned char i;for(i=0;i8;i+)if(dati)&0x80)SEND1();elseSEND0();unsigned char Read_byte(void)unsigned char i,temp=0; for(i=0;i8;i+) SDA=1; SCL=1; DELAY(1); if(SDA=1)temp=temp1;temp=temp|0x01;elsetemp=temp1; SCL=0; return temp;unsigned char rdeeprom(unsigned char addr) unsigned char temp=0;bit flag=0;IICStart();Write_byte(0xa0); Check_Ack();Write_byte(addr);Check_Ack();IICStart();Write_byte(0xa1);Check_Ack();temp=Read_byte();SEND1();IICStop(); return temp; void wrteeprom(unsigned char addr,unsigned char dat) IICStart();Write_byte(0xa0);Check_Ack();Write_byte(addr);Check_Ack();Write_byte(dat);Check_Ack();IICStop(); #include 1602.h#include math.hvoid delay()int i,j;for(i=0; i=10; i+)for(j=0; j=2; j+);uchar Convert(uchar In_Date)/* uchar i, Out_Date = 0, temp = 0; for(i=0; i i) & 0x01; Out_Date |= (temp = 0) sign = 0; else sign = 1; temp = abs(num); baiwei = temp / 100; temp = temp - baiwei*100; shiwei = temp / 10; gewei = temp - shiwei*10; num = abs(num); if (num=100) if (sign = 1) /负数 L1602_char(hang, lie, -); L1602_char(hang, lie+1, baiwei+48); L1602_char(hang, lie+2, shiwei+48); L1602_char(hang, lie+3, gewei+48); else if (num=10) if (sign = 1) L1602_char(hang, lie+1, -); L1602_char(hang, lie+2, shiwei+48); L1602_char(hang, lie+3, gewei+48); else if (sign = 1) L1602_char(hang, lie+2, -); L1602_char(hang, lie+3, gewei+48); #include reg52.H#include STC12c5A.h#include 1602.h#include 2402.h#define uchar unsigned char#define uint unsigned int/声明常量#define ALCH 80 /醉驾标准80mg/L/K_MG_MV和K_ZERO为传感器校准系数,要根据每个MQ-3模块校准#define K_MG_MV 160/66 /传感器灵敏度系数,每毫克/L对应的10毫伏数#define K_ZERO 15 /传感器零点漂移,约130mV/定义按键sbit Key_Up = P36;sbit Key_Down = P37;/定义LED报警灯sbit Led_Warn1 = P34;sbit Led_Warn2 = P35;/定义乙醇传感器TTL电平输出引脚sbit DOUT = P14;/定义标识volatile bit FlagStartAL = 0; /开始转换标志volatile bit FlagKeyPress = 0; /有键弹起标志/全局变量定义uchar Threshold; /酒精浓度上限报警值uint ALCounter; /酒精转换计时器long ALValue; /酒精测量值float ALtemp; /计算临时变量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 Data_Init() ALCounter = 0; ALValue = 0; Led_Warn1 = 1; Led_Warn2 = 2; keyvalue = 0; keyUp = 1; keyDown = 1;/定时器0初始化,中断时间约2毫秒/计算:晶振11.0592MHz,定时器时钟11059200/12=921600,每毫秒922个脉冲/ 16位定时器初值65536-1844=63692=0xf8ccvoid Timer0_Init()ET0 = 1; /允许定时器0中断TMOD = 1; /定时器工作方式选择TL0 = 0xcc; /TH0 = 0xf8; /定时器赋予初值,大约为2毫秒中断1次TR0 = 1; /启动定时器/定时器0中断void Timer0_ISR (void) interrupt 1 using 0TL0 = 0xcc;TH0 = 0xf8; /定时器赋予初值/每1秒钟启动一次AD转换 ALCounter +; if (ALCounter = 500) FlagStartAL = 1; ALCounter = 0; void Port_Init() P1M0 = 0x80; /10000000,P1.7作为AD输入 P1M1 = 0x80; /void ADC_Init() uint i; P1ASF = 0x80; /设P1.7为AD输入 ADC_RES = 0; /清先前的结果 ADC_CONTR|=0x80; /POWER=1,打开ADC电源 for(i=5000;i0;i-) ; /延时 ADC_CONTR = ADC_CONTR&0xE0; /1110,0000 清ADC_FLAG,ADC_START位和低3位 ADC_CONTR = ADC_CONTR&0xf8|0x07; /设置当前通道号为P1.7 for(i=2500;i0;i-) ; /延时/进行AD转换,得到当前酒精值uchar GetADVal() uint i; ADC_CONTR&=0xf7; for(i=250;i0;i-); /待输入电压稳定后开始转换 /ADC_RES = 0; ADC_CONTR |= 0x08; /ADC_Start=1, 启动转换 while(ADC_CONTR&0x10)=0); /等待转换结束ADC_FLAG=1 ADC_CONTR&=0xe7; /清ADC_FLAG和ADC_START位,停止转换 return ADC_RES;/存入设定值void Save_Setting() pSave = (char *)&Threshold; /地址低位对应低8位,高位对应高8位 wrteeprom(0, *pSave); /存醉酒阈值低8位 DELAY(300); pSave +; wrteeprom(1, *pSave); /存醉酒阈值高8位 DELAY(300);/载入设定值void Load_Setting() pSave = (char *)&Threshold;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 委托加工英语合同范本
- 砖机购买合同范本
- 关于梦想的演讲稿(新版16篇)
- 商场承包协议合同范本
- 知识产品顾问合同范本
- 教研室工作计划怎么写2025(5篇)
- 骨干教师个人工作计划2025(5篇)
- 发展银发经济增进老年人福祉
- 跑步俱乐部周末户外计划
- 医药电商市场前景展望
- 配电室改造施工方案
- 《生物经济学》课程教学大纲
- 选矿厂安全培训教材
- 财经法规与会计职业道德(经管类专业)全套教学课件
- 2024年人教版八年级上册物理全册教学课件(新版教材)
- 2021年秋新教科版六年级上册科学全册表格式教案
- 碳谱定量分析方法
- 机械购销合同电子版
- 蓄热式焚烧装置(RTO)
- 2024-2034年中国女式情趣内衣市场发展现状及战略咨询报告
- FZT 51005-2011 纤维级聚对苯二甲酸丁二醇酯(PBT)切片
评论
0/150
提交评论