基于单片机的酒精浓度测试仪
(11) ISP/IAP,在系统可编程/在在应用可编程,无需编程器/仿真器。 (12) 8通道,10位高速ADC,高速可达25万次/秒,2位PWM还可当2路D/A使用。
(13) 2通道捕获/比较单元(PWM/PCA/CCP),也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)。
(14) 4个16位定时器,兼容8051的定时器T1/T0,2路PCA实现2个定时器。 (15) 可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟。
(16) 硬件看门口(WDT)。 (17) 高速SPI串行通信端口。
(18) 全双异步串行口(UART),兼容普通8051串口。
(19) 先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令。 (20) 通用I/O口(37/40/44个),复位后为准双向口/弱上拉(普通8051 I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不超过100mA。
3.3.2 STC12C5A16AD的引脚说明
单片机采用40引脚的双列直插封装方式。图3-7为引脚排列图,40条引脚说明如下:
1)主电源引脚Vss和Vcc
2)外接晶振引脚XTAL1和XTAL2
3)控制或与其它电源复用引脚RST,ALE和NA
4)输入/输出引脚P0.0~P0.7,P1.0~P1.7,P2.0~P2.7,P3.0~P3.7 (1)P0口(P0.0~P0.7)是一个漏极开路型准双向I/O口。在访问外部存储器时,它是分时多路转换的地址(低8位)和数据总线,在访问期间激活了内部的上拉电阻。
(2)P1口(P1.0~P1.7)是带内部上拉电阻的8位双向I/O口。在EPROM编程和程序验证时,它接收低8位地址。
(3)P2口(P2.0~P2.7)是一个带内部上拉电阻的8位双向I/O口。在访问外部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。
(4)P3口(P3.0~P3.7)是一个带内部上拉电阻的8位双向I/O口。在访问外
- 11 -
基于单片机的酒精浓度测试仪
部存储器时,它送出高8位地址。在对EFROM编程和程序验证期间,它接收高8位地址。
3.3.3 单片机系统原理图
该芯片为52内核8位单片机,内部集成了10位多路A/D转换模块,适用于常用检测电路。由STC12C5A16AD组成的单片机系统原理图如图3-8所示。图中AOUT为MQ-3传感器模块输出的检测电压信号,送入ADC7端口进行处理,DOUT为传感器模块输出的数字电平信号,该信号可以根据乙醇气体浓度直接输出报警信号,报警阈值通过模块上的电位器进行调节。
图3-8 单片机系统原理图
图3-8中,按键K2和K3为醉酒阈值调整键,其中K2为“增加”,K3为“减
- 12 -
基于单片机的酒精浓度测试仪
小”按键。L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。
3.4、显示电路
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。主要功能有:40通道点阵LCD驱动;可选择当作行驱动或列驱动;输出能产生20×2个LCD驱动波形输入接受控制器送出的串行数据和控制信号,偏压;通过单片机控制将所测的频率信号读书显示出来。
3.4.1 LCD1602显示模块技术参数
(1) 显示容量:16×2个字符; (2) 芯片工作电压:4.5~5.5V; (3) 最佳工作电压:5.0V; (4) 最佳工作电流:2.0Mv; (5) 字符尺寸:2.95×4.35mm。
3.4.2 LCD1602显示模块功能
LCD1602显示模块具体功能可见表3-9。
表3-9 LCD1602引脚,符号功能说明
引脚 GND VDD VO 标号 1 2 3 状态 接地 电源(5V) 液晶显示偏压信号,液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度) RS 4 输入 寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 R/W
说明 5 输入 读/写信号,高电平1时进行读操作,低电平0时进- 13 - 基于单片机的酒精浓度测试仪
行写操作 E 6 输入 三态 输入 输入 使能信号,下降沿使能,下降沿能触发锁存数据 数据总线,进行数据输出 背光电源(5V) 背光接地 DB0~DB7 7~14 BLA BLK
15 16 3.4.3 LCD1602显示器工作原理
LCD1602有11个控制指令,见表3-10。其中,DDRAM:显示数据RAM,用来寄存待显示的字符代码;CGROM:字符发生存储器;CGRAM:用户自定义的字符图形RAM。
表3-10 LCD1602控制指令表
指令 清屏 归位 输入方式设置 显示开关控制 光标、画面位移 功能设置 CGRAM地址设置 DDRAM地址设置 读BF和AC值 写数据 读数据 清DDRAM和AC值 AC=0,光标、画面回HOME位 设置光标、画面移动方式 设置显示、光标及闪烁开、关 光标、画面移动,不影响DDRAM 工作方式设置(初始化指令) 设置CGRAM地址。A5~A0=0~3FH DDRAM地址设置 读忙标志BF和和地址计数器AC值 数据写入DDRAM或CGRAM 从DDRAM或CGRAM数据读出 功能
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”,具体寄存器的选择控制表3-11有操作说明。
因为LCD1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片
- 14 -
基于单片机的酒精浓度测试仪
机编程中还可以用字符型常量或变量赋值,如'A’。
表3-11 LCD1602寄存器选择控制表
RS 0 0 0 1 R/W 操作说明 写入指令寄存器(清除屏等) 忙标志以及读取位址计数(DB0~DB6)值 1 1 0 1 写入数据寄存器(显示各字型等) 从数据寄存器读取数据 与单片机接口电路如图3-12所示。其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。J2的4、5、6引脚分别接液晶的RS、E/W和E控制引脚,J2的7—14引脚为数据引脚。
图3-12 LCD与单片机接口电路
3.5 阈值存储
醉酒阈值存储在EEPROM芯片AT24C04中,并可以通过 “增加”、“减少”按键调节并保存。AT24C04是IIC接口的EEPROM芯片,可以用于掉电不易失数据的存储。其电路如图3-13所示。图中A0、A1和A2为芯片的地址引脚,一般接地即可。SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。
- 15 -