雷锋杰定稿 - 图文(7)

2019-04-17 14:38

中国地质大学江城学院毕业设计(论文)

if(k3!=1) //当K3(确认)键按下时 {

display(); //调用显示,用于延时消抖 if(k3!=1) {

TR0=1; //启动定时器 Buzzer_Indicate=0;

sec_nb=set_timenb; //从中断回复,仍显示设置过的数值 sec_dx=set_timedx; //显示设置过的时间 if(set==0) //时间倒时到0时 {

P2=0X00; //东西绿灯,南北红灯 Green_dx=1; Red_nb=1;

sec_nb=sec_dx+5; //回到初值 } else {

P2=0x00; //南北绿灯,东西红灯 Green_nb=1; Red_dx=1;

sec_dx=sec_nb+5; } } }

if(k4!=1) //当K4(切换)键按下 {

display(); //调用显示,用于延时消抖 if(k4!=1) {

TR0=0;

set=!set; //取反set标志位,以切换调节方向dx_nb=set; do {

display(); }

while(k4!=1); } }

if(k5!=1) //当K5(禁止)键按下时 {

display(); //调用显示,用于延时消抖

26

中国地质大学江城学院毕业设计(论文)

if(k5!=1) {

TR0=0; //关定时器 P2=0x00; Red_dx=1;

Red_nb=1; //全部置红灯

sec_dx=00; //四个方向的时间都为00 sec_nb=00;

Buzzer_Indicate=1; do {

display(); }

while(k5!=1); } }

if(k6!=1) //当K6(夜间模式)按下 {

display(); //调用显示,用于延时消抖 if(k6!=1) {

TR0=0; //关定时器 P2=0x00; Yellow_dx=1;

Yellow_nb=1; //全部置黄灯

sec_dx=00; //四个方向的时间都为00 sec_nb=00;

Buzzer_Indicate=1; do {

display(); }

while(k6!=1); } } }

void display(void) //显示子程序 {

buf[1]=sec_nb/10; //第1位 东西秒十位 buf[2]=sec_nb; //第2位 东西秒个位 buf[3]=sec_dx/10; //第3位 南北秒十位 buf[0]=sec_dx; //第4位 南北秒个位 P1=0xff; // 初始灯为灭的 P0=0x00;

P1=0xfe; //片选LED1

27

中国地质大学江城学院毕业设计(论文)

P0=table[buf[1]]; //送东西时间十位的数码管编码 delay(1); //延时 P1=0xff; //关显示 P0=0x00;

P1=0xfd; //片选LED2 P0=table[buf[2]]; delay(1); P1=0xff; P0=0x00;

P1=0Xfb; //片选LED3 P0=table[buf[3]]; delay(1); P1=0xff; P0=0x00; P1=0Xf7;

P0=table[buf[0]]; //片选LED4 delay(1); }

void time0(void) interrupt 1 using 1 //定时中断子程序 {

TH0=0X3C; //重赋初值 TL0=0XB0;

TR0=1; //重新启动定时器 countt0++; //软件计数加1 if(countt0==10) {

if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //东西黄灯闪 {

Green_dx=0; Yellow_dx=0; Buzz=0; }

if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //南北黄灯闪 {

Green_nb=0; Yellow_nb=0; Buzz=0; } }

if(countt0==20) // 定时器中断次数=20时(即1秒时) { countt0=0; //清零计数器 sec_dx--; //东西时间减1

28

中国地质大学江城学院毕业设计(论文)

sec_nb--; //南北时间减1

if((sec_nb<=5)&&(dx_nb==0)&&(shanruo==1)) //东西黄灯闪 {

Green_dx=0; Yellow_dx=1; Buzz=1; }

if((sec_dx<=5)&&(dx_nb==1)&&(shanruo==1)) //南北黄灯闪 {

Green_nb=0; Yellow_nb=1; Buzz=1; }

if(sec_dx==0&&sec_nb==5) //当东西倒计时到0时,重置5秒,用于黄灯闪烁时间 {

sec_dx=5; shanruo=1; }

if(sec_nb==0&&sec_dx==5) //当南北倒计时到0时,重置5秒,用于黄灯闪烁时间 {

sec_nb=5; shanruo=1; }

if(dx_nb==0&&sec_nb==0) //当黄灯闪烁时间倒计时到0时, {

Buzz=1;

P2=0x00; //重置东西南背方向的红绿灯 Green_nb=1; Red_dx=1; dx_nb=!dx_nb; shanruo=0;

sec_nb=set_timenb; //重赋南北方向的起始值 sec_dx=set_timenb+5; //重赋东西方向的起始值 }

if(dx_nb==1&&sec_dx==0) //当黄灯闪烁时间到 {

P2=0X00; //重置东西南北的红绿灯状态 Green_dx=1; Red_nb=1; dx_nb=!dx_nb; shanruo=0;

sec_dx=set_timedx; //重赋东西方向的起始值 sec_nb=set_timedx+5; //重赋南北方向的起始值 }

29

中国地质大学江城学院毕业设计(论文)

} }

//外部中断0

void int0(void) interrupt 0 using 1 //只允许东西通行 {

TR0=0; //关定时器 P2=0x00;

Green_dx=1; //东西方向置绿灯 Red_nb=1; //南北方向为红灯 Buzzer_Indicate=0;

sec_dx=00; //四个方向的时间都为00 sec_nb=00; }

//外部中断1

void int1(void) interrupt 2 using 1 //只允许南北通行 {

TR0=0; //关定时器 P2=0x00;

Green_nb=1; //置南北方向为绿灯 Red_dx=1; //东西方向为红灯 Buzzer_Indicate=0;

sec_nb=00; //四个方向的时间都为00 sec_dx=00; }

void logo()//开机的Logo \{

for(n=0;n<50;n++) {

P0=0x40; P1=0xfe; delay(1); P1=0xfd; delay(1); P1=0Xfb; delay(1); P1=0Xf7; delay(1); P1 = 0xff; } }

void Buzzer()

30

中国地质大学江城学院毕业设计(论文)

{

if(Buzzer_Indicate==1) Buzz=!Buzz; else Buzz=1; }

void delay(int ms) //延时子程序 {

uint j,k;

for(j=0;j

for(k=0;k<124;k++); //大约1毫秒的延时}

31


雷锋杰定稿 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:倾情赠送:智能化弱电系统解决方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: