『壹』 各位都用51單片機做過什麼好玩的東西沒
當然有啦,如:光影搖棒,一搖就可以顯示出漢字來。
還比如:用一個8X8LED點陣,做一個貪吃蛇游戲機。
等等,很多的,都可以用單片機做出一個成形的東西來。
『貳』 求大神幫忙,用51單片機c語言編寫貪吃蛇代碼
這個我寫過,代碼已經丟了,我當時是創建一個(u16)數組,每個數組裡面2個位元組代表都是橫豎2個地址,顯示特定數量是數組的點(蛇長度)。每一次前進,就需要對數組進行自我覆蓋,然後顯示這個新數組的點。如果要變長,那就多顯示一個數組,往後的不顯示。
如果現在寫,我傾向於使用
鏈表
,這樣就不需要反復復制整個數組,而是只改動頭尾變化的點。
『叄』 51單片機開發板的功能介紹
1、8個LED燈,可以練習基本單片機IO操作,在其他程序中可以做指示燈使用。
2、2個四聯8段數碼管,顯示溫度數據,HELLO歡迎詞、時鍾等。
3、高亮8*8點陣,如練習數字,字母,圖片顯示,或者小游戲的開發如貪吃蛇等。
4、4個獨立按鍵,可以配置為中斷鍵盤,為程序的按鍵掃描節省更多的時間。
5、8個AD按鍵,主要設計為游戲開發如推箱子等,去掉了矩陣鍵盤,AD鍵盤在實際中的應用相當廣泛,如電視機加減搜台等都是採用AD鍵盤,一根AD線可以擴展幾百個按鍵,更接近工程。
6、PCF8591具有AD/DA功能,其採用IIC匯流排協議,可練習IIC匯流排的操作。
7、DS18B20:單線多點檢測支持。
8、光敏電阻測試光線強度,感受白天黑夜的區別。
9、FM收音機:能接收80M到110MHz之間的FM頻段。可實現自動搜台和手動搜台。
10、DS1302時鍾晶元提供實時時鍾,帶3V電池,在掉電的情況下,時鍾仍然可以繼續運行。
11、可讀寫SD卡文件系統,保存數據顯示到TFT液晶屏等。
12、繼電器可以控制高電壓的設備,高壓危險,請小心使用。
13、直流電機介面,控制直流電機。
14、步進電機介面,控制步進電機運行。
15、蜂鳴器,可以做電子琴、音樂發聲等。
16、74HC595晶元練習串列轉並行數據擴展。
17、74HC573鎖存擴展晶元,可以擴展介面。
18、ULN2003電機驅動晶元。(這里用它來驅動步進電機,直流電機,繼電器和蜂鳴器)
19、MAX232串口數據傳輸延長發送距離。(可與計算機通信,同時也可做為STC單片機下載程序的介面)
20、PL2303下載單片機,一線下載,直接的USB下載方式,高速下載。
21、TFT液晶屏,單片機也可以控制彩屏了,讓你的學習充滿樂趣
22、nRF24L01無線數據傳輸晶元介面,可以插nRF24L01晶元,做高速無線數據傳輸。
23、LCD1602液晶介面,字元液晶兩行,每行可以顯示16個字元。
24、LCD12864帶字型檔液晶介面。
25、LCD12864圖形液晶介面。
26、DS18B20單線多點溫度採集介面。一根線上便可拓展多個DS18B20溫度感測器,先提供兩個。
27、提供ISP下載介面,可下載AVR、AT的單片機。支持AVR單片機。
28、40針擴展介面,可以無限擴展。以後的DZR-01A開發板配件將從此埠擴展出去。
29、PS2滑鼠鍵盤介面。配合紅外遙控器甚至可以遙控我們的電腦!(配常式)
30、AVR/51復位按鍵。可以復位51 STC AVR單片機,全部支持
31、TEA5767的IIC匯流排控制。學習IIC控制
32、SD卡的SPI匯流排控制。擴展大容量存儲器
33、紅外遙控接收器,可採集紅外遙控發出的信號,可使用遙控信號控制其他設備。
34、外接5V供電電源座。
35、RXD、TXD、POWER電源指示燈
36、40PIN緊鎖座(非常方便單片機晶元的取放)
37、帶LM1117-3.3穩壓晶元(為彩屏液晶,SD卡和無線模塊供電)
38、USB供電(USB可以提供500MA的電流,完全能滿足開發板的需求了)
39、預留電源+5V,GND介面各四個(方便用戶擴展其他外圍電路時取電和共地)
『肆』 51單片機怎麼做做游戲機
要用51單片機做做游戲機,只能做些簡單的游戲機,例如,用8X8點陣模塊做個貪吃蛇,用12864點陣屏做個更好些的貪吃蛇,俄羅斯方塊等。像手機上玩的游戲就做不了的,速度不夠,手機用的顯示屏又不好驅動。
『伍』 c語言 貪吃蛇 程序
基本思路:
蛇每吃一個食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇頭的運動,而蛇身子跟著蛇頭走,每後一格蛇身子下一步走到上一格蛇身子的位置,以此類推。
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define BEG_X 2
#define BEG_Y 1
#define WID 20
#define HEI 20
HANDLE hout;
typedef enum {UP, DOWN, LEFT, RIGHT} DIR;
typedef struct Snake_body
{
COORD pos;//蛇身的位置
struct Snake_body *next;//下一個蛇身
struct Snake_body *prev;//前一個蛇身
}SNAKE, *PSNAKE;
PSNAKE head = NULL;//蛇頭
PSNAKE tail = NULL;//蛇尾
//畫游戲邊框的函數
void DrawBorder()
{
int i, j;
COORD pos = {BEG_X, BEG_Y};
for(i = 0; i < HEI; ++i)
{
SetConsoleCursorPosition(hout, pos);
for(j = 0; j < WID; ++j)
{
if(i == 0)//第一行
{
if(j == 0)
printf("┏");
else if(j == WID - 1)
printf("┓");
else
printf("━");
}
else if(i == HEI - 1)//最後一行
{
if(j == 0)
printf("┗");
else if(j == WID - 1)
printf("┛");
else
printf("━");
}
else if(j == 0 || j == WID - 1)//第一列或最後一列
printf("┃");
else
printf(" ");
}
++pos.Y;
}
}
//添加蛇身的函數
void AddBody(COORD pos)
{
PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));
pnew->pos = pos;
if(!head)
{
head = tail = pnew;
}
else
{
pnew->next = head;//新創建蛇身的next指向原先的蛇頭
head->prev = pnew;//原先的蛇頭的prev指向新創建的蛇身
head = pnew;//把新創建的蛇身作為新的蛇頭
}
SetConsoleCursorPosition(hout, head->pos);
printf("◎");
}
//蛇身移動的函數
void MoveBody(DIR dir)
{
PSNAKE ptmp;
COORD pos = head->pos;
switch(dir)
{
case UP:
if(head->pos.Y > BEG_Y + 1)
--pos.Y;
else
return;
break;
case DOWN:
if(head->pos.Y < BEG_Y + HEI - 2)
++pos.Y;
else
return;
break;
case LEFT:
if(head->pos.X > BEG_X + 2)
pos.X -= 2;
else
return;
break;
case RIGHT:
if(head->pos.X < BEG_X + (WID - 2) * 2)
pos.X += 2;
else
return;
break;
}
AddBody(pos);//添加了一個新的蛇頭
ptmp = tail;//保存當前的蛇尾
tail = tail->prev;
if(tail)
tail->next = NULL;
SetConsoleCursorPosition(hout, ptmp->pos);
printf(" ");
free(ptmp);
}
int main()
{
int ctrl;
DIR dir = RIGHT;//初始蛇的方向是向右的
COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};
system("color 0E");
system("mode con cols=90 lines=30");
hout = GetStdHandle(STD_OUTPUT_HANDLE);
printf(" ------------貪吃蛇的移動------------");
DrawBorder();
//自定義幾個蛇的身體
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
pos.X += 2;
AddBody(pos);
//控制蛇的移動
while(ctrl = getch())
{
switch(ctrl)
{
case 'w':
if(dir == DOWN)
continue;
dir = UP;
break;
case 's':
if(dir == UP)
continue;
dir = DOWN;
break;
case 'a':
if(dir == RIGHT)
continue;
dir = LEFT;
break;
case 'd':
if(dir == LEFT)
continue;
dir = RIGHT;
break;
case 'q':
return 0;
}
MoveBody(dir);
}
return 0;
}
(5)單片機88點陣貪吃蛇擴展閱讀:
實現邏輯
1,可以設置游標,就能實現制定位置列印製定符號。
2,涉及一個結構體,包含兩個元素坐標元素和一個結構體指針。
3,結構體串聯形成鏈表,遍歷獲取成員坐標,列印符號得到蛇身。
4,不斷的加頭,去尾,重新遍歷坐標,再列印形成蛇的移動。
5,食物產生的位置判定,不能越界,也不能與蛇身體重合。
6,蛇的轉向判定,一條規則,不允許倒退。
7,轉向的實現,跟行進方向決定新的關節坐標(當前頭的上下左右)
8,死亡檢測,是否頭節點坐標是否與牆壁重合,是否與身體其他關節重合。
9,加速減速,設置刷新休眠時間實現。
『陸』 開發板的電路連接都是固定的了嗎,用單片機開發板能做出貪吃蛇游戲嗎
1.這要看開發板的設計。有的是固定式的,有的是自由連接的。固定式的用起來方便,實驗不需要拔插接頭,沒有接錯線的顧慮,但不靈活。自由連接的則完全相反。
不過,就算是固定式的開發板,大部分也會把所有的IO引腳引出,所以你仍然可以把它當一個最小板然後組合其他的電路。
2.要做貪吃蛇,單片機開發板必須至少有:
LCD顯示裝置,還不能太小,最好是12864或者更大的,否則沒意思
至少4個按鍵(不然怎麼控制)
如果你的開發板有這些,那麼恭喜你,舞台已經搭好了,剩下的就看你的發揮了。