栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

解答私信@田田WX //2022-6-12 C语言 51单片机LED模拟交通灯

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解答私信@田田WX //2022-6-12 C语言 51单片机LED模拟交通灯

名称:LED模拟交通灯

 

说明: 东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁, 闪烁5次后亮红灯,东西向绿灯亮,如此往复. 本例将时间设得较短是为了调试的时候能较快的观察到运行结果.

代码块:

#include 

#define INT8U unsigned char
#define INT16U unsigned int

sbit RED_A = P0^0; //东西向指示灯
sbit YELLOW_A =P0^1;
sbit GREEN_A = P0^2;
sbit RED_B = P0^3; //南北向指示灯
sbit YELLOW_B = P0^4;
sbit GREEN_B = P0^5;

//闪烁次数及操作类型变量定义
INT8U Flash_Count = 0, Operation_Type = 1;

//-----------------------------------------
//延时函数
//-----------------------------------------
void delay_ms(INT16U x)
{
	INT8U t;
	while(x--)
		for(t=0; t<120; t++);
}

//-----------------------------------------
//交通灯切换子程序
//-----------------------------------------
void Traffic_Light()
{
	switch(Operation_Type)
	{
	case 1: //东西向绿灯与南北向红灯亮
		RED_A=1; YELLOW_A=1; GREEN_A=0; 
		RED_B=0, YELLOW_B=1; GREEN_B=1;
		delay_ms(5000);
		Operation_Type=2;
		break;
	case 2: //东西向黄灯开始闪烁,绿灯关闭
		for(; Flash_Count<6; Flash_Count++)
		{
			RED_A=1; YELLOW_A=~YELLOW_A; GREEN_A=1;
			delay_ms(300);
		}
		Flash_Count=0;
		Operation_Type=3;
		break;
	case 3: //东西向红灯与南北向绿灯亮
		RED_A=0; YELLOW_A=1; GREEN_A=1;
		RED_B=1; YELLOW_B=1; GREEN_B=0;
		delay_ms(5000);
		Operation_Type=4;
		break;
	case 4: //南北向黄灯开始闪烁
		for(; Flash_Count<6; Flash_Count++)
		{
			RED_B=1; YELLOW_B=~YELLOW_B; GREEN_B=1;
			delay_ms(300);
		}
		Operation_Type=1;
		break;
	}
}

//------------------------------------------
//主程序
//------------------------------------------
void main()
{
	while(1){
		Traffic_Light();
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968618.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号