找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 788|回复: 0
收起左侧

简单十字路交通红绿灯单片机代码

[复制链接]
ID:1073071 发表于 2023-5-22 18:59 | 显示全部楼层 |阅读模式
屏幕截图 2023-05-22 185510.png

源代码
#include <reg51.h>
sbit EastWestGreen = P1^2;
sbit EastWestYellow = P1^1;
sbit EastWestRed = P1^0;
sbit NorthSouthGreen = P1^3;
sbit NorthSouthYellow = P1^4;
sbit NorthSouthRed = P1^5;

#define TL0_INIT_VALUE 0x1F3F

void timer0_isr() interrupt 1
{
  char i;
  static unsigned char count = 0;
  TH0 = TL0_INIT_VALUE >> 8;
  TL0 = TL0_INIT_VALUE & 0xFF;
  i++;
  if(i==20)
   {
    i=0;
    count++;
        }


  if (count <= 15)
  {
    EastWestGreen = 0;
    EastWestYellow = 0;
    EastWestRed = 1;
  }
  else if (count <= 25)
  {  
    EastWestGreen = 1;
    EastWestYellow = 0;
    EastWestRed = 0;
  }
  else if (count <= 28) {  // 绿灯闪烁3s
    EastWestGreen = !EastWestGreen;
    EastWestYellow = 0;
    EastWestRed = 0;
  } else if (count <= 30) {  // 黄灯亮2s
    EastWestGreen = 0;
    EastWestYellow = 1;
    EastWestRed = 0;
  }
  else
  {  
        count = 0;
  }

  if (count <= 10)
  {
    NorthSouthGreen = 1;
    NorthSouthYellow = 0;
    NorthSouthRed = 0;
  }
  else if (count <= 13)
  {  
    NorthSouthGreen = !NorthSouthGreen;
    NorthSouthYellow = 0;
    NorthSouthRed = 0;
  }
  else if (count <= 15)
  {  
    NorthSouthGreen = 0;
    NorthSouthYellow = 1;
    NorthSouthRed = 0;
  }
  else {  
    NorthSouthGreen = 0;
    NorthSouthYellow = 0;
    NorthSouthRed = 1;
  }
}

void main()
{
  TMOD = 0x01;  
  TH0 = TL0_INIT_VALUE >> 8;  
  TL0 = TL0_INIT_VALUE & 0xFF;
  ET0 = 1;  
  EA = 1;  
  TR0 = 1;  

  while (1)
  {

  }
}

红绿灯.7z

59.81 KB, 下载次数: 10, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表