摘 要
随着汽车的快速的发展,整个汽车的驾驶员的安全的问题就是个十分重要的问题,人们越来越重视驾驶的安全的性能,现有的阶段进行了相应的驾驶员酒精的测试的相应的仪器,进行相应的仪器的检测。
本文的设计包括了单片机硬件系统的设计和软件系统的设计,还有整个系统进行相应的调试的设计。本文设计的内容包括了酒精的浓度的检测,设计气体传感器进行相应的检测,本文的控制的方式是51单片机进行相应的控制,广泛的应用在驾驶员的检测之中。(设计的目的—突出设计重要性,实现功能,设计方案,一些主要功能模块的具体设计方法,系统测试结果如何,有何特点优点),按这个思路修改
关键词:气体传感器:单片机
Abstract
The design of this paper includes the design of single-chip hardware system and software system, as well as the design of the corresponding debugging of the whole system. The content of this paper includes the detection of alcohol concentration, the design of gas sensor for the corresponding detection, the control method in this paper is 51 single-chip microcomputer for the corresponding control, widely used in the driver's detection.The detection system of single-chip microcomputer develops rapidly, the detection of alcohol concentration of the whole single-chip microcomputer needs to be further strengthened the overall design of the detection system of the whole gas.
Key words: gas sensor: SCM
1 绪论
1.1 研究的背景
人们的生活里不开气体,在生活中气体的传感器应用的也十分的广泛,广泛的应用在我们的生活之中,气体传感器大量的在我们的生活之中进行相关的应用,可以快速的使用气体的传感器进行相应的气体的检测,我国的人口非常的多,交通的问题是一个非常的问题,需要对驾驶员进行相应的检测保证行车的安全性。安全的性能使我们一直考虑的问题,在我们的生活中扮演着重要的角色。
1.2 酒精的检测现状的研究现状
酒精的检测的技术发展十分的迅速,国外的很多的国家已经大量的使用气体的传感器进行相应的浓度的检测,广泛的应用在整个酒精的气体的浓度的检测,我国的发展较为的缓慢需要快速的大量的发展整个酒精的浓度的相应的检测,提升整个气体的酒精的浓度,气体的传感器广泛的应用在工业产品的生产的过程之中,广泛的快速的发展出相应的气体。气体的测量通过气体的阻值的变化进行相应的数值的检测。我国的工业的使用的气体的检测的设备较多需要进一步的使用气体的检测的设备,全面的提升整个气体的检测,酒精检测的仪器的使用可以快速的得到了整个系统的提升,整个系统的大量的检测可以全面的提升产品的质量,保证整个汽车的驾驶员行车的安全保证整个人的生命的财产的安全。
1.3 设计酒精浓度探测仪的意义
酒精的气体的检测保证整个驾驶员的行车的安全。我国的人口众多,汽车的数量基数较大,很多的驾驶员行驶的过程中都进行酒驾危害人们的生命和安全,酒精的检测就十分的重要了,气体的检测在我们的生活之中扮演着重要的角色,当整个酒精的浓度过高的时候就会进行相应的报警超过的指标的过多的时候就会停止相应的工作。对我国的驾车的安全的问题可以得到了全面的提升快速的解决了整个行车的安全的问题,进一步的提升整个行车过程中安全的问题,减少交通的事故提升整个交通的工作的效率,快速的提升整个交通系统的全面的建设。
1.4 本文研究的内容
包括了硬件的系统的设计和软件系统的设计整个系统的设计通过相应的单片机进行控制,整个控制的系统的设计需要进行进一步的提升,完善整个系统的调试和整个系统的设计。
2 方案的论证
2.1单片机的选型
2.1.1 单片机的最小系统
所谓的最小系统是指真正可用的微控制器的最小配置系统。对于MCU的内部资源可以满足余姚系统,可以直接采用最小系统。由于MCS-51系列MCU无法集成时钟电路所需的晶体振荡器且没有复位电路,因此在形成最小系统时必须外部 连接这些元件。整个单片机的最小的单元没有外间的存储器只能和接口进行相应的连接,只有单片机的内部的存储器没有整个外部的电路的存储器,整个存储器的位数可以很高进行很高的位数的存储器,整个存储器的使用非常的重要,可以使用多个计数器进行数据的检测,测试相应的数据,完善整个电路的检测。
整个单片机的选型需要根据控制整个电路的要求和供电的电源,本文的选择的单片机的型号89C52单片机,整个单片机的工作的性能较有很多的引脚可以进行接线,整个单片机的工作十分的强大,可以进行数字信号的转换,控制整个的显示电路,显示电路的控制对整个酒精的相应的检测十分的重要,可以检测到所得的数据,进行整个数据的控制,显示电路的选择可以控制整个电路的精度,对各个传感器可以分别的控制,对整个系统进行总的控制,下图为单片机的几个引脚的功能:
引脚号 |
第二功能 |
P1.0 |
T2(定时/计数器T2的外部计数输入),时钟输出 |
P1.1 |
T2EX(定时/计数器T2的捕捉/重载触发信号和方向控制) |
P1.5 |
MOSI(在系统编程用) |
P1.6 |
MISO(在系统编程用) |
P1.7 |
SCK(在系统编程用) |
P3口第二功能表
引脚号 |
第二功能 |
P3.0 |
RXD(串行输入) |
P3.1 |
TXD(串行输出) |
P3.2 |
......(外部中断0) |
P3.3 |
......(外部中断1) |
P3.4 |
T0(定时器0外部输入) |
P3.5 |
T1(定时器1外部输入) |
P3.6 |
......(外部数据存储器写选通) |
P3.7 |
......(外部数据存储器写读选通) |
第一个接口P0:整个接口有八个接口,每个接口的工作的性能都有所不同,可以将整个接口的数据会向外进行相应的传递和整个接口会将外部的信号接入进行整个数据的读取,整个接口在整个单片机中十分的重要,
P1口:用于整个系统进行相应的编程,对整个数据进行相应的读取,可以将整个中央的输出数据。进行中央的处理器进行相应的处理。
P2口:P2口共有8条引脚,整个接口会与外部的接触器进行数据的相应的传递,整个数据会进行外部寄存器的相应的链接。每个部分的接口会控制不同的设备,各个引脚之间的作用也会有所不同,不同的引脚之间的作用也不会相同。
P3口:整个接口有8个作用的引脚,整个接口的引脚有着不同的作用,一种引脚的作用用来将数据传递给相应的数据给整个中央的处理器,另一种引脚的作用是用来将整个系统进行相应的控制的作用。
方案选择本文选择的方案是52单片机进行控制整个气体传感器进行信号转换之后传递给单片机之后正常的工作。
2.2 硬件的系统的设计
首先使用单片机进行相应的控制,使用气体的传感器进行信号的检测,信号的检测结束之后进行信号的转换最后在单片机的控制之下在数码管的显示之下进行相应的显示。
图2.1 系统总框图
2.3 信号采集电路
2.3.1 气体传感器的选择
气体的传感器的检测包括来了三个种类有毒性的气体的检测和生活的检测使用的气体的传感器的性能也会有所不同。
图2.2 MQ-3
检测效果较好,检测的范围较大,整个传感器的灵敏度较高,进行型号的输入较多,整个系统的快速的相应。
气体的传感器是将整个酒精的气体进入相应的检测转换相应的信号传递给整个的单片机进行相应的控制,单片机的控制可以提升整个系统的功能的特性。
MQ-3型气敏传感器的敏感部分是由金属氧化物(二氧化锡)的N型半导体微晶烧结层构成。当其表面吸附有被测气体酒精分子时,表面导电电子比例就会发生变化,从而其表面电阻会随着被测气体浓度的变化而变化。由于这种变化是可逆的,所以能重复使用。
图2.3MQ-3灵敏度特性曲线
整个电路的检测,首先使用相应的开关使用整个直流稳压的电源进行整个电源供电,整个信号的相应的检测,提升整个系统的检测,进行气体的浓度的检测。
通过相应的检测电路的表笔进行相应的信号的相应的检测,全面提升整个系统的全面的检测,设计的电路需要和单片机进行相应的控制可以和相应的系统进行很好的连接,提升整个系统的功能的特性,全面的加强整个系统的传感器的检测。
MQ-3检测电路
2.4 信号转换电路
数字信号的电路的模拟的转换十分的重要首先单片机通过信号的转换对传感器进行相应的控制,单片机控制的传感器的工作对整个的气体的浓度进行及时的检测,当传感器的检测的信号通过转换的电路传递给单片机,单片机将整个信号传递给显示电路,进行数码管电路的数据的显示对整个气体的浓度进行整个检测,转换的电路可以进行整个信号的采集和整个电路的信号的转换,整个转换器的工作的性能强大可以进行大量的数据的传递和整个电路很高的分辨率,整个电路的可以进行大量的检测,工作的性能较好适应的能力较强,整个转换器的成本较低可以长时间的进行相应的使用,可以长久地进行数据的转换,转换器在整个检测的过程中扮演着重要的角色,进行相应的转换整个转换器的工作的性能影响着整个系统的检测,对整个系统的检测影响也会较大。 整个转换器的电源较低工作的效率较高。 ANLG GND (模拟地)端用来接地,与ANLG VDD 、AIN 、REF+ 的电压共模AIN(模拟电压输入端)用于电压的输入。ANLG VDD(模拟电路电源正端)端接电源正端。
2.5单片机报警的系统的设计
整个报警的系统的设计包括了蜂鸣器和晶振的电路,整个蜂鸣器的使用可以快速的进行相应的报警,报警的系统可以进行相应的红外的系统的控制,选择红外的报警系统。
3硬件系统设计
电路的设计使用显示的数目管进行数据的快速的显示,整个系统使用51单片机的控制,系统的酒精的检测主要是通过电阻的大小进行相应的变化。单片机连接数字转换电路进行信号的快速的转变,使用气体的传感器进行酒精的浓度的检验,气体的传感器的信号需要进行快速的转变。
3.1显示电路的设计
系统实现的功能要求实时检测酒精的浓度的环境气体。因此,需要对显示电路的设计来完成这一功能。数码管介绍在单片机应用系统中数码管在整个显示电路的作用是用来整个数据之间的显示,LED数码管可以清晰地看见整个系统的控制的显示的数据,口方便等优点,可广泛应用于满足普通单片机系统的需要。LED数码管是一种将发光二极管按一定结构排列的显示装置。整个系统的数码管经常有8个相关的接口。
共阳极数码管 b) 共阴极数码管 c) 数码管引脚图
8段LED数码管结构图
数字字符对应共阴极和共阳极字段码
显示字符 |
共阴极字段码 |
共阳极字段码 |
显示字符 |
共阴极字段码 |
共阳极字段码 |
0 |
3FH |
C0H |
C |
39H |
C6H |
1 |
06H |
F9H |
D |
5EH |
A1H |
2 |
5BH |
A4H |
E |
79H |
86H |
3 |
4FH |
B0H |
F |
71H |
8EH |
4 |
66H |
99H |
P |
73H |
8CH |
5 |
6DH |
92H |
U |
3EH |
C1H |
6 |
7DH |
82H |
T |
31H |
CEH |
7 |
07H |
F8H |
Y |
6EH |
91H |
8 |
7FH |
80H |
L |
38H |
C7H |
9 |
6FH |
90H |
8 |
FFH |
0 |
A |
77H |
88H |
灭 |
0 |
FFH |
B |
7CH |
83H |
|
|
|
3.2键盘电路的设计
*键盘电路的电路结构
整个键盘的电路的设计需要根据所设置的相应的接口会进行相应的连接,包括了整个键盘电路的电源包括了高电源和低电源,整个键盘电路的设计是低压电源进行相应的控制,键盘电路有很多的按键进行相应的控制,整个键盘的电路的设计十分的重要,键盘电路的设计包括了整个对按键的编码和非编码的键盘,不同的键盘工作的性能有所不同,每个键盘的按键工作的性能是独立的,每个键盘的进行的按键会进行单独的系统的键盘的控制。每个独立的键盘的独立的按键会进行不同的控制,整个系统的按键不用会进行不同的编码。整个键盘电路通过相关的pc口进行与单片机的连接进行整个系统的控制,整个工作的系统需要进一步的加强,键盘的电路可以控制整个单片机的工作的性能可以进行单片机系统的整个复位,对整个系统进行相应的复位,键盘的电路的电源需要进一步的控制,保证整个系统的电路的控制的合理,需要进一步的提升整个电路的系统的设计。
*键盘电路器件
整个键盘的电路有相关的元器件组成包括了电阻和常用的开关构成,整个系统的状态字是开启的,整个电路的按下的时候进行相应的闭合,整个系统进行松开以后就会立即的断开,整个电路的电阻用来限制电流的过大的。显示器的器件用来输入端的使用。
键盘电路连接方式
整个电路的电源经过电路的电阻和整个控制键盘的电路的CPU进行相应的连接,进行整个系统的信息的快速的输入,进行整个系统的输入和输出,整个单片机的系统通过第二个引脚进行相应的连接,P2的接口与整个系统的CE端进行相应的连接,整个接口还会与外部接口进行相应的连接,整个单片机的芯片要与相关的接口进行相应的连接,对整个键盘的电路进行相应的控制。
键盘电路工作原理
AT89C51芯片通过相关的接口P2进行相应的连接,一个端口的信号与相关的接口进行相应的连接,一端进行相应的信号的传递,当整个系统的按键按下之后将整个系统进行相应的输入和整个单片机的系统进行相应的连接,将整个系统输出与整个单片机进行连接对整个的数据进行相应的处理。
MOV DPTR,#7FF8H
MOV A,#03H
MOVX @DPTR,A
MOV DPTR,#7FFBH
MOVX A,@DPTR
ANL A,#0FH
JNB ACC.0,KEY0
JNB ACC.1,KEY1
JNB ACC.2,KEY2
JNB ACC.3,KEY3
END
3.3复位电路和晶振电路
为了使单片机正常工作,必须有一些必要的外围电路才能正常工作。例如,复位电路和晶体振荡器电路是微控制器必需的外围电路。
复位电路单片机的复位与计算机的重启相同。在任何MCU工作之前,必须有一个重置过程。对于微控制器,在整个复位进行整个工作的之前进行的复位十分的重要,在没有工作的之前进行相应的复位,当整个电路发生相应的问题的时候进行相应的复位,复位的方式有很多种包括了按键的复位和整个系统的自动的复位,整个系统的自动的复位十分的重要,包括了上电的复位的电路和按键的复位的电路,整个复位的电路还需要进一步的完善。复位的电路恢复需要一定的时间,需要进一步的完善整个系统的复位,重新启动整个单片机。
a)上电复位电路b)按键复位电路
*晶体振荡电路
与复位电路一样,晶体振荡器电路也是微控制器系统的典型外围电路。整个晶体的电路需要控制整个震荡的频率,震动的频率的测试也十分的重要,分为集中测试的电路。没有晶体振荡器,没有时钟周期,没有时钟周期,没有程序可以执行,微控制器也无法工作。因此,晶体振荡器可以说是微控制器系统的核心。该系统中使用的晶体频率为12MHz。
整个震荡的电路有两种工作的模式有内部的工作的模式和整个外部的工作的模式,两种的工作的模式都不会有所相同。
晶振电路
4软件系统设计及调试
4.1系统的程序设计
#define AddRd 0x91 //读数据地址
sbit RS = P2^5; //定义端口 sbit RW
= P2^6; sbit EN = P2^7; //sbit DU =
P2^0; //sbit WE = P2^1; sbit k0 =
P1^0; //start the system sbit k1 =
P1^1; //setup the stand_valuesbit k2 =
P1^2; //the stand_value up sbit k3 =
P1^3; //the stand_value down sbit
alarm = P2^0; //the alarm port
/* AD 时钟信号
*/
sbit CS = P1^6; /* AD 片选信号 */
sbit DI = P1^7;//定义 ADC 各口数据; sbit D0
= P1^7; ucharadc_result = 0; /* AD 计算结果 */
/*************************变量及字符串的定义*************************/ ucharLCD_Char[]="0123456789ABCDEF-."; uchar LCD_string0[]="welcome to guet"; uchar LCD_string1[]="102021226"; sbit CLK = P3^4; #define AddWr 0x90
uchar M_Time[]="2014--4--12";// show
//检测 time uchar M_Detect[]="Detect:";
uchar M_Detect1[]="Alcohol:"; uchar
M_Detect2[]="set_val:";
uintset_value=1; //is mean 20.0mg/ml ; the big_value is 800.0 mg/ml
mean alcohol; alcohol drive is 20.0 mg/100ml=0.2mg/ml
uchardata_char=0;
//uchar M_time1[]={"Time"}; //时间
//memory //uchar M_Storage[]={"Storage"};
uint data_temp=0; uint
flag=0;
uchar code dsptab[]={'0','1','2','3','4','5','6','7','8','9'};//字符代表码;
void LCD_Init(void)
{LCD_Write_Com(0x38);
delayMs(5);
LCD_Write_Com(0x38);
Delay Ms(5);
LCD_Write_Com(0x38);
delayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08);
LCD_Write_Com(0x01);
LCD_Write_Com(0x06);
delayMs(5);
LCD_Write_Com(0x0C);
void xs_int(unsigned intshuju,bit t) //{unsigned inthuancun[6]={0}; unsigned char biaozhi=0,i;
if (shuju< 10) biaozhi = 1 ; else
f(shuju< 100) biaozhi = 2 ; else
if(shuju< 1000) biaozhi = 3 ; else
if(shuju< 10000) biaozhi = 4 ; else
if(shuju<=65535) biaozhi = 5 ;
switch(biaozhi)
{case 5:huancun[0] = shuju/10000; case
4:huancun[5] = shuju%10000/1000;
case 3:huancun[4] = shuju%1000/100;
case 2:huancun[3] = shuju%100/10;
case 1:huancun[1] = shuju%10;
break;
default:break;
}
LCD_Write_String(0,1,M_Detect); for(i=6;i>1;i--)
{ if(i==3)Display_One_Char(t,12,'.'); else
Display_One_Char(t,15-i,0x30+huancun[i-1]); }
Display_One_Char(t,14,'m');
Display_One_Char(t,15,'g');
}
unsigned char readadc(void)
{ unsigned char dat ,i;
CLK=0;
CS=1;
_nop_();
CS=0;
_nop_(); //芯片复位
DI=1;
CLK=1;
_nop_();
CLK=0;
DI=1;
CLK=1;
_nop_();
CLK=0;
DI=0;
CLK=1;
_nop_();
CLK=0; //空闲
位
_nop_(); CLK=1; DI=1;
for(i=0;i<=8;i++){ //读出 8 字节数
据 dat=dat<<1;
_nop_();
CLK=1;//这里要先 1 后 0...如果是先 0 后 1 则输出结果错误... if(DI){ dat|=0x01;
}
_nop_();
CLK=0; }
CS=1;//关闭芯片
return(dat);//返回数据
}
/*------------------------------------------------
主函数
------------------------------------------------ */
void main(void)
{
//cmg88();//关数码管,点阵函数
uintdat; LCD_Init();
LCD_Clear();//清屏 //配置位 2 //配置位 1 //启动位
case 1:
LCD_Write_Com(0xc0+y); break;
}
LCD_Write_Data(dat);
}
/*-----------------------------------------------初始化函数 ------------------------------------------------ */
void LCD_Init(void)
{
LCD_Write_Com(0x38);
delayMs(5);
LCD_Write_Com(0x38);
delayMs(5);
LCD_Write_Com(0x38);
delayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08);
LCD_Write_Com(0x01);
LCD_Write_Com(0x06);
delayMs(5);
LCD_Write_Com(0x0C);
voiddelayMs(unsigned char t)
{
while(t--)
{
//大致延时 1 mS
delayUs2x(245);
delayUs2x(245);
}
}
/*-----------------------------------------------判忙函数
------------------------------------------------ */
bit LCD_Check_Busy(void)
{
DataPort= 0 xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_(); EN_SET;
return (bit)(DataPort& 0 x80);
}
/*-----------------------------------------------写入命令函数 ------------------------------------------------ */
voidLCD_Write_Com(unsigned char com)
{
while(LCD_Check_Busy()); //忙则等待
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
写入数据函数
------------------------------------------------ */
voidLCD_Write_Data(unsigned char Data)
{
while(LCD_Check_Busy()); //忙则等待
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
4.2软件系统设计控制
整个软件系统的设计是根据整个系统的硬件进行相应的设计,软件系统的设计可以是整个电路控制的简单易懂方便人员进行相应的控制,编制整个软件系统的控制的流程要满足几个相关的要求:易懂性,实时性,可靠性和准确性,整个系统的控制要简单易懂。整个硬件的系统的传递的信号的速度较快,需要相应的软件系统的流程的控制,了解整个系统的相应的控制,设计的软件的系统可以进行相应的检测,软件系统在整个静态的环境下可以进行相应的测试,需要进一步的完善整个系统的软件控制。软件系统的设计方便进行相应的修改,整个系统的设计可以清晰地知道各个系统之间的关系,简化了硬件系统的设计,模块化的设计方便了整个系统进行相应的检查的时候进行相应的检验。是整个系统的设计非常的简单和明显的知道之间的关系,系统需要进行大量的运算,整个系统的设计十分的准确,整个软件系统进行相应的控制可以可靠地运行下去,在整个系统的快速的运行的情况之下,可以保证系统的安全的运行。在不利于运行的情况之下可以进行平稳的运行。
4.3软件系统的设计程序图
首先启动整个单片机,进行单片机的cpu的优化,打开相应的工作的页面进行相应的工作,单片机开始进行相应的检测显示整个酒精检测的浓度,在数码管上进行相应的显示。整个系统进行相应的调试的过程中要不断地进行整个系统的调试,对各个模块的程序都进行相应的调试,系统的调试是一个不断地修改的过程。
4.4系统的调试
使用整个keil软件进行相应的调试,整个系统的调试的过程还需要进一步的提升,要保证整个编写的语言没有什么错误,设计的编程的语言选择c语言,使用整个c语言进行相应的编程。软件系统的控制的流程图还需要进一步的改进,选择合适的流程图进行整个系统的控制。
系统的测试之后需要保证单片机的正常的运行,可以进行很快的快速的检测整个系统的工作全面的不断的提升,可以对酒精的很好的检测。
5系统的设计及仿真
PROTEUS这一仿真软件由英国Labcenter开发,是一个相对先进的嵌入式系统仿真软件和开发平台。我们也可以将其视为一款EDA软件,它可以实现数字电路,模拟电路以及微控制器系统的仿真和PCB设计。Proteus软件所采用的虚拟仿真技术(VSM)能够方便使用者仿真基于诸如单片机这一类微控制器的系统,除此之外,该软件还能够实现外围接口电子设备的设计与仿真。对于开发者设计的电路和编写的程序,PROTEUS可以在原始设计阶段进行验证和评估,这样就可以很好地避免因传统电子电路设计的复杂繁琐的修改而造成的重复购买电路板和电子元件的问题。该软件最突出的特点是支持微控制器的多重仿真,它可以很容易地与像Keil这样的IDE协调。在目前的PROTEUST 7.1版本中,AVR,PIC系列微控制器,包括ARM7(PHLIPS LPC2100系列)核心微处理器已成为许多学校创建虚拟实验室的首选软件。
Protues特点
Proteus软件具有其他EDA工具软件的功能,这些功能是:
(1)原理图设计
(2)PCB自动或手动接线
(3)SPICE电路仿真
5.1 Keil简介
Keil C51的开发者是美国的Keil Software公司[9],该软件能够兼容51系列单片机C语言软件系统。众所周知,比起汇编语言来,C语言在功能性、结构性、可读性、可维护性这些方面有着明显的优越之处,这对于开发使用的人员是十分方便的。Keil软件集成了C编译器、链接器、宏汇编、库管理以及仿真调试器等一系列软件开发环境,并且通过一个整体的开发环境(μVision)将这些功能组合,极大地减少了开发者的工作量[10]。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。对于习惯C语言编程的使用者来说,Keil几乎就是完美的辅助软件工具[11],即便不使用C语言而仅用汇编语言编程,其便捷强大的集成环境、强大的软件仿真调试工具也会令你事半功倍。
5.2 Keil与Proteus联合仿真
Keil支持51系列的单片机的仿真,可通过系统设置生成51可执行的hex文件[12]。Keil编译界面进行编译之前先进行工程仿真配置,在"Device"中进行CPU型号选择,本系统中选择Atmel公司的AT89C51,"Output"中选择"Create HEX File",以便生成AT89C51可执行的hex文件,以便加载到proteus中进行仿真[13],并且"Debug"中选择调试方式为proteus。
5.2.1生成HEX文件步骤
(1)第一步先打开Keil软件,在该软件中新建一个工程文件夹,完成新建后,系统会弹出一个对话框,此时输入项目名称,然后点击保存。
(2)根据设计原理图,在已有库文件中选择需要的芯片。
(3)单击文件菜单这一选项,新建一个空白的文本编辑窗口,输入源程序,以".c"为后缀的文件名称形式保存。
(4)将保存的".c"源程序文件导入到Source Group1中。
(5)在Project选项下,生成HEX文件。
5.2.2 Proteus运行流程
(1)首先,在电脑里下载正确的软件版本,此软件主要是对硬件部分进行模拟。
(2)其次,进入软件后蓝色框内就是工作区域,可以在里面随意选择元器件拖动元器件。根据原理图进行正确的连线。
(3)再次,完成所有连接后,双击单片机把生成的HEX文件进行导入。
(4)最后,如果程序和连好的图都没有问题就可以进行仿真了。
5.3出现的问题和解决方法
在系统设计完成后进入调试阶段,往往并不能直接得到所要的结果,即很难做到一次性成功。原因主要来自于硬件部分设计存在的问题和软件编程部分程序上的错误等。
首先,由于对单片机掌握并不十分熟练导致,对一些接口的功能理解没有十分透彻,因此在硬件连接时存在错误,经过查阅资料和与指导老师交流,反复修改,硬件问题得到了解决。其次,在编程过程中,由于对C语言编写的不熟练,在编写过程中出现不少疑难,但经过反复查阅资料,认真理解,
最终按照绘制好的程序流程图编写好了程序。最后,在Proteus中绘制好电路图,检验无误后,给AT89C51加载.HEX程序文件,但并没有得到预期的结果。
(1)反复排查中,发现首先程序中有语句错误,经过KEIL的反复调试,排除程序中的语法错误。
(2)运行仿真,显示屏仍然无显示结果,经过反复检查调试,发现扫描顺序与显示屏引脚的连接顺序有不一致的情况。于是,通过仔细分析,对设计做认真修改。
本章结合软硬件对整个系统进行了整体调试。最开始要将已经编写好的程序代码在Keil软件中编译运行,然后观察运行结果,及时发现并改正程序中的错误,然后,将编译最后生成运行仿真,显示屏仍然无显示结果,经过反复检查调试,发现扫描顺序与显示屏引脚的连接顺序有不一致的情况。于是,通过仔细分析,对设计做认真修改。本部分不得不说是设计中最关键却又是最枯燥焦灼的部分,一定要静下心和端正好态度,仔细分析,坚持不懈才能成功发现问题,最终解决它们。
总结
本文设计了一种基于单片机的酒精的浓度的系统的控制,包括了对整个硬件系统的设计,硬件的系统包括了气体传感器的选型和整个键盘的电路的选型和整个显示电路的设计和相应的系统的报警的设计,完善了相应的系统的硬件设计,软件系统的设计包括了显示电路的程序的控制流程图和气体传感器电路的控制的流程图的设计。整个设计的单片机系统还存在一些不足还需要进一步的完善整个的那片机系统的整个设计,整个单片机的系统的设计十分的重要,控制整个酒精的浓度,酒精的浓度的应用十分的广泛需要进一步的加强整个系统的控制。
参考文献
[1]江涛.基于MSP430便携酒精检测仪的设计[J].电子测量技术,2019,42(23):48-52.
[2]吕晓颖.基于MQ-3的酒精检测系统设计[J].科技视界,2019(21):31-32.
[3]柳竹青,夏贤君,潘俊.水分对呼出气体酒精含量检测仪量值影响分析[J].企业科技与发展,2019(06):124-125.
[4]李明,熊奥运,王成鹏.基于单片机的酒驾检测系统设计[J].江苏理工学院学报,2019,25(02):22-32.
[5]李淳,王广成.浅谈温度对呼出气体酒精含量检测仪示值误差的影响[J].中国计量,2019(04):119.
[6]李茂权,付洁,何国政,杨焱.呼出气体酒精含量检测仪检定装置发生气体浓度示值误差测量值的不确定度评定[J].计量与测试技术,2018,45(10):118-120.
[7]桑楠,干为民,周旋,刘帅凯.汽车防酒驾控制系统设计[J].常州工学院学报,2018,31(03):28-33.
[8]张水利,周美丽,邵婷婷,莫德华,李欢敏.一种基于ME3A-C_2H_5OH电化学传感器的便携式酒精检测仪[J].控制工程,2018,25(04):596-600.
[9]宋晓宇,高国伟,李世川,吴冰洋,李孟楠,黄璐.基于单片机控制的酒精浓度检测系统的设计[J].传感器世界,2017,23(08):18-23.
[10]赵丽君. 非接触式车载酒精检测仪研制[D].安徽工业大学,2017.
[11]汤立虎,顾毅,刘鹏.基于51单片机的酒精测试仪[J].山东工业技术,2017(07):7.
[12]孙静.基于单片机的酒精浓度检测仪设计[J].通化师范学院学报,2016,37(06):4-6.
[13]胡稳. 基于ARM的呼气式酒精浓度检测系统设计[D].郑州大学,2016.
[14]倪原,王红娟,韩鹏,倪中辰,赵晨,赵阳.一种便携式易燃爆物探测装置设计[J].电子设计工程,2016,24(05):155-157+161.
[15]李书婷.基于单片机的酒精浓度检测仪设计[J].自动化与仪器仪表,2015(08):18-19.
[16]刘向举,王彬,涂文赞.基于嵌入式的车载酒精浓度检测系统设计[J].齐齐哈尔大学学报(自然科学版),2015,31(04):18-21.
[17]贾安冰. 基于STM32F407ZG的呼气式酒精含量检测仪的研究[D].河北工业大学,2015.
[18]徐津生,孙婷婷.呼出气体酒精含量探测器示值误差的不确定度评定[J].内蒙古科技与经济,2015(03):134+139.
[19]孟祥海. 基于STM32F407ZG的呼气式酒精含量检测仪的研究[D].河北工业大学,2015.