酒精浓度测试仪毕业论文 - 图文

更新时间:2024-05-19 15:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

酒精浓度测试仪

摘要: 随着我国的经济的不断的发展,汽车行业的蓬勃的发展。私家车走进了千家万户,伴随着一系列的安全隐患,其中事故发生率最高的就属酒后驾驶了,本设计酒精浓度测试仪就是一种可以对呼吸气体中的酒精浓度进行实时的采集,显示,报警。可用于交警队酒驾的测试与监督。本设计的微控制单元是STC公司生产的STC89C52C单片机,选用MQ-3酒精浓度传感器进行检测,然后通过AD转换电路 转换为数字信号后,显示在LCD液晶显示屏上,实时的显示气体中酒精的浓度,以及实现超值后的声光报警功能。 关键词:STC89C52;MQ-3;AD转换电路;LCD显示屏;声光报警

Alcohol concentration tester

Agricultural electrification and automation :liu yu hang

Tutor :kang zhi liang

Abstract: With the development of our country's economy, the auto industry of booming is development. Private cars entered thousands of families, along with a series of safety problems, one of the highest incidence of accidents is drunk driving , alcohol tester is a kind of the design that the breath alcohol concentration in the gas can be real-time acquisition, display and alarm. It can be used for the traffic police force drunken driving test and monitoring.The design of micro control unit is produced on STC company STC89C52C micro controller, it select MQ - 3 alcohol concentration sensor for testing, and then it will convert to a digital signal through the AD conversion circuit, display on the LCD screen, real-time display the alcohol concentration in the gas, when the observed value was gone beyond the limit ,the sound and light alarm function. Key word:STC89C52 ;MQ-3;The AD conversion circuit;LCD display screen;The sound and light alarm

1 - 1 -

1绪论

1.1酒精浓度测试仪的开发背景

随着生活水平的提高,汽车走进了千家万户,至2014年底全国机动车保有量达2.64亿辆,在这庞大的数字面前,我们考虑的不仅是人们出行的便利,更多的是交通事故的发生,从交通事故的统计情况来看,酒后驾车特别是醉酒驾车造成的交通事故是其中非常重要的原因,而且排的位置非常靠前。由于酒精的作用而引起的一些列的大脑反应变化是引起很多交通事故的主要原因。驾驶车辆既是体力劳动又是脑力劳动,行车中各种各样的客观情况都会反映到驾驶员大脑中来,司机出车前饮酒或酗酒,对安全行车关系甚大。驾驶员喝酒过后开车,由于酒精对大脑的作用让驾驶员不能像平时一些样做出正确的操作和判断,这样行驶在路上是非常危险的不仅对自己的生命不负责,也是对他人的生命不负责。这就彰显了对检测驾驶员是否饮酒驾车的重要性,阻止更多的交通事故的发生是我们这个实际的最终目的。 1.2酒精浓度测试仪的现况

随着20世纪各个领域的快速发展,传感器领域也慢慢的步向成熟,在我们的生产生活中起到了很大的作用。由于传感器在各个领域中都具有很大的作用,因此,高精度,高可靠性,微型化,微功耗无源化还有智能数字化将会成为其发展的方向。

为了检查醉驾,现阶段的方法是警察使用一种便携式的酒精浓度测试仪让驾驶员进行吹气采集呼出的气体,再通过仪器来判断驾驶员是否饮酒。但是现阶段的测试仪器的精准度不是很好,只能初步的估计驾驶员酒驾,但是要判断他食肉醉驾是就只能通过进一步的血液检测才能达到目的。由此可见,高精度,高可靠性与微型化是酒精浓度检测仪的发展方向。

目前为止,燃料型电池,半导体,红外线等检测器材等都能对酒精浓度进行测量,但是由于半导体和燃料电池价格实惠,使用起来也方便,所以是我们的普遍选择。

燃料电池作为清洁能源在全球享有很好的声誉,他可以将可燃气体燃烧后转换为清洁的电能,产生电能的多少也与消耗的燃料成正比。

与半导体型相比,燃料电池型的酒精浓度测试仪在各个方面有优于半导体型酒精浓度测试仪,比如:精密度,稳定性,抗干扰性等[14]。

1

- 2 -

2总体方案设计

酒精浓度测试仪对待测气体(液体)进行检测时,首先是酒精浓度传感器MQ-3对待测气体(液体)的酒精浓度发生变化的感知,引起内部电阻的变化,把浓度的变化转化为电信号,传输给A/D模块,A/D模块经过处理后的数字信号会传入单片机进行处理,并把处理后的结果显示到显示模块LCD1602上,可以实时直观的显示出当前浓度值。该设计还能通过键盘模块,键入一个设定值,当测量的浓度达到或超过了设定值时,会触发声光报警模块,此时蜂鸣器会运行工作。LED灯也会闪烁。整体方案结构图如图1所示

酒精传感器 A/D模块 键盘模块 单 片 机 报警模块

显示模块 图1整体方案结构图

2.1keil软件简介

单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境将这些部份组合在一起[13]。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。

1 - 3 -

3硬件设计

3.1单片机系统设计

本系统采用单片机为控制核心。单片机/MCU主要有51基本型和52增强型,而相比之下52型比51型功能更为强大,ROM和RAM存储空间更大,52还兼容51指令系统。基于本系统设计内容的需要,综合考虑后,我们选择单片机STC89C52为控制核心;主要基于考虑STC89C52是无法解密低功耗,超低价高速,高可靠强抗静电,强抗干扰,功能强大的单片机[2]。

STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内振荡器及时钟电路, 89C5X可以按照常规方法进行编程,也可以在线编程。同时STC89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式[10]。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个硬件复位。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本。STC单片机有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求STC89C52[3]引脚图(如图2所示)

图2单片机引脚图

各个引脚功能

1

- 4 -

Vcc:为电源正端,GND为地。VCC4-6V 典型值为5v;

RST:复位引脚,输入高电平是89C52复位,返回低电平退出复位; EA: 运行方式时,为程序存储器选择信号; PSEN:外部程序存储器读选通信号;

ALE: 运行方式时 ALE为外部存储器低八位地址锁存信号;

XTAL1,XTAL2: 为内部震荡电路(反向放大器)的输入端输出端外接晶振电路; 89C52的P1.0和P1.1为多功能准双向口,P1.2-P1.7为单一功能准双向口。P1.0的第二功能是定时器T2计数方式时时钟输入线或时钟输出方式时的脉冲输出线。P1.1的第二功能为T2捕捉方式时的触发输入线或T2允许加减计算是的加减控制输入线[3]。

表1 P3引脚功能图

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

第二功能 RXD(串行输入口) TXD(串行输出口) INT0(外中断0) INT1(外中断1) T0(定时/计数器0) T1(定时/计数器1)

WR(外部数据存储器写选通) RD(内部数据存储器写选通)

P2口也有两种功能,他可以作为直接的输入输出口,也可以作为系统扩展的地址总线口。

P0口是三态双向I/O口,可以作为输入输出口,他有两个场效应管T1和T2上管导通下管截止是输出高电平,上管截止下管导通时输出低电平上下管都截止是输出引脚悬空。

本设计采用的是单片机STC89C52来是实验单片机的最小系统,单片机系统设计图(图3)

1 - 5 -

图3单片机系统设计图

该电路设计中主要由晶振电路和复位电路,单片机STC89C52组成[9]。 3.2 晶振电路

单片机北部的操作一般以时钟信号为标准,他有内部时钟和外部时钟两种方式。由于外部时钟方式多用于多片单片机同时工作所以本设计不采用,内部时钟方式:内部的晶振电路和外部的振荡器同时作用才生时钟信号。内部时钟方式电路图(如图4所示)

图4晶振电路图

1

- 6 -

如图所示只要在单片机的XT1和XT2 引脚外接石英晶体,就会形成自激振荡从而产生时钟信号,途中C5、C6起稳定频率和快速起振的作用。

3.3复位电路

单片机开始工作的时候,必须处于一种确定的状态,不让就不能确定自己该执行那一条程序和如何开始运行程序,可能会导致设备错误动作,所以我们需要一个复位电路在单片机在执行程序前,都需要复位一次,保证单片机处于一种确定状态。复位电路电路图(如图5所示)

图5复位电路图

RST端在高电平存在 并且保持两个机器周期就使单片机执行复位操作。

本设计采用开关复位电路,开关没有按下的时候是上电复位电路,电路在接通电源瞬间,由于电容电压不会改变,电容处于充电状态,所以 RST的电压与VCC相同,知道电容充电结束才会导致RST电压的衰落,选择合适点的电容(哲理选用电容位10微法)就能保证RST端有两个机器周期的高电平,就能达到开机复位的目的,按下开关时RST直接与电源VCC相连实现 手动复位功能。 3.4数据采集设计

通过传感器传入的电压信号必须经过一系列的处理才能被MCU识别,比如放大、滤波、采集、转换。由于每一条通道都这样处理,会导致成本增加,所以一般信号的采集我们使用多路模拟通路进行选择。选择多路模拟开关就要考虑通道数量、切换速度、器件的封装形式等[4]。

1

- 7 -

传感器的选择,本设计采用的是MQ3酒精浓度传感器,MQ3模块详细参数介绍如下表所示

表2标准工作条件

符号 Vc VH RL RH PH

参数名称 回路电压 加热电压 负载电阻 加热电阻 加热功耗

技术条件 ≤15V 5.0V±0.2V 可调 31Ω±3Ω ≤900mW

备注 AC or DC AC or DC 室温

表3环境条件

符号 Tao Tas RH O2

参数名称 使用温度 储存温度 相对湿度 氧气浓度

技术条件 -10℃-50℃ -20℃-70℃ 小于 95% RH 21%(标准条件) 氧气浓度会影响灵敏度特性

备注 最小值大于2%

表4灵敏特性

符号 Rs

参数名称 敏感体电阻

技术参数 1MΩ- 8 MΩ (200ppm alcohol )

α

(200/100)alcohol 标准工作条件

浓度斜率

≤0.6

备注 适用范围:

10-1000ppm

温度: 20℃±2℃Vc:5.0V±0.1V Alcohol 相对湿度: 65%±5% Vh: 5.0V±0.1V

预热时间

1

不少于5分钟

- 8 -

3.5 A/D转换设计

实现A/D转换的基本方法很多,有计数法、逐次逼近法、双斜积分法和并行转换法。由于逐次逼近式A/D转换具有速度快,分辨率高等优点,而且采用这种方法的ADC芯片成本低,所以我们采用逐次逼近式A/D转换器。逐次逼近型ADC包括1个比较器、一个模数转换器、1个逐次逼近寄存器(SAR)和1个逻辑控制单元。逐次逼近型是将采样信号和已知电压不断进行比较,一个时钟周期完成1位转换,依次类推,转换完成后,输出二进制数。这类型ADC的分辨率和采样速率是相互牵制的。优点是分辨率低于12位时,价格较低,采样速率也很好。

ADC0832模数转换器具有8位分辨率、双通道A/D转换、输入输出电平与TTL/CMOS相兼容、5V电源供电时输入电压在0~5V之间、工作频率为250KHZ 、转换时间为32 微秒、一般功耗仅为15MW等优点,适合本系统的应用,所以我们采用ADC0832为模数转换器件[15]。

ADC0832是美国国家半导体公司生产的一种数模转换芯片,它具有兼容性好,体积也小 ,稳定性很强等优点深受大家的青睐,他是一个8位的双通道A/D转换芯片[11]。

表5 A/D芯片引脚功能

端口引脚 CS CH0 CH1 DI D0 CLK VCC/REF GND

功能

片选使能,低电平芯片使能 模拟输入通道0,或作为IN+/-使用 模拟输入通道1,或作为IN+/-使用 数据信号输入,选择通道控制 数据信号输出,转换数据输出

芯片时钟输入

电源输入及参考电压(复用)

接地

设计中A/D转换模块ADC0832有4个引脚和单片机引脚相连,分别是 CS、CLK、DO、DI。DO和DI并联和单片机相连,因为通讯时他们不能同时生效。要想A/D转换实现功能就必须置CS端持续的低电平,否则就会停止转换,当CS在持续的低电平时,需要

1

- 9 -

由单片机向CLK端输入时钟信号,DO/DI端使用使用DI端选择数据信号,在时钟第一个下线沿触发时,必须是高电平,在第二三个下线岩之前DI输入两位数据选择通道。电路设计图 (如图6所示)

图6数模转换电路图

3.6按键设计

本设计一共设置有4个控制命令按键:up、down、set、reset,能够输入相应的命令,调节设置浓度的高低,并和LCD显示屏连接显示运行情况,实现人机对话功能。

因为本设计是需要4个按键 所以我们采用的是独立式的按键,独立式按键就是每单个的按键就会有一条单独的I/O线,他们之间互不影响,按键一端接地,采用的是低电平有效,按下按键就会连接该条线路。内部自带上拉电阻,所以不需要外接。

键盘抖动的消除采用的是软件消除,因为硬件需要外接器件成本高,软件消除的原理是线建立一个子程序,在检测到按键闭合时先执行子程序延时功能,按键断开时也执行数毫秒的功能从而达到消除抖动的目的。按键电路图设计(如图7所示)

图7按键电路图

1

- 10 -

3.7液晶显示设计

LCD1602液晶显示器是一种在显示字母、符号、数字等比较出众的液晶显示模块,目前常用的液晶显示模块有16x1,16x2,20x2和40x2。模块内部是由显示屏、偏压产生电路、控制器和列驱动器构成。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块,LCD1602液晶显示屏的主要技术参数如下表所示:(表3)

表6 LCD1602液晶主要参数

显示容量 16×2个字符

芯片工作电压 4.5~5.5V

工作电流 2.0mA(5.0V)

模块最佳工作电压 字符尺寸 5.0V

2.95×4.35(m

m)

1602液晶显示屏采用标准的16脚接口,其中各接口的功能如下表(2.4)所示:

表7 1602液晶显示器的引脚功能

引脚号 1 2 3 4

引脚名 VSS VDD VL RS

电平 0/1

输入/输出

输入

输入数据

读/写选择端,0:向LCD写入指令或

5

R/W

0/1

输入

数据,1:从LCD读取信息 使能信号,1时读取信息,1→0(下降沿)

6 7 8

1

引脚说明 电源地 电源正极(+5V) 液晶显示偏压信号

数据/命令选择端,0:输入指令,1:

E D0 D1

1→0 0/1 0/1

输入

执行指令

输入/输出 输入/输出

- 11 -

数据总线(最低位)

数据总线

9 10

D2 D3

0/1 0/1

输入/输出 输入/输出

数据总线 数据总线

11 12 13 14 15 16

D4 D5 D6 D7 BLA BLK

0/1 0/1 0/1 0/1 +VCC 接地

输入/输出 输入/输出 输入/输出 输入/输出

数据总线 数据总线 数据总线 数据总线(最高位) LCD背光电源正极

LCD背光电源负极

本设计采用与单片机的连接方式为间接控制方式,该方式可以占用单片机的存储空间,而是利用他的I/O口实现与显示模块的联系,他的时序完全由编程来实现,与接口电路无关。液晶显示原理图(如图8所示)

图8液晶显示屏原理图

液晶显示器作为输出器件具有更高的、更稳定的显示效果。而且他是数字式的接口,操作起来更加的方便,相对于其他显示器件来说能耗更低,体积小,重量轻的诸多优点。

液晶显示的原理在于利用了液晶的物理特性,优点就会显示黑色,通过找哥哥特性,对其相应的地方加上电压就会得到想要的图形,本设计需要用图形的形式来显示结果,所以我们采用LCD1602[8]。

1 - 12 -

3.8 报警设计

本设计设置的报警主要是为了当检测的酒精浓度达到了设定的酒精浓度值时就会发出声光报警,来提醒测量的人。声光报警的电路原理很简单,光报警在必要时给发光二极管一个低电平 就能驱动二极管发光,声音控制连接三极管必要时三极管导通就会触发蜂鸣器启动。电路原理图(如图9所示)

图9 报警电路图

4软件设计

4.1主程序模块

本设计软件设计部分主要是运用单片机编程,c语言是一种简单实用的高级语言,而且

符合我们的编程习惯,更容易理解,所以选择C语言作为编程语言。

主程序主要是和硬件相结合达到检测与显示,测出酒精浓度的目的,主要的系统框架图(如图10所示)

1

- 13 -

开始 初始化CPU AD采集 初始化 显示开机画面 显示菜单 读键 图10主程序方框图

4.2 A/D转换模块

数模转换的主要目的就是把采集的模拟信号变换成单片机能识别的数字信号 。A/D转换的程序流程图(如图11所示)

开始 结束 使能芯片 送入指定寄存器 产生时钟信号 字节数据校验

输入通道控制字 读取2字节数据 图11 A/D转换方框图

工作时序:CH0、CH1为模拟输入端口,只有当 CS为低电平是才能开始转换,输

入端DI加一个高电平,CLK上加一个时钟,DI就会脱离高阻态,然后通道配置数据,伴随着时钟通过DI端送入多路器,最后一位进入时DI为高阻态,从而启动转换。如果想要进行下一次转换,CS必须做一次高到低的跳变,然后重复以上过程。

1 - 14 -

4.3 按键输入模块

按键是实现人机互动的主要手段,对酒精浓度的设置,程序的启动等就必须通过对案件的操作来实现。按键程序方框图(如图12所示)

按键程序入口

N 按键是否按下? Y 调用延时程序 N

按键是否释放? Y 键值传送 图12按键方框图

4.4 液晶显示模块

LCD主要起到显示的效果,让我们更直观的看出当前测量的浓度值,采用的是直接访问方式。液晶显示器程序流程图(如图13所示)

1

- 15 -

入口 读状态字 N

忙? Y 写指令代码/显示数据 读显示数据 图13液晶程序流程图

液晶显示D0-D7口接P0.0- P0.7,分别使用一个单独的口,这么做是为了避免数据之间的干扰。由于P0口没有上拉电阻,所以需要一个排阻进行电压的扩大。

5系统调试

电路板焊接完成后需要对整个电路进行检查,各个芯片都要用万用表进行排查,查看引脚是不是正确,焊接的点上有没有短路或者断开的情况。检查完成后,就是接通电源观察电源指示灯是否点亮,然后观察led显示屏的显示工作情况是否异常,在一切都正常的情况下,预热十分钟。然后用适量的酒精来触发MQ3观测led显示屏数值的变化,以及达到设定值后报警系统的变化,当一切都达到指定的效果后,然后最主要的部分就是该设计对酒精浓度的实时监测了,方法也很简单把酒精稀释成不同浓度的3份,分别对其进行监测,观察led显示屏上的显示结果,如果和预期一致则表示 调试成功。该设计能够达到初步预期的效果。效果图(如图14所示)

1 - 16 -

图14调试效果图

6总结

此时我的毕业设计已经做完了,预期的基本功能得到了实现,能够实时的检测酒精浓度,还有达到设定值具有报警功能。这次毕业设计不仅考验了我单片机方面的软件知识,同时也考验了我焊接方面的动手能力,设计制作中,不仅要焊接得当,我还要考虑元器件的布局,这是比较辛苦的一次制作。在设计制作中遇到的很多问题,凸显出了我很多方面的不足,特别表现在软件设计的方面,对此自感有很大的缺陷,需要以后慢慢来补足,总体来讲,做毕业设计还是让我学到了很多以前没有重视的问题,希望这些想法和问题能影响我以后的工作和学习。

参考文献

[1] 黎小桃, 刘祖明, 周福明.Protel 99 SE入门与提高[M] .北京:电子工业出版社,2009. [2] 王东锋,王会良,董冠强.单片机C语言应用100例[M] .北京:电子工业出版社,2009. [3] 兰吉昌.单片机C51完全学习手册[M].北京:化学工业出版社,2009.

[4] 吕俊芳, 钱政, 袁梅.传感器接口与检测仪器电路[M] .北京:国防工业出版社,2009. [5] 赵阳.电磁兼容工程入门教程[M] .北京:机械工业出版社,2009.

[6] Italian Conference on Sensors and Microsystems Di Natale, C. Proceedings of the 7th Italian

Conference :sensors and microsystems : Bologna, Italy, 4-6 February 2002 [M]. Singapore ;River Edge,

1

- 17 -

N.J. :World Scientific,c2002.

[7] 李维提,郭强.《液晶显示应用技术》 北京:电子工业出版社,2000.

[8] 北京精电蓬远显示技术有限公司.内藏KS0108B/HD61202控制器图形液晶显示模块使用手册. [9] 徐爱钧,彭爱华.《单片机高级语言C51应用程序设计》〔M〕.北京工业出版社,1999. [10] 马忠梅等.《单片机的C语言应用程序设计》 北京:北京航空航天大学出版社,1997. [11] 华成英. 童诗白. 《模拟电子技术基础第三版》 北京: 高等教育出版社, 2004.

[12] 张友德,赵志英,涂时亮《单片微型机原理.应用实验》第五版 复旦大学出版社 2006 [13] 金炯泰,金奎焕,《如何使用KEIL 8051 C编译器》 北京航天航空大学出版社 2002 [14] 岳睿,呼吸时传感器的研究进展[J].化学传感器,南京农业大学研究生院 2006

[15] 纪宗南,单片机外围器件使用手册-输入通道器件分册[ M] 北京:北京航空航天大学出本社,2005

致谢

本论文是在康志亮老师的悉心指导下完成的。康志亮老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,严以律己、宽以待人的崇高风范对我影响深远。本论文从选题到完成,每一步都是在康老师的指导下完成的。在此,谨向康老师表示崇高的敬意和衷心的感谢!很多班级同学给予我的关心和帮助,在此也表示深深的感谢。没有他们的帮助和支持是没有办法完成我的毕业论文的。我的毕业课题是基于单片机酒精浓度测试仪的设计,是一个实际的小工程。作为一个本科生,我对实际的工程设计认识不够,经验不足,难免在设计的整体框架中,有很多的细节没有考虑。因此遇到了很多的难题,比如硬件器件的选择,功能的实现等。幸运的是有我们的指导老师的悉心指导和小组搭档的全心帮助,所以一个个看似复杂的问题便迎刃而解。

最后我还要再次深深地感谢康老师、各位小组成员,正是基于大家的全心的帮助,我才能比较顺利地完成毕业设计。谢谢你们!

1

- 18 -

附录一 程序

#include #include #include #include

#define uint unsigned int #define uchar unsigned char #define ulong unsigned long

uchar flag=0;

bit b_flag; //标志位 uint num;

uint Set_nongdu;

sbit LED =P1^1; //报警指示灯 sbit FMQ =P1^0; //蜂鸣器控制引脚 sbit key1=P1^2;//功能键 sbit key2=P1^3;//操作 sbit key3=P1^4;//操作

////////================按键扫描===========///////////// void key_scan() { if(!key1){ while(!key1); flag++; if(flag==3) { flag=1; b_flag=0; } if(flag==1) { LCD_write_str(2,13,\ //b_flag=0; //清除状态位 } if(flag==2) {

1

- 19 -

LCD_write_char(2,13,0x20); LCD_write_char(2,14,0x20); LCD_write_char(2,15,0x20); b_flag=1; //按键标志位 确定 } } if(flag==1){ if(!key2){ //while(!key2); delay(50); //软件消除按键抖动 if(!key2){ Set_nongdu++; if(Set_nongdu>256){ //超过上限就赋值0 Set_nongdu=0; } } } if(!key3){ delay(50); //软件消除按键抖动 if(!key3){ Set_nongdu--; if(Set_nongdu==0){ //低于下限就赋值900 Set_nongdu=256; } // b_flag=1; //按键标志位 } } LCD_write_str(2,2,\

display_num(0XC0+5,Set_nongdu);//display(Set_wendu); LCD_write_str(2,8,\ } }

///////////===============显示酒精浓度判断=========//////////// void display_jiujing() //

1

- 20 -

//显示设置的温度值 { uchar buff[3]; uchar k; for(k=0;k<10;k++) { num= adc0832(); //num=255-num; } /* num=num-70; if(num ==1) { num=0; } */ buff[0]=num/100+48; buff[1]=num/10+48; buff[2]=num+48; buff[3]='\\0'; LCD_write_str(1,2,\ LCD_write_str(1,5,buff); LCD_write_str(1,8,\}

void main() {

init_lcd(); //液晶屏初始化 while(1) { display_jiujing(); key_scan(); if(b_flag==1) { if(num>Set_nongdu) { FMQ =~FMQ; LED=0; } else{ FMQ =1; LED=1; } } } }

1

//判断度值 //蜂鸣器响 //报警灯亮 - 21 -

{ uchar buff[3]; uchar k; for(k=0;k<10;k++) { num= adc0832(); //num=255-num; } /* num=num-70; if(num ==1) { num=0; } */ buff[0]=num/100+48; buff[1]=num/10+48; buff[2]=num+48; buff[3]='\\0'; LCD_write_str(1,2,\ LCD_write_str(1,5,buff); LCD_write_str(1,8,\}

void main() {

init_lcd(); //液晶屏初始化 while(1) { display_jiujing(); key_scan(); if(b_flag==1) { if(num>Set_nongdu) { FMQ =~FMQ; LED=0; } else{ FMQ =1; LED=1; } } } }

1

//判断度值 //蜂鸣器响 //报警灯亮 - 21 -

本文来源:https://www.bwwdw.com/article/vnj7.html

Top