资源描述:
《单片机课程设计-交通灯控制系统设计大学论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、.<<单片机原理及应用>>课程设计报告题目:_交通灯控制系统的设计专业:_电气工程及其自动化_班级:____________学号:_________学生姓名:__________完成日期:2016年12月29目录摘要-1-1设计要求及方案选择-2-1.1设计要求-2-1.2方案选择-2-2理论分析与设计-3-2.1基本电路的分析及设计-3-2.2 LED显示电路的分析及设计-3-3 电路设计-4-3.1硬件电路的设计-4-3.2 软件的设计-4-4系统测试-8-4.1调试所用的基本仪器清单-8-4.2调试结果-8-4.3 测试结果分
2、析-11-5总结-12-参考文献-13--13-摘要交通灯是各个国家管理交通的重要工具,是城市交通最重要的组成部分,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本设计利用单片机系统、LED显示,制作简易十字路口交通灯,实现自动切换通行。经测试,系统达到通行定时切换的要求,具有自动切换的优点。关键词:AT89C51;交通灯;动态显示-13-1设计要求及方案选择1.1设计要求(1)完成交通灯的基本功能。要求交通信号灯控制逻辑如下:假设一个十字路口为东西南北走向。开始为四个路口的红灯全部亮之后,东西路口的绿灯亮,南北路口的
3、红灯亮,东西路口方向通车,延时一段时间后(50秒),东西路口的绿灯,闪烁若干次后(3秒),东西路口的绿灯熄灭,同时东西路口的黄灯亮,延时一段时间后(2秒),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车,延时一段时间后(30秒),南北路口的绿灯闪烁若干次后(3秒),南北路口的绿灯熄灭,同时南北路口的黄灯亮,延时一段时间后(2秒),再切换到东西路口的绿灯亮,南北路口的红灯亮,之后重复以上过程。若有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。以按键为中断申
4、请,表示有急救车通过。(2)设计电路(3)在KEIL中编辑、编译、调试程序,并在protuse中仿真。1.2方案选择选用单片机AT89C51作为主控芯片,并控制LED的显示与切换。本设计采用动态显示控制LED显示,并设有一个外部中断用以完成设计要求,应急模式下的急救车优先通过。-13-2理论分析与设计2.1基本电路的分析及设计图1为AT89C51的引脚图。图1AT89C51的引脚图单片机的最小系统须有复位、时钟信号。这些需从引脚RET、XTAL1和XTAL2接入。2.2 LED显示电路的分析及设计本设计采用动态显示方式,即直接从单片
5、机引脚引出LED显示。本设计为十字路口服务,仅控制车辆通行交通灯,这四组显示中有相面对的两组相同,即只需引出两组不同信号。本设计采用AT89C51的P1作为输出LED亮灭信号。-13-引脚P1.0P1.1P1.2P.13P1.4P1.5P1.6P1.7控制信号南北红南北黄南北绿东西红东西黄东西绿3 电路设计3.1硬件电路的设计图2所示为硬件设计框图图2硬件设计框图图3所示为该系统总电路图。-13-图3总系统电路图3.2 软件的设计图4所示为主流程图。图4主流程图-13-图5所示为中断服务流程图。图5中断服务流程图完整程序:ORG00
6、00HAJMPMAINORG0003HAJMPEXINT0ORG0080HMAIN:MOVSP,#0030HMOVP1,#11H//所有红灯亮ACALLDEL_500MSSETBIT0//脉冲触发MOVIE,#81H//等中断MOVR0,#40MOVP1,#41H//东西绿灯亮南北红灯亮LOOPO:ACALLDEL_500MSDJNZR0,LOOPO//20sLOOPM:MOVP1,#41H//东西绿灯亮南北红灯亮MOVR0,#60-13-LOOPA:ACALLDEL_500MSDJNZR0,LOOPA//30sMOVR0,#3LO
7、OPB:MOVP1,#01H//东西绿灯闪烁ACALLDEL_500MSMOVP1,#41HACALLDEL_500MSDJNZR0,LOOPB//3s0.5s一次变化三次闪烁MOVP1,#21H//东西黄灯亮MOVR0,#4LOOPE:ACALLDEL_500MSDJNZR0,LOOPE//2sMOVR0,#60LOOPC:MOVP1,#14H//东西红灯亮南北绿灯亮ACALLDEL_500MSDJNZR0,LOOPC//30sMOVR0,#3LOOPD:MOVP1,#10H//南北绿灯闪烁ACALLDEL_500MSMOVP1,
8、#14HACALLDEL_500MSDJNZR0,LOOPD//3s3次MOVP1,#12H//南北黄灯亮MOVR0,#4LOOPF:ACALLDEL_500MSDJNZR0,LOOPF//2sAJMPLOOPM//循环EXINT0: