ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:271.67KB ,
资源ID:11099868      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-11099868.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机课程设计现代交通灯的设计.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机课程设计现代交通灯的设计.docx

1、单片机课程设计现代交通灯的设计 电气信息学院单片机与控制技术课程设计报告课题名称 现代交通灯的设计 专业班级 * 学 号 * 学生姓名 * 指导教师 * 评 分 摘 要城市道口交通灯控制系统模型采用单片机作为主控制器,用于十字路口的车辆及行人的交通管理,每个方向具有左拐、右拐、直行及行人4种通行指示灯,计时牌显示路口通行转换剩余时间,在出现紧急情况时可以由交警手动实现全路口车辆禁行而行人通行状态。另外,在特种车辆如119、120通过路口时,系统可自动转换为特种车辆放行,其他车辆禁行,15s后系统自动恢复正常管理。其他还有盲人提示音、120s与60s通行管理转换功能。采用标准的AT89C52单片

2、机作为控制器;通行倒计时显示采用3位LED数码管;右拐、左拐、直行及行人4种通行状态指示灯采用双色高亮发光二极管;LED显示采用动态扫描,以节省端口数。特种车辆通行采用实时中断完成,识别方法采用红外线发射及接受方案。整套电路模块由控制系统模块、通行灯输出控制显示模块、时间显示模块和自动特种车辆控制模块等组成。道口交通控制系统控制程序主要分为以下几个模块:初始化程序、主程序、定时中断程序和特种车实时响应程序等。设计时按红绿交通灯控制程序和特种车辆经过中断程序两大部分。本系统以AT89C51单片机为核心,采用汇编语言编程,设计的交通灯可用于十字路口的车辆及行人的交通管理,设计中应用了两种倒计时显示

3、方式,120s倒计时适用于车流量较大的大城市,60s倒计时可用于中小型城市。关键词:单片机; 显示; 汇编语言; 交通管理; LED数码管1 设计任务 1.1要求:(1)设计一款带左转、直行,右转三种通行绿灯,参见实物效果图; (2)带紧急按钮功能,当紧急按钮按下时,所有方向均亮起红灯; (3)夜间运行模式按钮,按下时,所有方向黄灯闪烁; (4*)可更在线修改红绿灯等待间隔时间 (5*)实现显示倒计时功能 (6#)其他功能(创新部分) 1.2实际功能设计:(1) 每个方向具有左拐、右拐、直行及行人4种通行指示。(2) 计时牌显示路口通行转换剩余时间。(3)在出现紧急情况时可以由交警手动实现全路

4、口车辆禁行而行人通行状态。(4)在特种车辆如119、120通过路口时,系统可自动转换为特种车辆放行,其他车辆禁行,15s后系统自动恢复正常管理。(5)盲人提示音、120s与60s通行管理转换功能。2设计方案2.1设计方案采用标准的AT89C52单片机作为控制器;通行倒计时显示采用3位LED数码管;右拐、左拐、直行及行人4种通行状态指示灯采用双色高亮发光二极管;LED显示采用动态扫描,以节省端口数。特种车辆通行采用实时中断完成,识别方法采用红外线发射及接受方案。按以上系统构架设计,单片机端口资源刚好满足要求。整个电路组成框图如图2.1所示。上电复位南北通行灯(2组) P1 P2AT89C52 P

5、0INT1 P3 东西通行灯(2组)串口通信 3位LED显示器(4组) 119、120车辆监测 列扫描驱动自动/手动键盘图2.1 采用LED动态扫描的交通灯控制系统3 系统硬件设计3.1主控制系统电路整套电路模块由控制系统模块、通行灯输出控制显示模块、时间显示模块和自动特种车辆控制模块等组成。主控制器采用AT89C52,是ATMEL公司生产的一款性能稳定的8位单片机,AT89C52具有1个8KB的Flash程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位定时/计数器及1个串行口和6个二级中断结构。单片机的P1口及P2口分别用于控制南北及东西的通行灯,P0口及P3

6、.0P3.2口用于4组3位LED计时器的控制,特种车辆通过时使用外中断1口(P3.3),手动自动转换采用P3.7口按键。主控系统电路图如图3.1所示。 图3.1 主控系统电路3.2通行灯输出控制电路道口交通灯指示采用高亮度红绿双色发光二极管,左拐、右拐、直行及行人各一个。当发光电流为6mA时,按公式R=(5-1.8)/0.006计算,限流电阻应为510欧姆。由于南北通行时双向指示牌相同,因此每个端口应具有12mA的吸收电流能力。另外,人行道口按4个灯算须24mA的吸收电流。这样在单片机的输出口需接驱动电路74HC244,以保护单片机的输出端口。道口指示灯电路图如图3.2所示。 图3.2 单片机

7、复位电路3.3 时间显示模块电路 道口剩余时间采用高亮红色7段LED发光数码管显示,采用共阳数码管,如用单片机吸收电流驱动,列扫描驱动使用三极管,按每段6mA电流算,全显示字形“8”时,每个数码管需6mA*8=48mA。由于单片机每个段码输出口需吸收24mA电流,因此在电路设计中也使用了驱动集成块74HC244。时间显示模块电路如图3.3所示。图3.4 时间显示模块电路3.4 特种车辆自动通行控制模块 自动道口灯在特种车辆到来时能自动关闭所有绿灯,让特种车辆通过。设计中采用红外线发生器作为特种车的发信器,使用实时中断响应来响应特种车辆的通行要求。红外线接收器一般采用电视机用一体化红外线接收器,

8、具有很高的灵敏度和较强的抗干扰能力。3.5 盲人提示音电路道口控制系统设计中,方便盲人过人行道的提示音电路,声音控制电路与人行道通行控制绿灯相同步,当绿灯亮时响一下,在行人结束通行前,绿灯闪烁10s时会间隔响5次(每次1s)。盲人提示音电路如图3.5所示。图3.5 数码管显示电路3.6 电源电路及时钟电路 整个系统采用的电源电压只需+5V电压,故采用不可调的3端稳压器件,用常用的LM7805就可以满足系统电源的要求。LM7805三端集成稳压电源内部由基准电压回路、恒流源、过流保护、过压保护和短路保护等8部分组成,具有低功耗、高效率、纹波系数小、输出电压稳定等优点。图3.6 电源电路及时钟电路

9、4 系统主要程序设计道口交通控制系统控制程序主要分为以下几个模块:初始化程序、主程序、定时中断程序和特种车实时响应程序等。4.1 初始化程序 初始化程序主要完成内存规划,定时器的工作模式、中断方式等的设定。由于子程序调用较多,因此初始化时堆栈指针设于80H处。定时器T0、T1设为16位定时器模式,定时时间为50ms,T0为秒计时用,T1为通行结束闪烁用。4.2 主程序流程主程序主要负责总体程序管理功能,实现人机交互设定。由于采用动态扫描方式显示时间,因此主程序大部分时间要调用扫描显示程序。主程序流程图如图4.2所示。 开始初始化显示程序 N P3.7=0? Y键功能程序 图4.2主程序流程图4

10、.3外中断1中断服务程序 当特种车辆经过时,车中发射红外线信号,其信号被道口控制板上的接收器接收,并输出一个低电平触发外中断1。中断处理程序流程图如图4.3所示。送全红灯,数据缓存 外中断程序保护现场红灯显示 15s倒计时结束? N关外中断1 Y关定时器T1,开外中断 开定时器T1现场恢复,中断返回图4.3 外中断1中断服务程序流程图4.4定时器中断服务程序定时器中断服务程序主要用于行车及行人的通行指示,通行规则如下:(1) 车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1min,各路右拐比直行滞后10s开放。(2) 车辆南北向左拐、各路右拐,形容人禁行。通行时间为1min。(3)

11、车辆东西向直行、各路右拐,东西向行人通行。东西向通行时间为1min,各路右拐比直行滞后10s开放。(4) 车辆东西向左拐、各路右拐,行人禁行。通行时间为1min。交通灯的四种通行规则,是以控制红绿灯端口控制码的方式实现的。它的原理是,将按不同规则通行时的各路口的红绿灯亮灭情况转换为单片机端口控制码。其指示灯功能通过T0定时中断服务程序实现。定时器T0溢出中断周期设为50ms,中断累计20次(即1s)时对120s倒计时单元减1操作。设计中将四种通行规则分成不同的亮灯方式,通过查询秒倒计时单元的数据,实现不同的时间段给控制端口送不同的控制数据码。控制码分为5个时间段:120110s、11070s、

12、7060s、6010s、100s。交通管理定时功能程序流程图如图4.4所示。 T0中断程序现场保护关中断T0T0初值重装 相应的处理程序 N 判断 Y南北/东西标志位取反中断返回图4.4 定时器中断处理流程图5仿真与性能分析1、系统仿真过程 图5.1 仿真图2 仿真结果与分析 调试时,按红绿交通灯控制程序和特种车辆经过中断程序两大部分电路进行调试,并且南北方向、东西方向的指示灯同时调试。6心得体会 单片机这门课程是在大三下半学期学的,等到了大四开始单片机课程设计,我感觉有些内容有些陌生,周围的同学也有这种感觉。刚开始选课程设计题目时,我原本以为应该不麻烦的,因为我选择的是交通灯的控制,感觉大体

13、是运用定时器及中断的原理来做。这类问题以前在单片机实验中做过类似的实验,实时操作的交通灯控制我也曾用PLC做过的。所以大体感觉,交通灯的问题,用编程来解决,原理应该是很简单的。拿到题目后,我看了看后,感觉思路清晰了,用单片机中定时器和中断的知识即可。所以,我决定先完成程序设计部分,用汇编语言编程。在编程过程中,我感觉以前学过的一些单片机编程的某些语法不熟悉,所以还花了一些时间复习以前的内容。本次课程设计不必以前的实验操作,因为这次交通灯的控制要求实现的功能比以前复杂,不仅要有各个方向通行灯的定时指示,还需要有扩展功能,我将夜间模式换成了特种车运行模式,另外还添加了盲人提示部分。整个程序中,子程

14、序的调用比较频繁,所以编程需要较强的逻辑性。编完程序后,我在Protues中画系统原理图。以前曾用CAD画过图,但是感觉Protues和CAD二者还是有一定区别的。有的原件不怎么好找,比如74HC244这个芯片,先前怎么找都找不到像先前见过的那种类型的,后来才发现,原来一个74HC244芯片其实是元件库中的两个分开的子芯片的组合。画图、调试感觉有点麻烦,也费了许多时间,但是感觉整个过程,收获还是不少的。参考文献1 黄惟公,邓成中,王燕.单片机原理与应用技术.西安:西安电子科技大学出版社,2007.2 朱清慧.Protueus显示控制系统设计与实例.北京: 清华大学大学出版社,2011.3秦时宏

15、,徐春辉. MCS-51单片机原理及应用. 武汉:华中科技大学出版社.2010.4 张迎新等编著. 单片机原理及应用.北京:电子工业出版社,2009.15 张迎新编著.单片机初级教程.北京:航空航天大学出版社,2007.86 李勋等编著.单片机实用教程.北京:航空航天大学出版社,2000.67 余永权等编著.单片机在控制系统的应用.北京:电子工业出版社,2003.108 蔡伟智:LED道路交通灯的研制,液晶与显示,第20卷第五期9 张大明:单片机控制实训,机械工业出版社,2007附录1 系统原理图附录2程序清单;*; 交通灯汇编程序 ;*;TIME EQU 50H ;秒计数用TIMESFR E

16、QU 51H ;临时寄存器CONR5 EQU 52H ;T1秒定时计数器用TIMED0 EQU 55H ;单向最大定时时间,直行开始,人行开始(120S)TIMED1 EQU 56H ;各路右拐开始时间(110S)TIMED2 EQU 57H ;前行结束提醒(70S)TIMED3 EQU 58H ;前行结束,人行结束,左拐开始(60S)TIMED4 EQU 58H ;左拐结束提醒TIMED5 EQU 5AH ;左拐结束TIMED6 EQU 5BH ;TIMED7 EQU 5CH ;SN EQU P1 ;南北口EN EQU P2 ;东西口SCAN EQU P3 ;扫描口LEDOUT EQU P0

17、 ;段码口SNEWFLAG BIT 09H ;东西口与南北口转换标志;按键在扫描口的最高位,按一下,全红灯,再按一下,恢复原状态;定时器T0、T1溢出周期为50ms,T0为秒计数用;*中断入口程序* ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断入口地址 LJMP INTT0 ; ORG 0013H ;外中断1中断入口 LJMP INT11 ; ORG 001B ;定时器T1中断入口地址 LJMP INTT1 ; ORG 0023H ;串行中断

18、入口地址 RETI ; ; ;*主程序* START: MOV SP,#80H MOV R0,#00H ;清零00H8EH内存单元 MOV R7,#8FHCLEARDISP: MOV R0,#00H INC R0 DJNZ R7,CLEARDISP MOV TIMED0,#78H ;单向最大定时时间,直行开始,人行开始(120S) MOV TIMED1,#6EH ;各路右拐开始时间(110S) MOV TIMED2,#46H ;前行结束提醒(70S) MOV TIMED3,#3CH ;前行结束,人行结束,左拐开始(60S) MOV TIMED4,#0AH ;左拐结束提醒 CLR SNEWFLA

19、G ;南北先通行标志位 MOV TMOD,#11H ;设置T0、T1为16位定时器 MOV TL0,#0B0H ;50ms定时器初值(T0计时用) MOV TH0,#3CH ;50ms定时器初值 MOV TL1,#0B0H ;50ms定时器初值(T1闪烁定时用) MOV TH1,#3CH ;50ms定时器初值 JB SCAN.7,SSST ;120s管理;以下为60s管理 LCALL DL1MS LCALL DL1MS LCALL DL1MS JB SCAN.7,SSST ;干扰 MOV TIMED0,#60 ;单向最大定时时间,从直行开始,人行开始(60S) MOV TIMED1,#55 ;

20、各路右拐开始时间(55S) MOV TIMED2,#35 ;前行结束提醒(35S) MOV TIMED3,#30 ;前行结束,人行结束,左拐开始(30S) MOV TIMED4,#05 ;左拐结束提醒SSWAIT: JNB SCAN.7,SSWAIT LCALL DL1MS LCALL DL1MS LCALL DL1MS JNB SCAN.7,SSWAITSSST: MOV TIME,TIMED0 ;120S LCALL TUNBCD MOV SN,#66H MOV EW,#55H SETB EA ;总中断开放 SETB PX1 SETB EX1 SETB ET0 ;允许T0中断 SETB T

21、R0 ;允许T0定时器 MOV R4,#14H ; 1s定时用初值(50ms*20) MOV CONR5,#20START1: LCALL DISPLAY ; 调用显示子程序 JNB SCAN.7,KEYFUN ;手动状态 SJMP START1 ; P1.0为1时跳回START1KEYFUN: LCALL DISPLAY LCALL DISPLAY JB SCAN.7,START1 CLR ET0 CLR TR0 MOV SN,#056H ; 全车道停,行人通 NIV EW,#056H MOV TIME,#00H ;时间显示0 LCALL TUNBCDKEYWAIT:LCALL DISPLA

22、Y JNB SCAN.7,KEYWAITKEYY: LCALL DISPLAY ;等待按键按下 JB SCAN.7,KEYY LCALL DISPLAY JB SCAN.7,KEYYKEYWAIT1:LCALL DISPLAY JNB SCAN.7,KEYWAIT1 MOV TIME,TIMED0 ;重新开始计时初值 LCALL TUNBCD CLR SNEWFLAG ;南北先通行标志 SETB TR0 SETB ET0 AJMP START1;*1S计时程序*INTT0: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV A,#0B7H ;中断响应时间同步修正 AD

23、D A,TL0 ;低8位初值修正 MOV TL0,A ;重装初值,修正低8位 MOV A,#3CH ;高8位初值修正 ADDC A,TH0 MOV TH0,A ;重装初值,修正高8位 SETB TR0 DJNZ R4,OUTT00 ;20次中断未到,中断退出 MOV R4,#14H ; 20次中断到(1s),重赋初值 JB SNEWFLAG,INT22 DEC TIME MOV A,TIME CJNE A,TIMED1,LOOP11 ;判断是否小于110sLOOP11: JC LOOP22 ;120110 MOV SN,#66H MOV EW,#55H LJMP OUTT0 ;120110LO

24、OP22: MOV A,TIME CJNE A,TIMED2,LOOP33 ;判断是否小于70sLOOP33: JC LOOP44 ;11070 MOV SN,#6AH MOV EW,#59H LJMP OUTT0 ;11070LOOP44: MOV A,TIME CJNE A,TIMED3,LOOP55 ;判断是否小于60sLOOP55: JC LOOP66 ;7060 MOV 20H,SN CPL 04H CPL 00H MOV SN,20H MOV EW,#59 LJMP OUTT0 ;7060LOOP66: MOV A,TIME CJNE A,TIMED4,LOOP77 ;判断是否小于

25、10sLOOP77: JC LOOP88 ;6010 MOV SN,#99H MOV EW,#59H LJMP OUTT0 ;6010LOOP88: MOV A,TIME JZ OUT88 MOV 20H,SN CPL 06H CPL 02H MOV SN,20H MOV 20H,EW CPL 02H MOV EW,20H LJMP OUTT0 ;7060OUT88: MOV TIME,TIMED0 ;120s初值 CPL SNEWFLAGOUTT0: LCALL TUNBCDOUTT00: POP PSW POP ACC SETB ET0 RETIINT22: DEC TIME MOV A,

26、TIME CJNE A,TIMED1,LOOP111 ;判断是否小于110sLOPP111: JC LOOP221 ;120110 MOV EW,#66H MOV SN,#55H LJMP OUTT01 ;120110LOOP221: MOV A,TIME CJNE A,TIMED2,LOOP331 ;判断是否小于70sLOOP331: JC LOOP441 ;11070 MOV EW,6AH MOV SN,#59H LJMP OUTT01 ;11070LOOP441: MOV A,TIME CJNE A,TIMED3,LOOP551 ;判断是否小于60sLOOP551: JC LOOP661

27、 ;7060 MOV 20H,EW CPL 04H CPL 00H MOV EW,20H MOV SN,#59H LJMP OUTT01 ;7060LOOP661: MOV A,TIME CJNE A,TIMED4,LOOP771 ;判断是否小于10sLOOP771: JC LOOP881 ;6010 MOV EW,#99H MOV SN,#59H LJMP OUTT01 ;6010LOOP881: MOV A,TIME JZ OUT881 MOV 20H,EW CPL 06H CPL 02H MOV EW,20H MOV 20H,SN CPL 02H MOV SN,20H LJMP OUTT

28、01 ;7060OUT881: MOV TIME,TIMED0 ;120S初值 CPL SNEWFLAGOUTT01: LCALL TUNBCD POP PSW POP ACC SETB ET0 RETI;*显示程序*;显示数据在70H72H单元内,用3位LED共阳数码管显示,LEDOUT口输出段码数据,;SCAN口作扫描控制,每个LED数码管亮1ms再逐位循环DISPLAY: MOV R1,#70H ;指向显示数据首地址 MOV R5,#0FEH ;扫描控制字初值PLAY: MOV A,R5 ; 扫描字放入A MOV SCAN,A ;从SCAN口输出 MOV A,R1 ; 取显示数据到A MOV DPTR,#TAB ; 取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码 MOV LEDOU

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2