桂林电子科技大学信息科技学院实训题目:基于单片机的篮球计分牌1系统设计1.1设计要求附录附录1:原理图附录2:仿真图附录3:程序清单#includereg52.h//*************************数码管段代码表**************************//unsignedcharTab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsignedchara=0,//a队分数b=0,//b队分数afg=0,//a队犯规次数bfg=0;//b队犯规次数unsignedchart=24,//倒计时24秒k=0,nk,//倒计时暂停/开始状态h=0,//显示转换状态miao=0,//秒钟fen=12;nl;intbittime=0;//循环次数intbitdisplay=0;//显示sbitP16=P1^6;//a队加分sbitP10=P1^0;//b队加分sbitP11=P1^1;//显示状态切换sbitP12=P1^2;//倒计时暂停/开始sbitP13=P1^3;//24s倒计时重置sbitP14=P1^4;//a队犯规加次数sbitP15=P1^5;//b队犯规加次数sbitP17=P1^7;//a队加2分sbitP24=P2^4;//a队加3分sbitP25=P2^5;//b队加2分sbitP26=P2^6;//b队加3分///***************定时中断服务程序***********************//voidtimer0(void)interrupt1using0{TH0=0Xf8;TL0=0x30;//定时器赋初值switch(bitdisplay){case0:P2=0xf7;if(h==0){P0=Tab[a%10];}//a队分数个位显示if(h==1){P0=Tab[t%10];}//倒计时个位显示if(h==2){P0=Tab[miao%10];}//分钟的个位显示if(h==3){P0=Tab[afg%10];}//a犯规的个位显示break;case1:P2=0xfb;if(h==0){P0=Tab[a/10];}//a队分数十位显示if(h==1){P0=Tab[t/10];}//倒计时十位显示if(h==2){P0=Tab[miao/10];}//每节比赛12分钟,分钟十位显示if(h==3){P0=Tab[afg/10];}//犯规的十位显示break;case2:P2=0xfd;if(h==0){P0=Tab[b%10];}if(h==1){P0=0x00;}if(h==2){P0=Tab[fen%10];}if(h==3){P0=Tab[bfg%10];}break;case3:P2=0xfe;if(h==0){P0=Tab[b/10];}if(h==1){P0=0x00;}if(h==2){P0=Tab[fen/10];}if(h==3){P0=Tab[bfg/10];}break;}bitdisplay++;bittime++;if(bitdisplay==4){bitdisplay=0;}//数码管扫描返回if(bittime==500){bittime=0;if(nl==1)if(!nk){if(t=24&&t0)t--;elset=24;}//k=0;//重置24s倒计时if(k){if(miao--==0){if(fen==0){P3=0x0f;fen=12;miao=0;k=0;}fen--;miao=59;}//12分钟结束,4个灯全亮}}}//**延时程序***//voiddelay(unsignedintt){unsignedintaaa,bbb;for(aaa=0;aaa100;aaa++)for(bbb=0;bbbt;bbb++);}//**************主程序*********************//voidmain(void){TMOD=0x01;TH0=0xf8;TL0=0x30;//定时2msEA=1;ET0=1;TR0=1;//开启定时器while(1){if(!P16)//按键1{delay(100);if(!P16){a++;P3=0xef;if(a==100)a=0;}//a队加分}if(!P10)//按键2{delay(100);if(!P10){b++;P3=0xdf;if(b==100)b=0;}//b队加分}if(!P11)//按键3{delay(100);if(!P11){if(++h=4)h=0;}//显示切换}if(!P12)//按键4{delay(100);if(!P12){if(k++0)k=0;}//倒计时}if(!P13)//按键524秒倒计时{delay(100);if(!P13)nl=nl+1;elseif(nl==2)nl=0;elsenl=nl;}if(!P14)//按键6{delay(100);if(!P14){afg++;k=0;P3=0xbf;if(afg==60)afg=0;}//a队犯规}if(!P15)//按键7{delay(100);if(!P15){bfg++;k=0;P3=0x7f;if(bfg==60)bfg=0;}//b队犯规}if(!P17)//按键8{delay(100);if(!P17)a=a+2;P3=0xef;if(a==100)a=0;//a队加2分}if(!P24)//按键9{delay(100);if(!P24)a=a+3;P3=0xef;if(a==100)a=0;//a队加3分}if(!P25)//按键10{delay(100);if(!P25)b=b+2;P3=0xdf;if(b==100)b=0;//b队加2分}if(!P26)//按键11{delay(100);if(!P26)b=b+3;P3=0xdf;if(b==100)b=0;//b队加3分}}}