找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13429|回复: 14
收起左侧

51单片机的篮球计分器课程设计报告

  [复制链接]
ID:364122 发表于 2018-7-3 22:17 | 显示全部楼层 |阅读模式
课程设计实验报告
一、题目:
篮球记分器
  • 主要元器件:
STC89C52 12M晶振 四位一体数码管 两位数码管2个 4.7K欧排阻2个 极性电容 电容22pF 电阻10K欧 开关8个 导线若干
  • 主要功能:
1.12分钟倒计时
  • 分别给AB队加123分并显示
  • 换场AB两队分数交换
  • 暂停
  • 工作原理:
  • 原理图
  • 方框图
  • 实物图

  • 工作过程:
初始化定时器T0,并开启T0中断,十二分钟倒计时开始工作,每隔20uS数码管显示分、秒,循环检查各开关是否按下并做相应处理。判断是aa还是bb按下,再按one则给相应的队加一分,按two加两分,按three加三分;如果exchange按下,则交换AB两队分数;如果stop按下,则暂停工作。
六、体会
  通过这次设计制作,进一步了解到单片机最小系统和工作原理,掌握了定时器和数码管的使用。真心体会到数码管的引脚连线是个复杂的过程,第一次连接好后由于线接的太乱,有断开和连上的地方,没有成功,第二次重新规整了连线,终于使单片机正常工作了

  1. #include<reg51.h>
  2. unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x00,0x90 };
  3. int i=11,j=59,a=0,b=0,m=0,n=0,temp,s=0,r=24,k;
  4. sbit aa=P0^0;
  5. sbit bb=P0^1;
  6. sbit one=P0^2;
  7. sbit two=P0^3;
  8. sbit three=P0^4;
  9. sbit exchange=P0^5;
  10. sbit stop=P0^6;
  11. sbit led=P3^6;
  12. sbit tt=P3^7;

  13. void delay(int x)
  14. {
  15.               int w,q;
  16.               for(w=0;w<x;w++)
  17.                             for(q=0;q<120;q++);
  18. }

  19. void display(int i,int j,int a,int b)
  20. {
  21.               P2 = 0x01;
  22.               P1 = seg[i/10];
  23.               delay(1);
  24.               P2 = 0x00;

  25.               P2 = 0x02;
  26.               P1 = seg[i%10];
  27.               delay(1);
  28.               P2 = 0x00;
  29.             
  30.               P2 = 0x04;
  31.               P1 = seg[j/10];
  32.               delay(1);
  33.               P2 = 0x00;
  34.             

  35.               P2 = 0x08;
  36.               P1 = seg[j%10];
  37.               delay(1);
  38.    P2 = 0x00;
  39.             

  40.               P2= 0x10;
  41.               P1 = seg[a/10];
  42.               delay(1);
  43.               P2= 0x00;
  44.             
  45.               P2= 0x20;
  46.               P1 = seg[a%10];
  47.               delay(1);
  48.               P2 = 0x00;
  49.             

  50.               P2 = 0x40;
  51.               P1 = seg[b/10];
  52.               delay(1);
  53.               P2 = 0x00;
  54.             

  55.               P2= 0x80;
  56.               P1 = seg[b%10];
  57.               delay(1);
  58.               P2 = 0x00;
  59.             
  60. }

  61. void time0() interrupt 1
  62. {            
  63.     TH0 = 0xb1;
  64.               TL0 = 0xe0;
  65.               m++;
  66.               if(m==50)
  67.               {
  68.                  m=0;
  69.                             j--;
  70.                             if(j==-1)
  71.                                           j = 59;
  72.                             n++;
  73.                             if(n==60)
  74.                             {
  75.                                           n=0;
  76.                                           i--;
  77.                                           if(i==0&&j==0){
  78.                                                         ET0=1;
  79.                                                         TR0 = 1;
  80.                                           }
  81.                             }
  82.               }
  83.               display(i,j,a,b);
  84. }


  85. void main()
  86. {
  87.               P0 = 0x00;
  88.               display(12,0,0,0);
  89.               TMOD = 0x01;
  90.               TH0 = 0xb1;
  91.               TL0 = 0xe0;
  92.               IE = 0x82;
  93.               TR0 = 1;
  94.               while(1)
  95.               {
  96.                             if(aa==1&&one==1)
  97.                                           {a++;display( i, j, a, b);while(one==1);}
  98.                                           else if(aa==1&&two==1)
  99.                                                         { a=a+2;display( i, j, a, b);while(two==1);}
  100.                                                         else if(aa==1&&three==1)
  101.                                                                       {a=a+3;display( i, j, a, b);while(three==1);}
  102.                                                                       else if(bb==1&&one==1)
  103.                                                                                     {b++;display( i, j, a, b);while(one==1);}
  104.                                                                                     else if(bb==1&&two==1)
  105.                                                                                                   { b=b+2;display( i, j, a, b);while(two==1);}
  106.                                                                                                   else if(bb==1&&three==1)
  107.                                                                                                                 { b=b+3;display( i, j, a, b);while(three==1);}
  108.                                                                                                      else if(exchange==1)
  109.                                                                                                                 {temp = a;a = b;b = temp;delay(500);}
  110.                                                                                                                               else if(stop==1)                                                                                    {ET0=0;TR0=0;while(stop==1);while(stop==0);while(stop==1){ET0=1;TR0=1;}}
  111.               }
  112. }
复制代码

完整的Word格式文档51黑下载地址:
51单片机的篮球计分器课程设计(有仿真图和实物图).doc (689.18 KB, 下载次数: 294)
回复

使用道具 举报

ID:453180 发表于 2018-12-24 13:58 | 显示全部楼层
那个数码管下面一排引脚看不到连线,急啊
回复

使用道具 举报

ID:567419 发表于 2019-6-20 13:35 | 显示全部楼层
明明运行不了,不懂楼主截图哪来的
回复

使用道具 举报

ID:413820 发表于 2018-10-23 14:30 | 显示全部楼层
黄色的代表什么意思为什么我的仿真图没有黄色的标志
回复

使用道具 举报

ID:434074 发表于 2018-11-29 18:34 | 显示全部楼层
数码管是用的什么数码管
回复

使用道具 举报

ID:436064 发表于 2018-11-29 20:45 | 显示全部楼层
四位一体数码管用的是共阴极还是共阳极
回复

使用道具 举报

ID:436064 发表于 2018-11-29 21:17 | 显示全部楼层
兄弟你的程序有一处错误
回复

使用道具 举报

ID:436237 发表于 2018-11-30 01:28 | 显示全部楼层
厉害了
回复

使用道具 举报

ID:436064 发表于 2018-11-30 12:39 | 显示全部楼层
运行不了啊楼主
回复

使用道具 举报

ID:438101 发表于 2018-12-3 08:46 | 显示全部楼层
楼主能私发下吗?
回复

使用道具 举报

ID:567419 发表于 2019-6-20 13:34 | 显示全部楼层
她的鱼塘 发表于 2018-11-29 21:17
兄弟你的程序有一处错误

哪里错啦
回复

使用道具 举报

ID:834740 发表于 2020-10-26 16:01 | 显示全部楼层
仿真图有高清吗
回复

使用道具 举报

ID:854268 发表于 2020-12-8 08:10 | 显示全部楼层
坏小子科技 发表于 2019-6-20 13:35
明明运行不了,不懂楼主截图哪来的

哪里错了,运行不了?
回复

使用道具 举报

ID:875107 发表于 2021-1-7 23:23 | 显示全部楼层
您好,请问那2个7sge灯前面8个引脚接吗
回复

使用道具 举报

ID:894520 发表于 2021-3-23 09:59 来自手机 | 显示全部楼层
要是能把24秒倒计时加进去就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表