通信原理课程设计红外遥控贪食蛇样本_第1页
通信原理课程设计红外遥控贪食蛇样本_第2页
通信原理课程设计红外遥控贪食蛇样本_第3页
通信原理课程设计红外遥控贪食蛇样本_第4页
通信原理课程设计红外遥控贪食蛇样本_第5页
已阅读5页,还剩29页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信系统原理

课程设计

基于51单片机和

红外遥控点阵贪食蛇

目录

第一章方案设计与论

证.....................................11.稳压电源模块方案

论证...............................1

2.单片机选取论证...................................2

3.点阵驱动方案论证...................................2

第二章系统总体设计.......................................3

第三章红外遥控系统简介...................................4

1.红外通讯原理........................................4

2.红外遥控系统构造....................................5

3.调制.................................................5

4.发射系统............................................6

5.一体化红外接受头....................................7

6.红外编码格式.........................................8

第四章硬件设计.........................................10

1.8X8LED单色点阵原理阐明........................10

2.LED阵列驱动电路....................................10

3.稳压电源电路........................................10

4.蜂鸣器及其驱动电路...............................11

5.红外接受模块电路....................................11

6.单片机最小系统.......................................12

7、系统总原理图.........................................12

第五章软件设计.........................................14

1.主程序工作流程.....................................14

2.LED点阵初始化......................................14

3.贪吃蛇移动........................................15

4.食物随机浮现....................................15

5.红外遥控...........................................15

第六章测试与调试.......................................17

第七章总结..............................................19

附录一系统源程序.......................................20

绪论:

本文依照贪食蛇游戏规则,重要阐述基于51单片机和红外遥控

点阵贪食蛇设计方案及思路。本文以ATMELAT89S52单片机为控制

核心,使用8*8点阵为显示模块,设计并实现贪食蛇最基本功能。

文章详细简介了红外遥控贪食蛇硬件电路和软件设计。硬

件某些运用红外接受头输出接在AT89c52单片机TNT1中断口,通过

跳变沿触发方式来触发单片机INT1中断,从而可以对编码脉冲进行

接受、存储和解码,然后依照相应键值实现点阵上贪食蛇各种运动变

换。

贪吃蛇,是一种益智小游戏。其游戏背景:蛇引诱夏娃吃

了苹果之后,就被贬为毒虫,阴险象征,而蛇吃东西是整只动物吞

进去,大概在文艺复兴时候就有人创造了这样一种游戏,是当前贪

吃蛇前身,日后慢慢地发展成了既有贪吃蛇游戏。其游戏规则比较简

朴,就是一条小蛇,不断地在屏幕上游走去吃屏幕上浮现食物,越

吃越长,到了一定长度之后,就可以进入下一关,越到背面关卡蛇

移动速度越快,只要蛇头遇到四周墙壁或者遇到自己身体,小蛇就

及时毙命并结束游戏。

第一章方案设计与论证:

1.稳压电源模块方案论证:

惯用电源有串联型线性稳压电源(LV2940、7805等)和开关型稳压电源

(LM2596、LM2575等)两大类。前者具备纹波小、电路构造简朴长处,但是效

率较低,功耗大;后者功耗小,效率高,但电路却比较复杂,电路纹波大。对于

单片机,需要提供稳定5V电源,由于IM2940稳压线性度非常好,因此选用

LV2940对其进行供电。在本设计中,51单片机使用5V电源,电池使用7.2V电

源。考虑到电源为充电电池组,额定电压为7.2V,实际布满电后电压则为

7.0-7.3V,因此单片机及红外遥控模块需采用稳压后5V电源供电。

方案一:使用三端稳压电路78XX系列,如7805。工作原理:是电流源型稳

压电路,是通过调节输出电流来保证输出端电压,其反馈量是电压,基准量也

是电压,通过内部电路转化成反馈电流和基准旁路电流,其差值又去旁路内部

电流源使输出电流满足端电压稳定。

5-2709/2

方案二:使用LM2940低压差三端稳压路。

输出电压固定的低压差三端稳压器,输出电压5V,输出电流1A,输出电流IA时,最小输入输出电压差小于0.8V;最大

输入电压26%工作溟度-40〜+125C,内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路。

(TO-220)PlasticPackage

LJI2940引脚图

综合两种方案考虑,LM2940比7805转换效率高。7805直接输入不接输出状况

下,其内部还会有3mA电流消耗(静态电流)。而IN2M0静态电流就比它远远

小得多了。最后采用方案二。

2.单片机选取论证:

方案一:AT89s52单片机是一种高性能8位单片微型计算机。它把构成计算机

中央解决器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而

构成较为完整计算机、并且其价格便宜。

方案二:C8051F005单片机是完全集成混合信号系统级芯片,具备与8051兼容微控制器内

核,与MCS-51指令集完全兼容。除了具备原则8052数字外设部件,片内还集成了数据采

集和控制系统中惯用模仿部件和其她数字外设及功能部件,并且执行速度快。但其价格较

贵

以上两种方案综合考虑,选取方案一。

3.点阵驱动方案论证:

正向点亮一颗LED,至少也得10~20毫安,若电流不够大,则LED不够亮。

而不论是8051输入/输出口,还是TTL、CMOS输出端,其高态输出电流都不是很

高,但是1~2毫安而已,因而,很难直接高态驱动LED。这时候就需要额外驱动电

路。

方案一:采用74HC595芯片驱动LED有如下特点:速度较快,功耗较小,LED数目多少

随意,既可以控制共阴极LED显示屏,也可以控制共阳极LED显示屏,可以软件控制IED亮

度,还可以在必要时候关断显示(数据保存),以减小功耗,并可随时唤醒显示。用它设计电

路,不但软硬件设计简朴,并且功耗低,驱动能力强,占用I/O口线较少,是一种造价低廉,应

用灵活设计方案。

方案二:74HC573是8位三态锁存器。可锁存地址、数据、可作缓冲器用。.

当锁存器输入端出既有效信号,输入状态被锁存到输出湍,直到下一种锁存信号

到来时刷新。这里三态,是指它输出可以是“0”或“1”状态,又可以是高阻状

态。高阻态相称于隔断状态,没有逻辑控制功能。7411c573有驱动能力.每个口输

出电流可达正负35MA。

综上考虑,74HC573虽然占用10口比74HC595多,但其输出电流较大,最后选取

方案二。

第二章系统总体设计:

本系统是基于红外遥控点阵贪食蛇。重要实现如下几种功能:

1.通过红外遥控器上指定按键(上、下、左、右)控制点阵上贪食蛇迈进方

2.遥控器上有七个档位可以调节贪食蛇运动速度,己达到调节游戏难度效

3.贪食蛇每迈进一步,蜂鸣器响一次;

4.贪食蛇且迈进方向不同,蜂鸣器响声音不同(即频率不同);

5.贪食蛇撞上“墙”或者“蛇自身”,游戏结束,回到初始页面;

6、贪食蛇每“吃掉”一种食物,蛇自身长度加一种单位。

第三章红外遥控系统简介

1.红外通讯原理:

红外遥控是单工红外通信方式,木设计红外遥控采用以通信方式为基本红

外遥控,并且本设计也使用了红外通信技术,故着重分析红外通信基本原理。

红外通信是运用红外技术实现两点间近距离保密通信和信息转发。它普通由

红外发射和接受系统两某些构成。发射系统对一种红外辐射源进行调制后发射红

外信号,而接受系统用光学装置和红外探测器进行接受,就构成红外通信系统。

红外线是波长在750nm至1mm之间电磁波,它频率高于微波而低于可见光,

是一种人眼睛看不到光线.红外通信普通采用红外波段内近红外线,波长在

0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商红外产

品可以获得最佳通信效果,红外通信合同将红外数据通信所采用光波波长范畴

限定在850至900nm之内。

红外通信基本原理是发送端将基带二进制信号调制为一系列脉冲串信号(载

波信号),通过红外发射管发射红外信号。惯用有通过脉冲宽度来实现信号调

制脉宽调制(PWM)和通过脉冲串之间时间间隔来实现信号调制脉时调制(PPM)

两种办法。脉时调制(PPM:是红外数据协会(IrDA)和国际电子电工委员会(IEEE)

都推荐调制方式,本设计采用PPM调制办法,即用两个脉冲串之间时间间隔来

表达二进制信息,数据比特传送仿照不带奇偶校验RS232通信,一方面产生一

种同步头,然后接着8位数据比特。如图3.1所示。

_________________________

IlliI

IlliI

Itl>1tl11

III

III

III

III

匕12_______

'二进制数0'二进制数1'

图3.1PPM调制波形图

普通红外遥控采用面向指令帧构造,数据帧由同步码,地址码和指令码构

成,指令码长度多为8〜16个比特,传送多字节遥控合同时效率偏低,而增长

指令码长度不利于接受器同步,为此本设计选用一种直向字节帧构造,采用类

似于异步串行通信帧构造,每帧由一种起始位(二进制数0)、8个数据位和2

个停止位(二进制数1)构成,如图3.2所示。每帧传送1个字节数据,帧与

帧间隔不不大于2ms,帧构造不含地址信息,寻址问题由高层合同解决[8]。

图3.2数据帧构造示意图

由于红外光存在反射,在全双工方式下发送信号也也许会被自身接受,因而,红

外通信应采用异步半双工方式,即通信某一方发送和接受是交替进行。

2、红外遥控系统构造:

红外遥控系统重要分为调制、发射和接受三某些,如图3.3所示:

图3.3

3.调制:

红外遥控发射数据时采用调制方式,即把数据和一定频率载波

进行

“与”操作,这样可以提高发射效率和减少电源功耗。

调制载波频率普通在30khz到60khz之间,大多数使用是38kHz,占

空比1/3方波,如图3.4所示,这是由发射端所使用455kHz品振决定。

在发射端要对晶振进行整数分频,分频系数普通取12,因此455kHz+12七

37.9

kHz^38kHZo

~~出——>

图3.4载波波形

4.发射系统:

当前有诸各种芯片可以实现红外发射,可以依照选取发出不同种类编码。由

于发射系统普通用电池供电,这就规定芯片

功耗要很低,芯片大多都设计成可以处在休眠状态,当有按键按下时才工作,这

样可以减少功耗芯片所用晶振应当有

足够耐物理撞击能力,不能选用普通石英晶体,普通是选用陶瓷共鸣器,陶瓷共

鸣器精确性没有石英晶体高,但普通

一点误差可以忽视不计。

红外线通过红外发光二极管(LED)发射出去,红外发光二极管内部材料和

普通发光二极管不同,在其两端施加一定电压时,

它发出是纤外线而不是可见光C

图3.5A简朴驱动电路图3.5B射击输出驱动电路

如图3.5A和图3.5B是LED驱动电路,图3a是最简朴电路,选用元件时

要注意三极管开关速度要快,还要考虑到LED正向

电流和反向漏电流,普通流过LED最大正向电流为100mA,电流越大,其发射

波形强度越大。

图3.5A电路有一点缺陷,当电池电压下降时,流过LED电流会减少,发射

波形强度减少,遥控距离就会变小。图2.5B所示

射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左

右,因而三级管发射极电压固定在0.6V左右,

发射极电流IE基本不变,依照lEgIC,因此流过LED电流也基本不变,这

样保证了当电池电压减少时还可以保证一定遥

控距离。

5.一体化红外接受头:

红外接受电路普通被厂家集成在一种元件中,成为一体化红外接受

头。

内部电路涉及红外监测二极管,放大器,限副器,带通滤波器,积分电路,

比较器等。红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,

限幅器把脉冲幅度控制在一定水平,而无论红外发射器和接受器距离远近。交流

信号进入带通滤波器,带通滤波器可以通过30khz到60khz负载波,通过解调

电路和积分电路进入比较器,比较器输出高低电平,还原出发射端信号波形。注

意输出高低电平和发射端是反相,这样目是为了提高接受敏捷度。一体化红外接

受头,如图3.6所示:

□

图3.6红外接受头

红外接受头种类诸多,引脚定义也不相似,普通均有三个引脚,涉及供电

脚,接地和信号输出脚。依照发射端调制

载波不同应选用相应解调频率接受头。

本设计选取HX1383,由于其性价比较高,且易于购得,如图3.7:

1838一体化万能接收头红外接收头带金属壳

图3.7

红外接受头内部放大器增益很大,很容易引起干扰,因而在接受头供电

脚上须加上滤波电容,普通在22uf以上。

有厂家建议在供电脚和电源之间接入330欧电阻,进一步减少电源干扰。

6.红外编码格式:

遥控发射器专用芯片诸多,红外遥控编码当前广泛使用是:NEC

Protocol

PWM(脉冲宽度调制)和PhilipsRC-5ProtocolPPM,本设计基于NEC合同。

其编码特性如下:

①、8位地址和8位指令长度;

②、地址和命令2次传播(保证可靠性)

③、PWM脉冲位置调制,以发射红外载波占空比代表“0”和“1”;

④、载波频率为38Khz:

⑤、位时间为1.125FS或2.25ms:

NEC码位定义:

一种脉冲相应560us持续载波,一种逻辑1传播需要2.25ms(560us

脉冲+1680us低电平),占空比1/4;一种逻辑0传播需要1.125ms(560us

脉冲+560us低电平),占空比1/2。而遥控接受头在收到脉冲时候为低电平,在

没有脉冲时候为高电平,这样,咱们在接受头端收到信号为:逻辑1应当是

560us低+1680us高,逻辑0应当是560us低+560us高。如图3.8

------------------------Logical-1"--------------------——LogicalH0M―►]

IIIIIIIII

i-4-560jj$->iH~560JJ$+

-------------------------2.25ms------------------------------------1.12ms---------ki

图3.8

NEC遥控指令数据格式为:

同步码头、地址码、地址反码、控制码、控制反码。同步码由一种9ms低

电平和一种4.5ms高电平构成,地址码、地址反码、控制码、控制反码均是8

位数据格式。按照低位在前,高位在后顺序发送。采用反码是为了增长传播可靠

性(可用于校验)。如图3.9

________1oo1ioioiooiioiooiio1ooooii6iooo

1SBMSBpBMSBLSBSB1SBMSB:

◄-9ms-----kM.5m$E^-------Address-------Address-------Ccmmand--------------------Command-

图3.9

重复码:

一种命令只发送一次,虽然遥控器上按键始终按着。但是会每UOmS发送一

次代码,直到遥控器按键释放。如图3.10

图3.10

重复码比较简朴:一种9mSAGC脉冲、2.25mS间隔、560uS脉冲。如图

2.25ms

图3.11

本设计采用网上购买LC7641芯片为内核小型遥控器作为发送端,其编码基于NEC合同。接

受端为HX1383,数据流入51单片机解码。

第章硬件设计:

1.8X8LED单色点阵原理阐明:

本设计采用点阵显示模

块是ARK-SZ411288K,其原理构造图如图1所示。ARK-SZ411288K显示模块是8*8

点阵显示模块,从图4.1中可以看出,8*8点阵共需要64个发光二极管构成,且每

个发光二极管是放置在行线和列线交叉点上,当相应某一列置1电平,某一行置

0电平,则相应

二极管就亮。

ARK-SZ411288K可与CPU直接连接,依照引脚阐明,将其各个引脚与相应I/O口

连接。

4.18*8LED点阵原理图

2.LED阵列驱动电路:

采用74HC573进行驱动,其中Q0-Q7接口单片机P0口,D7-D0接入8X8点阵阳

极,点阵阴极各串入一种270欧电阻后接到单片机P1口。如图

4.2所示。

3.稳压电源电路如下图:

采用LM2940把7.2V电源转成5V给系统进行供电,原理图如图4.3所示:

图4.3

相应PCB如下图所示:

明叵引即

4.蜂鸣器及其驱动电路设计如右图所示:

由于蜂鸣器驱动电流需要

20-42mA,直接接I0话

电流不够大,因此加上一种三极管

对蜂鸣器进行驱动。

5.红外接受模块电路如右图所示:

6.单片机最小系统电路如下图所示:

39

3?

亘

36

3T

亘

亘

至

37

30

29

巨

27

2£

12?

电答

GND

7、系统总原理图如下图所示:

系统总PCB如图所示:□

系统总实物图如图所示:

第五章软件设计

1.主程序工作流程:

主程序工作流程如图5.1所示,系统上电后一方面对点阵LED进行初始化,

接着对定期器初始化,并启动定期器,接着执行程序主体逻辑,程序主体逻辑

执行一遍后检查与否有中断发生。中断源有两个,一种是驱动贪吃蛇自动前行定

期中断,另一种是顾客控制贪吃蛇移动方向红外接受模块中断,任意中断到来

都将变化贪吃蛇当前状态,若当前没有中断发生,主程序继续判断蛇头与否碰壁

或头尾相撞,若是,结束游戏,否则继续执行程序主体循环。

图5.1主程序工作流程

2.LED点阵初始化:

对点阵初始化,先把点阵所有信息清空,让其不显示任何信息,再在指定

位置显示蛇所处最初位置和笫一种果实位置。初始化程序如下:

voidlnit()

for(i=3;i<SNAKE+1;i++)//SNAKE是蛇最大长度

x[i]=100;

for(i=3;i<SNAKE+1;i++)

y[i]=100;〃初始化

x[0]=4;y[0]=4;〃果子

n=3;〃蛇长n=-l

x[l]=1:y[l]=0;〃蛇头

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

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

)

3.贪吃蛇移动:

当蛇没有吃到任何食物时,每次步进蛇头将要到下一种LED灯点亮,而蛇尾那个

LED灯会灭掉,程序设计时只要将蛇尾那点位置值传给蛇头下一种位置值,再变

化蛇尾值即可。而蛇头下一种位置依照蛇头和偏移量来拟定,每次上下左右相应

红外遥控按键决定了蛇步进偏移量,只要将蛇头位置加上偏移量值即得到新蛇

头位置。当蛇头遇到四周墙壁或者遇到自己身体,小蛇就及时毙命并结束游戏。

4.食物随机浮现:

食物浮现是一种随机行为,因此必要做一种随机数,并且食物浮现位置不能

与蛇位置相似,也不能超过墙外,否则就要重置食物。这里使用程序中定期计数

器低八位TLO数值,由于TLO不断变化,不同步间点数值不同,我这里使用是

C++语言里stdlib.h文献库,使用里面随机函数srand(),先运用srand(TLO)获得TLO

数值,再运用两次rand()%8分别得到食物浮现横纵坐标位置。

5、红外遥控:

编码调制发送接收解调解码

参照红外遥控数据手册和源程序,在相应程序上进行应用O

遥控发射程序框图遥控接受程序框图

第六章测试与调试

1、稳压模块调试:

问题与解决办法:

此模块由于在制作PCB腐蚀板过程中,在曝光时候把菲林片正反面颠倒,

导致原本底层变成了顶层,因此元器件在焊接时候不得不在顶层焊接,导致了

不便。

用万用表测量没有短路或断路现象,接入7.2V电源,测得输出电压为4.

97V,符合设计规定。

心得:

在制作腐蚀板过程中,每个环节都要拟定无误之后再进行相应操作,否则

导致后果往往不能挽回。

2、点阵模块测试:

问题与解决办法:

由于在制作系统原理图和PcB封装时候,错觉得点阵引脚是按规则从第

1脚排列到第16脚,而没有考虑到其实点阵引脚是不规则分布。因此导致点阵

不能直接插入已经腐蚀好电路板上,最后不得不把点阵焊到万能板,然后再用

杜邦线一根一根把点阵引脚和电路板上相应引脚连接起来,导致了极大不美观。

连接好之后系统接上电源,可看出点阵亮度适中,及点阵驱动电路设计符

合规定。

心得:

在进行系统设计时候一定要弄清晰各元器件原理,认真看其数据手册,再

进行PCB设计,若有不拟定地方一定要询问清晰再所涉及。

3、下载器端口测试:

问题与解决办法:

在系统设计时候,单独引出了单片机中vcc、GND、P3-0、

P3Al四个I0口,以便使用下载器对单片机进行程序烧录,省去拔掉单

片机带来不便,也使单片机不会由于这样而导致损坏。把系统和下载器连接好之

后,连接到电脑进行程序烧录,工作正常。

心得:

系统设计要使系统在后期调试和操作时候使用起来以便和人性化。

4、系统PCB腐蚀板测试:

问题与解决办法:

使用万用表对系统腐蚀板进行测试,方向有多处短路现象。因素是由于

A1tiumdesigner中敷铜规则敷铜距离过近,导致在焊接元器

件时经常会有焊锡粘到焊盘附件铜,从而短路。最后使用美工刀对短路地方进行

修整,再次测试发现再无短路和断路现象。

心得:

加强对AItiumdesigner软件上各种实用规则理解,并能

进行运用.

5、系统程序调试:

问题与解决办法:

程序没有使用模块化编程,使程序整体感较乱,对C语言掌握依然欠缺,

特别是对函数和变量调用,中断函数使用。参照了诸多百度上某些资料和程序才

最后写出了程序。

心得:

加强对C语言运用,掌握好C基本知识然后经常进行使用才干发现自身所欠

缺问题。

6.本系统需要改进地方:

①腐蚀板容易被氧化,导致某些地方存在不知因素干扰;

②红外遥控与点阵显示之间存在约0.5秒误差;

③系统稳定性能较差,有时候会有莫名错误浮现。

④随机函数运用得不好,导致“食物”并没有真正随机浮现,而只是出当

前了贪食蛇尾部。

第七章总结:

通过本次课程设计,提高了咱们对单片机编程能力,对硬件电

路分析和应用。同步也获得软件调试经验,进一步增强了咱们对8X

8点阵和红外遥控模块理解和应用。同步也加强了咱们实际编程能力,

提高了对几种软件应用,如A1tiumdesigner、ke

i14等。

在做本次课程设计过程中,咱们感触最深当属查阅大量设计资料了。

为了让咱们设计更加完善,查阅这方面设计资料是十分必要,同步

也是必不可少。咱们是在做通信原理课程设计,但咱们不是艺术家,

她们可以抛开实际尽情在幻想世界里飞翔,而咱们一切都要有据可

依,有理可寻,不切实际构想永远只能是构想,永远无法升级为设

由于经验局限性,理论方面也相应存在局限怛,再加上条件有限,

本设计中仍存在着某些设计方面问题和缺陷,个人技能也有待提高,

理论知识还要巩固加强。同步也让咱们更加懂得了自己知识领域里局

限性和缺陷。

附录一:系统源程序

#include<reg52.h>

#include<intrins.h>

#defineNOP()_nop_()/*定义空指令7

#defineucharunsignedchar

#defineSNAKE20〃最大长度

#defineTIME50〃显示延时时间

ucharx[SNAKE+1];

uchary[SNAKEt-1];

uchartime,n,i,e,FX,k;

当前速度

charaddx,addy;l/{

charSPEED;〃速度控制

sbitfengming=P3A5;

externunsignedcharjieshou;

externunsignedcharIRCOM[7];

typedefunsignedcharuint8;

typedefunsignedintuint16;

voiddisplay(unsignedcharKey_Val);

externvoidIRInit();//extern是引用IR.C中函数

蜂鸣器模块

voiddelay1(uint16x)

(

uint16ij;

for(i=x;i>0;i-)

for(j=8;j>0;j-);

}

voidPlay(uint81)

(

uint8i;

for(i=0;i<10;i++)

{

fengming=~fengming;

delayl(t);

)

}

红外遥控模块

★★★★★★★★★★★★★★★★★★★★★m★mm*,

voiddisplay(unsignedcharKey_Val)

switch(Key_Val)

{

case0x18:FX=1;Play(1);break;

case0x08:FX=3:Play(2);break;

case0x5a:FX=4;Play(3);break;

case0x52:FX=2;Play(4);break;

case0x45:SPEED=80;break;

case0x46:SPEED=60;break;

case0x47:SPEED=40;break;

case0x44:SPEED=20;break;

case0x40:SPEED=10;break;

case0x43:SPEED=5;break;

case0x09:SPEED=3;break;

}

)

贪吃蛇模块

voiddelay(charMS)

(

charus,usn;

while(MS!=0)

usn=0;

while(usn!=0)

{

us=0xff;

while(us!=0)

(

US-;

)

usn-;

)

MS-;

)

)

判断碰撞

★★★★★★★★★★★★★★★★★★*************************^

bitknock()

(

bitk;

k=0;

if(x[1]>7||y[1]>7)k=1;〃撞墙

for(i=2;i<n;i++)if((x[1]==x[i])&(y[1]==y[i]))k=1;〃撞自己

returnk;

)

****************

上下左右键位解决

★★★★★★★★★★★★★★★★★/

voidturnkey()//interrupt0using2

(

if(jieshou){

if(FX==1)

(

addy=O;

if(addx!=1)

addx=-1;

else

addx=1;

}

if(FX==2)

{

addy=0;

if(addx!=-1)

addx=1;

else

addx=-1;

}

if(FX==3)

(

addx=0;

if(addy!=-1)

addy=1;

else

addy=-1;

)

if(FX==4)

(

addx=O;

if(addy!=1)

addy=-1;

else

addy=1;

)

)

)

乘方程序

*******★****★****/

ucharmux(uchartemp)

{

if(temp==7)return128;

if(temp==6)return64;

if(temp==5)return32;

if(temp==4)return16;

if(temp==3)return8;

if(temp==2)return4;

if(temp==1)return2;

if(temp==O)return1;

return0;

}

显示时钟显示程序

voidtimerO(uchark)

(

while(k-)

{

for(i=0;i<SNAKE+1;i++)

(

P0=mux(x[i]);

P2=255-mux(y[i]);

turnkey();〃上下左右键位解决

delay(TIME);〃显示延迟

P2=Oxff;PO=OxOO;

)

)

)

主函数

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

voidmain(void)

IRInitO;

e=SPEED;

PO=OxOO;

P1=Oxff;

P2=0x00;

SPEED=30;

while(1)

for(i=3;i<SNAKE+1;i++)

x[i]=1OO;

for(i=3;i<SNAKE+1;i++)

y[i]=1OO;〃初始化

x[0]=4;y[0]=4;〃果子

n=3;〃蛇长n=-1

x[1]=1;y[1]=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论