交通灯控制电路
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//A黄灯,B红灯,延时55s
•
delay_t1(20);
•
for(k=0;k<3;k++) //B绿灯闪烁3次
•
{
•
P1=0xde;
•
delay0_5s1(); //延时0.5s
•
P1=0xdf;
•
delay0_5s1(); //延时0.5s
•
}
•
P1=0xdd;
//A红灯,B黄灯,延时2s
•
delay_t1(4);
触发 • EX1=1; • IT1=1;
触发
//主函数
//T1在工作方式1 //开总中断允许位 //开外部中断0中断允许位 //设置外部中断0为下降沿
//开外部中断1中断允许位 //设置外部中断1为下降沿
流水等控制电路 设计的交通灯程序
• while(1)
•
{
•
P1=0xf3;
//A为绿灯,B为红灯,延时55s
•
delay_t1(20);
•
for(k=0;k<3;k++) //A绿灯闪烁3次
•
{
•
P1=0xf3;
•
delay0_5s1(); //延时0.5s
•
P1=0xfb;
•
delay0_5s1(); //延时0.5s
•
}
•
P1=0xeb;
//A黄灯,B红灯,延时2s
•
delay_t1(4);
•
P1=0xde;
•
i=P1;
//保护现场,暂存 P1口、t0、t1、TH1、TL0
•
j=t0;
•
k=t1;
•
l=TH1;
•
m=TL1;
•
P1=0xdb;
//两个方向都是红灯
•
delay_t1(20);
//延时10s
•
P1=i;
//恢复现场,恢复进入中断前P1口、t0、t1、TH1、TL0
•
t0=j;
•
t1=k;
•
TH1=l;
•
TL1=m;
•}
流水等控制电路
设计的交通灯程序
• void int_1() interrupt 2
//特殊情况中断
•{
•
unsigned char i,j,k,l,m;
•
EA=0;
//关中断
•
i=P1;
//保护现场,暂存P1口、t0、t1、TH1、TL1
•
k=t1;
•
l=TH1;
•
m=TL1;
•
•
}
•}
流水等控制电路
设计的交通灯程序
• void delay_t1(unsigned char t)
•{
•
for(t1=0;t1<t;t1++)
//采用全局变量t1作为循环控制变量
•
delay0_5s1();
•}
• void int_0() interrupt 0
//紧急情况中断
•{
•
unsigned char i,j,k,l,m;
流水等控制电路
作品展示
流水等控制电路
作品展示wenku.baidu.com
流水等控制电路
作品展示
流水等控制电路
作品展示
谢
谢
大
家
EA=1;
//开中断
•
P1=0xf3;
//A道放行
•
delay_t1(10);
//延时5s
•
EA=0;
//关中断
•
P1=i;
//恢复现场,恢复进入中断前P1口、t0、t1、TH1、TL1
•
t0=j;
•
t1=k;
•
TH1=l;
•
TL1=m;
•
EA=1;
//开中断
•}
流水等控制电路
设计的交通灯程序
• void main() •{ • unsigned char k; • TMOD=0x10; • EA=1; • EX0=1; • IT0=1;
流水等控制电路 在正常情况下交通灯控制程序流程
流水等控制电路 中断情况下交通灯状态下交通灯状态流程
流水等控制电路
设计的交通灯程序
• #include<reg51.h>
• unsigned char t0,t1;
//定义全局变量,用来保存延时时间循环次数
• void delay0_5s1()
//延时0.5s
流水等控制电路 交通灯控制系统电路
流水等控制电路
程序设计
• 在正常情况下,交通灯控制程序流程如图4.11所示。在中 断情况下,中断服务程序流程如图4.12所示,特殊情况时, 采用外部中断1方式进入与其相应的中断服务程序,并设 置该中断为低优先级中断;有紧急车辆通过时,采用外部 中断0方式进入与其相应的中断服务程序,并设置该中断 为高优先级中断,实现中断嵌入套。
•{
• for(t0=0;t0<0x0a;t0++) //采用全局变量t0作为循环控制变量
•
{
•
TH1=0x3c;
//设置定时器初值
•
TL1=0xb0;
•
TR1=1;
//启动T1
• TF1=1
while(!TF1);
//查询计数是否溢出,即50ms定时时间到,
• TF1清零
TF1=0;
//50ms定时时间到,将定时器溢出标志位