酒精心率检测系统.docx
酒精心脉检测系统摘 要在经济快速发展的阶段,车辆的数量剧增,随之而来交通事故的发生也越来越多。设计一款检测酒精和心率的装置显得很重要,该设计由STC89C52单片机电路、MQ-3型酒精传感器、独立按键电路、液晶电路、ADC0832模数转换、红外反射传感器ST188、蜂鸣器报警电路、放大电路、电源等组成。该设计通过传感器检测驾驶员的酒精浓度和心率,独立按键设定预定值,传送至单片机进行数据处理判断检测值是否超出预定值,超出的话警报器电路发出警报。当蜂鸣器发出警报时,说明该驾驶员属于饮酒驾驶。增加了交警对查酒驾的力度,提高了他们的工作效率,从而减少了交通事故发生的数目,保障了人们的生命财产安全。关键字:STC89C52单片机,MQ-3酒精传感器,红外反射传感器,交通事故。AbstractIn the stage of rapid economic development, the number of vehicles has increased dramatically, followed by more and more traffic accidents. It is very important to design a device to detect alcohol and heart rate. The design consists of STC89C52 single chip circuit, MQ-3 alcohol sensor, independent key circuit, LCD circuit, ADC0832 A / D conversion, infrared reflection sensor ST188, buzzer alarm circuit, amplification circuit, power supply, etc. The design detects the driver's alcohol concentration and heart rate through the sensor, sets the preset value by the independent key, and transmits it to the single chip microcomputer for data processing to judge whether the detection value exceeds the preset value. If it exceeds the preset value, the alarm circuit will give an alarm. When the buzzer gives an alarm, it indicates that the driver belongs to drinking driving. It increases the strength of traffic police to check alcohol driving, improves their work efficiency, reduces the number of traffic accidents, and ensures people's life and property safety.Keywords: STC89C52 single chip microcomputer, MQ-3 alcohol sensor, infrared reflection sensor, traffic accident.目 录摘 要1Abstract2第1章 绪论41.1课题的背景41.2酒精浓度和心脉检测的意义5第2章 系统方案62.1主控制芯片的选取方案62.2 元器件选择62.2.1主控制芯片的选取方案62.2.2独立按键的选取方案72.2.3显示系统电路的选取方案82.2.4供电电源的选取方案8第3章 所用器件介绍93.1LCD1602显示模块93.2 MQ3酒精传感器及红外反射式传感器ST188的简介93.3ADC0832模数转换器简介123.4 STC89C52单片机芯片的介绍13第4章 硬件的实现及部分电路设计154.1控制部分154.2显示电路部分154.3酒精检测和AD转换电路部分164.4脉搏信号采集电路部分164.5声音报警电路部分174.6按键控制电路部分17第5章 系统软件部分的设计19第6章 系统的组装部分和测试调试206.1组装部分206.1.1.检查元件的好坏206.1.2.组装各元件206.2系统电路的测试调试20结论21致谢22参考文献23附录A电路原理图24附录B元器件清单24附录C部分源程序25第1章 绪论1.1课题的背景当前,随着人民生活水平的提高和机械化的快速发展,各式各样的车不断浮现在我们眼前。在这些各式各样的汽车当中,私家车的数量占大多数,人们的不规则、不文明驾驶和不遵守交通规则,出现了交通事故的发生也随之剧增的画面。比如:未成年人对交通规则的不熟知而擅自驾驶机动车、刚拿到驾照的新手对驾驶车颇感生疏就在马路上行驶而身边却没有人在一旁指导其驾车、年龄即将超过驾驶车岁数的人、饮酒后驾驶的人,当他们遇到突发事件时,由于开车经验不足和大脑来不及做出反应导致交通事故的发生。在这些交通事故中,其中酒后驾车占大多数且不具有年龄之分。这也增加了交警大量的工作,导致人力、物力、财力的浪费。从经济发展上分析,人们生活水平得到提高,交通也越来越便捷,人们对自己的出行也提出了较高的要求,购买私家车的人越来越多,人与人之间的交往越来越密切,经常在一起聚餐。在中国的历史上有句古话,叫做无酒不成席,餐桌上当然避免不了酒,有的聚餐大都是无话不说的好朋友,俗话说“酒逢知己千杯少”,还有“劝君更进一杯酒,西出阳关无故人”,人们为了增强心情上的愉悦,经常把酒言欢。在高兴之余,不知不觉就饮酒过量了,过量饮酒不仅会损伤我们的肝脏,而且也会导致其他危险事情的发生,当他们回家时,有的人交通规则意识较强,给自己或别人叫了个代驾,能保证他们安安全全地回家,而不给家人和亲人带来麻烦。但有的人交通意识薄弱或抱有侥幸心理,感觉自己酒后驾车没有问题,而酒后驾驶的人会过高的高估自己,认为自己平常做不到的事情在酒后就可以做到,这些严重的错误导致了交通事故的发生。我们都知道酒精会麻痹我们的神经,使我们的行动变得缓慢,就连平常对一些基本的事情做出的正常反应,然而,在饮酒后我们对一些事情的判断力会降低,给自己和他人造成生命上的威胁,会带来一些无法挽回的伤害,甚至有人说酒后驾驶就是间接的杀人。并且我国法律明确规定严禁酒驾,而且在酒驾的检查力度上增加了许多力量,设立了交警和一些红绿灯,为了引起人们的重视,还设立了一些处罚机制。由此可见,酒驾对社会和个人造成的危害有多么大!酒后驾车的时常发生,给人们的生命和安全带来了极大的危害。酒后开车造成的交通事故是由于喝酒的驾驶员造成的。使得他们的大脑反应迟钝,遇到突发事件来不及作出反应。如果他们的体内酒精含量比较低的话,这些情况是可以避免发生的,那么,人的体内酒精含量低于多少才可避免交通事故的发生呢?交通法中明确规定,当人体内的酒精含量每一百毫升血液中酒精含量低于二十毫克,人的大脑对事物的意识还算清醒,就可以避免交通事故的发生。对于以上情况,设计一款具有实际意义的便携式酒精心脉检测系统显得很有必要! 其中,酒精检测准确性的关键是检测乙醇,这与传感器的制造和发展有关,目前传感器事业的发展越来越趋向于集成电路。心率检测的关键是测量心跳,然而人们在饮酒后,血液加速流动,心跳也会随之而加速。根据以上情况可以设计一款心脉酒精检测装置。可知,研究一个酒精浓度检测和脉搏检测是非常有必要的事。1.2酒精浓度和心脉检测的意义 根据人们在饮酒后血液里就会有酒精浓度及人们在饮酒后心脉跳动加速,我们都知道酒精可以扩张我们的血管,从而会使我们的心跳加速,根据这一特点,设计了一款基于STC89C52单片机的酒精心脉检测装置,通过让驾驶员吹气和检测心脉跳动来检测体内的酒精含量,从而实现对酒驾人员的严查,可有效减少交通事故的发生,保障了人们的生命安全。国家为了强调酒驾的危害,增派了许多宣传人员,走在大街小巷里向人们告知饮酒驾驶的危害,有的做公益向人们讲解酒驾给个人和家庭带来的危害。但是效果并不太明显,为强化这一力度,我国把酒驾列入了刑法,并且在各个红绿灯路口都设置了交警,用来维护交通秩序和查询驾驶员是否饮酒。因此设计酒精心脉检测装置变得越来越有意义!其实酒精心脉检测就是对酒精浓度和心脉跳动次数的检测,人们在不饮酒的情况下,体内酒精含量是非常低的甚至是没有的,心脉跳动也是在一个恒定的范围,然而在饮酒后体内的酒精含量和心脉跳动都变得非常高,因为人体内的气体大都是通过肺部呼吸传出的,通过让驾驶员向该装置进行吹气检测和心脉跳动检测,呼出的气体通过酒精传感器检测,然后通过模数转换,传送给单片机进行数据比对,当超过预定值时,单片机通过控制蜂鸣器进而发出警报,说明该驾驶员属于酒后驾驶;也可通过测定驾驶员的脉搏跳动来进行检测,通过红外反射传感器ST188来进行检测,来传送至单片机进行数据处理,判断心脉跳动是否在正常范围内,从而判断驾驶员是否饮酒。酒精心脉检测抗干扰能力强,检测结果不受环境影响,而且用电量特别低易携带且方便使用。可以适用于各种场合,应用前景非常广泛。我国由于饮酒驾驶引起的交通事故一直呈现上升的趋势,但是设计这款酒精心脉检测系统可以提高人们的安全意识,促进人们的素质涵养的提高,促进了社会的稳定性,减少交通事故的发生,稳定了社会治安,促进了我国经济的快速发展,人们生活的更加幸福,同时也减少了不必要资源的浪费,促使社会向文明化发展,使交警有更多的时间来管理其他的事情,节省了人力资源的浪费。第2章 系统方案2.1主控制芯片的选取方案本酒精心脉检测系统由STC89C52单片机、ADC0832、1602显示电路、ST188红外反射传感器、酒精传感器、独立按键、蜂鸣器、LM358放大电路、导线、电源等组成。通过酒精传感器检测驾驶员呼出的气体酒精含量,将检测到的模拟信号通过ADC0832进行模数转换,转换成数字信号传送给单片机,单片机进行数据比对判断所检测到的酒精气体浓度显示到液晶屏幕上,看是否超出预定值,或者通过ST188红外反射传感器检测心率跳动次数,通过LM358放大电路进行放大,然后传送至单片机显示到液晶屏幕上,判断是否超出预定范围,当驾驶员的体内酒精含量超出预定值或心脉跳动超出预定范围,则单片机会驱动蜂鸣器报警电路,发出警报,进而确定该驾驶员是否属于饮酒驾驶。酒精心脉检测系统的大致框图如图2-1所示:电源部分按键模块ADC0832单片机STC89C52液晶显示电路蜂鸣器报警酒精传感器MQ-3LM358放大、整形电路ST188红外反射传感器图2-1 大致框图2.2 元器件选择 该酒精心脉检测系统主要由单片机模块、酒精检测模块、红外反射模块、按键模块及液晶LCD1602显示屏幕几部分电路组成,下面介绍实现该系统功能的方案。2.2.1主控制芯片的选取方案方案1: 考虑采用CPLD逻辑元器件作为该设计的主控芯片,由于其逻辑功能丰富,性能高,小巧玲珑易携带,处理数据的能力比较强,运行速度快,也可适用于各式各样的复杂控制系统,但是考虑到该设计应用简单和经济因素的选择,若选用此类芯片作为控制元器件,则显得未免有些大材小用,更何况我们对该设计的要求也不是特别高,出于对经济角度的考虑和选择,认为该方案还有一些欠缺,放弃了对该方案的使用。方案2:考虑使用STC89C52单片机芯片充当该设计的控制大脑和心脏,该单片机的型号是以2结尾的,若是1则表示存储容量为4K,2就表示该单片机型号的存储容量为8K可以存储8K容量的程序且字长为8当供电突然停止时它将自动保存RAM中的内容。概括来说具有掉电保护功能,对于本设计使用该型号单片机足以实现该设计的所有功能,有较强的控制能力共有40个引脚,并且可扩展其功能,该型号的单片机性能稳定、省电、无噪音、最为重要的是它的价格比较便宜,符合开发人员的要求比较经济实用相对于以上方案,认为此方案比较适合该设计故采用该方案。单片机的图片如下图所示:图3-1 单片机最小模块2.2.2独立按键的选取方案方案: 认为应该使用矩阵键盘,它采用扫描方式,它在单片机I/O口有限的情况下,可以连接很多的按键,从而达到节省I/O口数目的目的,本设计由于使用的按键数目较少,电路结构相对来说比较简单,况且矩阵键盘的电路比较复杂,在编写程序时难度比一般的设计要多,它使用的按键数目也比较多,考虑以上因素认为该方案不适合。方案二: 考虑使用独立按键,因为它的电路设计比较简单且容易搭建实现,况且本设计所需的按键数目相对较少,可用I/O口直接控制,它们几个按键之间的工作状态互相不影响。更为重要的是,它的程序编写比矩阵键盘简单了许多。考虑再三认为此方案比比另一方案简单。减少了按键的使用,降低了设计成本。故采用此方案。图片如下:图3-2 按键2.2.3显示系统电路的选取方案方案1:选用数码管来显示传感器采集的数据被单片机处理后得到的结果,数码管它的反应速度快、灵敏,但是它只能显示数字,抗干扰的能力比较差,也不能显示字符。认为此方案不可。方案 2:选择使用LCD1602液晶屏幕,可以显示数字和各种字符,并且可以随着信号的强弱而变化,可以在上面设定预定值和预定范围,可显示数据的实时性,当检测到的信号超过预定值时,蜂鸣器电路会发出警报,它上面也会显示超出范围的数据。它的应用前景也非常广泛。能根据我们所需显示数据,所以选择了这个方案。2.2.4供电电源的选取方案方案1:整个电路需要直流电供电,考虑使用铅蓄电池通过降压模块来进行降压降至5v,但是尽管铅蓄电池能恒定输出直流电,它的重量是非常的大,价格昂贵,不易携带,并不适合本设计,此方案不适合。方案2:使用日常生活中的家用1.5v电池,由于该设计上的各种元器件工作电压在45v,可使用3节电池作为它们的工作电压,况且成本也比较低,易携带,用完即可更换,综合考虑此方案更适合。图片如下图所示:第3章 所用器件介绍3.1LCD1602显示模块LCD1602的特性及使用说明。图3-1 引脚功能Lcd1602液晶屏有16个引脚,有两种类型,分为有背光和无背光,但是它们在使用中并没有太大的区别可通过单片机进行直接控制。其引脚图如上图所示:将其16个引脚依次用杜邦线连接起来,另一端连上单片机的8个I/O口,进行数据传输。屏幕上有两行字符,每行最多可显示16个字符,显示图如下图所示:图3-2 液晶显示器3.2 MQ3酒精传感器及红外反射式传感器ST188的简介酒精传感器是通过让驾驶员对着它吹气,来检测驾驶员体内血液酒精含量,经过A/D转换将模拟信号转化成数字信号。其检测原理是酒精浓度和传感器内的阻值变化的关系,它们之间的关系如下图所示:图3-3 酒精传感器的结构和外形图3-4 传感器阻值和酒精浓度之间的关系其中,酒精传感器的一些参数如下所示:标准工作条件图3-5 工作时所需的条件图3-6 工作时所需的环境酒精传感器是通过它的采集电路将每一个酒精气体浓度对应于它输出的每一个电压值,它的采样电路如下图所示:图3-7 采样电路心率是因为人心脏跳动产生的,心脏跳动为人的全身提供动力,但是当人们饮酒后,心跳会加速。根据这一特性,选用了ST188红外反射传感器,如下图所示:图3-8 ST188传感器它的采集电路如下图所示: 图3-8 信号采集电路考虑到信号的微弱性,为了防止单片机检测不到,选用了信号的放大电路LM358,它既有同相输入端,又有反相输入端,它可放大电压也可放大电流,里面增加了稳定电路,防止温度的变化对所测得的信号进行干扰。采用集成化电路,易安装和控制。示意图如下: 图3-9 放大电路3.3ADC0832模数转换器简介ADC0832模数转换用于将模拟信号转化成数字信号,保证了采集信号的稳定性,减少数据误差。ADC0832是8位分辨率双通道A/D转换芯片。性能好、使用时比较稳定、价格实惠,使用DIP-8封装,如下图所示:图3-10 数模转换器连接电路如下图所示:图3-11 时序图如下: 图4-12 波形图 3.4 STC89C52单片机芯片的介绍控制系统作为整个系统的核心和大脑,它连接着整个设计的各部分电路,在每个部分都通过单片机进行着数据传输和信息交流,单片机在整个过程中起着主导作用。本设计采用STC89C52单片机芯片作为核心。51系列有好多种,它们分别来自不同的公司和生产厂家,它们的外观和名称可能有所差异,但是从大体上来看它们的内部构造基本上都是一致的,都有很强的兼容性,扩展功能基本上都没有多大的差别。该芯片是属于直插型的DIP-40封装,它的引脚顺序是从有凹槽的一端开始计数,让有凹槽的一端面向自己,逆时针方向数,依次为1、2、40,它的基本组成框图如下图:图3-13 单片机结构图 它的管脚图如下:图3-14 STC89C52单片机管脚图第4章 硬件的实现及部分电路设计4.1控制部分单片机的控制电路如图所示:图4-1 单片主控电路4.2显示电路部分显示系统使用1602LCD液晶模块,因为它能够显示数据的实时变化且易调节,通过调节电位器来调整液晶屏幕的显示亮度,根据个人的视觉效果来进行调整,具体电路图如下所示: 图4-2 显示电路4.3酒精检测和AD转换电路部分通过驾驶员向酒精传感器吹气,来检测驾驶员是否酒驾,酒精传感器将接收的模拟信号通过AD转换电路来向单片机传送数字信号,单片机将处理的数据通过显示电路显示出来,让检察人员观察是否超出预定值,超出的话就会发出警报。电路图如下: 图4-3 酒精浓度采集电路4.4脉搏信号采集电路部分 心脉检测通过检测驾驶员的心率来传送给单片机进行数据处理,通常它检测的心率信号相对来说比较微弱,需通过放大电路来进行放大,其中心率检测采用传感器ST188,放大电路则选用LM358,需将它们连在一起。原理图为:图4-4 脉搏信号检测电路4.5声音报警电路部分 当检测到驾驶员属于饮酒驾驶时,单片机会驱动蜂鸣器发出警报,原理图如图所示:图4-5 报警电路4.6按键控制电路部分由于该设计可由检察人员自行设计预定值,采用了4个独立按键分别是增加键、减少键、初始化键、复位键,当预定值超过初始化键时,使用者可以通过按减少键来达到预定值;当预定值低于初始化键时,使用者可通过按增加键来达到预定值。当测试完一个驾驶员时,使用者可按初始化键来进行多次测量。为了预防电路出现意想不到的现象时,当电路混乱时,可按复位键进行修复。其原理图如下: 图4-6 独立按键电路原理图第5章 系统软件部分的设计程序的设计流程图如下,首先给系统上电,进行程序初始化,传感器检测信号,经AD转换,由单片机判断是否超出预定值,若超出,则发出报警;否则,传感器继续检测,或者通过信号放大,由单片机判断是否超出预定值,若超出,则发出报警;否则,传感器继续检测。程序初始化开始超出预定值A/D转换发出警报传感器检测处理是否图5-7 当整个系统不发出警报时,系统继续检测,直到报警为止。脉搏信号经传感器检测和放大传给单片机进行处理当超过设定值时发出警报,否则继续检测。第6章 系统的组装部分和测试调试6.1组装部分6.1.1.检查元件的好坏购买元器件后,要根据电路图检查元器件的质量,按照每个元器件的检测方法进行测试,一定要小心。并认真检查原理图是否一致,检查后可对工件、焊接件进行检查,防止焊接后出现错误不便改正。6.1.2.组装各元件将各元件从小到大依次排列在一张白纸上,组装时按照从小到大的顺序,依次放在电路板中。对于直插元器件先固定一端,再焊接另一端;贴片元器件,也是如此。要注意有极性元件的区分,防止焊接反;芯片也要注意方向,防止芯片烧坏。6.2系统电路的测试调试先给系统上电,如果数码管各引脚的焊接检测不正常,则无虚焊、短焊、错焊。显示正常后,在程序中添加温度程序,看看温度检测是否正常,再添加按钮和红外接收器对整机进行调试,在程序调试中,有的延迟太长,有的太短。类似的现象还有很多,不一而足。结论该设计经过长时间的测试与调试,终于取得了成功,自己在整个过程中把所学专业课的知识应用到实际生活中,也是对自己的肯定与认可,从一开始的想法到最后的真正实现,使自己的动手能力得到不断提升与进步,增强了在以后的学习生活中的自信心。随着人民生活水平的提高,尽管私家车保有量不断增加,导致交通事故剧增,其中酒后驾车占多数。设计该系统对于缓解此类现象,有明显的效果,促使酒驾的数量越来越少了,取得了显著的成果! 致谢在此次论文设计中,自己遇到了许多的困难,通过向老师求教,和同学们探讨,查找相关书籍资料,自己泡在实验室的每个日日夜夜,在这些困难面前都一一战胜了它们,这都离不开老师的帮助,如果没有老师一遍又一遍的教导,自己是不可能完成这项设计。在此对所有帮助我的老师们和同学们说一声你们辛苦了!谢谢你们!这一阶段的学习暂告一段落,我们终会再相遇!参考文献1微机原理及应用 黄冰等编著 重庆:重庆大学出版社 ,20032 李维提,郭强液晶显示应用技术 北京:电子工业出版社,20003基于Proteus的电路及单片机系统设计与仿真 周润景等编著 北京:北京航空航天大学出版社,20064单片机实验与实践教程万光毅等编著 北京:北京航空航天大学出版社,20065单片机人机接口实例集公茂法等编著 北京:北京航空航天大学出版社,19976 Simon Haykin,Machael Moher,郑宝玉.现代无线通信M.北京:电子工业出版社, 2006.7 武庆生,仇梅.单片机原理与应用M.成都:电子科技大学出版社,1998.8 周航慈.单片机应用程序设计技术M.北京:北京航空航天大学出版社,1991.9 谭浩强.C程序设计北京M.北京:清华大学出版社,1999 .10朱明程等.一氧化碳传感器MGS1100原理及应用电子技术.1998年第1期.11刘广玉.新型传感器技术及应用.北京航空航天大学出版社.1989. 附录A电路原理图 附录B元器件清单CommentDesignatorLibRefQuantity蜂鸣器BUUZERBUZZER1电解电容C110uF1瓷片电容C2, C318pF2电解电容C4470uF1瓷片电容C51041排针DC 5VHeader 22P触点开关JIA, JIAN,RESETSW-PB3液晶LCD1602LCD16021发光二极管LED1, POWER3mm2三极管Q1S85501排阻R14.7K1电阻R3, R7, R8, R92K4电阻R24.71电阻R61K1电阻R510K1自锁开关SW1SW-SPDT1单片机座U1DIP-401单片机U1STC89C521A/D模数转换U2ADC08321酒精传感器U5MQ-31晶振Y111.0592M1附录C部分源程序#include <reg52.h>#include "eepom52.h"#define uchar unsigned char #define uint unsigned int#include <intrins.h>#define LCD_PINDATA P0 /数据端口定义 sbit RS = P14; /RS sbit RW = P15; /RW sbit E = P16; /E sbit CS = P12;/片选端sbit Clk = P11;/时钟sbit DATI = P10;/数据输入sbit DATO = P10;/数据输出sbit BUZZER = P13; /蜂鸣器驱动端口=P12sbit Reduc = P17; /按键键输入端口=P17sbit Add = P30; /按键加输入端口=P31/* 函数名称 : Delay(uint T)* 函数功能 : 延时函数* 输 入 : T-延时倍数 大小-065535* 输 出 : 无* 说 明 :*/void Delay(uint T)/延时1ms uchar i; for(T;T>0;T-) for(i=200;i>0;i-);/* 函数名称 : WriteCOMDATA(uchar LCD_DATA,uchar N)* 函数功能 : LCD1602写指令、数据函数* 输 入 : LCD_DATA:指令或者数据 N:指令方式还是数据方式 N=0时,LCD_DATA为指令,N=1时,LCD_DATA为数据* 输 出: 无* 说 明 : */void WriteCOMDATA(uchar LCD_DATA,uchar N)Delay(10);E=1;RW=0;RS=N;LCD_PINDATA=LCD_DATA;E=0;/* 函数名称 : void LCD_init(void)* 函数功能 : LCD1602初始化操作* 输 入 : 无* 输 出 : 无* 说 明 :*/void LCD_Init(void) WriteCOMDATA(0x01,0);Delay(500);WriteCOMDATA(0x38,0);Delay(10);WriteCOMDATA(0x06,0);Delay(10);WriteCOMDATA(0x0c,0);Delay(10);/* 函数名称 :void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer)* 函数功能 :在任意位置写指定个字符* 输 入 :Row : 要写的字符所在的行,只能为1或2; Col : 要写的字符所在的列,只能为0-15 Num : 要写字符的个数 pbuffer : 要写字符的首地址* 输 出 :无* 说 明 :*/void WriteChar(uchar Row,uchar Col,uchar Num,uchar *pBuffer)uchar i;if(Row=1)Row=0x80+Col;else Row=0xC0+Col;WriteCOMDATA(Row,0);for(i=Num;i!=0;i-)WriteCOMDATA(*pBuffer,1);pBuffer+;/*函数功能:AD转换子程序入口参数:CH 通道选择 0 1出口参数:dat*/unsigned char adc0832(unsigned char CH)unsigned char dat = 0x00; /AD值 unsigned char i,test,adval; adval = 0x00; test = 0x00; Clk = 0; /初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_();if ( CH = 0x00 ) /通道选择 Clk = 0; DATI = 1; /通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; /通道0的第二位 _nop_(); Clk = 1; _nop_(); else Clk = 0; DATI = 1; /通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; /通道1的第二位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; for( i = 0;i < 8;i+ ) /读取前8位的值 _nop_(); adval <<= 1; Clk = 1; _nop_(); Clk = 0; if (DATO) adval |= 0x01; else adval |= 0x00; for (i = 0; i < 8; i+) /读取后8位的值 test >>= 1; if (DATO) test |= 0x80; else test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; if (adval = test) /比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat = test; _nop_(); CS = 1; /释放ADC0832 DATO = 1; Clk = 1; return dat;/* 函数名称 : void main(void)* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无* 说 明 :*/void main(void)uchar count,flag=0;uint adc_val=0;uchar baojing_val=30;/报警变量uchar disp16="Alc: % AlcH: %"/显示数组 LCD_Init();/lcd初始化 WriteChar(1,0,16," Alcohol System "); /在第一行显示内容 baojing_val=byte_read(0x2000);/读取报警数据while(1)WriteChar(2,0,16,disp); /在第二行显示