汽车巡航控制系统设计毕业设计说明书张翅文档格式.docx
《汽车巡航控制系统设计毕业设计说明书张翅文档格式.docx》由会员分享,可在线阅读,更多相关《汽车巡航控制系统设计毕业设计说明书张翅文档格式.docx(54页珍藏版)》请在冰点文库上搜索。
4系统软件设计 20
4.1proteus软件环境介绍 20
4.2protel软件环境介绍 22
4.3系统软件分析 22
4.4程序流程图 23
5系统调试过程 29
5.1电路原理图 29
5.2系统仿真调试 30
结论 37
总结与体会 38
谢辞 39
参考文献 40
附录 41
汽车巡航控制系统设计
摘 要
本设计是基于AT89C52单片机为控制核心的汽车巡航控制系统设计。
系统采用LM016L液晶显示屏,将汽车在高速状态下的当前速度以及巡航设置速度显示出来,在系统中还采用舵机来控制节气门(也俗称油门)来控制其开度,设置舵机的转向来表示加油还是减油,在巡航控制中,设置按键对巡航进行加减速度的设计,并运用PID算法进行实现,在仿真中,用滑动变阻器的增减代替道路状况的好或坏来仿真巡航设定后,舵机工作状况。
本设计说明书对该系统的硬件电路,工作原理进行了详细的介绍。
同时给出了软件设计的流程图和主要源代码。
关键词:
AT89C52单片机 舵机 LCD液晶显示器 PID算法
TheDesignOfTheCruiseControlSystemAbstract
ThedesignistheCruiseControlSystem,basedontheAT89C52Singlechipas
thecontrolcenter.ThisSystemusedLM016LLCDscreentodisplaythecruisingspeedofthevehicleandthecurrentspeedwhenitathighspeed.AlsotheSystemusedsteeringenginetocontrolthethrottleactuator(commonlyknownasthethrottle),inordertocontrolthesizeofopening;
androtatingthedirectionofsteeringenginetorepresentincreasingordecreasingoil.Underthecruisecontrol,thedesignofsettingthekeystocreaseordecreasethecruisingspeed,thenusingofPIDalgorithmtoprogramming.
Inthecourseofsimulation,authorusestheslidingrheostattosimulatetheroadconditions(goodorbad);
afterspeedchanging,authorwatchestheworkingconditionsofsteeringengine.Thisdesignspecificationintroducedbothhardwarecircuitandworkingprincipleindetail;
atthesametime,itgivestheflowchartandthemainsourcecodeofsoftwaredesign.
Keywords:
89C52SingleChipSteeringgearLCDdisplayPIDalgorithm
1前言
1.1设计的目的及意义
随着高速公路的发展,汽车在高速路上以80Km/h-120Km/h的速度行驶,在这种高速下,节气门的开度需要大幅度的开启,也就是说驾驶员需要较大的力度去踩踏板,并且在高速路上要全部保持这种状态,如果驾驶员光用脚去控制踏板,很容易导致控制油门的踏板的腿部肌肉疲劳加大,如果严重了,会失去对踏板的控制能力,那在汽车需要制动的时候,很容易发生事故。
一方面对驾驶员的身体造成一定伤害,又增大了驾驶员得劳动强度,使驾驶员容易疲劳,引起交通事故。
现代汽车电子技术为解决这个问题,研发出了一种电子控制巡航系统(CCS),当车速达到一定高速的时候,如果想进入巡航状态,可以直接开启巡航控制开关,然后汽车会以当前的车速自动进入巡航状态,保持在这个速度附近不变,如果突遇道路状况变化、上下坡、转弯和各种阻力变化的情况下,巡航控制系统的执行器可以在一定范围下自动调节节气门开度,保持车速恒定,驾驶员在巡航过程中只需要控制转向盘,两腿处于自由状态,使驾驶员的劳动强度大大减轻。
1.2任务与分析
本次设计的系统的实现是基于单片机的。
首先,在Protel软件环境中进行硬件电路图的设计。
然后在8051软件环境中进行系统的软件编程,并进行程序源文件的编译和调试,最后生成.hex文件。
此.hex文件是硬件电路运行实现的源代码来源。
把.hex文件加载到AT89C52单片机芯片,然后在Proteus软件环境中运行硬件电路[1]。
本课题设计的系统主要由:
AT89C52为中央处理芯片,用于数据处理,初值设定。
车速是由一个方波信号发生器发出一个固定的信号,是一个固定的信号也就是每次采集的脉冲个数不会因为舵机动作而变化,作为对车速的反馈调节,
把舵机信号和路况模拟参数加了进去,在巡航控制中,主要设置5个按键,KEY1(巡航总开关),KEY2(巡航设定开启),KEY3(巡航加速),KEY4(巡航减速),KEY5(巡航取消),除这5个按键之外,还设置了两个按键来模拟驾驶员开车时候的加油门和减油门,并将检测的当前的车速和巡航控制中设定的车速显示在LM016L液晶显示器显屏中,本次设计用VC语言进行编程。
本系统可以分为以下4大模块:
1、AT89C52模块:
用于数据处理,和外围的时钟芯片通信,并控制时钟传输过程,采集时间信息并予以处理。
2、A/D转换:
本次设计采用的是ADC0804 A/D 转换器,三态锁定输出,
135US的存取时间,8位的分辨率,在设计中,用一个滑动变阻器代替汽车行驶时候路面变化状况,阻止的减少表示路面状况变好,阻止增大表示路面状况变差,这样就会产生一个模拟信号,用ADC0804A/D转换器将模拟信号转换成数字信号输入到AT89C52单片机进行处理。
3、1602LCD液晶显示器:
工业字符型液晶,能够同时显示16x02即32个字符。
4、程序:
单片机主程序,包括A/D转换程序,中断程序,按键扫描子程序,显示字符子程序,显示转速子程序。
2系统方案设计
2.1系统设计方案
通过查阅相关资料,设计初期共有3个方案供选择,分别是:
(1)采用
89C2051单片机+步进电机+数码管显示组成的系统;
(2)采用AT89C52单片机
+步进电机+1602液晶显示芯片组成的系统;
(3)采用AT89C52单片机和舵机加上1602显示组成的系统。
(1)采用89C2051单片机+步进电机+数码管显示组成的系统
此系统的硬件部分主要是由89C2051单片机,数码管,7805,ADC0832构成。
该系统硬件结构简单,但是数码管显示耗费单片机资源,软件设计部分,程序冗长而复杂,易产生混淆。
(2)采用AT89C52单片机+步进电机+1602液晶显示芯片组成的系统;
这个方案采用AT89C52单片机,1602液晶,步进电机来组成系统的硬件。
但是步进电机做位置定位电机扭力一般比舵机要小,而舵机机用于位置定位,必须用位置反馈的方法通过一定的算法来实现的,在进行反馈调速时候不如舵机好用。
(3)采用AT89C52单片机和舵机加上1602显示组成的系统
此方案在硬件部分采用了AT89C52单片机,MG995舵机,
ADC0804,1602液晶显示器,几个按键。
在功能上进行了扩充,并且使得硬件连线显得较为简单,在软件部分,程序显得层次分明。
最后确定设计采用第3方案,即 系统是由AT89C52单片机,MG995舵机,ADC0804,1602液晶显示器组成[2]。
2.2系统总体框图
图1系统总体框图
当汽车巡航控制系统启动后,程序进入初始化阶段。
单片机一直检测是否有按键按下。
当开关键按下后液晶显示当前车速和巡航车速,当巡航车速为
0km/h时,系统处于关闭状态。
当按下设定键如果当前车速在40km/h-180km/h时,设置巡航车速为当前车速,系统打开,PID算法控制舵机开始通过节气门调整车速。
此时按下加速(或减速)键,巡航车速每次增加(或降低)5km/h,汽
车定速巡航,此时如果按下取消键、开关键、模拟油门动作的按键中的任何一个,系统就会关闭,车速由驾驶员控制。
3系统硬件电路设计
3.189C52单片机
AT89C52单片机是低电压,高性能CMOS8位的单片机,其中由和随机存取数据存储器组成,而程序存储器由可反复擦写的Flash8kbytes组成,器件采用
ATMEL公司的高密度、非易失性存储技术生产,可以说是89C51单片机的升级版,单片机片内置通用8位中央处理器和Flash存储单元。
AT89C52有40个引脚,双向输入/输出(I/O)有32个端口,中断口有两个,
16位可编程定时计数器有3个,全双工串行通信口有2个,读写口线有2个,
AT89C52虽然不可以在线编程,但可以按照常规方法进行编程。
Flash存储器是和通用的微处理器结合在一起的,而Flash存储器能够反复擦写使开发成本得到了降低。
图2AT89C52单片机引脚图
AT89C52单片机与早期Intel的8051/8751/8031芯片的外部引脚和指令系统
完全兼容,只不过用FlashROM 替代了ROM/EPROM而已。
89C52单片机内部结构如图所示。
图3AT89C52单片机内部结构示意图
VCC:
供电引脚。
GND:
接地。
P0口:
P0口是一个8位漏级开路双向I/O口,每脚吸收8TTL门电流。
当
P1口的引脚第一次写入1时,定义为高阻输入。
P0口能够用做外部程序数据存储器,还可以被定义为数据/地址的第八位。
在FIASH编程时,P0口可作为原码输入口,当对FIASH校验时,P0输出原码,此时P0外部一定要被拉高。
P1口:
P1口是一个在内部提供上拉电阻的8位双向I/O口。
P1口缓冲器可以接收输出4TTL门电流,P1口引脚写入1后,被内部上拉为高,可以用作输入。
P1口被外部下拉为低电平时,会输出电流,这是因为内部上拉的原因。
对FLASH校验和编程时P1口作为第八位地址接收。
P2口:
P2口是内部上拉电阻的8位双向I/O口,P2口缓冲器能接收输出
4个TTL门电流。
当P2口被写1时其管脚被内部的上拉电阻拉高,并且作为输入。
因此原因作为输入时,P2口的引脚被外部拉低,此时输出电流,这是由于内部上拉的缘故。
当对外部8位地址数据存储器进行读写时,P2口将输出特殊功能寄存器的内容。
P2口在FLASH校验和编程时接收高八位控制信号和地址信号。
P3口:
P3口的引脚是8个带内部上拉电阻的双向I/O口可以接收输出4个TTL门电流。
当P3口写入1时管脚被内部上拉为高电平,并作为输入引脚。
当外部下拉为低电平P3口将输出电流(ILL),是由于上拉的缘故。
P3口也可作为AT89C52的特殊功能口
P3口管脚第二功能:
P3.0RXD:
(串行输入口)P3.1TXD:
(串行输出口)P3.2INT0:
(外部中断0)P3.3INT1:
(外部中断1)
P3.4T0:
(记时器0外部输入)P3.5T1:
(记时器1外部输入)P3.6WR:
(外部数据存储器写选通)P3.7RD:
(外部数据存储器读选通)
P3口同时也为闪烁编程、编程校验接收一些控制信号。
RST引脚:
复位功能。
当振荡器复位器件时,应该保持RST引脚两个机器周期的高电平时间。
ALE/PROG引脚:
ALE端是以不变的频率周期输出正的脉冲信号,此频率为振荡器频率的1/6,因此它可用作对外部输出的脉冲或者用于定时。
但是要注意的是,每当用作外部数据存储器时,都将跳过一个ALE脉冲,如想禁止ALE的输出,可在SFR8EH地址上置0。
与此同时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。
另外,该引脚被拉高。
PSEN引脚:
是外部程序存储器的选通信号。
在外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但当访问外部数据存储器时,两次有效的/PSEN信号将不会出现。
EA/VPP引脚:
加密方式1时,/EA将内部锁定为RESET。
在FLASH编程期间,这个引脚也可用于施加12V编程电源(VPP)。
XTAL1引脚:
反向振荡放大器的输入以及内部时钟工作电路的输入。
XTAL2引脚:
反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别是反向放大器的输入和输出端。
该反向放大器可以配置为片内振荡器,石晶振荡和陶瓷振荡都可采用。
如果采用外部时钟源驱动器件那么XTAL2应不接。
要是有输入至内部时钟信号则要通过一个二分频触发器,因此对外部时钟信号的脉宽并无任何要求,但是必须保证脉冲的高低电平需要的宽度。
AT89C52主要特性:
1)与MCS-51兼容
2)片内振荡器和时钟电路
3)4K字节可编程闪烁存储器
4)全静态工作:
0Hz-24MHz
5)三级程序存储器锁定
6)数据保留时间:
10年
7)128×
8位内部RAM
8)32可编程I/O线
9)5个中断源
10)两个16位定时器/计数器
11)寿命:
1000写/擦循环
12)可编程串行通道
13)低功耗的闲置和掉电模式
3.2ADC0804A/D转换器
A/D转换器就是将产生的模拟信号(无论是电压变化,温度变化)转变成数字信号输入单片机进行处理。
ADC0804A/D转换器有依次逼近的8位COMS,三态锁定输出,在工作中能达到135US的存取时间。
而它的8位分辨率,100US转换时间,1LSB的总误差,是相当高效的。
图4ADC0804引脚图
下面对ADC0804引脚依次作介绍:
/CS:
为芯片的选择信号。
/RD:
为外部读取转换结果的控制输出信号。
当/RD为HI时,DB0~DB7是高阻抗处理,当/RD为LO时,才能够输出数字信号。
/WR:
用来控制输入转换的启动口,表示ADC的转换开始(/CS=0时),当/WR口由HI变为LO时,清除转换器:
当/WR变为HI时,开始转换。
其中/CS,/RD,/WR三个端口对整个AD转换器进行控制。
CLKIN,CLKR:
时钟输入。
/INTR:
中断请求信号输出口。
VIN(+)VIN(-):
差动模拟电压输入。
当单端正电压时输入时,VIN(-)接地:
当差
动输入时,直接加入VIN(+)VIN(-)。
DGND,AGND:
数字信号和模拟信号的接地口。
VREF:
辅助参考电压。
DB0~DB7:
输出8位的数字信号。
VCC:
电源供应。
在本次设计中,由滑动变阻器产生的一个模拟信号,由VIN(+)口输入ADC0804,转换后的数字信号由DB1到DB6输入进89C52单片机进行处理。
3.3舵机
本次设计采用辉盛mg995舵机,在仿真中,用舵机控制节气门的开度,舵机转动范围为-90度到+90度,而相对应车速在0Km/h到180Km/n之间,舵机转角增大表示节气门开度增大,节气门开度变大,使速度增加,当舵机转角变小时,表示节气门开度减少,驾驶员开始减油门,车速减小,通过单片机
AT89C52中的P2.3口来控制舵机。
图5舵机
3.4LCD1602液晶显示器
液晶显示是利用液晶的物理特性,显示区域由电压来控制,有电就有显示,
LCD既可以显示图形,也可以显示字符。
液晶显示器以体型薄、显示质量高,功耗低等优点被广泛使用。
图61602LCD液晶显示屏
LCD液晶显示屏的优点。
1.1602LCD液晶屏显示质量高
液晶显示器画质高且不会闪烁,这是因为液晶显示器不像阴极射线管显示器,会不断刷新新亮点,每一个点在收到信号后的亮度和色彩会得到很好的保持,而且发光非常恒定。
2、数字式接口
液晶显示器都是接受数字式的信号,单片机系输出的信号能够被液晶显示器更好吸收,在做实物的时候方便操作。
3,体积小、重量轻
液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
4,功耗低
LCD液晶显示器主要内部的电极和驱动IC上耗功电量,因而耗电量比其它显示器要少得多。
下图是LCD液晶显示器实物图:
图7 LCD液晶显示器
3.5时钟电路
本设计采用内部时钟方式的电路。
在89C52单片机内部中有一个用于构成放大器,该放大器内有高增益反相的振荡器,其中 XTAL1为输入端口,
XTAL2为输出端口。
这两个引脚连接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。
电路中的电容C3和C4为30pF。
常是在
1.2MHZ~12MHZ为晶体的振荡频率的通常范围。
晶体频率与系统的时钟频率成正比,而频率越快,单片机的运行速度也就越快。
图8时钟电路
3.6复位电路
复位电路通常采用上电自动复位和按钮复位两种方式。
本次设计采用上电复位电路。
加电瞬间通过电容充电来实现的是上电复位电路,其电路如图9所示。
通电的时候,电容C1通过电阻R1充电,RST端口出现正脉冲时候,用以复位。
当电源Vcc的上升时间没有超过1ms时,系统自动复位,即接通电源就完成了系统的复位初始化。
在参数的选定过程中,振荡稳定后应保证复位高电平持续时间大于2个机器周期。
本次设计采用的晶体频率为6MHZ,C1=22uF,
R1=1kΩ。
图9 复位电路
4系统软件设计
4.1proteus软件环境介绍
Proteus软件是英国Labcenterelectronics公司所开发的工具软件,Proteus软件除了具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,最重要的是,它有互动的电路仿真。
在微处理器的应用上,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试。
Proteus软件中能进行模拟和数字电路的设计,在设计中可以使用一个特定符号来代替元器件,并完成不会对真实电路造成任何损害的电路仿真操作。
而且在仿真过程中能获得信号图标,对于市面上最流行的单片机都能进行仿真,而且还能利用ARES开发印制电路板。
4.2Protel软件环境介绍
Protel印制板设计软件包是澳大利亚protel technology公司发开的电子
CAD产品,在电路图的设计上,protel有着很高的自动布线布通率。
而电子元器件在电路图中连接,在印刷版图中能否实现主要依靠它。
在设计常用的单、双面印制板时只要选择适当的元件布局和布线策略方法,protel就可以轻易的达到98%-100%的布通率。
对于极少数不能布通的定方,protel可以用飞线指示出来,引导用户用手工方法连通。
4.3系统软件和硬件
在本次系统,我偏重做了软件部分,对整个巡航系统首先做了Protel电路图,和Proteus仿真,又利用keil软件进行程序的编译与调试,它对硬件系统起到扩充和完善的作用。
而在系统硬件部分,我做了巡航5个按键以及显示的功能。
下面将软件和硬件部分做个简单介绍:
(1)汽车巡航软件程序设计过程
使用的AD芯片采样模拟路况,通过信号发生器模拟车速传感器信号,程
序里要对AD进行控制和数据读取,而单片机要处理车速信号得到当前车速,还要控制液晶显示和舵机的工作,由于本系统使用的单片机没有PWM模块,舵机控制信号采用的是由两个中断来控制产生的[7]。
(2)汽车巡航硬件实物设计过程
在硬件电路设计中,先购买需要的各种元器件,然后依照Protel软件中生的PCB版,对电路进行连线,最后将程序写入单片机,输入信号,进行按键调试,下图为此次毕业设计中所做的实物:
图10硬件实物
4.4程序流程图
(1)主程序流程图
图11主程序图(上)
图12主程序图(下)
主程序流程图说明:
对系统先进行初始化,由AD转换器采集的模拟信号转换为数字信号,输入单片机进行处理,同时进行按键扫描,当车速达到巡航要求范围内,按下巡航设定,采样当前车速,并进行设定,那么此时PID算法将起作用,将车速和舵机转角控制在设定值左右,由于本系统涉及到生命财产安全,所以设计了开关和设定两个按键来确认汽车巡航,其中巡航取消按键和驾驶员加减油门都可以使汽车巡航关闭。
(2)A/D采样模拟路况子程序
图13 AD采样子程序流程图框图
A/D采样模拟路况子程序图说明:
在此图中先将AD转换器初始化,将滑动变阻器产生的模拟信号转变成数字信号,然后读取到采样值,并输入给单片机工作。
(3)PID