酒精测试仪毕设.doc
精品文档,仅供学习与交流,如有侵权请联系网站删除 本科毕业设计(论文)( 2016届 )题 目: 酒驾智能闭环系统 专 业: 班 级: 姓 名: 学 号: 指导教师: 职 称: 完成日期: 2016年5月1日 酒驾智能闭环自锁系统设计的必要性及设计思路摘要:在如今的生活里,汽车已经慢慢成为生活的必需品,然而伴随汽车的普遍,交通事故的发生率也随之增加。十起交通事故中大约有一半是与酒后驾驶有关,酒后驾驶已然成为一个必须解决的问题。近几年,国家出台了一系列交通法规来杜绝酒后驾驶的行为,可是并没有与预期一样真正杜绝。因此我设计一个酒后驾驶闭环自锁系统还是很有必要的,该成品用于驾驶员行驶前使用可以减少司机酒后驾驶事件的发生率。该设计采用了AT89C52单片机,MQ-3传感器,AD0832,LCD1602等元件,通过MQ-3传感器接受外界乙醇气体的浓度,经过AD0832进行数模转换,将数据传到单片机中进行数据的处理,然后在LCD1602液晶上显示酒精浓度的数值,如果超过报警阈值报警装置进行报警。关键词:单片机;传感器;数模转换;报警装置;LCD1602Abstract: in today's life, the car has been gradually become the necessities of life, but with the car generally, the incidence of traffic accidents also increased. Ten traffic accidents about half are related to drunk driving, drunk driving has become a problem that must be solved. In recent years, the state has issued a series of laws and regulations to prevent drunk driving behavior, but did not really put an end to the same as expected. Therefore, I design a drunk driving closed-loop self locking system is very necessary, the finished product for the driver to use before driving can reduce the incidence of drunk driving events.The design uses AT89C52 single chip microcomputer, MQ-3 sensor and ad0832, LCD1602 components. Through the sensor MQ-3 accept outside ethanol gas concentration, through ad0832 were digital to analog conversion, data is transmitted to the microcontroller for data processing, and then displayed on the LCD1602 LCD value of the alcohol concentration, if it exceeds the alarm threshold alarm device for alarm.Keywords: MCU; sensor; DAC; alarm devices; LCD1602目录摘 要2第一章 绪论4(一) 研究意义及背景4(二) 酒驾闭环自锁系统在国内外的现状和发展4(三) 毕业设计的主要研究内容5第二章 硬件的设计5(一) 系统硬件方案5(二) MQ-3传感器模块6(三) AT89C52单片机8(四) ADC08329(五) LCD1602液晶显示10(六)硬件原理图11第三章 软件设计12 (一)软件的设计和流程12 (二)传感器输出程序设计13 (三)A/D转换13 (四)键位的设置14 (五)液晶显示的设计15 (六)源程序15总结24致谢25参考文献26第一章 绪论(一) 研究意义及背景在如今满大街汽车随处可见,汽车的普遍性给人们带来方便的同时,交通事故的发生率也随之增长,其中酒后驾车引起的交通事故已经屡见不鲜,为了减少酒驾的发生,交通警察采取了一些措施,像在某些路段进行酒驾检测。可是依旧无法真正的杜绝酒驾的发生,因此很有必要研究出一种专门辅助司机不酒后驾车的辅助工具,酒后驾驶闭环系统可以杜绝司机酒后无法使用汽车,这样就杜绝了司机因不重视酒驾而引起的交通事故,从而大大减少交通事故的发生率。(二) 酒驾闭环自锁系统在国内外的现状和发展由于司机因为酒驾而导致交通事故频发,全球都开始研发酒后驾驶的酒精浓度测试仪,即通过驾驶员呼出气体检测出酒精含量,并将这一结果显示在显示屏上,交警据此判断司机是不是酒后驾车。可是该酒精浓度测试仪只能判断司机是不是饮酒,并不能做到防范于未然,有些人还是抱有侥幸的心理以及交警不可能24小时各路段检测,所以酒驾依旧是交通事故的频发因素。对于上面的现象,近年来,我国也开始采用高科技手段防止酒后驾车,即酒后驾驶闭环系统。如今我国公路的发展水平提高,使得我国的道路交通安全形势也更加的严峻,特别是酒后驾车所造成的事故发生率提高。因此从主动安全角度来说,禁止酒后驾驶人员启动引擎是一个相当值得去完成的重要研究课题。(三) 毕业设计的主要研究内容 由于司机因为酒驾而导致交通事故频发,全球都开始研发酒后驾驶的酒精浓度测试仪,即通过驾驶员呼出气体检测出酒精含量,并将这一结果显示在显示屏上,交警据此判断司机是不是酒后驾车。可是该酒精浓度测试仪只能判断司机是不是饮酒,并不能做到防范于未然,有些人还是抱有侥幸的心理以及交警不可能24小时各路段检测,所以酒驾依旧是交通事故的频发因素。对于上面的现象,近年来,我国也开始采用高科技手段防止酒后驾车,即酒后驾驶闭环系统。如今我国公路的发展水平提高,使得我国的道路交通安全形势也更加的严峻,特别是酒后驾车所造成的事故发生率提高。因此从主动安全角度来说,禁止酒后驾驶人员启动引擎是一个相当值得去完成的重要研究课题。设计研究的是一种以气敏传感器和单片机A/D转换器为主,检测驾驶员呼出气体的酒精浓度,并具有声光报警功能的空气酒精浓度监测仪。其可检测出空气环境中酒精浓度值,并可根据不同的环境设定不同的阈值,对超过的阈值进行声光报警来提示危害。 本课题分为两部分:硬件设计部分和软件设计部分。硬件部分为利用MQ3气敏传感器测量空气中酒精浓度,并转换为电压信号,经A/D转换器转换成数字信号后传给单片机系统,由单片机及其相应外围电路进行信号的处理,显示酒精浓度值以及超阈值声光报警。程序采用模块化设计思想,各个子程序的功能相对独立,便于调试和修改。而硬件电路又大体可分为单片机小系统电路、A/D转换电路、声光报警电路、LED显示电路,按键电路,各部分电路的设计。在本次论文中,主要介绍AT89C52,ADC0832,LCD1602,MQ-3传感器的性能,以及数据采集子代码,数据处理过程,数据显示以及报警装置的设计方法和过程,当酒精浓度超过80ppm时会LED红灯亮以及继电器断开(设计中以LED绿灯亮代表)。第二章 硬件的设计(一) 系统硬件方案本次设计用AT89C52单片机,A/D采用ADC0832,显示用LCD1602,采集数据用MQ-3传感器。本设计通过MQ-3传感器感应酒精浓度模拟量变化,经过ADC0832进行模拟量到数字量的转换,在从ADC0832传送到单片机中进行数据的处理,然后由LCD1602进行数据的显示。键位控制LCD1602显示AT89C52AD0832进行数模转换MQ-3传感器报警装置图2-1-1 酒驾闭环自锁系统框图(二) MQ-3传感器模块MQ-3传感器模块是将MQ-3传感器做进了模块中,使其输出模拟量的器件。图2-2-1 传感器模块原理图P1口应该接+5V,P2口输出的是DOUT,P3口输出的是AOUT,P4口接地。传感器的1,3脚内部被接到一起,接+5v电压,传感器的4,6脚内部被接到一起作为信号输出,输出乙醇浓度变化的直流信号,到比较器2脚,Rp构成比较器的门槛电压,当乙醇浓度较高输出电压大于门槛电压时,比较器输出低电平,这时LED灯亮报警,当乙醇浓度较低输出电压小于门槛电压时,比较器输出高电平,这时LED灯灭,这就是DOUT口输出。调节Rp可以调节门槛电压的值,从而调节报警输出的灵敏度。当4,6脚输出直流信号直接到AOUT口,则需要将AOUT口采集的直流信号进行AD转换成数字量,然后单片机进行处理。传感器的2,5脚是用来提高加热电流,R1串入传感器的加热回路可以防止冷上电对加热丝的冲击。本设计用到的是AOUT口。图2-2-2 MQ-3模块的外部电路连接本设计用AOUT口输出,到AD0832的CH0进行A/D转换。将AO口连上ADC0832的CH0口来输入模拟量到ADC0832中。我选择MQ-3传感器的原因:MQ-3传感器是一种半导体气敏传感器,气敏电阻的输出阻值随乙醇气体浓度变化而变化,而且这种变化趋近线性,所以输出的计算相对方便。而且MQ-3对乙醇蒸汽有较高的灵敏度,相较于其它传感器具有简单的驱动电路和可靠的稳定性这两大优点。 图2-2-3 MQ-3传感器引脚MQ-3传感器有6只针状管脚,其中两个H脚用于提高加热电流,剩下四个管脚用于信号读取与接受。传感器的标准回路由2部分组成:其一为加热回路;另一个是信号输出回路,他可以准确反映传感器电阻的变化。传感器表面电阻RS 的变化,是通过与其串联的负载电阻RL 上的有效电压信号VRL 出面获得的。二者之间的关系表述为:RS/RL=(VCVRL)/VRL,其中VC 为回路电压,10V。负载电阻RL 可调为0.5200K,加热电压Uh 为5V。上述这些参数使得传感器输出电压为05V。图2-3-4 MQ-3传感器模块外形图该模块的尺寸为:32mm X22mm X22mm 长*宽*高,体积完全可以用于该电路板的余量中。选用这种模块是因为:1、具有信号输出指示。2、含有双路信号输出,分别为模拟量输出及TTL电平输出。3、TTL输出时有效信号为低电平,可以直接连单片机。 4、模拟量输出为05V电压,浓度越高时电压越高。(三) AT89C52单片机出于本设计电路简单,使用的引脚数量少,以及使用芯片的自带功能少等原因,我采用了AT89C52单片机,以及AT89C52中的DIP40封装。图2-3-1 AT89C52(DIP40封装)引脚图在这个设计中我用了P0口与LCD1602液晶显示相连,由于P0口是地址/数据总线复用口,没有内带上拉电阻,所以在程序校验输出指令字节时需要外接上拉电阻。在P1口中我把P1.1口到P1.5口分别接了2个开关以及报警系统中的LED灯,蜂鸣器,继电器;P1.6口接了ADC0832的时钟输入端CLK,P1.7口接了数据信号的输入输出端DI和DO,因为DI端与D0端在通信的时候并未同时工作而且它们与单片机的接口也是双向的,所以DI和DO端可以共用一条数据线,把他们都接在P1.7口上。在本设计中AT89C52的P1.0口和01.1口的第二功能(定时/计数器的脉冲输入T2,定时/计数器捕获/重载触发和方向控制T2EX)并没有用上。然后是P2口,我用了P2.0到P2.2口,分别接了LCD1602显示的RS端,RW端,E端,来控制LCD1602的读写操作。P3口中只用到了P3.4口,让它与ADC0832的片选端CS相连,控制ADC0832芯片的工作与休息。关于AT89C52中P3的第二功能全都没用到。最后是AT89C52的XTAL2和XTAL1两个端口,把他们连接在一个12MHZ的晶振上面,并在两端对称的加上两个30PF的电容。除此之外单片机的VCC外接5V电源,GND接地。RST口是复位输入端,是一个很常用的端口,当RST引脚出现两个机器周期以上高电平时可以使单片机进行复位,这可以有效的防止单片机工作时发生错误,由于本设计构造简单,单片机一般不会发生工作错误的情况,所以我并没有用到RST端口。(四) ADC0832由于AT89C52单片机没有自带A/D功能,所以我外接了一个ADC0832芯片来完成A/D转换,ADC0832芯片可以分别对两路模拟信号实现A/D转换,本设计中只需要它对一路模拟信号进行A/D转换,所以信号的输入端我只用了CH0端口,而且说明了ADC0832能够满足本设计的需要。ADC0832采用的是串行通信方式,通过DI端口来选择CH0通道,CH1通道的开关,本设计只用到了CH0,通过CH0来进行模拟数据的单通道转换,所以ADC0832在第一个下降沿和第二个下降沿后分别选择DI=1,DI=0,来指定通道CH0进行模拟量的输入。我选择ADC0832的原因:1.8位分辨率。2. 双通道A/D转换,虽然本设计只用到了一个模拟量输入端口,但是可以在CH0口坏掉的时候选择CH1口来进行模拟量的输入。3. 输入输出电平与TTL/CMOS相兼容。4. 与AT89C52一样都是5V供电5. 功耗低。6. 工作温度范围广(-40+85度)。7. 工作频率为250KHZ,转换时间为32us。图2-4-1 ADC0832引脚ADC0832引脚说明:CS:片选端,低电平时选择芯片CHO:模拟输入通道0CH1:模拟输入通道1GND:接地VCC:接电源CLK:芯片时钟输入DO:数据信号输出,转换数据输出DI:数据信号输入,选择通道控制图2-4-2 ADC0832的连接图ADC0832的工作方式:从MQ-3传感器中接受来自AOUT口的信号,从模拟通道0(CH0)中传到AD0832,通过CLK输入时钟脉冲,DI进行通道选择,DO输出转换后的数据,将8个字节通过P16全部传输到AT89C52单片机中。(五) LCD1602液晶显示LCD1602可以显示16*2个字节,即可以显示2行,每行16个字节件。液晶的显示是利用了液晶的物理特性,通过电压对其显示区域进行控制,只要输入所需的控制电压就能显示字符。LCD的工作电压一般在4.5V到5.5V之间,工作电流为2mA,字符的尺寸为2.95*4.35mm。图2-5-1 LCD1602引脚图VSS:接地。VDD:接电源。VEE:一般接可变电阻调整对比度,有时候可以接地。RS:寄存器选择,为1:选择数据寄存器;为0:选择指令寄存器。RW:读写选择,R/W=1为读,R/W=0为写。E:模块使能端,当E由高电平跳变成低电平时,液晶模块开始执行命令。为1时,可读写操作;为0时,不能读写操作。BLA:背光显示器接+5V电源。BLK:背光显示器接地。 D0D7:接双向数据总线。图2-5-2 LCD1602的外接电路图从单片机中获得数字量信号,通过P0口转换到LCD1602中,由于单片机P0口并没有上拉电阻,所以需要外加一个上拉电阻。并在VEE接上一个电位器用来调节屏幕字体的亮暗,然后VDD接+5V电源,VSS接地。 (六)硬件原理图图2-5-1 硬件原理图第三章 软件设计(一) 软件设计及流程先将数据,定时器,AD0832,LCD1602进行初始化操作,然后通电后传感器的信号接收,通过ADC0832将接受到的信号进行A/D转换,通过控制脉冲的下降沿来达到ADC0832的数字量输出,数字量进入单片机中进行一系列数据处理,通过单片机的P0口传输到LCD1602中进行数据的显示,并且在单片机中进行酒精浓度的比较,当酒精浓度超过80ppm则报警装置触发。然后安放两个键,一个键是用于传感器开始感应外接酒精浓度,另一个键用于LCD1602的显示清零以及报警装置的关闭。数据初始化定时器初始化AD转换初始化显示初始化传感器信号接收收AD转换液晶显示酒精浓度比较报警装置触发 是 否液晶显示 执行键位功能有键位按下? 是图3-1-1 酒驾闭环自锁系统流程图(二) 传感器模块通过MQ-3模块卖家说明:在正常的环境中,即在没有被测气体的环境中,设定传感器的输出电压值为参考电压,这时AOUT端的电压在1V左右,当传感器检测到被测气体时,电压每升高0.1V,实际被测气体的浓度增加20ppm。根据这个参数就可以在单片机里面知道模拟量电压值转换成的浓度值。其中ADC0832是8位的AD,所以得到的数值是0到255之间,所以ADC转换的电压是AD_val*500/255,500是基准电压。得到的电压减去100然后乘以2就是酒精浓度。AD_val=AD_val*500/255;Int=(AD_val-100)*2; if(Int>=80)P1=0xc7;beep=beep;(三) A/D模块A/D模块的主要功能是将MQ-3传感器传输到的模拟信号转换成数字信号,传到AT89C52单片机中。 开始启动ADC0832选取模拟量输入通道 A/D接受数据数据送到寄存器 结束图3-3-1 ADC0832流程图ADC0832的启动即为CS置低电平,然后DI在第一个脉冲下沉时置高电平,选取模拟量输入通道即为在第二个和第三个脉冲下沉时DI分别选1和0,这样就选取了CH0单通道转换。(四) 按键模块 本设计放了两个开关,一个开关为LCD的清零以及报警装置的关闭,另一个开关为开始接收传感器的酒精浓度信号。 开始 开关1按下? 否 检测酒精浓度 是 否开关2按下? 清零重置图3-4-1按键模块流程图 void Time0_serve(void) interrupt 1 using 1 TR0=0; /关闭定时器T0if(P1&0xf0)!=0xf0) /第一次检测到有键按下 delay1ms(); /延时一段时间再去检测 if(P1&0xf0)!=0xf0) /确实有键按下 if(k1=0) /按键S1被按下 keyval=1; if(k2=0) /按键S2被按下 keyval=2; TH0=(65536-200)/256; /定时器T0的高8位赋初值 TL0=(65536-200)%256; /定时器T0的低8位赋初值 TR0=1; /启动定时器T0在定时器中断子程序中放入键位的按下感应。(五) 液晶显示模块在液晶LCD上显示“value=”,酒精浓度值,“ppm”。 初始化读状态(忙碌检测)写入显示地址写入数据(ASCLL码) 显示图3-5-1 LCD1602显示流程图要使用LCD1602字符型LCD, 首先需要进行显示初始化。然后将LCD1602的显示模式设置为16*2显示,5*7点阵,8位数据接口。然后要将显示内容位置和ASCLL码输入即可,其间要加个延时,给LCD一段反应时间。(六) 源程序1#include<reg52.h> #include<intrins.h> #define unit unsigned int#defineuchar unsigned charsbit k1=P10;sbit k2=P11;sbit beep=P12;sbit led1=P13;sbit led2=P14;sbit RS=P20;sbit RW=P21;sbit E=P22;sbit BF=P07;sbit CS=P34; sbit CLK=P15;sbit DIO=P16;sbit DI1=P16;uchar code str="value"uchar code str0="ppm"uchar code table="0123456789"uchar keyval,ID;void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+) void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms();bit BusyTest(void) bit result;RS=0; RW=1; E=1; _nop_(); _nop_(); _nop_(); _nop_(); result=BF; E=0; return result; void WriteInstruction (unsigned char dictate) while(BusyTest()=1); RS=0; RW=0; E=0; _nop_(); _nop_(); P0=dictate; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void WriteAddress(unsigned char x) WriteInstruction(x|0x80); void WriteData(unsigned char y) while(BusyTest()=1); RS=1; RW=0; E=0; P0=y; _nop_(); _nop_(); _nop_(); _nop_(); E=1; _nop_(); _nop_(); _nop_(); _nop_(); E=0; void LcdInitiate(void) delaynms(15); WriteInstruction(0x38); delaynms(5); WriteInstruction(0x38);delaynms(5); WriteInstruction(0x38); delaynms(5); WriteInstruction(0x0c); delaynms(5); WriteInstruction(0x06); delaynms(5); WriteInstruction(0x01); delaynms(5); void display_value(void) unsigned char i; WriteAddress(0x03); i = 0; while(stri != '0') WriteData(stri); i+; void display_ppm(void) unsigned char n; WriteAddress(0x0d); n= 0; while(strn != '0') WriteData(str0n); n+;void display1(unsigned char x)WriteAddress(0x09); WriteData(tablex); void display2(unsigned char x) unsigned char i,j;i=x/10; j=x%10; WriteAddress(0x0a); WriteData(tablei); WriteData(tablej); unsigned char A_D() unsigned char i,dat; CS=1; CLK=0; CS=0; DIO=1; CLK=1; CLK=0; DIO=1; CLK=1; CLK=0; DIO=0; CLK=1; CLK=0; DIO=1; CLK=1; for(i=0;i<8;i+) CLK=1; CLK=0; dat<<=1; dat=dat|DIO; CS=1; return dat; void main()unsigned int AD_val;unsigned char Int,Dec;TMOD=0x01; /使用定时器T0的模式1 EA=1; /开总中断 ET0=1; /定时器T0中断允许 TR0=1; /启动定时器T0 TH0=(65536-500)/256; /定时器T0赋初值,每计数200次(217微秒)发送一次中断请求 TL0=(65536-500)%256; /定时器T0赋初值 keyval=0; /按键值初始化为0,什么也不做 ID=0; while(1) P1=0xdf;delay1ms();switch(keyval) /根据按键值keyval选择待执行的功能 case 1: LcdInitiate(); delaynms(5); display_value(); display_ppm(); led1=1;led2=1;break; case 2: LcdInitiate(); delaynms(5); display_value(); display_ppm(); AD_val= A_D(); AD_val=AD_val*500/255;Int=(AD_val-100)*2;display1(Int); while(Int>=80)P1=0xc7;beep=beep;if(keyval=1)break; void Time0_serve(void) interrupt 1 using 1 TR0=0; /关闭定时器T0 if(P1&0xf0)!=0xf0) /第一次检测到有键按下 delay1ms(); /延时一段时间再去检测 if(P1&0xf0)!=0xf0) /确实有键按下 if(k1=0) /按键S1被按下 keyval=1; if(k2=0) /按键S2被按下 keyval=2; TH0=(65536-200)/256; /定时器T0的高8位赋初值 TL0=(65536-200)%256; /定时器T0的低8位赋初值 TR0=1; /启动定时器T0第四章 调试和结果先用ISIS软件绘制电路图,然后用keil软件生成“.hex”文件,将“.hex”文件放入仿真软件ISIS中的单片机中,仿真试验结果。仿真成功后,用实物连接形成PCB板,每个模块一别检测是否正确,一别焊接到PCB板上,当PCB板成型后,预热足够长时间MQ-3传感器,然后通过EP51单片机编程器将程序拷入到单片机AT89C52中,拿取酒精样品,通过MQ-3传感器验证结果。图4-1-1 仿真图备注:其中D2表示继电器断开,D1为报警红灯,BUZ表示报警发声器。图4-1-2 实物图总结经过这几个月的奋斗,毕业设计总算快要完成了。在这段日子里我发现了许多学习上的不足,并且查漏补缺。我是边实习边写毕业设计,这样的日子让我感到很充实。在毕业设计中我很多次遇到难题,但是指导老师电话中的讲解或者是厂里师傅的帮忙,让我的毕业设计可以顺利的完成。我的毕业设计的题目是酒驾闭环自锁系统的实现,在如今这个汽车普遍化的社会,并酒驾引起的交通事故发生率还在上升,因此酒驾闭环自锁系统的研究则显得颇为重要,用气体传感器感应酒精浓度,当发现酒驾时切断发动机,以此杜绝酒驾。在这次的毕业设计中,我更加深入的了解了所学在生活中的应用。并且延伸出来的内容让我对低压电气,如熔断器,继电器等保护电路和电机的应用有了更加深刻的印象。我在这几个月的时间里分工明确,先画出系统框图和流程图,然后用ISIS软件画出电路图,用keil软件进行编程,然后仿真,成功后再DESIGN软件中画出电路图及封装连线,最后则是焊接实物。在这期间,遇到了各种问题,开始时候在传感器上换算成酒精浓度值除了问题通过查找资料得以解决,然后又由仿真成功直接焊接了实物电路,因未知原因无法运行,然后按照何涛老师说的先焊LCD试验LCD是否正常工作,然后逐一焊接到电路板上,最后发现LCD电路的连接出了问题。在这次毕业设计中我将ISIS软件,keil软件,DESIGN软件的使用进行了巩固,以及对书本上学的ADC0832,LDC1602以及AT89C52单片机的使用进行了更加深入的了解,除此之外我通过互联网学习了下MQ-3传感器的使用。通过这次的毕业设计,让我受益匪浅。发自内心的想要感谢每一个帮助过我的人,很多事情一个人做可能真的很难,要独自完成一个项目真的非常的没有头绪和混乱。但是当大家聚集到一起讨论并且有个方向的时候往往能够事半功倍,每个人都有每个人的想法,当然有时候也会有分歧,我扬长避短,用最好的方式结果问题。当然在这次毕业设计中,我深刻认识到了自己的不足,很多的知识都没有应用到实际上,而课本上的有些东西在实际中也是很少用到的,我们只有不断的查资料,结合实际才能够更好的做好一个真正的东西。我在老师和同学们,还有厂里的师父们身上学到很多不同的学习方法,在以后的学习过程中,我会更加注重自己的操作能力和应变能力,更好的与这个社会接轨,适应不同的东西,给自己说声加油!致谢在这几个月的毕业设计中我遇到很多的问题,发现了自己四年大学学习中的许多知识的不熟练运用,通过翻阅书籍和咨询指导老师,在我毕业设计完成的同时,我也把许多知识重新巩固了一遍,非常感谢毕业设计带给我的这次查漏补缺。在这段时间中,我特别感谢何涛老师对我的帮助和关心,当我每次遇到难题的时候我就会通过电话或者去他办公室向他询问如何解决问题,何涛老师每次耐心的讲解让我受益匪浅。最让我感动的是何涛老师除了在帮助我解决学习上的问题,同时也很关心我们的毕业去向和生活,对我这个即将毕业而跨入社会的大学生来说,这是非常温暖的