/**************************************************************** *
*第一个状态:主干道、支干道均亮红灯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--);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于protues的单片机仿真12应用 (343个子文件)
RTXCONF.A51 154KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 6KB
STARTUP.A51 5KB
STARTUP.A51 5KB
STARTUP.A51 5KB
1302.ASM 69KB
1302.ASM 69KB
dz.asm 15KB
复件 dz.asm 15KB
dz.asm 15KB
复件 dz.asm 15KB
ZDAAAA.ASM 13KB
ZDAAAA.ASM 13KB
1.asm 7KB
1.asm 7KB
液晶显示语音报温.asm 5KB
液晶显示语音报温.asm 5KB
AT24C02 10KB
推箱子游戏_Uv2.Bak 2KB
推箱子游戏_Opt.Bak 2KB
1111.bin 64KB
2222.bin 64KB
3333.bin 64KB
4444.bin 64KB
a000.bin 2KB
C程序.c 6KB
交通灯.C 6KB
交通灯.C 6KB
jiaotong.c 6KB
cs.c 5KB
muxclock4.c 4KB
SNAKE.C 3KB
Operation.C 3KB
AT24C02.c 3KB
PlayMusic.c 3KB
lcd1602.c 2KB
lcd1602a.c 2KB
main.c 1KB
main.c 1KB
cs 16KB
Last Loaded DZWNL.DBK 277KB
Last Loaded DZWNL.DBK 277KB
Backup Of DZWNL.DBK 268KB
Backup Of DZWNL.DBK 268KB
Last Loaded lcd_bus6.DBK 165KB
Last Loaded jiao.DBK 144KB
Last Loaded cc.DBK 130KB
Last Loaded DZ.DBK 128KB
Last Loaded DZ.DBK 128KB
Last Loaded 123.DBK 121KB
Last Loaded 123.DBK 121KB
Last Loaded 推箱子仿真.DBK 119KB
Last Loaded 示波器.DBK 114KB
Last Loaded 8路qiangdadianlu.DBK 101KB
Last Loaded 8路qiangdadianlu.DBK 101KB
Last Loaded MuxClock4.DBK 92KB
Last Loaded snake.DBK 89KB
Last Loaded 1602aa.DBK 79KB
Last Loaded lcd1602m.DBK 79KB
Last Loaded 1.DBK 28KB
交通灯.Ddb 234KB
交通灯.Ddb 234KB
VV.dll 1.57MB
DZWNL.DSN 281KB
DZWNL.DSN 281KB
交通灯.DSN 271KB
交通灯.DSN 271KB
lcd_bus6.DSN 165KB
jiao.DSN 144KB
cc.DSN 131KB
DZ.DSN 129KB
DZ.DSN 129KB
DOS(双核V1.2).DSN 124KB
原理图.DSN 123KB
123.DSN 121KB
123.DSN 121KB
推箱子仿真.DSN 119KB
示波器.DSN 114KB
8路qiangdadianlu.DSN 101KB
8路qiangdadianlu.DSN 101KB
MuxClock4.DSN 92KB
演示6.DSN 92KB
演示7.DSN 91KB
演示5.DSN 91KB
演示4.DSN 90KB
演示8.DSN 89KB
snake.DSN 89KB
演示9.DSN 89KB
液晶显示语音报温.DSN 88KB
液晶显示语音报温.DSN 88KB
演示3.DSN 86KB
演示1.DSN 86KB
演示2.DSN 85KB
1602aa.DSN 80KB
lcd1602m.DSN 80KB
共 343 条
- 1
- 2
- 3
- 4
资源评论
- shiwenzao2012-09-15要是全都有源代码就好 了,不过还是有价值。
- oHeBiZaiHu2012-12-26仿真实例很多,都有用很好
- jungzhou20072013-01-25不错 都挺详细的
- haosipan2012-05-07包含多个仿真实例,有的还带源程序,实在太棒了
chywcp
- 粉丝: 3
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功