段奕竹
摘 要:該文主要介紹了一個(gè)運(yùn)用單片機(jī)技術(shù)實(shí)現(xiàn)電子寵物的制作,這一系統(tǒng)是對(duì)于市場(chǎng)上已有的PC機(jī)上運(yùn)行的電子寵物系統(tǒng)在單片機(jī)為開(kāi)發(fā)平臺(tái)上的實(shí)現(xiàn)。在這個(gè)游戲中,用戶可已根據(jù)電子寵物當(dāng)前的各種生命狀態(tài)來(lái)決定給寵物何種操作,而這些操作可以改變寵物的當(dāng)前的各種生命狀態(tài),使得寵物不會(huì)隨著時(shí)間的流逝而餓死或者死于其他原因。LED顯示寵物當(dāng)前的狀態(tài),獨(dú)立鍵盤(pán)對(duì)寵物進(jìn)行各種操作,蜂鳴器輔助游戲的進(jìn)行。從本系統(tǒng)的構(gòu)架,設(shè)計(jì),實(shí)施,調(diào)試,最終得到一個(gè)智能化的界面和人性化的接口,真正地體現(xiàn)了把單片機(jī)這樣一門(mén)實(shí)用性課程放到實(shí)際中去的意義,也讓我們組內(nèi)成員在過(guò)程中學(xué)習(xí)到了團(tuán)隊(duì)合作和明確分工,還有將比較龐大的目標(biāo)拆分成小型的模塊各個(gè)擊破的道理。本產(chǎn)品可以用于智能化玩具中,配合以更加逼真的音效,更加絢麗的色彩,將有希望占領(lǐng)一定份額的市場(chǎng)。
關(guān)鍵詞:智能化電子寵物 生命狀態(tài)檢測(cè)與控制 LED顯示 鍵盤(pán)控制操作
中圖分類號(hào):TN914 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)03(c)-0016-01
此系統(tǒng)旨在設(shè)計(jì)一個(gè)基于單片機(jī)的“電子寵物”情感游戲系統(tǒng),其主要功能是:用戶使用鍵盤(pán)選擇性地對(duì)電子寵物進(jìn)行五種活動(dòng)操作,從而改變和控制其三種狀態(tài)值,以使寵物的生命狀態(tài)值維持在一定的水平上;若不對(duì)寵物進(jìn)行操作,其生命狀態(tài)值將隨著時(shí)間而減少;若狀態(tài)值減少到一定程度,將對(duì)用戶進(jìn)行提醒;在寵物接收到用戶的某種操作時(shí),則出現(xiàn)相應(yīng)的圖像和并發(fā)出鼓勵(lì)信號(hào);當(dāng)寵物的生命值耗盡時(shí),寵物死亡,游戲結(jié)束。以上是該系統(tǒng)所能完成的功能,是基于傳統(tǒng)的電子寵物產(chǎn)品的基本功能設(shè)計(jì)的,構(gòu)成了電子寵物系統(tǒng)的基本框架,但仍有很大的自主設(shè)計(jì)和擴(kuò)展空間。
1 設(shè)計(jì)要求
1.1 基本要求
(1)電子寵物能按設(shè)定時(shí)間吃飯、睡覺(jué)、洗澡等(吃飯最少兩次,一次最少吃5個(gè)食物)。(2)當(dāng)某一設(shè)定沒(méi)有滿足時(shí),電子寵物發(fā)出提示報(bào)警或哭泣。(3)該電子寵物要有聲、光或動(dòng)作(死活之分)。(4)當(dāng)某一設(shè)定長(zhǎng)期沒(méi)有滿足或到壽命時(shí),電子寵物會(huì)死去。(5)當(dāng)所有要求(設(shè)定)滿足時(shí),電子寵物會(huì)高興。
1.2 發(fā)揮部分
(1)電子寵物會(huì)有生病,生病時(shí)要看醫(yī)生。(2)電子寵物知恩圖報(bào)。(3)所有功能全部由動(dòng)作實(shí)現(xiàn)。
2 總體結(jié)構(gòu)設(shè)計(jì)
合理的C語(yǔ)言設(shè)計(jì)和多個(gè)硬件模塊的配合應(yīng)用是完成該系統(tǒng)預(yù)期目標(biāo)的兩個(gè)重要部分。軟件結(jié)構(gòu)設(shè)計(jì)方面,為了實(shí)現(xiàn)電子寵物的基本游戲功能,我們?cè)O(shè)計(jì)了軟件程序框圖。硬件模塊設(shè)計(jì)方面根據(jù)設(shè)計(jì)內(nèi)容的要求,我們使用了六個(gè)硬件模塊,分別是:二極管,數(shù)碼管,LED點(diǎn)陣,時(shí)鐘,蜂鳴器,獨(dú)立式按鍵。
3 主要硬件設(shè)計(jì)
3.1 LED點(diǎn)陣
LED顯示區(qū)由一塊8*8LED點(diǎn)陣構(gòu)成,整個(gè)顯示模塊大小是8列*8行。要通過(guò)LED的靜態(tài)顯示一張圖案,必須采用循環(huán)控制。第一個(gè)8位寄存器存儲(chǔ)一個(gè)字節(jié),通過(guò)該字節(jié)的8位二進(jìn)制碼信息控制當(dāng)前操作的LED小燈所處的行數(shù),例如#80H表示當(dāng)前將對(duì)第八行LED進(jìn)行操作。LED點(diǎn)陣是通過(guò)單片機(jī)的PO口和P2口以及74HC138芯片相連。
3.2 鍵盤(pán)
使用獨(dú)立式鍵盤(pán),輸入到單片機(jī)的P2口。每個(gè)鍵的功能如表1所示。
3.3 時(shí)鐘
本程序采用的時(shí)鐘是T0和T1,其中T0時(shí)鐘采用中斷,在中斷子程序中采用查詢是否有按鍵按下的方法,而T1時(shí)鐘為了配合聲音產(chǎn)生特定頻率的方波,采用查詢方法定時(shí)。其中時(shí)鐘0采用第2種工作方式,而時(shí)鐘1采用第1種工作方式,所以在一開(kāi)始初始化的時(shí)候就有MOV TMOD,#12H。
3.4 蜂鳴器
本程序中所使用的聲音是蜂鳴器發(fā)出的,通過(guò)一根一位口線(P3.3)連接。輔助以計(jì)時(shí)器T1的幫助,產(chǎn)生特定頻率的方波,產(chǎn)生相應(yīng)的音符。要做到這一點(diǎn),給T1設(shè)定正確的初始值尤為重要。例如頻率為523 Hz,其周期T=1/523=1912μs,因此只要令計(jì)數(shù)器計(jì)1912/2=956次,后將I/O反相,就可以得到523Hz的音符,中音“DO”。
定時(shí)/計(jì)數(shù)器選擇8分頻CTC模式,下表中每格內(nèi)上行為頻率,下行為OCR的值,沒(méi)有寫(xiě)出的說(shuō)明需要改變分頻。第一列列出了4個(gè)八度區(qū)。
曲目選擇功能使用switch語(yǔ)句,通過(guò)改變整型j的值改變曲目序號(hào),從而選擇不同的play函數(shù)進(jìn)行調(diào)用。歌曲的暫停使用掃描按鍵程序,每播放一個(gè)音符都會(huì)掃描一下暫停鍵,如果被按下則跳出play函數(shù)的循環(huán)。在曲目選擇時(shí),根據(jù)不同的j值,使用數(shù)組選擇不同字符元素驅(qū)動(dòng)LCD點(diǎn)陣,顯示所要播放的曲目。
在本實(shí)驗(yàn)中,有三種情況下會(huì)發(fā)出聲音:(1)饑餓的情況下會(huì)發(fā)出報(bào)警的聲音;(2)生病的時(shí)候會(huì)發(fā)出報(bào)警的聲音;(3)高興的時(shí)候會(huì)唱歌,歌曲為祝你平安的純音樂(lè)。
4 結(jié)語(yǔ)
這個(gè)電子寵物的競(jìng)賽設(shè)計(jì)通過(guò)點(diǎn)陣顯示設(shè)計(jì)出一個(gè)比較智能化和人性化的電子寵物游戲,于是構(gòu)架出這個(gè)游戲的大框架和模塊,但是從開(kāi)始著手做系統(tǒng)設(shè)計(jì)到在電路設(shè)計(jì)中遇到了很多問(wèn)題。windows的畫(huà)圖軟件設(shè)計(jì)好圖像,將畫(huà)布設(shè)定為128*64像素大小,只用黑色筆在畫(huà)布上作畫(huà)。每一張圖都是我們親筆在畫(huà)圖軟件上設(shè)計(jì)的,讓我們?cè)诰o張的編程時(shí)間之余體驗(yàn)一下藝術(shù)帶來(lái)的快樂(lè)。對(duì)應(yīng)的I/O口線始終等電位。這個(gè)問(wèn)題本身并不復(fù)雜,但通過(guò)這個(gè)小問(wèn)題我們更體會(huì)到運(yùn)用課本知識(shí)的過(guò)程中一定要結(jié)合實(shí)際情況。雖然在整個(gè)程序的編寫(xiě)過(guò)程中,雖然內(nèi)容不斷地豐富,問(wèn)題也不斷地出現(xiàn),但我們的思路還是非常清晰的,這一方面得益于最初開(kāi)題時(shí)我們對(duì)整系統(tǒng)的結(jié)構(gòu),各個(gè)模塊的功能和實(shí)現(xiàn)方案的細(xì)致研究,這也讓我們認(rèn)識(shí)到項(xiàng)目前期規(guī)劃的重要性。
通過(guò)這一次的單片機(jī)自主訓(xùn)練,關(guān)于這門(mén)課程的學(xué)習(xí)我們最深的體會(huì)是:硬件功能模塊在使用時(shí)最好不要照搬例程,而是應(yīng)該理解硬件工作的原理,明白每一句軟件控制程序?qū)?yīng)的具體硬件操作, 這一點(diǎn)對(duì)于之后程序調(diào)試和故障排除都將大有裨益。同時(shí),對(duì)于工科生來(lái)說(shuō)掌握一定的硬件知識(shí)也是非常必要的。除了具體的課程學(xué)習(xí)體會(huì),我們通過(guò)這八周來(lái)的訓(xùn)練,自身自主學(xué)習(xí)的精神 得到了很大的激發(fā),自主學(xué)習(xí)能力也得到了很大的提高,也一次次地感受到了學(xué)習(xí)帶來(lái)我們的快樂(lè)和成就感。