nb_green = 1; //灭
if(flag_500ms == 0) //黄灯闪烁 {
nb_yellow = 0; //亮 }
else {
nb_yellow = 1; //灭 } } }
if(flag_dx_nb == 1) {
if(nb_s > 5) {
dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 flag_5m_value = 0;
}else if(nb_s <= 5) //当小于5秒时 {
dx_red = 1; //灭 dx_green = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭 nb_yellow = 1; //灭 if(flag_500ms == 0) {
dx_yellow = 0;//亮 }
else {
dx_yellow = 1;//灭 }
} } }
uchar key_can; //按键值
21
黄灯要闪了 void key() //独立按键程序 {
static uchar key_new;
key_can = 20; //按键值还原 P1 |= 0x1f;
if((P1 & 0x1f) != 0x1f) //按键按下 {
delay_1ms(1); //按键消抖动
if(((P1 & 0x1f) != 0x1f) && (key_new == 1)) { //确认是按键按下 key_new = 0;
switch(P1 & 0x1f) {
case 0x1e: key_can = 4; break; //得到按键值 case 0x1d: key_can = 3; break; //得到按键值 case 0x1b: key_can = 2; break; //得到按键值 case 0x16: key_can = 1; break; //得到按键值 }
} }
else
key_new = 1; }
uchar menu_1,flag_s; void key_with() {
if(key_can == 4) //交通管制按键 {
flag_jdgz ++; if(flag_jdgz > 5) flag_jdgz = 0;
if(flag_jdgz == 1) // 全部亮红灯 {
dx_red = 0; //亮 dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭
nb_yellow = 1; //灭 }
if(flag_jdgz == 2) // 东西红灯 南北绿灯 {
dx_red = 0; //亮
22
dx_green = 1; //灭 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 0; //亮
nb_yellow = 1; //灭 }
if(flag_jdgz == 3) // 南北红灯 东西绿灯 {
dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 0; //亮 nb_green = 1; //灭
nb_yellow = 1; //灭 }
if(flag_jdgz == 4) // 南北绿灯 {
dx_red = 1; //灭 dx_green = 0; //亮 dx_yellow = 1; //灭 nb_red = 1; //灭 nb_green = 0; //亮
nb_yellow = 1; //灭 }
if(flag_jdgz == 5) // 南北黄灯 {
dx_red = 1; //灭 dx_green = 1; //灭 dx_yellow = 0; //亮 nb_red = 1; //灭 nb_green = 1; //灭
nb_yellow = 0; //亮 } }
if(key_can == 1) //设置键 {
menu_1 ++;
if(menu_1 >= 2) {
menu_1 = 0; } }
if(menu_1 == 1) //设置东西的时间 {
23
东西绿灯 东西黄灯
if(key_can == 2) {
dx_time ++ ; //加1 if(dx_time > 99) dx_time = 99; }
if(key_can == 3) {
dx_time -- ; //减1 if(dx_time <= 5) dx_time = 5; }
dis_smg[0] = smg_du[10] ; //显示为A dis_smg[1] = smg_du[10] ; //显示为A dis_smg[2] = smg_du[dx_time % 10] ; dis_smg[3] = smg_du[dx_time / 10] ; }
if(menu_1 == 2) //设置南北的时间 {
if(key_can == 2) {
nb_time ++ ; //加1 if(nb_time > 99) nb_time = 99; }
if(key_can == 3) {
nb_time -- ; //减1 if(nb_time <= 5) nb_time = 5; }
dis_smg[0] = smg_du[11] ; //显示为B dis_smg[1] = smg_du[11] ; //显示为B dis_smg[2] = smg_du[nb_time % 10] ; dis_smg[3] = smg_du[nb_time / 10] ; } }
void main() {
time0_init(); while(1) {
key();
if(key_can < 20)
24
//显示东西设置的时候//显示东西设置的时候
key_with(); if((menu_1 == 0))
jiaotongdeng_dis(); display(); } }
void time0_int() interrupt 1 {
static uchar value; //定时10ms中断一次 TH0 = 0x3c;
TL0 = 0xb0; //50ms value ++;
flag_5m_value++;
if(flag_5m_value % 10 == 0) flag_500ms = ~flag_500ms; if(value >= 20) {
value = 0; flag_1s = 1; } }
25
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库单片机交通灯课程设计报告 - 图文(5)在线全文阅读。
相关推荐: