基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx

上传人:b****1 文档编号:1292088 上传时间:2023-04-30 格式:DOCX 页数:21 大小:759.02KB
下载 相关 举报
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第1页
第1页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第2页
第2页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第3页
第3页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第4页
第4页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第5页
第5页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第6页
第6页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第7页
第7页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第8页
第8页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第9页
第9页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第10页
第10页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第11页
第11页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第12页
第12页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第13页
第13页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第14页
第14页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第15页
第15页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第16页
第16页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第17页
第17页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第18页
第18页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第19页
第19页 / 共21页
基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx

《基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。

基于单片机的酒精浓度测试仪设计报告Word格式文档下载.docx

TiD2CPP&

ADCM»

L3匚

4

37

二|P0丄

SSCPP1.ADC4PUB

V4OSTADT5?

150

j

36

_]HJJ

二P0』

6

35

MTStXADCiTl.frO

7r

34

二P0Y

iCLX^DCT?

L7二

&

33

—F0.5

P47RSI[

XTRiD?

3.0U

9

32

IPO./

10

ai

□EXLVD'

PiSTISTI

Js2?

31匚

11

J0

Z^ALE'

P4.i

二<

T:

?

S2[—阿I?

33[~1

12

二私珂4

B

28

—F2JA15

二1IQ砸皿

CLKOUTOINT.TWP14匚

14

17

clkouti/NTti?

J.5u

15

二irs占%:

VR.臥匚愆旳?

L

PDI

P40;

STC12C5A16AD

XTA12二

lfi

22

二1担丄叱0

VTAI1二

19

21

二IP2一⑷

Gwd匚

20

n

二IF23U

图6STC12C2052AD单片机管脚图

该芯片为52内核8位单片机,内部集成了10位多路A/D转换模块,适用于常用检测电路。

由STC12C5A16A组成的单片机系统原理图如图7所示。

图中AOUT为MQ-3传感器模块输出的检测电压信号,送入ADC7端口进行处理,DOU为传感器模块输出的数字电平信号,该信号可以根据乙醇气体浓度直接输出报警信号,报警阈值通过模块上的电位器进行调节。

+5VJ

U1

SIG12①久厲蛊D

虫][y.iut'

图7单片机系统原理图

图7中,按键K2和K3为醉酒阈值调整键,其中K2为“增加”,K3为“减小”按键。

L2和L3为报警指示灯,分别可以进行酒后和醉酒两级报警。

4、显示电路

显示部分采用SMC1602液晶屏进行数据显示,其主要技术参数为:

表1液晶屏技术指标

显示容量:

15X2字符

芯片工作电压:

4,5-5.6V

工作电流:

Z0mA(50V)

模块最佳工作电压;

5.0V

宇符尺寸:

2.95X435(WXH)nwn

接口信号说明如表2所示。

表2液晶屏接口信号说明

编号

特号

引脚说明

祎号

引肆说明

VSS

D2

DataI/O

2

V&

D

电源正檢

D3

DatiI/O

VI

港晶显示険压馆号

D&

taI/O

RE

數摇,僧令选择站(H/L1

DS

5

读/写选择輪(IVL)

I/O

G

E

便能伯号

H

D?

7

00

BLA

背光源正啾

01

16

SIK

背光源曲瓏

与单片机接口电路如图8所示。

其中J2的3脚为背光引脚,R9和R10电阻用于调节背光亮度。

J2的4、5、6引脚分别接液晶的RSE/W和E控制引脚,J2的7—14引脚为数据引脚。

图8LCD与单片机接口电路

5、阈值存储

醉酒阈值存储在EEPRO芯片AT24C04中,并可以通过“增加”、“减少”按键调节并保存。

AT24C04是IIC接口的EEPRO®

片,可以用于掉电不易失数据的存储。

其电路如图9所示。

图中A0、A1和A2为芯片的地址引脚,一般接地即可。

SCL和SDA为AT24C04和单片机IIC通信的时钟线和数据线。

图9EEPROM存储电路

6、供电及程序下载电路

本设计采用USB接口供电,电源电压5V。

同时,USB接口通过内含PL2303芯片的转换电路对单片机进行程序编写。

其电路原理如图10所示。

u汨电源及下戦口

J]

MU

+5^

rx5d

TY1

4—

USB

fowe^J^T

R1Ik

DI

^tlN4]4S

 

图10供电及程序下载电路

三、软件编程

1、软件流程图

本设计软件主程序流程图如图11所示

数据初始化

图11主程序流程图

2、主程序

下面介绍main.c主程序编写,其他程序略

(1)头文件和一些宏定义

#include"

STC12c5A.h"

#inelude"

1602.h"

24O2.h"

#defineucharunsignedchar

#defineuintunsignedint

(2)常量、变量定义和函数声明

〃声明常量

#defineALCH80//醉驾标准80mg/L

MQ-3模块校准

可以自行校准

〃K_MG_MV和K_ZERO为传感器校准系数,要根据每个

#defineK_MG_MV160/60〃传感器灵敏度系数,

#defineK_ZERO0〃传感器零点漂移

//定义按键

sbitKey_Up=P3A6;

sbitKey_Down=卩3人7;

〃定义LED报警灯

sbitLed_Warn1=卩3人4;

sbitLed_Warn2=卩3人5;

//定义乙醇传感器TTL电平输出引脚

sbitDOUT=P1A4;

//定义标识

volatilebitFlagStartAL=C

);

〃开始转换标志

volatilebitFlagKeyPress=

=0;

//有键弹起标志

//全局变量定义

ucharThreshold;

//酒精浓度上限报警值

uintALCounter;

//酒精转换计时器

intALValue;

//酒精测量值

floatALtemp;

//计算临时变量

uintkeyvalue,keyUp,keyDown;

//键值

char*pSave;

//EEPROM存盘用指针

//函数声明voidData_Init();

voidTimer0_Init();

voidPort_Init();

voidADC_Init();

ucharGetADVal();

voidKeyProcess(uint);

(3)各子程序

〃数据初始化

voidData_Init()

{

ALCounter=0;

ALValue=0;

Led_Warn1=1;

Led_Warn2=2;

922个脉冲

keyvalue=0;

keyUp=1;

keyDown=1;

〃定时器0初始化,中断时间约2毫秒

〃计算:

晶振11.0592MHz,定时器时钟11059200/12=921600,每毫

//16位定时器初值65536-1844=63692=0xf8cc

voidTimer0_lnit()

{I

ET0=1;

//允许定时器0中断

TMOD=1;

//定时器工作方式选择

TL0=0xcc;

//

TH0=0xf8;

//定时器赋予初值,大约为2毫秒中断1次

TR0=1;

//启动定时器

}I

〃定时器0中断

voidTimer0_ISR(void)interrupt1using0{

//定时器赋予初值

〃每1秒钟启动一次AD转换

ALCounter++;

if(ALCounter>

=500)

〃端口初始化

voidPort_Init()

P1M0=0x80;

//10000000,P1.7作为AD输入

P1M1=0x80;

//

}//ADC初始化voidADC_Init(){

uinti;

P1ASF=0x80;

II设P1.7为AD输入

ADC_RES=0;

//清先前的结果

ADC_CONTR|=0x80;

〃P0WER=1,打开ADC电源

for(i=5000;

i>

0;

i--);

//延时

ADC_CONTR=ADC_CONTR&

OxEO;

〃1110,0000清ADC_FLAG,ADC_START和低3位

0xf8|0x07;

//设置当前通道号为P1.7

for(i=2500;

}

//进行AD转换,得到当前酒精值

ucharGetADVal()

ADC_CONTR&

=0xf7;

for(i=250;

i--);

II待输入电压稳定后开始转换

IIADC_RES=0;

ADC_CONTR|=0x08;

IIADC_Start=1,启动转换

while((ADC_CONTR&

0x10)=

=0);

II等待转换结束ADC_FLAG=1

=0xe7;

//清ADC_FLAG和ADC_START位,停止转换

returnADC_RES;

//存入设定值

voidSave_Setting()

pSave=(char*)&

Threshold;

〃地址低位对应低8位,高位对应高8位

wrteeprom(0,*pSave);

II存醉酒阈值低

8位

DELAY(300);

pSave++;

wrteeprom(1,*pSave);

II存醉酒阈值高

//载入设定值

voidLoad_Setting()

Threshold;

*pSave++=rdeeprom(0);

*pSave=rdeeprom

(1);

if((Threshold>

=255)||(Threshold<

0))Threshold=80;

//按键处理程序,参数为键值,1为Up键,2为Down键

voidKeyProcess(uintnum)

switch(num)

case1:

if(Threshold<

255)Threshold++;

break;

case2:

if(Threshold>

1)Threshold--;

default:

break;

L1602」nt(2,9,Threshold);

Save_Setting();

}voidmain()

uinti,j;

EA=0;

Data_Init();

//数据初始化

TimerO」nit();

//定时器0初始化

Port_Init();

//端口初始化

ADC_Init();

//ADC初始化

EA=1;

L1602_init();

L1602_string(1,1,

"

WelcometoALCT!

L1602_string(2,1,"

DesignedbyAAA"

//延时

for(i=0;

i<

1000;

i++)

for(j=O;

j<

1OOO;

j++)

{;

〃清屏

L1602_string(1,1,"

"

Alcohol:

mg/L"

Thresho:

Load_Setting();

L1602_int(2,9,Threshold);

while

(1)

//如果FlagStartAL标志置位,则进行AD转换if(FlagStartAL==1)

//酒精浓度换算,50mg/L=62.5ppm,传感器灵敏度应事先校准

ALValue=500*GetADVal()/256;

//8位ADC,首先得到电压值,单位10毫伏

ALValue=ALValue-K_ZERO;

//首先减去零点漂移,一般是130mV

if(ALValue<

0)ALValue=0;

ALValue=ALValue*K_MG_MV;

//将mV转变成mg/L,K_MG_MV系数需要校准

L1602_int(1,9,ALValue);

if(ALValue>

Threshold)Led_Warn1=0;

//超过阈值,则Led_Warn1灯报警。

elseLed_Warn1=1;

FlagStartAL=0;

〃查询乙醇传感器TTL电平,该指示灯为传感器模块报警

if(DOUT==0)Led_Warn2=0;

elseLed_Warn2=1;

〃键盘杳询,在弹起时响应

if((Key_Up)&

(keyUp==0)){FlagKeyPress=1;

keyvalue=1;

elseif((Key_Down)&

(keyDown==0)){FlagKeyPress=1;

keyvalue=2;

}if(FlagKeyPress==1)

KeyProcess(keyvalue);

FlagKeyPress=0;

if(!

Key_Up)keyUp=0;

elsekeyUp=1;

Key_Down)keyDown=0;

elsekeyDown=1;

四、下载与调试

当程序在uVision环境下编写完成,并编译生成.hex文件后,就可以下载并进行调试了。

1、USB转串口驱动安装

打开USB驱动文件夹下的PL2303_Prolific_Driverlnstaller_v130.exe安装文件,按提示安装USB转串口驱动程序。

安装完成后,插入USB下载线后,在[开始卜[控制面板]-[打印机和其他硬件]-[设备管理器],在“端口”分支下有(ProlificUSB-to-SerialCommPort(COMX)。

X表示串口号,如果没有说明USB转串口驱动没有安装,须重新安装。

记住括号里的COM口号。

图12成功安装USB转串口驱动示意图

2、下载程序

打开STC单片机下载软件文件夹,点击运行STC_ISP_V481.exe程序,出现如下界面。

COT:

[匸L帕.」

诰童诫14胡刨坷竺戒楚左昌谟林率

图13下载软件

正确选择MCU类型,COM口(与刚才安装的COM号一致),最高波特率和最低波特率都选2400bps或者1200bps(下载线内PL2303芯片所限,没办法!

),并打开正确的.hex数据文件。

点击“Download/下载”按纽,窗口出现提示:

Chinese:

正在尝试与MCU/单片机握手连接…

Connectionisfailure.Youcantry:

1.GiveyourMCUPowerOnReset.

2.Stopoperation,thenre-selectCOMPort.

3.BecausePLCC-DIP/PQFP-DIPSockettracetooIong.~|

4.UpdatetheSTCISP.exeversion.

5.Ifstillerror,yourMCUFirmwareiserror

ornull.

Chinese:

连接失败,请尝试以下操作:

1.在单片机停电状态下,点下载按钮,再给单片机上电

2.停止下载,重新选择RS-232串口,接好电缆

3.可能需要先将P1.0/P1.1短接到地

4.可能外部时钟未接

5.因PLCC、PQFP转换座引线过长而引起时钟不振荡,请

调整参数

6.可能要升级电脑端的STCISP.exe软件

7.若仍然不成功,可能MCU/单片机内无ISP系统引导码,或需退回升级,或MCU已损坏

8.若使用USB转RS-232串口线下载,可能会遇到不兼容

的问题,可以让我们帮助购买兼容的USB转RS-232

串口线

仍在连接中,请给MCU上电...

按下电路板上的电源按纽,保证其有个失电至上电的过程,则窗口显示开始烧录芯片。

芯片烧录成功后,程序开始运行,酒精浓度测试仪正常工作。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2