单片机的红绿灯控制程序如何写啊

如题所述

//--------------------------------------------------
//名称:LED模拟交通灯
//作者:彭伟《单片机C语言程序设计实训100例-基于8051+PROTEUS仿真》
//--------------------------------------------------
//说明:东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯
// 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁
// 闪烁5次后亮红灯,东西向绿灯亮,如此重复
//---------------------------------------------------
#include<reg51.h>
#define uchar unsigned char
#define uint 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;
uchar Flash_count=0;Operation_type=1;//闪烁次数及操作类型变量
//-----------------------------------------------------
//延时
//----------------------------------------------------
void DelayMS(uint x)
{
uchar i;
while(x--)for(i=0;i<120;i++)
}
//---------------------------------------------------
//交通灯切换子程序
//---------------------------------------------------
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;
DelayMS(2000);
Operation_type=2;
break;
case 2://东西向黄灯闪烁,绿灯关闭
DelayMS(300);
GREEN_A=1;
YELLOW_A=~YELLOW_A;
//闪烁5次
if (++Flash_count!=10) return;
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;
DelayMS(2000);
Operation_type=4;
break;
case 4://南北向黄灯闪烁,绿灯关闭
DelayMS(300);
GREEN_B=1;
YELLOW_B=~YELLOW_B;
//闪烁5次
if (++Flash_count!=10) return;
Flash_count=0;
Operation_type=1;
}
}
void main()
{
while(1) Traffic_light();

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-15
就不告诉你,就不告诉你

单片机的红绿灯控制程序如何写啊
\/\/说明:东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯 \/\/ 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁 \/\/ 闪烁5次后亮红灯,东西向绿灯亮,如此重复 \/\/--- include<reg51.h> define uchar unsigned char define uint unsigned int sbit RED_A=P0^0;\/\/东西向指示灯...

单片机C语言红绿灯程序,要求:数码管显示时间倒计时、16*16LED点阵显示...
include <reg51.h> define uint unsigned int define uchar unsigned char define BLKN 2 \/\/列锁存器数 sbit G = P1^7; \/\/P1.7为显示允许控制信号端口 sbit RCLK = P2^0; \/\/P2.0为输出锁存器时钟信号端 sbit SCLR = P2^1; \/\/P2.1为移位寄存器清○端 void delay(uint...

求单片机交通灯控制系统设计的程序(最后有中文解析)
--比如:--东西绿灯、南北红灯,两个方向的数字显示,都是60s倒计时。--东西红灯、南北绿灯,两个方向的数字显示,都是40s倒计时。--两路时间虽然不同,数码管显示应该是相同的,完全可以用一组数码管显示。2.紧急通行控制,如某一方向现为红灯,通过按键强行切换为绿灯,而另一路改为红灯,延...

89C51单片机红绿灯程序是什么?
若亮则转移到黄灯闪烁程序\\x0d\\x0a JNB ACC.1,SS2 ;判断南北方向黄灯是否亮,若亮则转移到黄灯闪烁程序\\x0d\\x0a MOV P1,A\\x0d\\x0a LCALL DY1S\\x0d\\x0aSS:MOV A,R1\\x0d\\x0a INC A\\x0d\\x0a DJNZ R2,F3\\x0d\\x0a SJMP MAIN\\x0d\\x0a\\x0d\\x0a...

单片机交通灯程序
采用51单片机作为系统的MCU,基本完成控制两组交通指示灯交替亮 每个街口有左拐、直行及行人三种指示灯。直行灯每个灯有红、黄、绿三种颜色。自行车与汽车共用左拐和直行灯。首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北...

基于51单片机的红绿灯原理
;绿灯停留3s;黄灯闪烁5次,每次0.2s,红的停留4s ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV DPTR,#B1 MOV R2,#4 MOV A,#0H F3:MOV R1,A MOVC A,@A+DPTR JNB ACC.4,SS1 ;判断东西方向黄灯是否亮,若亮则转移到黄灯闪烁程序 JNB ACC.1,SS2 ;判断南北方向黄灯是否亮,若亮则转移...

我在做一个单片机交通灯程序(c51),要求是控制一个十字路口的两组红...
假设是单纯的红绿灯,无黄灯的话,设红灯30秒,绿灯30秒。需要两个状态量,方向Dir(1:东西,0:南北),东西灯颜色LightcolorEW,南北灯颜色LightcolorNS。此刻,东西方向亮红灯,则Dir=1,LightcolorEW=red,LightcolorNS=green。对相应端口赋值即可。只需要东西方向与南北方向相反。假设有黄灯,设...

单片机编程 交通灯的控制(求wave软件的程序源程序*.asm)
1. 因为本设计是交通灯控制设计,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯,然后转状态l南北绿灯通车,东西红灯;过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时3秒,东西仍然红灯;再转状态3,东西绿灯通车,南北红灯;过一段时间转状态4...

一条路上的红绿灯不包括黄灯用单片机如何控制
只需要做一个延时来处理。至于需要几个灯,就用单片机的io口。如果只有一个红绿灯的话就很简单。,多的话可以自己再加 RED EQU P1.0 GRE EQU P1.1 ORG 0000H START: AJMP MAIN ORG 0030H MAIN: CLR RED 红灯,低电平有效 LCALL DEL19S SETB RED CLR GRE ;绿灯亮红灯灭 LCALL DEL19S...

求大神解答,用51单片机汇编语言实现一个红绿灯的程序,不是一个路口的...
;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。;工作寄存器及存储单元分配 ;1.工作寄存器 ;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器 ;2.片内存储单元 ;30H、31H作为两组数码管显示数据存储单元;32H、33H作为...

相似回答