電路方案:基于單片機的貪吃蛇設計
1設計目的
在21世紀的今天,人們的生活開始變得更加豐富多彩。在繁忙的工作之余,娛樂成為人們生活不可或缺的一份子,而游戲作為近年來逐漸興起的一種娛樂方式,已經越來越受到人們的青睞。在工作學習之余,通過玩游戲來放松、調節緊張的學習工作壓力是不錯的選擇;然而大型的網絡游戲玩起來比較耗費時間,且不能隨時隨地的玩。那么如果這時候擁有一款簡單易攜帶,并且能夠緩解壓力的小游戲將是個不錯的選擇,所以,我就設計了這樣一款簡單易攜帶的經典小游戲——貪吃蛇。1.2 設計要求
(資料圖)
①制作一個的貪吃蛇游戲,系統以單片機為控制器,用四個輸入端表示四個控制鍵(上下左右)。②游戲初始化蛇的節數,以及障礙墻壁。③當蛇的頭碰到障礙墻壁或蛇的身體時自動結束。2 總體方案
2.1 總體框圖
圖 2?1總體框圖
2.2 方案選擇2.2.1 點陣驅動電路選擇由于單片機IO口的驅動能力有限,當驅動16*16點陣時,行控制IO口需要控制16個LED,單個IO口驅動能力達不到良好的顯示效果,故需要驅動電路來控制16*16點陣,具體有以下兩種方案以供選擇:方案一:選用74HC595作為點陣驅動。74HC595是一個8位串行輸入、并行輸出的位移緩存器。可使用4個74HC595來控制點陣的行列,在控制點陣時僅需6個IO口,但每次控制時需要發送16次數據。方案二:選用74LS138配合74HC373作為點陣驅動。74LS138為3線-8線譯碼器,可由2個74LS138構成一個4線-16線譯碼器來驅動點陣的行。74HC373是八路D型鎖存器,可用來并行驅動點陣的列,每次控制只需執行一次命令。但在此方案中需要20個IO口來控制電路。根據以上兩種方案的描述,再結合我們的系統設計,IO口還未完全利用,為使刷新速度更快,故采取用方案二。2.2.2 按鍵電路設計方案在本設計中,我們需要通過按鍵來實現改變貪吃蛇的運動方向。那么,鍵盤就是整個系統中不可缺少的一部分。具體有以下兩種方案以供選擇:方案一:矩陣式鍵盤,這種鍵盤I/O口利用率高,但電路連接復雜,軟件編程也比較復雜,適用于需要大量使用案件的系統。方案二:獨立式鍵盤,這種鍵盤每個按鍵之間是相互獨立的,每個按鍵占用一個IO口,當按鍵數量較多時,I/0口利用率不高,但程序編寫簡單,適用于所需按鍵較少的場合。根據以上兩種方案的描述,再結合我們的系統設計,顯而易見,我們需要獨立式鍵盤,所以,這里我們選擇方案一。2.2.3 電源供電選擇電源電路是一個電子產品的重要組成部分,本設計中的單片機與驅動電路都需要電源。在本設計中的單片機、74HC373和74LS138的電壓典型值都為5V,故需要一個5V的電源供電。具體有以下三種方案以供選擇:方案一:使用直流電源供電,例如手機充電器,可以直接獲取5V的電源,并且可以長時間供電,但必須有電線連接,不具有便攜性。方案二:使用干電池供電,電池無需電線連接,具有便攜性。并且單節干電池由1.5V的電壓,3節干電池串聯即可得到4.5V的電壓,基本滿足需求。但干電池僅能單次使用,沒電后需更換電池,造成浪費。方案三:使用鋰電池供電,電池無需電線連接,比干電池更加輕便,更具有便攜性。鋰電池還可以重復充電循環使用,設計產品可有更長的壽命。另外鋰電池典型電壓為3.7V,不滿足系統所需的5V,但市面上有類似于FM3209M之類的鋰電池管理芯片只需搭配簡單的外圍電路即可獲得5V的電壓。根據以上兩種方案的描述,我們選用方案三,使用鋰電池為本設計供電,以便使設計產品更加便捷。3 硬件設計
3.1 單片機最小系統3.1.1 單片機選型本設計選用STC89C52單片機作為系統的主控芯片,控制該貪吃蛇系統的整體運行。STC89C52單片機的優點為功耗低、八位CMOS微處理器性能高,片內具有8k在線編程Flash存儲器,采用MCS-51內核,指令完全兼容MCS-51,具有開發簡單、可在線編程下載、成本低等優點。[1]最小系統主要由STC89C52單片機、晶振電路、復位電路構成。電源采用鋰電池供電,晶振電路為12M石英晶振,并聯兩個電容,可以起到頻率微調作用。復位電路有上電自動復位和開關復位兩種復位方式。3.1.2 單片機最小系統單片機最小系統原理圖如圖 3?1所示:
圖 3?1單片機最小系統
[1] 時鐘電路
圖 3?2單片機最小系統-時鐘電路
單片機內部具有一個高增益反相放大器,用于構成振蕩器。通常在引腳XTALI和XTAL2跨接石英晶體和兩個補償電容構成自激振蕩器,系統時鐘電路結構如圖 3?2所示,在本設計中時鐘電路采用12M石英晶振作為基準時鐘。[2] 復位電路
圖 3?3單片機最小系統-復位電路
復位電路用于重新啟動系統,使得單片機回到原始狀態。設置復位電路的目的是當系統失去控制或程序跑飛時,通過復位按鈕恢復默認設置,系統重新啟動運行。[2]復位電路由電容串聯電阻構成,由圖 3?3并結合“電容電壓不能突變”的性質,可以知道,當系統一上電,RST腳將會出現高電平,并且,這個高電平持續的時間由電路的RC值來決定。典型的51單片機當RST腳的高電平持續兩個機器周期以上就將復位,所以,適當組合RC的取值就可以保證可靠的復位。一般教科書推薦C 取10u,R取8.2K。當然也有其他取法的,原則就是要讓RC組合可以在RST腳上產生不少于2個機器周期的高電平。式 3?1電容充電時間計算公式在本設計中C取10u,R取10K。由式 3?1計算得 =0.1s遠大于兩個機器周期(2us),故可以實現上電復位功能,另外還設置了一個按鍵作為復位按鍵,即按下后直接將單片機RST端接至5V復位單片機,當按鍵松開后再重復電容充電的過程恢復正常運行。3.2 點陣驅動電路
圖 3?5點陣LED內部原理圖
點陣LED內部原理圖如圖 3?5所示,外側的就是點陣LED的引腳號,左側的8個引腳是接的內部LED的陰極,上側的8個引腳接的是內部LED的陽極。從圖上可以看出來,我們的9腳如果是低電平,13腳是高電平的話,最左上角的那個LED小燈就會亮。控制一個8*8的點陣需要16個引腳,將四個點陣行與行分別連接,列與列分別連接,控制這個16*16點陣仍然需要32個引腳,占用了過多的單片機IO口,所以需要一定的驅動電路來控制點陣。具體驅動方式如下述所示。3.2.1 4-16線譯碼器(行驅動)
圖 3?6由兩片74LS138構成的4~16線譯碼器
設計中采用74LS138譯碼器。譯碼器每一時刻的輸出口會根據輸入信號的譯碼來選擇,同一時刻僅有一個端口輸出與其他端口的輸出不同,該電平信號就是設計所需的。只要在輸入端給出連續的編碼信號,輸出端就會產生由低位端口到高位端口輸出的電平信號。由于16×16點陣給出的行引腳為16根,而74LS138僅有8位輸出引腳,所以要想實現譯碼選擇行線的話一片,74LS138顯然是不夠的,因此該設計中采用兩片74LS138譯碼器級聯成4~16線譯碼器。那么怎樣才能實現兩片74LS138級聯成為4~16線譯碼器呢?級聯原理如圖 3?6所示,從圖中可以看到,兩片74LS138的輸入端被相應地連在一起組成4~16譯碼器的低三位,關鍵是第四位的連接方式,從圖中可以看出,當D3=0時,會使73LS138(1)對輸入信號譯碼,而輸出端也僅會在73LS138(1)的Y0到Y7之間進行選擇。這與一片74LS138的譯碼關系一樣,74LS138(2)則不參與譯碼,而全部輸出默認電平,但從輸入端看是輸入了四位信號而產生了16位數據。再當D3=1時,73LS138(2)對輸入的低三位信號譯碼,73LS138(2)被屏蔽,輸出端全部輸出高電平。這樣,只要將4~16線譯碼器的輸入端口接入單片機的IO端口上,16位輸出端接在16×16點陣的行線接口上,即可完成點陣的行驅動。[3]
圖 3?7點陣行驅動電路
在本設計中,如圖 3?6所示通過單片機的P2.0、P2.1、P2.2和P2.3四個引腳作為4~16線譯碼器的輸入,4~16線譯碼器的輸出接至四個點陣的陰極。3.2.2 D鎖存器(列驅動)74HC373是八路D型鎖存器,每個鎖存器具有獨立的D型輸入,以及適用于面向總線的應用的三態輸出。鎖存器的主要作用 | |
[1] | 緩存 |
[2] | 完成高速的控制其與慢速的外設的不同步問題 |
[3] | 是解決驅動的問題(提供的電流比51IO口輸出電流大) |
[4] | 拓展I/O口(可以用鎖存器冪疊加方法,即鎖存器的Q再接鎖存器實現IO口的無限拓展) |
表 3?1鎖存器的主要作用
在本設計中就是用到了鎖存器的第三個功能,微控制器的IO口均不能流過過大的電流,LED點亮時有約10ms的電流,因此點陣陽極不要直接接單片機IO口,應先經過一個緩沖器74HC373。單片機IO口只需很小的電流控制74HC373即可間接的控制點陣陽極的顯示,而74HC373輸出也能負載約10mA的電流。設置數碼管段的驅動電流為ID=15mA,這個電流點亮度好,并且有一定的裕度。圖 3?8點陣列驅動電路
在本設計中,如圖 3?7所示將鎖存器串如單片機與點陣之間,將鎖存器的OE接低電平、LE接高電平,以使鎖存器的輸出始終等于輸入。從而實現擴大電流的作用。3.3 按鍵電路
4 軟件設計
4.1 主函數
圖 4?1主函數流程圖
單片機復位后,單片機運行main()函數,初始化定時器并點亮由兩個LED構成的蛇身和一個食物,蛇開始默認向左運動。初始化完成后單片機循環執行點陣掃描函數(點陣顯示掃描函數)與按鍵掃描函數(檢測按鍵是否被按下)。點陣掃描函數:點陣的顯示原理是在每一時刻僅顯示一行數據,然后通過每行輪流顯示,以很快的速度不斷地刷新,也就產生了靜態的顯示效果。在本設計中,單片機P2.0-P2.3引腳控制4~16線譯碼器從而控制點陣的行,P0與P1控制點陣的列。當P2.0-P2.3分別是0、0、0、0時,選中的是點陣的第一行,其顯示內容由P0與P1控制,IO口為高電平時點陣上對應LED點亮反之低電平則不亮,當P0與P1分別是0xff與0x00時,第一行的左八個LED點亮右八個熄滅。當P2.0-P2.3分別是0、0、0、1時,選中的是點陣的第二行,依次類推從而實現點陣每行的顯示。控制P2.0-P2.3引腳以實現選中1-16行,并使其依次循環選中,并通過P0與P1發送數據從而實現點陣整片的顯示。按鍵掃描函數:在本設計中按鍵使用的是單片機的P3.2-P3.5,單片機內部有將其上拉,所以在沒按下按鍵時按鍵輸入為高電平,按鍵另一端接地,當按下按鍵時輸入則為低電平。所以循環掃描按鍵是否有變成低電平,當找輸入到低電平,就使蛇向相應的方向改變。資料包括:
需要完整的資料可以加入我的紛傳圈子,里面有資源壓縮包的百度網盤下載地址及提取碼。
關鍵詞:
您可能也感興趣:
為您推薦
空調管漏水怎么辦(空調管漏水)
元旦給老公講的話 元旦給老公講的話簡短
【筑牢安全生產防線】關嶺組織參加全市安全生產電視電話會議
排行
最近更新
- 電路方案:基于單片機的貪吃蛇設計
- 我國西北首個光儲氫熱綜合應用示范項目建成:探氫能多元應用
- 韶關石油零售燃氣全省排名第一
- 最高34℃!部分地區有雷陣雨,河北最新出行提示請查收→
- 景區和場館“一票難求”,如何破解?
- 中國商務部:將積極拓寬農產品上行渠道
- 2023年08月15日06時40分土耳其里拉/人民幣匯率最新報價
- “穩穩的幸福”也有限度,多只債基開啟限購模式
- 小克重黃金產品走俏,年輕人為何熱衷攢“金豆豆”?
- 中期改款8.5代大眾高爾夫諜照曝光,或將增加混合動力
- 劉震:發展藝術科技 提升香港國際藝壇地位
- 能吃苦或者不能吃苦,都得吃苦,區別是淡定吃和哭著吃。 ???
- 《蓮花樓》:從云端跌入塵泥,生而不凡是李相夷的遺憾
- “極越”品牌正式發布,吉利牽手百度拿下造車“準生證”
- 上半年廣州駕培行業新招學員同比下降超三成,供大于求存在產...
- 恭喜,3-1馬競迎來開門紅,隊長閃退,莫拉塔建功,德佩挺身而出
- 法院對刑事案件中書證物證審查什么
- 務農工作單位填什么(務農)
- “中東金主”投資恒大汽車,“救命”還是“騙局”
- 上市公司扎堆涌入復合集流體賽道
- 治療水泡型腳氣用什么藥(根治水泡型腳氣很簡單)
- 【等海報,預計8月16日發】新時代最美奮斗者丨李格甫、李格修...
- 8月15日河南河北地區乙醇市場行情整理
- 每一次困境,都是新起點 一顆珍珠的變革圖強之路
- 博德之門3召喚次級元素生物法術有什么特點
- 凱里亞德酒店西昌高枧家園項目成功簽約,凱里亞德西南重點項...
- 熱評丨生態文明有“流量”更有力量
- 嘉定這里的“城中村”改造項目啟動
- 微星公布白色版 RTX 4060 萬圖師顯卡
- 20人!九江一地公開招聘