《单片机课程设计-交通灯控制系统(14页).docx》由会员分享,可在线阅读,更多相关《单片机课程设计-交通灯控制系统(14页).docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-单片机课程设计-交通灯控制系统1. 概 述本设计是根据单片使机原理就交通灯的系统作出的,由于车辆的增多,所以交通灯在现代道路交通中起着越来越重要的作用。为了解决这些问题,我们更应该提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,提高交通效率,促进和谐交通的建立。1.1 本次课程设计的内容与目的本次课程设计的题目是交通灯控制系统的设计。主要内容包括:利用实验箱上的单片机、LED指示灯、数码管显示器模拟十字路口交通灯控制时序,用6个LED指示灯分别模拟A、B道的红、黄、绿指示灯,用四个七段LED显示器分别显示A、B道的通放行时间,A、B道轮流放行。通过本次课程设计,旨在达到以下目的
2、:进一步熟悉和掌握单片机的结构及工作原理;掌握单片机的接口技术及相关外围芯片的特性,控制方法;掌握以单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法;通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术;通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应工作打下基础;培养学生综合运用所学知识分析问题和解决问题的能力。1.2 交通灯简介交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。如今随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统
3、有着现实的必要性。该设计在熟练掌握单片机原理及其应用技术的使用方法基础上,综合应用单片机原理、微机原理、微机接口技术、proteus软件等课程方面的知识,设计一个采用AT89C51单片机控制的交通灯控制电路。能方便的对交通灯进行控制,使交通更和谐。1.3 本交通灯系统的特点本系统结构简单,操作方便;可实现自动控制,具有一定的智能性;对优化城市交通具有一定的意义。本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。2. 系统硬件设计2.1 系统工作原理本系统利用实验箱上的单片机、LED指示灯、数码管显示器模拟
4、十字路口交通灯控制时序,用6个LED指示灯分别模拟A、B道的红、黄、绿指示灯,用四个七段LED显示器分别显示A、B道的通放行时间。系统原理框图如图(1):AT89C51单 片机AT89C51数据信号LED数码管段码振荡电路片选6盏LED图(1)系统原理框图2.2 系统电路原理图系统完整的电路原理图如图(2):图(2)系统电路原理图2.3 硬件各部分组成及功能(1)时钟电路部分本系统采用内部时钟产生方式:在和两端跨接陶瓷谐振器,与内部反相器构成稳定的自激振荡器采。晶振采用12MHz的振荡频率和两个30Pf瓷片电容C1、C2,两个电阻对频率有微调作用。其电路如图(3):图(3)晶体振荡电路(2)路
5、口指示灯部分采用红黄绿三种颜色的发光二极管共6个分为2组代表路口的交通灯,其中每一组控制一个路口,由单片机的P1口驱动,电路图如图(4):图(4)路口指示灯电路(3)显示部分采用四位一体共阴数码管,分别显示南北和东西灯的剩余时间.片选部分和数码段显示部分,分别接单片机管脚的P2口和P0口,具体的共阴数码管管脚分布位置见图(5):图(5)数码管显示电路(4)定时电路 采用定时器计数器嵌套的方式实现1秒精确定时,具体原理是:定时器T0实现50ms定时,并在定时时间到达时将P3.0口取反输出周期为100ms的方波信号;P3.0接计数器T1计数脉冲输入端P3.5,计数周期为10次。从而实现1秒定时,该
6、部分电路如图(6);图(6)定时电路2.4 系统的工作过程本系统的工作过程共包含6个状态,而且始终循环。这6个状态的内容如下图(7)所示。状态编号东西方向道路南北方向道路1绿灯亮,显示器倒计时20s红灯亮,显示器倒计时30s2绿灯闪,每隔1s闪一次,显示器倒计时6s红灯亮,显示器继续倒计时3黄灯亮,显示器倒计时4s红灯亮,显示器继续倒计时4红灯亮,显示器倒计时30s绿灯亮,显示器倒计时20s5红灯亮,显示器继续倒计时绿灯闪,每隔1s闪一次,显示器倒计时6s6红灯亮,显示器继续倒计时黄灯亮,显示器倒计时4s图(7)系统工作过程3. 系统软件设计3.1 软件功能及结构本程序主要实现定时和状态切换两
7、大功能。其中,定时功能由中断程序实现,而状态切换则在中断服务子程序中完成,主程序负责循环显示功能。程序流程图如下图(8)所示。开始初始AT89C51初始化显示器、定时计数器YN循环显示当前计时值1s定时是否到达?两通道计时值同时减1,同时送到显示器显示控制外部6盏LED灯调整两通道计时值图(8)系统程序流程图其中,1s定时器的程序采用定时计数器嵌套的方式编写,定时计数器0工作在定时方式1,定时初值为3C0BH;定时计数器1工作在计数方式2,初值为0F6H。程序结构如流程图(9): P3.0=1装入T1计数初值启动T1装入T0初值并启动T0N定时时间是否到?YP3.0取反N计数次数到了吗?1秒定
8、时到图(9)定时程序流程图2.5 软件源程序ORG 0000HAJMP MAINORG 000BHAJMP ITI0 ;计数器0中断ORG 001BHAJMP ITI1 ;定时器1中断LEDMAP:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0到9八段管显示码DELAY5: MOV R6,#01H;显示延时子程序DELAY6: MOV R7,#0AHDELAY7: DJNZ R7,DELAY7 DJNZ R6,DELAY6 RETDISPLAYLED: MOV R0,#60H MOV R1,#06H;共6个八段管 MOV R2,#20H;从左边开始显
9、示LOOP: MOV DPTR,#8002H MOV A,#00H MOVX DPTR ,A;关所有八段管 MOV A,R0 MOV DPTR,#8004H;段控制口 MOVX DPTR,A MOV DPTR,#8002H;位控制口 MOV A,R2 MOVX DPTR,A;显示一位八段管 ACALL DELAY5 MOV A,R2 RR A ;显示下一位 MOV R2,A INC R0 DJNZ R1,LOOP RETMAIN: MOV 60H,#00H ;显示清零 MOV 61H,#00H MOV 62H,#00H MOV 63H,#00H MOV 64H,#00H MOV 65H,#00
10、H SETB F0 ;设置标志位区分当前是东西红灯还是南北红灯 SETB EA SETB ET0 SETB ET1 ;开中断允许 MOV R3,#30 ;每次定时30s MOV R4,#30 ;南北通道定时值 MOV R5,#20 ;东西通道定时值DELAY: SETB P3.0 ;100ms方波输出端口,接P3.5 MOV TMOD,#61H;T1工作在定时方式1,T0工作在计数方式2 MOV TH1,#0F6H MOV TL1,#0F6H;计数值为10 SETB TR1 ;T1开始计数DELAY1: MOV TH0,#3CH MOV TL0,#0B0H;定时时间为50ms SETB TR0
11、 ;开始定时MLOOP: ACALL DISPLAYLED AJMP MLOOP ;循环显示八段管ITI0: CPL P3.0 ;每50ms将P3.0取反 MOV TH0,#3CH MOV TL0,#0B0H;重装定时初值 RETIITI1: DEC R3 DEC R4 DEC R5 ;两个通道计时均减1 MOV A,R4 MOV B,#10 DIV AB MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV 62H,A MOV A,B MOVC A,A+DPTR MOV 63H,A ;将南北通道当前计时值送出显示 MOV A,R5 MOV B,#10 DIV AB MOV D
12、PTR,#LEDMAP MOVC A,A+DPTR MOV 60H,A MOV A,B MOVC A,A+DPTR MOV 61H,A ;东西通道当前计时值送出显示 JB F0,DX1 ;F0=1,为南北红灯NB1: CJNE R3,#10,NB2 ;南北绿灯是否已经亮满20s,若不是则跳转 MOV R4,#06 ;南北绿灯闪烁6s,东西红灯亮 MOV P1,#00H CPL P1.5 SETB P1.0 RETINB2: CJNE R3,#10,NB3 ;判断南北当前定时值是否大于10sNB3: JC NB7 ;小于10s,跳转到NB7 MOV P1,#00H SETB P1.0 ;东西红灯
13、亮 SETB P1.5 ;南北绿灯未亮满20s,则继续亮 RETINB7: CJNE R3,#04,NB5 ;计时值是否到达4s,不是则转移 MOV R4,#04 ;计时值到达4秒,将4置入南北计时值 AJMP NB5 NB4: MOV P1,#00H SETB P1.0 ;东西红灯亮 SETB P1.4 ;南北黄灯亮 CJNE R3,#00H,NB6;计时30s是否结束,若不是则退出 CPL F0 ;30s计时完成,切换两通道标志位 MOV R3,#30 MOV R4,#30 MOV R5,#20 ;重置初值NB6: RETINB5: JC NB4 ;计时值小于4s,则跳转 CPL P1.5
14、 ;南北绿灯闪烁 SETB P1.0 ;东西红灯亮 RETIDX1: CJNE R3,#10,DX2 ;判断计时是否到达10s,若不是则跳转 MOV R5,#06 ;计时到达10s后,东西绿灯闪烁6s MOV P1,#00H CPL P1.2 SETB P1.3 RETIDX2: CJNE R3,#10,DX3DX3: JC DX7 MOV P1,#00H ;东西绿灯亮20s,南北红灯持续亮 SETB P1.2 SETB P1.3 RETIDX7: CJNE R3,#04,DX5 MOV R5,#04 AJMP DX5DX4: MOV P1,#00H ;东西黄灯亮4s,南北红灯继续亮 SETB
15、 P1.3 SETB P1.1 CJNE R3,#00H,DX6 CPL F0 MOV R3,#30 MOV R4,#20 MOV R5,#30 ;重置计时初值DX6: RETIDX5: JC DX4 CPL P1.2 SETB P1.3 RETI ; 东西绿灯闪,南北红灯亮4. 系统调试4.1 调试步骤连接好实验箱相关元件,检查用到的元件是否完好无损;输入完整程序,编译后全部执行,观察执行结果,比较其是否符合预期;显示结果与要求出现明显区别,选择跟踪单步执行,发现有问题的程序部分,进行修改;执行修改后的程序,实现所要求的交通灯控制功能。4.2 调试过程建立程序。新建一个源程序窗口,输入完整程
16、序,将文件名后缀改为.asm后保存,之后选好编译器,然后进行编译。编译过程中,如果出现错误会在信息窗口中显示出来,双击错误信息可以在源程序中定位所在行,纠正错误后,再次编译知道没有错误,并进行下一步执行。编译无误后执行源程序,第一次编译执行后发现译码管数字显示很淡,于是改变了译码管的显示时间,使其显示时间增长。同时,红绿灯显示不正确,在东西方向或者南北方向中的一个方向上显示红灯时,另外一个方向在黄灯显示时出现问题,另外在进入交通灯显示的第二个循环时译码管显示结果出现一段时间的错误乱码。我们修改了延时程序以及程序后半部分的判断程序,选择跟踪单步执行结果,观察每一步程序执行后相关寄存器内的存储值,
17、并与理论值进行比较,再对程序中对应的数值进行修改。中间我们发现程序在执行时在一个调用程序处进入了死循环,导致后边的所有程序都无法正常执行。后来我们在程序中加入了中断控制程序,使交通灯在进入第二个循环后正确显示,同时解决了译码管的乱码显示。设计源程序时,漏掉了一个功能,导致译码管只显示了一个路口的时间计数,而另外一个路口没有时间计数显示。我们在程序中加入相应显示程序,使得译码管可以对两个方向路口的红绿灯同时计数显示。修改完成后,先设置一个较短的时间进行循环,观察显示灯的颜色显示以及译码管时间计数是否正确,循环是否正常。之后慢慢增加设置时间至要求大小,显示灯以及译码管均正确显示,调试工作完成。5.
18、 课程设计的体会本次课程设计交通灯控制系统是以单片机AT89C51芯片为核心部件,6盏LED灯以及四个八段数码管作为外设,实现了通过89C51芯片设置来控制十字路口红、黄、绿灯点亮时间来进行交通控制。本次课程设计使我对单片机的工作原理有了更深刻的认识,例如对晶振电路、定时器电路的理解。我深刻的理解到单片机的价值在于灵活运用它的IO端口以及其千变万化的程序。本设计中我们用IO端口驱动数码管以及引接外部LED灯。掌握了许多在以前学习中混淆不清的知识点。整个实验过程,不仅锻炼了自己的动手能力,而且真正作到了理论联系实际的重要性,体会到了其中失败与成功的滋味,收益匪浅。同时在调试程序的过程中,虽然遇到
19、许多意想不到的错误,但是凭着坚持不懈的毅力以及巧妙的调试步骤最终都予以克服。当最终看到八段数码管正确计时的时候,我的心中非常激动!同时,我也认识到自己的知识不足,例如,刚开始设计程序时,没有正确使用中断导致数码管的显示异常,这令我们百思不得其解;最终,在同学和老师的指点下,程序改用中断方式编写,解决了这一问题。因此,深刻理解软硬件结合的含义,提高程序设计的水平,这将是我以后努力提高的方面。在此,也对在课设过程中帮助过我们的老师和同学表示深深的谢意。6参考文献【1】单片机原理与应用设计,张毅刚、彭喜元 编著,电子工业出版社。【2】单片机原理及应用实验指导书(第二版),自动化学院测试工程系,南京航空航天大学。-第 15 页目录1. 概 述21.1本次课程设计的内容与目的21.2交通灯简介21.3本交通灯系统的特点32. 系统硬件设计32.1 系统工作原理32.2系统电路原理图42.3硬件各部分组成及功能42.4系统的工作过程63. 系统软件设计73.1 软件功能及结构72.5软件源程序94. 系统调试144.1 调试步骤144.2 调试过程145. 课程设计的体会156参考文献16
限制150内