找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1503|回复: 1
收起左侧

求助!基于单片机的篮球电子计分器程序不会改

[复制链接]
ID:457891 发表于 2018-12-30 17:41 | 显示全部楼层 |阅读模式
12黑币
功能:1.可以显示双方的分数,具有一分、二分、三分三种按键2.采用数码显示器显示。
3.可选择实现:统计该局各得分情况(三分球多少个,等等)
4.能够显示年月日。





程序:
  1. #include<reg52.h>
  2. #define ucharunsigned char
  3. #define uintunsigned int
  4. char yue,ri;
  5. int nian;
  6. sbit RS=P2^7;
  7. sbit E=P2^5;
  8. sbit K8=P3^5;sbitK1=P3^2;
  9. sbit K2=P3^3;
  10. sbit K3=P3^7;
  11. sbit K4=P3^6;
  12. sbit K5=P3^1;
  13. sbit K6=P3^0;
  14. sbit K7=P3^4;
  15. sbitbeep=P2^0;  
  16. uchar bb,cc;
  17. uchar codetable1[]={"H.T 000:000 R.T "};
  18. uchar codetable2[]="2018-12-13";
  19. void delay(uintz)  
  20. {
  21.        uint x;
  22.        uchar y;
  23.        for(x=z;x>0;x--)
  24.             for(y=110;y>0;y--);
  25. }
  26. voidwrite_com(uchar com)
  27. {
  28.        RS=0;
  29.        P0=com;
  30.        delay(5);
  31.        E=1;
  32.        delay(5);
  33.        E=0;
  34. }
  35. voidwrite_date(uchar date)
  36. {
  37.        RS=1;
  38.        P0=date;
  39.        delay(5);
  40.        E=1;
  41.        delay(5);
  42.        E=0;
  43. }
  44. void write_yr(ucharadd,uchar data)                        
  45. {
  46.        uchar shi,ge;
  47.        shi=data/10;
  48.        ge=data%10;
  49.        write_com(0x80+add);
  50.        write_data(0x30+shi);
  51.        write_data(0x30+ge);
  52. }
  53. void write_nian(ucharadd,uint dat)                  
  54. {
  55.        uint qian,bai,shi,ge;
  56.        qian=dat/1000;
  57.        bai=dat%1000/100;
  58.        shi=dat%100/10;
  59.        ge=dat%10;
  60.        write_com(0x80+add);
  61.        write_data(0x30+qian);
  62.        write_data(0x30+bai);
  63.        write_data(0x30+shi);
  64.        write_data(0x30+ge);
  65. }
  66. voidLCD1602_init()
  67. {
  68.        uchar i;
  69.        bb=0;   
  70.        cc=0; ˉ
  71.        TMOD=0x10;   
  72.        TL1=0x00;
  73.        TH1=0x4c;
  74.        EA=1;  
  75.        ET1=1;   
  76.        TR1=0;   
  77.        EX0=1;   
  78.        EX1=1;   
  79.        IT0=1;   
  80.        IT1=1;   
  81.        E=0;
  82.        beep=0;
  83.        nian=2018;
  84.        yue=12;
  85.        ri=13;
  86.        write_com(0x38);  
  87.        write_com(0x0c);
  88.        write_com(0x06);
  89.        write_com(0x01);
  90.        write_com(0x80);  
  91.        for(i=0;i<16;i++)
  92.        {
  93.             write_date(table1);
  94.        }
  95.        write_com(0x80+0x40);
  96.        for(i=0;i<16;i++)
  97.        {
  98.             write_date(table2);
  99.        }
  100. }
  101. //·Öêy¸üDÂ×óoˉêy
  102. voidpoint_lcd(uchar add,uchar dat)
  103. {
  104.        write_com(0x80+add);
  105.        write_date(0x30+dat/100);
  106.        write_date(0x30+(dat%100)/10);
  107.        write_date(0x30+dat%10);
  108.        write_com(0x80+add);
  109. }
  110. //°′¼üé¨Ãè×óoˉêy
  111. void keyscan()
  112. {
  113.        if(K3==0)   
  114.        {
  115.             while(K3==0);
  116.               bb++;
  117.             point_lcd(0x04,bb);
  118.             if(K3==0)   
  119.             {
  120.                         while(K3==0);
  121.                         delay(20);
  122.             }
  123.        }
  124.        else if(K4==0)   
  125.        {
  126.             while(K4==0);
  127.               bb=bb+2;
  128.             point_lcd(0x04,bb);
  129.             if(K4==0)
  130.             {
  131.                         while(K4==0);
  132.                         delay(20);
  133.             }
  134.        }
  135.        else if(K7==0)   
  136.        {
  137.             while(K7==0);
  138.               bb=bb+3;
  139.             point_lcd(0x04,bb);
  140.             if(K7==0)
  141.             {
  142.                         while(K7==0);
  143.                         delay(20);
  144.             }
  145.        }
  146.        else if(K5==0)   
  147.        {
  148.             while(K5==0);
  149.               cc++;
  150.             point_lcd(0x08,cc);
  151.             if(K5==0)
  152.             {
  153.                         while(K5==0);
  154.                         delay(20);
  155.             }
  156.        }
  157.        else if(K6==0)   
  158.        {
  159.             while(K6==0);
  160.               cc=cc+2;
  161.             point_lcd(0x08,cc);
  162.             if(K6==0)
  163.             {
  164.                         while(K6==0);
  165.                         delay(20);
  166.             }
  167.        }
  168.        else if(K8==0)   
  169.        {
  170.             while(K8==0);
  171.               cc=cc+3;
  172.             point_lcd(0x08,cc);
  173.             if(K8==0)
  174.             {
  175.                         while(K8==0);
  176.                         delay(20);
  177.             }
  178.        }
  179. }
  180. //Ö÷oˉêy
  181. void main()
  182. {
  183.        LCD1602_init();
  184.        while(1)
  185.        {
  186.             keyscan();  
  187.        }
  188. }

复制代码

回复

使用道具 举报

ID:1 发表于 2018-12-31 14:29 | 显示全部楼层
您这个问题给的信息不全,估计是没人能回答得了的,先转移到冷门区了,自行点击编辑按钮补充一下吧,审核员会帮你重新转到热门问答区的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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