当前位置:首页 >> 工学 >>

51单片机设计交通灯(汇编语言)


课程设计成果说明书

题 目 :城市交道口交通灯控制系统

姓 名:蔡琦玮

学 号 : 0 7 0 4 03 20 5

学 院:机电工程学院

班 级 : A07 电 信 2 班

指导教师:李良儿

浙江海洋学院教务处 2010 年 1 月 1 日

一、 二、

任务:设计并制作一个城市交道口交通灯控制糸统 要求:根据下图交道口模型,装上交通灯。交道口模型如图所示。

交通灯控制规则如下: 1)每个街口有左拐、右拐、直行及行人四种指示灯。每个灯有红、绿两 种颜色。自行车与汽车共用左拐、右拐和直行灯。 2)共有四种通行方式: ① 车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为 1 分钟,各路右拐比直行滞后 10 秒钟开放。 ② 南北向左拐、各路右拐,行人禁行。通行时间为 1 分钟。 ③ 东西向直行、 各路右拐, 东西向行人通行。 东西向通行时间为 1 分钟, 各路右拐比直行滞后 10 秒钟开放。 ④ 东西向左拐、各路右拐。行人禁行。通行时间为 1 分钟。 3)在通行结束前 10 秒钟,绿灯闪烁直至结束。 1, 2, 基本部分:按照上述控制要求,用发光二极管代替交通灯,用 发挥部分: 1.有倒计时时间显示。 PROTEUS 绘制电路图,并仿真调试实现之。 2 若交道口出现紧急情况,交警可将糸统设置成手动:全路口车辆禁行、 行人通行。紧急情况结束后再转成自动状态。 3 当有 119、120 等特种车辆通过时,糸统自动转为特种车放行,其它车 辆禁止状态。特种车辆通过 15 秒钟后,糸统自动恢复,用模型车演示。 4 其它自选措施。

城市交道口交通灯控制系统
蔡琦玮,A07 电信 2 班,学号:070403205 1. 系统功能的确定 功能一:可以实现红绿灯的转换以及控制路口的基本功能。 功能二:有倒计时功能和最后十秒绿灯闪烁的功能。 功能三:出现紧急情况时,可以警察手动控制特殊状态,并维持交通。 功能四:119 或 120 等特种车经过时,可转换成为特种车道行驶状态,并在 情况消除后 15 秒,恢复原状。 2. 方案论证 2.1 方案一:如下图所示,为 proteus 仿真图。

其中,P1,P0 端口的 8 位分别来控制东西,南北方向的红绿灯。且运用了 4 个 74LS164 的 8 位移位寄存器 (串行输入, 并行输出) 来控制 4 个 LED 的数码显示, 通过 AT89C51 单片机的 P3.0,P3.1 两个扩展端口来接 4 个并行连接的 74LS164 的 DIN 和 CLK 两个端口来显示倒计时的功能,这会产生乱码使得显示杂乱,而主 程序以顺序执行为主,其中穿插着对 P3.7 的端口高低电平的测试和跳转语句来 实现功能三, 并且功能一、 二在主程序中实现, 没有功能四的的实现程序。 所以, 该方案可行却不完善,故不选用。 2.2 方案二:如下图所示,为 proteus 仿真图。

其中,P0,P2 端口的 8 位分别来控制东西,南北方向的红绿灯。而 P1 端口的 P1.0~P1.6 来控制四个 LED 的码值显示,而 P3.0~P3.3 这四位用来片选这四个 LED。并且,依旧用 P3.7 高低电平来实现功能三的内容,并且考虑用 P3.6 的高 低电平来实现功能四的内容。程序依旧与方案一相似,却可以消除显示乱码,程 序杂乱,不易读写。所以,该方案可行却仍不完善,故不选用。 2.3 方案三:如下图所示,为 proteus 仿真图。 如下页所示仿真图。其中,在方案二的基础上,将四个 LED 分开的显示器用两个 一起的 LED,并且运用动态扫描显示倒计时,而 P0,P2 端口的 8 位分别来控制东 西,南北方向的红绿灯。而 P1 端口的 P1.0~P1.7 来连接两个 LED 的数码管的 A~F,DP 这 8 个接口处。P3.0,P3.1 分别接每个 LED 的 1,2 接口处来控制数码管 显示的高低位。顺次执行的主程序采用中断程序来实现,用 P3.2,P3.3 的电位变 化分别来实现功能三, 其中, 四。 这可以用跳变触发中断或电平触发中断来实现,

主要是 IT0,IT1 置位就是跳变触发方式,置零就是电平触发方式。这样,软硬件 对于该实验所要求的功能的实现均较易实现,而且程序较易编写和读取。所以, 综上所述,最终选择方案三来进行实验。

3.系统硬件的设计 3.系统硬件的设计 3.1 主控制器的设计以及接口电路的设计(电路图及设计说明) 该电路图的 proteus 仿真图即和方案三的一致,正常运行时如下所示:

主要运用到的硬件是:一块 AT89C51 单片机,两个两段共阴 LED 显示器, SW1,SW2 两个双掷开关以及 32 个发光二极管。其中,16 个红色,16 个绿色 发光二极管,每两个为一组。若 P0 端口得电压输出电流不足以驱动 LED,就利 用上拉电阻使 LED 能正常工作,但不需电阻亦可。单片机晶振选用 12MHz。 4.系统软件的设计 4.系统软件的设计 4.1 程序的编写思想: 本次实验设计的程序主要包含:主程序,两个中断程序,显示程序(显示程序里 含延时 1ms 的程序) 。具体见以下叙述。 4.2 主程序的设计 主程序中,是顺次执行,从 SETB P3.7 开始运行南北方向为主的两个 60 秒,接 着 CLR P3.7 再运行东西方向为主的两个 60 秒,接着 P3.7 重新置位,再次循环。 流程图如下:

4.3 两个中断程序的设计 两个中断程序分别靠双掷开关 SW1 和 SW2 控制高低电位而实现,中断程序 START0 和中断程序 START1 为了实现功能三和四。流程图如下:

4.4 显示程序的设计 流程图如下所示:

该显示程序主要是为了实现倒计时的显示,先将存在 SECOND 内的数值从十六进 制数转化为十进制, 并存在 DBUF, DBUF+1(即 50H,51H)单元中, 然后通过 LEDMAP 取出字形,并选通每个两段共阴 LED 的显示管的高,低位显示出来。 5.系统调试 5.1 硬件调试 设计小程序让发光二极管导通,点亮二极管,并向两段共阴 LED 显示管赋值,观 察是否显示,调试到所有硬件设备均可正常即可。 5.2 软件调试 主要是编程,以下是实现本次实验功能的程序:
SECOND EQU 30H DBUF EQU 50H ORG 0000H LJMP START ORG 0003H LJMP START0 ORG 0013H LJMP START1 START: MOV R7,#5 MOV SP,#60H SETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 MOV TCON,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H CLR TF0 SETB TR0 MOV A,#0FFH MOV P2,A MOV P0,A (以上程序主要是一些赋值程序,和定时 器,中断等的开启,以及初始化红绿灯等) ;************************************ LP1: Z1: LOOPM: SETB P3.7 LJMP LOOP LOOPK: CLR P3.7 LOOP: MOV R2,#20 MOV R3,#10 MOV SECOND,#60 JNB P3.7,LP1 LCALL STATE1 LJMP Z1 LCALL STATE4 LCALL DISPLAY JNB TF0,Z1 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,Z1 MOV R2,#20 DEC SECOND LCALL DISPLAY DJNZ R3,Z1 (以上程序主要是通过对 P3.7 电位的高低 来选择红绿灯的状态,状态一和四的选择) ;************************************ MOV R2,#20 MOV R3,#40 MOV SECOND,#50 JNB P3.7,LP2

LCALL STATE2 LJMP Z2 LP2: Z2: LCALL STATE5 LCALL DISPLAY JNB TF0,Z2 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,Z2 MOV R2,#20 DEC SECOND LCALL DISPLAY DJNZ R3,Z2 (以上程序主要是控制状态二和五的选择) ;************************************ MOV R2,#20 MOV R3,#10 MOV R4,#1 MOV SECOND,#10 Z3: LCALL DISPLAY JNB P3.7,LP3 LCALL STATE2 LJMP MM1 LP3: MM1: LCALL STATE5 NB TF0,Z3 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H JNB P3.7,SS1 MOV P2,#0BFH LJMP SS2 SS1: SS2: MOV P0,#0BFH DJNZ R4,Z3 MOV R4,#1 DJNZ R2,Z3 MOV R2,#20 DEC SECOND LP5: MM3: Z5: LP4: MM2: Z4:

LCALL DISPLAY DJNZ R3,Z3 (以上程序主要是控制状态二和五的转换 选择,且绿灯闪烁) ;************************************ MOV R2,#20 MOV R3,#50 MOV SECOND,#60 LCALL DISPLAY JNB P3.7,LP4 LCALL STATE3 LJMP MM2 LCALL STATE6 JNB TF0,Z4 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,Z4 MOV R2,#20 DEC SECOND LCALL DISPLAY DJNZ R3,Z4 (以上程序主要是控制状态三和六的选择) ;************************************ MOV R2,#20 MOV R3,#10 MOV R4,#1 MOV SECOND,#10 LCALL DISPLAY JNB P3.7,LP5 LCALL STATE3 LJMP MM3 LCALL STATE6 JNB TF0,Z5 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H

DJNZ R4,Z5 MOV P1,#75H JNB P3.7,SS3 MOV P2,#0EEH MOV P0,#0AEH LJMP SS4 SS3: MOV P2,#0AEH MOV P0,#0EEH SS4: MOV R4,#1 DJNZ R2,Z5 MOV R2,#20 DEC SECOND LCALL DISPLAY DJNZ R3,Z5 JB P3.7,KK LJMP LOOPM KK: LJMP LOOPK (以上程序主要是控制状态三和六的选择, 且绿灯闪烁,并长跳回去再循环开始) ;************************************ START0: ACALL DISPLAY ACALL DISPLAY JB P3.2,K0 PUSH ACC MOV A,P0 PUSH ACC MOV A,P2 PUSH ACC MOV P2,#0A9H MOV P0,#0A9H A0: JB P3.2,A1 ACALL DISPLAY LJMP A0 A1: ACALL DISPLAY ACALL DISPLAY JNB P3.2,A0 POP ACC A4: A3: A2: K0:

MOV P2,A POP ACC MOV P0,A POP ACC RETI

;************************************ START1: ACALL DISPLAY ACALL DISPLAY JB P3.3,K1 PUSH ACC MOV A,P0 PUSH ACC MOV A,P2 PUSH ACC MOV A,R2 PUSH ACC MOV A,R3 PUSH ACC MOV A,SECOND PUSH ACC MOV P2,#56H MOV P0,#56H JB P3.3,A3 ACALL DISPLAY LJMP A2 ACALL DISPLAY ACALL DISPLAY JNB P3.3,A2 MOV R2,#20 MOV R3,#15 MOV SECOND,#15 LCALL DISPLAY JNB TF0,A4 CLR TF0 MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,A4

MOV R2,#20 DEC SECOND LCALL DISPLAY DJNZ R3,A4 POP ACC MOV SECOND,A POP ACC MOV R3,A POP ACC MOV R2,A POP ACC MOV P2,A POP ACC MOV P0,A POP ACC K1: RETI (以上两段程序主要实现了中断 IT0 和 IT1) ;************************************ STATE1: MOV P2,#99H MOV P0,#0AAH RET STATE2: MOV P2,#95H MOV P0,#0AAH RET STATE3: MOV P2,#66H MOV P0,#0A6H RET STATE4: MOV P0,#99H MOV P2,#0AAH RET STATE5: MOV P0,#95H MOV P2,#0AAH RET STATE6: MOV P0,#66H MOV P2,#0A6H RET

;************************************ DISPLAY: (以下是显示程序及结束) MOV A,SECOND MOV B,#10 DIV AB MOV DBUF,A MOV A,B MOV DBUF+1,A MOV R0,#DBUF MOV R1,#DBUF+1 MOV DPTR,#LEDMAP DP: MOV A,@R0 MOVC A,@A+DPTR MOV P1,A CLR P3.0 ACALL DELAY SETB P3.0 MOV A,@R1 MOVC A,@A+DPTR MOV P1,A CLR P3.1 ACALL DELAY SETB P3.1 DJNZ R7,DP MOV R7,#5 RET DELAY: MOV R6,#01H AA1: MOV R5,#0FFH AA: DJNZ R5,AA DJNZ R6,AA1 RET LEDMAP:DB 3FH,06H,5BH,4FH,66H,6DH DB DB END 7DH,07H,7FH,6FH,77H,7CH 58H,5EH,7BH,71H,00H,40H

(以上是状态一至六的赋值程序)

5.3 综合调试 将程序在 MedWen 上运行以后,将产生的 hex 格式的文件加载到 proteus 仿真图 上的 AT89C51 单片机上进行仿真实验。具体情况如下: 5.3.1 正常运行的状态:

5.3.2 实现功能三的状态:

5.3.3 实现功能四的状态:

6.指标测试 通过 5 的调试和仿真以后,可以知道程序运行成功,效果不错。 7. 总结成果 经过两三个星期的努力,翻阅大量的资料和编程调试,最终得到了自我比较满意 的运行结果,可能程序和仿真还有些许瑕疵,但是得到了所要求的功能以及良好 的显示效果,所以,实验是比较成功的。这次的大工作量和编程的经历给了我很 多的启示,有编程失败的沮丧和调试成功一霎那的欣喜若狂,在这次汗水和欣喜 的夹杂背后,是我对单片机的另一个认识,编程是很重要的一方面,而仿真可以 将自己的程序验证出来, 并开始和逐步掌握了 proteus 这一仿真软件, 收获颇丰。 8.参考文献 1. 《MCS-51 系列单片机系统及其应用 (第二版) 蔡美琴, 》 张为民等主编, 2009.1 2.《单片机原理及应用实验指导书》 浙江海洋学院机电工程学院,2008.12 3.《数字电子技术基础》 清华大学电子学教研室编,阎石主编,2008.5 4.Baidu 搜索“74LS164”寄存器的功能 5. http://www.docin.com/p-32675413.html 中断程序设计 6. Baidu 搜索“proteus”的使用以及仿真过程等


相关文章:
usb单片机cs51交通灯程序汇编语言
51单片机设计交通灯(汇编语... 13页 免费喜欢此文档的还喜欢 ...这个参考程序使用汇编语言写的这个参考程序使用汇编语言写的隐藏>> ORG 0000H A...
单片机proteus仿真设计交通灯(汇编语言)
单片机proteus仿真设计交通灯(汇编语言)_其它_高等教育_教育专区。51单片机,proteus仿真设计,汇编语言程序的交通灯毕业设计...课程设计成果说明书 题目 :城市交道口交通...
基于单片机的交通灯的设计报告(汇编语言)
单片机 交通灯 汇编语言单片机 交通灯 汇编语言隐藏>> 交通灯的设计报告摘要: ...本系统采用 MSC-51 系列单片机 AT89C51 和 74LS47 来设计交通灯控制 器,...
51单片机交通灯完美设计
51单片机用C语言实现交通灯... 3页 免费 单片机控制交通灯 毕业设计... 31页 免费 51单片机设计交通灯(汇编语... 13页 免费如要投诉违规内容,请到百度文库投...
基于AT89C51单片机的交通灯控制系统设计毕业论文
基于AT89C51单片机交通灯控制系统设计毕业论文_工学_高等教育_教育专区。...考虑到社会弱势群体通行问题;4)进行软件系 统的设计,采用汇编语言编写,简单、...
基于51单片机的智能交通灯系统设计(1)
本模拟交通灯系统利用单片机 AT89C51 作为核心元件, 实现了通过信号 灯对路面...(4)进行软件系统的设计,对于本系统,本人采用单片机汇编语言编写,对单片机 2 ...
基于51单片机交通灯的设计
3、设计要求 1.编程要求:主程序利用 C 语言或汇编语言编写。 2.实现功能:使用 AT89C51 单片机控制 4 个方向的交通灯(红﹑黄﹑绿)并 用数码管显示其时间。...
基于AT89C51单片机的交通灯控制系统设计
盐城师范学院毕业论 文( 设计) 基于 AT89C51 单片机交通灯控制系统设计电子...考虑到社会弱势群体通行问题;4)进行软件系 统的设计,采用汇编语言编写,简单、...
51单片机综合实验交通灯设计报告
51单片机综合实验交通灯设计报告_自然科学_专业资料。51 单片机综合实验交通灯设计...学会用汇编语言和 C 语言开发系统软件; 3、学会 8051 单片机开发环境 wave 或...
单片机交通灯课程设计报告(含电路图,源程序)
at89c51单片机_交通灯控制... 22页 免费 基于51单片机的智能交通灯... 26页...设计目的 (1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分 的工作...
更多相关标签: