找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机数字游戏源程序

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-25 13:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 daniu 于 2014-12-25 13:16 编辑
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. uchar code tab[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,
  5.        0X80,0X90,0xff,0x7f};
  6. sbit dd=P1^1;
  7. uchar t,tt;

  8. void delay(uchar x)          //毫秒级延时函数
  9. {
  10. uchar y;            
  11. for(;x>0;x--)
  12.   for(y=110;y>0;y--);
  13. }

  14. scanf()    //按键处理函数   
  15. {
  16. uchar temp,temp1,i;   
  17. P0=0xf0;        //给P0口赋值为oxf0,用于列扫描
  18. if(P0!=0xf0)   //判别是否有键按下
  19. {
  20.   delay(2);  
  21.   if(P0!=0xf0)    //再次判别是否有键按下
  22.   {
  23.    temp1=P0;   //P0值赋给temp1
  24.    P0=0x0f;   //P0值赋为0x0f,用于行扫描
  25.    temp=temp1|P0; //将行列扫描值合并,赋给temp
  26.   }

  27. switch(temp)
  28. {
  29.   case 0xee:i=1; break;
  30.   case 0xed:i=2; break;
  31.   case 0xeb:i=3; break;
  32.   case 0xe7:i=4; break;
  33.   case 0xde:i=5; break;
  34.   case 0xdd:i=6; break;
  35.   case 0xdb:i=7; break;
  36.   case 0xd7:i=8; break;
  37.   case 0xbe:i=9; break;
  38.   case 0xbd:i=0; break;

  39. }
  40. }
  41.   else return 10;
  42.   return i;         
  43. }



  44. void main()
  45. {
  46. uchar z[7]={8,0,9,2,3,4};
  47. uchar a=0,e=0,i,k=0;
  48. SCON=0;
  49. TMOD=0x01;
  50. EA=1;
  51. ET0=1;
  52. TR0=1;
  53. TH0=15536/256;
  54. TL0=15536%256;   

  55. while(1)
  56. {  
  57.    z[0]=8-z[1]-t;if(z[0]==0){z[2]--;t=0;}
  58.    if(e==4){e=0;z[1]++;}
  59.    if(k==1)
  60.    {
  61.    z[5]=TH0%10;
  62.    z[3]=TL0%10; k=0;
  63.    z[4]=tt%10;

  64.     }
  65.     for(i=0;i<6;i++)
  66. {
  67. SBUF=tab[z[ i]];
  68. while(!TI);
  69. TI=0;
  70. }
  71.   delay(100);
  72.    if(scanf()!=10)
  73.    {


  74.     delay(15);
  75.    if(scanf()!=10)
  76.    {
  77.     z[6]=scanf();
  78.     while(scanf()!=10);
  79.     TR0=0;
  80.     a=z[4]*10+z[5]+z[6]+z[3];   

  81.     if(a%7==0)
  82.     {
  83.       e++;
  84.       k=1;
  85.       t=0;
  86.       dd=0;
  87.       delay(200);
  88.       dd=1;

  89.     }

  90.     else
  91.     {
  92.       z[2]--;
  93.       k=0;
  94.     }
  95.     }
  96.      while(z[2]==0){P0=0xff;P2=0xff;dd=0;SBUF=tab[10];}
  97.      while(z[1]==3){P0=0;P2=0;dd=0;delay(200); dd=1;delay(200);SBUF=tab[8];}

  98.     TR0=1;

  99.    }
  100. }

  101. }




  102. void tiemr0(void) interrupt 1
  103. {
  104. TH0=15536/256;
  105. TL0=15536%256;
  106. tt++;
  107. if(tt==100){tt=0;t++;}
  108. }
复制代码

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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