在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → 交通信号灯

交通信号灯

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.06M
  • 下载次数:9
  • 浏览次数:167
  • 发布时间:2020-12-10
  • 实例类别:一般编程问题
  • 发 布 人:孤夏20
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 信号 交通

实例介绍

交通信号灯是交通指挥中的重要组成部分,是道路交通的基本语言。交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。


【源码目录】

交通信号灯

├── 程序
│   ├── main.LST
│   ├── main.OBJ
│   ├── main.c
│   ├── 信号灯
│   ├── 信号灯.M51
│   ├── 信号灯.hex
│   ├── 信号灯.lnp
│   ├── 信号灯.plg
│   ├── 信号灯.uvopt
│   ├── 信号灯.uvproj
│   ├── 信号灯_uvopt.bak
│   └── 信号灯_uvproj.bak
└── 仿真电路
    ├── Last Loaded 信号灯.DBK
    ├── 信号灯.DSN
    └── 信号灯.PWI

2 directories, 15 files



【核心代码】

#include<reg51.h>
sbit SN_green=P0^3;
sbit SN_yellow=P0^4;
sbit SN_red=P0^5;
sbit EW_green=P0^0;
sbit EW_yellow=P0^1;
sbit EW_red=P0^2;
unsigned char data cnt_sn,cnt_ew;
unsigned int data T1_cnt;
unsigned char data state_val_sn,state_val_ew;
char code led_seg_code[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char code init_sn[3]={24,4,29};
char code init_ew[3]={29,24,4};
unsigned int data flag0,inter0,flag1,inter1;
void delay(unsigned int t)
{
  while(--t);
}
void led_show(unsigned int u,unsigned int v)
{

unsigned char i;
i=u%10;
P1=led_seg_code[i];
P3=0xef;
delay(50);
P3=0xff;

i=u%100/10;
P1=led_seg_code[i];
P3=0xdf;
delay(50);
P3=0xff;

i=v%10;
P2=led_seg_code[i];
P3=0xbf;
delay(50);
P3=0xff;

i=v%100/10;
P2=led_seg_code[i];
P3=0x7f;
delay(50);
P3=0xff;
}
void timer1() interrupt 3
{
T1_cnt ;
if(T1_cnt>3999)
{
T1_cnt=0;

if(cnt_sn!=0)
{
cnt_sn--;
if(inter0==1&&flag0==0)
{
SN_green=1;
EW_red=1;
flag0=1;
}
else if(inter0==1&&flag0==1)
{
SN_green=0;
EW_red=0;
flag0=0;
}
else if(inter1==1&&flag1==0)
{

SN_red=1;
EW_green=1;
flag1=1;
}
else if(inter1==1&&flag1==1)
{

SN_red=0;
EW_green=0;
flag1=0;
}
}
else
{ if(inter0==1||inter1==1)state_val_sn=1;
inter0=0;inter1=0;
state_val_sn ;
if(state_val_sn>2)state_val_sn=0;
cnt_sn=init_sn[state_val_sn];
if(state_val_sn==0)
{
SN_green=0;
SN_yellow=1;
SN_red=1;
}
else if(state_val_sn==1)
{
SN_green=1;
SN_yellow=0;
SN_red=1;
}
else if(state_val_sn==2)
{
SN_green=1;
SN_yellow=1;
SN_red=0;
}
}
if(cnt_ew!=0)
{
cnt_ew--;
}
else
{

state_val_ew ;
if(state_val_ew>2)state_val_ew=0;
cnt_ew=init_ew[state_val_ew];
if(state_val_ew==0)
{
EW_green=1;
EW_yellow=1;
EW_red=0;
}
else if(state_val_ew==1)
{
EW_green=0;
EW_yellow=1;
EW_red=1;
}
else  if(state_val_ew==2)
{
EW_green=1;
EW_yellow=0;
EW_red=1;
}
}
}
}
void abnorma1() interrupt 0   //异常1 南北通行
{

cnt_sn=60;
cnt_ew=60;

SN_green=0;
SN_yellow=1;
SN_red=1;
EW_green=1;
EW_yellow=1;
EW_red=0;

flag0=0;
inter0=1;


}
void abnorma2() interrupt 2   //异常2 东西通行
{
cnt_sn=60;
cnt_ew=60;

SN_green=1;
SN_yellow=1;
SN_red=0;
EW_green=0;
EW_yellow=1;
EW_red=1;

flag1=0;
inter1=1;
}
main()
{

cnt_sn=init_sn[0];
cnt_ew=init_ew[0];
T1_cnt=0;
state_val_sn=0;
state_val_ew=0;
SN_green=0;
SN_yellow=1;
SN_red=1;
EW_green=1;
EW_yellow=1;
EW_red=0;
TMOD=0x20;
TH1=0x19;
TL1=0x19;
EA=1;
ET1=1;TR1=1;
IT1=1;EX1=1;
IT0=1;EX0=1;
while(1)
{ delay(10);
led_show(cnt_sn,cnt_ew);
}
}



标签: 信号 交通

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警