四川科技职业学院毕业论文设计
第 33 页
if(flgaa==1) jtdb(); //当flgaa=1时,回到jtdb()函数 if(flgaa==2) jtday(); //当flgaa=2时,回到jtday()函数 if(flgaa==3) jtdby(); //当flgaa=3时,回到jtday()函数 这样的作用是,紧急模式从哪里进入,回到哪里 } } } }
/*****************************************************/ /* 函数名:qm() */ /* 功能:使所有的交通信号灯全部熄灭 */ /*****************************************************/ void qm() {
N_green=1; N_red=1;
N_yellow=1;
S_green=1; S_red=1; S_yellow=1;
W_green=1; W_red=1;
W_yellow=1;
E_green=1; E_red=1; E_yellow=1; }
/*****************************************************/ /* 函数名:set_djs1() */ /* 功能:设定南北方向倒计时时间 */ /*****************************************************/ void set_djs1() {
while(1) { djsxs1(); //南北方向数码管显示当前时间
修德技精 勤思协作
四川科技职业学院毕业论文设计
第 34 页
if(zj==0) //增加按键按下 { delayms(3); if(zj==0) { while(!zj); //去除抖动,确认是否增加按键按下 if(djs1>=99) djs1=99; //倒计时最大设定时间为99秒 else djs1++; //时间小于99秒时加一 nbdjs=djs1; //保存当前设定时间 } } if(jx==0) //减少按键按下 { delayms(3); if(jx==0) { while(!jx); //去除抖动,确认是否减少按键按下 if(djs1<=6) djs1=6; //倒计时最小设定时间为6秒 else djs1--; //时间大于6秒时减一 nbdjs=djs1; //保存当前设定时间 } } if(menu==0) //设定时间按键按下 { delayms(3); if(menu==0) { while(!menu); //去除抖动,确认是否按下 TR0=1; //定时器停止 nbdjs=djs1; //保存当前设定时间 jtda(); //调用函数 } } } }
/*****************************************************/
修德技精 勤思协作
四川科技职业学院毕业论文设计
第 35 页
/* 函数名:set_djs() */ /* 功能:设定东西方向倒计时时间 */ /*****************************************************/ void set_djs() {
while(1) { djsxs(); 管显示当前时间 if(zj==0) { delayms(3); if(zj==0) { while(!zj); 动,确认是否增加按键按下 if(djs>=99) djs=99; 大设定时间为99秒 else djs++; 秒时加一 dxdjs=djs; 定时间 } } if(jx==0) 下 { delayms(3); if(jx==0) { while(!jx); 动,确认是否减少按键按下 if(djs<=6) djs=6; 小设定时间为6秒 else djs--; 6秒时减一 dxdjs=djs; 定时间 } } if(menu==0) 按键按下 { delayms(3); if(menu==0) { while(!menu); 修德技精 勤思协作 //东西方向数码 //增加按键按下 //去除抖 //倒计时最 //时间小于99 //保存当前设 //减少按键按 //去除抖 //倒计时最 //时间大于 //保存当前设 //设定时间 //去除抖动,确
四川科技职业学院毕业论文设计
第 36 页
认是否按下 TR0=0; //定时器停止 dxdjs=djs; //保存当前设定时间 set_djs1(); //调用南北倒计时时间设定函数 } } } }
/*****************************************************/ /* 函数名:yj() */ /* 功能:夜间模式,按下夜间模式按键后,四个方向 */ /* 数码管灭,黄灯闪烁,使用与夜晚车辆较少 */ /* 时使用。 */ /*****************************************************/ void yj() {
int i; qm(); //信号灯全部熄灭 while(1) {
W_yellow=0; //以下四行表示四个方向的黄灯亮 E_yellow=0; S_yellow=0; N_yellow=0;
for(i=0;i<2000;i++) //for语句,在这个作用是循环执行“是否夜间模式按键”按下,起到延时左右 { if(k1==0) //夜间模式按键按下 { delayms(3); if(k1==0) { while(!k1); //去除抖动,确认是否按下 TR0=1; //启动定时器,以下四句用来判断回到哪个模式的 if(flgaa==0) jtda(); //当flgaa=0时,回到jtda()函数 if(flgaa==1) jtdb(); //当flgaa=1时,回到jtdb()函数 if(flgaa==2) jtday(); //当flgaa=2
修德技精 勤思协作
四川科技职业学院毕业论文设计
第 37 页
时,回到jtday()函数 if(flgaa==3) jtdby(); //当flgaa=3时,回到jtday()函数 这样的作用是,紧急模式从哪里进入,回到哪里 } } }
W_yellow=1; //以下四行表示四个方向的黄灯亮 E_yellow=1; S_yellow=1; N_yellow=1;
for(i=0;i<2000;i++) //for语句,在这个作用是循环执行“是否夜间模式按键”按下,起到延时左右 { if(k1==0) //夜间模式按键按下 { delayms(3); if(k1==0) { while(!k1); //去除抖动,确认是否按下 TR0=1; //启动定时器,以下四句用来判断回到哪个模式的 if(flgaa==0) jtda(); //当flgaa=0时,回到jtda()函数 if(flgaa==1) jtdb(); //当flgaa=1时,回到jtdb()函数 if(flgaa==2) jtday(); //当flgaa=2时,回到jtday()函数 if(flgaa==3) jtdby(); //当flgaa=3时,回到jtday()函数 这样的作用是,紧急模式从哪里进入,回到哪里 } } } } }
/*****************************************************/ /* 函数名:jtdb() */ /* 功能:交通灯东西方向绿灯亮,红灯灭 */ /* 交通灯南北方向红灯亮,绿灯灭 */ /*****************************************************/ void jtdb() {
修德技精 勤思协作