《基于51单片机的篮球计分器课程设计》由会员分享,可在线阅读,更多相关《基于51单片机的篮球计分器课程设计(6页珍藏版)》请在金锄头文库上搜索。
1、课程设计实验报告一、题目:篮球记分器二、 主要元器件:STC89C52 12M晶振 四位一体数码管 两位数码管2个 4.7K欧排阻2个 极性电容 电容22pF 电阻10K欧 开关8个 导线若干三、 主要功能:1.12分钟倒计时 2. 分别给A、B队加1、2、3分并显示 3. 换场A、B两队分数交换4. 暂停四、 工作原理:1. 原理图2. 方框图开始置首显示码初始值定时器0初始化开放EA和TR0显示12分钟倒计时 循环检查开关是否按下3. 实物图4. 程序#includeunsigned char code seg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8
2、,0x00,0x90 ;int i=11,j=59,a=0,b=0,m=0,n=0,temp,s=0,r=24,k;sbit aa=P00;sbit bb=P01;sbit one=P02;sbit two=P03;sbit three=P04;sbit exchange=P05;sbit stop=P06;sbit led=P36;sbit tt=P37; void delay(int x)int w,q;for(w=0;wx;w+)for(q=0;q120;q+);void display(int i,int j,int a,int b) P2 = 0x01;P1 = segi/10;de
3、lay(1);P2 = 0x00;P2 = 0x02;P1 = segi%10;delay(1);P2 = 0x00;P2 = 0x04;P1 = segj/10;delay(1);P2 = 0x00;P2 = 0x08;P1 = segj%10;delay(1); P2 = 0x00;P2= 0x10;P1 = sega/10;delay(1);P2= 0x00;P2= 0x20; P1 = sega%10;delay(1);P2 = 0x00; P2 = 0x40;P1 = segb/10;delay(1);P2 = 0x00;P2= 0x80; P1 = segb%10;delay(1)
4、;P2 = 0x00;void time0() interrupt 1 TH0 = 0xb1;TL0 = 0xe0;m+;if(m=50) m=0;j-;if(j=-1)j = 59;n+;if(n=60)n=0;i-;if(i=0&j=0)ET0=1;TR0 = 1;display(i,j,a,b); void main()P0 = 0x00;display(12,0,0,0);TMOD = 0x01;TH0 = 0xb1;TL0 = 0xe0;IE = 0x82;TR0 = 1;while(1)if(aa=1&one=1) a+;display( i, j, a, b);while(one
5、=1);else if(aa=1&two=1) a=a+2;display( i, j, a, b);while(two=1);else if(aa=1&three=1) a=a+3;display( i, j, a, b);while(three=1);else if(bb=1&one=1)b+;display( i, j, a, b);while(one=1);else if(bb=1&two=1) b=b+2;display( i, j, a, b);while(two=1);else if(bb=1&three=1) b=b+3;display( i, j, a, b);while(t
6、hree=1); else if(exchange=1)temp = a;a = b;b = temp;delay(500);else if(stop=1)ET0=0;TR0=0;while(stop=1);while(stop=0);while(stop=1)ET0=1;TR0=1; 五、 工作过程:初始化定时器T0,并开启T0中断,十二分钟倒计时开始工作,每隔20uS数码管显示分、秒,循环检查各开关是否按下并做相应处理。判断是aa还是bb按下,再按one则给相应的队加一分,按two加两分,按three加三分;如果exchange按下,则交换AB两队分数;如果stop按下,则暂停工作。六、体会 通过这次设计制作,进一步了解到单片机最小系统和工作原理,掌握了定时器和数码管的使用。真心体会到数码管的引脚连线是个复杂的过程,第一次连接好后由于线接的太乱,有断开和连上的地方,没有成功,第二次重新规整了连线,终于使单片机正常工作了。