⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traffic.c

📁 交通指示灯的控制小程序 用的是80c51单片机 可进行十字路口四个方向的控制 采用的是keil_c的编译器
💻 C
字号:
#include <reg51.h>
//P1_0表示南北红灯
sbit P1_0=P1^0;
//P1_1表示南北绿灯
sbit P1_1=P1^1;
//P1_2表示南北黄灯
sbit P1_2=P1^2;
//P1_3表示东西红灯
sbit P1_3=P1^3;
//P1_4表示东西绿灯
sbit P1_4=P1^4;
//P1_5表示东西黄灯
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;

sbit P3_4=P3^4;
sbit P3_5=P3^5;
/*时序:
        启动时先南北红灯亮 东西绿灯亮
        25秒后东西绿灯转为黄灯每秒闪一次
		则亮0.5秒再灭0.5秒 闪5次之后
		转为南北绿灯亮东西红灯亮
		25秒后南北绿灯转为黄灯每秒闪一次
		则亮0.5秒再灭0.5秒 闪5次
		然后循环 则60秒一个循环*/
unsigned char Count;
unsigned char HalfSecond;

void Timer0_Init(void)
{
  TMOD=0x01;//T0为16位定时器计数器
  TH0=-50000/256;
  TL0=-50000%256;//用12兆晶振时为50毫秒溢出一次
}

void IO_Init(void)
{
  P0=0x00;
  P1=0x00;
  P1=0x11; //南北红灯亮 东西绿灯亮
  P3=0xff;
}
void System_Init(void)
{
  IO_Init();
  Timer0_Init();
  TR0=1;
  ET0=1;
  EA=1;
}
//用两位LED的动态显示以显示南北或东西方向的时间
code unsigned char Table[10]={0x3f,};
xdata unsigned char Dis_Buf[2]={0};

void NmDelay(unsigned char n)
{
  unsigned char i=0;
  while(n--)
  {
    for(i=0;i<125;)
	 i++;
  }
}
void PreDisplay(void)
{
  unsigned char Temp=0;
  Temp=HalfSecond/2;
  if(Temp>25&&Temp<30)
  Temp-=25;
  if(Temp>30&&Temp<55)
  Temp-=30;
  if(Temp>55)
  Temp-=55;
  Dis_Buf[0]=Temp/10;
  Dis_Buf[1]=Temp%10;
}

void Display(void)
{
  PreDisplay();
  P0=Table[Dis_Buf[1]];
  P3_5=0;
  NmDelay(10);
  P0=Table[Dis_Buf[0]];
  P3_5=1;
  P3_4=0;
  NmDelay(10);
}

main()
{
  SP=0x60;
  System_Init();
  while(1)
  {
    Display();
  }
}

void Timer0(void) interrupt 1 using 1
{
  //TR0=1;
  ET0=0;
  if(Count++==10)
  {
    Count=0;
    HalfSecond++; 
    if(HalfSecond==50)
    {
      P1_4=0;
   	  P1_5=1;
    }
    if(HalfSecond>50&&HalfSecond<60)
    {
      if(((HalfSecond-50)%2)!=0)
        P1_5=0;
	  else P1_5=1;
    }
	if(HalfSecond==60)
	{
	  P1_5=0;
	  P1_0=0;
	  P1_1=1;
	  P1_3=1;
	}
	if(HalfSecond==110)
	{
	  P1_1=0;
	  P1_2=1;
	}
	if(HalfSecond>110&&HalfSecond<120)
    {
      if(((HalfSecond-110)%2)!=0)
        P1_2=0;
	  else P1_2=1;
    }
	if(HalfSecond>=120)
	{
	   HalfSecond=0;
	   P1_0=1;
	   P1_4=1;
	   P1_3=0;
     }
  }	
  ET0=1; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -