单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13728|回复: 37
打印 上一主题 下一主题
收起左侧

51单片机篮球计分器程序+电路图

  [复制链接]
跳转到指定楼层
楼主
niuniu 发表于 2015-4-19 23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是电路图:

以下是篮球计分器的c语言程序源代码:
  1. #include<reg52.h>

  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar secs = 0;
  6. uchar minutes = 1;
  7. uchar LED,num1,num2,num = 4;
  8. uchar  flag1 = 1,flag2 = 0;
  9. uchar m_secs = 24;
  10. uchar key_value = 0;
  11. uchar table[13] = {1,2,3,4,5,6,7,8,9,0,1,2,3};
  12. uchar code LedNum[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  13. uchar scan_kay(void);
  14. void delay(uchar z);
  15. void INT0_Initial(void)
  16. {
  17.     EX0 = 1;
  18.     IT0 = 1;
  19.     EA = 1;
  20.     P1 = 0xF0;
  21. }

  22. void INT0_Interrupt(void) interrupt 0
  23. {
  24.     uchar temp;
  25.     temp = scan_kay();
  26.     if(temp!=0x7f)
  27.     {
  28.         key_value = temp;
  29.     }
  30.     P1 = 0xF0;
  31. }

  32. void Time0_Initial(void)
  33. {
  34.     TMOD = 0x01;
  35.     TH0 = (65536-50000)/256;
  36.     TL0 = (65536-50000)%256;
  37.     ET0 = 1;
  38.     TR0 = 1;
  39.     EA = 1;
  40.     PT0 = 1;
  41.     PX0 = 0;
  42. }

  43. volatile uchar cnt = 0;
  44. void Time0_Interrupt(void) interrupt 1
  45. {
  46.     TH0 = (65536-50000)/256;
  47.     TL0 = (65536-50000)%256;
  48.     cnt ++;
  49. minutes=11;
  50.     if(cnt==15)
  51.     {
  52.         cnt = 0;
  53.         secs --;
  54.         m_secs --;
  55.         if(flag2==1)
  56.         {
  57.             LED = !LED;
  58.         }
  59.         if(flag2==0)
  60.         {
  61.             LED = 0;
  62.         }
  63.     }
  64.     if(secs>60)
  65.     {
  66.         secs = 59;
  67.         minutes --;
  68.     }
  69.     if(m_secs>24)
  70.     {
  71.         m_secs = 23;
  72.         if(flag1==1)
  73.         {
  74.             flag2 = 1;
  75.         }
  76.         if(flag1==0)
  77.         {
  78.             flag2 = 0;
  79.         }
  80.     }
  81.     if(minutes>60)
  82.     {
  83.         minutes = 11;
  84.         m_secs = 24;
  85.         num ++;
  86.     }
  87.     if(num==4)
  88.     {
  89.         num = 1;
  90.     }
  91. }
  92. void HEXTOBCD(void)
  93. {
  94.     table[0] = LedNum[num];
  95.     table[1] = LedNum[m_secs/10];
  96.     table[2] = LedNum[m_secs%10];
  97.     table[3] = LedNum[minutes/10];
  98.     table[4] = LedNum[minutes%10];
  99.     table[5] = LedNum[secs/10];
  100.     table[6] = LedNum[secs%10];
  101.     table[7] = LedNum[num1/100];
  102.     table[8] = LedNum[num1%100/10];
  103.     table[9] = LedNum[num1%10];
  104.     table[10] = LedNum[num2/100];
  105.     table[11] = LedNum[num2%100/10];
  106.     table[12] = LedNum[num2%10];
  107. }

  108. void Display(uchar *str)
  109. {
  110.     uchar i,temp = 0;
  111.     for(i=0;i<13;i++)
  112.     {
  113.         P0 = 0x00;
  114.         _nop_();
  115.         P2 = temp+i;
  116.         P0 = str[i];
  117.         delay(2);
  118.     }
  119. }
  120. uchar i,j;
  121. void delay(uchar z)
  122. {
  123. for(i=1;i<z;i++)
  124.   for(j=1;j<110;j++);
  125. }

  126. void main()
  127. {
  128.     INT0_Initial();
  129.     Time0_Initial();
  130.     delay(10);
  131.     LED = 0;
  132.     while(1)
  133.     {
  134.         switch(key_value)
  135.      {
  136.             case 12:
  137.       {
  138.                 num1 ++;key_value = 0;
  139.                 flag1 = 0;
  140.                 if(num1>255)
  141.           {
  142.                  num1 = 0;
  143.           }
  144.              break;
  145.       }
  146.             case 13:
  147.       {
  148.                 num1 --;key_value = 0;
  149.                 flag1 = 0;
  150.                 if(num1>255)
  151.           {
  152.                  num1 = 255;
  153.           }
  154.              break;
  155.       }
  156.             case 14:
  157.       {
  158.                 num2 ++;key_value = 0;
  159.                 flag1 = 0;
  160.                 if(num2>255)
  161.           {
  162.                  num2 = 0;
  163.           }
  164.              break;
  165.       }
  166.             case 15:
  167.       {
  168.                 num2 --;key_value = 0;
  169.                 flag1 = 0;
  170.                 if(num2>255)
  171.           {
  172.                  num2 = 255;
  173.           }
  174.              break;
  175.       }
  176.             case 1:
  177.       {
  178.              TR0 = 1;
  179.                 key_value = 0;
  180.              break;
  181.       }
  182.             case 2:
  183.       {
  184.                 num1 = 0;num2 = 0;
  185.              num = 4;
  186.                 secs = 0;minutes = 12;
  187.                 m_secs = 24;
  188.                 key_value = 0;
  189.              TR0 = 1;
  190.              break;
  191.       }
  192.             case 3:
  193.       {
  194.              TR0 = 0;
  195.                 key_value = 0;
  196.              break;
  197.       }
  198.             default:
  199.       {
  200.              break;
  201.       }
  202.      }
  203.         HEXTOBCD();
  204.         delay(5);
  205.         Display(table);
  206.         delay(10);
  207.     }
  208. }
  209. uchar scan_key(void)
  210. {
  211.     uchar i,key_value;
  212.     P1 = 0xFF;
  213.     for(i=0;i<4;i++)
  214.     {
  215.         P1 = ~(1<<i);
  216.         key_value = P1&0xF0;
  217.         if(key_value!=0xF0)
  218.         {
  219.             delay(20);
  220.             key_value = P1&0xF0;
  221.             if(key_value!=0xF0)
  222.          {
  223.                 key_value &= 0xF0;
  224.                 switch(key_value)
  225.              {
  226.                     case 0x70: key_value = 15-(3-i)*4;break;
  227.                     case 0xb0: key_value = 14-(3-i)*4;break;
  228.                     case 0xd0: key_value = 13-(3-i)*4;break;
  229.                     case 0xe0: key_value = 12-(3-i)*4;break;
  230.                     default: key_value = 0x7f;
  231.              }
  232.                 return key_value;
  233.          }
  234.         }
  235.         P1 = 0xFF;
  236.     }
  237.     return 0x7f;
  238. }

  239. uchar scan_kay(void)
  240. {
  241.     uchar key_va1,key_va2;
  242.     key_va1 = scan_key();
  243.     if(key_va1==0x7f)
  244.     {
  245.         return 0x7f;
  246.     }
  247.     do
  248.     {
  249.         key_va2 = scan_key();
  250.     }while(key_va1==key_va2);
  251.     return key_va1;
  252. }
复制代码

篮球计分器的仿真文件下载:http://www.51hei.com/bbs/dpj-51424-1.html

评分

参与人数 5黑币 +32 收起 理由
2452047173 + 5 共享资料的黑币奖励!
水木易安 + 5 共享资料的黑币奖励!
练氏 + 12 淡定
witty + 5
xiaokobe + 5 绝世好帖!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏10 转播转播 分享分享 分享淘帖 顶5 踩
回复

使用道具 举报

沙发
 发表于 2015-4-21 00:59 | 只看该作者
好东西来的..
回复

使用道具 举报

板凳
佼佼の者 发表于 2015-4-25 16:18 | 只看该作者
赞。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

地板
不留余力 发表于 2015-5-25 15:11 | 只看该作者
楼主,板子是自己焊的吗
回复

使用道具 举报

5#
不留余力 发表于 2015-5-25 15:11 | 只看该作者
我很想做,请提供点意见
回复

使用道具 举报

6#
413huade 发表于 2016-3-29 14:50 | 只看该作者
译码器  为什么No model.......
回复

使用道具 举报

7#
HI-XM 发表于 2016-4-16 12:58 | 只看该作者
亲 能分享仿真图发给我吗?   852361229@qq.com
回复

使用道具 举报

8#
无效楼层,该帖已经被删除
9#
无效楼层,该帖已经被删除
10#
0827dongdong 发表于 2016-4-16 19:12 | 只看该作者
顶起,版主加油哦
回复

使用道具 举报

11#
ZhTSh 发表于 2016-4-17 17:30 | 只看该作者
不错不错
回复

使用道具 举报

12#
598509644 发表于 2016-4-18 21:14 | 只看该作者
感谢楼主分享,收藏了先
回复

使用道具 举报

13#
sunxiaohua 发表于 2016-4-19 18:01 | 只看该作者
769984663@qq.com       楼主求电路图文件
回复

使用道具 举报

14#
sunxiaohua 发表于 2016-4-19 18:06 | 只看该作者
还有电路图的显示器是用共阴还是共阳
回复

使用道具 举报

15#
无效楼层,该帖已经被删除
16#
好久不见 发表于 2016-11-17 17:09 | 只看该作者
不错,可以看看
回复

使用道具 举报

17#
xiaokobe 发表于 2016-12-17 19:05 | 只看该作者
sunxiaohua 发表于 2016-4-19 18:06
**** 作者被禁止或删除 内容自动屏蔽 ****

共阴极的
回复

使用道具 举报

18#
witty 发表于 2016-12-25 00:16 | 只看该作者
楼主,能不能把电路图的原图分享给我,谢谢啦!1554744305@qq.com
回复

使用道具 举报

19#
无效楼层,该帖已经被删除
20#
wwww1 发表于 2017-2-1 10:37 | 只看该作者
感谢楼主分享
回复

使用道具 举报

21#
空中的幻想家 发表于 2017-2-19 13:40 | 只看该作者
楼主,跪求电路图的原图分享,谢谢啦!1457325428@qq.com
回复

使用道具 举报

22#
天涯zzzzzzz 发表于 2017-5-21 17:09 | 只看该作者
楼主大人 请分享下仿真图给我吧  这个看不清楚。。。  2337638387@qq.com  谢谢啦!!!
回复

使用道具 举报

23#
miseryman 发表于 2017-5-29 17:48 | 只看该作者
求分享仿真图593511963@qq.com
回复

使用道具 举报

24#
阿斯达多群无多 发表于 2017-10-21 16:47 | 只看该作者
有木有电路原图给发一个 谢谢122313351@qq.com
回复

使用道具 举报

25#
todaaae 发表于 2017-11-2 16:53 | 只看该作者
感谢楼主分享,收藏了先
回复

使用道具 举报

26#
todaaae 发表于 2017-11-2 16:53 | 只看该作者
感谢楼主分享!
回复

使用道具 举报

27#
lxlxlx 发表于 2017-12-21 13:24 | 只看该作者
楼主求原图1359882159@qq.com 非常感谢!!!
回复

使用道具 举报

28#
ch24364426 发表于 2017-12-25 08:57 | 只看该作者
楼主求原图1049877481@qq.com 非常感谢!!!
回复

使用道具 举报

29#
小白求知 发表于 2017-12-26 19:28 | 只看该作者
求楼主分享原图1078327688@qq.com谢谢楼主!!!!
回复

使用道具 举报

30#
magic冯 发表于 2018-5-29 09:49 | 只看该作者
求楼主分享原图1741897614@qq.com谢谢楼主!!!!
回复

使用道具 举报

31#
无效楼层,该帖已经被删除
32#
无效楼层,该帖已经被删除
33#
无效楼层,该帖已经被删除
34#
798775526 发表于 2018-6-2 16:10 | 只看该作者
求楼主分享原图798775526@qq.com谢谢楼主!!!!
回复

使用道具 举报

35#
qwerooo 发表于 2018-6-14 22:33 | 只看该作者

求楼主分享原图469635183@qq.com谢谢楼主!!!!
回复

使用道具 举报

36#
陈绍凯 发表于 2018-6-23 11:54 来自手机 | 只看该作者
136688787@qq.com楼主我也想要仿真图
回复

使用道具 举报

37#
pengliang123 发表于 2018-6-24 09:46 | 只看该作者
2510264378@qq.com感谢楼主想要电路仿真图
回复

使用道具 举报

38#
无效楼层,该帖已经被删除
39#
pengyongnet 发表于 2018-6-27 09:15 | 只看该作者
能分享下源文件图加程序吗
回复

使用道具 举报

40#
pengyongnet 发表于 2018-6-27 09:16 | 只看该作者
能分享下源文件图加程序吗?学习下
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机.

Powered by 单片机教程网

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