收藏 分享(赏)

单片机课程设计(论文)-十字路口交通信号灯控制器的设计.doc

上传人:微传9988 文档编号:2492773 上传时间:2018-09-18 格式:DOC 页数:30 大小:631KB
下载 相关 举报
单片机课程设计(论文)-十字路口交通信号灯控制器的设计.doc_第1页
第1页 / 共30页
单片机课程设计(论文)-十字路口交通信号灯控制器的设计.doc_第2页
第2页 / 共30页
单片机课程设计(论文)-十字路口交通信号灯控制器的设计.doc_第3页
第3页 / 共30页
单片机课程设计(论文)-十字路口交通信号灯控制器的设计.doc_第4页
第4页 / 共30页
单片机课程设计(论文)-十字路口交通信号灯控制器的设计.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、目录1 设计任务和内容 11.1 设计任务 11.2 功能要求说明 11.3 设计课题总体方案介绍及工作原理说明 21.3.1 工作原理 .21.3.2 总体方案介绍 .22 硬件设计 42.1 设计课题硬件系统各模块功能简要介绍 .42.1.1 晶振电路 .42.1.2 显示及显示驱动电路 .42.1.3 键盘控制电路 .52.1.4 复位电路 .52.1.5 指示灯控制电路 .62.2 电路原理图 .72.3 电路 PCB 图 .72.4 元器件布局图 .72.5 元器件清单图 .73、设计课题软件系统的设计 .83.1 单片机资源的使用情况 .83.2 软件系统各模块功能简要介绍 .83

2、.3 软件系统程序流程框图 .83.4 程序清单 114 设计总结 134.1 使用说明 134.2 仿真结果 134.3 误差分析 154.4 设计体会 154.5 教学建议 16参考文献 .17附 录 .18附录一 电路原理图 .18附录二 PCB 图 19附录三 元器件布局图 .20附录四 元器件清单 .21附录五 程序清单 .2211 设计任务和内容 1.1 设计任务设计一个具有特定功能的十字路口交通灯。该交通灯上电或按键复位后能自动显示系统提示符“P.” , 进入准备工作状态。按开始键则开始工作,按结束键则返回“P.”状态。要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车

3、道,每次通车时间为 60 秒,乙车道为次车道,每次通车时间为30 秒,要求黄灯亮 3 秒,并且 1 秒闪烁一次。有应急车辆出现时,红灯全亮,应急车辆通车时间 10 秒,同时禁止其他车辆通过。1.2 功能要求说明利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯。如图下图所示。设东西向为主干道,南北为支干道。(1)当交通灯上电或按键复位后能自动显示系统提示符“P.” ,进入准备工作状态。(2)干道亮绿灯时,支干

4、道亮红灯;支干道亮绿灯时,主干道亮红灯。(3)灯亮到红灯亮的转换过程中,要亮 3 秒黄灯作为过渡。黄灯亮时,原红灯按 1Hz 的频率闪烁。(4)应急车辆出现时,红灯全亮,应急车辆通车时间 10 秒,同时禁止其他车辆通过。北东南西图 1.1 交通灯示意图21.3 设计课题总体方案介绍及工作原理说明1.3.1 工作原理甲、乙两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯。红灯亮禁止通行,绿灯亮允许通行。黄灯闪亮提示人们注意绿、红灯的状态即将切换。指示灯燃亮的方案如表 1。 表 1 交通灯状态转换图计时 60s 3s 30s 3s支道 红灯亮 红灯亮 绿灯亮 黄灯闪 亮主道 绿灯亮 黄灯

5、闪 亮红灯亮 红灯亮 (1) 电源提供方面采用独立的稳压电源,此方案的优点是稳定可靠,且有各种成熟电路可供使用。(2) 显示方面完全采用数码管显示,用来显示有限符号和数码字符。(3) 键盘输入方面直接在 I/O 口线上接按键开关,因为设计时精简和优化了电路,所以剩余的口资源还比较多。我们共用到了 4 个按键,分别为:K1、K2、K3、K4。1.3.2 总体方案介绍该交通灯电路由单片机 AT89S52、键盘接口电路、显示接口电路、发光二极管控制电路、时钟电路和复位电路构成,原理框图如图 1.2 所示。3图 1.2 系统总体框图单片机可选用 AT89S52,它与 8051 系列单片机全兼容,但其内

6、部带有4KB 的 FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东西向各采用 2 个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘。42 硬件设计 2.1 设计课题硬件系统各模块功能简要介绍2.1.1 晶振电路时钟电路用来产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。通过在芯片的外部 XTAL1 和 XTAL2 两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡

7、电路。时钟电路为单片机产生时钟脉冲序列,本设计中采用的晶振频率为 12MHz,电容为33pF。图 2.1.单片机系统的复位电路2.1.2 显示及显示驱动电路在本次课程设计中,为了使硬件电路更简单化,为了节省口线,我们采用的是八位一体共阳数码管,显示原理跟单个 LED 的显示原理完全相同, 由于七段数码显示器在显示字形代码时需要有足够的功率,所以需在显示器上加显示驱动,本设计的显示驱动是采用 NPN 三极管作为驱动,并且,无论是位控线上还是段控线上都串接一个电阻,以提高其输出功率,在这里采用 470 欧母电阻。显示及驱动电路图如图 2.2。5图 2.2.单片机系统的复位电路2.1.3 键盘控制电

8、路键盘是最常用的输入设备,是实现人机对话的纽带。按其结构形式可分为非编码键盘和编码键盘。编码键盘采用硬件方法产生键码。每按下一个键,键盘能自动生成键盘代码,键数较多,且具有去抖动功能。这种键盘使用方便,但硬件较复杂。非编码键盘仅提供按键开关工作状态,其键码由软件确定,这种键盘键数较少,硬件简单,广泛应用于各种单片机应用系统,在单片机控制电路中,可把单片机使用的键盘分为独立式和矩阵式两种。独立式实际上就是一组独立的按键,这些按键可直接与单片机的 I/O 口连接,即每个按键独占一条口线,这种接法简单。矩阵式键盘也称行列式键盘,因为键的数目较多,所以键按行列组成矩阵。本设计中键盘数目较少,且为安装方

9、便,因此在本设计中采用独立式接法。如图 2.3 所示。图 2.3 独立式按键62.1.4 复位电路复位电路用于产生复位信号,通过 RST 引脚送入单片机,复位是单片机的初始操作,其主要功能是:为一些专用寄存器设置初始状态、程序状态字 PSW清 0、程序计数器 PC 被赋值为 0000H 等,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。RST 引脚是复位信号的输入端,复位信号是高电平有效,完成复位操作共需要 24 个状态周期,复位结束后,单片机从地址 0000H 单元开始执行程序,SP 为 07H,其它寄存器大多数被置为

10、00H,本设计使用频率为12MHz 的晶振,所以复位信号持续时间应超过 2 s 才能完成复位操作。复位电路分为上电复位、按键复位、按键脉冲复位三种,本次课程设计采用的是按键复位, 接线图如图 2.4。图 2.4.单片机系统的复位电路2.1.5 指示灯控制电路 本次课程设计采用 P1 口控制二极管的发光情况,口线送低电平有效,具体设计如下:P1.2 控制东西方向的绿灯,P1.3 口控制东西方向的黄灯,P1.4 控制东西方向的红灯,P1.5 控制南北方向的红灯,P1.6 控制南北方向的黄灯,P1.7控制南北方向的绿灯。如图 2.5 所示。 7图 2.5 指示灯控制电路2.2 电路原理图电路原理图见

11、附录一所示。2.3 电路 PCB 图PCB 图见附录二所示。2.4 元器件布局图元器件布局图见附录三所示。2.5 元器件清单图元器件清单见附录四所示。83、设计课题软件系统的设计3.1 单片机资源的使用情况 P3 口为二极管的控制端 P0 口用作地址/数据总线 P2 口用作数据总线 P1.0、P1.1、P1.2、P1.3 口线作为键盘输入端 采用了 INTO 外部中断既在 AT89S52 的 P0 口用来接八个发光二极管的阳极,控制其亮与灭,P0口和 P2 口外接由 8 个 LED 数码管(LED1、LED0)构成的显示器,用 P2 口作 LED的段码输出口(P2.0P2.7 对应于 LED

12、的 adp) ,P0 口作 LED 的位控输出线(P0.1、P0.0 分别对应于 LED1、LED0) ,其中在 P1 的串行口外接 2 个三极管作为显示驱动,显示为 2 个数码管(LED0LED1)进行动态显示。P1 口外接三个个按键 K1、K2、K3、K4(分别对应于 P1.0、P1.1、P1.2、P1.3 口)用于调整显示接口电路。 3.2 软件系统各模块功能简要介绍主程序模块的主要任务是程序的初始化显示“P.” ,当没任何键按下时,显示模块将一直不变,交通灯全部是熄灭的,当 K1 键按下并松开后开始倒计时,其中在时间显示的过程中判断是否有键按下,当再次按下 K1 时,显示将重新开始倒计

13、时,如果是 K3 按下,将显示“P.” ,并且发光二极管全部熄灭,如果是K2 按下,数码管将开始十秒倒计时,并且东西南北全部亮起红灯。显示模块包括送缓冲区模块,送显示等,通过这些模块完成了显示的功能,并能按照我们所熟悉的时钟时间进行显示。3.3 软件系统程序流程框图根据设计要求,程序框图如图 1 所示。由 C 语言完成。软件设计可以分为以下几个功能模块:主程序:初始化及调用控制灯的显示程序,主程序的流程图如图 3.1 所示。显示程序模块:完成交通灯的秒数显示,显示程序流程图如图 3.2 所示。按键判断模块:完成按键判断并还回键值,按键判断程序流程图如图 3.3 所示。定时器模块:完成交通灯秒数

14、的的定时,定时器程序流程图如图 3.4 所示。交通灯模块:完成交通灯的状态转换,交通灯程序流程图如图 3.5 所示9图 3.1 主程序流程图10图 3.2 显示程序流程图图 3.3 判断按键程序流程图11图 3.4 定时器中断程序流程图12开始程序初 始 化显示 P .K 1 键按下否?K 1 键真按下?南北绿 灯亮东西红灯亮6 0 秒到了?南北黄 灯闪亮东西红灯 亮5 秒到了?南北红 灯亮东西绿灯亮3 0 秒到了 ?南北红 灯亮东西黄灯闪 亮5 秒到了?有键按下?有键按下?有键按下?有键按下?判断按键NYNYNNNNYYYYYNNNNYYYYY图 3.5 交通灯状态转换流程图3.4 程序清单

15、程序清单详见附录五 134 设计总结4.1 使用说明本实验主要是利用单片机 AT89S52、数码管和发光二极管组成,整个电路结构比较简单,它能实现以下几个功能: 时间的显示。 红黄绿灯的发光与熄灭。具体操作说明如下: 当交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。当按下启动按钮 K1 并释放后,数码管显示将会从“60 始倒计时,每隔一秒减 1,此时南北方向开始一直亮绿灯,东西方向一直亮红灯,直到显示为“00”时,数码管将会从“03 开始倒计时,每隔一秒减1,此时南北方向没隔一秒黄灯就闪烁一次,东西方向亮一直红灯,直到显示为“00”时,数码管将会从“30 始倒计时,此时

16、南北方向一直亮红灯,东西方向一直亮绿灯,直到显示为“00”时,数码管又将从“03 开始倒计时,此时南北方向一直亮红灯,东西方向每隔一秒黄灯就闪烁一次;当没有其他键按下时,交通灯将这样一直循环下去。当按下结束键 K3 并释放后,数码管将显示“P.”,东西南北方向无灯亮,当有其它键按下时,就退出,去执行该键的键功能。当按下紧急键 K2 并释放后,数码管将显示“10” ,并且每隔一秒就减 1,东西南北方向全部红灯亮,当没亮到显示“00”就有其它键按下时,就退出,执行该键的键功能,当显示到“00”时,就会自动退出中断继续完成主程序。4.2 仿真结果当交通灯上电复位后,数码管显示“P.” ,仿真结果如图

17、 4.1 所示;当按下开始键 K1 后,南北方向就开始亮绿灯,东西方向开始亮红灯,显示器并开始从60s 倒计时,仿真结果如图 4.2 所示;当按下紧急键 K3 后,南北方向和东西方向均亮红灯,显示器并开始从 10s 倒计时,其仿真结果如图 4.3 所示; 图 4.1 上电显示14图 4.2 按下开始键后的显示(上)图 4.2 按下开始键后的显示(下)15图 4.3 按下紧急键后的显示4.3 误差分析本次课程设计的误差就在于显示时间,我采用的是调用延时程序来让显示器上数字共显示一秒钟,而循环一次的时间并不仅仅只是 2 次调用延时程序的时间,其间 CPU 还执行其它指令,例如说将缓存区的内容送给累

18、加器 A、查表指令、将段控码送给 P2 口等等,因为它们都是微秒级的,而延时程序是毫秒级的,因此在计算的过程中就可以省略了,每次循环除两次调用延时程序外,所用时间为 15 微秒,一秒钟共循环了 60 次,此在显示器上只需要显示 1 秒数字,事实上多显示了 900 微秒,误差率=0.9%4.4 设计体会经过一个多星期的时间,终于完成了这次的课程设计,在这期间,我觉得这次课程设计的难点就在函数的调用以及在函数调用中跳出。程序编了很多遍,最后还是没有成功,最后勉强成功,但还有一点小问题。我觉得这次课程设计中的第二个难点就是:显示程序。送的数到显示器,然后调用延时程序(用的是 1ms 的延时) ,因为

19、数的显示要用人感觉到需要几百毫秒这,而我用得延时程序只有 1ms,所以我用了一个循环显示程序,让它循环显示 80 次即可,不能用16在较正式的场合。关于 PCB 制作,我认真查阅资料,在上学期理论学习的基础上,经过几个星期的努力,又下了一次苦功夫,算是明白了制作一个系统的过程,也让我体会到要成功的设计出某个东西,光靠单一的知识是不够的,必须要系统的知识,对于这次的实物,我们采用的双面板制作,但是我是做了两次才成功的,第一次的问题主要是线设置的比较细,容易断掉,排列的比较紧,给人的感觉就是不美观,当我第二次再画 PCB 时,我就特意注意了这些细节,重新排了一下版,调整了元器件之间的距离,并加大了

20、线的宽度,加大了焊孔的内外直径。但又出现了新的一些问题,线接错了,最后经过一天的修改终于弄好了总结这次实习,在理论课上的学到的知识在这一周充分的和实践结合了起来,发现了学习中遗漏的知识点,对于已经有所了解的知识有了更进一步认识。4.5 教学建议对于这学期的单片机教学,我个人认为总体上教的比较成功的。老师上课讲得比较好。也比较负责。如果要说改进的话,我觉的这本教材有一点薄,上面的程序不是很多,比如那上面没有独立式按键的讲解以及程序。那上面没有C 的讲解,虽然又发了另一本书,但是比较厚,很难看,我觉的选一本既有汇编又有 C 的比较好。还有一点我觉的书上还有一章没有讲(不过在这读书基本上没有那个老师

21、把书讲完的)要是能讲完就好了。17参考文献 李广弟,朱月秀.单片机基础M.北京:北京航空航天大学出版社, 2007. 李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004. 李东生,张勇,许四毛.protel99s 电路设计与应用M.北京:电子工业出版社,2004. 张红润,马平安,张亚凡.单片机原理及应用M.北京:科学出版社,2002.18附 录附录一 电路原理图附录二 PCB顶层图PCB底层图123456ABCD654321D C B ATitleNumberRevisionSize BDate:10-Sep-2010Sheet of File:I:下下下下下下下下下下

22、下下下下下(下下下下).ddbDrawn By:EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P12P123P134P145P156P167P178P039P0138P0237P0336P0435P0534P0633P0732P2021P2122P223P2324P2425P2526P2627P2728PSEN29ALE/P30TXD11RXD10U1AT89S52a11 b7c4 d2e1 f10g5 dp3 d4 6d3 8d2 9d1 12LED1 LED1a11 b7c4 d2e1 f10g5 dp3 d4 6d3 8d2 9

23、d1 12LED2LED2VDR20470R21470R22470R23470R24470R25470R26470R27470P20P21P2P23P24P25P26P27R00 470R012KR02470R03470R04470R05470R06470R074701A2KD1 LEDD2 LEDD3 LEDD4 LEDD5 LEDD6 LEDD7 LED1A2KD8 LEDP0P01P02P03P04P05P06P07VCCP0P01P02P03P04P05P06P07 P20P21P2P23P24P25P26P27S1SW R120R21K+C322uFVCC RETRETX1X2Y11

24、2MHZC1 33pFC2 33pFX1X2123456789J5 10KP0P01P02P03P04P05P06P07P10P1P12P13P14P15P16P17LS1 BELR12 1KVCCP31P30P311122334455667788991010ISP WEP15 RET P17 P16VCCP3712 J1CON2COMMON 1N2 SSR131KP32P3 P34P35 P36ALE/PPSENGNDD9LEDC3 B1E 2Q1PNPQ2PNPQ3PNPQ4PNPQ5PNPQ6PNPQ7PNPQ8PNPC 3B1E2 Q9PNPP0P01P02P03P04P05P06P0

25、7P10P1P12P13P14P15P16P17P20P21P2P23P24P25P26P27P30P31P32P3P34P35P36P37VCC12345678JP1 CON812345678JP2 CON812345678JP3 CON812345678JP4 CON812318B2018B20VCCRk4.7KP30VCCRP0470 RP1 470RP2 470RP3 470RP4 470RP5 470RP6 470RP7 470P3012JP5CON2VCCVDP31 P32 P3 P34 P35 P36 P37123456789J2 10KVCC P10P1P12P13P14P15

26、P16P17S2SWS3SWS4SWS6SWS7SWS8SWKS9S5SW12 J3USB 下下18B20下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下下12JX1 CON212JX2 CON2B20B20B21 B21下下下下下下VCC19附录三 元器件布局图20附录四 元器件清单图 21元器件及材料清单附录五 元器件及材料名称 规格 数目 备注AT89S52 加底座 40P 1四位一体共阳数码管加底座 40P 2晶振 12MHz 1发光二极管 9单排插 40 脚 1三极管 9012 9蜂鸣器 1小按键 9下载口座子 十芯 1六脚按键开关 1Usb 电源

27、线加接口 1电阻 200 1电阻 1K 3电阻 470 24电解电容 22uf 1瓷片电容 33pf 2排阻 10k 2短路冒 2杜邦线 8P 1PCB 板子 122程序清单本程序的相关设定:显示器的设定:P1.0P1.1 制显示器的个位和十位的位选码 P0.0P0.7控制显示器的段选码按键的设定: P1.0P1. 4 控制交通灯的开启准备,返回准备,紧急事件状态/* *第一个状态:主干道、支干道均亮红灯 10S *第二个状态:主干道亮绿灯 60S、支干道亮红灯 *第三个状态:主干道绿灯闪 3 次转亮黄灯、支干道亮红灯 3S *第四个状态:主干道亮红灯、支干道亮绿灯 30S *第五个状态:主干

28、道亮红灯、支干道绿灯闪 3 次转亮黄灯 3S *返回到第二个状态 * */#include/头文件#include/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sbit RED_ZHU = P30;sbit YELLOW_ZHU = P31;sbit GREEN_ZHU = P32;sbit RED_ZHI = P33;sbit YELLOW_ZHI = P34;sbit GREEN_ZHI = P35; sbit p3_0=P30;sbit p3_1=P31;sbit p3_7=P37;uint aa, bai

29、,shi,ge,bb; /定义变量/*数码管显示 0-9*/uint code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0C,0xbf;/电子 090313 显示uint data table1=0,0,9,0,3,11,1,3;/*子函数声明*/void delay(uint z);void delay0(uint z);/void init(uint a);void display(uint shi,uint ge);void disp();void xtimer0();void init1();void init

30、2();void init3();void init4();void init5();uchar keychuli();uchar key();/*主函数*/void main() uchar m,n;uchar k,b;23P0=0XFF;P1=0xFF;P2=0xFF;EA=1;/打开外部中断while(1) k=key();switch(k) case 0x00: while(1)display(10,10);b=P1;if(b!=0xff)break;case 0x01: while(1) if(P1!=0xff) break;Loop: init2();/第 2 个状态init3()

31、; /第 3 个状态init4(); /第 4 个状态init5();/第 5 个状态 break;case 0x02: init1();goto Loop;break;while(1)display(10,10);b=P1;if(b!=0xff)break; break;case 0x04: while(1) uchar i=80;b=P1; if(b!=0xff)break;dodisp();while(i-) ;m=table10;for(n=0;n0;j-)for(i=1250;i0;i-) for(k=180;k0;k-); uchar keychuli()uchar k; k=P1; k=k; return(k); uchar key()uchar keyzhi,keyzhii; keyzhi=keychuli(); if(keyzhi!=0) delay0(5);keyzhi=keychuli(); if(keyzhi!=0) keyzhii=keyzhi;while(keyzhi!=0) delay0(5);keyzhi=keychuli();29keyzhi=keyzhii; return(keyzhi);

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

当前位置:首页 > 学术论文 > 管理论文

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


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

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

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