找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3396|回复: 2
收起左侧

基于STC15单片机的记分牌(12864串行+数码管显示+红外遥控)源码

[复制链接]
ID:191428 发表于 2018-4-24 17:45 | 显示全部楼层 |阅读模式
给大家分享一个基于stc15f2k60s2单片机的电子记分牌的制作资料
前几天帮他们写了个记分牌的程序,效果不错。贴出来,需要的拿走。
用了12864串行显示,四段数码管显示
红外遥控器控制
照片。。。弄丢了。。。
1.PNG

2.PNG


单片机源程序如下:
  1. #include        "delay.h"
  2. #include        "GPIO.h"
  3. #include        "Exti.h"
  4. #include        "timer.h"
  5. #include        "lcd12864.h"
  6. #include    "key.h"

  7. sbit leda=P3^4;
  8. sbit ledb=P3^3;

  9. extern unsigned char IrValue[6];
  10. extern uchar ascore;
  11. extern uchar bscore;
  12. extern uchar going_flag=0;
  13. extern uchar game_time=0;
  14. extern uchar lcd_flag=0;
  15. extern uchar teamname=0;
  16. extern uchar gametime=0;
  17. extern uchar change_flag=0;
  18. extern uchar gameover_flag=0;
  19. extern uchar name[2][4]={' ',' ',' ',' ',' ',' ',' ',' '};
  20. extern uchar count_down[6]={'0','0','0','0','0','0'};
  21. extern uchar shuma_numb[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  22. uchar shuma[4]={0,0,0,0};
  23. u8 code awin[]={"  甲队  "};
  24. u8 code bwin[]={"  乙队  "};
  25. u8 code draw[]={"  平局  "};

  26. void lcd_show_time()
  27. {
  28.         uchar k=0;
  29.         lcd_pos(2,2);                //设置显示位置为第四行的第一个字符
  30.         while(k<2)
  31.         {
  32.                 write_dat(count_down[k]);                //显示字符
  33.                 k++;
  34.         }
  35.         write_dat(58);
  36.         lcd_pos(2,4);                //设置显示位置为第四行的第一个字符
  37.         while(k<4)
  38.         {
  39.                 write_dat(count_down[k]);                //显示字符
  40.                 k++;
  41.         }
  42.         write_dat(58);
  43.         lcd_pos(2,6);                //设置显示位置为第四行的第一个字符
  44.         while(k<6)
  45.         {
  46.                 write_dat(count_down[k]);                //显示字符
  47.                 k++;
  48.         }
  49. }

  50. void lcd_show_name(uchar u1,uchar u2,uchar u3,uchar u4)
  51. {
  52.         uchar k=0;
  53.         lcd_pos(u1,u2);                //设置显示位置为第四行的第一个字符
  54.         k = 0;
  55.         while(k<4)
  56.         {
  57.                 write_dat(name[0][k]);                //显示字符
  58.                 k++;
  59.         }
  60.         lcd_pos(u3,u4);                //设置显示位置为第四行的第一个字符
  61.         k = 0;
  62.         while(k<4)
  63.         {
  64.                 write_dat(name[1][k]);                //显示字符
  65.                 k++;
  66.         }
  67. }



  68. void        EXTI_config(void)
  69. {
  70.         EXTI_InitTypeDef        EXTI_InitStructure;                                        //结构定义

  71.         EXTI_InitStructure.EXTI_Mode      = EXT_MODE_RiseFall;        //中断模式,          EXT_MODE_RiseFall, EXT_MODE_Fall
  72.         EXTI_InitStructure.EXTI_Polity    = PolityHigh;                        //中断优先级,   PolityLow,PolityHigh
  73.         EXTI_InitStructure.EXTI_Interrupt = ENABLE;                                //中断允许,     ENABLE或DISABLE
  74.         Ext_Inilize(EXT_INT0,&EXTI_InitStructure);                                //初始化INT0        EXT_INT0,EXT_INT1,EXT_INT2,EXT_INT3,EXT_INT4
  75. }

  76. void        Timer_config(void)
  77. {
  78.         TIM_InitTypeDef                TIM_InitStructure;                                        //????
  79.         TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //??????,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
  80.         TIM_InitStructure.TIM_Polity    = PolityHigh;                        //???????, PolityHigh,PolityLow
  81.         TIM_InitStructure.TIM_Interrupt = ENABLE;                                //??????,   ENABLE?DISABLE
  82.         TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T;                        //?????,     TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
  83.         TIM_InitStructure.TIM_ClkOut    = DISABLE;                                //????????, ENABLE?DISABLE
  84.         TIM_InitStructure.TIM_Value     = 19200;
  85.         TIM_InitStructure.TIM_Run       = ENABLE;                                //???????????, ENABLE?DISABLE
  86.         Timer_Inilize(Timer0,&TIM_InitStructure);                                //???Timer0          Timer0,Timer1,Timer2
  87.         
  88.         TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //??????,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
  89.         TIM_InitStructure.TIM_Polity    = PolityLow;                        //???????, PolityHigh,PolityLow
  90.         TIM_InitStructure.TIM_Interrupt = ENABLE;                                //??????,   ENABLE?DISABLE
  91.         TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T;                        //?????,     TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
  92.         TIM_InitStructure.TIM_ClkOut    = DISABLE;                                //????????, ENABLE?DISABLE
  93.         TIM_InitStructure.TIM_Value     = (65535-5*100);
  94.         TIM_InitStructure.TIM_Run       = ENABLE;                                //???????????, ENABLE?DISABLE
  95.         Timer_Inilize(Timer1,&TIM_InitStructure);                                //???Timer0          Timer0,Timer1,Timer2
  96. }

  97. void main()
  98. {
  99.         uchar i,j;
  100.         beep=1;
  101.         EXTI_config();
  102.         Timer_config();
  103.         EA=1;
  104.         while(1)
  105.         {
  106.                 lcd12864name();
  107.                 i=0;
  108.                 j=0;
  109.                 while(teamname==0)
  110.                 {
  111.                         if(IrValue[2]==menu)
  112.                         {
  113.                                 IrValue[2]=0x00;
  114.                                 i++;
  115.                                 if(i==4)
  116.                                 {
  117.                                         i=0;
  118.                                         j++;
  119.                                         if(j>1)
  120.                                                 teamname=1;
  121.                                 }
  122.                         }
  123.                         else if(IrValue[2]==key2)
  124.                         {
  125.                                 IrValue[2]=0x00;
  126.                                 if(name[j][i]=='C')
  127.                                         name[j][i]='A';
  128.                                 else if(name[j][i]=='B')
  129.                                         name[j][i]='C';
  130.                                 else if(name[j][i]=='A')
  131.                                         name[j][i]='B';
  132.                                 else name[j][i]=65;
  133.                         }
  134.                         else if(IrValue[2]==key3)
  135.                         {
  136.                                 IrValue[2]=0x00;
  137.                                 if(name[j][i]=='E')
  138.                                         name[j][i]='D';
  139.                                 else if(name[j][i]=='E')
  140.                                         name[j][i]='F';
  141.                                 else if(name[j][i]=='D')
  142.                                         name[j][i]='E';
  143.                                 else name[j][i]='D';
  144.                         }
  145.                         else if(IrValue[2]==key4)
  146.                         {
  147.                                 IrValue[2]=0x00;
  148.                                 if(name[j][i]=='I')
  149.                                         name[j][i]='G';
  150.                                 else if(name[j][i]=='H')
  151.                                         name[j][i]='I';
  152.                                 else if(name[j][i]=='G')
  153.                                         name[j][i]='H';
  154.                                 else name[j][i]='G';
  155.                         }
  156.                         else if(IrValue[2]==key5)
  157.                         {
  158.                                 IrValue[2]=0x00;
  159.                                 if(name[j][i]=='L')
  160.                                         name[j][i]='J';
  161.                                 else if(name[j][i]=='K')
  162.                                         name[j][i]='L';
  163.                                 else if(name[j][i]=='J')
  164.                                         name[j][i]='K';
  165.                                 else name[j][i]='J';
  166.                         }
  167.                         else if(IrValue[2]==key6)
  168.                         {
  169.                                 IrValue[2]=0x00;
  170.                                 if(name[j][i]=='O')
  171.                                         name[j][i]='M';
  172.                                 else if(name[j][i]=='N')
  173.                                         name[j][i]='O';
  174.                                 else if(name[j][i]=='M')
  175.                                         name[j][i]='N';
  176.                                 else name[j][i]='M';
  177.                         }
  178.                         else if(IrValue[2]==key7)
  179.                         {
  180.                                 IrValue[2]=0x00;
  181.                                 if(name[j][i]=='S')
  182.                                         name[j][i]='P';
  183.                                 else if(name[j][i]=='R')
  184.                                         name[j][i]='S';
  185.                                 else if(name[j][i]=='Q')
  186.                                         name[j][i]='R';
  187.                                 else if(name[j][i]=='P')
  188.                                         name[j][i]='Q';
  189.                                 else name[j][i]='P';
  190.                         }
  191.                         else if(IrValue[2]==key8)
  192.                         {
  193.                                 IrValue[2]=0x00;
  194.                                 if(name[j][i]=='V')
  195.                                         name[j][i]='T';
  196.                                 else if(name[j][i]=='U')
  197.                                         name[j][i]='V';
  198.                                 else if(name[j][i]=='T')
  199.                                         name[j][i]='U';
  200.                                 else name[j][i]='T';
  201.                         }
  202.                         else if(IrValue[2]==key9)
  203.                         {
  204.                                 IrValue[2]=0x00;
  205.                                 if(name[j][i]=='Z')
  206.                                         name[j][i]='W';
  207.                                 else if(name[j][i]=='Y')
  208.                                         name[j][i]='Z';
  209.                                 else if(name[j][i]=='X')
  210.                                         name[j][i]='Y';
  211.                                 else if(name[j][i]=='W')
  212.                                         name[j][i]='X';
  213.                                 else name[j][i]='W';
  214.                         }
  215.                         else if(IrValue[2]==key0)
  216.                         {
  217.                                 IrValue[2]=0x00;
  218.                                 i=0;
  219.                                 j++;
  220.                                 if(j>1)
  221.                                 teamname=1;
  222.                         }                        
  223.                         lcd_show_name(2,2,3,2);
  224.                 }
  225.                 lcd12864time();
  226.                 i=0;
  227.                 while(gametime==0)
  228.                 {
  229.                         if(IrValue[2]==menu)
  230.                         {
  231.                                 IrValue[2]='0';
  232.                                 gametime=1;
  233.                         }
  234.                         else if(IrValue[2]==key1)
  235.                         {
  236.                                 IrValue[2]=0x00;
  237.                                 count_down[i++]='1';
  238.                         }
  239.                         else if(IrValue[2]==key2)
  240.                         {
  241.                                 IrValue[2]=0x00;
  242.                                 count_down[i++]='2';
  243.                         }
  244.                         else if(IrValue[2]==key3)
  245.                         {
  246.                                 IrValue[2]=0x00;
  247.                                 count_down[i++]='3';
  248.                         }
  249.                         else if(IrValue[2]==key4)
  250.                         {
  251.                                 IrValue[2]=0x00;
  252.                                 count_down[i++]='4';
  253.                         }
  254.                         else if(IrValue[2]==key5)
  255.                         {
  256.                           IrValue[2]=0x00;
  257.                                 count_down[i++]='5';        
  258.                         }
  259.                         else if(IrValue[2]==key6)
  260.                         {
  261.                                 IrValue[2]=0x00;
  262.                                 count_down[i++]='6';
  263.                         }
  264.                         else if(IrValue[2]==key7)
  265.                         {
  266.                                 IrValue[2]=0x00;
  267.                                 count_down[i++]='7';
  268.                         }
  269.                         else if(IrValue[2]==key8)
  270.                         {
  271.                                 IrValue[2]=0x00;
  272.                                 count_down[i++]='8';
  273.                         }
  274.                         else if(IrValue[2]==key9)
  275.                         {
  276.                                 IrValue[2]=0x00;
  277.                                 count_down[i++]='9';
  278.                         }
  279.                         else if(IrValue[2]==key0)
  280.                         {
  281.                                 IrValue[2]=0x00;
  282.                                 count_down[i++]='0';
  283.                         }
  284.                         else if(IrValue[2]==c)//c        清零
  285.                         {
  286.                                 IrValue[2]=0x00;
  287.                                 for(i=0;i<6;i++)
  288.                                 count_down[i]=0x30;
  289.                                 i=0;
  290.                         }
  291.                         lcd_show_time();
  292.                 }
  293.                 lcd12864xianshi();
  294.                 lcd_show_time();
  295.                 lcd_show_name(1,0,1,6);
  296.                 while(teamname)
  297.                 {
  298.                         if(bscore>ascore)
  299.                         {
  300.                                 ledb=0;
  301.                                 leda=1;
  302.                         }
  303.                         else if(bscore<ascore)
  304.                         {
  305.                                 ledb=1;
  306.                                 leda=0;
  307.                         }
  308.                         else
  309.                         {
  310.                                 ledb=1;
  311.                                 leda=1;
  312.                         }
  313.                         if(lcd_flag==1)
  314.                         {
  315.                                 lcd_flag=0;
  316.                                 lcd_show_time();
  317.                         }
  318.                         if(gameover_flag==1)
  319.                         {
  320.                                 change_flag=1;
  321.                                 if(ascore>bscore)
  322.                                 {
  323.                                         lcd_pos(3,4);                //设置显示位置为第三行的第一个字符
  324.                                         i = 0;
  325.                                         while(awin[i]!='\0')
  326.                                         {
  327.                                                 write_dat(awin[i]);                //显示字符
  328.                                                 i++;
  329.                                         }
  330.                                 }
  331.                                 else if(ascore<bscore)
  332.                                 {
  333.                                         lcd_pos(3,4);                //设置显示位置为第三行的第一个字符
  334.                                         i = 0;
  335.                                         while(bwin[i]!='\0')
  336.                                         {
  337.                                                 write_dat(bwin[i]);                //显示字符
  338.                                                 i++;
  339.                 }
  340.                                 }
  341.                                 else
  342.                                 {
  343.                                         lcd_pos(3,4);                //设置显示位置为第三行的第一个字符
  344.                                         i = 0;
  345.                                         while(draw[i]!='\0')
  346.                                         {
  347. ……………………

  348. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png
所有资料51hei提供下载:
counter.rar (120.88 KB, 下载次数: 40)

评分

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

查看全部评分

回复

使用道具 举报

ID:156220 发表于 2019-1-5 09:09 | 显示全部楼层
有没有有原理图了,
回复

使用道具 举报

ID:626287 发表于 2021-3-17 17:07 | 显示全部楼层
原理图比较关键
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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