酒精浓度检测设计报告.docx
- 文档编号:30634774
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:50
- 大小:691.75KB
酒精浓度检测设计报告.docx
《酒精浓度检测设计报告.docx》由会员分享,可在线阅读,更多相关《酒精浓度检测设计报告.docx(50页珍藏版)》请在冰豆网上搜索。
酒精浓度检测设计报告
题目:
基于51的酒精检测装置
智能酒精浓度检测仪的设计
摘要:
随着科技的进步,智能产品在社会生产和人们生活等方面扮演着越来越重要的角色。
本文介绍的是一款智能酒精浓度检测仪的设计方案,以STC89C52单片机和酒精传感器为核心,具有声光报警和LCD显示功能。
为了满足不同环境下的监测,可根据不同的环境设置不同的阀值,超过阀值即进行声光报警,提示危害。
该设计方案的优点是硬件电路设计简单,软件功能采用C语言进行调试,方便灵活。
而该仪器具有灵敏度高、工作性能好、低功耗、低成本,较高的性价比等优点。
可用于交通检测、酒厂和食品工厂发酵监控等场所。
关键词:
智能;酒精浓度;检测仪;STC89C52单片机;阀值;C语言
附录:
源程序………………………………………………………………………………29
第1章绪论
1.1选题的依据和课题的意义
随着我国近年来高速发展的经济水平和居民生活水平,私家车的占有率直线上升,各式各样的汽车已经成为人们的代步工具。
同时伴随而来的是频频发生的交通事故,尤其是因为酒后驾车所引发的交通事故,给自己和人们的生命财产安全带来威胁,同时也给国家和社会带来了严重的经济损失。
因此,对于每个驾驶人来说拥有一个酒精浓度检测仪,在每次驾驶之前自行检测酒精浓度再决定是否安全驾驶,这是对自己、对家庭、对社会有责任感的体现。
此外,从工厂企业到居民家庭,酒精泄露的检测、监控对居民的人身和财产安全都是十分重要和必不可少的。
因此,酒精浓度检测仪具有十分广阔的实际应用价值和潜在的市场要求。
1.2设计构成及研究内容
本文设计的智能酒精浓度检测仪采用的是气敏传感器,属于半导体型,该传感器实质是个可变电阻,在它两端加以固定的电压,随着所处环境酒精浓度的升高阻值将进行线性变化,从而将酒精浓度的含量转变为电压的变化。
该酒精检测仪以C51单片机和气敏酒精传感器为核心,具有声光报警和LCD显示功能。
为了满足不同环境下的监测,可根据不同的环境设置不同的阈值,超过阈值即进行声光报警,提示危害。
采用C语言来实现其软件功能。
本设计只要包括以下内容:
(1)主控芯片的选择;在此设计中选择了C51系列单片机,熟悉C51系列芯片怎样控制外围硬件电路。
(2)酒精浓度检测模块的设计;酒精浓度常用酒精传感器来检测,了解该传感器的工作原理,制作数据采集模块完成数据的采集。
(3)A/D转换模块的设计;A/D转换器的选择,将采集的酒精浓度模拟信号进行转换后送至单片机存储、处理。
(4)键盘模块的设计;要通过键盘完成设定不同环境中酒精浓度的阈值。
(5)声光报警模块的设计;超过设定的阈值直观地给予警示。
(6)液晶显示模块的设计;准确显示出检测到的数据。
(7)各个硬件模块电路衔接。
(8)PCB的布板、元件焊接及功能调试。
第2章系统的工作原理与结构
2.1工作原理
酒精浓度检测仪是用来检测所处环境中的酒精浓度的,并显示出检测的结果数值。
而本设计所做的智能酒精浓度酒精检测仪除具有这个基本功能外,还可通过手动随意设置酒精浓度的阀值,以划定不同环境条件下酒精的安全界限,同时具有声光报警功能。
它主要由酒精传感器、模数转换器、单片机、LCD显示、键盘模块以及声光报警部分组成。
数据的采集由酒精传感器完成,酒精传感器将检测的酒精浓度转换为电信号,然后将电信号传递给模数转换器,经过模数转换器转换后,把转换后得到的数字信号传给单片机,单片机对所输入的数字信号进行分析处理,最后将分析处理的结果通过显示器显示出来。
同时与根据键盘设定的酒精浓度阀值进行比对,如果检测到所处环境中的酒精浓度超过设定的界线,那么单片机将会控制蜂鸣器发出声音报警和发光LED不断闪烁,以提示危害。
2.2结构框图
硬件系统结构框图如下图2-1所示
图2-1系统结构框图
2.3智能酒精浓度检测仪的整体结构特点
本文设计的智能酒精浓度检测仪具有如下特点:
(1)数据采集系统以单片机为控制核心,外围电路带有LCD显示和键盘响应电路,无需其他计算机,用户就可与之进行交互工作,完成数据的采集、存储、计算、分析等过程。
(2)系统具有低功耗、小型化、高性价比、灵敏度高等特点。
(3)从便携式的角度出发,系统通过键盘设置酒精浓度的阀值,结合单片机的控制,实现了人机交互操作、界面友好。
(4)软件系统采用C语言进行编写,在兼顾实时性处理的同时,也方便了对数据的处理。
第3章检测仪的硬件设计
3.1单片机的选择
STC89C52是一个低功耗,高性能CMOS8位单片机,片内含4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC89C52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
STC89C52共有四个8位的并行I/O口:
P0、P1、P2、P3端口,对应的引脚分别是P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7,共32根I/O线。
每根线可以单独用作输入或输出。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0不具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为STC89C52特殊功能使用,在flash编程和校验时,P3口也接收一些控制信号。
单片机的引脚图如图3.3所示。
图3.3STC89C52单片机引脚图
单片机最小系统,是指用最少的元件与单片机组成的可以工作的系统。
对52单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
单片机接口电路主要用来连接计算机和其他外部设备,各功能模块及原理如下:
复位电路:
单片机最小系统复位电路的极性电容C3的大小直接影响单片机的复位时间,一般采用10-30μF,51单片机最小系统容值越大需要的复位时间越短。
单片机工作之后,只要在RST引线上加载10ms以上的高电平,单片机就能有效地复位。
CS-51单片机通常采用自动复位和按键复位两种方式。
这里采用按键复位和上电复位两种电路结合。
晶振电路:
典型的晶振取11.0592MHZ,晶振越大,则单片机的处理速度越快。
单片机的最小起振电容C1,C2一般采用15-33pF,并且电容离晶振越近越好。
单片机最小系统的设计电路如图3.4所示。
3.2酒精浓度检测的设计
酒精浓度的准确检测是决定该设计成功与否的关键因素,而酒精的检测依靠酒精传感器来实现信号的采集。
在本设计中选用灵敏度高、稳定性好的MQ-3气敏传感器,该传感器对乙醇蒸汽有很高的灵敏度和良好的选择性,快速的响应和恢复特性,长期的寿命和可靠的稳定性,以及简单的驱动电路。
它的工作原理是在确定的环境条件下,环境中的酒精浓度变化将会引起电阻值的变化,且这两种变化存在着线性关系。
3.2.1MQ-3气敏传感器的结构和外形
MQ-3气敏元件的结构和外形如图3-2-1所示
图3-2-1MQ3气敏元件结构外形图
在上图中,由微型AL2O3陶瓷管、SnO2敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔管内,加热器为敏感元件提供必要的工作条件。
封装好的气敏元件有6只针状管脚,其中4只用于信号提取,2只用于提供加热电流。
3.2.2MQ-3灵敏度特性曲线
图3-2-2MQ-3气敏元件的灵敏度特性曲线
在图3-2-2中给出了MQ-3气敏元件的灵敏度曲线,其中:
温度20℃;相对湿度:
65%;氧气浓度:
21%;RL:
200kΩ.Rs:
气敏元件在不同气体、不同浓度时的电阻值。
R0:
气敏元件在洁净空气中的电阻值。
3.2.3MQ-3的标准工作条件和环境条件
图3-2-3MQ-3气敏传感器阻值变化率与酒精浓度、外界温度的关系
为了更好地使用酒精传感器MQ-3,现将MQ-3的标准工作条件和环境条件进行介绍,分别如表3-2-1和表3-2-2所示:
表3-2-1工作条件
符号
参数名称
技术条件
备注
VC
回路电压
≤15V
ACorDC
VH
加热电压
5.0V±0.2V
ACorDC
RL
负载电阻
可调
RH
加热电阻
31Ω±3Ω
室温
PH
加热功耗
≤900mW
表3-2-2环境条件
符号
参数名称
技术条件
备注
Tao
使用温度
-10℃~50℃
Tas
储存温度
-20℃~70℃
RH
相对湿度
<95%RH
O2
氧气浓度
21%(标准条件)氧气浓度会影响灵敏度特性
最小值大于2%
3.2.4酒精浓度信号的采集
详细的酒精浓度采集电路见下图3-2-4所示:
图3-2-4酒精浓度采集电路
在上图中传感器将环境中的酒精浓度转化电压信号,在第4引脚直接输出电压信号模拟量,该模拟量将送到模数转换,通过单片机控制最终得出环境中酒精的含量。
3.3模数转换电路的设计
3.3.1ADC0809的特点
由于本设计中所用的是单一电源+5V,故由酒精浓度转化的电压信号也将在0~5V范围,并且考虑到转换的速度应该要快,在此我们选用典型的8位逐次逼近型A/D转换器ADC0832.
(1)8位分辨率;
(2)双通道A/D转换;
(3)输入输出电平与TTL/CMOS相兼容;
(4)5V电源供电时输入电压在0~5V之间;
(5)工作频率为250KHZ,转换时间为32μS;
(6)一般功耗仅为15mW;
图3-3-1ADC0832管脚图
3.3.2模数转换电路
具体模数转换电路见图3-2-1所示
图3-2-2模数转换电路
在该检测仪的设计中只用到一路通道,即通道CH0,对酒精传感器出来的模拟信号,进行AD转换,结果将送至单片机进行分析和处理。
3.4按键设定阈值及阈值存储电路的设计
为了适应对不同环境中酒精浓度的检测和监控,必须调整该仪器的酒精浓度阀值以符合既定的工作要求。
同时为了节省硬件资源的消耗,于是在此通过按键操作来改变酒精浓度的不同阀值,按键见下图3-4-1所示
图3-4-1外部中断按键电路
3.5液晶接口电路的设计
3.5.11602字符型LCD简介
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用16列*2行的字符型LCD1602带背光的液晶显示屏。
1602LCD主要技术参数:
1.显示容量:
16×2个字符
2.芯片工作电压:
4.5—5.5V
3.工作电流:
2.0mA(5.0V)
4.模块最佳工作电压:
5.0V
5.字符尺寸:
2.95×4.35(W×H)mm
3.5.21602引脚功能说明
各引脚接口说明如表所示:
表2-1
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
表2-1:
引脚接口说明:
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
3.5.31602LCD的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如表2-2所示:
表2-2
序号
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
1
清显示
0
0
0
0
0
0
0
0
0
1
2
光标返回
0
0
0
0
0
0
0
0
1
*
3
置输入模式
0
0
0
0
0
0
0
1
I/D
S
4
显示开/关控制
0
0
0
0
0
0
1
D
C
B
5
光标或字符移位
0
0
0
0
0
1
S/C
R/L
*
*
6
置功能
0
0
0
0
1
DL
N
F
*
*
7
置字符发生存贮器地址
0
0
0
1
字符发生存贮器地址
8
置数据存贮器地址
0
0
1
显示数据存贮器地址
9
读忙标志或地址
0
1
BF
计数器地址
10
写数到CGRAM或DDRAM)
1
0
要写的数据内容
11
从CGRAM或DDRAM读数
1
1
读出的数据内容
表2-2字符控制命令说明:
1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:
控制光标的开与关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据。
指令11:
读数据。
芯片时序表如下:
读状态
输入
RS=L,R/W=H,E=H
输出
D0—D7=状态字
写指令
输入
RS=L,R/W=L,D0—D7=指令码,E=高脉冲
输出
无
读数据
输入
RS=H,R/W=H,E=H
输出
D0—D7=数据
写数据
输入
RS=H,R/W=L,D0—D7=数据,E=高脉冲
输出
无
表2-3
基本操作时序表
读写操作时序如图2-7和2-8所示:
图2-7读操作时序
图2-8写操作时序
3.5.41602LCD的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图2-9是1602的内部显示地址。
图2-9液晶内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。
每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
图2-10字符代码与图形对应图
具体的接口电路见图3-5所示
图3-5液晶接口电路图
3.6声光报警电路的设计
当酒精浓度超过所设定标准时,通过控制单片机的P1.4口的电平来实现警报功能。
其电路见图3-6所示
图3-6声光报警电路
如上图所示,酒精浓度超过设定的阀值时,给单片机的P1.4口低电平,则三极管导通,同时蜂鸣器工作,发光二极管也亮。
否则,单片机的P1.4口维持在高电平,三极管截止,蜂鸣器不工作,二极管也不发光。
当给P34和P35口低电平时,对应的指示灯亮
3.7单片机内部存储
阈值存储电路的添加,既可以明确地看出具体设定的酒精浓度值,又能以备调出来与检出的酒精浓度作比较,增强了直观性。
于此选用了STC89C52内部EEPROM作为存储器件,从而完成数据的读写操作。
STC89C52、52内部都自带有2K字节的EEPROM,54、55和58都自带有16K字节的EEPROM,STC单片机是利用IAP技术实现的EEPROM,内部Flash擦写次数可达100,000次以上,先来介绍下ISP与IAP的区别和特点。
ISP:
InSystemProgramable是指在系统编程,通俗的讲,就是片子已经焊板子上,不用取下,就可以简单而方便地对其进行编程。
比如我们通过电脑给STC单片机下载程序,或给AT89S51单片机下载程序,这就是利用了ISP技术。
IAP:
InApplicationProgramable是指在应用编程,就是片子提供一系列的机制(硬件/软件上的)当片子在运行程序的时候可以提供一种改变flash数据的方法。
通俗点讲,也就是说程序自己可以往程序存储器里写数据或修改程序。
这种方式的典型应用就是用一小段代码来实现程序的下载,实际上单片机的ISP功能就是通过IAP技术来实现的,即片子在出厂前就已经有一段小的boot程序在里面,片子上电后,开始运行这段程序,当检测到上位机有下载要求时,便和上位机通信,然后下载数据到存储区。
大家要注意千万不要尝试去擦除这段ISP引导程序,否则恐怕以后再也下载不了程序了。
STC单片机内部有几个专门的特殊功能寄存器负责管理ISP/IAP功能的,见表1。
表1ISP/IAP相关寄存器列表
名称
地址
功能描述
D7
D6
D5
D4
D3
D2
D1
D0
复位值
ISP_DATA
E2h
Flash数据寄存器
11111111
ISP_ADDRH
E3h
Flash高字节地址寄存器
00000000
ISP_ADDRL
E4h
Flash低字节地址寄存器
00000000
ISP_CMD
E5h
Flash命令模式寄存器
--
--
--
--
--
MS2
MS1
MS0
xxxxx000
ISP_TRIG
E6h
Flash命令触发寄存器
xxxxxxxx
ISP_CONTR
E7h
ISP/IAP控制寄存器
ISPEN
SWBS
SWRST
--
--
WT2
WT1
WT0
000xx000
ISP_DATA:
ISP/IAP操作时的数据寄存器。
ISP/IAP从Flash读出的数据放在此处,向Flash写入的数据也需放在此处。
ISP_ADDRH:
ISP/IAP操作时的地址寄存器高八位。
ISP_ADDRL:
ISP/IAP操作时的地址寄存器低八位。
ISP_CMD:
ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。
命令模式如表2所示。
表2ISP_CMD寄存器模式设置
D7
D6
D5
D4
D3
D2
D1
D0
模式选择
保留
命令选择
--
--
--
--
--
0
0
0
待机模式,无ISP操作
--
--
--
--
--
0
0
1
对用户的应用程序flash区及数据flash区字节读
--
--
--
--
--
0
1
0
对用户的应用程序flash区及数据flash区字节编程
--
-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 酒精 浓度 检测 设计 报告