实验八 模拟交通灯(Keil与Protenus联合)

  • 格式:doc
  • 大小:42.00 KB
  • 文档页数:5


验八模拟交通灯
一、实验目的
1.了解单片机P0口的功能及使用方法;
2.掌握在µVision环境中设计调试P0口应用程序的方法;
3.学习运用程序控制P0口实现模拟交通灯控制。

二、实验仪器和设备
Keil软件;Proteus软件;THKSCM-2综合实验装置;
三、实验原理及实验内容
使用单片机P0口模拟交通灯控制。

模拟控制就是以红、绿、黄色4组12个发光二极管表示交通信号灯。

假设一个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1,东西方向的绿灯亮,东西方向可以通车,而南北方向的红灯亮,南北方向的车禁止通行。

过一段时间转状态2,东西绿灯灭后,黄灯亮,延时几秒,南北仍然红灯。

再转状态3,南北方向的绿灯亮,南北方向可以通车,而东西方向的红灯亮,东西方向禁止车辆通行。

过一段时间转状态4,南北绿灯灭后亮黄灯,延时几秒,东西方向仍然红灯亮。

最后循环至状态1。

1.硬件设计
在桌面上双击图标,打开ISIS 7 Professional窗口。

单击菜单命令“File”→“New Design”,新建一个DEFAULT模版,保存文件名为“模拟交通灯.DSN”。

在器件选择按钮
中单击“P”按钮,或执行菜单命令“Library”→“Pick Device/Symbol”,添加如表8-1所示的元件。

注意:在ISIS中,单片机的型号必须与在Keil中选择的型号完全一致。

表8-1 模拟交通灯所用的元件
单片机A T89C51 瓷片电容CAP30pF 按钮BUTTON 排阻RESPACK-8
电解电容CAP-ELEC 晶振CRYSTAL 12MHz 电阻RES 发光二极管TRAFFIC LIGHTS 在ISIS原理图编辑窗口中放置元件,在单击工具箱中的“元件终端”图标,在对象选择器中单击“POWER”和“GROUND”放置电源和地。

放置好元件后,布好线。

左键双击各元件,设置相应元件参数,完成电路图的设计,如图8-1所示。

01234567
5
6
7
1
2
XTAL218
XTAL1
19
ALE 30EA
31
PSEN 29RST
9
P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78
P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD
17
P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1
AT89C51
C1
30pF
C2
30pF
C3
1uF
R1
10k
23456789
1
RP1
RESPACK-8
X1
CRYSTAL
R2
100
+5v
图8-1 模拟交通灯电路图
2.程序设计 (1)程序流程
模拟交通灯程序流程如图8-2所示。

(2)汇编源程序 ORG 0000H
MOV A ,#0FFH MOV P0,A
MAIN: MOV A ,#3CH
MOV P0,A ;南北红,东西绿 LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY LCALL DELAY
MOV A ,#5CH ;南北红,东西黄 MOV P0,A LCALL DELAY
MOV A ,#99H ;南北绿,东西红
MOV P0,A
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A,#9AH ;南北黄,东西绿
LCALL DELAY
SJMP MAIN
DELAY: MOV R7,#10
DE1: MOV R6,#200
DE2: MOV R5,#124
DJNZ R5,$
DJNZ R6,DE2
DJNZ R7,DE1
RET
END
3.调试与仿真
安装VDM Server,使Keil和Protenus能联合调试程序。

打开Keil,执行菜单命令“Project”→“New Project”创建“模拟交通灯”项目,并选择单片机型号为A T89C51。

执行菜单命令“File”→“New”创建文件,输入汇编源程序,保存为“模拟交通灯.ASM”。

在Project菜单的File项目管理窗口中右击文件组,选择“Add Files to Group ‘Source Group1’”将源程序“模拟交通灯.ASM”添加到项目中。

执行菜单命令“Project”→“Options for Target ‘Target1’”,在弹出的对话框中选择“Output”选项卡,选中“Create HEX File”。

在“Debug”选项卡,选中“Use:Protenus VSM Simulator”。

执行菜单命令“Project”→“Build Target”,编译源程序。

如果编译成功,则在“Output Window”窗口中显示没有错误,并创建了“模拟交通灯.HEX”文件。

在已绘制好原理图的Protenus ISIS菜单栏中,执行菜单命令“Debug(调试)”→“Use Remote Debug Monitor(使用远程调试设备)”,将该项选中,使Protenus与Keil真正连接起
来,使它们联合调试。

在Keil中执行菜单命令“Debug”→“Start/Stop Debug Session”,或直接单击图标进入Keil调试环境。

同时,在Protenus ISIS窗口中可看出Protenus也进入了程序调试状态。

在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需要设置断点语句的空白处双击鼠标左键,可设置断点;再次双击,可取消断点。

设置好断点后,在Keil中按F5键运行程序,观察运行结果,初始状态0为东西红灯,南北红灯;然后,转状态1,东西方向的绿灯亮,而南北方向的红灯亮。

过一段时间后状态2,东西绿灯灭后,黄灯亮,延时几秒,南北仍然红灯;再转状态3,南北方向的绿灯亮,而东西方向的红灯亮;过一段时间后转状态4,南北绿灯灭后亮黄灯,延时几秒,东西方向仍然红灯亮。

四、实验结果和数据分析
问题:1、在Keil中按F5键运行程序,观察运行结果?
开始
P0口置为FFH
南北红,东西绿
延时5s
南北红,东西黄
延时1s
南北绿,东西红
延时5s
南北黄,东西绿
延时1s
结束
图8-2 模拟交通灯程序流程。