当前位置:首页 >> 其它 >>

单片机proteus仿真设计交通灯(汇编语言)


课程设计成果说明书

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

姓 名: 学 号:

学 院:

班 级:

指导教师:







一、

任务:设计并制作一个城市交道口交通灯控制糸统

二、

要求:根据下图交道口模型,装上交通灯。交道口模型如图所示。

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

城市交道口交通灯控制系统

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 (以上程序主要是一些赋值程序,和定时 器,中断等的开启,以及初始化红绿灯等) ;************************************ LOOPM: SETB P3.7 LJMP LOOP LP2: Z2: LP1: Z1: 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 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 LCALL DISPLAY DJNZ R3,Z3 (以上程序主要是控制状态二和五的转换 选择,且绿灯闪烁)

;************************************ MOV R2,#20 MOV R3,#50 MOV SECOND,#60 Z4: LCALL DISPLAY JNB P3.7,LP4 LCALL STATE3 LJMP MM2 LP4: 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 Z5: LCALL DISPLAY JNB P3.7,LP5 LCALL STATE3 LJMP MM3 LP5: 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

K0:

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 A2: JB P3.3,A3 ACALL DISPLAY LJMP A2 A3: ACALL DISPLAY ACALL DISPLAY JNB P3.3,A2 MOV R2,#20 MOV R3,#15 MOV SECOND,#15 A4: 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

(以上程序主要是控制状态三和六的选择, 且绿灯闪烁,并长跳回去再循环开始) ;************************************ 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 MOV P2,A POP ACC MOV P0,A POP ACC

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 DP:

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

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

(以上两段程序主要实现了中断 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: (以下是显示程序及结束)

(以上是状态一至六的赋值程序) 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”的使用以及仿真过程等


赞助商链接
相关文章:
基于Proteus仿真交通灯
基于Proteus仿真交通灯_信息与通信_工程科技_专业资料。基于Proteus仿真单片机的...我虽然能够编写出程序,其可读性却有待于提高。 经过这次仿真设计,我对 51 ...
基于单片机的交通灯的设计报告(汇编语言) (1)
单片机proteus仿真设计交通... 13页 10财富值 基于汇编语言交通灯综合... 暂无...交通灯的设计报告摘要: 近年来随着科技的飞速发展,单片机的应用正在不断深入,同...
交通灯proteus仿真设计
52 单片机简易交通灯 proteus 仿真设计原理交通灯作为日常生活中必不可少的交通标志,它的设计是单片机初学者 必不可少要接受的一项课题,下面简单介绍用 proteus ...
基于proteus的51系列单片机交通灯的设计与仿真[1]
基于proteus的51系列单片机交通灯设计仿真[1]_幼儿读物_幼儿教育_教育专区。...通过 kielC51 编写汇编语言,运行生成“.hex” 文件,加载到 AT89C52 中,最后...
proteus仿真论坛交通灯C
交通灯汇编程序之PROTEU... 5页 3下载券 交通灯基于Proteus仿真图... 2页 2下载券 基于Proteus仿真的4方向... 6页 4下载券 单片机proteus仿真设计交... 13...
用单片机设计交通灯课设报告(汇编和C语言)
单片机设计交通灯课设报告(汇编和C语言)_电子/电路_工程科技_专业资料。...系统调试 5.1 Proteus 软件仿真调试 (1) 一开始用 Proteus 仿真时,由 P0 ...
基于51单片机汇编语言设计的交通灯
基于51单片机汇编语言设计交通灯_电子/电路_工程科技_专业资料。交通灯的控制摘...14 5 Proteus 软件仿真 ... 15 5.1 正常运行时状态 ......
单片机课程设计(正式版) 交通灯
单片机课程设计(正式版) 交通灯_工学_高等教育_教育专区。兰州交通大学 交通灯...PROTEUS 中进行仿真,先在 Keil C 中用汇编语言生成 HEX 文件,仿真电 路连接...
proteus单片机带优先让行功能的交通灯控制实验
Proteus实现单片机交通灯... 18页 2下载券 单片机proteus仿真设计交... 13页 ...虽然能够满足实验要求,对 MCS51 指令系统和汇编语言有了更深的理解, 但是还是...
交通灯单片机(汇编)设计报告
的十字路口交通灯控制要求, 编 制相应的程序,用 PROTEUS 绘制电路图并仿真调试...[3]、楼然苗、胡佳文等,单片机实验与课程设计(PROTEUS 仿真版)[M],杭州, 浙江...
更多相关标签: