收藏 分享(赏)

交通灯课程设计报告.doc

上传人:yjrm16270 文档编号:4357896 上传时间:2018-12-24 格式:DOC 页数:24 大小:209.28KB
下载 相关 举报
交通灯课程设计报告.doc_第1页
第1页 / 共24页
交通灯课程设计报告.doc_第2页
第2页 / 共24页
交通灯课程设计报告.doc_第3页
第3页 / 共24页
交通灯课程设计报告.doc_第4页
第4页 / 共24页
交通灯课程设计报告.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、湖 南 人 文 科 技 学 院课 程 设 计 报 告课程名称:单片机原理及应用课程设计设计题目: 城市道口交通灯控制系统设计 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 电信二班 学生姓名: 陈艳风 周梦姣 学 号: 08409220 08409246 起止日期: 2010 年 12 月 20 日 2011 年 12 月 31 日指导教师: 谢四莲 谭周文 赵志刚 教研室主任: 侯海良 指导教师评语:指导教师签名: 年 月 日成绩项 目 权重陈艳风 周梦姣1、设计过程中出勤、学习态度等方面 0.22、课程设计质量与答辩 0.53、设计报告书写及图纸规范程度 0.3成绩评定总

2、成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见:主任签字: 年 月 日摘 要本课程设计的城市道口交通灯控制系统模型以 MSC-51 系列单片机 AT89C52 为核心,通过 8255 芯片扩展,由发光二极管,共阳极数码管 ,以及中断电路组成。城市道口交通灯控制系统实现了发光二极管作为直行、左拐,右拐的指示灯,数码管实现倒计时指示 ,以中断实现特种车辆通行十字路口,当有特种车辆通过路口时,其他车辆全部禁止通行并在指定时间内恢复原来的通行状态。本组在此次设计过程中先先分析设计要求,根据提出的设计画硬件系统方框图和软件流程图,在用Keil 软件编写程序,通过 STC 软件下载到单

3、片机,反复调试,最终完成交通灯控制系统的设计。关键词:AT89C52;8255;数码管;中断电路;交通灯目 录1、方案论证与对比 .11.1 方案一 .11.2 方案二 .21.3 方案选择 .32、系统硬件设计 .32.1 系统的组成及总体框图 .32.2 硬件模块 .42.2.1 主控单元模块 42.2.2 LED 灯输出显示单元 42.2.3 8255 扩展芯片 .52.2.4 LED 数码管 52.2.5 外部中断控制模块 62.3 元件清单 .63、系统软件设计 .73.1 软件总流程图 .73.2 软件单元模块分析 .73.2.1 主程序 73.2.2 初始化程序 83.2.3 定

4、时器中断和数码管显示程序 93.2.4 定时器中断和 LED 灯显示程序 .103.2.5 外部中断程序 .124、 调试与功能分析 .134.1 功能分析 134.2 调试方法 134.3 硬件调试 144.4 软件调试 144.5 软硬联调 144.6 各模块调试 144.6.1 交通灯通行方式功能的调试 .144.6.3 特种车检测模块调试 145、总结与致谢 155.1 总结与思考 155.2 致谢 15参考文献 .156、附录 166.1 附录一 166.2 附录二 171城市道口交通灯控制系统设计要求:1 用单片机设计一个城市道口交通灯控制系统。2 每个方向具有左拐、右拐、直行通行

5、的指示灯。3 计时牌显示剩余时间。4 当有特种车辆通过路口时,其他车辆全部禁止通行,15 秒后恢复通行。1、方案论证与对比1.1 方案一城市道口交通灯控制系统模型采用标准 STC89C52 单片机 1作为控制器,通行倒计时显示采用位数码管,指示灯采用 LED,利用定时器,采用动态扫描法,以节省端口数。当有特种车辆通行时采用外部实时中断完成,系统转为特种车辆放行,其它车辆禁行通行的状态,15s 后系统自动恢复正常管理。方案一原理 2框图如图 1所示:图 1 硬件系统方框图1.2 方案二采用 STC89C2051 单片机 1作为控制器;通行倒计时显示采用 1616 点阵 LED 发光管,左拐、右拐

6、、直通通行指示灯也采用 1616 点阵 LED 发光管。该系统设计框架P1STC89C52P3.2 INT0P3.2 INT0PA8255PB数码管显示时间特种车辆检测段选位选上电复位定时中断 LED 交通指示灯2如图 2 所示。列驱动采用 74LS5953以实现串行端口 4扩展,行驱动采用 4/16 译码器74LS154 动态扫描,译码器 74LS154 生成 16 条行选通信号线,再经过驱动器驱动对应的行线。每条行线上需要较大的驱动电流,应选用大功率三极管作为驱动管。REDTXD单片机I/O口电源行驱动器列驱动器 74LS595双色 LED显示点阵(每个路口 7 个)图 2 硬件系统方框图

7、1.3 方案选择按方案一系统设计构架设计,单片机端口资源刚好满足要求。该系统具有电路简单,设计方便,显示亮度高,耗电少,可靠性高等特点。方案二设计方案的图案显示逼真,单片机占用端口资源少;缺点是需要大量的硬件,电路复杂,耗电量大,在模型制作中较少采用。通过以上综合分析可以看出,方案一具有综合设计优点,因此城市道口交通灯控制系统采用方案一设计。2、系统硬件设计2.1 系统的组成及总体框图3图 3 硬件总体框图城市道口交通灯控制系统设计硬件电路由主控制模块 STC89C52、8255 外部扩展和数码管显示模块,LED 显示模块,外部中断控制模块等四大模块构成。2.2 硬件模块2.2.1 主控单元模

8、块根据设计要求,采用单片机 STC89C52RC 作为主控制器,它是 ATMEL 公司生产的一款性能稳定的 8 为单片机。具有 32 个可编程 I/0 口线,2 个 16 位定时计数器,5 个中断源。单片机的 P1 口用于控制各个方向直通,左拐,右拐的通行指示灯,P0 口及P3 口用于计时器的控制,特种车辆通过时使用外中断 0 口(P3.2),P2 口用于控制8255 芯片的工作方式以及控制端口。单片机 STC89C52RC 引脚图如图 4 所示:图 4 STC89C52RC 引脚图主控制模块STC89C528255并口扩展芯 片LED 闪烁灯外部中断电路LED数码管显示42.2.2 LED

9、灯输出显示单元采用 8 个高亮 LED 红绿灯作为十字路口交通灯各个方向直通,左拐,右拐的状态显示。当特种车通行时即外部中断响应,所有红灯全亮。考虑到电源电压和三极管 3显示的额定电流,只需与每个三极管串联一个 1000 欧姆电阻就可以满足电路要求,交通灯电路图如图 5 所示:图 5 交通灯模块电路图2.2.3 8255 扩展芯片图 6 8255 引脚结构图8255 芯片主要用于端口的扩展,它有三种工作模式: 模式 0 为基本输入输出; 模式 1 为触动式输入输出; 模式 2 为触动式双向总线输入输出。工作模式 0 是做常用5的一种工作方式,此次课程设计也选用了工作模式 0,通过控制 PA 口

10、对数码管进行位选,控制 PB 口对数码管进行段选。2.2.4 LED 数码管图 7 LED 数码管结构图考虑到一般交通通行时间为 60 秒倒计时,且特种车辆也只需最大计时 15s,所以时间显示模块只要用到两位数码管即可。通过控制串口芯片 8255 的 PA 口(低电平有效)进行位选择,选定 PA0,PA1 两位数码管。再通过控制串口芯片 82551的 PB 口(低电平有效)进行段选择,从而显示时间。2.2.5 外部中断控制模块当特种车通过十字路口时,外中断 0 响应,P3.2 就会产生一个低电平,送往单片机进行处理,从而产生中断,LED 数码管和 LED 闪烁灯同时转向特种状态显示,15s 过

11、后,LED 数码管和 LED 闪烁又同时返回中断前的状态。特种车辆中断模块硬件电路如图8:图 8 特种车辆控制模块电路图62.3 元件清单表 1 元件清单符号 型号 参数 数量 备注芯 片 STC89C52 1 个 单片机主控芯片8255 1 个 单片机串口扩展芯片三极管 9015 8 个LED 闪烁灯 8 个 红灯和绿灯各四个电阻 1k 若干 作为上拉电阻使用电容 33PF,103,104 若干LED 数码管 八段数码管 2 个 共阳极3、系统软件设计3.1 软件总流程图YN N N YY图 8 软件总流程图 开 始初始化中断、定时器P3.2=0?Shu=0?LED 闪烁灯显示状态改变LED

12、 数码管重新倒计时LED 闪烁灯显示状态LED 数码管倒计时中 断 响 应Shu1=0?73.2 软件单元模块分析3.2.1 主程序主程序主要负责总体程序管理功能,实现人及交互设定。由于采用动态扫描方式显示时间,因此主程序大部分要调用扫描显示程序 5。主程序流程图如图 7 所示:void main()init();P1 = tab0;a8255_CON=0x89; /电源控制,进入空闲待机状态,中断请求有效while(1)shuma(shiw,gew); /数码管显示时间deng(); /灯亮状态3.2.2 初始化程序初始化程序主要完成定时器的工作模式、外部中断方式等的设定。定时器 T0 设为

13、工作方式 1,为 16 为定时器模式,定时时间为 50ms,外部中断方式为外部中断方式0。程序如下:void init() /定时器和外中断 0 的初始化程序TMOD = 0x01; /工作在定时器工作方式 1TH0 = 0x3c;/装入初值TL0 = 0xb0;EA = 1; /开总中断ET0 = 1; /开定时器 0 中断TR0 = 1; /启动中断8EX0=1; /开外部中断 0IT0=0; /触发方式为低电平3.2.3 定时器中断和数码管显示程序1定时器中断和数码管显示程序流程图NN Y图 9 定时器中断和数码管显示程序流程图2定时器中断和数码管显示程序及说明定时中断服务程序主要用于车

14、辆及行人的通行时间指示,其通行规则如下:先把数码管 0 至 9 十个数存起来,定时器 T0 的溢出中断周期设为 50ms,中断累计 20 次(即1s)则对倒计时单元减 1 操作。然后通过取整和取余以及查表法逐一实现在不同的shiw 和 gew 给控制端口送不同数据码值,程序如下:uchar code table= 0xA0, 0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20, 0x28; T0 中断程序现场保护关中断 T0T0 初值重设t0+shu-shiw=shu/10;gew=shu%10;a8255_PB=tableshiwa8255_PB=tablegew

15、shu=0shu=30t0=0?9/共阳数码管 0-9void shuma(uchar shiw, uchar gew)if(shiw!=0) a8255_PA=0xff;a8255_PB=0xff; a8255_PB=tableshiw; /段选,显示十位上数字a8255_PA=0xfe; /位选,选择数码管 PA0 作为十位delay(1); a8255_PA=0xff;a8255_PB=0xff;a8255_PB=tablegew; /段选,显示个位上数字a8255_PA=0xfd; /位选,选择数码管 PA1 作为个位delay(1); void time0() interrupt 1

16、 /定时器 0 中断程序 TH0 = 0x3c;/重新装入初始值TL0 = 0xb0;t0+;if(t0%20=0) /1s 时间的变化,改变数码管的显示shu-;if(shu=0)shu=30;shiw=shu/10;gew=shu%10;103.2.4 定时器中断和 LED 灯显示程序1定时器中断和 LED 灯显示程序流程图NYN Y图 10 定时器中断和 LED 灯显示程序流程图2定时器中断和 LED 灯显示程序及说明定时中断服务程序主要用于车辆及行人的通行指示,其通行规则如下:定时器 T0的溢出中断周期设为 50ms,中断累计 20 次(即 1s)是对倒计时单元减 1 操作。设计中将通

17、行规则分成种不同的亮灯方式,先把 8 钟灯亮状态用表存起来,然后通过控制t0 和 i 用查表法逐一实现在不同 i 值对灯送入不同值,程序如下:uchar code tab=0x66,0x69,0x99,0x5A,0x66,0x96,0x99,0xA5;void deng() /发光二极管显示程序P1 = tabi;void time0() interrupt 1 /定时器 0 中断程序TH0 = 0x3c;/重新装入初始值TL0 = 0xb0;t0+;if(t0%20=0) /1s 时间的变化,改变数码管的显示T0 中断程序现场保护关中断 T0T0 初值重设t0=0?i+i=7P1 = tab

18、ii=011shu-; /shu 为定时 30s if(shu=0) shu=30;shiw=shu/10;gew=shu%10;if(t0 =600) /30s 时改变一次状态t0=0;i+;if(i=7) i=0;3.2.5 外部中断程序1外部中断程序流程图所有红灯亮,数据缓存红灯显示15s 倒计时结束?外中断程序现场保护关外中断 0开定时器 0关定时器 T0,开外中断 0现场恢复,中断返回YN图 11 外部中断程序流程图2中断程序及说明当有特种车辆经过时,可由交警手动按下 INT0,触发外中断。东西南北方向的红灯全亮,绿灯全熄灭,15S 钟后恢复原来状态。程序如下:void enter0

19、() interrupt 0 /外部中断0中断程序uchar shu1 =15,sw,gw;if(p3 = 0) /对按键消抖12delay(10);if(p3 = 0)P1 = 0xAA;while(shu1) /shu为定时30s sw=shu1/10;gw=shu1%10;shuma(sw,gw); delay(1000);shu1-; 4、调试与功能分析4.1 功能分析北西 东南图 12 十字路口模型如图 12 所示:在东西南北方向各设置一盏红灯和一盏绿灯,当任意两方向的红灯亮,绿灯灭,则这两个方向之间是可以通车的,而同时对立两方向的绿灯亮,红灯灭,禁止通车,同时数码管作为时间显示牌,

20、进行 30s 倒计时,30 过后,亮灯方式换成另外一种状态,数码管在进行 30s 倒计时,在没有外部中断响应的情况下,一直这样循环下去。当有外部中断响应即特种车通过,东西南北方向的红灯都亮,绿灯都灭,数码管实现 15s 倒计时,时间一到,回到原来状态,继续循环。4.2 调试方法本次课程设计中调试部分系统系统的调试主要分为:硬件调试,软件调试和软硬件联调。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试,13包括对交通灯通行方式功能的调试,倒计时功能调试,特种车通行中断控制功能调试等。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后在交道

21、口模型上进行整体测试,使系统的所有功能得以实现。4.3 硬件调试首先对交道口交通灯控制系统的电路板进行检查,即确认电路无虚焊,无短路,无断路,集成元件安装是否正确,之后进行电路功能模块的分级调试,根据电路功能逐级进行:LED 灯功能调试:LED 各个红绿灯都能正常亮灭。 数码管功能调试:每个数码管能正常显示 0-f 的值。 中断控制功能调试:包括按键功能及规则调试。 4.4 软件调试本系统的软件系统很长,用 Keil 软件编好程序。然后运行,除了语法差错外,当确认程序没问题时,通过直接下载到单片机来调试。采取的是自分断调试的方法,即单独调试好每一个模块,然后再连接成一个完整的系统,最后完成一个

22、完整的系统调试。4.5 软硬联调系统做好后,进行系统的完整调试。主要任务是检验实现的功能及其效果并校正数值。根据实测数据,逐步校正数据,使测量结果更准确。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。4.6 各模块调试4.6.1 交通灯通行方式功能的调试显示倒计时采用 2 位 LED 数码管;左拐、右拐、直行 3 组通行指示灯采用双色高亮发光二极管。检查二极管无故障,可先写一个软件调试程序,依次检查东南西北方向的指示灯(发光二极管)是否点亮;若未点亮,则可能是二极管存在故障。根据灯的亮灭情况依次查找直到电路正常工作为止。我们主要出现的是数码管倒计时显示的问题,后来通过检查

23、,是程序设计思路存在偏差。改正后数码管顺利实现倒计时显示。南北方向、东南方向的指示灯要同时调试。设计中将各个方向的直通,左拐,右拐通行规则分成几种不同的亮灯方式。经过调试指示灯的亮灭符合控制要求。144.6.3 特种车检测模块调试特种车检测模块主要由中断模块组成,由单片机的串口与中断按键模块构成,信号通过中断模块发出,特种车通过时所有的交通灯能变成红灯,并在 15s 之后恢复正常,则说明该模块工作正常。5、总结与致谢5.1 总结与思考此次单片机课程设计,学以致用的同时也对自己掌握的理论知识进行查漏补缺,既锻炼了能力也看到了自身的不足。在设计过程中,把所学到的理论知识与实际结合起来,深化了理论知

24、识也加强了动手操作能力。在编写程序时,将学习到的理论知识来实现交通灯的多项功能,感受到了程序成功实现多项功能的快乐。本设计中,两位组员之间相互配合是非常重要的,在不断磨合期间团队意识逐渐形成,成为了本次设计成功的其中一个基础。在设计城市道口交通灯控制系统的过程中我们的思路存在偏差,导致完成程序花费了较多的精力,这也给以后的动手操作积累了些经验。5.2 致谢在本次课程设计过程中,谢四莲老师对该论文从选题,构思到最后定稿的各个环节给予细心指引与教导,使得最终完成论文设计。在此,谨向老师们致以衷心的感谢和崇高的敬意!最终,在老师、学长及同学的帮助与指导下顺利的完成了本次课程设计。非常感谢老师的支持,

25、以及学校和系部领导统筹安排此次单片机课程设计,使结合理论知识和实际动手操作得到了很好的结合,对加深了对知识的理解。 最后,我们要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位老师表示感谢。15参考文献1 张鑫.单片机原理与应用M.北京:电子工业出版社.20052 楼然苗.单片机课程设计指导M.北京:航天航空大型出版社.20073 康华光主编.电子技术基础(第五版)M.北京:高等教育出版社.20004 谢宜仁.单片机硬件接口电路及实例解析M.北京:电子工业出版社.20025 谭浩强.C 程序设计第二版M.北京:清华大学出版社.19996 郭天祥.十天学会单片机OL.http:/ P

26、roteus 的 51 系列单片机设计与仿真M.北京:电子工业出版社.2003166、附录6.1 附录一硬件总电路图如下:图 13 总电路图176.2 附录二城市道口交通灯控制系统设计总程序如下:#include#include /定义8255A的绝对地址#define a8255_PA XBYTE0xD1FF /PA口地址#define a8255_PB XBYTE0xD2FF /PB口地址#define a8255_PC XBYTE0xD5FF /PC口地址#define a8255_CON XBYTE0xD7FF /控制字地址#define uint unsigned int#defin

27、e uchar unsigned charsbit p3 = P32;uint t0 = 0,flag;int i;uchar shu=30,shiw=3,gew=0;uchar code table= 0xA0, 0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28;/数码管 0-9uchar code tab=0x66,0x69,0x99,0x5A,0x66,0x96,0x99,0xA5;/LED的八种状态void delay(uint z) /延时1ms程序uint x,y;for(x=z;x;x-)for(y=110;y;y-);void init(

28、) /定时器和外中断0的初始化程序TMOD = 0x01; /工作在定时器工作方式1TH0 = 0x3c;/装入初值TL0 = 0xb0;EA = 1; /开总中断ET0 = 1; /开定时器0中断TR0 = 1; /启动中断EX0=1; /开外部中断0IT0=0; /触发方式为低电平/ 数码管显示程序void shuma(uchar shiw, uchar gew)if(shiw!=0) a8255_PA=0xff;a8255_PB=0xff; a8255_PB=tableshiw; /段选,显示十位上数字a8255_PA=0xfe; /位选,选择数码管PA0作为十位18delay(1);

29、a8255_PA=0xff;a8255_PB=0xff;a8255_PB=tablegew; /段选,显示个位上数字a8255_PA=0xfd; /位选,选择数码管PA1作为个位delay(1); void deng() /发光二极管显示程序P1 = tabi;void main()init();P1 = tab0;a8255_CON=0x89; /电源控制,进入空闲待机状态,中断请求有效while(1)shuma(shiw,gew);deng();void time0() interrupt 1 /定时器0中断程序TH0 = 0x3c;/重新装入初始值TL0 = 0xb0;t0+;if(t0%20=0) /1s时间的变化,改变数码管的显示shu-;if(shu=0)shu=30;shiw=shu/10;gew=shu%10;if(t0 =600) /30s时改变一次状态t0=0;i+;if(i=7) i=0;19void enter0() interrupt 0 /外部中断0中断程序uchar shu1 =15,sw,gw;if(p3 = 0) /对按键消抖delay(10);if(p3 = 0)P1 = 0xAA;while(shu1)sw=shu1/10;gw=shu1%10;shuma(sw,gw); delay(1000);shu1-;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 教学研究

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报