1、常熟理工学院毕业设计(论文)车载酒精浓度检测仪器的设计摘要中国每年非正常死亡人数大约有320万人,其中死于车祸的人数的大约有 十万人左右,位列十大非正常死亡原因前十。国外的那个事故致死率都大大低 于我国。致死率在日本大概只有0.9%,美国是1.3%,而我国却有27.3%。在我国超过0.2毫克每毫升为醉酒驾驶,超过0.8毫克每毫升则为醉酒驾 驶。如果酒驾引起重大交通事故,构成犯罪,将吊销驾照终身禁驾。随着今年 来我国对酒后驾车的处罚力度越来越大,我们有必要设计一种酒精浓度测试仪 来规避组织驾驶员酒后驾车,从而保护人身及财产安全。本课题旨在研发一种基于PIC单片机的车载酒精浓度测试仪,它是通过将
2、酒精传感器检测气体中的酒精浓度然后传输到单片机计算判断是否酒精浓度超 标,如果被视为达到酒驾(超过20毫克每毫升),检测仪将不仅显示酒精浓度 还会由蜂鸣器发出报警。同时该酒精测试仪还可用于易燃易爆的加工场所如化 工,酿酒,食品加工来检测酒精浓度,以及时避免爆炸,起火等危害进而保护 人身及设备财产安全。关键词:单片机气体传感器模数转换器常熟理工学院毕业设计(论文)Design of vehicle alcohol concentration detection instrumentAbstractNormal number of deaths in China each year there a
3、re about 3.2 million people,one died f rom the number of car accident of about 1 00000 people,ranked among the top 10 non normal death causes of ten.The death rate of the accident in f oreign countries is much lower than that of our country.The death rate in Japan is only about 0.9%,the United State
4、s is 1.3%,while China has 27.3%.In China more than 0.2 milligrams per milliliter f br drunk driving,more than 0.8 milligrams per milliliter f br drunk driving.If drunk driving caused major traf f ic accidents,constitute a crime,will revoke a license banned f rom driving f or lif e.As this year our c
5、ountry f br drunk driving penalties more and more,it is necessary f br us to design an alcohol concentration tester to circumvent the driver drunk driving,so as to protect the personal and property saf ety.The purpose of this project is to develop a based on PIC microcontroller vehicle alcohol conce
6、ntration tester,it is the alcohol sensor f br gas detection of alcohol concentration and then transmitted to the microcontroller calculations to determine whether alcohol concentration exceeded,if it is seen as drunk driving(more than 20 mg per ml),the tester will not only show the alcohol concentra
7、tion but also by the buzzer alarm.Also the alcohol tester can also be used f or f lammable and explosive processing sites such as chemical,brewing,f ood processing to detect the concentration of alcohol,to in a timely manner to avoid explosion,f ire and otherii常熟理工学院毕业设计(论文)hazards and protect the p
8、ersonal and equipment saf ety and property.Keywords:single chip microcomputer;gas sensor;analog to digital converterhi常熟理工学院毕业设计(论文)目录第一章绪论.11.1车载酒精浓度测试仪的现状和方向.1L 2研究内容.21.3设计要求.3第二章硬件设计.42.1结构原理图.42.2单片机模块.42.3酒精传感器.102.4A/D转换器.132.5报警系统.162.6LCD显示器.17第三章系统软件.183.1 模数转换器流程图.183.2 LCD显示屏流程图.203.3蜂鸣器
9、程序设计.253.4软件仿真.26总结与展望.29参考 文献.30致谢.31附录单 片机程序.35IV常熟理工学院毕业设计(论文)第一章绪论1.1车载酒精浓度测试仪的现状人们在喝酒后,从嘴巴中呼吸出的空气会夹杂着酒精的味道,行为举止也会不一样。从19世纪开始,人们就可以通过酒精与化学物反应观察液体中是否含有酒精,再同已知的 酒精浓度标准试剂色管比较。后来,随着科学技术的发展,酒精含量测量技术得到了长 足的发展,并运用到了商业领域。与传统的血液测试,酒精浓度测试仪还具有许多优点。比如,简洁方便,不需要抽血,安全的特点,适合于抽查.最早是挪威颁布法律规定了血液检测浓度为酒后驾车的标准,挪威规定0.
10、05%(g/ml)以上为酒后驾车。而在我国最高允许驾车的酒精血液浓度是20毫克每毫升,超过20毫克每毫升为酒后驾驶,超过80毫克每毫升为醉酒驾驶。醉酒驾驶引发交通事 故,构成犯罪者,不仅要受到法律的惩罚,将吊销驾照终身禁驾,饮酒后驾驶机动车罚 款一千至两千不等,并扣留驾驶证六个月,只有在五年后才有资格重新考取驾驶证。为 了公众的生命财产安全,呼吁人们不要酒后驾车。本课题研究的是车载酒精浓度测试仪的设计。它可以预防和防止人们酒后驾驶。有 些人,虽然明知道法律禁止酒后驾车,但仍抱有侥幸心理,觉得不会受到处罚。这种行 为是对白己及他人的人身安全极大的不负责任。由此可知,光凭法律法规依然无法阻止 人们
11、酒后驾车,所以便有必要研发一种车载酒精浓度测试仪来预防酒后驾车的发生。一般而言,检查酒后驾车是由交通部门抽查驾车人员。最准确的探查血液酒精浓度 是抽血检查,但这种方法比较麻烦,成本也较大,不适合于大规模的检查。所以交警抽 查一般都是使用手持式呼气酒精检测仪。虽然这种酒精检测仪十分方便也功能强大,但 只适合办公人员使用。交警也不可能检查所有的车辆。所以这种车载酒精检测器就很好 的解决了这个问题。现行酒精检测仪的检测技术最流行的就是呼气式酒精检测法,并且还有顶空气相色 谱法和乙醇脱氢酶法。利用气体传感器的呼气式酒精检查法对人们的呼气进行检查,然 后依照1:2200的气体酒精浓度与血液酒精浓度进行比
12、较。人们今年来运用纳米技术多传 感器融合技术单壁技术改进了气体传感器,以前人们都是使用半导体型和燃料电池型传 感器。现如今,车载酒精浓度测试仪技术仍不成熟。市面上流通车载酒精浓度测试仪以萨 1常熟理工学院毕业设计(论文)博为代表。汽车启动前驾驶员必须向检测器呼气,如果酒精浓度超过标准量,汽车将无 法启动。但是车载酒精浓度测试仪依然存在许多急需解决的问题。还有一种报警方式就 是汽车中安装了 GPS装置,检测器检测驾驶员是否饮酒,并告知交警饮酒驾驶员的位置,但是依然无法确定是驾驶员饮酒还是车内乘客饮酒,又或者是车内存有酒精。,这都会导 致无效出警,浪费警力。1.2研究的主要内容本次实验主要研究的内
13、容:当酒精浓度发生变化时,TGS822的阻值会产生相应的变 化,数模转换器会根据电阻分压的不同将模拟量转换成数字量并传输给单片机进行计算 分析酒精浓度是否超标,当酒精浓度超标时,蜂鸣器会发出尖锐的报警声。人们可以通 过蜂鸣器是否鸣叫判断出酒精浓度是否超标。难点和重点:L蜂鸣器的鸣叫来判断酒精浓度是否超标。2.传感器电路的设计。首先我们需要设计一个电路的2.5v的基准电压。采用的差动输出输入电压需要符合PIC单片机的允许范围。1.3设计要求传模拟输出,_K模 数数字输出,_|单控制输出LCD感转 换片显示番图1-L系统法机t计方框I图输出L酒精传感器TGS822的输出范围的选取05V。2.单片机
14、PIC16F877A最高工作频率是20Mhz,工作频率为6Mhz。3.模数转换器工作工作电压为5v,正端电压接+5v,负端接地线。4.蜂鸣器工作点压0-5v5.LED显示器接一个可调电阻来消除“鬼影”。6.一个LED灯,电压为5伏特。2常熟理工学院毕业设计(论文)第二章系统硬件设计2.1设计原理图里H:王-?-|-a3-bg;g;g图2-1.车载酒精浓度测试仪硬件电路图系统由酒精浓度传感器与酒精接触,酒精浓度传感器会随着酒精浓度的变化而产生 变化的阻值,我们把这种变化的阻值称为模拟量,它会经pic单片机内部的ad转换器转 换成数字量,再经单片机将数字量进行判断是否酒精浓度超标,单片机决定了 L
15、CD显示 屏的显示浓度和蜂鸣器是否鸣叫。2.2单片机模块单片机选用PIC16F877A。它属于中档的PIC单片机,共有40只引脚,内部集成有数 据存储器EPROM、定时/计数器、串行接口、CCP、A/D转换器等模块,其结构较为典型。PIC16F877A共有40只引脚,3只输入/输出引脚、2只时钟引脚、4只电源连接引脚 和1只芯片主复位引脚组成了它全部的引脚。A、B、C、D、E五个端口组成 了 PIC单片 机的输入输出功能引脚。驱动能力强是其优点,主要归功于他独特的CMOS互补推挽输 出电路。它的8k字程序存储器有Flash存储器构成。365字节的RAM分为特殊功能寄存器和 具有较高自由度的可读
16、写通用寄存器被用于单片机的系统管理。3常熟理工学院毕业设计(论文)电源电路分为四个引脚:VSS引脚接地端,VDD引脚接电源正极。时钟电路:时钟信号就属晶体振荡器和陶瓷振荡器产生的时钟信号波动较小,如果 无特别要求采用这两种时钟信号。本次拟定采用晶体振荡器。单片机的晶振为6MHz。一条PIC指令会需要4个震荡时钟执行,同时震荡时钟还可以作为定时器使用。复位电路与引脚MCLR相连接,在对引脚MCLR提供低电平时,复位电路工作。复位 电路有:上电复位、上电计时器、起振计时器、看门狗定时器溢出复位、掉电复位电路 这几种方式。我们在这里采用了起振定时器的复位电路。在上电延时72ms之后,定时器 还拥有大
17、概124个时钟周期的延时,拥有这些时间足以使波形在振荡器上的稳定。PIC单片机拥有33个输入输出引脚,除了 0SC1、0SC2、MCLR、VDD、VSS以外的弓I 脚都可作为输入输出引脚。一下为各引脚的功能:表2-L端口 A引脚的名称和功能引脚标号功能信号RAO/ANO2通用I/O引脚RAO、第0路模拟量输入端RA1/AN13通用I/O引脚RA1、第1路模拟量输入端RA2/AN2/VREF-/VCREF4通用I/O引脚RA2、第2路模拟量输入端、负 参考电压端、比较器参考电压输出端RA3/AN3/VREF+5通用I/O引脚RA3、第3路模拟量输入端、正参考电压端RA4/T0CKI/C1OUT6
18、通用I/O引脚RA4、定时器0时钟输入端、比较器C1输出端RA5/AN5/SS/C2OUT7通用I/O引脚RA5、第4路模拟量输入端、同 步串口选择端、比较器C2输出端表2-2.端口 B引脚的名称和功能弓脚标号功能信号RBO/INT33通用I/O引脚RBO、外部中断输入端4常熟理工学院毕业设计(论文)RB134通用I/O引脚RB1RB235通用I/O引脚RB2RB3/PGM36通用I/O引脚RB3、低电压编程输入端RB437通用I/O引脚RB4、电压变化中断RB538通用I/O引脚RB5、电压变化中断RB6/PGC39通用I/O引脚RB6、电压变化中断、在线调试 输入端和串行编程时钟输入端RB
19、7/PGD40通用I/O引脚RB7、电压变化中断、在线调试 输入端和串行编程时钟输入端表2-3.端口 C引脚的名称和功能弓脚标号功能RCO/TIOSO/T1CKI15通用I/O引脚RC0、定时器1振荡器输出端、定 时器1时钟输入端RC1/T1OSI/CCP216通用I/O引脚RC1、定时器1振荡器输出端、扑 捉器2输入端、比较器2输出端、脉宽调制器 PWM2输出端RC2/CCP117通用I/O引脚RC2、捕捉器1输入端、比较器1 输出端、脉宽调制器PWM2输出端RC3/SCK/SCL18通用I/O引脚RC3、SPI和I2C串行口同步时钟输入或输出端RC4/SDI/SDA23通用I/O引脚RC4
20、、SPI的数据输入端、I2C数据 输入或输出端RC5/SDO24通用I/O引脚RC5、SPI数据输出端RC6/TX/CK25通用I/O引脚RC6、USART全双工异步发送端、USART半双工同步传送时钟端RC7/RX/DT26通用I/O引脚RC7、USART全双工异步发送端、USART半双工同步传送数据端5常熟理工学院毕业设计(论文)表2-4.端口 D引脚的名称和功能弓脚标号功能RDO/PSPO19通用I/O引脚RDO、从动并行端口传输线0RD1/PSP120通用I/O引脚RD1,从动并行端口传输线1PD2/PSP221通用I/O引脚RD2、从动并行端口传输线2RD3/PSP322通用I/O引
21、脚RD3、从动并行端口传输线3RD4/PSP427通用I/O引脚RD4、从动并行端口传输线4RD5/PSP528通用I/O引脚RD5、从动并行端口传输线5RD6/PSP629通用I/O引脚RD6、从动并行端口传输线6RD7/PSP730通用I/O引脚RD7、从动并行端口传输线7表2-5.端口 E引脚的名称和功能弓脚标号功能RE0/RD/AN58通用I/O引脚REO、并行口读取控制端、第5路模 拟量信号输入端RE1/WR/AN69通用I/O引脚RE1、并行口写入控制端、第6路模 拟量信号输入端RE2/CS/AN710通用I/O引脚RE2、并行口片选控制端、第7路模 拟量信号输入端PIC单片机最大
22、的特色为采取哈佛总线结构(指令与数据分开),而一般的单片机为 冯。诺依曼结构(指令与数据在一起),这种方式大大的增加了数据传输的效率。6常熟理工学院毕业设计(论文)Pic单片机的特色哈佛思线结构数据总线ROM-CPU RAM I/O12b-16b 8bCPU ROM RAM I/O8b 8bPIC单片机内部(哈佛)结构口sc:取指执行取指执行取指执行.普通单片机内部(冯.诺伊曼)结构CISC:取指执行;取指执行图2-2.PIC单片机与其他单片机结构比较图每个存储块的最初部分称为特殊功能寄存器SFR。它包括了 PIC的动作状态,I/O输 入输出口的状态和其他各类程序动作的状态。13位之后的20H
23、-7FH部分称为通用寄存器 GPRO它们用于寄存程序运行工程中的中间数据、中间状态已经最终结果等。7常熟理工学院毕业设计(论文)Fie AddressFi AddmsFil*Addmsn&rea7FhIndrec!EFh F0hFFhIndreci W”1DCh lOlh 102h l03h 104h lOSh 1h 1G7h l0h 1M WAD,A 1Xh 10Oh lOBt 1QR1 110h 111h 112h 1l3h 114h 115h 116h 117h 118h 118h 11Ah 118h no 11Dh 11Eh 11R)12hICFh 17ch17FhIndrect ad
24、dr18at 181h 183i1S IB输g 1871)188h 1B6ti IflAh 1BBh 180 IBDh 16Eh 18Fh 190h W1h 193)195岭 10h 19Th lOGti IBGti lOAh 196h 100 10Dh 19Eh 10Fh lAOh1EFH IFOiIFFhTMROOPIOh.RSGTMA0OP QN_KGPCLPCLPCLPCLSTATUSSTATUSSTATUSSTATUSFSRFSRFSRPORTATRSAPORTSTRSBPOSTSTRSBPORTCTRISCPOfTTPORTS01TRJSWPCLATHPCLATHclathPCIA
25、THNTCONNTC6IhTCONPTCON闭PIE1eeoATAEECON1P2PIE2EEAMVR1LPCONEEDATHRreivw*;TMR1MEEADRHT1CCAGeneral PurpoM R9ssr IC ByiesGmral urpox Rgstf 18 BytesTMR2SSPCON2T2CON叩二SSPSJFSSPADDSSPCOHSSPSTATCCPRILCCPPiHCCP1COWRCSTATXSTATXREGSP8RGRCREGCCPR2LCCPR2HCCP2CONADRESHADESLADCONCADCON1Gtnera Purpose Re9s!erX Bytes
26、General Purpose ReatMfef 8C BytesGenet.Purpose Regi&ter 80 BytesGenet jI Ptxpose RaaisiBr 8C Bytes0C.WM 70h-7Fh3CCMSM7v7Fhaccesses 70h.7R,n2g 23图2-3.PIC单片机内部存储图PIC单片机可以储存1000多条指令,而51单片机只有500多条。Pic COP800 ST82 68HC05 Z86 8051典型单片机代码紧凑性比较图图2-4.典型单片机代码紧凑性比较图由以上介绍可知,PIC单片机具有运行速度快、功耗低、价格低廉、指令少并且功能 强大的特点,
27、Microchip生产的PIC单片机较为主流的型号分为PIC10、PIC12和PIC16这三种基础系列单片机。综上所述,本课题决定采用各参考书采用最多的单片机8常熟理工学院毕业设计(论文)PIC16F877Ao2.3酒精传感器本课题决定使用市面上经常使用的TGS822酒精浓度传感器。它具有价格低廉,后期 电路简单,对酒精灯气体反应敏感,寿命长久,功耗消耗少等特点。TGS822酒精浓度传感器是通过SnO2对酒精较为灵敏的特性设计完成的一个作品。SnO2被加热到一定温度后,一个带负电荷的晶体吸附着氧原子。原来在晶体表面的电子 有与晶体和氧接触,就会逃逸的氧上面,结果就会使原来的晶体上留下正电荷。正
28、由于 这样,势垒会在晶体表面形成,它会使得电子移动的能力下降,降低了导电率。电源提供电流,电流中的电子会通过SnO2晶体。由于晶体上存在着阻碍电子移动的势垒,传感器就会产生电阻。而当酒精等气体出现后,它会影响阻止电子移动的势垒。势垒会随着带有电子的氧的浓度降低而降低,于是他们产生的电阻也跟着降低了。我们 可以从以上原理分析的出,酒精浓度与传感器阻止有着一定的关系。与是就可以推出公 式:Rs=AC-aRs二传感器电阻A二常数C=气体浓度。二Rs曲线的斜率TGS822酒精浓度传感器就是通过以上原理制作出来的。当在正常环境一下的SnO2遇 到需要检测的气体酒精时。TGS822酒精浓度传感器的阻值会随
29、着空气中的酒精浓度的增 大而增大。导电率的变化是作为一种信号作为输出信号经由电流传输到模数转换器中,由模拟量转换成数据量,再由单片机分析计算判断是否酒精含量超标。Tgs822传感器不 仅可以探测酒精浓度,还能探测其他有机溶剂浓度。广泛用于多种场合。9常熟理工学院毕业设计(论文)图2-5.TGS822酒精传感器性能一览图型号,1 素子类型口TGS8 22d8系列标准封装,对象气体塑料、SUS双重金属网一酒精、有机溶剂2检测范围505000ppm标准回路“条件,标准试验条 件下的电学特性2加热器电压一VHo5.0+0.2V DCAO回路电压VCMAX24VPPs415inw/负载电压加热器电压一R
30、L.RH。可变Ps415inw38+3.0 Q(室温)加热器功率一PHp66050mw VH=5.0传感器电阻一RSf300Ppm 乙醇中 1-lOkQp灵敏度(&的变化率)一0.40.1pRs(EtOH:300ppm)Rs(EtOH:50ppm”标准试验,条件-试验气体条件,回路条件20空 655%RHVC=10.00.1V DC/AC。VH=5.OO.O5V DC/AC预热条件七天以上10常熟理工学院毕业设计(论文)图2-6.不同浓度气体对应阻值纵坐标以传感器电阻比(Rs/Ro)表示。Rs=含300Ppm乙醇、各种温、湿度下的电阻值Ro=含300Ppm乙醇、2065%R.H.下的电阻值表2
31、-6.血液与呼气酒精换算一览表序号呼出气体中酒精 浓度mg/L呼出气体中酒精 浓度10-6血液中酒精浓度 mg/100mL10.022711.85520.045423.691030.068135.531540.090947.432050.113659.282560.136371.133070.159183.023580.181894.864090.2045106.7145100.2272118.5650110.2500130.4555120.2727141.2660130.2954154.1565140.3181166.0070150.3409177.8975160.3636189.72801
32、70.3863201.1585180.4091213.4390190.4318225.339511常熟理工学院毕业设计(论文)200.4515237.12100210.6618355.68150220.9091474.24200表2-7血液酒精含量临界值一览表行为类别对象临界值(mg/100ml)饮酒驾驶车辆驾驶人员20醉酒驾驶车辆驾驶人员80由上图可知,在我国最高允许驾车的酒精血液浓度是20毫克每毫升,超过20毫克 每毫升为酒后驾驶,超过80毫克每毫升为醉酒驾驶。醉酒驾驶引发交通事故,构成犯罪 者,不仅要受到法律的惩罚,将吊销驾照终身禁驾,饮酒后驾驶机动车罚款一千至两千 不等,并扣留驾驶证六
33、个月,只有在五年后才有资格重新考取驾驶证。为了公众的生命 财产安全,呼吁人们不要酒后驾车。图2-7.TGS822传感器2.4 AD转换器PIC16F877A单片机采用逐次逼近式10位数字精度、8通道的模数转换器。模数转换器的功能:AD转换器将从酒精浓度传感器得到的模拟量经过它的转换转变成 离散的数据量,它是模拟系统和数字系统的连接中有着重要地位。为了达到准确的精确 的酒精浓度数据,我们需要一种精度高,反应快速的AD转换器能够完成吧模拟量尽量精 确的转换成数字量。作为本次实验课题的关键性器材,对于车载酒精浓度测试仪的质量 有着不言而喻的作用。12常熟理工学院毕业设计(论文)10位的模数转换器需要
34、的转换时间为12个时间周期,对于PIC16f 877a,时间周期最 短为l.6us。激昂模数转换器打开必须保持内部电容电压达到模拟电压,而这个时间为ad 采集时间,pic单片机的采集时间为20us,在20us后模数转换器才会启动。在引脚ALE处输入地址锁存信号,当输入高电平为有效:低电平为无效START为控制启动A/D转换器,在引脚START输入高电平,则模数转换器启动工作。引脚EOC为控制模数转换器结束的信号,当在引脚EOC中输入了高电平,则ad转换 器结束转换停止工作。OE引脚控制输出三态门,当EOC输入高电平后ad结束,此时在引脚OE输入高电平,则能允许输出数字量。Vcc接电源线,正极,
35、电压为5伏特GND引脚是接地线。模数转换器工作过程如下:首先在ALE会输入地址锁存信号,并将信号存入地址锁 存器中,START输入高电平,模数转换器开始工作,这个时候EOC会下降。当转换工作 完成后,EOC从低电平转为高电平,则转换结束。转换的数字量会被存入锁存器,还不会 数据传输到数据线。只有当OE输入高电平时三态门才会被打开,转换才结束。START CIXXK(比DIB ADIMALE-JSDH)DH;DKi DKfknA 1)1 冷雄址偈图2-8.A/D转换器内部结构如图所示,单片机的8通道输入分别对应的引脚是IN0-|N7o模数转换器量程5v,每转变一个数字量,模拟量与之对应的就有4.
36、39mv,它拥有9.78mv的分辨能力。如果你想的到更高的精度,你可以通过增加基准电压作用在参考电压的输入端。因为只有一个模数转换器,我们可以使用切换处理8哥模拟输出量在运用 13常熟理工学院毕业设计(论文)多位复用器。模拟输出通道指定我们可以经由ADCONO寄存器的CHS0-CHS2的三位值处 理的得到我们想要的目的。PIC16F877A单片机拥有11个寄存器,它们分布在模数转换器中。ADC控制寄存器ADCONO中具有转换时钟选择位、模拟信道选择位、A/D转换启动开 关位和A/D转换准备共七个位。ADC转换结果寄存器ADRESH和ADRESL:模数转换器十位精度的转换结果存放在这 两个16位
37、的寄存器中。我们将ADFM=0左对齐,低2位的转换结果存放在ADRESL中,我们可以再对转换结果的精度要求不高时可直接读取,高8位的存放在ADRESH中;而当 ADFM=1为右对齐,则可以高两位存放在ADRESH/氐八位存放在ADRESLo方向存储器TRISA和TRISE的端口 A/E的引脚设置成输入模式则可以将其当作模拟输 入信道。2.5报警系统车载酒精浓度测试仪的报警系统主要有LCD显示器、LED灯、蜂鸣器组成。首先,报警系统会从单片机的得到数字量,单片机会做出判断,酒精浓度是否超标,如果不超标,LCD显示器会显示酒精浓度、LED灯不会发亮、蜂鸣器不会工作;如果酒精 浓度超标,LCD显示器
38、会显示酒精浓度、LED灯会发亮、蜂鸣器会持续鸣叫。如果想报警 系统不发出刺耳烦人的,唯有使车内的酒精浓度降至法律规定范围,这类似于现在汽车 中保险带报警系统。这间接的降低了酒后驾车的可能性。14常熟理工学院毕业设计(论文)图2-9.报警系统2.6 LCD显示器LCD显示器即液晶显示器,它是一种功耗低体积小重量轻的点阵字符型液晶。LCD显 示器模块是由LCD控制器、点阵驱动器、字符存储器组成的。它可以组成各式各样的数 字,字母,甚至自定义符号。我们可以非常方便的操作它完成一系列效果。如滚动播放,文字闪烁等。15常熟理工学院毕业设计(论文)LCD1图2-10.LCD引脚图LED显示器的基准电压为0
39、5v。引脚Vss我们选择接地,VDD按正极(+5v)。Vee连接一个大约为40k的可变电阻,这是为了让显示器消除鬼影,显示的画面更加 清晰。引脚RS是连接单片机选择寄存器的,当高电平1时连接数据寄存器,低电平。我们 就会换成指令寄存器。RW:引脚为读写信号线,如果你只想读取而不愿意写时,就输入高电平(1);相反,如果我们选择只写不读,则会输入低电平(0)。E:为使能端D0-D7是4位三态、双向数据总线。16常熟理工学院毕业设计(论文)第三章系统软件部分3.1模数转换器程序初始化判断AD是否 转换完毕读出数据计算图3-1.AD转换器工作流程图我们首先要对模数转换器初始化,这主要是因为为了让模数转
40、换器能够正常工作。通过观察模数转换器的EOC标志,判断模数转换器是否转换成功。如果模数转换器已经 转换成功,则可以读取数据,并计算,进入下一步。void lnitAD()(led=O;buzzer=O;TRISA=OXFF;17常熟理工学院毕业设计(论文)PORTA=OXFF;ADIF=O;ADCONO=OX81;ADCONl=OxCO;)ADFM采用A/D结果格式选择位,左对齐;VCFG作为参考电压位,0=VDD;ADON:A/D 使能位,当1二A/D转换器模块正在运行。ADCS:A/D转换时钟选择位,101二FOSC/16,unsigned int Collect_Data(unsigne
41、d char chn)(unsigned int a;unsigned char ADC_Datal,ADC_Data2;ADCONO&=0 x81;ADCONO|=(chn2);_delay_us(8);GO=1;while(GO)continue;ADIF=O;ADC_Datal=ADRESL;ADC_Data2=ADRESH&0 x03;a=ADC_Data2*256+ADC_Datal;return a;)选择新的通道,使chn向左移两位,并给ADC0N(3-6)位置数,延时至少2Tad时间。使A/D执行转状态开关,GO/DONE:A/D转换状态位;当0=A/D时,转换已完成或者未 进
42、行。当1=A/D时则表示转换正在进行。将该位置1可启动A/D转换。A/D转换完成 后,该位由硬件自动清零。等待转换结束,转换结束GODONE自动被硬件清零虽然没用中 断,但是标志位还是要清零;因为在等待的时候可能产生中断使ADIF置1。将A/D转换器 的精度取10位A/D转换数据。void DelayMS(unsigned int ms)unsigned int j=0;18常熟理工学院毕业设计(论文)for(ms;ms0;ms-)for(j=100*4;j0;j-)()定义了延时函数,设定1MHZ时约是27,其他主频着其修改。3.2 LCD显示器流程图图3-2.LCD显示器流程图19常熟理工
43、学院毕业设计(论文)首先,我们必须先初始化液晶显示器,然后通过判断液晶显示器是否忙碌,来决定 下一步计划,如果液晶显示器不忙碌,则它会进入下一步操作,由单片机计算的得到的 数据写入显示器,并且显示正常行驶或者醉酒驾驶。3.2.1初始化LCD显示屏首先,初始化LCD,我们可以采取采用软件复位序列方式void LCD_lnit(void)(LCD_CTRL_DIR=0 x00;LCD_DATA_DIR=0 x00;LCD_DATA=0 x00;/DelayMS(5);/我们需要将LCD控制用寄存器置和LCD数据用寄存器也置为输出,并且清数据寄存 器,数据手册要求时间大于4.1ms。接着我们可以开始
44、输出软件复位序列。LCD_DATA=0 x30;LCD_CMD_W_Timing();DelayMS(l);LCD_DATA=0 x30;LCD_CMD_W_Timing();DelayMS(l);LCD_DATA=0 x30;LCD_CMD_W_Timing();DelayMS(l);LCD_Write_CMD(DISP_2Line_8Bit);DelayMS(l);LCD_Write_CMD(DISP_OFF);DelayMS(l);LCD_Write_CMD(ENTRY_INC);DelayMS(l);LCD_Write_CMD(CLR_DISP);/清空屏幕显示20常熟理工学院毕业设计
45、(论文)DelayMS(l);数据手册要求查忙信号或者等待时间超过40us我们呢可以将显示模式设为2行,8位数据模式,接着设置等待时间为40us,然后将 设定输入方式设定为地址增量,再设定等待时间为40us,最后清空屏幕,复位序列结束。接着我们便要向LCD显示器输入指令、数据等。3.2.2向LCD写指令void LCD_Write_CMD(unsigned char LCD_CMD)(LCD_DATA=LCD_CMD;LCD_CMD_W_Timing();DelayMS(l);)3.2.3 向LCD写数据void LCD_Write_Data(unsigned char LCD_CMD)(LC
46、D_DATA=LCD_CMD;LCD_DAT_W_Timing();DelayMS(l);)3.2.4向LCD输出一个字符void LCD_Put_Char(unsigned char LCD_Char)(LCD_Write_Data(LCD_Char);)3.2.5 LCD写命令时序函数void LCD_CM D_W_Timing(void)(LCD_RS=0;/0表示命令字NOP();LCD_RW=0;21常熟理工学院毕业设计(论文)NOP();LCD_E=1;NOP();NOP();LCD_E=0;)3.2.6 LCD写数据时序函数void LCD_DAT_W_Timing(void)(
47、LCD_RS=1;1表示数据NOP();LCD_RW=0;NOP();LCD_E=1;NOP();NOP();LCD_E=0;)3.2.7设置显示坐标/Row=(0 or 1)/Column=(0 to 15)void LCD_Set_Cursor(unsigned char Row,unsigned char Column)(LCD_Write_CMD(DD_RAM_BASE+Row*0 x40+Column);DelayMS(l);)3.2.8向LCD输出ROM中的字符串void LCD_Puts_ROM(const char*Str)22常熟理工学院毕业设计(论文)unsigned ch
48、ar Str_Temp;while(1)(Str_Temp=*Str;if(Str_Temp!=0 x00)(LCD_Write_Data(Str_Temp);Str+;)elsereturn;)3.2.9向LCD输出字符串,字符串在RAM中 void LCD_Put_String(char*Str)(unsigned char Str_Temp;while(1)(Str_Temp=*Str;if(Str_Temp!=0 x00)(LCD_Write_Data(Str_Temp);Str+;)elsereturn;)23常熟理工学院毕业设计(论文)3.2.10向LCD输出16进制形式数据voi
49、d LCD_Put_HEX(unsigned char HEX_Val)(unsigned char Temp_HEX;Temp_HEX=(HEX_Val 4)&OxOf;if(Temp_HEX 9)Temp_HEX+=0 x37;else Temp_HEX+=0 x30;LCD_Write_Data(Temp_HEX);Te m p_H EX=H EX_Va I&OxOf;if(Temp_HEX 9)Temp_HEX+=0 x37;else Temp_HEX+=0 x30;LCD_Write_Data(Temp_HEX);)LCD显示器会根据PIC单片机传输的指令,输出酒精浓度。我们当酒精浓
50、度超过 20mg/100ml时,他代表着已进入酒后驾车,当超过80mg/100ml时,就是酒后驾车。3.3蜂鸣器的程序设置蜂鸣器的设定在于当酒精浓度超过酒后驾驶标准,就会通过鸣叫示警。if(AD_voltage20)/buzzer=l;led=0;bee();else/buzzer=O;led=l;)我们通过这个子程序设定,如果酒精浓度超过20mg/100ml蜂鸣器就将鸣叫示警,而24常熟理工学院毕业设计(论文)如果并没有达到,则蜂鸣器并不会发出叫声。3.4软件仿真仿真软件可以选用多种。在软件编写方面可以是MPLABXIDE,或者是mikroCPRO f or PIC,也可以是PICC等等。本