找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 73727|回復(fù): 120
打印 上一主題 下一主題
收起左側(cè)

挑戰(zhàn)極限(一)51單片機(jī)驅(qū)動(dòng)電腦vga顯示器玩方塊游戲

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51654 發(fā)表于 2013-7-9 23:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在51hei單片機(jī)網(wǎng)學(xué)了很久了,咱也上傳點(diǎn)小制作,帶動(dòng)一下51hei論壇的人氣啊,89C2051能干什么?這次我打算用它來(lái)做個(gè)方塊游戲,用彩顯來(lái)顯示。
但2051那點(diǎn)速度,那點(diǎn)內(nèi)存,做起來(lái)好不容易。
沒(méi)有PWM輸出,只能用軟件模擬彩顯的行,場(chǎng)同步信號(hào)。
僅128 BIT內(nèi)存,其中112字節(jié)用作顯示緩存,剩下給系統(tǒng)的只有16字節(jié)了。
硬件倒是簡(jiǎn)單,所以就連洞洞板也沒(méi)焊,拿個(gè)IC座空中搭橋來(lái)測(cè)試。
程序還有些BUG,遲些改好后再上傳。









以下藍(lán)色文字由版主:xuyiyi 加入。


呵呵,終于做好了,并加了個(gè)動(dòng)感的開機(jī)動(dòng)畫,先上視頻。

最新版原理圖及 PCB圖,終結(jié)完美版.rar (48.75 KB, 下載次數(shù): 593)
俄羅斯方塊游戲源碼.rar (11.94 KB, 下載次數(shù): 498)
俄羅斯方塊游戲Hex碼.rar (3.26 KB, 下載次數(shù): 152)

網(wǎng)友 cowboy 設(shè)計(jì)總結(jié):
整板測(cè)試完畢,基本滿意。還有一些小毛。
1、顯示網(wǎng)格信號(hào)時(shí),發(fā)現(xiàn)有輕微拖尾現(xiàn)象,發(fā)現(xiàn)是下拉電阻R13(3.3K)過(guò)大所致,改為1K后正常。
2、三極管封裝絲印畫反了,所有三極管全部轉(zhuǎn) 180度安裝才正確,即將 C, E 引腳對(duì)換。
切記不要按絲印的那個(gè)“D”形來(lái)安裝,要轉(zhuǎn)180度才正確。
3、電源退耦電容小了點(diǎn),當(dāng)揚(yáng)聲器阻抗較低,且電源內(nèi)阻大時(shí),畫面有些干擾。

----------------------------------------------------------------------------------------------

網(wǎng)友 xiaozhiyong 測(cè)試 LS2051 總結(jié):
LS2051測(cè)試成功了。
關(guān)于LS2051每運(yùn)行一條語(yǔ)句只用一個(gè)機(jī)器周期,所以在AT2051里的雙周期語(yǔ)句后都得加NOP。我改了以后試了下發(fā)現(xiàn)能用,現(xiàn)在先發(fā)個(gè)暫時(shí)看著能用的程序。以下是測(cè)試程序:
點(diǎn)擊此處下載 LS2051test.rar (1.72 KB, 下載次數(shù): 179)


成品圖


方塊游戲框圖




電路圖

評(píng)分

參與人數(shù) 5威望 +2 黑幣 +65 收起 理由
lyonkon + 15 很給力!
dww465757120 + 30
chit100 + 5 贊一個(gè)!
absflash + 15 你真是個(gè)神啊
jjbboox + 2 絕世好帖!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏29 分享淘帖 頂5 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:50574 發(fā)表于 2013-7-9 23:54 | 只看該作者
真不可思議啊,簡(jiǎn)直不敢相信自己的眼睛,不過(guò)你能放出一個(gè)c語(yǔ)言的源代碼嗎、匯編的實(shí)在太難看懂了.
回復(fù)

使用道具 舉報(bào)

板凳
ID:51654 發(fā)表于 2013-7-9 23:57 | 只看該作者
一定就不是C程序了,不用匯編達(dá)不到這樣的速度。
現(xiàn)在焊上了開關(guān),耳機(jī)插座,可以玩了,不過(guò)聲音不太好聽,有待改進(jìn)。
想配一首開機(jī)音樂(lè),不知用哪首好聽。
程序仍在改進(jìn)中,盡些再上傳吧。
下面是加了ipod形式開的和在液晶屏上顯示效果圖。



回復(fù)

使用道具 舉報(bào)

地板
ID:51654 發(fā)表于 2013-7-10 00:01 | 只看該作者
前段沒(méi)空,今天看了下存在的BUG,一時(shí)沒(méi)有什么好的解決方法,請(qǐng)大家出點(diǎn)主意。
問(wèn)題是如何判斷不同形狀的方塊在移動(dòng)時(shí)是否移出窗外。
試了好幾種算法,都很復(fù)雜,簡(jiǎn)單的算法有些不正確,居然卡在這里。
具體情況是用一個(gè)8位變量L表示方塊原點(diǎn)坐標(biāo)(x,y),L的低3位表示x,范圍0~7,L的bit3~bit6表示y,范圍2~15.如何能用便捷的方法判定7種不同方塊及4個(gè)不同的旋轉(zhuǎn)角度在移動(dòng)到某坐標(biāo)時(shí)是否越界?
回復(fù)

使用道具 舉報(bào)

5#
ID:50574 發(fā)表于 2013-7-10 00:07 | 只看該作者
液晶電腦顯示器和crt顯示器都可以都是vga接口吧 牛,不的不佩服啊,好像你在后面補(bǔ)上的圖片上面的芯片是4051吧.和VGA接口的是怎么通訊的?
回復(fù)

使用道具 舉報(bào)

6#
ID:2355 發(fā)表于 2013-7-10 00:10 | 只看該作者
建議樓主先講一下原理,而后大家在一起想辦法解決問(wèn)題
回復(fù)

使用道具 舉報(bào)

7#
ID:51654 發(fā)表于 2013-7-10 00:11 | 只看該作者
h333 發(fā)表于 2013-7-10 00:07
液晶電腦顯示器和crt顯示器都可以都是vga接口吧 牛,不的不佩服啊,好像你在后面補(bǔ)上的圖片上面的芯片是405 ...

回5樓的美女 表示你的頭像很好看,手頭沒(méi)有2051,所以用4051代著。目前代碼編譯后還不夠1.5K,用2051完全可以裝得下。
之前的越界判斷算法,現(xiàn)在用查表基本解決了,正在測(cè)試中。
加了一首開機(jī)音樂(lè),決定用阿牛的《桃花朵朵開》前奏。
加了一條記分級(jí)別狀態(tài)條,在窗口左側(cè),分?jǐn)?shù)高柱子就越高。
正打算做一個(gè)小圖標(biāo)在窗口右側(cè),用來(lái)提示下一個(gè)方塊的形狀。
回復(fù)

使用道具 舉報(bào)

8#
ID:50574 發(fā)表于 2013-7-10 00:14 | 只看該作者
簡(jiǎn)直是把51玩到爐火純青的地步了,用軟件模擬VGA信號(hào)!強(qiáng)!很強(qiáng)!
回復(fù)

使用道具 舉報(bào)

9#
ID:51654 發(fā)表于 2013-7-10 00:15 | 只看該作者
ccd 發(fā)表于 2013-7-10 00:10
建議樓主先講一下原理,而后大家在一起想辦法解決問(wèn)題

既然51hei論壇的朋友都很感興趣,我就先簡(jiǎn)單地說(shuō)一下思路,程序的要點(diǎn)是:
1 產(chǎn)生精準(zhǔn)的VGA信號(hào)時(shí)序
    受速度限制,VGA顯示模式用最低的640*480@60Hz,這時(shí)行頻是31.46875K,場(chǎng)頻率是59.94Hz.如果單片機(jī)有硬件PWM,則行場(chǎng)同步信號(hào)可以輕易用PWM實(shí)現(xiàn).由于2051沒(méi)有PWM,只能用軟件模擬,并且不能用定時(shí)中斷的方式,因?yàn)橐笏俣忍?中斷響應(yīng)速度不夠快,且響應(yīng)時(shí)間也不一致,所以本程序中都是把行同步信號(hào)穿插在程序的各個(gè)適當(dāng)位置,類似于雙線程并行執(zhí)行,主振也選用2051能承受的最高頻率24MHz.
2 合理分配內(nèi)存.
    2051只有128字節(jié)內(nèi)存,要儲(chǔ)存一幅畫面,顯示緩存就需占大部分.主窗口內(nèi)的面積越大,占用內(nèi)存就越多.經(jīng)估算窗口內(nèi)用14行*8列比較合適.此時(shí)顯示緩沖占用112字節(jié).余下的16字節(jié)用于程序中的工作寄器5字節(jié), 堆棧2字節(jié),其它為全局量.
3 協(xié)調(diào)各個(gè)功能模塊之間的工作配合
    系統(tǒng)的任務(wù)不算多,主要的有顯示處理,同步處理,音效處理,按鍵處理,游戲規(guī)則處理(包括方塊移動(dòng),定時(shí)下落,重疊檢測(cè),越界檢測(cè),得分計(jì)數(shù),速度升級(jí)).各任務(wù)之間協(xié)調(diào)用類似于狀態(tài)機(jī)的方法,但又不完全等同.由于是用匯編,在很多情況下充分利用匯編的靈活性,使程序的模塊化不是很明顯.系統(tǒng)的主循環(huán)選用顯示一幀的時(shí)間約16.66MS(60Hz),所有任務(wù)必須在這時(shí)間內(nèi)處理完成.
回復(fù)

使用道具 舉報(bào)

10#
ID:51260 發(fā)表于 2013-7-18 10:56 | 只看該作者
太厲害了
回復(fù)

使用道具 舉報(bào)

11#
ID:52177 發(fā)表于 2013-7-23 22:10 | 只看該作者
有套件賣嗎?我要
回復(fù)

使用道具 舉報(bào)

12#
ID:52177 發(fā)表于 2013-7-23 22:12 | 只看該作者
有套件賣嗎?我要
回復(fù)

使用道具 舉報(bào)

13#
ID:52177 發(fā)表于 2013-7-23 22:14 | 只看該作者
有套件賣嗎?我要
回復(fù)

使用道具 舉報(bào)

14#
ID:52928 發(fā)表于 2013-8-16 20:06 | 只看該作者
這個(gè)太扯淡了。。。。。。。∨H税
回復(fù)

使用道具 舉報(bào)

15#
ID:53172 發(fā)表于 2013-8-17 22:12 | 只看該作者
好厲害。。:soso_e179:}{:soso_e179:}{:soso_e179:}
回復(fù)

使用道具 舉報(bào)

16#
ID:53190 發(fā)表于 2013-8-18 13:07 | 只看該作者
樓主強(qiáng)慘了....
回復(fù)

使用道具 舉報(bào)

17#
ID:55219 發(fā)表于 2013-11-4 22:30 | 只看該作者
樓主很強(qiáng)大啊!
回復(fù)

使用道具 舉報(bào)

18#
ID:56665 發(fā)表于 2013-12-2 10:42 | 只看該作者
51被你玩得爐火純青。
回復(fù)

使用道具 舉報(bào)

19#
ID:55202 發(fā)表于 2013-12-6 16:22 | 只看該作者
樓主好厲害。。∨宸
回復(fù)

使用道具 舉報(bào)

20#
ID:58415 發(fā)表于 2013-12-31 20:13 | 只看該作者
強(qiáng)~~~~~~
回復(fù)

使用道具 舉報(bào)

21#
ID:58415 發(fā)表于 2013-12-31 20:14 | 只看該作者
樓主~~厲害哦~
回復(fù)

使用道具 舉報(bào)

22#
ID:58502 發(fā)表于 2014-1-3 14:29 | 只看該作者
太厲害了,這論壇果然牛人多,看來(lái)沒(méi)來(lái)錯(cuò)地方,比我之前去的一個(gè)論壇強(qiáng)多了,
回復(fù)

使用道具 舉報(bào)

23#
ID:58547 發(fā)表于 2014-1-4 22:55 | 只看該作者
能不能提供C的程序呢
回復(fù)

使用道具 舉報(bào)

24#
ID:58333 發(fā)表于 2014-3-28 23:38 | 只看該作者
高手頂起啊
回復(fù)

使用道具 舉報(bào)

25#
ID:59804 發(fā)表于 2014-4-2 18:25 | 只看該作者
樓主厲害!
回復(fù)

使用道具 舉報(bào)

26#
ID:60173 發(fā)表于 2014-4-5 17:12 | 只看該作者
高手 高手中的高高手
回復(fù)

使用道具 舉報(bào)

27#
ID:61217 發(fā)表于 2014-4-28 15:24 | 只看該作者
樓主威武霸氣啊
回復(fù)

使用道具 舉報(bào)

28#
ID:61490 發(fā)表于 2014-5-6 11:32 | 只看該作者
這一看,居然電路圖一模一樣!
樓主太搞笑了吧,明明是老外做出來(lái)的東西。
09年我就在某國(guó)外論壇上看到此類制作,并制作出來(lái)。
回復(fù)

使用道具 舉報(bào)

29#
ID:61695 發(fā)表于 2014-5-11 21:32 | 只看該作者
真是高手啊!佩服
有沒(méi)有板子賣啊,我也想要搞來(lái)試試,如果想用驅(qū)動(dòng)大屏幕可以嗎(就是在大屏幕里面顯示一個(gè)或幾個(gè)小的區(qū)域)?請(qǐng)指教,謝謝
回復(fù)

使用道具 舉報(bào)

30#
ID:62601 發(fā)表于 2014-6-4 17:04 | 只看該作者
樓主真厲害,佩服
回復(fù)

使用道具 舉報(bào)

31#
ID:61140 發(fā)表于 2014-6-9 19:30 | 只看該作者
外國(guó)人做的東東,以前就在別的論壇見過(guò)了
回復(fù)

使用道具 舉報(bào)

32#
ID:63372 發(fā)表于 2014-6-27 19:55 | 只看該作者
贊一個(gè),好強(qiáng)大的氣場(chǎng)
回復(fù)

使用道具 舉報(bào)

33#
ID:63641 發(fā)表于 2014-7-5 20:26 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報(bào)

34#
ID:64052 發(fā)表于 2014-7-16 16:28 | 只看該作者
樓主好技術(shù),我也正打算寫一個(gè)用51單片機(jī)寫一個(gè)VGA信號(hào)控制器,感謝資料分享。
回復(fù)

使用道具 舉報(bào)

35#
ID:1 發(fā)表于 2014-7-18 03:15 來(lái)自手機(jī) | 只看該作者
牛人啊
回復(fù)

使用道具 舉報(bào)

36#
ID:64649 發(fā)表于 2014-8-6 00:15 | 只看該作者
帥的掉渣!這都能!
回復(fù)

使用道具 舉報(bào)

37#
ID:64825 發(fā)表于 2014-8-7 09:25 | 只看該作者
51hei 有你更精彩
回復(fù)

使用道具 舉報(bào)

38#
ID:64662 發(fā)表于 2014-8-7 09:39 | 只看該作者
佩服!
回復(fù)

使用道具 舉報(bào)

39#
ID:65134 發(fā)表于 2014-8-16 23:16 | 只看該作者
哇,哇哇,哇哇哇,要學(xué)VGA通信
回復(fù)

使用道具 舉報(bào)

40#
ID:65209 發(fā)表于 2014-8-18 23:06 來(lái)自手機(jī) | 只看該作者
佩服,太厲害了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表