基于单片机AT89C51的交通灯控制器的设计(5)

2018-12-02 14:45

宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计

{

uchar i;

while(ms--) {

{}

for(i=0;i<200;i++)

}

}

/*中断0处理程序*/

void int0(void) interrupt 0 {

EA=0;/*CPU禁止响应一切中断*/

P1=0xF6,P0=duanma[0];/*东西南北方向均红灯亮,P0口输出0*/

{

P2=weima[0],P0=duanma[(SN_G+Y)];/*南北方向数码管显示可通行 while(1)/*无条件循环*/

时间的个位*/

delayms(10); /*延时*/

P2=weima[1],P0=duanma[(SN_G+Y)/10];/*南北方向数码管显示可通行 delayms(10); /*延时*/

时间的十位*/

P2=weima[2],P0=duanma[(WE_G+Y)];/*东西方向数码管显示可通行时间的个位*/

delayms(10); /*延时*/

P2=weima[3],P0=duanma[(WE_G+Y)/10];/*东西方向数码管显示可通行时间的十位*/

/*设置南北方向通行时间*/ if(K0==0) /*P3^7=0*/ {

delayms(10); /*延时*/

17

宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计

delayms(20);/*延时,把抖动的时间抛掉*/ if(K0==0) */

{ }

SN_G++;/*南北方向绿灯时间+1*/

if(SN_G==100)

SN_G=0;/*由于使用的是两位数码管,当南北方向绿灯时间加到100后清零*/ }

}

/*设置东西方向通行时间*/ if(K1==0) /*P3^6=0*/ {

{

while(K0==0)/*当松开K0开关时,跳出空循环,执行后面的程序

delayms(20);/*延时,把抖动的时间抛掉*/ if(K1==0)

{

while(K1==0)/*当松开K1开关时,跳出空循环,执行后面的程序*/

{ }

WE_G++;/*东西方向绿灯时间+1*/

if(WE_G==100)

WE_G=0;/*由于使用的是两位数码管,当东西方向绿灯时间加到100后清零*/ }

} /*返回*/

if(K3==0) /*P3^5=0*/

delayms(20);/*延时,把抖动的时间抛掉*/

if(K3==0) {

{

18

宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计

while(K3==0)/*当松开K3开关时,跳出空循环,执行后面的程

{ }

count=0;/*清零*/

k=0;/*南北方向通车,东西方向不通车*/

SN=SN_G,WE=SN_G+Y;/*南北方向显示时间为南北方向绿灯通行

序*/

时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/ light();/*调用交通灯函数*/

led(); /*调用数码管函数*/ EA=1; /*CPU开放总中断*/

break;/*跳出*/

}

} } }

/*中断1处理程序*/ {

P1=0xF6,P0=duanma[0];/*东西南北方向均红灯亮,P0口输出0*/ TR0=!TR0;/*计数器停止工作*/ {/*数码管扫描程序,*/

P2=weima[0];/*显示南北方向个位*/ delayms(10);/*延时*/ delayms(10);/*延时*/

P2=weima[2];/*显示东西方向个位*/ delayms(10);/*延时*/

P2=weima[3];/*显示东西方向十位*/ delayms(10);/*延时*/ /*返回*/

EA=0;/*CPU禁止响应一切中断*/ while(1)/*无条件循环*/

void int1(void) interrupt 2

P2=weima[1];/*显示南北方向十位*/

if(K3==0) /*P3^5=0*/ {

19

宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计

delayms(20);/*延时,把抖动的时间抛掉*/

if(K3==0) {

while(K3==0)/*当松开K3开关时,跳出空循环,执行后面的程序*/

{ }

TR0=!TR0;/*启动计数器*/

EA=1;/*CPU开放总中断*/

break;/*跳出*/

}

} } }

/*键盘程序*/ void key() {

/*南北有车而东西无车*/ if(K0==0) /*K0=0*/ {

delayms(20);/*延时,把抖动的时间抛掉*/ if(K0==0) {

while(K0==0)/*当松开K0开关时,跳出循环,执行后面的程序*/ {

light();/*调用交通灯函数*/

led(); /*调用数码管函数*/

}

count=0;/*清零*/

k=0;/*南北方向通车,东西方向不通车*/

SN=SN_G,WE=SN_G+Y;/*南北方向显示时间为南北方向绿灯通行时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/ light();/*调用交通灯函数*/

led(); /*调用数码管函数*/

} }

20

宿州学院本科生毕业设计 基于单片机AT89C51的交通灯控制器的设计

/*南北无车而东西有车*/ if(K1==0) /*K1=0*/ {

delayms(20);/*延时,把抖动的时间抛掉*/ if(K1==0) {

while(K1==0)/*当松开K1开关时,跳出循环,执行后面的程序*/ {

light();/*调用交通灯函数*/

led(); /*调用数码管函数*/

}

count=0;/*清零*/

k=1;/*南北方向不通车,东西方向通车*/

SN=WE_G+Y,WE=WE_G;/*南北方向显示时间为东西方向绿灯通行时间加黄灯闪亮时间,东西方向显示时间为东西方向绿灯通行时间*/ light();/*调用交通灯函数*/ }

/*定时函数*/

void time1(void) interrupt 1 {

TH0=0x3c;

TL0=0xb0;/*计50000个数,用时50ms*/ count++; /*自增运算*/

if(count>=20)/*当count大于或等于20时,历时1s,执行程序*/ {

SN--;/*自减运算*/ WE--;/*自减运算*/ count=0;/*清零*/

if(SN==0||WE==0)/*当SN=0或者WE=0时,执行程序*/ { }

led(); /*调用数码管函数*/ }

k++;/*自增运算*/

if(k>3)/*当k>3时,执行程序*/

21


基于单片机AT89C51的交通灯控制器的设计(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:一年级数学练习题-20以内加减法口算题(4000道)直接打印版[1]

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

马上注册会员

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