基于单片机的酒精浓度测试仪本科学位论文.doc

上传人:知****量 文档编号:93226654 上传时间:2023-07-01 格式:DOC 页数:42 大小:1.51MB
返回 下载 相关 举报
基于单片机的酒精浓度测试仪本科学位论文.doc_第1页
第1页 / 共42页
基于单片机的酒精浓度测试仪本科学位论文.doc_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《基于单片机的酒精浓度测试仪本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于单片机的酒精浓度测试仪本科学位论文.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、毕业设计论文 基于单片机的酒精浓度测试仪提供全套,各专业毕业设计毕 业 设 计 论 文基于单片机的酒精浓度测试仪仇 新 指导老师姓名: 张睿专 业 名 称: 电气自动化技术班 级 学 号: 11137211论文提交日期:2013年11月12日论文答辩日期:2013年11月15日2013年 12月 30日摘要毕业设计论文 摘 要本研究设计的酒精浓度测试仪是一款实用性强、安全可靠的气体乙醇浓度检测工具,采用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC12C5A16AD对检测信号进行A/D转换和处理,最后通过液晶屏显示输出。本研究设计的酒精浓度测试仪还

2、具有醉酒阈值设定功能,可以根据法律法规或用户需要设定修改醉酒阈值,并进行保存。本测试仪体积较小便于携带,且操作简单方便,造价较低廉,性价比较高,适合推广使用。关键词:酒精浓度;单片机;传感器;阀值35目录 毕业设计论文AbstractAlcohol concentration tester designed in this study is the gas concentration of ethanol detection tool for a practical, safe and reliable, high precision of MQ-3 alcohol gas sensor to

3、 detect the concentration of ethanol in air, A/D conversion and processing of signal detection using macro crystal, high performance and low cost microcontroller STC12C5A16AD, finally through the LCD screen display output. Alcohol concentration tester designed in this study has drunk threshold setti

4、ng function, can according to laws and regulations or the user needs to set the threshold to modify the drunk, and save. The instrument is small volume to carry, simple and convenient operation, low cost, high performance, suitable for the promotion of the use of.Key words: alcohol; MCU; Alcohol con

5、centration sensor; threshold目录第一章 绪论1第二章 总体设计22.1 设计要求22.2 设计方案2第三章 硬件设计33.1 硬件设计原理分析33.2 酒精传感器模块43.2.1 MQ-3主要技术指标43.2.2 MQ-3结构、外形、测试电路43.2.3 MQ-3传感器调理电路63.3 单片机模块73.3.1 STC12C5A16AD的功能特性83.3.2 STC12C5A16AD的引脚说明93.3.3 单片机系统原理图103.4 显示模块123.5 存储模块133.6 供电及程序下载模块14第四章 软件设计154.1主程序模块154.1.1A/D转换模块164.1

6、.2按键输入模块164.1.3液晶显示输出模块174.2 主程序18第五章 PCB设计255.1 PCB软件简介255.2 PCB板设计25第六章 下载与调试276.1 USB转串口驱动安装276.2 下载程序276.3调试与说明28七章 总结与展望297.1 设计结果297.2 设计体会与展望29致 谢30参考文献31附录A 实验原理图和电路图32附录B 元件清单34附录C 实验现象图片35毕业设计论文 基于单片机的酒精浓度测试仪第一章 绪论从工厂企业到居民家庭,酒精泄露的检测、监控以及对酒后驾车的监测对居民的人身和财产安全都是十分重要且必不可少的。同时,随着我国经济的高速发展,人民的生活水

7、平迅速提高,越来越多的人有了自己的私家车,酒后驾车是导致交通事故的一个主要因素,资料显示,我国近几年发生的重大交通事故中,有将近三分之一是由酒后驾车引起的。由于人们安全意识增强,对环境安全性和生活舒适性要求的提高,为了防止机动车辆驾驶人员酒后驾车,现场实时对人体呼气中酒精含量的检测已日益受到重视,酒精浓度测试仪逐渐得到广泛应用。此外,酒精测试仪也可应用于食品加工、酿酒等需要监控空气中酒精浓度的场合。如今,气体传感器向低功耗、多功能、集成化方向的发展,因此,酒精浓度测试仪具有十分广阔的现实市场和潜在的市场要求。本设计基于STC12C5A16AD单片机设计的酒精气体浓度探测仪,可用来检测酒精气体浓

8、度,酒精气体浓度测试仪在生产生活中有重要的应用,比如,在一些环境要求严格的生产车间,用这种酒精浓度探测仪,可随时检测车间内的酒精气体浓度,当酒精气体浓度高于允许限定值时,发出警报,提醒人们及时通风换气,做到安全生产,此酒精测试仪经过再一步的改进可以使用到酒后驾驶测试上面去,利用该测试仪来告诫驾驶员请勿酒后驾驶。在这次的设计中,利用了MQ-3型酒精的传感器通过对空气中的酒精浓度测试转换成05V的模拟量电压进行输出,把这个05V的电压传送到STC12C5A16AD内部自带的A/D转换模块中去,通过模拟量模块的转换输出一个8位0255的数据给单片机的P1口,再通过单片机进行一些软件程序的处理显示在L

9、CD的液晶上面。目前对酒精测试的装置有燃料电池型,半导体型,红外线型,气体色谱分析性和比色型五种类型。但由于价格方面的原因目前市场上用的是燃料电池型和半导体型。燃料电池型是世界都在研究的环保型能源。它可以把气体直接转换为电能而不产生污染。酒精传感器只是它的一个分支。在燃烧室内充满特种催化剂。使进入燃烧室内的酒精能进行充分燃烧转换为电能。也就是在电极上产生电压消耗在外加负载上。使电压与燃烧室内的酒精浓度成正比。与半导体型相比,燃料电池型的呼吸酒精测试仪具有稳定性好、精度高、抗干扰性能好等优点。但由于其传感器结构要求特别高所以生产成本提别高,制造难度特别大所以只有少数国家能够生产。第二章 总体设计

10、2.1 设计要求本设计的主要内容是用由MQ-3乙醇气体传感器、单片机、EEPROM存储电路、液晶屏和键盘组成的、设计一个酒精浓度测试仪。实现的功能是:1) 实时测量空气中的乙醇气体浓度,在液晶屏上显示。2) 具有乙醇浓度超高报警功能,当测量得到的乙醇浓度超过预先设定的阈值,则红灯报警。3) 电路设计了两个红灯,另一个红灯是传感器直接输出的模拟报警信号,其阈值通过调节传感器模块上的兰色电位器改变,一般可以不用。4) 醉酒阈值可存储至EEPROM存储器,并在液晶屏显示。系统掉电后醉酒阈值不失,可以保持。2.2 设计方案本设计主要由传感器电路、单片机系统、显示电路、存储电路、供电及程序下载电路组成的

11、。单片机的选择是:1) STC12C5A16AD芯片为52内核8位单片机,内部集成了10位多路A/D转换模块;2) 单片机STC12C5A16AD工作频率为12MHz。用高精度MQ-3乙醇气体传感器对空气中的乙醇浓度进行检测,利用宏晶公司高性能低成本单片机STC12C5A16AD对检测信号进行A/D转换和处理,通过按键对芯片写入数据来控制阈值的大小,另外电路外接EEPROM芯片,关闭电源,数据自动存储不会丢失,最后通过液晶屏显示输出。如图2-1:模数转换数字输出模拟输出传感器控制输出单片机LCD显示输出 图2-1 系统设计方框图第三章 硬件设计3.1 硬件设计原理分析本硬件由五部分组成:单片机

12、模块,酒精传感器模块,显示模块,存储模块供电及程序下载模块。本系统由单片机STC12C5A16AD控制,其直接控制两个模块:阀值存储模块将与酒精传感器采集到并输送到单片机控制处理后的数字信号相比较,LCD显示模块可以将经过单片机处理过的酒精气体浓度具体量化值显示出来。MQ-3乙醇气体传感器输出信号经信号调理电路处理,输出随乙醇浓度变化的电压信号,该电压信号送入单片机系统,经A/D转换,与设定的醉酒阀值进行比较,并显示或报警。如图3-1:MQ-3传感器模块DDDDMOKUAIMOKUAIMOKUAI信号处理电路模/数转换电压/酒精浓度转换阀值比较报警外部EEPROMSTC12C5A16AD单片机

13、MQ-3传感器酒精浓度显示图3-1 酒精浓度测试仪硬件结构图3.2 酒精传感器模块MQ-3乙醇气体传感器可以应用用于机动车驾驶人员及其他严禁酒后作业人员的现场检测,也用于其他场所乙醇蒸汽的检测。其技术特点为:l 对乙醇蒸汽有很高的灵敏度和良好的选择性l 快速的响应恢复特性l 长期的寿命、可靠的稳定性和简单的驱动回路3.2.1 MQ-3主要技术指标表3-1 主要技术分类3.2.2 MQ-3结构、外形、测试电路MQ-3气敏元件的结构和外形如图3-2所示, 由微型Al2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装

14、好的气敏元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流,表3-2对各个部件进行了详细的描述。图3-2 MQ-3气敏元件的结构外形图表3-2 MQ-3气敏元件的组成材料表 部件材料1气体敏感层二氧化锡2电极金(Au)3测量电极引线铂(Pt)4加热器镍铬合金(Ni-Cr)5陶瓷管三氧化二铝6防爆网100目双层不锈钢(SUB316)7卡环镀镍铜材(Ni-Cu)8基座胶木9针状管脚镀镍铜材(Ni-Cu)毕业设计论文 基于单片机的酒精浓度测试仪MQ-3乙醇气体传感器灵敏度曲线如图3-3所示,其传感原理为气敏电阻的输出阻值随乙醇气体等浓度变化而变化。图3-3 MQ-3乙醇气体传感器灵敏度曲

15、线3.2.3 MQ-3传感器调理电路MQ-3乙醇气体传感器及其调理电路原理如图3-4所示,技术指标如表3-3所示。经过调理,检测信号由电阻值转变成电压值,便于后续电路进行A/D转换和处理。图3-4 传感器及调理模块原理图该传感器模块具有如下特点(如图3-4),方便与单片机系统接口组成检测仪器。l 具有信号输出指示。l 双路信号输出(模拟量输出及TTL电平输出)l TTL输出有效信号为低电平。(当输出低电平时信号灯亮,可直接接单片机) l 模拟量输出05V电压,浓度越高电压越高。l 对乙醇蒸汽具有很高的灵敏度,良好的选择性,快速的响应恢复特性。主要技术指标:表3-3 技术指标产品型号MQ-3产品

16、类型半导体气敏元件检测气体酒精蒸汽检测浓度0.04-4mg/L负载电阻可调3.3 单片机模块STC12C5A16AD是宏晶科技生产的新一代8051单片机,包含有中央处理器(CPU)、程序存储器(FLASH)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶振振荡等模块。STC12C5A16S2单片机相比传统C51功能更加强大,有些特殊功能寄存器被扩展为专用的特殊寄存器。其引脚图和内部结构如图3-5所示:图3-5 STC12C5A16AD单片机管脚图3.3.1 STC12C5A16AD的功能特性(1) 高

17、速: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/5

18、2/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) 可

19、编程时钟输出功能,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引脚的双列直

20、插封装方式。图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

21、口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。(4)P3口(P3.0P3.7)是一个带内部上拉电阻的8位双向I/O口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。3.3.3 单片机系统原理图该芯片为52内核8位单片机,内部集成了10位多路A/D转换模块,适用于常用检测电路。由STC12C5A16AD组成的单片机系统原理图如图3-6所示。图中AOUT为MQ-3传感器模块输出的检测电压信号,送入ADC7端口进行处理,DOUT为传感器模块输出的数字电平信号,该信号可以根据乙醇气体浓度直接输出报警信号,报警阈

22、值通过模块上的电位器进行调节。图3-6 单片机系统原理图 图中,按键K2和K3为醉酒阈值调整键,其中K2为“增加”,K3为“减小”按键。L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。复位电路用于单片机控制系统开机时所需的信号,通过RST引脚是复位信号的输入端。复位信号是高电平有效实践单片机整个内部状态初始化。高电平有效的持续时间应为24个振荡周期以上。若时钟频率为6MHz,则复位信号至少应持续4微秒以上,才可以使单片机复位。复位以后,07H写入栈指针SP,P0口一P3口均置1(允许输入),程序计数器PC和其它特殊功能寄存器SFR全部清“0”。只要该脚保持高电平,单片机便循环复位。当R

23、ST端由高变低后,由ROM的0000H开始执行程序。单片机的复位操作不影响内部RAM的内容。本单片机的复位方式是手工复位如下图3-7所示:图3-7 复位电路图XTAL1(19脚)和XTAL2(18脚):外接晶体引脚。当晶振确定后,也确定了单片机的基本时序周期。一条指令译码产生的一系列微操作信号在时间上有严格的先后次序,这种次序就是计算机的时序。其基本时序周期有如下四种。 振荡周期:指振荡源的周期,若为内部产生方式,则为石英晶体的振荡周期。T振荡周期/fosc。机器周期:一个机器周期含6个时钟周期(S周期)。T机器周期6*T时钟周期12* T振荡周期12/fosc; STC12CXX系列单片机有

24、1个时钟周期/机器周期。时钟周期:(称S周期)为振荡周期的两倍,时钟周期倍的振荡周期T时钟周期=2* T振荡周期。指令周期:完成一条指令占用的全部时间。805l的指令周期含14个机器周期,其中多数为单周期指令,还有2周期和4周期指令。当使用芯片内部时钟时,两个引脚用于外接石英晶体和微调电容;当使用外部时钟时,用于接入外部时钟脉冲信号,晶振电路如图3-8所示。图3-8 晶振电路图3.4 显示模块显示部分采用SMC 1602液晶屏进行数据显示,其主要技术参数如表3-4所示:显示容量122个字符芯片工作电压4.5-5.5V工作电流2.0Ma最佳工作电压5.0V字符尺寸2954.35(WXH)mm表3

25、-4 液晶屏技术指标接口信号说明如表3-5所示:编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data 1/02VDD电源正极10D3Data 1/03VL液晶显示偏压信号11D4Data 1/04RS数据/命令选择端12D5Data 1/05R/W读/写选择端13D6Data 1/06E使能信号14D7Data 1/07D0Data 1/015BLA背光源正极8D1Data 1/016BLK背光源负极表3-5 液晶屏接口信号说明与单片机接口电路如图3-9所示。其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。J2的4、5、6引脚分别接液晶的RS、E/W和E控制引脚,J2的71

26、4引脚为数据引脚。图3-9 LCD与单片机接口电路3.5 存储模块醉酒阈值存储在EEPROM芯片AT24C04中,并可以通过 “增加”、“减少”按键调节并保存。AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。其电路如图3-10所示。图中A0、A1和A2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。图3-10 EEPROM存储电路3.6 供电及程序下载模块本设计采用USB接口供电,电源电压5V。同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写。其电路原理如图3-11所示。图3-11 供电及程序下

27、载电路第四章 软件设计对于单片机的开发应用中,逐渐引入了高级语言,C语言就是其中的一种。汇编语言的可控性较高级语言来说更具优越性。程序编写语言比较常见的有C语言、汇编语言。汇编语言的机器代码生成效率高,控制性好,但就是移植性不高。C语言编写的程序比用汇编编写的程序更符合人们的思考习惯。还有很多处理器都支持C编译器,这样意味着处理器也能很快上手。且具有良好的模块化、容易阅读、维护等优点,且编写的模块程序易于移植。基于C语言和汇编语言的优缺点,本程序采用C语言编写方法。软件编写的主体思路是将系统按功能模块化划分,包括主程序模块,A/D转换模块,按键输入模块,液晶显示输出模块。然后根据各个模块要实现

28、的功能写各个子程序。4.1 主程序模块主程序实现的功能:与硬件相结合实现便携式酒精浓度检测仪的各个功能。主要是包括A/D转换模块,按键输入模块,液晶显示输出模块。见图4-1: 图4-1 主程序模块框图4.1.1 A/D转换模块(1)模数转换模块的主要功能就是将经放大器放大的模拟电压信号转化为MCU能够处理的数字信号,并传送给MCU。(2)A/D转换的流程图见下图4-2:图4-2 模数转换模块框图(3)程序介绍:void Timer0_ISR (void) interrupt 1 using 0TL0 = 0xcc;TH0 = 0xf8; /定时器赋予初值/每1秒钟启动一次AD转换 ALCoun

29、ter +; if (ALCounter = 500) FlagStartAL = 1; ALCounter = 0; 4.1.2 按键输入模块(1)按键时显现人机对话的一个控制按钮,通过按键的操作,对系统进行发送操作指令,后经与MCU串行通信,然后在液晶上显示。(2)按键查询式的流程图见下图4-3: 图4-3 按键输入模块框图(3)程序介绍:/定义按键sbit Key_Up = P36;sbit Key_Down = P37;/定义LED报警灯sbit Led_Warn1 = P34;sbit Led_Warn2 = P35;/定义乙醇传感器TTL电平输出引脚sbit DOUT = P14;

30、4.1.3 液晶显示输出模块LCD模块在本系统中主要起着开界面汉字显示,以及各控制效果的显示。采用直接访问方式。液晶显示的操作流程图见下图4-4:图4-4 液晶显示输出模块框图(3)程序介绍:L1602_string(1,1, ); L1602_string(2,1, ); L1602_string(1,1,Alcohol: mg/L); L1602_string(2,1,Thresho: mg/L); /载入设定值 Load_Setting(); L1602_int(2,9,Threshold);4.2 主程序 下面介绍main.c主程序编写,其他程序略。(1) 头文件和一些宏定义#incl

31、ude STC12c5A.h#include 1602.h#include 2402.h#define uchar unsigned char#define uint unsigned int(2) 常量、变量定义和函数声明/声明常量#define ALCH 80 /醉驾标准80mg/L/K_MG_MV和K_ZERO为传感器校准系数,要根据每个MQ-3模块校准#define K_MG_MV 160/60 /传感器灵敏度系数,可以自行校准#define K_ZERO 0 /传感器零点漂移/定义按键sbit Key_Up = P36;sbit Key_Down = P37;/定义LED报警灯sbi

32、t Led_Warn1 = P34;sbit Led_Warn2 = P35;/定义乙醇传感器TTL电平输出引脚sbit DOUT = P14;/定义标识volatile bit FlagStartAL = 0; /开始转换标志volatile bit FlagKeyPress = 0; /有键弹起标志char Threshold; /酒精浓度上限报警值uint ALCounter; /酒精转换计时器int ALValue; /酒精测量值float ALtemp; /计算临时变量uint keyvalue, keyUp, keyDown; /键值char * pSave; /EEPROM存盘用

33、指针/函数声明void Data_Init();void Timer0_Init();void Port_Init();void ADC_Init();uchar GetADVal();void KeyProcess(uint );(3) 各子程序/数据初始化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,

34、每毫秒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

35、; ALCounter = 0; /端口初始化void Port_Init() P1M0 = 0x80; /10000000,P1.7作为AD输入 P1M1 = 0x80; /ADC初始化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_STAR

36、T和低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位,

37、停止转换 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; *pSave+ = rdeeprom(0); *pSave = rdeeprom(1); if (Threshol

38、d=255)|(Threshold0) Threshold = 80;/按键处理程序,参数为键值,1为Up键,2为Down键void KeyProcess(uint num) switch (num) case 1: if (Threshold1) Threshold-; break; default: break; L1602_int(2,9,Threshold); Save_Setting();void main() uint i,j; 毕业设计论文 基于单片机的酒精浓度测试仪 EA = 0; Data_Init(); /数据初始化 Timer0_Init(); /定时器0初始化 Port

39、_Init(); /端口初始化 ADC_Init(); /ADC初始化 EA = 1; L1602_init(); L1602_string(1,1,Welcome to ALCT! ); L1602_string(2,1,Designed by AAA ); /延时 for (i=0;i1000;i+) for (j=0;j1000;j+) ; /清屏 L1602_string(1,1, ); L1602_string(2,1, ); L1602_string(1,1,Alcohol: mg/L); L1602_string(2,1,Thresho: mg/L); /载入设定值 Load_S

40、etting(); L1602_int(2,9,Threshold); while(1) /如果FlagStartAL标志置位,则进行AD转换 if (FlagStartAL = 1) /酒精浓度换算,50mg/L=62.5ppm,传感器灵敏度应事先校准 ALValue = 500 * GetADVal() / 256; /8位ADC,首先得到电压值,单位10毫伏 ALValue = ALValue - K_ZERO; /首先减去零点漂移,一般是130mV if (ALValue Threshold) Led_Warn1 = 0; /超过阈值,则 Led_Warn1灯报警。 else Led_Warn1 = 1; FlagStartAL = 0; /查询乙醇传感器TTL电平,该指示灯为传感器模块报警 if (DOUT = 0) Led_Warn2 =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁