資源簡介
C51單片機點陣貪吃蛇代碼(16*16點陣和8*8點陣都有)。keil4的完整工程文件夾,可以用紅外遙控器控制蛇的上下左右移動,注釋清楚,內(nèi)附我用到的板子原理圖以供移植參考。

代碼片段和文件信息
#include?“reg51.h“ ?//此文件中定義了單片機的一些特殊功能寄存器
#include?“intrins.h“
typedef?unsigned?int?u16; ??//對數(shù)據(jù)類型進行聲明定義
typedef?unsigned?char?u8;
sbit?IRIN=P3^2; ??//定義中斷口?0作為接收及處理
sbit?SRCLK=P3^6;
sbit?RCLK=P3^5;
sbit?SER=P3^4;
u8?IrValue[6]; ?//存儲紅外遙控器發(fā)來的指令數(shù)據(jù)
char?ch1=‘a(chǎn)‘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; //定義模擬時序需要的變量
/*******************************************************************************
*?函?數(shù)?名?????????:?delay
*?函數(shù)功能 ???:?延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void?delay(u16?i)
{
while(i--);
}
/*******************************************************************************
*?函?數(shù)?名?????????:?Hc595SendByte(u8?dat1u8?dat2u8?dat3u8?dat4)
*?函數(shù)功能 ???:?通過595發(fā)送四個字節(jié)的數(shù)據(jù)
*?輸????入?????????:?dat1:第4個595輸出數(shù)值
*??????????????????*?dat2:?第3個595輸出數(shù)值
*??????????????????*?dat3:第2個595輸出數(shù)值
*??????????????????*?dat4:第1個595輸出數(shù)值
*?輸????出?????????:?無
*******************************************************************************/
void?Hc595SendByte(u8?dat1u8?dat2u8?dat3u8?dat4)
{
u8?a;
SRCLK?=?1;
RCLK?=?1;
for(a=0;a<8;a++) ?//發(fā)送8位數(shù)
{
SER?=?dat1?>>?7; ?//從最高位開始發(fā)送
dat1?<<=?1;
SRCLK?=?0; ?//發(fā)送時序
_nop_();
_nop_();
SRCLK?=?1;
}
for(a=0;a<8;a++) ?//發(fā)送8位數(shù)
{
SER?=?dat2?>>?7; ?//從最高位開始發(fā)送
dat2?<<=?1;
SRCLK?=?0; ?//發(fā)送時序
_nop_();
_nop_();
SRCLK?=?1;
}
for(a=0;a<8;a++) ?//發(fā)送8位數(shù)
{
SER?=?dat3?>>?7; ?//從最高位開始發(fā)送
dat3?<<=?1;
SRCLK?=?0; ?//發(fā)送時序
_nop_();
_nop_();
SRCLK?=?1;
}
for(a=0;a<8;a++) ?//發(fā)送8位數(shù)
{
SER?=?dat4?>>?7; ?//從最高位開始發(fā)送
dat4?<<=?1;
SRCLK?=?0; ?//發(fā)送時序
_nop_();
_nop_();
SRCLK?=?1;
}
RCLK?=?0;
_nop_();
_nop_();
RCLK?=?1;
}
void??SnakeCuShi(void)??//初始化蛇為三節(jié)
{
????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()???????//蛇身移位函數(shù)
{
????int?i;
????for(i=Snakeleng-1;i>0;i--)?//循環(huán)讀取下一個位置的坐標
????{
???????????Snake[i].x=Snake[i-1].x;//???將數(shù)組所有元素后移一個位置
???????????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個文件信息
評論
共有 條評論