好文档 - 专业文书写作范文服务资料分享网站

交通灯控制系统设计 - 图文

天下 分享 时间: 加入收藏 我要投稿 点赞

XX学院课程设计

---------------------*/ uchar rd_emstate(void) {

uchar value; value=P3; value>>=4; value&=0x07;

if(value!=statebef){statebef=value;return 1;}//判断是否有紧急灯状况

发生,保存按键值,置返回标志为1

else return 0; }

/*------------------------

显示函数

----------------------*/ void display(void) {

if(md_flag==1)//显示更改时间状态 {

if(1==red) {// 南北方向红灯时间显示

P2=0xf6; P0=led_table[light_time[0][0]];delay();//分

P2=0xed;

P0=led_table[light_time[0][1]/10];delay();//秒的十位 P2=0xdb;

P0=led_table[light_time[0][1]];delay();//秒的个位 }

else {//南北绿灯东西红灯亮时间显示

P2=0xf6;P0=led_table[light_time[2][0]]; delay();//分钟

P2=0xed;P0=led_table[light_time[2][1]/10]; delay();//秒的十位

15

XX学院课程设计

P2=0xdb;P0=led_table[light_time[2][1]]; delay();//秒的个位 } } else //正常状态,显示时间 {

P2=0xf6; P0=led_table[time/100]; delay();//分钟 P2=0xed; P0=led_table[time/10];delay();// 秒

的十位

P2=0xdb; P0=led_table[time]; delay();//秒的个

} }

/*---------------------------

主函数

--------------------*/ void main() {

//初始化定时器0,外部中断1 EA=1; EX1=1; IT1=1; ET0=1; TMOD=0x01; TH0=-10000/256; TL0=-10000%6; TR0=1; while(1){

if(rd_emstate())//如果有紧急灯按下,进行如下紧急处理 {

16

XX学院课程设计

switch(statebef) {

case 0x04:P1=em_state[0];TR0=0;break;//紧急灯亮 case 0x02:P1=em_state[1];TR0=0;break;//东西应急灯亮 case 0x01:P1=em_state[2];TR0=0;break;//南北应急灯亮 case 0x00:TR0=1;break; default: break;

} }

if(state_flag)//正常状态下时间切换,如果状态标志为1,进行如下处理,进

行状态间切换

{

switch(state) { case

0:time=light_time[0][0]*60+light_time[0][1]; P1=light_state[0];break;//南北红灯亮时间 case

1:time=light_time[1][0]*60+light_time[1][1]; P1=light_state[1];break;//黄灯亮时间 case

2:time=light_time[2][0]*60+light_time[2][1]; P1=light_state[2];break;//南北绿灯亮时间 case

3:time=light_time[1][0]*60+light_time[1][1]; P1=light_state[1];break;//黄灯亮时间 default: break;

}

17

XX学院课程设计

state_flag=0;//清标志位 }

if(nom==0) { md_flag=0;}//恢复时间状态,更改为最近更改的值 display(); } }

/*-----------------

定时器0

--------------------*/

void Time0int(void) interrupt 1 { EA=0;

TH0=-10000/256; TL0=-10000%6; time1s--;

if(time1s==0){//一秒中到,重新置数

time1s=100; time--;//显示时间自减

if(time==0){//显示时间减到0时切换显示时间状态

state++;//四个状态轮流切换 if(state==4) state=0; state_flag=1;//置状态切换标志位 }

} EA=1; }

/*---------------------

外部中断1

----------------------*/

void Exint1(void) interrupt 2

18

XX学院课程设计

{

EA=0;

md_flag=1;//置更改时间标志位 if(red) {

switch(P3&0X07) {

case 6: light_time[0][1]++;

if(light_time[0][1]==60) light_time[0][1]=0;break;//南北方向绿灯时

间 秒加 小于60s

case 5: light_time[0][0]++;

if(light_time[0][0]==10) light_time[0][0]=0;break;//分加 小于10m case 3: red=0;break;//红绿灯切换 } } else

switch(P3&0X07) {

case 6: light_time[2][1]++;

if(light_time[2][1]==60) light_time[2][1]=0;break;

//南北方向红灯时间 秒加 小于60

case 5: light_time[2][0]++;

if(light_time[2][0]==10) light_time[2][0]=0;break;//分加 小于10 case 3: red=1;break;//红绿灯切换 } EA=1; }

19

交通灯控制系统设计 - 图文

XX学院课程设计---------------------*/ucharrd_emstate(void){ucharvalue;value=P3;value>>=4;value&=0x07;if(value!=statebef){statebef=value;return1;}//判断是否有
推荐度:
点击下载文档文档为doc格式
8n9nh92a7p9bpag891bi6tck19hq4z003ev
领取福利

微信扫码领取福利

微信扫码分享