交通灯课程设计报告2Word文件下载.docx
- 文档编号:16473622
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:794.43KB
交通灯课程设计报告2Word文件下载.docx
《交通灯课程设计报告2Word文件下载.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计报告2Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
黄灯
红灯
绿灯
红灯
S1
77s
1
S2
3s
L(闪烁)
S3
57s
S4
3s
1
2.2单片机交通控制系统的功能要求
本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通行时间调整和紧急处理等功能。
程序就是上述四种状态下循环转化的,每四个状态为一个周期,正常情况下共花费140S。
三系统硬件设计
3.1系统硬件框图
本系统选用MSC-51系列单片机AT89C51为中心器件设计交通灯控制器,实现了红绿灯循环点亮,绿灯变红灯中间为黄灯闪烁警示的功能。
用共阴显示驱动芯片MAX7219芯片连接单片机与4个共阴数码管,显示十字路口两个方向通行或禁止的剩余时间,减少了对单片机引脚和机器的占用时间。
系统的硬件框图如图3所示。
图3系统硬件框图
3.2单元电路设计
3.2.1时钟电路
取原选则:
CPU的需要精确的定时,这是用一个晶体振荡器产生稳定的时钟脉冲来控制的。
8051片内有一个有高增益反相放大器所构成的震荡电路,XTAL1和XTAL2分别为震荡电路的输入和输出端,时钟可以由内部方式产生或外部方式产生。
在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,组成并联谐振回路,从而构成一个稳定的自激震荡器。
电容置在5——30PF之间选择,电容的大小可起频率微调作用。
电容选取22uF,晶振为12MHZ。
如图4所示。
图4时钟电路
3.2.2复位电路
常见的复位电路有两种,上电自动复位、手动复位电路。
本设计中采用的是上电自动复位。
如图5所示。
图5复位电路
3.2.3交通灯电路
本系统采用LED作为交通灯来使用,单片机的I/O口直接与LED连接。
在十字路口的四组红、黄、绿三色交通灯中,东西方向的同色灯连接在一起,南北方向的同色灯也彼此连接,受单片机AT89C51的P0.0~P0.5控制。
12个LED指示灯采用共阳极的连接方式,因此I/O口输出低电平时,与之相连的LED会亮,输出高电平时,LED熄灭。
3.2.4倒计时显示电路
该交通灯控制系统在正常工作情况下,为方便提示路上行人及车辆交通灯转换的剩余时间,专门为控制系统提供了一个倒计时的显示装置。
该装置采用2位七段数码管来显示,每个路口需要1个,共4个,在设计电路时,本系统采用用共阴显示驱动芯片MAX7219的DIG0~DIG1控制4个数码管的循环动态显示。
MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。
其主要的特点是有独立的LED段控制。
3.3理论基础知识
3.3.1定时器原理
定时器工作的基本原理其实就是给初值,让它不断加1直至减完为模值,这个初值是送到TH和TL中的。
它是以加法记数的,并能从全1到全0时自动产生溢出中断请求。
因此,我们可以把计数器记满为零所需的计数值,即所要求的计数值设定为C,把计数初值设定为TC可得到如下计算通式:
TC=M-C
式中,M为计数器模值。
计数值并不是目的,目的是时间值,设计1次的时间,即定时器计数脉冲的周期为T0,它是单片机系统主频周期的12倍,设要求的时间值为T,则有C=T/T0。
计算通式变为:
T=(M-TC)T0
模值和计数器工作方式有关。
在方式0时M为8192;
在方式1时M的值为65536;
在方式2和3为256。
就此可以算出各种方式的最大延时。
如单片机的主脉冲频率为12MHZ,经过12分频后,若采用方式0最大延时只有8.129毫秒,采用方式1最大延时也只有65.536毫秒。
这就是为什么扫描周期为50ms的原因,
若使用软件则会耽搁程序流程,显然不可行。
相反,时间计时方面却不可能只用计数器,因为显然1秒钟已经超过了计数器的最大定时间,所以我们还必须采用定时器和软件相结合的办法才能解决这个问题。
3.3.2软件延时原理
MCS-51的工作频率为12MHZ,机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12MHZ)=1us。
我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间,但同时由于单片机的运行速度很快其他的指令执行时间可以忽略不计。
3.3.3中断原理
本系统主要使用了外部中断,中断信号有引脚INT0和INT1输入,低电平有效,CPU每个时钟周期都会检测INT0和INT1上的信号,8051允许外部中断以电平方式或负边沿方式两种中断方式输入中断请求信号,可由用户通过设置TCON中IT0和IT1位的状态来实现。
以IT0为例,IT0=0,为电平触发方式,IT0=1,为负边沿触发方式,本设计采用电平方式,IE0为其中断标志位,有中断信号则置位,中断服务子程序响应后,IE0自动清零。
IE中的EA为允许中断的总控制位,为1开启,EX0为外部中断允许控制位,为1开启。
在优先级的允许下,一旦有外部中断信号产生,单片机CPU首先保护断点,PC值进栈,然后执行相应的中断服务子程序,执行完后,用RETI指令返回,此时CPU会从堆栈中取保存的断点地址,送回PC,程序再正常执行。
四系统软件设计
使用proteus软件进行电路仿真,芯片AT89C51还需要载入代码文件来支持其正常工作以实现预期功能要求。
程序代码编写是整块设计的核心内容,本系统中利用一个定时器T0完成了交通指示灯所有的切换过程和数码管的倒计时功能,其中指示灯的切换有4种不同的操作,用变量Operation_Type表示当前的操作类型,数码管的切换有2种不同的操作,用变量i表示状态的切换。
采用C语言进行编程,下面简要介绍下各段程序代码的意义和功能。
4.1主程序框图
主程序为交通灯四个状态循环转换的死循环,主程序代码和程序框图如图6所示。
voidmain()//主程序
{
Initialise();
TMOD=0x01;
//定时器0工作在方式1
IE=0x82;
//允许定时器0中断
TR0=1;
//启动定时器
while
(1);
}
全部控制程序实际上分为若干模块:
键盘设置处理程序,状态灯控制程序,LED显示程序紧停程序,中断服务子程序,红绿灯时间调整程序等。
整个软件程序方面主要分两大部分:
主程序部分和中断处理程序。
图6主程序框图
设计说明:
该智能交通灯控制系统的软件设计采用的是顺序执行并反复循环的方法。
智能交通灯控制系统在正常工作的情况下,每140s循环变化一次。
每个循环周期在还剩3s时,正在通行路口的黄灯同时点亮并开始闪烁,以提醒路人上的行人及车辆,交通灯即将发生变化。
4.2过程流程图
图7过程流程图
五调试分析及所用器件
5.1调试环境
本设计使用仿真软件Proteus和KeilC进行联合调试。
原理图在Proteus提供的模板中选择恰当的元器件进行设计绘图,完成电路的搭建,发现设计中的错误及时改正。
所有c语言源程序都在KeilC下编写,对仿真软件进行相应的设置后,KeilC和Proteus能进行通信,即在KeilC中全速运行程序时,Proteus中的单片机系统也会自动运行。
系统的软件调试借助于TKS仿真器,在进行系统软件的连续调试之前要先进行软件的初调,就是要使各个子程序模块运行正确,程序的运行流程正确。
软件调试主要分以下几个步骤进行:
1.功能子程序的调试。
能子程序的调试包括运算、采样、数字滤波以及PID运算等子程序的调试。
在调试功能子程序时,许多参数都是未知的,要根据其所需的条件,给出假定的数据,使其运行,如果能完成预定的处理功能或与手工计算的结果相符,就说明该子程序己调试通过。
调试时由小到大,由里到外。
例如,调试PID算法子程序时,先调通其包含的各个运算子程序和参数处理子程序,然后将它们连起来进行通调。
通调时,也是假定一些数据、参数和初始条件,然后运行程序。
当运算结果与手工计算的结果相同时,该算法子程序则调试完成,反之,就要进行相应的修改。
其它子程序的调试同理;
2.程序流程的调试。
序流程的调试主要是查看程序运行的步骤是否正确,在某时刻程序运行所处的位置是否正确,是否能正确运行各个中断服务程序。
在调试过程中,先将PID算法子程序屏蔽,输出可控硅导通时间用一个固定的常数代替,在各个中断服务子程序设置断点,然后运行程序,查看程序是否能运行到所有的断点,若所有断点都能运行到,则程序流程基本正确。
去掉所有断点,再一次运行程序,查看可控硅状态,从而判断程序流程正确,反之,若程序流程不正确,做相应的修改后,重新调试;
3.功能程序与算法程序的通调。
完成整个程序流程的调试后,将PID等算法子程序加入,在算法子程序前或后设置断点,运行整个程序。
当程序在断点处暂停时,查看PID计算的控制量与手工计算的值是否相同。
多运行几次,若每次的结果都正确,则说明程序各个部分互相没有矛盾,反之,则说明算法子程序和其它子程序之间有影响,需要做相应的修改后重新调。
5.2所用芯片及参数
表5-1所用芯片及参数
序号
名称
元件编号
参数
数量
单片机
AT89C51
2
显示驱动器
MAX7219
3
指示灯
LED-RED\GREEN\YELLOW
12(各4个)
4
7段数码管
7SEG-MPX2-CC
5
电容
CAP
22pF
6
晶振
CRYSTAL
12Mhz
7
电阻
RES
10k
8
电解电容
CAP-ELEC
10μF
六心得体会
这次是我认为最有意义的一次课程设计,从原理图设计到软件仿真,我从中收获了许多。
设计刚开始时,我就在学校中门仔细观察路口交通灯,经过研究思考最终得到了上述的交通灯状态转换表。
对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。
我选择了用c语言进行编程,在编写倒计时显示遇到了困难,因为不了解芯片MAX7219的显示原理。
通过查阅资料,克服了困难,很有成就感。
在整个程序的编写过程中,研究每个子程序是否好使,我是通过Keil和proteus两个软件来实现的。
Keil则帮助我检查程序是否存在语法错误之类的问题,还可以生成hex文件,供proteus软件仿真使用。
通过几天的编写,程序最终无误并且在仿真中实现了预定的功能。
七参考文献
[1]张毅坤.单片微型计算机原理及应用,西安电子科技大学出版社1998
[2]夏继强.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
[3]彭伟.单片机C语言程序设计100例.北京:
电子工业出版社,2009
[5]雷丽文.微机原理与接口技术.北京:
电子工业出版社,2001
[6]于永.51单片机C语言常用模块与综合系统设计.北京:
电子工业出版社,2007
[7]谭浩强.C语言程序设计.北京:
清华大学出版社,2005
[8]于永.51单片机C语言常用模块与综合系统设计.北京:
八程序代码
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitRED_A=P0^0;
sbitYELLOW_A=P0^1;
sbitGREEN_A=P0^2;
sbitRED_B=P1^0;
sbitYELLOW_B=P1^1;
sbitGREEN_B=P1^2;
sbitDIN=P3^0;
sbitLOAD=P3^1;
sbitCLK=P3^2;
ucharFlash_Count=0,Operation_Type=1,Time_Count=0,hh=1,i=80,mm=1,tt=9;
//写数据
voidWrite(ucharAddr,ucharDat)
{
uchari;
LOAD=0;
for(i=0;
i<
8;
i++)
CLK=0;
Addr<
<
=1;
DIN=CY;
CLK=1;
_nop_();
}
Dat<
LOAD=1;
}
//MAX7219初始化
voidInitialise()
Write(0x09,0x3f);
//编码模式地址
Write(0x0a,0x07);
//亮度地址
Write(0x0b,0x01);
//扫描数码管个数地址
Write(0x0c,0x01);
//工作模式地址
//T0中断子程序
voidT0_INT()interrupt1
{
TH0=-50000/256;
//设定50ms定时初值
TL0=-50000%256;
if(tt--==0)//50ms*10=500ms
tt=9;
if(hh--==0)//500ms*2=1s
{
hh=1;
Write(1,i/0x0a);
//数码管写数据
Write(2,i%0x0a);
if(i--==0)//初始化时定义i=80
{
if(mm==0)//判断语句
{
mm=1;
i=80;
}
else
{
mm=0;
i=60;
}
}
switch(Operation_Type)
case1:
//东西向绿灯,南北向红灯
RED_A=1;
YELLOW_A=1;
GREEN_A=0;
RED_B=0;
YELLOW_B=1;
GREEN_B=1;
if(++Time_Count!
=155)return;
//500ms*(2*77)=77s
Time_Count=0;
Operation_Type=2;
//下一操作
break;
case2:
//东西向绿灯转黄灯,黄灯闪烁,南北向红灯
YELLOW_A=!
YELLOW_A;
GREEN_A=1;
if(++Flash_Count!
=7)return;
//500ms*(2*3)=3s
Flash_Count=0;
Operation_Type=3;
case3:
//南北向绿灯,东西向红灯
RED_A=0;
RED_B=1;
GREEN_B=0;
if(++Time_Count!
=115)return;
//500ms*(2*57)=57s
Operation_Type=4;
case4:
//南北向绿灯转黄灯,黄灯闪烁,东西向红灯
YELLOW_B=!
YELLOW_B;
if(++Flash_Count!
500ms*(2*3)=3s
Operation_Type=1;
break;
}
}
//主程序
voidmain()
//初始化
TR0=1;
//启动定时器0
while
(1);
}
附件1系统原理图
附件2系统仿真图(东西通行,时间80s,南北禁止)
(南北通行,时间60s,东西禁止)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 课程设计 报告