单片机原理及应用课程设计基于STC89C52单片机的交通灯控制系统设计_第1页
单片机原理及应用课程设计基于STC89C52单片机的交通灯控制系统设计_第2页
单片机原理及应用课程设计基于STC89C52单片机的交通灯控制系统设计_第3页
单片机原理及应用课程设计基于STC89C52单片机的交通灯控制系统设计_第4页
单片机原理及应用课程设计基于STC89C52单片机的交通灯控制系统设计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用课程设计 题 目 基于stc89c52单片机的 交通灯控制系统设计 学生姓名 学 号 2012115020343 学 院 计算机科学与技术学院 专 业 通信工程 指导教师 二一五 年 六月 十七 日基于stc89c52单片机的交通灯控制系统陈国盛1. 项目概述随着我国经济的高速发展,私家车、公家车的增加,无疑会给我国道路交通系统带来沉重的压力,很多大城市都不同程度的受到交通堵塞问题的困扰。下面以stc89c52单片机为核心,设计出以人性化、智能化为目的的交通信号灯控制系统。2. 项目意义用stc89c52单片机控制一个交通信号灯系统,晶振采用12mhz。设a车道与b车道交叉组成

2、十字路口,a是主道,b是支道。设计要求如下:(1) 用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。(2) 正常情况下,a、b两车道轮流放行,a车道放行9s,其中3s用于警告;b车道放行6s,其中3s用于警告。(3) 在交通繁忙时,交通信号灯控制系统应有手控开关,可人为的改变信号灯的状态,以缓解交通拥挤状况。在b车道放行期间,若a车道有车而b车道无车,按下开关k1使a车道放行5s;在a车道放行期间,若b车道有车而a车道无车,按下开关k2是b车道放行5s。(4) 有紧急车辆通过时,按下k3使a、b车道均为红灯,禁行5s。3 系统设计交通控制系统主要控制a、b两车道的交通,以stc89c5

3、2单片机为核心芯片,通过控制三色led的亮灭来控制各车道的通行;另外通过3个按键来模拟各车道有无车辆的情况和有紧急车辆的情况。根据要求,制定总体设计思想如下:(1) 正常情况下运行主程序,采用0.5s延时子程序的反复调用来实现各种定时时间。(2) 一车道有车,而另一车道无车时,采用外部中断1执行中断服务程序,并设置该中断为低优先级中断。(3) 有紧急车辆通过时,采用外部中断0执行中断服务程序,并设置该中断为高优先级中断,实现二级中断嵌套。3.1 框图设计基于stc89c52单片机的交通信号灯控制系统由电源电路、单片机主控电路、按键控制电路和道路显示电路几部分组成。3.2 关键技术(1) 单片机

4、最小系统工作原理及设计(晶振电路和复位电路)(2) 按键电路工作原理及设计(3) 驱动电路74ls07的特性及使用(4) led的特性及使用(5) stc89c52单片机引脚(6) 单片机汇编语言及程序设计4 硬件设计用12只led模拟交通信号灯,以stc89c52单片机的p1口控制这12只发光二极管,由于单片机带负载能力有限,因此,在p1口与发光二极管之间用74ls07作驱动电路,p1口输出0时,信号灯亮;输出1时,信号灯灭。在正常情况和交通繁忙时,a、b两车道的6只信号灯的控制状态有5种形式,即p1口控制功能及相应控制码如表1-2所示。分别以按键k1、k2模拟a、b道的车辆检测信号,开关k

5、1按下时,a车道放行;开关k2按下时,b车道放行;开关k1和k2的控制信号经异或取反后,产生中断请求信号(0有效),通过外部中断1向cpu发出中断请求;因此产生外部中断1中断的条件应是:int1=k1k2。采用中断加查询扩展法,可以判断出要求放行的是a车道(k1)还是b车道(k2)。以按键k0模拟紧急车辆通过开关,当k0为高电平时属正常情况,当k0为低电平时,属紧急车道通过的情况,直接将k0信号接至int0(p3.2)脚即可实现外部中断0中断。交通信号灯与控制状态对应关系控制状态p1口控制码p1.7p1.6p1.5p1.4p1.3p1.2p1.1p1.0未用未用b道绿灯b道黄灯b道红灯a道绿灯

6、a道黄灯a道红灯a道放行,b道禁止f3h11110011a道警告,b道禁止f5h11110101a道禁止,b道放行deh11011110a道禁止,b道警告eeh11101110a道禁止,b道禁止f6h11110110综上所述,可设计出基于stc89c52单片机控制交通信号灯模拟信号灯控制系统的电路图如图所示。4.1 元器件清单基于stc89c52单片机的交通信号控制系统元件清单如下表所示:元件名称型号数量/个用途单片机stc89c521控制核心晶振12mhz1晶振电路电容30pf2晶振电路电解电容10f/10v1复位电路电阻10k1复位电路驱动器74ls071led驱动发光二极管led12黄、

7、红、绿灯集成块74ls041按键电路集成块74ls861按键电路电阻4.7k2按键电路按键4按键电路电阻30012led限流电源+5v/0.5a1提供+5v4.2 电路原理图4.3 电路仿真图5 软件设计主程序采用查询方式定时,由r2寄存器确定调用0.5s延时子程序的次数,从而获取交通灯的各种时间。子程序采用定时器1方式1查询式定时,定时器定时50ms,r3寄存器确定50ms循环10次,从而获取0.5s的延时保护时间。有车车道放行的中断服务程序首先要保护现场,因需要用到延时子程序和p1口,故需要保护的寄存器有r3、p1、th1和tl1,保护现场时还需要关中断,以防止高优先级中断(紧急车辆通过所

8、产生的中断)出现导致程序混乱。开中断,由软件查询p3.0和p3.1口,判别哪一车道有车。待交通灯信号出现后,保持5s的延时,然后关中断,恢复现场,再开中断,返回主程序。紧急车辆出现时的中断服务程序也需保护现场,但无须关中断(因其为高优先级中断),然后执行相应的服务,待交通灯信号出现出现后延时5s,确保紧急车辆通过交叉路口,然后,恢复现场,返回主程序。5.1 程序流程图开始初始化a绿灯、b红灯延时9sa绿灯闪烁2.5sa黄灯、b红灯b黄灯、a红灯b绿灯闪烁2.5s延时6sa红灯、b绿灯延时2s延时2s主程序中断响应关中断保护现场开中断a道有车吗?a绿灯、b红灯b道有车吗?a红灯、b绿灯延时5s关

9、中断恢复现场开中断返回nyy有车车道放行时的中断服务程序(int1)紧急情况时的中断服务程序(int0)中断响应保护现场a红灯、b绿灯延时5s恢复现场返回5.2 程序清单 org 0000h ljmp main ;转向主程序 org 0003h ljmp intt0 ;转向紧急车辆中断服务程序 org 0013h ljmp intt1 ;转向有车车道中断服务程序 org 0200hmain: mov sp,#30h setb px0 ;置外部中断0为高优先级中断 mov tcon,#00h ;置外部中断0、1为电平触发 mov tmod,#10h ;置定时器1为方式1 mov ie,#85h

10、;开cpu中断,开外中断0、1中断 loop: mov p1,#0f3h ;a道绿灯放行,b道红灯禁止 mov r1,#18 ;置0.5s循环次数(0.5x18=9s)dip1: acall delay ;调用0.5s延时子程序 djnz r1,dip1 ;9s不到继续循环 mov r1,#05 ;置a绿灯闪烁循环次数wan1: cpl p1.2 ;a绿灯闪烁 acall delay djnz r1,wan1 ;闪烁次数未到,继续循环 mov p1,#0f5h ;a黄灯警告,b红灯禁止 mov r1,#04h ;置0.5s循环次数(0.5x4=2s)yl1: acall delay djnz

11、r1,yl1 ;2s未到继续循环 mov p1,#0deh ;a红灯,b绿灯 mov r1,#12 ;置0.5s循环次数(0.5x12=6s)dip2: acall delay djnz r1,dip2 ;6s未到继续循环 mov r1,#05hwan2: cpl p1.5 ;b绿灯闪烁 acall delay djnz r1,wan2 mov p1,#0eeh ;a红灯,b黄灯 mov r1,#04hyl2: acall delay djnz r1,yl2 ajmp loop ;循环执行主程序intt0: push p1 ;p1口数据压栈保护 push th1 ;th1压栈保护 push t

12、l1 ;tl1压栈保护 mov p1,#0f6h ;a、b道均为红灯 mov r2,#10 ;置0.5s循环初值(5s)dey0: acall delay djnz r2,dey0 ;5s未到继续循环 pop tl1 ;弹栈恢复现场 pop th1 pop p1 reti ;返回主程序intt1: clr ea ;关中断 push p1 ;压栈保护现场 push th1 push tl1 setb ea ;开中断 jb p3.0,bop ;a道无车转向b道 mov p1,#0f3h ;a道绿灯,b道红灯 sjmp del1 ;转向5s延时bop: jb p3.1,exit ;b道无车推出中断

13、mov p1,#0deh ;a红灯,b绿灯del1: mov r5,#10 ;置0.5s循环初值(5s)next: acall delay djnz r5,next ;5s未到继续循环exit: clr ea pop tl1 ;弹栈恢复现场 pop th1 pop p1 setb ea retidelay: mov r3,#0ah ;0.5s子程序(50msx10=0.5s) mov th1,#3ch ;置50ms初值x=3cb0h mov tl1,#0b0h setb tr1 ;启动t1lp1: jbc tf1,lp2 ;查询计数溢出 sjmp lp1lp2: mov th1,#3ch ;置

14、50ms初值x=3cb0h mov tl1,#0b0h djnz r3,lp1 ret end6 系统仿真及调试单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试过程中被发现纠正的。但是通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试是基础,如果硬件调试不通过,软件设计则无从做起。硬件的调试主要是把电路各种参数调整到符合设计要求。先排除硬件电路故障,包括设计性错误和工艺性故障。一般原则是先静态后动态。经过两周的努力工作,终于完成了自己的单片机课程设计。虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。在焊接过程中,我学会应先

15、合理的布局,并认真检查每个元器件,确保无误后再焊接。还有,不能急于求成,要焊接一个模块,检查一个模块,免得整个版子焊完后再在一大堆线中检查,这样不仅效率低且耗时。自然,我也学会如何去发现问题与解决问题的一些方法。至于软件设计与调试,我觉得它主要考验你的思维逻辑能力及你对指令的熟悉程度。可以说再整个软件设计过程中,我不仅学会了延时的两种方法,即软件延时和硬件延时,还掌握数码管的两种显示方式(即动态显示与静态显示)及其如何选择。当然,通过几次反复调试过程,使得我对汇编指令有了更深刻的理解。在整个课程设计过程我还掌握了一下几点:(1)掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。(2)理解了最单片机的各部分组成及特性。(3)熟练使用了各种计算机辅助设计工具完成设计,充分掌握了这些工具的使用。(4)学会了利用keil uvision2对汇编语言进行编译过程.更进一步加深了对proteus软件的学习。通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。就我个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论