找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7853|回复: 6
收起左侧

基于51单片机的小游戏

[复制链接]
ID:114320 发表于 2016-5-2 03:29 | 显示全部楼层 |阅读模式
仿真图:
原理图片.jpg

PCB图:
物料清单图片_副本.jpg
  1. #include <reg52.h>
  2. #include<stdlib.h>
  3. #include"ours.h"
  4. #define uchar unsigned char
  5. #define SNAKE 20 //最长蛇身
  6. #define SPEED 50 //运动速度控制,值越大,则扫描整个蛇
  7.                                  //        身的时间越长,即表现为移动速度慢
  8. #define MQ 5         //进入下一关的加速,pace=pace-MQ

  9. sbit P3_0=P3^0;        sbit P3_2=P3^2;        sbit P3_3=P3^3;
  10. //蜂鸣器位                外部中断0                外部中断1
  11. sbit P3_7=P3^7;        sbit P3_6=P3^6;        sbit P3_1=P3^1;//指示灯位
  12. sbit P0_7=P0^7;sbit P0_6=P0^6;sbit P0_5=P0^5;sbit P0_4=P0^4;               
  13. //暂停             增关卡,加速          减关卡,退出                 加速                                   
  14. //do                   ruai                          mi                                 fa                               
  15. sbit P0_2=P0^2;sbit P0_1=P0^1;sbit P0_3=P0^3;sbit P0_0=P0^0;
  16. //   左                                 下                           右                          上
  17. //   sao                        la                           xi                          退出
  18. sbit P2_7=P2^7;sbit P2_6=P2^6;sbit P2_5=P2^5;sbit P2_4=P2^4;
  19. sbit P2_3=P2^3;sbit P2_2=P2^2;sbit P2_1=P2^1;sbit P2_0=P2^0;
  20.        
  21. uchar x[SNAKE+1];                //蛇身的坐标 行
  22. uchar y[SNAKE+1];       //蛇身的坐标 列   
  23. uchar n,i,pace,xz;         //当前蛇长,通用变量,当前速度,选择游戏标志
  24. char bdata guanqia;                //定义关卡,可谓寻址,便于控制指示灯
  25. sbit guanqia_0=guanqia^0;sbit guanqia_1=guanqia^1;sbit guanqia_2=guanqia^2;               
  26. char addx,addy;     //移动方向,同直角坐标系,addx为横向,addy为纵向
  27. bit again,out;                //再次产生果实变量,停止播放音乐变量
  28. bit pause=0;                //暂停变量,1为暂停
  29. uchar tone_H,tone_L;//定时器初值,用来控制音调
  30. uchar ym;                        //选择音乐
  31. uchar wait;                        //用于判断是否已经开始游戏

  32. void display(uchar );           //声明显示函数
  33. void display_p(uchar);           //暂停时调用该函数显示
  34. bit knock();                           //声明撞击函数
  35. void key_press();                   //声明按键函数
  36. void play1(unsigned int);
  37. void play(uchar *,uchar *);
  38. /**************************************************************
  39.                 判断是否碰撞,是则返回1,否则返回0
  40. **************************************************************/
  41. bit knock()                          
  42. {        bit k=0;
  43.         if(x[1]>7||y[1]>7)k=1;                 //撞墙
  44.         for(i=2;i<n;i++)
  45.                 if((x[1]==x[i])&(y[1]==y[i]))k=1;  //撞自己
  46.         return k;
  47. }
  48. /**************************************************************
  49.                 键位处理
  50. **************************************************************/
  51. void key_press()  
  52. {        switch(~P0)
  53.         {        case 1:addx=0;addy=addy==-1?-1:1;break;//上
  54.                 case 2:addx=0;addy=addy==1?1:-1; break;//下
  55.                  case 4:addy=0;addx=addx==1?1:-1; break;//左
  56.                 case 8:addy=0;addx=addx==-1?-1:1;break;//右
  57.                 case 5:if(addx!=1||addy!=-1){addx=-1;addy=1;}break;//左上
  58.                 case 9:if(addx!=-1||addy!=-1){addx=1;addy=1;}break;//右上
  59.                 case 6:if(addx!=1||addy!=1){addx=-1;addy=-1;}break;//左下
  60.                 case 10:if(addx!=-1||addy!=1){addx=1;addy=-1;}break;//右下
  61.                 case 128:delay10ms(2);pause=~pause;                                        //暂停
  62.                                  while(~P0_7)if(P0_5)display_p(1);break;
  63.                                  //按住暂停键不放且没有退出游戏请求
  64.         }
  65. }
  66. /*********************************************************
  67. 显示函数,按点从头到尾扫描,周期为SNAKE,扫描k个周期运动一格
  68. **********************************************************/
  69. void display(uchar k)                                        //显示k次
  70. {        while(k--)
  71.         {        for(i=0;i<SNAKE+1;i++)                        //扫描整个虚拟蛇身
  72.                 {        P2=0xff;P1=0xff;                        //灭灯
  73.                         P2=~mux(y[i]);P1=~mux(x[i]);//按点依次显示
  74.                         delay1ms(1);                           //显示延时1ms
  75.                         if(~P0) key_press();        //键位处理
  76.                         if(~P0_5)k=0;                                //判断是否退出游戏
  77.                 }
  78.         }
  79. }
  80. /*********暂停时调用该函数显示,以防闪烁*******************/
  81. void display_p(uchar k)                                        //显示k次
  82. {        while(k--)
  83.         {        for(i=0;i<SNAKE+1;i++)                        //扫描整个虚拟蛇身
  84.                 {        P2=0xff;P1=0xff;                        //灭灯
  85.                         P2=~mux(y[i]);P1=~mux(x[i]);//按点依次显示
  86.                         delay1ms(1);                           //显示延时1ms
  87.                 }
  88.         }
  89. }
  90. /*****外部中断1,用于切换游戏,xz=0为贪吃蛇,xz=1为电子琴******/
  91. void my_int1(void) interrupt 2
  92. {        delay10ms(2);  //去抖动
  93.         if(wait)           //游戏开始前,用于选择游戏
  94.                 if(~P3_3)
  95.                         if(++xz==2)xz=0; //共有两个游戏,所以xz只能为0或1
  96.         if(~wait)                //游戏已开始(只在电子琴里有效)         
  97.                 out=1;                //停止播放音乐
  98.         while(~P3_3);        //直到松开按键,才跳出中断,以防xz连续变化
  99. }
  100. /**************************************************************
  101. *******                主程序                ***************************************
  102. ***************************************************************/       
  103. void main(void)
  104. {        EA=1;                           //开总中断
  105.         EX0=1;                           //开外部中断0
  106.         EX1=1;                           //开外部中断1
  107. /***********************************************************************
  108. *****************         贪吃蛇                ****************************************
  109. ************************************************************************/
  110. TCS:while(1)                  
  111.         {        /**************初始化游戏**********************/
  112.                 for(i=3;i<SNAKE+1;i++)x[i]=100;//初始化虚拟蛇身
  113.                 for(i=3;i<SNAKE+1;i++)y[i]=100;//初始化虚拟蛇身
  114.             n=3;                           //初始蛇身长为n-1
  115.                 y[1]=1;x[1]=0;                 //初始蛇头位置
  116.                 y[2]=0;x[2]=0;                 //初始蛇尾位置
  117.                 addx=0;addy=0;                 //初始位移偏移
  118.                 pace=SPEED;                                           //给运动速度赋初值
  119.                  /*************产生果实*******************************/
  120.                    do                                               
  121.                 {        x[0]=rand()%8; y[0]=rand()%8;//产生随机果实
  122.                         again=0;
  123.                         for(i=1;i<n;i++)                     //判断是否与蛇身重叠
  124.                                 if((x[0]==x[i])&&(y[0]==y[i]))again=1;
  125.                 }while(again);                                          //若重叠则再次产生
  126.                 /************等待开始游戏,贪吃蛇开始前可选关****************/
  127.                 guanqia=1;                                 //第一关
  128.                 P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;//显示关卡
  129.                 while(1)                                 //等待选择游戏
  130.                 {        wait=1;                                 //等待选择游戏
  131.                         if(xz) goto DZQ;         //如果xz=1,则进入电子琴
  132.                         display_p(1);             //显示贪吃蛇初始位置
  133.                         if(~P0_3|~P0_0)break;//如果按上或右键,则开始游
  134.                         /*************选关******************************************/
  135.                         if(~P0_6)        //增关卡
  136.                         {        delay10ms(2);        //去抖动
  137.                                 if(~P0_6)
  138.                                 {        if(++guanqia<=7)//最大到7关         
  139.                                         {        P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;
  140.                                                 //将其值用发光二极管以二进制的形式显示出来
  141.                                                 pace=pace-MQ;  //加速
  142.                                         }else --guanqia;
  143.                                         while(~P0_6)display_p(1);
  144.                                         //直到松开按键才跳出,以防连续增加关卡
  145.                                 }
  146.                         }
  147.                         if(~P0_5)        //减关卡
  148.                         {        delay10ms(2);
  149.                                 if(~P0_5)
  150.                                 {        if(--guanqia>=1)          
  151.                                         {        P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;
  152.                                                 pace=pace+MQ;          
  153.                                         }else ++guanqia;
  154.                                         while(~P0_5)display_p(1);
  155.                                 }
  156.                         }
  157.                 }
  158.                
  159.                 /*************贪吃蛇游戏正在运行**************************/       
  160.                 while(1)         
  161.                 {         wait=0;                //游戏已开始,wait置0
  162.                          if(knock()){pace=SPEED;break;} //判断是否碰撞
  163.                         /*************显示部分************************/
  164.                         if(P0_6&P0_4)display(pace); //判断是否速度运动
  165.                         else display(10);//当P0^4或P0^6被按下时加速运动
  166.                         if(~P0_5)break;         //判断是否退出
  167.                         /*************判断是否吃东西,及进入下一关**************/
  168.                 if((y[0]==y[1]+addx)&&(x[0]==x[1]+addy)) //如果吃到
  169.                    {        n++;                                                                   //蛇身加1
  170.                                    if(n==SNAKE+1)                //如果进入下一关
  171.                                    {        n=3;                        //蛇身长从2开始
  172.                                         pace=pace-MQ; guanqia++;        //运动加速,关卡加1
  173.                                         P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;
  174.                                         //将关卡的值用三个指示灯显示出来
  175.                                            for(i=3;i<SNAKE+1;i++)x[i]=100;        //初始化虚拟蛇身
  176.                                    for(i=3;i<SNAKE+1;i++)y[i]=100;        //初始化虚拟蛇身
  177.                                    }
  178.                            do
  179.                                 {        x[0]=rand()%8;y[0]=rand()%8;//产生随机果实
  180.                                         again=0;
  181.                                         for(i=1;i<n;i++)                        //判断是否与蛇身重叠
  182.                                         if((x[0]==x[i])&(y[0]==y[i]))again=1;
  183.                                 }while(again);                                        //若重叠则再次产生
  184.                    }                                                                          
  185.                         /*************判断蛇身是否移动**********************/
  186.                         if(~pause)                                                  //如果不暂停
  187.                     {        for(i=n-1;i>1;i--)
  188.                                 {        x[i]=x[i-1];y[i]=y[i-1];} //蛇身从尾到头移动      
  189.                                    y[1]=y[1]+addx;x[1]=x[1]+addy;//蛇头移动1格
  190.                         }
  191.                   }                                               
  192.         }
  193. /*******************************************************************
  194. ***************                电子琴                ************************************
  195. ********************************************************************/
  196. DZQ:while(1)
  197.         {        P3_0=1;
  198.                 ET0=1;                 //启用定时器0中断
  199.                 TMOD=0x01;         //定时器0工作在方式1
  200.                 ym=0;out=0;         //选择音乐及退出播放位无效
  201.                 /***********等待开始游戏********************************/
  202.                 while(1)
  203.                 {        wait=1;          //等待选择游戏
  204.                         P2=0x00;P1=0xc7;        //点亮点阵
  205.                         P3_7=1;P3_6=1;P3_1=1;        //关闭指示灯
  206.                         if(~P0_7|~P0_6|~P0_5|~P0_4|~P0_3|~P0_2|~P0_1)break;
  207.                         //7个键随便按一个则开始电子琴
  208.                         if(xz==0)goto TCS;//如果xz=0,则进入贪吃蛇游戏
  209.                 }
  210.                 /***************电子琴正在运行*********************/
  211.                 while(1)
  212.                 {        wait=0;                 //游戏已开始,wait置0
  213.                         P3_7=0;P3_6=0;P3_1=0;//开指示灯
  214.                         if(P0_0==0)break;         //如果按下P0^0则退出电子琴
  215.                         if(ym)                             //如果有音乐请求
  216.                         switch(ym)                 //选择音乐,最多7首
  217.                         {        case 128:play(song1,beat1);ym=0;out=0;break;
  218.                                 case 64: play(song2,beat2);ym=0;out=0;break;
  219.                                 case 32:play(song3,beat3);ym=0;out=0;break;
  220.                                 case 16: play(song4,beat4);ym=0;out=0;break;
  221.                                 case 4:play(song5,beat5);ym=0;out=0;break;
  222.                                 case 2: play(song6,beat6);ym=0;out=0;break;
  223.                                 case 8: play(song7,beat7);ym=0;out=0;break;
  224.                         }P3_0=1;
  225.                         switch(~P0)
  226.                         {        case 128:P2_0=1;play1(956);P2_0=0;break;
  227.                                 case 64: P2_1=1;play1(852);P2_1=0;break;
  228.                                 case 32: P2_2=1;play1(759);P2_2=0;break;
  229.                                 case 16: P2_3=1;play1(716);P2_3=0;break;
  230.                                 case 4:  P2_4=1;play1(638);P2_4=0;break;
  231.                                 case 2:  P2_5=1;play1(568);P2_5=0;break;
  232.                                 case 8:  P2_6=1;play1(506);P2_6=0;break;
  233.                         }P3_0=1;
  234.                 }
  235.         }
  236. }
  237. /****自己弹奏时调用该函数***********/
  238. void play1(x)
  239. {                tone_H=(65536-x)/256;
  240.                 tone_L=(65536-x)%256;
  241.                 TH0=tone_H;
  242.                 TL0=tone_L;
  243.                 TR0=1;
  244.                 while(~P0);
  245.                 TR0=0;
  246. }
  247. /****播放音乐时调用该函数*******************/
  248. void play(uchar *song,uchar *beat)
  249. {        i=0;
  250.         while(song[i]!=50&&out!=1)
  251.         {        tone_H=(65536-tone[song[i]])/256;
  252.                 tone_L=(65536-tone[song[i]])%256;
  253.                 TH0=tone_H;
  254.                 TL0=tone_L;
  255.                 if(song[i])TR0=1;
  256.                 beat_125ms(beat[i]);
  257.                 i++;
  258.                 TR0=0;
  259.         }
  260. }
  261. /****定时器0中断用于产生声******/
  262. void tone_timer(void) interrupt 1
  263. {        TH0=tone_H;
  264.         TL0=tone_L;
  265.         P3_0=~P3_0;
  266. }
  267. /****外部中断0,用于控制播放那个曲子*****/
  268. void my_int0(void) interrupt 0
  269. {        if(~P0)                        //如果有选择
  270.                 ym=~P0;                //则将其值赋给ym
  271. }       


  272. ours库函数
  273. #define uchar unsigned char
  274. /******判断具体的亮点****************/
  275. unsigned char mux(unsigned char temp)  
  276. {        switch(temp)
  277.         {        case 7:return 128; break;
  278.                 case 6:return 64;  break;
  279.                 case 5:return 32;  break;
  280.                 case 4:return 16;  break;
  281.                 case 3:return 8;   break;
  282.                 case 2:return 4;   break;
  283.                 case 1:return 2;   break;
  284.                 case 0:return 1;   break;
  285.                 default: return 0;                         
  286.         }
  287. }
  288. /*******************************************
  289. **************        延时函数          ****************
  290. ********************************************/
  291. void delay1ms(int x)  //延时1ms
  292. {        int i,j;
  293.         for(i=0;i<x;i++)
  294.                 for(j=0;j<122;j++);
  295. }
  296. void delay10ms(int x) //延时10ms
  297. {        int i,j;
  298.         for(i=0;i<x;i++)
  299.                 for(j=0;j<1934;j++);
  300. }
  301. /**********节拍延时函数**************/
  302. void beat_125ms(uchar x) //延时125ms
  303. {        uchar i;
  304.         unsigned int j;
  305.         for(i=0;i<x;i++)
  306.                 for(j=0;j<24934;j++);
  307. }
  308. /*******************************************************************
  309. ****************乐谱************************************************
  310. *********************************************************************/
  311. unsigned int code tone[]={1012,
  312. 956, 852, 759, 716, 638, 568, 506,  478,         478,478, //中音
  313. 1908,1701,1515,1433,1276,1136,1012, 956,    956,956, //低音
  314. 478, 426, 379, 358, 319, 284, 253,  233 };                         //高音
  315. //dao ruai mi  fa   sao  la   xi   
  316. //song为乐谱,当出现50时表示结束;beat为节奏(以0.125秒为单位),
  317. /*************画心*************/
  318. uchar code song1[]={
  319. 3,5,  6,6,21,7,6,5,  2,3,3,3,5,  6,6,7,21,5,21,22,
  320. 22,23,23,25,23,  23,22,21,22,21,7,  21,22,7,5,6,3,5,  6,6,23,22,21,7,
  321. 5,6,6,3,4,5,  6,6,21,7,6,5,6,  3,3,3,3,5,  6,6,7,21,5,21,22,
  322. 22,23,23,25,23,  23,22,21,22,21,7,  21,22,7,5,6,3,5,  6,6,23,22,21,7,
  323. 5,6,6,25,23,  23,22,21,22,22,25,  23,23,23,25,23,  23,22,21,22,25,26,  
  324. 22,23,23,25,23,  23,22,21,22,21,7,  21,22,7,5,6,3,5,  6,6,23,22,21,7,
  325. 5,6,6,50};
  326. uchar code beat1[]={
  327. 4,4,  8,4,4,4,4,8,  6,2,16,4,4,  8,4,4,4,4,4,4,
  328. 4,4,16,4,4,  8,4,4,8,4,4,  4,4,4,4,8,4,4,  8,4,4,4,4,8,
  329. 6,2,6,4,4,4,  8,4,4,4,4,4,4,  4,4,8,4,4,  8,4,4,4,4,4,4,
  330. 4,4,16,4,4,  8,4,4,8,4,4,  4,4,4,4,8,4,4,  8,4,4,4,4,8,
  331. 6,2,18,4,4,  8,4,4,8,4,4,  4,4,8,4,4,  8,4,4,4,4,8,
  332. 6,2,16,4,4,  8,4,4,8,4,4,  4,4,4,4,8,4,4,  8,4,4,4,4,8,
  333. 6,2,24,4};
  334. /***********梁祝*********************/
  335. uchar code song2[]={
  336. 7,6,7,  5,6,4,3,  2,3,4,3,5,3,  2,3,5,2,3,4,3,2,
  337. 1,5,  17,2,16,1,  15,16,1,  15,  
  338. 13,15,16,  1,2,16,1,15,  5,21,6,5,3,5,  2,
  339. 2,3,17,16,  15,16,1,2,  13,1,16,15,16,1,  15,  
  340. 3,5,17,2,  16,1,15,  13,15,13,15,16,17,2,  16,15,16,
  341. 1,2,5,3,  2,3,2,1,16,15,  13,1,  16,1,16,15,13,15,16,1,
  342. 15,3,5,  2,3,2,1,17,16,  15,50};
  343. uchar code beat2[]={
  344. 4,4,4,  6,2,4,4,  2,2,2,2,6,2,  2,2,2,2,2,2,2,2,
  345. 12,4,  4,4,4,4,  12,2,2,  16,  
  346. 8,6,2,  6,2,2,2,4,  6,2,2,2,2,2,  16,  
  347. 6,2,4,4,  6,2,4,4,  4,4,2,2,2,2,  16,
  348. 6,2,4,4,  2,2,8,  2,4,2,2,2,2,2,  12,2,2,
  349. 6,2,4,4,  4,2,2,4,2,2,  8,8,  3,1,2,2,2,2,2,2,
  350. 12,2,2,  2,2,2,2,4,4,  16,2};
  351. /***********兄弟无数*******************/
  352. uchar code song3[]={
  353. 6,6,5,6,0,  3,7,21,7,6,0,  7,6,7,5,3,0,  2,2,1,2,3,0,
  354. 6,5,6,5,3,7,6,  5,6,4,3,2,1,2,  6,5,6,5,3,7,6,  5,6,4,3,2,1,2,  
  355. 3,21,21,7,22,  7,6,6,3,5,  3,4,3,2,1,2,3,5,  2,
  356. 22,22,6,  21,7,0,  7,7,6,6,2,5,6,  6,3,
  357. 22,22,6,  21,7,0,  7,7,6,6,2,0,22,  7,6,6,
  358. 7,7,7,6,3,6,4,3,  2,  3,22,7,6,5,6,7,7,  22,0,
  359. 22,23,6,6,
  360. 50};
  361. uchar code beat3[]={
  362. 8,8,4,4,8,  8,4,4,4,4,8,  8,4,4,4,4,8,  8,4,4,4,4,8,
  363. 6,2,4,4,4,8,4,  6,2,4,4,4,4,8,  6,2,4,4,4,8,4,  6,2,4,4,4,4,8,
  364. 4,8,4,8,8,  4,4,4,4,16,  6,2,4,4,4,4,4,4,  24,
  365. 24,4,4,  16,8,8,  8,4,4,4,4,4,4,  8,24,
  366. 24,4,4,  16,8,8,  8,4,4,4,4,4,4,  4,4,24,
  367. 6,2,4,4,4,4,4,4,  24,  6,2,4,4,4,4,4,4,  24,8,
  368. 2,2,4,24,
  369. 4};
  370. /*************伤不起******************/
  371. uchar code song4[]={
  372. 6,6,5,3,3,  6,6,5,3,3,  6,21,3,5,5,  3,2,3,3,
  373. 6,6,5,3,3,  6,6,5,3,3,  5,3,5,7,7,  7,5,6,6,
  374. 5,6,6,6,5,3,  5,6,6,6,  5,6,6,6,21,6,6,  5,6,5,3,3,
  375. 6,6,2,3,2,2,1,  16,2,3,2,  5,5,5,5,5,5,6,  7,6,7,
  376. 5,6,6,6,5,3,  5,6,6,6,  5,6,6,6,21,6,  5,6,5,3,3,
  377. 6,6,2,3,2,2,1,  16,2,3,2,  5,5,5,5,5,6,  7,7,6,7,
  378. 21,7,6,6,5,3,  5,6,7,6,6,  21,6,21,6,21,6,21,22,  3,3,3,2,3,
  379. 22,22,22,21,22,6,21,  22,23,22,21,22,7,  7,7,7,7,22,22,22,23,  7,3,5,6,6,
  380. 21,7,6,6,5,3,  5,6,7,6,6,  21,6,21,6,21,6,21,22,  3,3,3,2,3,
  381. 22,22,22,21,22,6,21,  22,23,22,21,22,7,  7,7,7,7,22,22,22,23,  7,3,5,6,6,
  382. 50};
  383. uchar code beat4[]={
  384. 4,2,4,2,4,  4,2,4,2,4,  4,2,4,2,4,  4,2,2,8,
  385. 4,2,4,2,4,  4,2,4,2,4,  4,2,4,2,4,  4,2,2,8,
  386. 2,2,4,4,2,2,  2,2,4,6,  2,2,2,2,4,2,2,  2,2,2,2,6,
  387. 2,2,2,2,4,2,2,  4,2,2,6,  2,2,2,2,4,2,2,  4,4,6,
  388. 2,2,4,4,2,2,  2,2,4,6,  2,2,2,2,4,4,  2,2,2,2,6,
  389. 2,2,2,2,4,2,2,  4,2,2,6,  2,2,2,2,4,4,  2,2,4,6,
  390. 4,2,2,4,2,2,  4,2,2,4,2,  2,2,2,2,2,2,2,2,  2,2,2,2,6,
  391. 2,2,2,2,4,2,2,  2,2,2,2,6,2,  2,2,2,2,2,2,2,2,  2,2,2,2,6,
  392. 4,2,2,4,2,2,  4,2,2,6,2,  2,2,2,2,2,2,2,2,  2,2,2,2,6,
  393. 2,2,2,2,4,2,2,  2,2,2,2,6,2,  2,2,2,2,2,2,2,2,  2,2,2,2,6,
  394. 4};
  395. /**************兰若词******************/
  396. uchar code song5[]={
  397. 16,17,1,  3,17,1,  16,16,16,17,1,  4,17,1,
  398. 16,16,17,1,3,  2,2,2,1,  2,2,3,4,2,  3,3,
  399. 16,17,1,  3,17,1,  16,16,16,17,1,  4,1,1,
  400. 16,16,17,1,3,  2,2,2,1,  2,1,2,3,15,  16,16,
  401. 3,5,6,7,  21,7,6,5,3,  6,5,3,2,1,  2,3,5,2,
  402. 3,3,5,  6,5,6,5,  6,7,21,7,6,5,  6,6,
  403. 6,3,5,6,7,  21,7,6,5,3,  6,5,3,2,1,  2,3,5,2,
  404. 3,2,1,  16,3,2,1,  16,3,2,3,5,  6,6,
  405. 50};
  406. uchar code beat5[]={
  407. 3,3,3,  9,6,3,  6,3,3,3,3,  9,6,3,  
  408. 6,3,3,3,3,  9,3,3,3,  6,3,3,3,3,  9,9,
  409. 3,3,3,  9,6,3,  6,3,3,3,3,  9,6,3,
  410. 6,3,3,3,3,  9,3,3,3,  6,3,3,3,3,  9,9,
  411. 2,2,2,2,  3,3,3,6,3,  3,3,3,6,3,  6,3,6,3,
  412. 9,3,3,  6,3,6,3,  3,3,3,3,3,3,  9,9,
  413. 9,2,2,2,2,  3,3,3,6,3,  3,3,3,6,3,  6,3,6,3,
  414. 9,3,3,  6,3,6,3,  6,3,3,3,3,  9,9,
  415. 4};
  416. /***************二泉映月*******************/
  417. uchar code song6[]={
  418. 6,5,6,4,3, 2,2,3,1,1,2,  3,5,6,5,6,5,6,21,  5,3,5,5,3,2,6,5,6,1,2,
  419. 3,5,2,3,5,21,6,2,3,5,  1,21,6,21,23,23,22,  21,6,21,22,23,23,22,21,21,6,21,22,23, 5,5,3,5,6,5,6,21,
  420. 5,3,5,5,21,6,6,5,6,5,5,  3,5,3,4,3,5,2,3,2,1,16,1,16,  1,1,2,3,5,1,2,5,3,6,  5,
  421. 21,6,21,23,23,22,  21,6,21,22,23,23,22,21,21,6,21,22,23,  5,3,5,3,5,  6,21,21,3,5,3,5,6,5,21,6,
  422. 5,3,5,5,21,6,6,5,6,5,5,  3,5,3,4,3,5,2,3,2,1,16,1,16,  1,16,1,2,3,5,1,2,5,3,5,6,  5,3,5,5,6,5,5,3,5,
  423. 6,
  424. 6,6,6,5,6,21,  5,3,5,5,21,6,6,5,6,5,5,  3,15,3,4,3,5,2,3,2,1,16,1,16,  1,16,1,2,3,5,1,2,5,3,5,6,
  425. 5,
  426. 50};
  427. uchar code beat6[]={
  428. 8,2,2,2,2,  16,6,2,4,2,2,  12,4,4,4,2,2,2,2,  6,2,4,2,2,4,4,2,2,2,2,
  429. 12,4,3,1,2,2,2,2,2,2,  16,4,2,2,4,2,2,  12,4,3,1,2,2,4,6,4,2,2,2,2,  16,4,2,2,2,2,2,2,
  430. 6,2,2,4,2,4,4,2,2,2,2,  6,2,3,1,2,2,3,1,2,2,2,2,4,  8,6,2,2,2,4,2,2,2,2,  16,
  431. 4,2,2,4,2,2,  6,2,3,1,2,2,4,2,2,2,2,2,2,  16,2,2,2,2,  8,4,4,3,1,2,2,2,2,2,2,
  432. 6,2,2,4,2,4,4,2,2,2,2,  6,2,3,1,2,2,2,2,2,2,2,2,4,  6,2,6,2,2,2,4,3,1,2,2,2,  12,4,4,2,2,2,2,2,2,  
  433. 16,
  434. 4,4,2,2,2,2,  6,2,2,4,2,4,4,2,2,2,2,  6,2,3,1,2,2,3,1,2,2,2,2,4,  6,2,6,2,2,2,4,3,1,2,1,1,
  435. 16,
  436. 4};
  437. /***********土耳其进行曲***********/
  438. uchar code song7[]={
  439. 7,6,5,6,  21,0,22,21,7,21,  23,0,24,23,22,23,  27,26,25,26,27,26,25,26,28,26,28,
  440. 27,26,25,26,  27,26,25,26,  27,26,25,24,  23,
  441. 21,22,  23,21,22,  23,22,21,7,  6,7,21,22,
  442. 7,5,21,22,23,21,22,  23,22,21,7,  6,22,7,5,  21,
  443. 23,24,23,22,  21,22,21,7,6,21,7,6,  5,6,7,5,3,4,5,3,6,5,7,6,21,7,21,22,  23,22,23,22,23,24,23,22,
  444. 21,22,21,7,6,21,7,6,  5,6,7,6,3,4,5,3,  4,5,6,4,2,3,4,2,  3,
  445. 5,4,3,2,  1,2,3,4,5,6,7,21,21,7,6,5,4,3,2,  1,2,3,4,5,6,7,21,  21,22,5,4,3,2,
  446. 1,2,3,4,5,6,7,21,  21,7,6,5,4,3,2,  3,5,1,3,2,4,7,2,  1,23,24,23,22,
  447. 21,22,21,7,6,21,7,6,5,6,7,5,3,4,5,3,  6,5,6,7,21,7,21,22,23,22,23,22,23,22,23,21,  24,23,24,23,24,23,24,23,  24,23,22,21,7,21,2,7,
  448. 21,22,23,6,5,6,7,5,  6,
  449. 50};
  450. uchar code beat7[]={
  451. 1,1,1,1,  2,2,1,1,1,1,  2,2,1,1,1,1,  1,1,1,1,1,1,1,1,4,2,2,
  452. 2,2,2,2,  2,2,2,2,  2,2,2,2,  4,
  453. 2,2,  4,2,2,  2,2,2,2,  2,2,2,2,
  454. 2,2,2,2,4,2,2,  2,2,2,2,  2,2,2,2,  4,
  455. 1,1,1,1,  1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,
  456. 1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,  4,
  457. 1,1,1,1,  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,  2,2,1,1,1,1,  
  458. 1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,  4,1,1,1,1,
  459. 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1,
  460. 1,1,1,1,1,1,1,1,   4,  
  461. 4};
复制代码




回复

使用道具 举报

ID:146284 发表于 2016-11-5 17:21 | 显示全部楼层
厉害了楼主,参考参考。
回复

使用道具 举报

ID:146746 发表于 2016-11-8 06:56 | 显示全部楼层
留名,等积分,哈哈
回复

使用道具 举报

ID:440750 发表于 2018-12-6 11:05 | 显示全部楼层
小白求回答:为啥出现下面的报错啊?求回答
09985.c(3): warning C318: can't open file 'ours.h'
09985.C(63): warning C206: 'delay10ms': missing function-prototype
09985.C(63): error C267: 'delay10ms': requires ANSI-style prototype
回复

使用道具 举报

ID:420302 发表于 2018-12-27 20:33 | 显示全部楼层
请问有没有拼数游戏的程序?
回复

使用道具 举报

ID:420302 发表于 2018-12-27 20:33 | 显示全部楼层
请问有没有拼数游戏的程序
回复

使用道具 举报

ID:457083 发表于 2019-1-8 19:48 | 显示全部楼层
耀月 发表于 2018-12-6 11:05
小白求回答:为啥出现下面的报错啊?求回答
09985.c(3): warning C318: can't open file 'ours.h'
09985. ...

楼主没发那文件出来你直接抄不得
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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