追蹤
愛瑋斯坦の冒險日記にようこそ
關於部落格
「星屑のなかで出會えた奇跡が 」
  • 182111

    累積人氣

  • 7

    今日人氣

    23

    追蹤人氣

[電路實作] 體感俄羅斯方塊! - 上篇 ( 使用8051與組合語言) ~ROCK!





又到了一年一度愛瑋斯坦提升專業形象的時刻摟!
不然之前都在畫畫和搞笑,不知不覺中也許很多人已經忘記,




就像是MACROSS三要素:愛情、歌唱、機戰;
就像是熱血少年誌三要素:友情、努力、勝利;
就像是孫中山先生所說的:和平、奮鬥、救中國;





本部落格的三要素是:
               
「科技、人文、世界和平」
                                                               
阿阿阿阿阿!!!!  (吶喊)





新八:
喂!!! 我看你自己才是那個忘記的人吧,
你的部落右邊裡,版主的話不是寫著:
「本部落以繪圖創作、程式電路、亂七八糟(?)為主摟」
你的部落根本完全沒有世界和平的東西吧!!!!








--------------------------本文開始-------------------------








※版主是使用FireFox 3.5去編輯部落格的,不過我發現用IE看會有點怪怪的,因此要達到最佳瀏覽效果的話請開FireFox吧!!







※注意:雖然這點有點不好意思, 只有這篇請勿任意轉載與抄襲,可參考與引用, 但請註明作者來源。







想知道電腦與電子產品如何改變世界嗎!?
想知道類比與數位的差別嗎?
想知道為何科技進步的一日千里嗎?
想知道為什麼電腦內部是用0與1(低電壓與高電壓)去控制、表達、編碼、解碼、傳遞訊息嗎?
想知道版主的生日嗎?


以上問題下面的文章完全不會解答,請自行去找尋資料>.0。


(路人:來人阿,把這個廢話一堆的傢伙打一打..............)







前言:


想必大家都玩過俄羅斯方塊吧!


俄羅斯方塊原本是前蘇聯科學家阿列克謝·帕基特諾(Алексей Леонидович Пажитнов)在1984年6月利用空閒時間所編寫的遊戲,由於俄羅斯方塊具有數學性、動態性與知名度,也經常被用來作為遊戲程式設計的練習題材。


而之前任天堂公司販售的wii帶來了前所未有的體感玩法,使得玩家可用更直覺的方法操控遊戲,讓我興起了結合兩者的念頭。


本專題雖無使用加速計或陀螺儀達到精準的測量,但利用了水銀開關的重力感測特性達到簡單的體感效果,也就是不用靠按鈕去控制,利用身體的控制使得電路板左傾右傾、以及上下甩動,即可操作遊戲(方塊左移、方塊右移、方塊旋轉、方塊直接落下,達到了直覺的操控目標。


由於很多內容必須要有相關背景知識(微處理機、計算機概論、組合語言,電子學放大器章節)才能說明,本文將大幅簡短說明,有興趣再回文XD。


本專題將利用組合語言編寫程式,並將程式碼組譯後燒錄在8051單晶片上來驅動整個電路板。


( 8051:為一種單晶片,雖然已經是很早以前的產品,但常常拿來作為單晶片的入門的學習使用。)


(單晶片:不知道的就當作是一個微電腦就好,可以依照內嵌的指令來執行與運算。很多電子產品都靠單晶片來處理資料!)







原理:


大概講一下最關鍵的核心就好 (混)


由於組合語言為一種低階語言,比較無法使用C語言的二維矩陣觀念去運算方塊的移動,因此俄羅斯方塊最重要的第一點就是:


                「如何表現方塊的移動? 如何讓方塊堆疊起來?」


解決方法很簡單,請見這張圖:

       左邊為俄羅斯方塊的畫面,你可以想像這個畫面由Front(前景)與Base(基景)組合而成,Front像是一個透明的履帶,一次只將一個方塊掉落一格,達到方塊下落的效果,而Base固定不動,就像是背景一般,只是Front每次滾動前都會先判斷到底有沒有和Base重疊。
      如果沒有,方塊繼續下落;如果有,方塊重疊到Base上,Front在隨機取出其他形狀的方塊繼續動作。而最後再把Front和Base組合在一起,就是你看到的遊戲畫面了!


(低階語言:並不是說它很低級,而是在程式語言分級上比較偏硬體,一個指令一個動作,效率高、程式小、但撰寫困難、和高階語言比起來較難以寫出抽象的程式)






程式:


有了概念之後當然要有程式!
不過這個程式2000多行,光印到報告上就佔了50多頁,我想沒人有興趣看一堆英文和數字在那邊排列組合吧! 
而且重要的是有商業機密在裡面,所以就不公開了 (逃






實作:


好啦...! 廢話不多說了....真的要講真的可以講個三天兩夜XD
不過在此就點到為止吧!  接下來都看圖說故事啦!!!


(新八:喂!!你除了廢話之外根本什麼都沒講嘛!!!!!)


有了程式當然要有硬體電路來搭配,因此我們有了這個測試用麵包版!


(麵包版:一種上面佈滿洞的版子,每排洞都具有導通的效果,因此可以拿來測試元件與測試電路用,非常方便,電類組同學應該都碰過!)




1.開始測試電路元件(左上為七段顯示器,中間黑色的半圓柱體是BJT放大器,米黃色的是電阻,而下面的大長方體晶片即為8051,旁邊三個小的晶片是解碼器。)




2.測試元件中0.0  (LED燈很漂亮吧!!!  藍色的好貴...一個要10元)




3.組合2個8*8矩陣LED充當螢幕! (雖然線看起來不多,可是要整理成這樣很麻煩唷ˋˊ)




4.成功執行俄羅斯方塊啦!! (1377為分數,旁邊的四個LED是絕招指示燈,再旁邊的是集氣表)




5.小姐~上課不准打電動阿!!  
   (微處理機老師:恩...沒關係,妳可以繼續玩,死了之後換我。)





6.測試機沒問題啦!!! 接著是組長講解時間 (這個組長是誰阿~怎麼那麼帥~羞)






7.接著我們決定組出一模一樣的兄弟機來測試連線對打功能,
   這種複製貼上的事就交給小弟去了~(逃)
(從左而右,宅希、笑菌、佐右天下:你說什麼!!!  少林十八銅人陣伺候!)





8.藍白配色兄弟機出場XD!   
  (明明有現成的,怎麼第二台四人在麥當勞花了6個小時才完成Orz)
  所以千萬別小看電路阿!!!
   跟程式一樣,就算複製貼上,一個小地方錯就很難抓出bug了








上篇(測試篇)到此結束摟~
因為圖太多,請繼續點下面連結到下篇(實作篇)謝謝!
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


[電路實作] 體感俄羅斯方塊! - 下篇 ( 使用8051與組合語言) ~ROCK 2!


新八:你還沒解釋開版圖那張紅綠交錯的圖是幹麻用的!!!!
版主:繼續看到下篇就知道摟!!

相簿設定
標籤設定
相簿狀態