找回密码
 立即注册

QQ登录

只需一步,快速开始

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

简易篮球计分器的单片机源码与仿真

[复制链接]
跳转到指定楼层
楼主
简易计分器,两个外部中断,每次加一。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define dat P0
  5. code uchar d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  6. uint second=0,minter=0,hour=0;
  7. uint mge,mshi,hshi,hge;
  8. static char court=0;
  9.             sbit q1=P2^0;
  10.                         sbit q2=P2^1;
  11.                         sbit q3=P2^2;
  12.                         sbit q4=P2^3;
  13.                         sbit q5=P2^4;
  14.                         sbit q6=P2^5;
  15.                         sbit q7=P2^6;
  16.                         sbit q8=P2^7;
  17.                         sbit key1=P3^2;
  18.                         sbit key2=P3^3;
  19. void delay(uint number)
  20. {
  21.      uchar i,j;
  22.          for(i=0;i<number;i++)
  23.            for(j=0;j<200;j++);
  24. }
  25. void int11() interrupt 1 using 2   //中断服务
  26. {
  27. TH0=0x5c;
  28. TL0=0xb0;
  29. //court++;
  30. }

  31. void int0() interrupt 0 using 1        //外部中断int0
  32. {
  33.   minter++;
  34.   if(minter==99)
  35.     minter=0;
  36. }
  37. void int1() interrupt 2 using 1        //外部中断int1
  38. {
  39. hour++;
  40. if(hour==99)
  41. hour=0;
  42. }
  43. void main()
  44. {
  45. TMOD=0X01;
  46. TH0=0x5c;
  47. TL0=0xb0;
  48. ET0=1;                    //打开定时器T0中断
  49. EX0=1;                    //打开外部中断0中断
  50. EX1=1;                    //打开外部中断1中断
  51. IT0=1;                        //外部中断0触发
  52. IT1=1;                        //外部中断1触发
  53. EA=1;                    //开总中断
  54. TR0=1;                        //启动定时器0
  55. while(1)
  56. {
  57. mshi=minter/10;
  58. mge=minter%10;
  59. hshi=hour/10;
  60. hge=hour%10;

  61. dat=d[mge];
  62. q8=1;
  63. delay(2);
  64. q8=0;

  65. dat=d[mshi];
  66. q7=1;
  67. delay(2);
  68. q7=0;
  69.           
  70. dat=0xbf;        
  71. q6=1;
  72. delay(2);
  73. q6=0;

  74. dat=0xbf;
  75. q5=1;                 
  76. delay(2);
  77. q5=0;

  78. dat=0xbf;
  79. q4=1;
  80. delay(2);
  81. q4=0;

  82. dat=0xbf;
  83. q3=1;
  84. delay(2);
  85. q3=0;

  86. dat=d[hge];
  87. q2=1;
  88. delay(2);
  89. q2=0;

  90. dat=d[hshi];
  91. q1=1;
  92. delay(2);
  93. q1=0;

  94. if(court==20)
  95.    {court=0;
  96.    second++;

  97. ……………………

  98. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
计分器3.rar (57.2 KB, 下载次数: 38)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:436994 发表于 2018-12-3 09:51 | 只看该作者
非常不错,谢谢大佬
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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