/**************************************************************** *
*第一个状态:主干道、支干道均亮红灯5S *
*第二个状态:主干道亮绿灯30S、支干道亮红灯 *
*第三个状态:主干道绿灯闪3次转亮黄灯、支干道亮红灯3S *
*第四个状态:主干道亮红灯、支干道亮绿灯25S *
*第五个状态:主干道亮红灯、支干道绿灯闪3次转亮黄灯3S *
*返回到第二个状态 *
* *
***************************************************************/
/* 11.0952M晶振*/
#include<reg51.h>//头文件
#include<intrins.h>//头文件
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit RED_ZHU = P1^0;
sbit YELLOW_ZHU = P1^1;
sbit GREEN_ZHU = P1^2;
sbit RED_ZHI = P1^3;
sbit YELLOW_ZHI = P1^4;
sbit GREEN_ZHI = P1^5;
uint aa, bai,shi,ge,bb; //定义变量
/*数码管显示0-9*/
uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*子函数声明*/
void delay(uint z);
void delay0(uint z);
//void init(uint a);
void display(uint shi,uint ge);
void xtimer0();
void init1();
void init2();
void init3();
void init4();
void init5();
void xint1();
void xint0();
void LED_ON();
void LED_OFF();
/*********************************************************
主函数
*********************************************************/
void main()
{
P0=0XFF;
P1=0xFF;
P2=0xFF;
EA=1;//打开外部中断
EX0=1;//允许外部中断0中断
IT0=0;//INT0为沿触发方式
init1();
while(1)
{
init2();//第2个状态
init3(); //第3个状态
init4(); //第4个状态
init5();//第5个状态
}
}
void init1()//第一个状态:主干道、支干道均亮红灯5S
{
uint temp;
temp=6;//变量赋初值
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
{
RED_ZHU=0; //第一个状态主干道、支干道均亮红灯5S
RED_ZHI=0;
GREEN_ZHU=1;
GREEN_ZHI=1;
YELLOW_ZHU=1;
YELLOW_ZHI=1;
if(aa==10)//定时20*50MS=1S
{
aa=0;//定时完成一次后清0
temp--;//变量自增
//delay(10);
if(temp>250)//定时100S
{
temp=6;//变量清0
break;
}
shi=temp%100/10;//显示十位
ge=temp%10;//显示个位
}
display(ge,shi);
}
}
void init2()//第二个状态:主干道亮绿灯30S、支干道亮红灯
{
uint temp;
temp=31;//变量赋初值
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
{
RED_ZHU=1;
RED_ZHI=0;
GREEN_ZHU=0;
GREEN_ZHI=1;
YELLOW_ZHU=1;//第二个状态:主干道亮绿灯30S、支干道亮红灯
YELLOW_ZHI=1;
if(aa==20)//定时20*50MS=1S
{
aa=0;//定时完成一次后清0
temp--;//变量自增
if(temp==4)//定时100S
{
temp=30;//变量清0
break;
}
shi=temp%100/10;//显示十位
ge=temp%10;//显示个位
}
display(ge,shi);
}
}
void init3() //第三个状态:主干道绿灯闪3次转亮黄灯、支干道亮红灯3S
{
uint temp;
temp=4;//变量赋初值
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
{
RED_ZHI=0;
GREEN_ZHU=1;
//YELLOW_ZHU=~YELLOW_ZHU;
if(aa==20)//定时20*50MS=1S
{
aa=0;//定时完成一次后清0
temp--;//变量自增
YELLOW_ZHU=~YELLOW_ZHU;
if(temp>200)//定时100S
{
temp=4;//变量清0
break;
}
shi=temp%100/10;//显示十位
ge=temp%10;//显示个位
}
display(ge,shi);;
}
}
void init4()//第四个状态:主干道亮红灯、支干道亮绿灯25S
{
uint temp;
temp=26;//变量赋初值
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
{
RED_ZHU=0;
RED_ZHI=1;
YELLOW_ZHU=1;//第一个状态主干道、支干道均亮红灯5S
GREEN_ZHI=0;
if(aa==20)//定时20*50MS=1S
{
aa=0;//定时完成一次后清0
temp--;//变量自增
if(temp==4)//定时100S
{
temp=25;//变量清0
break;
}
shi=temp%100/10;//显示十位
ge=temp%10;//显示个位
}
display(ge,shi);
}
}
void init5()//第五个状态:主干道亮红灯、支干道绿灯闪3次转亮黄灯3S
{
uint temp;
temp=4;//变量赋初值
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
{
RED_ZHI=1;
RED_ZHU=0;
GREEN_ZHU=1;
GREEN_ZHI=1;
//YELLOW_ZHI=~YELLOW_ZHI;
if(aa==20)//定时20*50MS=1S
{
aa=0;//定时完成一次后清0
temp--;//变量自增
YELLOW_ZHI=~YELLOW_ZHI;
if(temp>200)//定时100S
{
temp=4;//变量清0
break;
}
shi=temp%100/10;//显示十位
ge=temp%10;//显示个位
}
display(ge,shi);
}
}
/*显示子函数*/
void display(uint shi,uint ge)
{
P0=0xfd;
P2=table[shi];//显示十位
delay0(5);
P0=0xfe;
P2=table[ge];//显示个位
delay0(5);
}
void xint0() interrupt 0 //外部中断0,这里用2是INT1的优先级为0
{
LED_ON();
}
void LED_ON()//外部中断0显示子程序
{
RED_ZHI=0;
RED_ZHU=0;
GREEN_ZHI=1;
GREEN_ZHU=1;
YELLOW_ZHI=1;
YELLOW_ZHU=1;
delay(2);
return ;
}
/*定时中断子函数*/
void xtimer0() interrupt 1
{
TH0=0x4c;
TL0=0x00;
aa++;
}
/*延时子函数*/
void delay0(uint z)
{
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<110;j++);
}
/*********************************************************
500ms延时函数
晶振:11.0592MHz
*********************************************************/
void delay(unsigned char j)
{
unsigned char k;
unsigned int i;
for(;j>0;j--)
{
for(i=1250;i>0;i--)
{
for(k=180;k>0;k--);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
51单片机交通灯程序设计 交通灯protues仿真程序基于51单片机交通灯仿真源码.zip
共104个文件
bak:12个
hex:10个
lst:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 2 下载量 86 浏览量
2023-03-15
05:37:48
上传
评论 3
收藏 483KB ZIP 举报
温馨提示
51单片机交通灯程序设计 交通灯protues仿真程序基于51单片机交通灯仿真源码
资源推荐
资源详情
资源评论
收起资源包目录
51单片机交通灯程序设计 交通灯protues仿真程序基于51单片机交通灯仿真源码.zip (104个子文件)
2 8KB
3 8KB
3.__i 31B
STARTUP.A51 6KB
STARTUP.A51 6KB
jiaotong_Uv2.Bak 2KB
交通灯_Uv2.Bak 2KB
2_Uv2.Bak 2KB
Crossing_Uv2.Bak 2KB
1_Uv2.Bak 2KB
Crossing_Opt.Bak 1KB
jiaotong_Opt.Bak 1KB
3_Opt.Bak 1020B
2_Opt.Bak 1008B
交通灯_Opt.Bak 846B
1_Opt.Bak 755B
3_Uv2.Bak 0B
交通灯.Bkp 224KB
Crossing.BMP 89KB
交通灯.C 6KB
jiaotong.c 6KB
main.c 5KB
1.c 2KB
3.c 2KB
2.c 2KB
8255.c 396B
Crossing 13KB
Last Loaded 交通灯.DBK 271KB
Last Loaded Crossing.DBK 171KB
Last Loaded jiao.DBK 144KB
Last Loaded 1.DBK 79KB
交通灯.Ddb 234KB
交通灯.DSN 271KB
交通灯.DSN 271KB
Crossing.DSN 171KB
Crossing.DSN 171KB
jiao.DSN 144KB
jiao.DSN 144KB
1.DSN 83KB
1.DSN 83KB
8255.h 398B
Crossing.hex 4KB
Crossing.hex 4KB
jiaotong.hex 3KB
jiaotong.hex 3KB
交通灯.hex 3KB
交通灯.hex 3KB
3.hex 2KB
3.hex 2KB
1.hex 2KB
2.hex 2KB
jiaotong 10KB
jiaotong.lnp 64B
Crossing.lnp 42B
2.lnp 35B
3.lnp 35B
1.lnp 35B
交通灯.lnp 29B
jiaotong.LST 14KB
main.LST 14KB
STARTUP.LST 14KB
STARTUP.LST 14KB
交通灯.LST 14KB
3.LST 6KB
1.LST 5KB
2.LST 5KB
8255.LST 1KB
jiaotong.M51 17KB
Crossing.M51 17KB
交通灯.M51 13KB
3.M51 10KB
2.M51 10KB
1.M51 10KB
main.OBJ 14KB
jiaotong.OBJ 12KB
交通灯.OBJ 11KB
3.OBJ 8KB
1.OBJ 8KB
2.OBJ 8KB
8255.OBJ 3KB
STARTUP.OBJ 749B
STARTUP.OBJ 749B
Crossing.Opt 1KB
jiaotong.Opt 1KB
3.Opt 1018B
1.Opt 905B
交通灯.Opt 843B
2.Opt 755B
Crossing.plg 2KB
jiaotong.plg 663B
3.plg 603B
交通灯.plg 440B
1.plg 329B
2.plg 254B
jiao.PWI 768B
Crossing.PWI 766B
1.PWI 742B
交通灯.PWI 742B
交通灯程序.txt 6KB
jiaotong.Uv2 2KB
共 104 条
- 1
- 2
资源评论
- 微醺932023-07-05发现一个宝藏资源,资源有很高的参考价值,赶紧学起来~
- jinghongguang2024-01-12感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
GJZGRB
- 粉丝: 1015
- 资源: 5730
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功