51单片机点阵8X8贪吃蛇设计(仿真 + 程序)

发布者:美梦小狮子最新更新时间:2019-11-27 来源: 51hei关键字:51单片机  点阵8X8  贪吃蛇 手机看文章 扫描二维码
随时随地手机看文章

51单片机点阵8X8贪吃蛇设计(仿真 + 程序)闲来无聊制作的贪吃蛇8X8程序和仿真下面压缩包里都有,元器件都是平时最常用的,很好制作。

1.JPG

2.JPG



3.JPG
单片机程序源码:

#include

#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;ireturn 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{P2=mux(x[i]);P1=255-mux(y[i]);

turnkey();                     //上下左右键位处理

delay(TIME);                   //显示延迟

P2=0x00;P1=0xff;

}}

/*****************

主程序

*****************/        

void main(void)

{e=SPEED;

P0=0x00;

P1=0xff;

P2=0x00;

P3=0x00;

while(1)       

{//if(keyenable==1){P1=0x00;P2=0xff;}else{P1=0xff;P2=0x00;}

for(i=3;ix[0]=4;y[0]=4;                                                //果子                            

n=3;                                                          //蛇长 n=-1

x[1]=1;y[1]=0;                                                //蛇头

x[2]=0;y[2]=0;                                                //蛇尾1

addx=0;addy=0;                                                //位移偏移

//k=1;

…………

…………




关键字:51单片机  点阵8X8  贪吃蛇 引用地址:51单片机点阵8X8贪吃蛇设计(仿真 + 程序)

上一篇:单片机8位LED数码管的静态显示课程设计说明书与仿真
下一篇:AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序

推荐阅读最新更新时间:2024-11-05 20:10

51单片机数字时钟仿真(LCD1602液晶显示)+源程序+电路原理图
下面是51单片机数字时钟程序: #include AT89X52.h #define DSbus P0 #define LCDbus P1 //定义DS12C887和LCD的控制线 sbit DS_CS = P2^7; //引脚13,片选信号输入,低电平有效。 sbit DS_AS = P2^4; //引脚14,地址选通输入。 sbit DS_RW = P2^5; //引脚15,读/写输入。 sbit DS_DS = P2^6; //引脚17,数据选通或读输入。 sbit LCD_RS=P2^0; sbit LCD_EN=P2^2; //时间变量定义 unsigned char Counter; u
[单片机]
<font color='red'>51单片机</font>数字时钟仿真(LCD1602液晶显示)+源程序+电路原理图
51单片机的P1、P2、P3口的工作原理
1、P1口某一位的内部电路结构如下图所示,在51单片机的P0,P1,P2,P3口中,P1口的结构最简单,用途也最单一。仅仅只作为普通的数据输入/输出(I/O)端口使用。从图中可以看出,P0口与P1口的主要差别在于:P1端口用内部上拉电阻代替了P0端口的场效应管,并且输出的信息只有内部总线的信息,没有了数据/地址总线的复用。 1)P1口用作输入端口 如果P1口用作输入端口,即Q=0,/Q=1;则场效应管导通,引脚被直接连到电源的地GND上,即使引脚输入的是高电平,被直接拉低为 0 ,所以,与P0端口一样,在将数据输入P1端口之前,先要通过内部总线向锁存器写 1 ,这样/Q=0,场效应管截止,P1端口输入的
[单片机]
<font color='red'>51单片机</font>的P1、P2、P3口的工作原理
51单片机系列(1)-keil4工程创建
我使用的keil uvision4进行51单片机开发。 那么创建一个keil工程有以下几步: 1、keil4软件安装: keil4软件很容易下载,一般在淘宝卖家处购买单片机之后,会附赠相关的软件安装包和破解包,还有相关破解视频,故不赘述。 2、创建第一个工程: 进入软件之后我们定位到上方菜单栏,点击工程(如下图) 再点击新建工程 接下来就会保存工程路径,路径可以自行选择,注意文件名需要自行填写,否则无法保存,保存类型是默认的,不需要更改 接下来会弹出一个选择单片机CPU的窗口 我们使用的是51单片机,所以直接定位Atmel,我的单片机芯片型号是89C52,则定位Atmel下属的AT89C52,最
[单片机]
<font color='red'>51单片机</font>系列(1)-keil4工程创建
8051单片机精确延时程序
各种教材都喜欢用for循环再嵌套一个for循环来实现延时,下列是通过定时器来延时; delay(t)表示延时t ms; 也可以通过定时器中断的方式来延时,但是每次延时的时间非常有限,对于11.0592MHz的晶振,每次中断延时只有约71ms. 延时函数 void delay(unsigned int t)//延时t ms { TMOD=0x01;//设置工作模式 TR0=1; //启动定时器0 ET0=0x00;//禁止定时中断 while(t!=0)//循环次数t { TH0=0xFC; TL0=0x66;//设置计数初值 while(TF0!=1);//查询计数器溢出标志位 TF0
[单片机]
51单片机 I2C AT24C02
I2C协议在项目开发中使用很常见,很多存储芯片使用I2C接口。由于51单片机没有I2C接口,这里使用IO口模拟I2C通讯协议,来完成I2C芯片驱动。使用的I2C芯片为AT24C02。 原理图如下: 代码如下: //程序功能:计时器每一秒向AT24C02保持数据,同时数码管显示,重启之后读取出数据接着计时,100S循环 //程序问题:无法写入 #include #define uint unsigned int #define uchar unsigned char //变量定义 uint timer_flag; //用于判断定时器T0方式一是否计满1s u
[单片机]
基于AT89C51单片机的红外遥控器解码器的设计
 1 红外线遥控信号发送器电路 TC9012F的遥控信号   TC9012F为4位专用微控制器,其内部振荡电路的振荡频率fosc典型值为455 kHz。当不按下操作键时,其内部455 kHz的时钟振荡器停止工作,以减少电池消耗。内部分频电路将振荡频率,fosc进行12分频后,变成频率fc=37.9 kHz,占空比为1/3的脉冲载波信号。 红外遥控信号发送器电路由集成电路TC9012F、键盘矩阵电路、驱动器和红外发光二极管组成,遥控信号为37.9 kHz的脉冲载波被遥控编码脉冲调制的已调波,如图1所示。   遥控编码脉冲由引导码、用户码、功能码和功能码的相反码组成,用户码是同一组码发送两次,如图2所示。用户码
[单片机]
基于AT89C<font color='red'>51单片机</font>的红外遥控器解码器的设计
51单片机】STC89C52数码管静态显示实验,含c代码(5)
1.参考教程: 清翔51单片机教程 2.基本原理 : 1)数码管位数:几个数码管连在一起,就是几位。 2)数码管共级:共阴极-数码管中间的线是GND。共阳极-数码管中间的线是VCC。用万用表测:黑表笔放GND(中间)处,红表笔放a处,若a灯亮起则是共阴极。 3)控制每段的亮灭,亮输入高电平,灭低电频。例:数码管显示数字1。对应二进制排列:00000110. 3.静态显示 每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直达送入新字形码为止。 1)锁存器原理 2)位选和段选 用两个锁存器分别进行位选和位选。 位选流程: ①P27赋高定平(也就是位选锁存器的LE脚打开
[单片机]
【<font color='red'>51单片机</font>】STC89C52数码管静态显示实验,含c代码(5)
MCS-51单片机中软时钟设计的优化方法
0 引言 随着微电脑应用的普及,以MCS-51单片机为核心的微机测控系统已随处可见。为满足用户要求,这些系统通常都具有数码显示时钟的功能。由于MCS-51内部包含2个定时计数器,通过采用将其中一个定时计数器用于软时钟设计的方法,可以大大节省硬件开销。本文提出了如何提高软时钟的定时精度,以及在软时钟存在的情况下,如何提高以MCS-51单片机为核心的测控系统的设计质量的方法。 1 MCS-51单片机内部定时计数器概述 MCS-51单片机内部包含2个定时计数器T0和T1,它们都是16位的加法计数器,既可用于定时,也可用于计数,在用于定时的情况下,计数脉冲由内部提供,因此计数速率固定为CPU振荡频率的1/12;在用于计数的情
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved