background image

void  delay(unsigned char i) //延时函数,无符号字符型变量 i 为形式参数
{
    unsigned char j,k;

//定义无符号字符型变量 j 和 k

    for(k=0;k<i;k++)

//双重 for 循环语句实现软件延时

      for(j=0;j<255;j++);
}

四、思考题

1、MCS-51 系列单片机的 P0~P3 四个 I/O 端口在结构上有何异同?使用时应注意的事

项?

实验二、模拟交通信号灯实验

一、实验目的

1、熟悉 C 语言的数据类型、常量与变量、运算符和表达式等基本概念及函数、程序设计

基本结构;2、掌握 C51 对标准 C 语言的扩充功能;3、学习 Keil 软件和 Protues 软件的联合
在线仿真调试系统的使用。

二、实验说明

1、使用单片机控制 LED 来模拟十字路口交通信号灯的切换过程和显示效果。12 只 LED

分成东西向和南北向两组,各组指示灯均有相向的

2 只红色、2 只黄色和 2 只绿色的 LED。

当东西向绿灯亮若干秒后,黄灯闪烁,闪烁

5 次后红灯亮,红灯亮后,南北向由红灯变为

绿灯,若干秒后南北向黄灯闪烁,闪烁

5 次后红灯亮,东西向绿灯亮,如此重复。

2、在 Keil 软件中,建立好相应的项目文件,编译无误后,选中 Target 1,执行菜单

“Project”→“Options for Target ‘Target 1’”命令,打开“Debug” 调试选项卡,单击“Use”前的
单选框,再在右侧下拉列表中选择

“Proteus VSM Monitor-51 Driver”,选项。

3、在 Proteus ISIS 中选择

“Debug”→“Use Remote Debug Monitor”,使系统处于远程后台

待命状态。

4、在 Keil 中执行

“Debug”→“Start/Stop Debug Session”命令,启动源程序的调试,就可

以同时在

Proteus ISIS 软件工作界面观察仿真效果,观察到程序和硬件电路的同步运行情况。

参考调试开发系统

P118-120

三、实验内容及步骤

1、硬件原理图

2、源程序

交通灯状态表

东西方向(组)

南北方向(组)

状态

红灯

黄灯

绿灯

红灯

黄灯

绿灯

东西向通行,南北向禁止

闪烁

东西向警告,南北向禁止

东西向禁止,南北向通行