| 
 | 
	
    
 
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册  
 
x
 
51单片机点阵8X8贪吃蛇设计(仿真 + 程序)闲来无聊制作的贪吃蛇8X8程序和仿真下面压缩包里都有,元器件都是平时最常用的,很好制作。1 w- e/ x8 z4 x' |" p! C! o) a2 i* g 
. _1 H+ y; j# ~# C7 B 
![]()  
* u- y# Z8 d" d+ t0 b2 t* t+ {' T# d& r 
 , Z8 L" L8 r( _, B+ k1 C- O 
1 o5 N# H5 t5 x& y; d7 A 
- h& y, I4 h7 [2 u  D 
, N5 X/ k& i( q8 S 
 5 Q$ Z3 g* Y3 q% i" e4 T 
. p. \. `( \+ o7 G' O( c 
( x8 D( b+ P! s% u/ s 
1 v$ w1 C3 Y, v; y9 [ 
单片机程序源码 
9 `, ?7 Y) D* `. A. V+ p$ h( H  f 
" F$ Q' {  p( Q8 `( \1 s0 N5 o" G" V 
* o* J6 |  `1 Z0 c2 Y1 V- #include <reg51.h>
 - #define uchar unsigned char
 - #define SNAKE 20                 //最大长度
 - #define TIME 50                 //显示延时时间
 - #define SPEED 71               //速度控制
 - //define  keyenable 1
 - sbit keyenable=P0^0;                        //方向使能
 - sbit keyx=P0^1;                                        //左右
 - sbit keyy=P0^2;                                        //上下        */
 - //sbit up=P0^0;
 - sbit up=P3^1;       //down
 - sbit down=P3^2;
 - sbit right=P3^3;
 - sbit left=P3^4;
 - uchar x[SNAKE+1];
 - uchar y[SNAKE+1];
 - uchar time,n,i,e;              //延时时间,当前蛇长,通用循环变量,当前速度
 - char addx,addy;                //位移偏移量
 - /********************
 - 延时程序
 - *********************/
 - void delay(char MS)
 - {
 - char us,usn;
 - while(MS!=0)
 - {
 - usn = 0;
 - while(usn!=0)
 - {
 - us=0xff;
 - while (us!=0){us--;};
 - usn--;
 - }
 - MS--;
 - }
 - }
 - /*******************************************
 - 判断碰撞
 - *******************************************/
 - bit knock()
 - {bit k;
 - k=0;
 - if(x[1]>7||y[1]>7)k=1;                             //撞墙
 - for(i=2;i<n;i++)if((x[1]==x)&(y[1]==y))k=1;  //撞自己
- return k;
 - }
 - /*****************
 - 上下左右键位处理
 - *****************/
 - void turnkey()// interrupt 0 using 2
 - {//up=1;
 - if(keyenable)
 - {
 - if(left){addy=0;if(addx!=1)addx=-1; else addx=1;}
 - if(right){addy=0;if(addx!=-1)addx=1; else addx=-1;}
 - if(up){addx=0;if(addy!=-1)addy=1; else addy=-1;}
 - if(down){addx=0;if(addy!=1)addy=-1; else addy=1;}
 - /*if(keyy)
 - {addy=0;                                   //左右
 - if(keyx)if(addx==-1)addx=-1; else addx=1;  //左
 - else
 - if(addx==1)addx=1; else addx=-1;           //右
 - }
 - else
 - {addx=0;                                   //上下
 - if(keyx)if(addy==1)addy=1; else addy=-1;   //下
 - else
 - if(addy==-1)addy=-1; else addy=1;          //上
 - } */
 - }
 - }
 - /*****************
 - 乘方程序
 - *****************/
 - uchar mux(uchar temp)
 - {
 - if(temp==7)return 128;
 - if(temp==6)return 64;
 - if(temp==5)return 32;
 - if(temp==4)return 16;
 - if(temp==3)return 8;
 - if(temp==2)return 4;
 - if(temp==1)return 2;
 - if(temp==0)return 1;
 - return 0;
 - }
 - /*****************
 - 显示时钟 显示程序
 - *****************/
 - void timer0(uchar k)
 - {while(k--)
 - {for(i=0;i<SNAKE+1;i++)
 - {P2=mux(x)
 1=255-mux(y);- turnkey();                     //上下左右键位处理
 - delay(TIME);                   //显示延迟
 - P2=0x00
 1=0xff; - }}
 - }
 - /*****************
 - …………
 - …………
 - …………限于本文篇幅 余下代码请下载附件…………
 - 
 
  
) I8 V8 f  @- j" v$ }7 T   2 \" A& U+ b6 o1 P/ j7 `( _ 
 |   
 
 
 
 |