基于單片機的“乒乓球”游戲機智能控制系統
0 前言
日常娛樂(lè )生活中,智能化的娛樂(lè )產(chǎn)品非常流行。單片機具有功能強、可靠性高、使用方便、體積小及重量輕等優(yōu)點(diǎn)。國外已廣泛應用于自動(dòng)化控制的各個(gè)領(lǐng)域。近年來(lái),國內的單片機技術(shù)與產(chǎn)品開(kāi)發(fā)應用方面的發(fā)展也很快,各種電子產(chǎn)品已越來(lái)越多地采用單片機控制系統且性?xún)r(jià)比高。本文從實(shí)用的角度以AT89C2051單片機為核心設計了一種智能“乒乓球”游戲機。實(shí)踐證明,該游戲機運行狀況穩定、可靠,滿(mǎn)足了智能化要求。
1 系統的基本工作原理
本設計中,通過(guò)5只連續排列的發(fā)光二極管的依次點(diǎn)亮代表“乒乓球”的運動(dòng)。再用兩個(gè)按鍵模擬左右兩個(gè)球拍,鍵按下代表球拍擊球?!白笈摹卑聪驴墒拱l(fā)光二極管從左向右依次點(diǎn)亮,如同“乒乓球”從左向右飛來(lái);“右拍”按下則可使發(fā)光二極管從右向左依次點(diǎn)亮,代表“乒乓球”從右向左運動(dòng)。在游戲過(guò)程中,用數碼顯示管實(shí)時(shí)顯示雙方比分。游戲規則如下:
(1)“乒乓球”移動(dòng)速度是固定的,設定每秒鐘移動(dòng)一位(發(fā)光二極管)。
(2)在“乒乓球”移位一次的過(guò)程中,進(jìn)行25次的測試(即每40毫秒一次),查詢(xún)接球方是否有擊球動(dòng)作。
①安徽省教育廳基金項目。編號:2003JK093
(3)接球方的擊球動(dòng)作應發(fā)生在“乒乓球”到達本方最后一位發(fā)光二極管(即點(diǎn)亮)一秒鐘時(shí)間之內。如接球方在此一秒鐘之內按鍵,則接球成功,接球方得分?!捌古仪颉鞭D為相反方向運動(dòng)。此后,原接球方變?yōu)榘l(fā)球方,原發(fā)球方變?yōu)榻忧蚍?。游戲繼續進(jìn)行。
(4)如接球方提前或滯后擊球,則接球方失誤。雙方都不得分。這時(shí)“乒乓球”熄滅,數碼顯示管顯示雙方的比分不變。然后仍由原發(fā)球方發(fā)球。
2 硬件組成
具體電路由單片機電路、發(fā)光二極管顯示電路、按鍵電路和數碼顯示電路等部分組成。
2.1 單片機電路
AT89C2051、X1、R1、C1等組成單片機電路,R1、C1組成單片機的復位電路,接通電源的瞬間,由于電源電壓通過(guò)R1對C1的充電過(guò)程,單片機AT89C2051復位端1腳獲得一個(gè)高電平復位脈沖,使得單片機進(jìn)入初始狀態(tài)。見(jiàn)圖1。
2.2 發(fā)光二極管顯示和按鍵電路
利用AT89C2051作發(fā)光二極管和按鍵的接口電路。P3.0~P3.4口接5只發(fā)光二極管,P3.7口接左按鍵,模擬左拍擊球動(dòng)作;P3.5口接右按鍵,模擬右拍擊球動(dòng)作。見(jiàn)圖1。
2.3 數碼顯示電路
利用顯示譯碼器MC14459組成6位共陰極LED靜態(tài)顯示電路。當P1.4=1時(shí),譯碼器74LS138開(kāi)通,由P1.5~P1.7口經(jīng)譯碼器74LS138控制各MC14459芯片依次選通各LED,同時(shí)由P1.0~P1.3口將欲顯示的十六進(jìn)制數直接輸出到各MC14459芯片中,再使控制端為高電平,鎖存P1.0~P1.3口輸出的數據,并進(jìn)行譯碼驅動(dòng)顯示。見(jiàn)圖1。
圖1 系統原理框圖
3 軟件設計
為了便于調試,本系統的軟件主要采用模塊化結構設計,具體的程序由主程序、“乒乓球”左移子程序、“乒乓球”右移子程序和比分顯示子程序等模塊組成。下面給出了主程序、“乒乓球”左移子程序、“乒乓球”右移子程序及顯示子程序的流程圖。
3.1 主程序
主程序的功能是進(jìn)行初始化工作,并控制“乒乓球”游戲的開(kāi)始。模擬左拍的按鍵接P3.7口,模擬右拍的按鍵接P3.5口。游戲開(kāi)始時(shí),顯示的比分是零比零,此后,如左拍按下則“乒乓球”右移;如右拍按下則“乒乓球”左移。在主程序中,需要用四個(gè)通用寄存器分別作為右方得分寄存器、左方得分寄存器、1秒計時(shí)常數寄存器及“乒乓球”移位計數器。其流程圖見(jiàn)圖2。
圖2 主程序流程圖
3.2 “乒乓球”左移子程序
左移子程序的主要功能是控制“乒乓球”的向左移動(dòng),并在逐位移動(dòng)過(guò)程中判斷是否有左拍擊球動(dòng)作。只有當“乒乓球”移動(dòng)到最左的一秒時(shí)間內擊球才是有效的,左拍得分,并轉乒乓球右移子程序,使“乒乓球”向右移動(dòng),即相當于左方發(fā)球。除此之外,所有的左拍擊球都算失誤,重新開(kāi)始“乒乓球”左移子程序,相當于由右方重新發(fā)球。其流程圖見(jiàn)圖3。
圖3 “乒乓球”左移子程序流程圖
3.3 “乒乓球”右移子程序
“乒乓球”的右移子程序的原理與左移子程序的原理相同,只要把左移子程序流程圖中的“右”與“左”互換即可。
3.4 顯示子程序
3.4.1 比分顯示格式
比分顯示用六位數碼顯示管進(jìn)行顯示。其顯示格式見(jiàn)圖4。
圖4 “乒乓球”游戲比分顯示格式
3.4.2 顯示原理
“乒乓球”游戲的左右拍得分分別存在左方得分寄存器和右方得分寄存器中(在主程序中已設置好兩個(gè)寄存器)。首先設置初值,使二極管熄滅并使比分顯示為“00——00”,然后游戲開(kāi)始,如左拍或右拍正確擊球,相應方的比分加1分,否則比分保持原來(lái)比分不變。其流程圖見(jiàn)圖5。
圖5 顯示子程序流程圖
4 結束語(yǔ)
本文作者創(chuàng )新點(diǎn):整個(gè)設計以AT89C2051單片機為核心,充分利用了AT89C2051有限的外圍引腳資源,實(shí)現了對“乒乓球”游戲機的左右操作及比分顯示的控制。整個(gè)系統通過(guò)按鍵可以很方便地操作。且運行穩定,抗干擾能力強。真正實(shí)現了娛樂(lè )產(chǎn)品的智能化。
參考文獻
[1] 李廣第.單片機基礎[M].北京:北京航空航天大學(xué)出版社,1993.
[2] 盧存偉,錢(qián)捷.微機原理及應用系統設計[M].南京:河海大學(xué)出版社,1992.
[3] 劉淑榮,丁錄軍.基于單片機控制的溫度智能控制系統[J].微計算機信息,2003,19-7:29-30。
評論