基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx

上传人:b****2 文档编号:13710981 上传时间:2022-10-13 格式:DOCX 页数:29 大小:1.22MB
下载 相关 举报
基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx_第1页
第1页 / 共29页
基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx_第2页
第2页 / 共29页
基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx_第3页
第3页 / 共29页
基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx_第4页
第4页 / 共29页
基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx

《基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。

基于16x16LED点阵的贪食蛇游戏设计Word文档格式.docx

亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。

LED的开展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向开展。

用LED点阵作为图形或文字的显示,是非常灵活的,非常具有感染力的。

对于在校生来说,课堂上的知识永远都是理论,如果不实践就完全荒废了知识的学习。

在本设计中虽然只是简单的研究一下用单片机驱动的LED显示的贪食蛇游戏,其主要目的是复习和稳固单片机知识。

关键词:

LED,单片机,点阵,驱动,矩阵

1.1设计的目的

〔1〕本设计是基于16*16LED点阵的贪食蛇游戏设计,主控芯片是STC51单片机。

本设计的目的是为了稳固单片机知识,提高学生的实践动手能力,发现问题、分析问题、解决问题的能力。

1.2设计的任务与根本要求

〔1〕.熟练掌握并应用单片机的理论、技术;

〔2〕.熟悉、了解并且学会使用16×

16点阵;

〔3〕.熟悉、掌握芯片的知识;

〔4〕.能够实现设计任务的根本功能;

〔5〕.撰写课程设计论文;

第二章

——硬件篇

2.1主要元件说明

〔1〕74HC595驱动芯片

74HC595串行输入8位并行输出的锁存器,是一款漏极开路输出的CMOS移位存放器,输出端口为可控的三态输出端,亦能串行输出控制下一个级联的芯片。

当串行数据输入脚SCK来一个脉冲时,数据从芯片的SI端口串行输入;

当输出存储器锁存时钟信号RCK有脉冲时,数据从8位输出端口并行输出。

这样,应用4片74HC595级联就可以控制16*16=256个LED发光二极管的16行和16列。

〔四片级联控制对取模有影响,建议行列控制的锁存器分开控制〕

2.16*16LED显示模块

本设计应用的是4片8*8共阳LED点阵,将4片LED的行和列级联在一起形成了16*16的LED点阵。

2片74HC595控制点阵的行另外两片控制列,当控制驱动芯片的横纵坐标的数据分别给出“1〞和“0〞时那么该坐标点上的LED发亮。

3.主控芯片STC12C5A60S2

STC12C5A60S2是一款高速、高可靠;

低功耗、超低价;

强抗静电、强抗干扰的芯片,比起普通的C51系列单片机速度更快。

为了提高速度在本设计中主控系统板使用了24MHz的外部晶振,刷屏速度更快,显示效果更明显。

〔STC12C5A60S2单片机具体介绍使用手册上更全面〕

自主设计的小系统,在网上买一个USB串口下载器,本钱大大降低,同时也积累了很多丰富的经历。

第三章

——软件篇

3.1硬件系统设计软件altiumdesigner10

PCB设计软件有很多版本,但相对于protel99se而言,altiumdesigner10的操作更灵活,所以操作起来更方便而且节约了很大局部的时间。

同时altiumdesigner10也是作者青睐的一款软件。

16*16LED点阵原理图

STC12C5A60S2小系统原理图

〔小系统PCB〕

小系统

〔该小系统很多外围电路是为其他学习所用,其中立式电池座没买到,所以时钟芯片没有加上去,电位器是嵌套小功放电路调节音量的〕

3.2编程软件keiluVision4

最新的KeiluVision4IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。

uVision4引入了灵活的窗口管理系统,能够拖放到视图的任何地方,包括支持多显示器窗口。

uVision4在μVision3IDE的根底上,增加了更多群众化的功能。

·

多显示器和灵活的窗口管理系统

系统浏览器窗口的显示设备外设存放器信息

调试复原视图创立并保存多个调试窗口布局

多工程工作区简化与众多的项

程序:

#include<

reg52.h>

#include<

stdlib.h>

stdio.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineSnake15//最大长度,蛇吃满多少就自动完毕程序

sbitDS=P1^0;

//595串口数据输入端

sbitOE=P1^1;

//使能端,低电平有效

sbitST=P1^2;

//移位存放器的时钟输入SCK

sbitSH=P1^3;

//存储器的时钟输入RCK

charlength,Level;

charaddx,addy;

//位移偏移量

charx_food,y_food;

//食物坐标

ucharx[Snake-1];

//x坐标

uchary[Snake-1];

//y坐标

uchartime,n,i,e;

ucharSPEED;

//速度

charPlay_en;

//开场游戏标志

charSad_flag;

sbitKey_EN=P2^0;

//方向使能,默认是低电平

sbitup=P2^3;

//定义方向键

sbitdown=P2^2;

sbitleft=P2^1;

sbitright=P2^4;

sbitMode=P2^5;

chartemp;

charInit_Snake_flag;

charMode_flag;

charMode_1,Mode_2;

uintWait_Time;

charEat_Food_super(chari);

voidGame_play_super();

voidInit_Snake();

voidDisplay(ucharx,uchary);

voiddelay()

{charj,i;

for(i=0;

i<

25;

i++)

for(j=0;

j<

10;

j++);

}

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

判断碰撞

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

charKnock()

{

temp=0;

if((x[length-1]==(-1))||(x[length-1]==16)||(y[length-1]==(-1))||(y[length-1]==16))

temp=1;

//撞墙

for(i=0;

length-1;

{

if((x[length-1]==x[i])&

&

(y[length-1]==y[i]))//撞自己

{

temp=1;

break;

}

}

returntemp;

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

方向处理

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

voidKey_Scan()

{

P2=0xff;

if(Mode==0)//模式转换处理按键

{

delay();

while(Mode==0);

Mode_flag=!

Mode_flag;

}

if(Key_EN==0)

Play_en=1;

if(Play_en==1)

{

if(right==0)

{

addy=0;

if(addx!

=-1)addx=1;

elseaddx=-1;

}

if(left==0)

if(addx!

=1)addx=-1;

elseaddx=1;

if(up==0)

addx=0;

if(addy!

=-1)addy=1;

elseaddy=-1;

if(down==0)

{

addx=0;

=1)addy=-1;

elseaddy=1;

voidTransmit_Data(unsignedlongData)

uchari;

unsignedlongNum;

OE=0;

Num=Data;

32;

if(Num&

0x80000000)

DS=1;

else

DS=0;

SH=1;

//上升沿,数据送入存放器

SH=0;

Num<

<

=1;

}

ST=1;

//上升沿,数据推出端口

ST=0;

voidDisplay(ucharx,uchary)//显示点函数

unsignedintL,H;

unsignedlongpoint;

L=1<

(15-x);

H=~(1<

y);

point=L;

point<

=16;

point+=H;

Transmit_Data(point);

碰撞表情“囧〞

voidSad()

uchari,j,k,n,m,a,b;

charg=2;

unsignedlongCount;

if(Sad_flag==1)

for(i=0;

3;

Display(i+2,i+11);

for(i=11;

14;

Display(i,11+g);

g--;

}

16;

Display(0,i);

for(j=0;

j++)

Display(15,j);

for(k=0;

k<

k++)

Display(k,0);

for(n=0;

n<

n++)

Display(n,15);

for(n=4;

12;

Display(n,3);

Display(n,8);

8;

Display(4,n);

Display(11,n);

voidPut_food()

Display(x_food,y_food);

voidSnake_Body()

for(i=0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1