还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
1、
2、
3、
五、设计流程图···········································5
七、
一、任务要求设计并制作一个城市交道__通灯控制糸统满足
1、时间方向控制要求白天东西绿灯亮,黄灯闪亮3次红灯亮南北红灯亮绿灯亮,黄灯闪亮3次晚上东西黄灯闪亮南北黄灯闪亮
2、每个方向采用两位共阴极LED,同时显示红绿灯亮时间(采用倒计时);
3、黄灯亮周期为两秒(亮1秒,灭1秒)
4、通过键盘预置红绿灯亮的时间0—99秒(采用增量键盘)5显示驱动器采用MC14543或CD14513;
2、设计方案在南北东西四个方向各有红、绿、黄三盏交通__灯,初始倒记时间初值分别为30S,25S和5S,;将1、3和2、4路口(其中
1、3是南北方向,
2、4是东西方向)的通行或禁止通行的时间以倒计数的方式显示在6位LED数码管显示器上其中从左到右方向上的第一二块数码管显示的是黄灯的倒记时时间变化,第三四块数码管显示的是红灯的倒记时时间变化,第五六块数码管显示的是绿灯的倒记时时间变化三种__灯的显示顺序是红绿黄,其中红灯由30秒开始倒记时,当倒记时到5秒时,另一方向的绿灯变为黄灯显示,绿灯的倒计时是和红灯同步的,绿灯的保持时间是25秒,当绿灯LED变化数为00时,代替绿灯显示的黄灯和另一方向剩下的5秒红灯同步倒计时,当红灯和黄灯的LED管显示数都为00时,两个方向的红绿__灯显示互换,红绿黄三个__灯的LED显示值被重新置值
3、芯片简介ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式它与8051系列单片机全兼容,但其内部带有4KB的FLASHROM,设计时无需外接程序存储器AT89C52引脚图 AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位__处理器和Flash存储单元,功能强大的AT89C52单片机可____许多较复杂系统控制应用场合 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低__成本 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求 主要功能特性 ·兼容MCS51指令系统 ·8k可反复擦写1000次)FlashROM ·32个双向I/O口 ·256x8bit内部RAM ·3个16位可编程定时/计数器中断 ·时钟频率0-24MHz ·2个串行中断 ·可编程UART串行通道 ·2个外部中断源 ·共6个中断源 ·2个读写中断口线 ·3级加密位 ·低功耗空闲和掉电模式 ·软件设置睡眠和唤醒功能
四、电原理图图
五、设计流程图
1、主程序框图开始程序初始化显示提示信息写控制字,使PB口为输入,工作在方式0写控制字,三个端口均工作在方式0,且为输出端口13路口绿灯亮同时24路口红灯亮FLAG=01开中断延时30秒N有按键吗?
6、汇编语言程序;程序实现功能;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间;工作寄存器及存储单元分配;
1.工作寄存器;R2设置为定时器定时中断次数R
6、R7用于延时程序中的寄存器;
2.片内存储单元;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元.
3.标志位;00H南北通行标志位;01H东西通行标志位;;-----------------------------------SNFEQU00H;;;南北通行标志位EWFEQU01H;;;东西通行标志位ORG0000HLJMP__IN;;;上电转主程序ORG000BH;;;定时中断入口LJMPDSZDORG0003H;;;紧急中断入口LJMPURZDORG0030H__IN:LCALLINIT;;;调用初始化子程序LOOP:LCALLDIS;;;循环执行显示子程序AJMPLOOP;///////////初始化程序INIT:SETBSNFSETBEWFSETBURFMOVR2#20;;;定时器中断20次为1sMOVTMOD#01H;;;初始化定时器MOVTL0#0B0HMOVTH0#3CHSETBEA;;;开定时中断与紧急中断SETBET0SETBTR0SETBEX0SETBIT0;;;设置中断程控方式MOVDPTR#TAB;;;数值首地址放入DPTR中MOV40H#40;;;东南西北通行时间设置MOV41H#40MOV30H#40;;;通行时间初始化MOV31H#60MOVP0#4CH;;;初始化时南北通行并把交通灯状态分别放在32H和33H中MOV32H#4CHMOVP2#15HMOV33H#15HRET;////////////显示子程序DIS:MOVP3#0DFH;;;选中南北方向的十位数码管MOVA30H;;;把显示数据送人数码管显示MOVB#10DIVABMOVCA@A+DPTRMOVP1A;;;LCALLD1MSMOVP3#0EFH;;;选中南北方向的个位数码管MOVAB;;;送入数码管显示MOVCA@A+DPTRMOVP1ALCALLD1MSMOVP3#7FH;;;选中第东西方向的十位数码管MOVA31H;;;送入数码管显示MOVB#10DIVABMOVCA@A+DPTRMOVP1ALCALLD1MSMOVP3#0BFH;;;选中第东西方向的个位数码管MOVABMOVCA@A+DPTRMOVP1ALCALLD1MSSETBP
3.0SETBP
3.1JNBP
3.0DIS_S;;;查询是否第一个按键按下JNBP
3.1DIS_E;;;查询是否第二个按键按下AJMPDIS_R;;;没有键按下则返回DIS_S:LCALLD5MS;;;按键去抖JNBP
3.0DIS_SNAJMPDIS_RDIS_SN:MOV40H#50;;;对通行时间从新分配,南北通行时间加长MOV41H#30AJMPDIS_RDIS_E:LCALLD5MS;;;按键去抖JNBP
3.1DIS_EWAJMPDIS_RDIS_EW:MOV40H#30;;;东西通行时间加长MOV41H#50DIS_R:RET;///////定时中断处理程序DS_C:LJMPDS_R;;;接力跳转DSZD:PUSHACC;;;保护现场PUSHPSWCLRTR0;;;关定时器及中断标志位并重新赋值CLRTF0MOVTL0#0B0HMOVTH0#3CHDJNZR2DS_C;;;判断1m时间是否到达MOVR2#20;;;到达重新赋值DEC30H;;;南北方向通行时间减一MOVA30H;;;把减一后的时间送入显示存储单元;;;;;;;南北通行到达最后4秒时黄灯闪烁DS_10:CJNEA#4DS_11;;;如果通行时间剩余4秒JNBSNFDS_11;;;判断是否是南北通行MOVP0#8AHMOV32H#8AH;;;把交通灯状态存入存储单元(后面类似)DS_11:CJNEA#3DS_12;;;不是剩余3秒,返回JNBSNFDS_12;;;不是南北通行时间,返回MOVP0#88HMOV32H#88HDS_12:CJNEA#2DS_13JNBSNFDS_13MOVP0#8AHMOV32H#8AHDS_13:CJNEA#1DS_14JNBSNFDS_14MOVP0#88HMOV32H#88H;------------------------DS_14:JNZDS_NE;;;通行时间没有结束转向改变东西方向的数码管CPLSNF;;;如果通行时间结束则对标志位取反JNBSNFDS_1;;;判断是否南北通行MOV30H40H;;;是,点亮相应的交通灯MOVP0#4CHMOV32H#4CH;;;存储交通灯状态MOVP2#15HMOV33H#15H;;;存储交通灯状态DS_NE:DEC31H;;;东西方向通行时间减一MOVA31H;;;把通行剩余时间送入显示存储单元;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似略)DS_20:CJNEA#4DS_21JBEWFDS_21MOVP0#51HMOV32H#51HDS_21:CJNEA#3DS_22JBEWFDS_22MOVP0#41HMOV32H#41HDS_22:CJNEA#2DS_23JBEWFDS_23MOVP0#51HMOV32H#51HDS_23:CJNEA#1DS_24JBEWFDS_24MOVP0#41HMOV32H#41H;-----------------------------DS_24:JNZDS_R;;;东西方向时间没有结束,返回CPLEWF;;;对通行状态取反JNBEWFDS_2;;;东西方向通行时间到来,跳转MOV31H#80;;;东西方向通行结束,重新显示时间MOVP0#__H;;;点亮相应的交通灯MOV32H#__HMOVP2#29HMOV33H#29HAJMPDS_RDS_1:MOV30H#80;;;南北通行时间结束,重新对显示存储单元赋值MOVP0#__H;;;执行转弯状态1MOV32H#__HMOVP2#26HMOV33H#26HAJMPDS_NEDS_2:MOV31H41H;;;东西方向开始通行,赋值予显示存储单元MOVP0#61H;;;点亮相应的交通灯MOV32H#61HMOVP2#15HMOV33H#15HDS_R:SETBTR0POPPSW;;;恢复现场POPACCRETI;////////////查表指令TAB:DB3FH06H5BH4FH66H6DHDB7DH07H7FH6FH;//////////延时5ms与1msD5MS:MOVR7#5D1MS:MOVR7#10MOVR6#50L1:DJNZR6$DJNZR7L1RETEND
七、心得体会经过两三个星期的努力,翻阅大量的资料和编程调试,最终得到了自我比较满意的运行结果,可能程序和仿真还有些许瑕疵,但是得到了所要求的功能以及良好的显示效果,所以,实验是比较成功的这次的大工作量和编程的经历给了我很多的启示,有编程失败的沮丧和调试成功一霎那的欣喜若狂,在这次汗水和欣喜的夹杂背后,是我对单片机的另一个认识,编程是很重要的一方面对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案接下来就是程序的设计了,虽然感觉交通灯程序没什么难的,就是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我们的不断努力,还是写出来正确的代码最后对于LED管和发光管的跳变主要是靠程序当中的倒计时中断程序,以及程序中定义的EN程序来实现的,在实验中出现的问题有LED管计时太慢或太快,或者当计数到某一值时就不再到计数,闪烁的厉害以至看不清楚,红绿黄等的闪灭顺序出现问题,本应是红灯灭后闪绿灯,但出现黄灯,经调试最终发现程序中的循环出现问题通过本次课程设计让我了解了最基本的交通红绿灯的执行顺序与过程本次实践让我了解到各芯片的大致编程顺序一切开头最难,当凿开了个点,就慢慢能融会贯通了,因此得出的结论是只有通过课程设计才能让我真正了解到接口技术
八、____1徐维祥.单片微型机原理及应用大连理工大学出版社,
2006.122胡汉才.单片机原理与接口技术[M].北京:清华大学大学出版社
2004.1-
505.3闫胜利.AltiumDesigner
6.X中文版使用教程 电子工业出版社
2007.64《MCS-51系列单片机系统及其应用(第二版)》蔡美琴,张为民等主编,
2009.
15.《单片机原理及应用实验指导书》浙江海洋学院机电工程学院,
2008.
126.《数字电子技术基础》清华大学电子学教研室编,阎石主编,
2008.5返回如果是的话,则进行红变绿灯的过程如果是的话,则进行绿灯变黄灯的过程如果是的话,则进行黄灯变红灯的过程保户现场判断flag=01Flag=02判断flag=02Flag=03判断flag=03Flag=01发中断结束命令恢复现场中断返回调用LED动态显示程序PAGE1。