资源简介

C51单片机点阵贪吃蛇代码(16*16点阵和8*8点阵都有)。keil4的完整工程文件夹,可以用红外遥控器控制蛇的上下左右移动,注释清楚,内附我用到的板子原理图以供移植参考。

资源截图

代码片段和文件信息



#include “reg51.h“  //此文件中定义了单片机的一些特殊功能寄存器
#include “intrins.h“

typedef unsigned int u16;   //对数据类型进行声明定义
typedef unsigned char u8;
sbit IRIN=P3^2;   //定义中断口 0作为接收及处理
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
u8 IrValue[6];  //存储红外遥控器发来的指令数据
char ch1=‘a‘ch2=‘d‘; //ch1储存按键按下的方向,ch2储存通过判断后确定的不冲突的方向

u8 code Snake_x[]=   //在位选设置x坐标(从左到右取0~15)
{
0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 
};



u8 code Snake_y[]=    //在段选设置y坐标(从下到上取0~15)
{
0x000x000x000x000x000x000x000x000x800x400x200x100x080x040x020x01
0x800x400x200x100x080x040x020x010x000x000x000x000x000x000x000x00
};

u8 Snakeleng=3;      //蛇长为3
struct body          //蛇坐标结构体
{
    u8 x;
    u8 y;
};
struct body Snake[15]; //设蛇最长15;
u8 FoodxFoody;       //食物坐标
u8 Time; //定义模拟时序需要的变量
/*******************************************************************************
* 函 数 名         : delay
* 函数功能    : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 数 名         : Hc595SendByte(u8 dat1u8 dat2u8 dat3u8 dat4)
* 函数功能    : 通过595发送四个字节的数据
* 输    入         : dat1:第4个595输出数值
*                  * dat2: 第3个595输出数值
*                  * dat3:第2个595输出数值
*                  * dat4:第1个595输出数值
* 输    出         : 无
*******************************************************************************/
void Hc595SendByte(u8 dat1u8 dat2u8 dat3u8 dat4)
{
u8 a;

SRCLK = 1;
RCLK = 1;

for(a=0;a<8;a++)  //发送8位数
{
SER = dat1 >> 7;  //从最高位开始发送
dat1 <<= 1;

SRCLK = 0;  //发送时序
_nop_();
_nop_();
SRCLK = 1;
}

for(a=0;a<8;a++)  //发送8位数
{
SER = dat2 >> 7;  //从最高位开始发送
dat2 <<= 1;

SRCLK = 0;  //发送时序
_nop_();
_nop_();
SRCLK = 1;
}

for(a=0;a<8;a++)  //发送8位数
{
SER = dat3 >> 7;  //从最高位开始发送
dat3 <<= 1;

SRCLK = 0;  //发送时序
_nop_();
_nop_();
SRCLK = 1;
}

for(a=0;a<8;a++)  //发送8位数
{
SER = dat4 >> 7;  //从最高位开始发送
dat4 <<= 1;

SRCLK = 0;  //发送时序
_nop_();
_nop_();
SRCLK = 1;
}

RCLK = 0;
_nop_();
_nop_();
RCLK = 1;
}


void  SnakeCuShi(void)  //初始化蛇为三节
{
    Snake[0].x=8;
    Snake[0].y=7;

    Snake[1].x=7;
    Snake[1].y=7;
   
    Snake[2].x=6;
    Snake[2].y=7;
}

void SnakeXianShi(void)   //蛇身显示
{
u8 i;
for(i=0;i {
Hc595SendByte(~Snake_x[Snake[i].x+16]~Snake_x[Snake[i].x]Snake_y[16+Snake[i].y] Snake_y[Snake[i].y]);
delay(100);
}
}
void SnakeYiWei()       //蛇身移位函数
{
    int i;
    for(i=Snakeleng-1;i>0;i--) //循环读取下一个位置的坐标
    {
           Snake[i].x=Snake[i-1].x;//   将数组所有元素后移一个位置
           Snake[i].y=Snake[i-1].y;
    }
}

void

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-03-21 14:43  C51遥控贪吃蛇项目\
     目录           0  2019-03-06 16:33  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\
     文件       18074  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\main.LST
     文件       13541  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\main.OBJ
     文件        8350  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\main.c
     文件       11568  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template
     文件       16778  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.M51
     文件        4229  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.hex
     文件          44  2019-02-15 17:19  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.lnp
     文件         178  2019-03-05 22:24  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.plg
     文件      135125  2016-09-06 08:44  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.uvgui.Administrator
     文件      135127  2016-09-06 08:44  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.uvgui_Administrator.bak
     文件       55771  2019-03-05 22:29  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.uvopt
     文件       13229  2018-11-28 11:05  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template.uvproj
     文件       55771  2019-02-15 17:20  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template_uvopt.bak
     文件       13259  2016-09-06 08:44  C51遥控贪吃蛇项目\C51遥控贪吃蛇16乘16点阵\template_uvproj.bak
     目录           0  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\
     文件        5948  2018-09-01 15:06  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\c51贪吃蛇遥控版项目.txt
     文件        7138  2018-09-02 23:47  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\lcd.LST
     文件        3544  2018-09-02 23:47  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\lcd.OBJ
     文件        3603  2016-10-11 08:55  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\lcd.c
     文件         965  2016-10-11 08:55  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\lcd.h
     文件       13049  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\main.LST
     文件       14522  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\main.OBJ
     文件        5905  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\main.c
     文件       15726  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\template
     文件       20444  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\template.M51
     文件        4347  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\template.hex
     文件          56  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\template.lnp
     文件         678  2019-02-12 21:30  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\template.plg
     文件       55830  2018-09-03 01:06  C51遥控贪吃蛇项目\C51遥控贪吃蛇8乘8点阵\template.uvopt
............此处省略5个文件信息

评论

共有 条评论