交通信号灯调试

编写交通信号灯控制程序。要求如下:

1.能够正常的南北东西走向红绿灯控制

2.红绿灯切换的时候,黄灯红灯要闪烁

3.使用插入代码功能,代码格式一定要符合C语言标准格式

首先我们打开keil_proteus中调试交通信号灯的电路图

 

 

 

 

 

 

 

 

 根据题目要求我们知道这9个灯的闪烁要满足

能够正常的南北东西走向红绿灯控制

红绿灯切换的时候,黄灯红灯要闪烁

所以现在我们打开Keil uVision4开始编撰代码,编好的代码如下

 

 

 

 

 

 

#include <reg52.h> 
#include "delay.h"
sbit W_E_R=P0^0;
sbit W_E_Y=P0^1;
sbit W_E_G=P0^2;
sbit N_S_R=P0^3;
sbit N_S_Y=P0^4;
sbit N_S_G=P0^5;
 //给东西南北红绿黄灯进行命名
void main()	
{
	unsigned char i=0;
	//四个路口红灯亮
	W_E_R = 0;
	N_S_R = 0;
	delay1s();
	//交通灯正常工作循环
	while(1)
	{
		//东西红灯亮,南北绿灯亮10s延迟
		W_E_R = 0; 
		N_S_R = 1;
		N_S_G = 0;
		delay10s();
		//东西红灯亮,南北黄灯闪,3s延迟
		for(i=0;i<3;i++)
		{
			W_E_R = 0;
			N_S_Y = 0;
			N_S_G = 1;
			delay1s();
			W_E_R = 1;
			N_S_Y = 1;
			delay1s();
		}
		//东西红灯闪,南北黄灯闪,3s延迟
		W_E_R = 1;
		N_S_Y = 1;
		W_E_G = 0;
		N_S_R = 0;
		delay10s();
		//东西绿灯亮,南北红灯亮,10s延迟
		for(i=0;i<3;i++)
		{
			W_E_Y = 0;
			N_S_R = 0;
			W_E_G = 1;
			delay1s();
			W_E_Y = 1;
			N_S_R = 1;
			delay1s();
		}
		//东西黄灯闪,南北红灯闪,3s延迟	
	
	

	
	}
}

  

void delay1s()
{
	unsigned char x = 0;
	unsigned char i;
	unsigned char y = 0;
	while(y <  5)
	{
		x = 0;	
		while(x<250)
		{
			i = 0;
			while(i<250)
			{
				i++;
			}
			x++;
		}
		y++;
	}
}


void delay10s()
{
	unsigned char x = 0;
	unsigned char i;
	unsigned char y = 0;
	while(y <  50)
	{
		x = 0;	
		while(x<250)
		{
			i = 0;
			while(i<250)
			{
				i++;
			}
			x++;
		}
		y++;
	}
}

  

void delay1s();
void delay10s();

  最后将代码输入到proteus中即可实现交通灯调试

 

posted @ 2019-10-12 19:13  优克莉伍德丶  阅读(865)  评论(2)    收藏  举报