单片机交通灯设计报告[1]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机控制的交通灯控制系统设计
所在学院:电气工程与自动化学院
目
1摘要
2 系统总体方案及硬件设计 (1)
设计要求 (1)
设计任务 (1)
总体设计 (1)
(1)
3 软件设计 (6)
总体流程图 (7)
子程序流程图 (8)
循环控制思路 (8)
4 Proteus软件仿真 (9)
(9)
(9)
南北强制通行仿真 (10)
东西强制通行仿真 (10)
5 课程设计体会 (11)
6 参考文献 (12)
7 附录 (13)
(19)
摘要
本设计是单片机控制的交通灯控制系统设计随着社会经济的发展,城市交通问题越来越引起人们的关注。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的电脑综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。
所以,如何采用合适的控制方法,最大限度利用好消耗巨资修建的城市高速道路,缓解主干道与匝道、城区同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
现在我们利用“自动控制”控制交通灯的方法。
将事先编制好的程序输入单片机,利用单片机的定时、查询、中断功能;能够根据十字路口两个方向上车辆动态状况,采用查询的方式,根据具体情况,自动给予时间通行,其中利用中断方式来处理特殊情况。
这样既方便驾驶员、路人,同时还可以紧急处理一些紧急实况。
同样具有红、黄、绿灯的显示功能,为驾驶员、路人“照明”。
2系统总体方案及硬件设计
设计要求:
1〕南北方向〔主干道〕车道和东西方向〔支干道〕车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒、支干道每次通行间为20秒;
2〕在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;
3〕黄灯亮时,要求每秒闪亮一次。
4〕东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示〔采用计时的方法〕。
5〕一道有车而另一道无车〔实验时用开关 K0 和 K1 控制〕,交通灯控制系统
能立即让有车道放行。
6〕有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。
设计目的:
1〕东西、南北车辆交替运行。
2〕绿灯转为红灯时,黄灯闪亮〔间隔1秒〕。
3〕能显示剩余时间。
4〕能对交通运行进行控制。
总体设计
2.4硬件设计
1〕单片机选型:AT89S52
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、 1000次擦写周期、全静态操作:0Hz~33Hz 、三级加密程序存储器、 32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
功能特性描述
At89s52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,
亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8 位微控制器 8K 字节在系统可编程 Flash AT89S52 P0 口:P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻
辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,
P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验
时,需要外部上拉电阻。
P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个
TTL 逻辑电平。
对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL〕。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入〔P1.0/T2〕和时器/计数器2
的触发输入〔P1.1/T2EX〕,具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0 T2〔定时器/计数器T2的外部计数输入〕,时钟输出
P1.1 T2EX〔定时器/计数器T2的捕捉/重载触发信号和方向控制〕
P1.5 MOSI〔在系统编程用〕
P1.6 MISO〔在系统编程用〕
P1.7 SCK〔在系统编程用〕
P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个
TTL 逻辑电平。
对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL〕。
在访问外部程序存储器或用16位地址读取外部数据存储器〔例如执行MOVX @DPTR〕
时,P2 口送出高八位地址。
在这种应用中,P2 口使用很强的内部上拉发送1。
在使用
8位地址〔如MOVX @RI〕访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个
TTL 逻辑电平。
对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入
口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流〔IIL〕。
P3口亦作为AT89S52特殊功能〔第二功能〕使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INTO(外中断0)
P3.3 INT1(外中断1)
P3.4 TO(定时/计数器0)
P3.5 T1(定时/计数器1)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程序存储器或数据存储器时,ALE〔地址锁存允许〕输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲〔PROG〕。
如有必要,可通过对特殊功能寄存器〔SFR〕区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE 激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许〔PSEN〕输出是外部程序存储器的读选通信号,当AT89C52由外部程序存储器取指令〔或数据〕时,每个机器周期两次PSEN 有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN 信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器〔地址为0000H-FFFFH〕,EA端必须保持低电平〔接地〕。
需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平〔接Vcc端〕,CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
引脚结构图如下所示:
2〕复位电路:上电+按钮
复位电路原理图
当8051的ALE及/PSEN两引脚输出高电平,RST引脚高电平到时,单片机复位。
RST/VPD端的高电平,假设直接由启动瞬间产生,则为启动复位,假设通过按动按钮产生高电平复位称手动复位。
图中,上电时,接通电源,电容器C相当于瞬间短路,+5V加到了RST/VPD端,该高电平使8051全机复位。
假设运行过程中,需要程序从头执行,只需按动按钮S,则直接把+5V加到了RST/VPD端,从而复位。
显然,该电路即可以上电复位,也可以手动复位,是常用复位电路之一。
3〕晶振电路
晶振电路原理图4〕键盘:独立键盘+中断
5〕数码管显示:LED7段码
6〕发光二极管显示
3软件设计
总体流程图
程序组成:
3.2 紧急中断子程序流程图
循环流程控制思路:
4 Proteus
软件仿真
正常运行仿真图紧急中断仿真图
南北强制通行仿真
东西强制通行仿真图
课程设计体会
一个月的单片机课程设计很快就结束了,在这一月当中,虽然开始有点困难,但是经过我们们分工合作,合理地进行设计安排,再加上老师的耐心指导,我们们终于顺利地完成了本次单片机课程设计,同时也学到了很多东西。
在本次课程设计中,我们通过动手实践操作,进一步学习和掌握了单片机原理的有关知识,特别是程序的编程方面,加深了对单片机原理及应用技术的认识,进一步稳固了对单片机知识的理解,掌握简单单片机应用系统的设计、制作、调试的方法。
在设计时根据课题要求,复习相关的知识,查询相关的资料。
根据实验条件,找到适合的方案,找到需要的元器件及工具,进行实验。
这次的单片机课程设计重点是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力,更在一周的时间了解了更多的有关单片机的知识,使知识更加丰富,使自己更加充实。
与此同时,我们也对团队分工合作有了进一步的认识,只有通过合理的分工合作,我们们才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。
最重要的是,这次课程设计也增加了我们对问题的研究和探讨,们以后的学习中会有更多的帮助。
单片机为我们的主要专业课之一,但要做好一个课程设计,就必须做到:在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改良是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我们受益终身。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,假设遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。
通过这次课程设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
在完成单片机课程设计后,我们们发现我们们还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。
但通过学习这一次实践,增强了我们们的动手能力,提高和稳固了单片机方面的知识,特别是软件方面。
从中增强了我们的团队合作精神,并让我们们认识到把理论应用到实践中去是多么重要。
参考文献
[1] 卢艳军.单片机原理及应用系统. 北京:机械工业出版社,2005.2
[2] 余发山,王福忠等.单片机原理及应用. 徐州:中国矿业大学出版社,2007.5
[3] 金显贺,王昌长,王忠东等.一种用于在线检测局部放电的数字滤波技术.清华大学学报(自然科学版),1993,33(4):62-67
[4
[5] 王明亮.关于中国学术期刊标准化数据库系统工程的进展.
[6] 张洪润.单片机原理及应用系统. 北京:机械工业出版社,2004.2
[7] 胡雪梅.单片机原理及应用. 北京:清华大学出版社,2009.5
[8] 穆兰.单片机原理及接口技术. 北京:机械工业出版社,2006.5
7附录
源程序代码
ORG 0000H
AJMP START
ORG 0003H
LJMP INT00
ORG 0013H
LJMP INT10 START: MOV SP,#60H SETB EX0
SETB EX1
SETB EA
;LCALL ST00 MAIN: LCALL ST10 LCALL ST20 LCALL ST30 LCALL ST40 LJMP MAIN
ST00: MOV A,#00
MOV P2,A
ST10:MOV R7,#30 ST11:MOV R0,#0DEH MOV P2,R0
LCALL DELAY1S RET
ST20:MOV R4,#05 ST21:MOV R0,#0DDH MOV P2,R0
MOV R5,#05
DJNZ R5,L22 MOV R0,#0DFH MOV P2,R0
MOV R5,#05
DJNZ R5,L23 DJNZ R4,ST21 RET
ST30:MOV R7,#20
MOV R0,#0F3H MOV P2,R0
LCALL DELAY1S RET
ST40:MOV R4,#05 ST41:MOV R0,#0EBH MOV P2,R0
MOV R5,#05
DJNZ R5,L42
MOV R0,#0FBH
MOV P2,R0
MOV R5,#05
DJNZ R5,L43
DJNZ R4,ST41
; JMP ST10
RET
DELAY1S: MOV R3,#50 ; R3存循环20ms的次数〔50次〕 CLR A
DIS0: MOV A,R7
LCALL X0
DJNZ R3,DIS0
DJNZ R7,DELAY1S
RET
DELAY01S: MOV R7,#05 ; R2存循环20ms的次数〔5次〕 CLR A
DIS1: MOV A,R4
LCALL X0
DJNZ R7,DIS1
RET
DELAY10MS: MOV R2,#20 ;键扫描10ms子程序
DEL1: MOV R6,#248
DJNZ R6,$
DJNZ R2,DEL1
MOV R6,#00
MOV R2,#00
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H
DB 40H,00H
X0: MOV R6,A
MOV R1,#40H R3,R4,R5, MOV A,R6
MOV B,#10
DIV AB
MOV @R1,A
INC R1
MOV @R1,B
MOV DPTR,#TAB
MOV A,@R1
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY10MS
DEC R1
MOV DPTR,#TAB
MOV A,@R1
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY10MS
RET
INT00: MOV 36H,R7
PUSH 36H
MOV 37H,R0
PUSH 37H
MOV 39H,R3
PUSH 39H
MOV R7,#10 ;紧急情况按钮,南北停止通行,均为红灯,持续10秒。
MOV P2,#0DBH
LCALL DELAY1S
POP 39H
POP 37H
POP 36H
MOV R7,36H
MOV P2,R0
MOV R3,39H
RETI
INT10: MOV 36H,R7 ;R7----XIANSHIMIAOSHU
PUSH 36H ;R0----p2 显示灯的状态
MOV 37H,R0 ;
PUSH 37H
MOV 38H,R6
PUSH 38H
MOV 39H,R3
PUSH 39H
;JNB P3.4,SV1
;JNB P3.5,SV2
; RET
SV1: MOV R7,#10 ;南北车流量多,切换成南北方向上运行 MOV R0,#0DEH
MOV P2,R0
LCALL DELAY1S
AJMP RETN
SV2: MOV R7,#10 ;东西车流量多,切换成东西方向上运行 MOV R0,#0F3H
MOV P2,R0
LCALL DELAY1S
RETN: POP 39H
MOV R3,39H POP 38H
MOV R6,38H POP 37H
MOV R0,37H POP 36H
MOV R7,36H RETI
7.2
系统原理图。