.按下面中所给状态实现南北向及东西向的基本红绿灯实验,为求简化,南北和东西方向各使用一组信号灯。接线方法如下:
LED发光二极管L7-L5(表示南北方向的红黄绿灯)和L3-L1(表示东西方向的红黄绿灯)的阴极分别接到P1.7-P1.5和P1.3-P1.1.将实现代码及运行效果截图放置实验报告中。
信号灯状态
南北方向 东西方向 持续时间
第一个状态 红灯亮 绿灯亮 5s
第二个状态 红灯亮 绿灯闪烁5次
第三个状态 红灯亮 黄灯亮 1s
第四个状态 绿灯亮 红灯亮 5s
第五个状态 绿灯闪烁5次 红灯亮
第六个状态 黄灯亮 红灯亮 1s
以下是基于8051单片机的代码实现,实现南北向及东西向的红绿灯交替变换,按照题目所给状态实现:
#include<reg51.h> //包含51单片机头文件
#define uint unsigned int //定义无符号整型变量
#define uchar unsigned char //定义无符号字符型变量
sbit S_LED1 = P1^5; //南北方向绿灯,即P1.5口控制
sbit S_LED2 = P1^6; //南北方向黄灯,即P1.6口控制
sbit S_LED3 = P1^7; //南北方向红灯,即P1.7口控制
sbit E_LED1 = P1^1; //东西方向绿灯,即P1.1口控制
sbit E_LED2 = P1^2; //东西方向黄灯,即P1.2口控制
sbit E_LED3 = P1^3; //东西方向红灯,即P1.3口控制
void delay(uint i) //延时函数
{
uint j, k;
for(j = i; j > 0; j--)
for(k = 110; k > 0; k--);
}
void main()
{
while(1) //一直循环
{
//第一个状态:南北方向绿灯亮,东西方向红灯亮,持续5秒
S_LED1 = 1; //南北方向绿灯亮
E_LED3 = 1; //东西方向红灯亮
delay(500); //延时5秒
//第二个状态:南北方向绿灯亮,东西方向绿灯闪烁5次
S_LED1 = 1; //南北方向绿灯亮
E_LED1 = 1; //东西方向绿灯亮
delay(200); //绿灯亮200ms
E_LED1 = 0; //东西方向绿灯灭
delay(200); //绿灯灭200ms
E_LED1 = 1; //东西方向绿灯亮
delay(200); //绿灯亮200ms
E_LED1 = 0; //东西方向绿灯灭
delay(200); //绿灯灭200ms
E_LED1 = 1; //东西方向绿灯亮
delay(200); //绿灯亮200ms
E_LED1 = 0; //东西方向绿灯灭
delay(200); //绿灯灭200ms
E_LED1 = 1; //东西方向绿灯亮
delay(200); //绿灯亮200ms
E_LED1 = 0; //东西方向绿灯灭
delay(200); //绿灯灭200ms
E_LED1