基于单片机的酒精浓度测试系统设计 - 图文

更新时间:2023-03-17 19:28:01 阅读量: 综合文库 文档下载

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

编号

毕 业 设 计(论文)

题目 基于单片机的酒精浓度

测试系统设计

二级学院 电子信息及其自动化 专 业 自动化

班 级 111070102

学生姓名 陈然 学号11107990703 指导教师 陈鸿雁 职称 副教授 时 间 2015年6月

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

目 录

摘 要 ............................................................... I

Abstract .............................................................. II

1 绪论 ................................................................ 1

1.1 酒精浓度测试的背景 .............................................. 1

1.1.1什么叫做酒后驾驶 ........................................... 1 1.1.2酒后驾驶会产生的危害 ....................................... 1 1.2酒精浓度检测仪的设计内容 ........................................ 1

2 总体方案设计 ........................................................ 2 2.1总体设计基本结构 ................................................ 2 2.2主要模块 ........................................................ 3

2.2.1 STC89C51单片机 ............................................ 3 2.2.2 LCD1602液晶显示 ........................................... 4 2.2.3 ADC0832数模转换 ........................................... 8 2.3 小结 ............................................................ 9

3 硬件设计 ............................................................ 10 3.1单片机最小系统 ................................................. 10

3.1.1.晶振电路 ................................................. 10 3.1.2 复位电路 ................................................. 11 3.2 数据采集设计 ................................................... 12

3.2.1 MQ-3酒精传感器 ........................................... 12 3.2.2 A/D转换器 ............................................... 12 3.3 按键设计 ....................................................... 13 3.4 液晶显示设计 .................................................. 14 3.5 报警设计 ....................................................... 16 3.6 小结 ........................................................... 17

4 软件设计 ............................................................ 18 4.1软件介绍 ....................................................... 18 4.2 主程序模块 ..................................................... 18 4.3 A/D转换模块 ................................................... 19 4.4 按键输入模块 ................................................... 19 4.5 液晶显示模块 ................................................... 20 4.6 小结 ........................................................... 22

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

5 系统调试 ............................................................ 23

5.1系统仿真调试 ................................................... 23 5.2 系统硬件调试 ................................................... 23 5.3 小结 ........................................................... 24

6 结论 ................................................................ 25 致谢 .................................................................. 26 参考文献 .............................................................. 27 附录 .................................................................. 28

附录一 硬件设计仿真与实物图 ........................................ 28 附录二 设计主程序 .................................................. 29

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

摘 要

随着中国经济飞速发展,人民生活水平不断提高,作为代步出行的汽车已经迅速发展起来了。汽车作为一种交通工具不但能够进行远距离的行驶也能在公路上保持相当高的速度,大大节省了出行时间,并且提供了方便个人出行的方式,极大的丰富了社会交通工具的多样性。汽车通过消耗柴油和汽油完成能量的转化,来提供行驶需要的能量。但是驾驶员却是保证汽车安全驾驶的最为关键的地方,如果因为驾驶员的错误操作而使得汽车发生交通事故酿成惨剧,是得不偿失的。而酒后驾发生交通事故占了总交通事故很大的一个比重。所以对酒后驾驶的管理是十分重要的,最主要的方法就是通过测试酒精浓度判断驾驶员是否酒后驾驶。

本文研究设计了一种检测酒精浓度的智能测试仪,该仪器在检测到酒精浓度后会通过与上限值比较,当超出酒精浓度上限值后会发出警报提醒酒精浓度超标。实验方案基于89c51单片机,MQ-3酒精浓度传感器设计。传感器负责将测试的酒精浓度信号传送给AD0832,AD0832通过A/D转换将电信号转换为数字信号传送给单片机,单片机接受信号进行处理后传送到LCD上显示。

关键词: 单片机89c51 A/D转换 酒精浓度传感器

I

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

Abstract

The continuous improvement of people's living standards with China's rapid economic development.As a means of travel has quickly developed a car.Car as a means of transport not only capable of traveling long distances,and it can be maintained at a very high speed on the highway.It significant savings in travel time,and provides a convenient way of personal mobility.It also greatly enriched the diversity of the community transport. Automotive diesel and gasoline consumption by complete transformation of energy to provide energy traveling needs.But the driver is the most crucial part of the car to ensure the safe driving,if because of an error operation of the driver and makes the car traffic accident led to the tragedy, is worth the wait.Drink-driving traffic accidents accounted for a large proportion of the total accidents,so the management of drinking and driving is very important.The main way is through alcohol concentration test determines whether the driver drunk driving.

In this paper, design a method for detecting alcohol concentration of intelligent tester.The instrument will be by comparison with the upper limit after detecting alcohol concentration, when the alcohol concentration exceeds the limit alerts to remind alcohol concentration exceeded..Based on the experimental program microcontroller89c51, MQ-3 alcohol concentration sensor design.Alcohol concentration sensor signal is transmitted to the AD0832 is responsible for testing.By AD0832 A / D converter converts the electrical signal into a digital signal is transmitted to the MUC.After the MUC receives signals and sends them to the LCD display.

Key words: MCU89C51; A/D converter; Alcohol concentration sensor

II

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

连上一个晶振,再和两个电容并联后接地,组成并联谐振电路[8]。电容的选择根据需要的振幅来决定,晶振则一般为12MHZ。通过这样单片机内部产生一个和外部晶振一样的振荡,这个振荡的产生标志着振荡电路的完成。 方式二:外部时钟方式

如果采用外部时钟方式,此时要把XTAL1接到外部始终提供电路,XTAL2接地。这种情况一般是当整个单片机系统已经有时钟源或则在多机系统中取得时钟上的同步。

本方案采用内部时钟方式。如下图3.2

图3.2 晶振电路

3.1.2 复位电路

复位电路是为了保证在开始和需要重置时使整个单片机系统重新启动的装置。复位后不管是CPU还是各部件都处于确定的初始状态,它们会再次从这个初始状态工作。51单片机的复位信号是从RST处得到的,RST端信号进入施密特触发器最终获得这个信号。一般来说如果在RST引脚得到一个高电平,并且这个高电平维持的时间在两个机器周期以上,那么CPU就会相应这个指令,对单片机进行系统复位[9]。单片机系统的复位方式有:手动按钮复位和上电复位。复位电路如图3.3

图3.3 复位电路

11

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

手动按钮复位

手动复位不同于上电复位,但是原理都是使RST得到高电平,所以应该在这上面即一个高电平。为了方便控制,一般要在其中增加一个按钮来控制平常的正常工作。 上电复位

上电复位时使RESET处于高电平,而且保持高电平一段时间。因为这一点接地,所以在接地的作用下这一点会慢慢由高点平变为低电平。而且由于RESET变为低,所以单片机复位。一般来说这个一段时间为2个机器周期。

3.2 数据采集设计

本设计的数据的采集由MQ-3酒精传感器完成,传感器得到的数据是电子信号,必须通过放大,滤波,采集,转换才能被MCU识别和处理。所以数据采集由MQ-3酒精传感器和ADC0832完成,最后将数据传给MCU。 3.2.1 MQ-3酒精传感器

MQ-3是现在使用的酒精传感器,它是一个电阻传感器,检测的酒精浓度是以电信号传送出去的。在本设计中主要需要将该仪器通上5V电源,并在GND接地,OUT用来输出测试浓度。

MQ-3作为一款酒精传感器是有自己的特点的,首先是测试气体是比较灵敏的,而且在响应方面具有快速反应性。并且由于它比较简单的结构,它的使用期限和稳定性是可以得到保证的。

在使用过程中最主要的是需要通过它检测的电压得到酒精的浓度,这其中有一个关系,电压每升高1V时,相应的气体浓度就会升高200ppm。这是编程过程中最需要注意的一个环节。

3.2.2 A/D转换器

ADC0832一共有8端口,与单片机连接的则一般只有4个端口,为CS、CLK、DO、DI。

在很多情况下DO端与DI端并不是同时有效的,在DO端使用的时候DI端一般是待机状态,所以将上述两个端口可以接在一起,共用一根数据线。CS表示使能端,当需要芯片工作时不要把它置为低电平,因为这个时候芯片禁用[10]。在芯片禁用时,CLK 和DO/DI并没有工作任务,此时他们不管接高电平还是接低电平都无所谓。反之

12

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

芯片要工作时,CS必须要给低电平,直到工作结束。由于Proteus仿真软件没有MQ3酒精传感器,因此用滑动变阻器代替电信号作为输入。如下图3.4

图3.4 A/D转换器

3.3 按键设计

按键设置主要分为独立式和行列式(矩阵式)两种。

独立式键盘顾名思义就是每个按键都是独立的,这个独立指的是相互不影响连接到单片机的I/O 口,而单片机的I/O 口不需要使用外部中断之内的编程,只需要输入口即可读取按键。这种独立式键盘可以连接上拉电阻或者是下拉电阻,这并不影响数据的读取,只需要判读输入口的电平。由于独立式键盘简单的结构,所以对于单片机的编程就变得简单了。但是由于每一个按键都必须接上一个I/O 口,在按键较少的情况下还是能够使用足够的I/O 口,但是如果一旦按键变得比较多的话,单片机就不会有足够的I/O 口来供按键使用,所以一般这是就会使用行列式结构。

行列式键盘则不像独立式键盘那样直接与单片机的I/O 口相接,顾名思义行列式即行列要相交的地方而不相同,接的不是I/O 口而是上一个按键,按键和按键相连。假设我们只有A+B个I/O口,如果使用独立式键盘则也只有A+B个按键,而我们把A个I/O接上A个按键当作行线,而另为B个I/O口接上B个按钮当作列线,一共则可以得到A×B个按键[11],可以大大增减按键数量。

13

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

由于本方案只有两个按键来控制设定值的增减,所以选用简单的独立式键盘结构。如下图3.5

图3.5 按键设置

3.4 液晶显示设计

本方案使用LCD1602来显示数据,因为LCD1602与51单片机相连有以下几个优点: (1)显示质量高

由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不象阴极射线管显示器(CRT)那样需要不断刷新亮点。因此,液晶显示器画质高而且绝对不会闪烁,把眼睛疲劳降到最低。 (2)数字式接口

液晶显示器都是数字式的,不像阴极射线管彩显采用模拟接口。也就是说,使用液晶显示器,显卡再也不需要像往常那样把数字信号转化成模拟信号再行输出了。理论上,这会使色彩和定位都更加准确完美。 (3)体积小、重量轻

传统的阴极射线管显示器,后面总是拖着一个笨重的射线管。液晶显示器突破了这一限制,给人一种全新的感觉。传统显示器是通过电子枪发射电子束到屏幕,因而显像管的管颈不能做得很短,当屏幕增加时也必然增大整个显示器的体积。而液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示目的,即使屏幕加大,它的体积也不会成正比的增加,而且在重量上比相同显示面积的传统显示器要轻得多[12]。

14

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

(4)功耗低

传统的显示器内部由许多电路组成,这些电路驱动着阴极射线显像管工作时,需要消耗很大的功率,而且随着体积的不断增大,其内部电路消耗的功率肯定也会随之增大。相比而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比传统显示器也要小得多[13]。

这次的功能仅仅是通过LCD1602来显示单片机发送的数据,所以将D0-D7直接接到P0口,用来接收数据如图3.6

图3.6 LCD1602与单片机的连接

VSS与VEE和VDD接高电平,RS作为命令/数据端口接上P2.7。RS的两个状态为选择命令和选择数据,低为选择命令,高为选择数据。读/写端RW则接P2.6,它也是两个状态,为低时向LCD1602写入命令或数据;为高时,从LCD1602读取状态或数据[14]。

15

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

/***********读数模转换数据********************************************************/ //请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的 // 1 0 0 通道 // 1 1 1 通道 unsigned char ad0832read(bit SGL,bit ODD) {

unsigned char i=0,value=0,value1=0; SCL=0; DO=1;

CS=0; //开始

SCL=1; //第一个上升沿 SCL=0; DO=SGL;

SCL=1; //第二个上升沿 SCL=0; DO=ODD;

SCL=1; //第三个上升沿 SCL=0; //第三个下降沿 DO=1;

for(i=0;i<8;i++) {

SCL=1;

SCL=0; //开始从第四个下降沿接收数据 value<<=1; if(DO)

value++; }

for(i=0;i<8;i++)

{ //接收校验数据 value1>>=1; if(DO)

value1+=0x80; SCL=1; SCL=0; } CS=1; SCL=1;

if(value==value1) //与校验数据比较,正确就返回数据,否则返回0

return value; return 0;

31

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

}

/*************定时器0初始化程序***************/ void time_init() {

EA = 1; //开总中断

TMOD = 0X01; //定时器0、定时器1工作方式1 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时 }

/****************按键处理显示函数***************/ void key_with() {

if(key_can == 1) {

s_dengji ++ ; //酒精浓度设置数加1 if(s_dengji > 999) s_dengji = 999; }

if(key_can == 2) {

s_dengji -= 1; //酒精浓度设置数减1 if(s_dengji <= 1) s_dengji = 1 ; }

write_sfm2(2,9,s_dengji); //显示酒精等级 write_eeprom(); //保存数据 }

/********************独立按键程序*****************/ uchar key_can; //按键值

void key() //独立按键程序 {

static uchar key_new;

key_can = 20; //按键值还原 P1 |= 0x0f;

if((P1 & 0x0f) != 0x0f) //按键按下 {

delay_1ms(1); //按键消抖动

if(((P1 & 0x0f) != 0x0f) && (key_new == 1))

32

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

{ //确认是按键按下 key_new = 0;

switch(P1 & 0x0f) {

case 0x0b: key_can = 2; break; //得到k3键值 case 0x07: key_can = 1; break; //得到k4键值 } } } else

key_new = 1; }

/****************报警函数***************/ void clock_h_l() {

static uchar value;

if(dengji >= s_dengji ) //报警 {

value ++;

if(value >= 2) {

value = 10;

beep = ~beep; //蜂鸣器报警 } }else {

if(dengji < s_dengji) //取消报警 {

value = 0; beep = 1; } } }

/***************主函数*****************/ void main() {

beep = 0; //开机叫一声 delay_1ms(150);

P0 = P1 = P2 = P3 = 0xff; //单片机IO口初始化为1 init_eeprom(); //读eeprom数据 time_init(); //初始化定时器 init_1602();

33

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

while(1) {

key(); //独立按键程序 if(key_can < 10) {

key_with(); //按键按下要执行的程序 }

if(flag_300ms == 1) {

flag_300ms = 0;

clock_h_l(); //报警函数 dengji = ad0832read(1,0); dengji = dengji * 450 / 255.0;

dengji = dengji - 130; //首先减去零点漂移,一般是1V

if(dengji < 0) dengji = 0;

dengji = dengji * 2; //将mV转变成mg/L,系数需要校准

//电压每升高0.1V,实际被测气体的浓度增加20ppm

//1ppm=1mg/kg=1mg/L=1×10-6 常用来表示气体浓度,或者溶液浓度。

write_sfm2(1,9,dengji); //显示酒精浓度 } } }

/*************定时器0中断服务程序***************/ void time0_int() interrupt 1 {

static uchar value; TH0 = 0x3c;

TL0 = 0xb0; // 50ms value ++;

if(value % 6 == 0) {

flag_300ms = 1; //300ms value = 0; } }

34

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

图4.4 LCD1602流程

由于P0并没有自带上拉电阻,所以需要在P0口与LCD1602的D0-D7中加上上拉电阻进行电压扩大[18]。

LCD1602的读写工作时序图如图4.5和图4.6所示

21

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

图 4.5 LCD1602读操作时序

当处于读状态时,RS处于低脉冲,R/W为高脉冲,E为高脉冲 ,D0~D7=状态字 当处于读数据时,RS处于高脉冲,R/W为高脉冲,E为高脉冲,D0~D7=数据[19]。

图4.6 LCD1602写操作时序

当处于写指令时,RS为低脉冲,R/W为低脉冲,D0~D7=指令码,E=高脉冲 当处于写数据时,RS为高脉冲,R/W为低脉冲,E为高脉冲,D0~D7=数据[20]. 4.6 小结

在软件流程方面,各个模块因为都是常用的元件,所以流程和检测都比较简单。值得注意的主程序流程,虽然因为整体设计比较简单而且功能实现比较单一显得简陋,但是由于流程结构较短,而且没有分支和等待,所以整个流程在功能实现时是身份快速的,酒精浓度的一点点增加都灵敏的使测试数据增加,即使在测试仅仅呼吸一口气也能立马测试出酒精浓度的最大值,达到报警的设定值。按键方面也因为独立式按键的简单结构使得按键准确,并且在编程通过延时消除抖动。整个流程都十分简洁明了。

22

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

5 系统调试

当所有模块和设计都完成之后就可以开始调试了,因为设计之初和完成过程中可能会出现各种各种的问题,在调试时将所有出现问题解决才能达到当初设计的目标。而调试分为硬件焊接调试和软件仿真调试。

5.1系统仿真调试

软件的仿真调试主要是在仿真软件上,测试是否能完成设定的内容。本方案首先测试的是LCD1602的上电显示,在通过在程序上的修改使LCD显示设定的数值。若不正确则先检查编程问题,然后是连线的正确与否。将问题解决后能看到正确数值则说明,LCD显示模块没有问题。其次既是按键模块,由于按键模块连线十分简单主要通过观察单片机传给LCD1602的高低电平来判断编程的正确与否。检测到按下的按键与传送给LCD的高低电平一致则说明没有问题,并且会在LCD上显示设定数值的增减。然后是传感模块,由于Proteus并没有MQ-3酒精传感器的模块,所以用一个滑动变阻器代替测试的数据。通过改变滑动变阻器在A/D转换器的输出端观察电信号的改变,如果没有问题,在接上LCD后会在上面显示数字,改变滑动变阻器数字会随之改变。最后剩下报警模块,这个模块由LED灯和蜂鸣器并联,蜂鸣器需要增加一个三极管为其放大电信号,不然发出的声音极有可能达不到报警的标准。

5.2 系统硬件调试

硬件调试看起来比软件调试简单,但是由于自己焊接,所以问题比较多,而且硬件有时出现问题并不是焊连线的问题,有时候是元件的损坏。必须通过万用表在出问题的地方一段一段的测试才能找出来。理论上软件仿真没有问题,那么只有硬件焊接连线或者元件出了问题才会使功能不能实现。所以焊接时十分仔细,每焊接一个地方都会对着软件上的仿真图一步一步的对应好后才下手,做到务必没有差错。而且在焊接完后上电时必须确定程序已经拷入芯片,不然整个系统不会正常工作。在看到LCD上正常显示数值并且按键能够控制设定值的增减时,就可以用来测试酒精浓度。至此硬件就彻底完成。

23

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

5.3 小结

在实际操作中,硬件调试问题比较多,除了因为焊接和失误的问题外,最主要的问题就是仿真和实际焊接的差距。虽然在仿真上各个模块的连线的比较整齐和规划,但是实际操作起来,特别是与单片机连接的导线特别复杂。本来是准备使各个导线都在下面尽量不互相交叉,到后面才发现这并不现实。只好尽量在飞线时比较整齐,方面后面调试时进行检查。而且操作时切忌心浮气躁,容易将导线连错。

24

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

6 结论

本方案主要是用来测试酒后驾驶,当然成品是显得稍大,主要是由于在板子上焊接与手工焊接的原因。如果实现机械化生产是可以将整体设计真正变成一个芯片搭载显示器成为方便的酒驾测试仪。除开这个方便将报警系统移除也是可以单独形成一个酒精浓度测试仪。

这个设计主要是使用单片机作为微处理器来实现的。软件部分在Keil中使用C语言编写。主要是编程简单并且程序易懂便于修改,而且可以直接将写好的程序通过汇编形成.HEX文件在Proteus中实现仿真。编程难点主要是A/D转换和电压与浓度的转换计算。硬件部分是个人通过购买元件按照仿真图一步一步焊接完成的,不但是对过去所学的一种复习和巩固,一边在学习一边在动手实践,对于没有接触的知识也有了一些了解。从一开始焊接时生疏到最后的一气呵成,各个方面都有不小的进步。回望大学四年所有学的东西都是能用的上的,有些甚至需要从新查书求证,最后完成了这个设计。

25

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

致谢

在这一个学期里陈老师的指导下完成本论文。陈老师严谨的工作态度和认真的办事方式让我受益匪浅,不但关心每次的完成进度还仔细询问当中难点,给予解决和引导。陈老师不辞辛苦的对每个人完成的进度给予指导,一个一个的将其中的问题找出来和我共同解决。在没有实验设备时,陈老师自发的帮我们找到需求的设备,还热心的帮忙把自学的软件交给我们。在有问题时陈老师耐心帮我们解答,充分表现了诲人不倦的高尚师德。从开题报告到毕业论文,陈老师都是一步一步指导我完成,每一步都充满了老师的心血。即使在有时候我并不能达到要求,陈老师也不没有责备我,反而仅仅是要求我接下来尽可能赶上,并且为我提供了宝贵的意见和前进方向。而在硬件焊接和软件仿真中我同窗四年的同学也发挥了重要的作用,不光在编程方面给我提供了丰富的经验和范例,也在我数次不能发现问题的时候帮我检查出了错误。他们不光不求回报而且热心积极,在框架设计时提出了众多具有建设性的意见,在每一次失败时候都安慰我,和我一起慢慢摸索改正,所以我才能比较完善的完成论文,将看起来复杂无比的问题解决,这少不了这些同学的细心帮助和指导。

总的来说要感谢陈老师的耐心指导,也要感谢四年同学的全力帮助,所以才能顺利的完成毕业设计,深深感谢他们为我的毕业设计做出的贡献。

26

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

参考文献

[1] 张伟.单片机原理及应用[M].北京:机械工业出版社,2002:12-56. [2] 施文康.检测技术[M].北京:机械工业出版社, 2002:78-89.

[3] 谢宜仁.单片机硬件接口电路及实例解析[M].电子工业出版社,2009:126-128. [4] 薛永毅,姜余祥编著.传感器技术及应用[M].北京航空航天大学出版社, 2005:64-68 .

[5]李付鹏.智能车载酒精探测控制系统设计研究[D].浙江师范大学,2012:99-105. [6] 陈燕.基于单片机的酒精浓度检测仪的研究与设计[J].硅谷,2014,18(162):32-36.

[7]王瑜瑜,刘少军.基于单片机的酒精浓度测试系统设计[J].国外电子测量技术,2014,11(11):12-15.

[8]卢超,朱继瑜,郝鹏程,张成杰.一种新型车载酒精浓度测量仪的设计[J].电子设计工程,2013,(19):4-6.

[9]周鸿武.基于单片机的酒精浓度检测仪设计[J].制造业自动化,2012,(12):25-26. [10]李丽华,黄秋野,王琦.基于单片机的酒精浓度检测仪设计[J].科技广场,2009,(3) :16-17.

[11]段现星,王晓侃.基于单片机控制的车载酒精浓度检测仪设计[J].测控技术,2013,(12):25-26.

[12]王琪琛,何志芳,林永强,唐伟阳,徐志望.基于单片机的酒精浓度探测仪设计[J].电子技术与软件工程,2014,(11):36-37.

[13]马众,洪惠塘;刘洋.基于单片机酒精浓度检测仪设计与应用[J].无线互联科技,2013,(1):2-6.

[14]孙珊珊,李欣.基于STC89C51单片机的智能报警系统的设计与实现[J].绥化学院学报,2014 ,(2):33-36.

[15]杜豫平.基于51单片机的温湿度检测器设计[J].电子世界,2011 ,(6):66-67. [16]徐春河.浅谈AT89S51[J].制造自动化,2010, (15):1-2.

[17]李考明 .HA868(Ⅲ)P/T型电话机中集成电路简介[J].电信技术,1997, (1):22-23.

[18]McCam mon K. Alcohol Related Motor Vehicle Crashes:Deterrenceand Intervention[J]. Ann Emer Med,2001,38 ( 14) : 415 -422. [19]Italian Conference on Sensors and Microsystems Di Natale, C.Proceedings of the 7th Italian Conference :sensors andmicrosystems :Bologna, Italy, 4-6 February 2002 [M]. Singapore ;River Edge, N.J. :World Scientific,c2002:7-8. [20]Vizimuller,P:RF.design.guide-systems,circuits,and.equation(ArtechHouse,Boston,MA,1995)[6]R,Dye,Visual.Object-Orientanted.ProgrammingDr.Dobbs.MacintoshJournal,Sept.1st(1991).Vizimuller,P:RF.design.guide-systems,circuits,and.equation’(ArtechHouse.Boston.MA.1995):100-110.

27

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

附录

附录一 硬件设计仿真与实物图

28

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

附录二 设计主程序

#include //调用单片机头文件

#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535

#include //#include \

sbit CS=P2^4; //CS定义为P2口的第4位脚,连接ADC0832CS脚

sbit SCL=P2^3; //SCL定义为P2口的第3位脚,连接ADC0832SCL脚 sbit DO=P2^2; //DO定义为P2口的第4位脚,连接ADC0832DO脚

sbit beep = P3^2; //蜂鸣器IO口定义

long dengji,s_dengji = 50; //酒精等级

bit flag_300ms ;

uchar key_can; //按键值的变量 uchar menu_1; //菜单设计的变量

29

重庆理工大学毕业论文 基于单片机的酒精浓度测试系统设计

uchar flag_clock;

#include \

#include \

/***********************1ms延时函数*****************************/ void delay_1ms(uint q) {

uint i,j;

for(i=0;i

for(j=0;j<120;j++); }

/******************把数据保存到单片机内部eeprom中******************/ void write_eeprom() {

SectorErase(0x2000);

// byte_write(0x2000, s_dengji); byte_write(0x2001, s_dengji); byte_write(0x2060, a_a); }

/******************把数据从单片机内部eeprom中读出来*****************/ void read_eeprom() {

// s_dengji = byte_read(0x2000); s_dengji = byte_read(0x2001); a_a = byte_read(0x2060); }

/**************开机自检eeprom初始化*****************/ void init_eeprom() {

read_eeprom(); //先读

if(a_a != 2) //新的单片机初始单片机内问eeprom {

s_dengji = 80; a_a = 2;

write_eeprom(); } }

30

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

Top