酒精心率检测系统_第1页
酒精心率检测系统_第2页
酒精心率检测系统_第3页
酒精心率检测系统_第4页
酒精心率检测系统_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

酒精心脉检测系统摘要在经济快速发展的阶段,车辆的数量剧增,随之而来交通事故的发生也越来越多。设计一款检测酒精和心率的装置显得很重要,该设计由STC89C52单片机电路、MQ-3型酒精传感器、独立按键电路、液晶电路、ADC0832模数转换、红外反射传感器ST188、蜂鸣器报警电路、放大电路、电源等组成。该设计通过传感器检测驾驶员的酒精浓度和心率,独立按键设定预定值,传送至单片机进行数据处理判断检测值是否超出预定值,超出的话警报器电路发出警报。当蜂鸣器发出警报时,说明该驾驶员属于饮酒驾驶。增加了交警对查酒驾的力度,提高了他们的工作效率,从而减少了交通事故发生的数目,保障了人们的生命财产安全。关键字:STC89C52单片机,MQ-3酒精传感器,红外反射传感器,交通事故。

AbstractInthestageofrapideconomicdevelopment,thenumberofvehicleshasincreaseddramatically,followedbymoreandmoretrafficaccidents.Itisveryimportanttodesignadevicetodetectalcoholandheartrate.ThedesignconsistsofSTC89C52singlechipcircuit,MQ-3alcoholsensor,independentkeycircuit,LCDcircuit,ADC0832A/Dconversion,infraredreflectionsensorST188,buzzeralarmcircuit,amplificationcircuit,powersupply,etc.Thedesigndetectsthedriver'salcoholconcentrationandheartratethroughthesensor,setsthepresetvaluebytheindependentkey,andtransmitsittothesinglechipmicrocomputerfordataprocessingtojudgewhetherthedetectionvalueexceedsthepresetvalue.Ifitexceedsthepresetvalue,thealarmcircuitwillgiveanalarm.Whenthebuzzergivesanalarm,itindicatesthatthedriverbelongstodrinkingdriving.Itincreasesthestrengthoftrafficpolicetocheckalcoholdriving,improvestheirworkefficiency,reducesthenumberoftrafficaccidents,andensurespeople'slifeandpropertysafety.Keywords:STC89C52singlechipmicrocomputer,MQ-3alcoholsensor,infraredreflectionsensor,trafficaccident.目录TOC\o"1-3"\h\u摘要 1Abstract 2第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.2MQ3酒精传感器及红外反射式传感器ST188的简介 93.3ADC0832模数转换器简介 123.4STC89C52单片机芯片的介绍 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.2酒精浓度和心脉检测的意义根据人们在饮酒后血液里就会有酒精浓度及人们在饮酒后心脉跳动加速,我们都知道酒精可以扩张我们的血管,从而会使我们的心跳加速,根据这一特点,设计了一款基于STC89C52单片机的酒精心脉检测装置,通过让驾驶员吹气和检测心脉跳动来检测体内的酒精含量,从而实现对酒驾人员的严查,可有效减少交通事故的发生,保障了人们的生命安全。国家为了强调酒驾的危害,增派了许多宣传人员,走在大街小巷里向人们告知饮酒驾驶的危害,有的做公益向人们讲解酒驾给个人和家庭带来的危害。但是效果并不太明显,为强化这一力度,我国把酒驾列入了刑法,并且在各个红绿灯路口都设置了交警,用来维护交通秩序和查询驾驶员是否饮酒。因此设计酒精心脉检测装置变得越来越有意义!其实酒精心脉检测就是对酒精浓度和心脉跳动次数的检测,人们在不饮酒的情况下,体内酒精含量是非常低的甚至是没有的,心脉跳动也是在一个恒定的范围,然而在饮酒后体内的酒精含量和心脉跳动都变得非常高,因为人体内的气体大都是通过肺部呼吸传出的,通过让驾驶员向该装置进行吹气检测和心脉跳动检测,呼出的气体通过酒精传感器检测,然后通过模数转换,传送给单片机进行数据比对,当超过预定值时,单片机通过控制蜂鸣器进而发出警报,说明该驾驶员属于酒后驾驶;也可通过测定驾驶员的脉搏跳动来进行检测,通过红外反射传感器ST188来进行检测,来传送至单片机进行数据处理,判断心脉跳动是否在正常范围内,从而判断驾驶员是否饮酒。酒精心脉检测抗干扰能力强,检测结果不受环境影响,而且用电量特别低易携带且方便使用。可以适用于各种场合,应用前景非常广泛。我国由于饮酒驾驶引起的交通事故一直呈现上升的趋势,但是设计这款酒精心脉检测系统可以提高人们的安全意识,促进人们的素质涵养的提高,促进了社会的稳定性,减少交通事故的发生,稳定了社会治安,促进了我国经济的快速发展,人们生活的更加幸福,同时也减少了不必要资源的浪费,促使社会向文明化发展,使交警有更多的时间来管理其他的事情,节省了人力资源的浪费。

第2章系统方案2.1主控制芯片的选取方案本酒精心脉检测系统由STC89C52单片机、ADC0832、1602显示电路、ST188红外反射传感器、酒精传感器、独立按键、蜂鸣器、LM358放大电路、导线、电源等组成。通过酒精传感器检测驾驶员呼出的气体酒精含量,将检测到的模拟信号通过ADC0832进行模数转换,转换成数字信号传送给单片机,单片机进行数据比对判断所检测到的酒精气体浓度显示到液晶屏幕上,看是否超出预定值,或者通过ST188红外反射传感器检测心率跳动次数,通过LM358放大电路进行放大,然后传送至单片机显示到液晶屏幕上,判断是否超出预定范围,当驾驶员的体内酒精含量超出预定值或心脉跳动超出预定范围,则单片机会驱动蜂鸣器报警电路,发出警报,进而确定该驾驶员是否属于饮酒驾驶。酒精心脉检测系统的大致框图如图2-1所示:电源部分电源部分按键模块ADC0832单片机STC89C52液晶显示电路蜂鸣器报警酒精传感器MQ-3LM358LM358放大、整形电路ST188红外反射传感器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电池,由于该设计上的各种元器件工作电压在4~5v,可使用3节电池作为它们的工作电压,况且成本也比较低,易携带,用完即可更换,综合考虑此方案更适合。图片如下图所示:第3章所用器件介绍3.1LCD1602显示模块LCD1602的特性及使用说明。图3-1引脚功能Lcd1602液晶屏有16个引脚,有两种类型,分为有背光和无背光,但是它们在使用中并没有太大的区别可通过单片机进行直接控制。其引脚图如上图所示:将其16个引脚依次用杜邦线连接起来,另一端连上单片机的8个I/O口,进行数据传输。屏幕上有两行字符,每行最多可显示16个字符,显示图如下图所示:图3-2液晶显示器3.2MQ3酒精传感器及红外反射式传感器ST188的简介酒精传感器是通过让驾驶员对着它吹气,来检测驾驶员体内血液酒精含量,经过A/D转换将模拟信号转化成数字信号。其检测原理是酒精浓度和传感器内的阻值变化的关系,它们之间的关系如下图所示:图3-3酒精传感器的结构和外形图3-4传感器阻值和酒精浓度之间的关系其中,酒精传感器的一些参数如下所示:标准工作条件图3-5工作时所需的条件图3-6工作时所需的环境酒精传感器是通过它的采集电路将每一个酒精气体浓度对应于它输出的每一个电压值,它的采样电路如下图所示:图3-7采样电路心率是因为人心脏跳动产生的,心脏跳动为人的全身提供动力,但是当人们饮酒后,心跳会加速。根据这一特性,选用了ST188红外反射传感器,如下图所示:图3-8ST188传感器它的采集电路如下图所示: 图3-8信号采集电路考虑到信号的微弱性,为了防止单片机检测不到,选用了信号的放大电路LM358,它既有同相输入端,又有反相输入端,它可放大电压也可放大电流,里面增加了稳定电路,防止温度的变化对所测得的信号进行干扰。采用集成化电路,易安装和控制。示意图如下: 图3-9放大电路3.3ADC0832模数转换器简介ADC0832模数转换用于将模拟信号转化成数字信号,保证了采集信号的稳定性,减少数据误差。ADC0832是8位分辨率双通道A/D转换芯片。性能好、使用时比较稳定、价格实惠,使用DIP-8封装,如下图所示: 图3-10数模转换器连接电路如下图所示::图3-11时序图如下:图4-12波形图3.4STC89C52单片机芯片的介绍控制系统作为整个系统的核心和大脑,它连接着整个设计的各部分电路,在每个部分都通过单片机进行着数据传输和信息交流,单片机在整个过程中起着主导作用。本设计采用STC89C52单片机芯片作为核心。51系列有好多种,它们分别来自不同的公司和生产厂家,它们的外观和名称可能有所差异,但是从大体上来看它们的内部构造基本上都是一致的,都有很强的兼容性,扩展功能基本上都没有多大的差别。该芯片是属于直插型的DIP-40封装,它的引脚顺序是从有凹槽的一端开始计数,让有凹槽的一端面向自己,逆时针方向数,依次为1、2、……40,它的基本组成框图如下图:图3-13单片机结构图它的管脚图如下:图3-14STC89C52单片机管脚图第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]《微机原理及应用》黄冰等编著重庆:重庆大学出版社,2003[2]李维提,郭强.《液晶显示应用技术》北京:电子工业出版社,2000.[3]《基于Proteus的电路及单片机系统设计与仿真》周润景等编著北京:北京航空航天大学出版社,2006[4]《单片机实验与实践教程》万光毅等编著北京:北京航空航天大学出版社,2006[5]《单片机人机接口实例集》公茂法等编著北京:北京航空航天大学出版社,1997[6]SimonHaykin,MachaelMoher,郑宝玉.现代无线通信[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排针DC5VHeader22P触点开关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"#defineucharunsignedchar#defineuintunsignedint#include<intrins.h>#defineLCD_PINDATAP0 //数据端口定义sbitRS=P1^4; //RSsbitRW=P1^5; //RWsbitE=P1^6; //EsbitCS=P1^2;//片选端sbitClk=P1^1;//时钟sbitDATI=P1^0;//数据输入sbitDATO=P1^0;//数据输出sbitBUZZER=P1^3; //蜂鸣器驱动端口==P1^2sbitReduc=P1^7; //按键键输入端口==P1^7sbitAdd=P3^0; //按键加输入端口==P3^1/**************************************************函数名称:Delay(uintT)**函数功能:延时函数**输入:T--延时倍数大小--0~65535**输出:无**说明:************************************************/voidDelay(uintT)//延时1ms{uchari;for(T;T>0;T--)for(i=200;i>0;i--);}/**************************************************函数名称:WriteCOMDATA(ucharLCD_DATA,ucharN)**函数功能:LCD1602写指令、数据函数**输入:LCD_DATA:指令或者数据N:指令方式还是数据方式 N=0时,LCD_DATA为指令,N=1时,LCD_DATA为数据**输出 :无**说明:************************************************/voidWriteCOMDATA(ucharLCD_DATA,ucharN){ Delay(10); E=1; RW=0; RS=N; LCD_PINDATA=LCD_DATA; E=0;}/**************************************************函数名称:voidLCD_init(void)**函数功能:LCD1602初始化操作**输入:无**输出:无**说明:************************************************/voidLCD_Init(void){WriteCOMDATA(0x01,0); Delay(500); WriteCOMDATA(0x38,0); Delay(10); WriteCOMDATA(0x06,0); Delay(10); WriteCOMDATA(0x0c,0); Delay(10);}/**************************************************函数名称:voidWriteChar(ucharRow,ucharCol,ucharNum,uchar*pBuffer)**函数功能:在任意位置写指定个字符**输入:Row:要写的字符所在的行,只能为1或2;Col:要写的字符所在的列,只能为015Num:要写字符的个数pbuffer:要写字符的首地址**输出:无**说明:************************************************/voidWriteChar(ucharRow,ucharCol,ucharNum,uchar*pBuffer){ uchari; if(Row==1)Row=0x80+Col; elseRow=0xC0+Col; WriteCOMDATA(Row,0); for(i=Num;i!=0;i--) { WriteCOMDATA(*pBuffer,1); pBuffer++; }}/****************************************************************************函数功能:AD转换子程序入口参数:CH通道选择01出口参数:dat****************************************************************************/unsignedcharadc0832(unsignedcharCH){ unsignedchardat=0x00;//AD值unsignedchari,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;elsetest|=0x00;_nop_();Clk=1; _nop_();Clk=0;}if(adval==test)//比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉dat=test;_nop_();CS=1;//释放ADC0832DATO=1;Clk=1;returndat;}/**************************************************函数名称:voidmain(void)**函数功能:主函数**输入:无**输出:无**说明:************************************************/voidmain(void){ ucharcount,flag=0; uintadc_val=0; ucharbaojing_val=30;//报警变量 uchardisp[16]={"Alc:%AlcH:%"};//显示数组 LCD_Init();//lcd初始化 WriteChar(1,0,16,"AlcoholSystem");//在第一行显示‘内容’ baojing_val=byte_read(0x2000);//读取报警数据 while(1) { WriteChar(2,0,16,disp);//在第二行显示‘内容’ adc_val=adc0832(1)*100/255;//读取酒精含量 if(adc_val>99)adc_val=99; disp[4]=adc_val/10+0x30; disp[5]=adc_val%10+0x30; disp[13]=baojing_val/10+0x30; disp[14]=baojing_val%10+0x30; //报警值减设置 if(Reduc==0) { Delay(400);//防抖 //while(Reduc==0); baojing_val--; SectorErase(0x2000);//保存 byte_write(0x2000,baojing_val); if(baojing_val<=0)baojing_val=0; } //报警值加设置 if(Add==0) { Delay(400);//防抖 //while(Add==0); baojing_val++; SectorErase(0x2000);//保存 byte_write(0x2000,baojing_val); if(baojing_val>=99)baojing_val=99; } if(adc_val>baojing_val) { flag=1;//报警标志位 } //报警函数 if(flag) { //RELAY=0; count++;if(count>140)count=49+1; if(count%7==0) { BUZZER=~BUZZER; } if(count>40&&adc_val<baojing_val) { flag=0; count=0; //RELAY=1; BUZZER=1;//取消报警 } } }unsignedchari=0,timecount=0,displayOK=0,rate=0,aa=0;unsignedinttime[6]={0};/************延时函数*****************/voiddelay(uintz){while(z--);}/************忙检测函数*****************/voidjiance(){P0=0xff;rs=0;rw=1;en=1;while(bf); //如果BF==1表示液晶在忙en=0;}/************写命令函数*****************/voidwrite_com(ucharcom){jiance();P0=com;rs=0;rw=0;en=1;delay(2);en=0;}/************写数据函数*****************/voidwrite_dat(uchardat){jiance();P0=dat;rs=1;rw=0;en=1;delay(2);en=0;}/************1602液晶初始化函数*****************/voidinit_lcd(){write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}/******************************************************************//*在指定位置写字符*//******************************************************************/voidLCD_write_char(unsignedcharx,unsignedchary,unsignedcharData){if(y==0)write_com(0x80+x);elsewrite_com(0xC0+x);write_dat(Data);}voidDelayMs(unsignedintz){unsignedintx;for(;z>0;z--)for(x=110;x>0;x--);} voidmain(){ P32=1; init_lcd();//lcd初始化 TCON=0x01;//设置外部中断0 EX0=1; TMOD=0x01;//定时器0初始化 TH0=(65536-50650)/256;//实测每50ms中断的定时值 TL0=(65536-50650)%256; ET0=1;//开定时器中断 //显示基本文字 LCD_write_char(3,0,'H'); LCD_write_char(4,0,'e'); LCD_write_char(5,0,'a'); LCD_write_char(6,0,'r'); LCD_write_char(7,0,'t'); LCD_write_char(8,0,''); LCD_write_char(9,0,'R'); LCD_write_char(10,0,'a'); LCD_write_char(11,0,'t'); LCD_write_char(12,0,'e'); LCD_write_char(8,1,'/'); LCD_write_char(9,1,'m'); LCD_write_char(10,1,'i'); LCD_write_char(11,1,'n'); TR0=0;//定时器停止 EA=1;//开总中断 while(1) { if(displayOK==1) { rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5); LCD_write_char(5,1,rate/100+48); LCD_write_char(6,1,(rate%100)/10+48); LCD_write_char(7,1,rate%10+48); } DelayMs(300); }}voidex0()interrupt0{ EX0=0;//暂时关外部中断 if(timecount<8)//当连续两次检测时间间隔小于8*50ms=400ms不处理 { TR0=1;//开定时器 } else { time[i]=timecount*50+TH0*0.256+TL0/1000;//算出间隔时间 TL0=(65536-50650)%256;//重新设置定时器 TH0=(65536-50650)/256; timecount=0;//50ms计数清零 i++; if(i==6)//记录到超过等于6次时间 { i=1;//计数从1开始 displayOK=1;//测得5次开始显示 } } EX0=1;}voidet0()interrupt1{ TL0=(65536-50650)%256; TH0=(65536-50650)/256; timecount++;//每50ms一次计数 if(timecount>25)//当超过25*50ms=1.5s没有检测到信号停止显示 { i=0;//数据个数清零 timecount=0;//50ms计数清零 displayOK=0;//显示关 TR0=0;//定时器关 TH0=(65536-50650)/256; TL0=(65536-50650)%256; }}进入报警子程序信号采集进入报警子程序信号采集

捷键与一些电脑小技巧HYPERLINKwinkey+d:

这是高手最常用的第一快捷组合键。这个快捷键组合可以将桌面上的所有窗口瞬间最小化,无论是聊天的窗口还是游戏的窗口……只要再次按下这个组合键,刚才的所有窗口都回来了,而且激活的也正是你最小化之前在使用的窗口!

--这个就是winkeywinkey+f:

不用再去移动鼠标点“开始→搜索→文件和文件夹”了,在任何状态下,只要一按winkey+f就会弹出搜索窗口。

winkey+r:

在我们的文章中,你经常会看到这样的操作提示:“点击‘开始→运行’,打开‘运行’对话框……”。其实,还有一个更简单的办法,就是按winkey+r!

alt+tab:

如果打开的窗口太多,这个组合键就非常有用了,它可以在一个窗口中显示当前打开的所有窗口的名称和图标●,选中自己希望要打开的窗口,松开这个组合键就可以了。而alt+tab+shift键则可以反向显示当前打开的窗口。

winkey+e:

当你需要打开资源管理器找文件的时候,这个快捷键会让你感觉非常“爽”!再也不用腾出一只手去摸鼠标了!

小提示:

winkey指的是键盘上刻有windows徽标的键●。winkey主要出现在104键和107键的键盘中。104键盘又称win95键盘,这种键盘在原来101键盘的左右两边、ctrl和alt键之间增加了两个windwos键和一个属性关联键。107键盘又称为win98键盘,比104键多了睡眠、唤醒、开机等电源管理键,这3个键大部分位于键盘的右上方。

再补充点

F1显示当前程序或者windows的帮助内容。

F2当你选中一个文件的话,这意味着“重命名”

F3当你在桌面上的时候是打开“查找:所有文件”对话框

F10或ALT激活当前程序的菜单栏

windows键或CTRL+ESC打开开始菜单

CTRL+ALT+DELETE在win9x中打开关闭程序对话框

DELETE删除被选择的选择项目,如果是文件,将被放入回收站

SHIFT+DELETE删除被选择的选择项目,如果是文件,将被直接删除而不是

放入回收站

CTRL+N新建一个新的文件

CTRL+O打开“打开文件”对话框

CTRL+P打开“打印”对话框

CTRL+S保存当前操作的文件

CTRL+X剪切被选择的项目到剪贴板

CTRL+INSERT或CTRL+C复制被选择的项目到剪贴板

SHIFT+INSERT或CTRL+V粘贴剪贴板中的内容到当前位置

ALT+BACKSPACE或CTRL+Z撤销上一步的操作

ALT+SHIFT+BACKSPACE重做上一步被撤销的操作

Windows键+D:最小化或恢复windows窗口

Windows键+U:打开“辅助工具管理器”

Windows键+CTRL+M重新将恢复上一项操作前窗口的大小和位置

Windows键+E打开资源管理器

Windows键+F打开“查找:所有文件”对话框

Windows键+R打开“运行”对话框

Windows键+BREAK打开“系统属性”对话框

Windows键+CTRL+F打开“查找:计算机”对话框

SHIFT+F10或鼠标右击打开当前活动项目的快捷菜单

SHIFT在放入CD的时候按下不放,可以跳过自动播放CD。在打开wo

rd的时候按下不放,可以跳过自启动的宏

ALT+F4关闭当前应用程序

ALT+SPACEBAR打开程序最左上角的菜单

ALT+TAB切换当前程序

ALT+ESC切换当前程序

ALT+ENTER将windows下运行的MSDOS窗口在窗口和全屏幕状态间切换

PRINTSCREEN将当前屏幕以图象方式拷贝到剪贴板

ALT+PRINTSCREEN将当前活动程序窗口以图象方式拷贝到剪贴板

CTRL+F4关闭当前应用程序中的当前文本(如word中)

CTRL+F6切换到当前应用程序中的下一个文本(加shift可以跳到前

一个窗口)

在IE中:

ALT+RIGHTARROW显示前一页(前进键)

ALT+LEFTARROW显示后一页(后退键)

CTRL+TAB在页面上的各框架中切换(加shift反向)

F5刷新

CTRL+F5强行刷新1.打开“我的电脑”-“工具”-“文件夹选项”-“查看”-在“显示所有文件和文件夹”选项前打勾-“确定”

2.删除以下文件夹中的内容:

x:\DocumentsandSettings\用户名\Cookies\下的所有文件(保留index文件)

x:\DocumentsandSettings\用户名\LocalSettings\Temp\下的所有文件(用户临时文件)

x:\DocumentsandSettings\用户名\LocalSettings\TemporaryInternetFiles\下的所有文件(页面文件)

x:\DocumentsandSettings\用户名\LocalSettings\History\下的所有文件(历史纪录)

x:\DocumentsandSettings\用户名\Recent\下的所有文件(最近浏览文件的快捷方式)

x:\WINDOWS\Temp\下的所有文件(临时文件)

x:\WINDOWS\ServicePackFiles(升级sp1或sp2后的备份文件)

x:\WINDOWS\DriverCache\i386下的压缩文件(驱动程序的备份文件)

x:\WINDOWS\SoftwareDistribution\download下的所有文件

3.如果对系统进行过windoesupdade升级,则删除以下文件:x:\windows\下以$u...开头的隐藏文件

4.然后对磁盘进行碎片整理,整理过程中请退出一切正在运行的程序

5.碎片整理后打开“开始”-“程序”-“附件”-“系统工具”-“系统还原”-“创建一个还原点”(最好以当时的日期作为还原点的名字)

6.打开“我的电脑”-右键点系统盘-“属性”-“磁盘清理”-“其他选项”-单击系统还原一栏里的“清理”-选择“是”-ok了

7、在各种软硬件安装妥当之后,其实XP需要更新文件的时候就很少了。删除系统备份文件吧:开始→运行→sfc.exe/purgecache近3xxM。(该命令的作用是立即清除"Windows文件保护"文件高速缓存,释放出其所占据的空间)

8、删掉\windows\system32\dllcache下dll档(减去200——300mb),这是备用的dll档,只要你已拷贝了安装文件,完全可以这样做。

9、XP会自动备份硬件的驱动程序,但在硬件的驱动安装正确后,一般变动硬件的可能性不大,所以也可以考虑将这个备份删除,文件位于\windows\drivercache\i386目录下,名称为driver.cab,你直接将它删除就可以了,通常这个文件是74M。

10、删除不用的输入法:对很多网友来说,WindowsXPt系统自带的输入法并不全部都合适自己的使用,比如IMJP8_1日文输入法、IMKR6_1韩文输入法这些输入法,如果用不着,我们可以将其删除。输入法位于\windows\ime\文件夹中,全部占用了88M的空间。

11、升级完成发现windows\多了许多类似$NtUninstallQ311889$这些目录,都干掉吧,1x-3xM

12、另外,保留着\windows\help目录下的东西对我来说是一种伤害,呵呵。。。都干掉!

13、关闭系统还原:系统还原功能使用的时间一长,就会占用大量的硬盘空间。因此有必要对其进行手工设置,以减少硬盘占用量。打开"系统属性"对话框,选择"系统还原"选项,选择"在所有驱动器上关闭系统还原"复选框以关闭系统还原。也可仅对系统所在的磁盘或分区设置还原。先选择系统所在的分区,单击"配置"按钮,在弹出的对话框中取消"关闭这个驱动器的系统还原"选项,并可设置用于系统还原的磁盘空间大小。

14、休眠功能会占用不少的硬盘空间,如果使用得少不妨将共关闭,关闭的方法是的:打开"控制面板",双击"电源选项",在弹出的"电源选项属性"对话框中选择"休眠"选项卡,取消"启用休眠"复选框。

15、卸载不常用组件:XP默认给操作系统安装了一些系统组件,而这些组件有很大一部分是你根本不可能用到的,可以在"添加/删除Windows组件"中将它们卸载。但其中有一些组件XP默认是隐藏的,在"添加/删除Windows组件"中找不到它们,这时可以这样操作:用记事本打开\windows

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论