标题: 51单片机的篮球计分器课程设计报告 [打印本页]
作者: junjieferry 时间: 2018-7-3 22:17
标题: 51单片机的篮球计分器课程设计报告
课程设计实验报告
一、题目:
篮球记分器
STC89C52 12M晶振 四位一体数码管 两位数码管2个 4.7K欧排阻2个 极性电容 电容22pF 电阻10K欧 开关8个 导线若干
1.12分钟倒计时
- 分别给A、B队加1、2、3分并显示
- 换场A、B两队分数交换
- 暂停
初始化定时器T0,并开启T0中断,十二分钟倒计时开始工作,每隔20uS数码管显示分、秒,循环检查各开关是否按下并做相应处理。判断是aa还是bb按下,再按one则给相应的队加一分,按two加两分,按three加三分;如果exchange按下,则交换AB两队分数;如果stop按下,则暂停工作。
六、体会
通过这次设计制作,进一步了解到单片机最小系统和工作原理,掌握了定时器和数码管的使用。真心体会到数码管的引脚连线是个复杂的过程,第一次连接好后由于线接的太乱,有断开和连上的地方,没有成功,第二次重新规整了连线,终于使单片机正常工作了。
- #include<reg51.h>
- unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x00,0x90 };
- int i=11,j=59,a=0,b=0,m=0,n=0,temp,s=0,r=24,k;
- sbit aa=P0^0;
- sbit bb=P0^1;
- sbit one=P0^2;
- sbit two=P0^3;
- sbit three=P0^4;
- sbit exchange=P0^5;
- sbit stop=P0^6;
- sbit led=P3^6;
- sbit tt=P3^7;
-
- void delay(int x)
- {
- int w,q;
- for(w=0;w<x;w++)
- for(q=0;q<120;q++);
- }
-
- void display(int i,int j,int a,int b)
- {
- P2 = 0x01;
- P1 = seg[i/10];
- delay(1);
- P2 = 0x00;
-
- P2 = 0x02;
- P1 = seg[i%10];
- delay(1);
- P2 = 0x00;
-
- P2 = 0x04;
- P1 = seg[j/10];
- delay(1);
- P2 = 0x00;
-
-
- P2 = 0x08;
- P1 = seg[j%10];
- delay(1);
- P2 = 0x00;
-
-
- P2= 0x10;
- P1 = seg[a/10];
- delay(1);
- P2= 0x00;
-
- P2= 0x20;
- P1 = seg[a%10];
- delay(1);
- P2 = 0x00;
-
-
- P2 = 0x40;
- P1 = seg[b/10];
- delay(1);
- P2 = 0x00;
-
-
- P2= 0x80;
- P1 = seg[b%10];
- delay(1);
- 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==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(three==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;}}
- }
- }
复制代码
完整的Word格式文档51黑下载地址:
作者: 2955147153 时间: 2018-10-23 14:30
黄色的代表什么意思为什么我的仿真图没有黄色的标志
作者: fengjixu 时间: 2018-11-29 18:34
数码管是用的什么数码管
作者: 她的鱼塘 时间: 2018-11-29 20:45
四位一体数码管用的是共阴极还是共阳极
作者: 她的鱼塘 时间: 2018-11-29 21:17
兄弟你的程序有一处错误
作者: zzz1014 时间: 2018-11-30 01:28
厉害了
作者: 她的鱼塘 时间: 2018-11-30 12:39
运行不了啊楼主
作者: sunhaossa 时间: 2018-12-3 08:46
楼主能私发下吗?
作者: zzjay 时间: 2018-12-24 13:58
那个数码管下面一排引脚看不到连线,急啊
作者: 坏小子科技 时间: 2019-6-20 13:34
哪里错啦
作者: 坏小子科技 时间: 2019-6-20 13:35
明明运行不了,不懂楼主截图哪来的
作者: 姨妈且痛经 时间: 2020-10-26 16:01
仿真图有高清吗
作者: 君莫问 时间: 2020-12-8 08:10
哪里错了,运行不了?
作者: 啦啦啦啦000128 时间: 2021-1-7 23:23
您好,请问那2个7sge灯前面8个引脚接吗
作者: jockli 时间: 2021-3-23 09:59
要是能把24秒倒计时加进去就好了
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |