《交通灯MicrosoftWord文档.doc》由会员分享,可在线阅读,更多相关《交通灯MicrosoftWord文档.doc(12页珍藏版)》请在三一办公上搜索。
1、一、 设计要求2二、 设计方案2三、 芯片简介2四、电原理图3五、设计流程图5六、汇编语言程序6七、心得体会11八、参考文献11一、任务要求:设计并制作一个城市交道口交通灯控制糸统满足:1、时间方向控制要求白天东西绿灯亮,黄灯闪亮3次红灯亮南北红灯亮绿灯亮,黄灯闪亮3次晚上 东西黄灯闪亮南北黄灯闪亮2、每个方向采用两位共阴极LED,同时显示红绿灯亮时间(采用倒计时);3、黄灯亮周期为两秒(亮1秒,灭1秒)4、通过键盘预置红绿灯亮的时间099秒(采用增量键盘)5显示驱动器采用MC14543或CD14513;二、 设计方案在南北东西四个方向各有红、绿、黄三盏交通信号灯,初始倒记时间初值分别为30S
2、,25S和5S,;将、和、路口(其中1、3是南北方向,2、4是东西方向)的通行或禁止通行的时间以倒计数的方式显示在位LED数码管显示器上。其中从左到右方向上的第一二块数码管显示的是黄灯的倒记时时间变化,第三四块数码管显示的是红灯的倒记时时间变化,第五六块数码管显示的是绿灯的倒记时时间变化。三种信号灯的显示顺序是 红绿黄,其中红灯由30秒开始倒记时,当倒记时到5秒时,另一方向的绿灯变为黄灯显示,绿灯的倒计时是和红灯同步的,绿灯的保持时间是25秒,当绿灯LED变化数为00时,代替绿灯显示的黄灯和另一方向剩下的5秒红灯同步倒计时,当红灯和黄灯的LED管显示数都为00时,两个方向的红绿信号灯显示互换,
3、红绿黄三个信号灯的LED显示值被重新置值。三、 芯片简介ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式。它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器。AT89C52引脚图 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央 处理器和Flash存储单元,功能强大
4、的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。主要功能特性: 兼容MCS51指令系统 8k可反复擦写(1000次)Flash ROM 32个双向I/O口 256x8bit内
5、部RAM 3个16位可编程定时/计数器中断 时钟频率0-24MHz 2个串行中断 可编程UART串行通道 2 个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能四、电原理图图五、设计流程图1、主程序框图 开始程序初始化显示提示信息写控制字,使PB口为输入,工作在方式0写控制字,三个端口均工作在方式0,且为输出端口1,3路口绿灯亮,同时2,4路口红灯亮,FLAG=01开中断延时30秒。 N返回 有按键吗? 如果是的话,则进行红变绿灯的过程如果是的话,则进行绿灯变黄灯的过程如果是的话,则进行黄灯变红灯的过程保户现场判断flag=01Flag=02
6、判断flag=02Flag=03判断flag=03Flag=01发中断结束命令恢复现场中断返回调用LED动态显示程序六、 汇编语言程序;程序实现功能;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。;工作寄存器及存储单元分配;1.工作寄存器;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器;2.片内存储单元;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元.3.标志位;00H:南北通行标志位
7、; 01H:东西通行标志位; ;-SNF EQU 00H ;南北通行标志位EWF EQU 01H ;东西通行标志位ORG 0000HLJMP MAIN ;上电转主程序ORG 000BH ;定时中断入口LJMP DSZD ORG 0003H ;紧急中断入口LJMP URZDORG 0030H MAIN: LCALL INIT ;调用初始化子程序LOOP: LCALL DIS ;循环执行显示子程序 AJMP LOOP;/初始化程序INIT: SETB SNF SETB EWF SETB URF MOV R2,#20 ;定时器中断20次为1s MOV TMOD,#01H ;初始化定时器 MOV TL
8、0,#0B0H MOV TH0,#3CH SETB EA ;开定时中断与紧急中断 SETB ET0 SETB TR0 SETB EX0 SETB IT0 ;设置中断程控方式 MOV DPTR,#TAB ;数值首地址放入DPTR中 MOV 40H,#40 ;东南西北通行时间设置 MOV 41H,#40 MOV 30H,#40 ;通行时间初始化 MOV 31H,#60 MOV P0,#4CH ;初始化时南北通行并把交通灯状态分别放在32H和33H中 MOV 32H,#4CH MOV P2,#15H MOV 33H,#15H RET;/显示子程序DIS: MOV P3,#0DFH ;选中南北方向的十
9、位数码管 MOV A,30H ;把显示数据送人数码管显示 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P1,A ; LCALL D1MS MOV P3,#0EFH ;选中南北方向的个位数码管 MOV A,B ;送入数码管显示 MOVC A,A+DPTR MOV P1,A LCALL D1MS MOV P3,#7FH ;选中第东西方向的十位数码管 MOV A,31H ;送入数码管显示 MOV B,#10 DIV AB MOVC A,A+DPTR MOV P1,A LCALL D1MS MOV P3,#0BFH ;选中第东西方向的个位数码管 MOV A,B MOVC A,
10、A+DPTR MOV P1,A LCALL D1MS SETB P3.0 SETB P3.1 JNB P3.0,DIS_S ;查询是否第一个按键按下 JNB P3.1,DIS_E ;查询是否第二个按键按下 AJMP DIS_R ;没有键按下则返回DIS_S:LCALL D5MS ;按键去抖 JNB P3.0,DIS_SN AJMP DIS_R DIS_SN:MOV 40H,#50 ;对通行时间从新分配,南北通行时间加长 MOV 41H,#30 AJMP DIS_RDIS_E:LCALL D5MS ;按键去抖 JNB P3.1,DIS_EW AJMP DIS_RDIS_EW:MOV 40H,#3
11、0 ;东西通行时间加长 MOV 41H,#50DIS_R:RET ;/定时中断处理程序DS_C: LJMP DS_R ;接力跳转DSZD: PUSH ACC ;保护现场 PUSH PSW CLR TR0 ;关定时器及中断标志位并重新赋值 CLR TF0 MOV TL0,#0B0H MOV TH0,#3CH DJNZ R2,DS_C ;判断1m时间是否到达 MOV R2,#20 ;到达重新赋值 DEC 30H ;南北方向通行时间减一 MOV A,30H ;把减一后的时间送入显示存储单元;南北通行到达最后4秒时黄灯闪烁DS_10:CJNE A,#4,DS_11 ;如果通行时间剩余4秒 JNB SN
12、F,DS_11 ;判断是否是南北通行 MOV P0,#8AH MOV 32H, #8AH ;把交通灯状态存入存储单元(后面类似)DS_11:CJNE A,#3,DS_12 ;不是剩余3秒,返回 JNB SNF,DS_12 ;不是南北通行时间,返回 MOV P0,#88H MOV 32H, #88HDS_12:CJNE A,#2,DS_13 JNB SNF,DS_13 MOV P0,#8AH MOV 32H, #8AH DS_13:CJNE A,#1,DS_14 JNB SNF,DS_14 MOV P0,#88H MOV 32H, #88H;-DS_14:JNZ DS_NE ;通行时间没有结束转
13、向改变东西方向的数码管 CPL SNF ;如果通行时间结束则对标志位取反 JNB SNF,DS_1 ;判断是否南北通行 MOV 30H,40H ;是,点亮相应的交通灯 MOV P0,#4CH MOV 32H,#4CH ;存储交通灯状态 MOV P2,#15H MOV 33H, #15H ;存储交通灯状态DS_NE:DEC 31H ;东西方向通行时间减一 MOV A,31H ;把通行剩余时间送入显示存储单元;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似 略)DS_20:CJNE A,#4,DS_21 JB EWF,DS_21 MOV P0,#51H MOV 32H, #51HDS_
14、21:CJNE A,#3,DS_22 JB EWF,DS_22 MOV P0,#41H MOV 32H, #41HDS_22:CJNE A,#2,DS_23 JB EWF,DS_23 MOV P0,#51H MOV 32H, #51HDS_23:CJNE A,#1,DS_24 JB EWF,DS_24 MOV P0,#41H MOV 32H, #41H;-DS_24:JNZ DS_R ;东西方向时间没有结束,返回 CPL EWF ;对通行状态取反 JNB EWF,DS_2 ;东西方向通行时间到来,跳转 MOV 31H,#80 ;东西方向通行结束,重新显示时间 MOV P0,#89H ;点亮相应
15、的交通灯 MOV 32H, #89H MOV P2,#29H MOV 33H, #29H AJMP DS_R DS_1: MOV 30H,#80 ;南北通行时间结束,重新对显示存储单元赋值 MOV P0,#89H ;执行转弯状态1 MOV 32H, #89H MOV P2,#26H MOV 33H, #26H AJMP DS_NE DS_2: MOV 31H,41H ;东西方向开始通行,赋值予显示存储单元 MOV P0,#61H ;点亮相应的交通灯 MOV 32H, #61H MOV P2,#15H MOV 33H, #15HDS_R: SETB TR0 POP PSW ;恢复现场 POP A
16、CC RETI;/查表指令TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH DB 7DH, 07H, 7FH, 6FH;/延时5ms与1msD5MS: MOV R7,#5D1MS: MOV R7,#10 MOV R6,#50 L1: DJNZ R6,$ DJNZ R7,L1 RET END七、心得体会经过两三个星期的努力,翻阅大量的资料和编程调试,最终得到了自我比较满意的运行结果,可能程序和仿真还有些许瑕疵,但是得到了所要求的功能以及良好的显示效果,所以,实验是比较成功的。这次的大工作量和编程的经历给了我很多的启示,有编程失败的沮丧和调试成功一霎那的欣喜若狂,在这次汗水
17、和欣喜的夹杂背后,是我对单片机的另一个认识,编程是很重要的一方面。对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。接下来就是程序的设计了,虽然感觉交通灯程序没什么难的,就是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我们的不断努力,还是写出来正确的代码。最后对于LED管和发光管的跳变主要是靠程序当中的倒计时中断程序,以及程序中定义的EN程序来实现的,在实验中出现的问题有LED管计时太慢或
18、太快,或者当计数到某一值时就不再到计数,闪烁的厉害以至看不清楚,红绿黄等的闪灭顺序出现问题,本应是红灯灭后闪绿灯,但出现黄灯,经调试最终发现程序中的循环出现问题。通过本次课程设计让我了解了最基本的交通红绿灯的执行顺序与过程。本次实践让我了解到各芯片的大致编程顺序一切开头最难,当凿开了个点,就慢慢能融会贯通了,因此得出的结论是只有通过课程设计才能让我真正了解到接口技术。八、参考文献1 徐维祥.单片微型机原理及应用 大连理工大学出版社,2006.122 胡汉才.单片机原理与接口技术M.北京: 清华大学大学出版社,2004.1-505.3 闫胜利.Altium Designer 6.中文版使用教程电子工业出版社2007.64MCS-51系列单片机系统及其应用(第二版) 蔡美琴,张为民等主编,2009.15.单片机原理及应用实验指导书 浙江海洋学院机电工程学院,2008.126.数字电子技术基础 清华大学电子学教研室编,阎石主编,2008.512