




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
畢業(yè)設(shè)計(jì)(論文)題目:基于單片機(jī)的俄羅斯方塊游戲系統(tǒng)的設(shè)計(jì)摘要俄羅斯方塊是一款風(fēng)行全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它白俄羅斯人阿列克謝·帕基特諾夫創(chuàng)造 故得此名。俄羅斯萬塊的根本規(guī)那么是移動(dòng)、旋轉(zhuǎn)和擺放游戲自動(dòng)輸出的各種方塊使之排列成完整的一行或多行并且消除得分。由于上手簡(jiǎn)單、老少皆直從而家喻戶曉,鳳靡世界。這次設(shè)計(jì)將使用52單片機(jī)和HD61202液晶顯示控制驅(qū)動(dòng)器和JM12864J液晶顯示器組合,來實(shí)現(xiàn)比擬簡(jiǎn)單的俄羅斯方塊設(shè)計(jì)。此次設(shè)計(jì)初期是在keil和proteus聯(lián)合仿真中進(jìn)行,編程語言為51匯編,后期是進(jìn)行實(shí)物焊接。論文描述了俄羅斯方塊的主要功能圖數(shù)的實(shí)現(xiàn)。關(guān)鍵詞:俄羅斯萬算真Ab.acttrssapoulareviiongamemachineandgamemachinegamwhichAexeiPajitnovinventedbyRssianitwasisname.etrsetebsicruesofmovemenrotationanddisplayegameautomaticallyoutputoftebowhichearrangedintoacompleteoneormorerowsandliminaescore.Duetouesimpl,agesthsmakeknowntoeveryfamilyswpttheworld.Bsedonsinechipcomputerofthecurriculumdesignofopportunity1willusete51sing-chipmicrocomputerandHD61202LCDcontroldriverand1128641liquidstaldisplaycombinatioto創(chuàng)outamoresimpeRssiansqedesign.Thsdesignisinealykeilandproteusjointsmulatioprogrnminglanguaefor51assembllaerisweldingmaterial.'epaperdescribesthemainfunctionsoftheRussianboxfunctionofterealizationf.Keywords:RusiansquaAgorithSimulation2目錄摘要…
.……
..1rat… 2目錄…
.……
..1引整體設(shè)計(jì)方錯(cuò)未定義書簽。11 系統(tǒng)的核心局部單片機(jī)212液晶顯示模塊62 系統(tǒng)程序的設(shè)計(jì)…141 俄羅斯方塊驅(qū)動(dòng)流程圖142 俄羅斯方塊所有繪作流程15.3 俄羅斯方塊中按下鍵的流程圖16.4 俄羅斯方塊所有繪作流程圖173系統(tǒng)仿真181Potes軟件介紹182Keil軟件介紹183俄羅斯方塊系統(tǒng)ROTS仿真………19結(jié)論21參考文獻(xiàn)………
..22附錄A 電路原理23附錄B主要程序…萬附錄C英文資料和中文翻譯45結(jié)束語…1引 E游戲是人們活動(dòng)中一項(xiàng)弈常重要的內(nèi)容有人認(rèn)為如果哪一天人類對(duì)所有的游戲都失去興趣恐怕世界的末日就要到了。電腦對(duì)游戲的奉獻(xiàn)有目共睛,現(xiàn)在摸過電腦的人很少有沒玩過電腦游戲的喜歡游戲的人也很少有不玩電腦的。俄羅斯萬塊一款鳳靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它曾經(jīng)造成的轟動(dòng)與造成的經(jīng)濟(jì)價(jià)值可以說是游戲史上的一件大事。這款游戲最初是由蘇聯(lián)的游戲制作exnov制作的,它看似簡(jiǎn)單但卻變化無窮舍人上癮。相信大多數(shù)用戶都還記得為它癡迷得茶不思飯不想的那個(gè)俄羅斯萬塊時(shí)代。究其歷史,俄羅斯萬塊最早還是出現(xiàn)在PC機(jī)上而我國(guó)的用戶都是通過紅白機(jī)了解、喜歡上它的?,F(xiàn)在聯(lián)眾又將重新掀起這股讓人沉迷的俄羅斯萬塊鳳潮。對(duì)一般用戶來說它的規(guī)那么簡(jiǎn)單,容易上手,且游戲過程變化無窮而在"聯(lián)眾俄羅斯萬塊"中,更有一些聯(lián)眾網(wǎng)絡(luò)游戲所獨(dú)有的魅力一有單機(jī)作戰(zhàn)與兩人在線對(duì)戰(zhàn)兩種模式,用戶可任選一種進(jìn)行游戲。網(wǎng)絡(luò)模式還增加了積分制使用戶既能感受到游戲中的樂趣也給用戶提供了一個(gè)展現(xiàn)自己高超技藝的場(chǎng)所。俄羅斯萬塊游戲可以說是隨計(jì)算機(jī)的開展而開展并不斷推陳出新演變出各種類似游戲,深受廣闊玩家喜愛。這個(gè)游戲有的簡(jiǎn)有的復(fù)雜,但其根本原理是一樣的都是對(duì)運(yùn)動(dòng)的方塊進(jìn)行組合來訓(xùn)練玩家的反響能力。本文利用單片機(jī)進(jìn)行俄羅斯方塊設(shè)計(jì)采用匯編語言進(jìn)行編程基于匯編語言的原因是在編寫程序的過程中對(duì)于程序的執(zhí)行會(huì)有一個(gè)比擬匱觀的表現(xiàn)。1系統(tǒng)的核心局部單片機(jī)1.1單片機(jī)的選擇單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個(gè)重要分支也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī)特別適用于控制領(lǐng)域故又稱為微控制器。通常單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的根本功能部件:中央處理器、存儲(chǔ)器和1/0接口電路等。因此單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合便可成為一個(gè)單片機(jī)控制系統(tǒng)。20世紀(jì)末,電子技術(shù)獲得了飛速的開展,在其推動(dòng)下,現(xiàn)代電子產(chǎn)晶幾乎滲透了社會(huì)的各個(gè)領(lǐng)域有力地推動(dòng)了社會(huì)生產(chǎn)力的開展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高產(chǎn)晶更新?lián)Q代的節(jié)奏也越來越快。時(shí)間對(duì)人們來說總是那么珍貴工作的忙碌性和繁雜性容易使人忘記當(dāng)前的時(shí)忘記了要做的事情當(dāng)事情不是很重要的時(shí)候,這種遺忘無傷大雅。但是一且重要事情時(shí)的耽誤可能釀成大禍。目前單片機(jī)正朝著高性能和多晶種方向開展趨勢(shì)將是進(jìn)步向著CMOS化、俄功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面開展。下面是單片機(jī)的主要開展趨勢(shì)。單片機(jī)應(yīng)用的重要意義還在于它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大局部功能,現(xiàn)在己能用單片機(jī)通過軟件方法來實(shí)現(xiàn)了。這種軟件代替硬件的控制技術(shù)也稱為微控制技術(shù)是傳統(tǒng)控制技術(shù)的次革命。單片機(jī)過3代的開展正朝著多功能、高性能、低電低功耗、低價(jià)格、大存儲(chǔ)容量、強(qiáng)1/0功能及較好的結(jié)構(gòu)兼容性方向開展。其開展趨勢(shì)不外乎以下幾個(gè)方面:(1)多功能單片機(jī)中盡可能地把所需要的存儲(chǔ)器和1/0口都集成在一塊芯片上使得單片機(jī)可以實(shí)現(xiàn)更多的功能。比方AWMCA(可編程計(jì)數(shù)器陣列)WT(監(jiān)視定時(shí)器…看家狗)、高速10口及計(jì)數(shù)器的捕獲/比擬邏輯等。有的單片機(jī)針對(duì)某一個(gè)應(yīng)用領(lǐng)域集成了相關(guān)的控制設(shè)備以減少應(yīng)用系統(tǒng)的芯片數(shù)量。例如,有的芯片以51內(nèi)核為核心,集成了USB控制器SMATCARD接口3解碼CAN或者?!婵偩€控制器等LDCD或D顯示驅(qū)動(dòng)器也開始集成在8位單片機(jī)中。(2)高效率和高性能為了提高執(zhí)行速度和執(zhí)行效率 單片機(jī)開始使用IS、流水線和SP的設(shè)計(jì)技術(shù)使單片機(jī)的性能有了明顯的提高表現(xiàn)為:單片機(jī)的時(shí)鐘頻率得到提高;同樣頻率的單片機(jī)運(yùn)行效率也有了很大的提升;由于集成度的提高,單片機(jī)的尋址能力、片內(nèi)OM(LAH和RAM的容量都突破了以往的數(shù)量和限制。由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開始使用高級(jí)語言(如C語言)來開發(fā)單片機(jī)的程序。使用高級(jí)語言可以降低開發(fā)難度,縮短開發(fā)周期增強(qiáng)軟件的可讀性和可移植性,便于改良和擴(kuò)充功能。(3)低電壓和低功耗單片機(jī)的嵌入式應(yīng)用決定了低電壓和低功耗的特性十分重要。由于CMOS等工藝的大量采用,很多單片機(jī)可以在更低的電壓下工作(2V或0.9V)功耗已經(jīng)降低到uA級(jí)。這些特性使得單片機(jī)系統(tǒng)可以在更小電源的支持下工作更長(zhǎng)的時(shí)間。(4)低價(jià)格單片機(jī)應(yīng)用面廣使用數(shù)量大,帶來的直接好處就是本錢的降低。目前世界各大公司為了提高競(jìng)爭(zhēng)力在提高單片機(jī)性能的同時(shí)十分注意降低莫產(chǎn)品的價(jià)格。在此我們采用型號(hào)為AT89S52的單片機(jī)。因?yàn)?AT89S52是一種低功耗、高性能CMOS8位微控制器具有8K在系統(tǒng)可編程Flash存儲(chǔ)器。使用Atmel公司高密度弈易失性存儲(chǔ)器技術(shù)制造與工業(yè)80C51產(chǎn)晶指舍和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上擁有靈巧的位CPU和在系統(tǒng)可編程Flash使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方。MCS-51單片機(jī)產(chǎn)晶兼容8字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、100次擦寫周期、全靜態(tài)操作OHz-33MH、三級(jí)加密程序存儲(chǔ)器3個(gè)可編1/口線、三個(gè)1位定時(shí)器/計(jì)數(shù)器八個(gè)中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時(shí)器、雙數(shù)據(jù)指針、掉電標(biāo)識(shí)符。AT89S5具有以下標(biāo)準(zhǔn)功能:8字節(jié)Flash25字節(jié)RAM31/口線,看門狗定時(shí)器個(gè)數(shù)據(jù)指針,三個(gè)1位定時(shí)器/計(jì)數(shù)器一向級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電另外AT89S5可降至OHz靜態(tài)邏輯操作,支種軟件可選擇節(jié)電模式??臻e模式下CP停止工作允許RAM、定時(shí)器/計(jì)數(shù)串口、中斷繼續(xù)工作。掉電保護(hù)方式下RAM內(nèi)容被保存振蕩器被凍結(jié),單片機(jī)一切工作停止匱到下一個(gè)中斷或硬件復(fù)位為。AT89S5單片機(jī)PDIPLCTQF三種封裝方式 在此我選用DPI也就是雙列亙插封裝的單片機(jī)此種封裝有如下特點(diǎn):1)適PC的穿孔安裝;2)易于對(duì)PC布線;3)操作方便;.2AT89S52引腳功能描述AT89S52單片機(jī)的管腳說明如圖2.1所示:Pl.0Pl.Pl.213Pl.415Pl.617
VCC一401 39PO.O(AOO)1 :-寸TPO.01)-寸TPO.2(AD2)一6P0.4(A04)-PO.3P0.4(A04)-1 33PO.5(AD5)1-331PO.6(A06)1 ::Rl
PO.707)←
'.P3.(RXD)
E/PP-ι二P3.1σXD)
←ALE/PROG←
-P3.(ITO)3.(ITl)P3.4σ0)P3.5σ1)P3.R)P3.(D)XTAL2XTAL1GND
PSENI 二1 :P2.7(AI5)11 :1 27P2.6(AI4)11一寸?P2.5(A'3)1一寸?P2.412)1一÷←I2.3(All)」二一寸?P2.210)1一寸?P2.1(A9)一÷←P2.0(A)1 二-圖2.1DIP封裝AT89S52單片機(jī)引腳結(jié)構(gòu)圖1)VCC:電源。(2)GND:接地端。(3)PO口(PO.O-PO.7):P口是一位漏極開路的雙向1/。作為輸出口,每位能驅(qū)動(dòng)個(gè)TT邏輯電平。對(duì)PO端口""才 號(hào)|腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí)PO口也被作為位地/數(shù)據(jù)復(fù)用。在這種模式下PO具有內(nèi)部上拉電阻。Flas編程時(shí)P口也用來接收指舍字節(jié);在程序校驗(yàn)時(shí),輸出指舍字節(jié)。程序校驗(yàn)時(shí) 需要外部上拉電阻。(4)P(P.0-P.7):P是一個(gè)具有內(nèi)部上拉電阻位雙1/口P輸出緩沖器能驅(qū)動(dòng)TT邏輯電平。對(duì)P端口""時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸口使用。作為輸入使用時(shí)被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外P1.和P.分別作定時(shí)器/計(jì)數(shù)的外部計(jì)數(shù)輸入(P.2)和時(shí)器/計(jì)數(shù)的觸發(fā)輸入(P1.T2EX),具體如表2所示:在Flas編程和校驗(yàn)時(shí) P口接收位地址字節(jié)。2-1P口第二功能引腳號(hào) 第二功能P.0P1.1
T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出T2EX(定時(shí)/計(jì)數(shù)器T2的捕/重載觸發(fā)信號(hào)和方向控制)P5P.6P.7
OI(在系統(tǒng)編程用)SO(在系統(tǒng)編程用)SCK(在系統(tǒng)編程用)(5)口(2.0-P7):口是一個(gè)具有內(nèi)部上拉電阻的位雙1/口,輸出緩沖器能驅(qū)動(dòng)TT邏輯電平。對(duì)端口時(shí)內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使作為輸入使用時(shí),被外部拉低的號(hào)|腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲(chǔ)器或位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行OVXDPR)時(shí)P口送出高八位地址。在這種應(yīng)用中口使用很強(qiáng)的內(nèi)部上拉發(fā)送。在使位地址(如MOVXRI)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)2口輸2鎖存器的內(nèi)容。la編程和校驗(yàn)時(shí) 口也接收高位地址字節(jié)和一些控制信號(hào)。(6)口(3.0-7):3口是一個(gè)具有內(nèi)部上拉電阻位雙向1口,輸出緩沖器能驅(qū)動(dòng)TT邏輯電平。對(duì)端口時(shí)內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使作為輸入使用時(shí),被外部拉低的號(hào)|腳由于內(nèi)部電阻的原因,將輸出電流(IL)0口亦作為89S5第二功能使用,如2-所示:表2-2口第二功能引腳號(hào)第二功能0RXD(串行輸入)1XD(串行輸出)2NTO外部中斷0)3NTO外部中斷0)3.4O(定時(shí)器。外部輸入)3.5T1(定時(shí)器1外部輸入)6WR外部數(shù)據(jù)存儲(chǔ)器寫選通)3.7RD外部數(shù)據(jù)存儲(chǔ)器寫選通)在flash編程和校驗(yàn)時(shí) 3口也接收一些控制信號(hào)。RST復(fù)位輸入。晶振工作時(shí)R腳持續(xù)個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時(shí)完成后R腳輸9個(gè)晶振周期的高電平。特殊存放器R(地址EH)上的DRO位可以使此功能無效DIS默認(rèn)狀態(tài)下復(fù)位高電平有效?!?地址鎖存控制信號(hào)(LE)是訪問外部程序存儲(chǔ)器時(shí),鎖存位地址的輸出脈沖。fla編程時(shí),此引腳(POG)也用作編程輸入脈在一般情況下L以晶振六分之的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào)在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)LE脈沖將會(huì)跳如果需要,通過將地址為8ESF的位'1"AL操作將無效。這一位'1"ALE僅在執(zhí)行MOVMOV指舍時(shí)有效。否那么AL將被微弱拉高。這AL使能標(biāo)志位(地址為8ESF的位)的設(shè)置對(duì)微控制器處于外部執(zhí)行模式下無效。PSFN:外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89S5從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí)PSE在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)PSE將不被激。EAlVP訪問外部程序存儲(chǔ)器控制信號(hào)。為使能從OOO到FFFF的外部程序存儲(chǔ)器讀取指舍EA必須接GN。為了執(zhí)行內(nèi)部程序指舍E應(yīng)該VC。flash編程期間E也接收1VPP壓。XTAL1振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸λ端。XTAL2振蕩器反相放大器的輸出端。1.3晶振特性AT89S5單片機(jī)有一個(gè)用于構(gòu)成內(nèi)部振蕩器的反相放大器 XTAL1XTAL分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構(gòu)成自激振蕩器。從外部時(shí)鐘源驅(qū)動(dòng)器件的話XTAL可以不接,而XTAL1接人,如2-所示。由于外部時(shí)鐘信號(hào)經(jīng)過二分頻觸發(fā)后作為外部時(shí)鐘電路輸入的所以對(duì)外部時(shí)鐘信號(hào)的占空比沒有其它要求最長(zhǎng)低電平持續(xù)時(shí)間和最少高電平持續(xù)時(shí)間等還是要符合要求的。如圖2.2所示:C133pF-33pF
I Y111\任仨
P3.4(TO)EPPXTAL1XTAL2RST3.7(.6(WR)AT89S52圖2.2內(nèi)部振蕩電路連接圖2液晶顯示模塊顯示器局部是由HD61202液晶顯示控制驅(qū)動(dòng)器和JM12864J液晶顯示器組成m的下面對(duì)其分別進(jìn)行介。2.1液晶顯示控制驅(qū)動(dòng)器HD61202的特點(diǎn)H61202液晶顯示控制驅(qū)動(dòng)器是一種帶有驅(qū)動(dòng)輸出的圖形液晶顯示控制器,它可直接與8位微處理器相連 它可與D203配合對(duì)液晶屏進(jìn)行行、列驅(qū)動(dòng)。H61202是一種帶有列驅(qū)動(dòng)輸出的液晶顯示控制器 它可與行驅(qū)動(dòng)器D61203配合使用,組成液晶顯示驅(qū)動(dòng)控制系統(tǒng)。(1)內(nèi)藏64x64096位顯示RAMRAM中每位數(shù)據(jù)對(duì)應(yīng)D屏上一個(gè)點(diǎn)的亮、暗狀態(tài);(2)D61202是列驅(qū)動(dòng)器,具有64路列驅(qū)動(dòng)輸出;(3)D61202讀、寫操作時(shí)序與68系列微處理器相符,因此它可直接與68系列微處理器接口相連;(4)D61202的占空比為1/32-/6。.2液晶顯示控制驅(qū)動(dòng)器D61202的引腳功能引腳CCSCS3為芯片的片選端|為讀寫使能信號(hào),它是在下降治時(shí)數(shù)據(jù)被鎖存入H61202的-在E高電平期間 數(shù)據(jù)被讀出:/W為讀寫選擇信號(hào)當(dāng)它為一時(shí)為讀選遇,為軍事時(shí)為寫選遇;OD7為數(shù)據(jù)總線RT為復(fù)位信號(hào)復(fù)位信號(hào)有效時(shí),關(guān)閉液晶顯示,使顯示起始行為0T可跟MU相連由MCU控制;也可噩接接VD,使之不起作用D61202的引腳功能如下表3所表2-3H202的引腳功能號(hào)腳符號(hào)狀態(tài)號(hào)腳名稱功能CSCSCS3輸λ芯片片選端CS1和CS2低電平選通βS3高電平選遇。E輸λ讀寫使能信號(hào)在E下降泊敖據(jù)被鎖翻寫〉HD61202;在E高電平期間,數(shù)據(jù)被讀出/W輸λ讀寫選擇信號(hào)W=1為讀選遇W=O為寫選逼RS輸λ數(shù)據(jù)、指舍選擇信號(hào)RS1為數(shù)據(jù)操作RS=O為寫指舍或讀狀態(tài)DBO-DB7=態(tài)數(shù)據(jù)總線RT輸λ復(fù)位信號(hào)復(fù)位信號(hào)有效時(shí),關(guān)閉液晶顯示,使顯示起始行為ORT可跟MCU相連由MCU控制;也可直接接VD,使之不起作用。.3液晶顯示控制驅(qū)動(dòng)器D1202的指令系統(tǒng)H6丁202的指舍系統(tǒng)比擬簡(jiǎn)單 總共只有七種。現(xiàn)分別介紹如下:.顯示開/關(guān)指舍/W
RSI7 DB6 D5 4 3 2 1 O。1 。當(dāng)1時(shí)CD顯示RAM中的內(nèi)容O時(shí)關(guān)閉顯示。.顯示起始行(OW)設(shè)置指舍該指舍設(shè)置了對(duì)應(yīng)液晶屏最上一行的顯示RAM的行號(hào)有規(guī)律的改變顯示起始行可以使D實(shí)現(xiàn)顯示滾屏的效果。/W
S 7 D6 D5 DB4 D3 D2 D1 DO顯示起始行(0-63)3.頁A)置指舍R/W |7 DB6 B5 4 B3 D2RS ID1 DBO0 0 1 11 0 11111 1 1 頁號(hào)(0-7)顯示RAM共4行,分8頁,每頁8行。4.列地址(YAddress)設(shè)置指舍/WSIDB7D65 B4 3 D2 1 Ooo I 01顯示列地址(ι63)設(shè)置了頁地址和列地址就唯一確定了顯示RAM中的一個(gè)單元這樣MCU就可以用讀、寫指舍讀出該單元中的內(nèi)容或向該單元寫進(jìn)一個(gè)字節(jié)數(shù)據(jù)。5.讀狀態(tài)指舍R/W叫四7D6B5陽D32B1BO1 o 1SY 0 /FF RT 0 0 0 0該指舍用來查詢D61202的狀態(tài)各參量舍義如下:SY:1內(nèi)部在工作0正常狀態(tài)/FF:顯示關(guān)閉0顯示翻開T:復(fù)位狀態(tài)0正常狀態(tài)在BUSY和RT狀態(tài)時(shí)除讀狀態(tài)指舍外真它指舍均不對(duì)H61202產(chǎn)生作用。在對(duì)H61202操作之前要查詢SY狀態(tài) 以確定是否可以對(duì)D61202進(jìn)行操作。6.寫數(shù)據(jù)指舍/w RSID7 DB6 D5 DB4 DB3 B2 1 DBO01I寫數(shù)據(jù)讀、寫數(shù)據(jù)指舍每執(zhí)行完次讀、寫操作列地址就自動(dòng)增一,必須注意的是,進(jìn)行讀操作之前,必須有次空讀操作,緊接著再讀才會(huì)讀出所要讀的單元中的數(shù)據(jù)。7.讀數(shù)據(jù)指舍剛 RSIB7 6 D5 陽 B3 2 B1 O讀顯 數(shù) 據(jù).4HD61202的軟件設(shè)計(jì)液晶控制器H061202一共有七條指舍從作用上可分為兩類顯示狀態(tài)設(shè)置指舍和數(shù)據(jù)讀/寫操作指舍。詳見指舍系統(tǒng)可查看圖形液晶顯示器產(chǎn)品有關(guān)手冊(cè)。顯示起始行設(shè)置中L5-LO為顯示起始行的地址取值在0-3FH(1-64行)范圍內(nèi)。頁面地址設(shè)置中P2-PO為選擇的頁面地址取值范圍為0-7H代表1-8頁。列地址設(shè)置中C-CO為Y地計(jì)數(shù)器的內(nèi)容,取值在0-FH(1-64行)范圍內(nèi)。顯示器上丁28點(diǎn)x64點(diǎn)每8點(diǎn)為一字節(jié)數(shù)據(jù)都對(duì)應(yīng)著顯示數(shù)據(jù)RAM在H061202芯片內(nèi))點(diǎn)對(duì)應(yīng)一個(gè)bi計(jì)算機(jī)寫人或讀出顯示存儲(chǔ)器的數(shù)據(jù)代表顯示屏上某一點(diǎn)列上的垂匱8點(diǎn)行的數(shù)據(jù)00代表最上一行的點(diǎn)數(shù)據(jù)01為第二行的點(diǎn)數(shù)據(jù)07為第行的點(diǎn)數(shù)據(jù)。該it=1時(shí)點(diǎn)那么顯示黑點(diǎn)出來,該bi=O時(shí)該點(diǎn)那么消失。另外LCO指舍中有·條disayON/OFF指舍displayON時(shí)顯示RAM數(shù)據(jù)對(duì)應(yīng)顯示的畫面;displayOFF那么畫面消失RAM中顯示數(shù)據(jù)仍存。點(diǎn)陣字模文件的建立:由于MGLS12864液晶顯示器沒有內(nèi)部字符發(fā)生器所以在屏幕上顯示的任何字符、漢字等須自己建立點(diǎn)陣字模庫然后均按圖形方式進(jìn)行顯示。由于H061202顯示存儲(chǔ)器的特性,不能將計(jì)算機(jī)內(nèi)的漢字庫和其它字模庫提出匱接使用,需要將其旋轉(zhuǎn)90度后再寫人。點(diǎn)陣字模庫建立包括以下幾個(gè)方面:(1)建立8x16點(diǎn)陣常用字符、數(shù)字、符號(hào)字模庫。可選用計(jì)算機(jī)BIOS中AS川的8x16字模庫所有字符按照ASCII值從小到大升序排列。asm{MOVa1130h/*H=11一功能調(diào)用。裝人字庫至字庫Vmovb6AL=30h取點(diǎn)陣信息勺int10hBH=6取ROM8X16點(diǎn)陣指(VGA)勺movaes尸出口EBP指字庫指針V10VasclIeS.axmovabpmovascii_bax};ascioffset=ascii_bp+16*asciicode;forU=0;j<16;j++)bufO=peekb(ascii_eascii_offsetj)/*讀16字節(jié)點(diǎn)陣數(shù)據(jù)叮for(m=m<16;m++)尸點(diǎn)陣數(shù)據(jù)轉(zhuǎn)換成LCO格式數(shù)據(jù)*/{m<8){beginbyte=;shiftn=17}else{beginbyte=115;sn=115";}forU=0;j<8;j+)ascii8x16[m]=(ascii8x16[m]+(buf[beginbyte-j]>>(shiftn-m))&Ox0)<<1;也可選用UCOOS的ASC16文件做字模ASC16文件的字符為8x16點(diǎn)陣。所有字符按照ASCII值從小到大升序排列。計(jì)算字符首地址的公式:字符首地址=字符的ASCII碼值x16加字模庫首地址。(2)建立所用到的16x16點(diǎn)陣字模庫。漢字字符可選用UCDOS的HZK16文件做字模庫HZK16文件的字符為 16x16點(diǎn)陣。所有字符按照區(qū)位碼從小到大升序排列。計(jì)算漢字字符首地址的公式如下:漢字首地址=((區(qū)-1)x94位碼-1)x3。作者用C語言編寫的讀取UCDOS點(diǎn)陣字庫字模程序,完成宇模讀取。數(shù)據(jù)重新排列,并按MCS-51匯編程序的要求寫成相應(yīng)格式的文本文件。p=((quma-1)*94+weima-1)*32;ωlifie'fe曠曠川"氣飛"HZ6"rb''seekclibflong)SEEK_SET);fread(busizeof(unsignedchar3cclibfile);尸讀32字節(jié)點(diǎn)陣數(shù)vfor(m=O;m<32;m++){尸點(diǎn)陣數(shù)據(jù)轉(zhuǎn)換成LCD格式數(shù)據(jù)叮if(m<8){beginbyte="14";shiftn="7";}elseif(m>=8&&m<16){beginbyte="15";shiftn="15";}elseif(m>=16&&m<24){beginbyte="30";shiftn="23";}else{beginbyte="3";shiftn="3";}forO=O;j<8;j++)hzk16x16[m]=(hzk1劉6[m]+(buf[beginbyt2*j]>>(shiftn-m))&Ox0)<<丁;(3)常用圖形(如產(chǎn)晶商標(biāo)等)的點(diǎn)陣圖形的建立。對(duì)已有的圖形可采用掃描儀進(jìn)行掃描,然后用圖形處理軟件進(jìn)行處理,再將BMP格式文件轉(zhuǎn)換成MCS-51的匯編文件的格式。以上所有的字模數(shù)據(jù)都存放在單片機(jī)W78E58的程序存儲(chǔ)器中,如用到的漢字、圖形較多,可選用較大容量的程序存儲(chǔ)器。通用子程序:通用子程序分左半屏、右半屏寫指舍代碼子程序和寫顯示數(shù)據(jù)子程序。液晶顯示驅(qū)動(dòng)器HD16202內(nèi)部有個(gè)忙標(biāo)志存放器,當(dāng)BF=1時(shí),表示內(nèi)部操作正在運(yùn)行,不能接受外部數(shù)據(jù)或指舍。下面子程序中設(shè)指舍代碼存放器為COM,數(shù)據(jù)存放器為DAT。(COMMEQU20H/*指舍存放器*/DATAEQU21H戶數(shù)據(jù)存放器*/)1)左半屏寫指舍子程序WCMD1: MOVDPT#CRADR1 ;/*讀狀態(tài)字口地VWAIT1: MOVX@DPTR;尸讀狀態(tài)字VJBACC.WIT1 ;尸制忙標(biāo)志B,如BF=1忙,等待VMOVDPT#CWADR1;尸寫指舍字口地址叮MOVCOMM;尸取指舍代碼叮MOVX@DPTA;尸寫指舍代碼*/RET2)左半屏寫數(shù)據(jù)子程序WR_DATA1:MOVDPT#RADR1 ;尸讀狀態(tài)字口地VWAIT11: MOVX@DPTR ;/*讀狀態(tài)字勺JBACC.WIT11 ;尸制忙標(biāo)志B,如BF=1忙,等VMOVDPT#DWADR1;尸寫數(shù)據(jù)字口地址叮MOVDATA ;尸取數(shù)據(jù)/MOVX@DPTA;尸寫數(shù)V一本vvvvsoon'
LCDPANEL128x64dotsDBODB7巳IRSTCS1CS2EA..!EDK一-l
LEDBaclghtRET3)右半屏寫指舍子程序WR_CMD2和右半屏寫數(shù)據(jù)子程序WDATA2的編制罔左半屏子程序相同只是對(duì)應(yīng)口地址不同。.5JM12864J的電路結(jié)構(gòu)特點(diǎn)JM12864J是使用HD61202及其兼容控制驅(qū)動(dòng)器作為列驅(qū)動(dòng)器,同時(shí)使用HD6120為行驅(qū)動(dòng)器的液晶模塊。由于HD612不MP發(fā)生聯(lián)系,只要提供電源就能產(chǎn)生行驅(qū)動(dòng)信號(hào)和各種罔步信號(hào)比擬簡(jiǎn)單因此這里就不作介紹了。下面主要介紹一JM12864的邏輯電路圖。JM12864J共有兩HD6120及其兼容控制驅(qū)動(dòng)器和一片HD61203如2.所圖2.3 JM12864J的邏輯電路圖在JM12864J中,兩片HD61202的ADC均接高電平RST也接高電平,這樣在使用M1284J時(shí)就不必再考慮這兩個(gè)引腳的作用CSA跟H202(門的CS1相連CSB跟H202(2)的C1相連,因此CSA、CSB選通組合信號(hào)為CSA,CSB01選遇(門,蝕 ,CSB=0選遇(2),對(duì)于JM28J,只要供應(yīng)D、VSS和VO即可H202和H61203所需的電源將由模塊內(nèi)部電路在VD和VVSS的作用下產(chǎn)生。.6JM12864J的應(yīng)用以下內(nèi)容為以單片機(jī)89S52為例機(jī)的接口電路控制電路為直接訪問方式的接口電路。電路原理圖如圖.4所示:1286與1926口P07負(fù)電源WR2 ERDP3P2P21
All0A9A8
I:IICSA圖.4 89S52與液晶的接口電路根據(jù)以上電路原理圖中液晶的各引腳與單片機(jī)的接法可得本設(shè)計(jì)的液晶模塊電路如圖5所示:由圖5可以看出:VSS接地-數(shù)字電源DD接+5V:數(shù)據(jù)、指舍選擇信號(hào)S接單片機(jī)3.2口-讀寫選擇信號(hào)W接單片機(jī)3.1口O-D7分別接單片機(jī)的0-7口;芯片、芯片2的片選分別接單片機(jī)的.43.3口;復(fù)位端、背光正電源LEA接+5V:液晶驅(qū)動(dòng)電壓VE、青光負(fù)電源LK接地。+5V
。VSS。..L+5V
2 VDP2 3 VOP.1 4 RSP0 5 WP0 6 EP.1 7 DBOP2 g 1P23 9 DB2P4 10 DB3P5 11 4P6 2 5P7 3 6P.4 4 DB7P.3 5 S116 CS27 IRST8 V衛(wèi)9 LEDALEDK圖2.5液晶模塊電路2.7盤電路鍵盤電路本設(shè)計(jì)共采用按鍵3個(gè) 分別與單片機(jī)的P3.7口相連分別對(duì)旋轉(zhuǎn)、左移、下、右。第13頁共4頁3 系統(tǒng)程序的設(shè)計(jì).1俄羅斯方塊驅(qū)動(dòng)流程圖消并除置于制把為上口zmhu當(dāng)ME即由據(jù)惘川叩移變根據(jù)變化繪閣(繪提示圖前閣形〉Y圖1俄羅斯萬塊驅(qū)動(dòng)圖流程圖.2俄羅斯方塊所有給圖工作流程圖第15頁共64頁繪提示閣N 從消行的行的列開始表對(duì)應(yīng)的色彩
消并為
行清山忡忡廳把上U而mh〈 〉〈 〉結(jié)束 數(shù)前據(jù)罔下改圖2俄羅斯方塊所有繪作流程圖 移變3.3俄羅斯方塊中按下鍵的流程圖記下下陣圖形時(shí)的位置()直把圖形下降到底YNl北京科技大學(xué)遠(yuǎn)程與成人教青學(xué)院畢業(yè)設(shè)計(jì)(論文)提示閣形景前圖形〈結(jié)束 〉圖3.3俄羅斯方塊按下鍵的流程圖4系統(tǒng)仿真.1Proteus軟件介紹Proteus軟件是來自英國(guó)Labcenterelectronics公司的EDA工具軟件Proteus軟件有十多年的歷史 在全球廣泛使用 除了真具有和其它EDA工具一樣的原理布圖PCB自動(dòng)或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動(dòng)的,針對(duì)微處理器的應(yīng)用,還可以直接在基于原理菌的虛擬原型上編程,并實(shí)現(xiàn)軟件源碼級(jí)的實(shí)時(shí)調(diào)試,如有顯示及輸出,還能看到運(yùn)行后輸入輸出的效果配合系統(tǒng)配置的虛擬儀器如示波器、邏輯分析儀等 不需要?jiǎng)e的 Proteus建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境!Proteus組合了高級(jí)原理布圖、混合模式PICE真PCB設(shè)計(jì)以及自動(dòng)布線來實(shí)現(xiàn)一個(gè)完整的電子設(shè)計(jì)系統(tǒng)。此系統(tǒng)受益于15年來的持續(xù)開發(fā),電子世在其對(duì)PCB設(shè)計(jì)系統(tǒng)的比擬文章中評(píng)為最好產(chǎn)晶'heRoutetoPCBCA飛Proteus產(chǎn)品系列也包含了革命性的VM技術(shù)用戶可以對(duì)基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真。用戶甚至可以實(shí)時(shí)采用諸如LED/LC鍵盤RS232終端等動(dòng)態(tài)外設(shè)模型來對(duì)設(shè)計(jì)進(jìn)行交互仿真。其功能模塊一個(gè)易用而又功能強(qiáng)大的ISIS原理布圖工具Proteus混合模型SPICE仿真;ARESPCB設(shè)Proteus真器的一個(gè)擴(kuò)展ProteusVSM:便于包括所有相關(guān)的器件的基于微處理器設(shè)計(jì)的協(xié)同仿此外還可以結(jié)合微控制器軟件使用動(dòng)態(tài)的鍵盤開關(guān)按鈕LEDs甚至LCD顯示CPU模型。(1)支持許多通用的微控制器如PIAVHC11以及8051;(2)交互的裝置模型包括:LED和LCD顯RS232終通用鍵盤;(3)強(qiáng)大的調(diào)試工具包括存放器和存儲(chǔ)斷點(diǎn)和單步模式;(4)IARC-SPY和KeiluVision3等開發(fā)工具的源層調(diào)試;(5)應(yīng)用特殊模型的DLL界面,提供有關(guān)元件庫的全部文件。4.2KeiI軟件介紹KeilC51Visin2集成開發(fā)環(huán)境是KeilSoftware.In/KeilElektronikGmbH開發(fā)的基于80C51內(nèi)核的微處理器軟件開發(fā)平臺(tái) 內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開發(fā)工具可以完成從工程建立到管理、編譯、鏈接、目標(biāo)代碼的生成、軟件仿真、硬件仿真等完整的開發(fā)流程尤其是C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面到達(dá)了較高的水平,而且可以附加靈活的控制選項(xiàng),在開發(fā)大型工程時(shí)鼻常理想KeilC51集成開發(fā)環(huán)境的主要功能有以下幾點(diǎn):(1)μVision2forWindows:是一個(gè)集成開發(fā)環(huán)境,它將工程管理、源代碼編輯和程序調(diào)試等組合在一個(gè)功能強(qiáng)大的環(huán)境中;(2)C51國(guó)際際準(zhǔn)化C交叉編譯器:從C源代碼產(chǎn)生可重定位的目標(biāo)模塊;(3)A5丁宏匯編器從80C51匯編源代碼產(chǎn)生可重定位的目標(biāo)模塊;(4)BL51鏈接/定位器:組合由C51和A1產(chǎn)生的可重定位的目標(biāo)模塊生成絕對(duì)目標(biāo)模塊;(5)LB51庫管理器:從目標(biāo)模塊生成連接器可以使用的庫文件;(6)OH51目標(biāo)文件至HEX格式的轉(zhuǎn)換器從絕對(duì)目標(biāo)模塊生咸telHex文件;(7)RTX-51實(shí)時(shí)操作系統(tǒng):簡(jiǎn)化了復(fù)雜的實(shí)時(shí)應(yīng)用軟件工程的設(shè)。這個(gè)工具套件是為專業(yè)軟件開發(fā)人員設(shè)計(jì)的 但任何層次的編程人員都可以使用并獲得80C51單片機(jī)的絕大局部應(yīng)用KeilSoftware提供了一流的80C51系列開發(fā)工具軟件,下面描述每個(gè)套件及其內(nèi)容:1)PK51專業(yè)開發(fā)套件PK51專業(yè)開發(fā)套件提供了所有工具,適合專業(yè)開發(fā)人員建立和調(diào)試80C51系列微控制器的復(fù)雜嵌入式應(yīng)用程序。專業(yè)開發(fā)套件可針對(duì)80C51及其所有派生系列進(jìn)行配置使用;2)DK51開發(fā)套件:DK51開發(fā)套是PK51的精簡(jiǎn)版,它不包括RTX51Tiny實(shí)時(shí)操作系統(tǒng)。開發(fā)套件可針對(duì)80C51及其所以派生系列進(jìn)行配置使用-3)編譯器套件:如果開發(fā)者只需要一個(gè)C編譯器而不需要調(diào)試系統(tǒng),那么CA51編譯器套件就是最好的選擇CA51編譯器套件只包含Vision21DE集成開發(fā)環(huán)境,CA51不提供f..Vision2調(diào)試器的功能。這個(gè)套件包括了要建立嵌入式應(yīng)用的所有工具軟件可針對(duì)80C51及其所有派生系列進(jìn)行配置使用;表4-1開發(fā)套件和工具對(duì)照表ComponentsPK51DK51CA51A51FR1uVision2ProjectManagement&EditorJ」」 JA51AssemblerJJJJC51CompilerJJJBL51LikelcatorJJJJLI51ibraryMagaerJJJJuVision2ebuggeSimlatrJJRTX51nyJRTX51FullJ4)A51匯編器套件:A51匯編器套件包括一個(gè)匯編器和創(chuàng)立嵌λ式應(yīng)用所需要的所有工具。它可針對(duì)80C51及其所有派生系列進(jìn)行配置使用-5)RTX51實(shí)時(shí)操作系統(tǒng)(FR51):RTX51實(shí)時(shí)操作系是80C1系列微控制器的一個(gè)實(shí)時(shí)內(nèi)核RTX51Full提供RTX51Tiny的所以功能和一些擴(kuò)展功能,并且包括CAN通信協(xié)議接口子程序;6)比擬表:表4-1列出了每個(gè)套件的功能袤的頂上一欄為工具套件名稱,袤的左邊一列為軟件組成局部 使用這個(gè)對(duì)照表可以選擇符合需要的套件。.3俄羅斯方塊系統(tǒng)PROTUES仿真用Proteus軟件,根據(jù)俄羅斯萬塊電路原理圖,畫出仿真圖。電路圖畫完后使用Proteus與Keil聯(lián)調(diào) 這里使用的軟件是KeilμVision3.8與Proteus.。(1)翻開PROTEUS的安裝目錄,進(jìn)入help目錄,翻開ARM.HLP幫助文擋,點(diǎn)擊聯(lián):RemoteDebuggerDriverDownloadandInstallremotedebuggerdriverforKeiluVision,下載VDMAGIEX運(yùn)行安裝到KEIL安裝目錄VDM5dll文檔會(huì)自動(dòng)安裝到KEIL\C51\BIN目錄。(2)翻開KEIL中翻開要聯(lián)調(diào)的工程在projectworkspace"target1上點(diǎn)右loptionsfortarget'target1。在翻開的對(duì)話框中點(diǎn)擊到Debug選項(xiàng)卡,在右上角上先中USE選項(xiàng),并在下拉菜單中選中proteusVSMSimulator,在旁的Settings點(diǎn)一下如果是proteus在罔一臺(tái)電腦hot:丁2.0.0.p:800,點(diǎn)確OK保。(3)翻開proteus并翻開要仿真的圖紙,點(diǎn)擊Debug菜單/選中UseRemoteDebugMonito。(4)完成,如果程序和電路圖沒問題,在KEIL中buildall并且仿真運(yùn)行后,可以在proteus看到實(shí)時(shí)效果了如圖4.1所示:LCD1?rY126"sse-m
EIEne-DE84+5v
A 「圖4.1Protues真結(jié)論通過3個(gè)月地全心投入和辛苦努力終于完成了基于單片機(jī)的俄羅斯萬塊游戲的設(shè)計(jì)設(shè)計(jì)的過程就是綜合運(yùn)用所學(xué)知識(shí)和學(xué)習(xí)新知識(shí)的過程。由于經(jīng)驗(yàn)缺乏難免出現(xiàn)一些小的失誤但無論怎樣本次畢業(yè)設(shè)計(jì)對(duì)于我來說都一次難得的鍛煉時(shí)機(jī),使我積累了許多珍貴的經(jīng)驗(yàn)。本文對(duì)單片機(jī)制作的俄羅斯萬塊游戲的運(yùn)行原理進(jìn)行了分析,全面、詳細(xì)地闡述了俄羅斯萬塊游戲的設(shè)計(jì)過程。本游戲機(jī)已經(jīng)到達(dá)了掌上娛樂的要求但在設(shè)計(jì)上還留有進(jìn)一步改善的余地如可以美化游戲界面、參加和動(dòng)作音樂、力回饋系統(tǒng)。畢業(yè)設(shè)計(jì)的整個(gè)開發(fā)過程是曲折的首先在硬件設(shè)計(jì)上由于開始對(duì)D液晶屏不熟悉加之莫程序量較多所以,在設(shè)計(jì)的過程中不免有些困難,通過我多方面的查找資料并不斷的向老師和同學(xué)請(qǐng)教,結(jié)合網(wǎng)絡(luò)資源最終找出比擬完善的方案在理論上能夠?qū)崿F(xiàn)功能要求。經(jīng)過幾個(gè)月的前期學(xué)習(xí)我積累了很多的關(guān)于液晶顯示方面和C語言設(shè)計(jì)方面的資料并對(duì)電路的整合有了一個(gè)根本的概念最后設(shè)計(jì)出總的電路圖經(jīng)過不斷的測(cè)試與修改,最終完善了硬件電路的設(shè)計(jì)。對(duì)于軟件設(shè)計(jì),因?yàn)橐郧暗木幊探?jīng)驗(yàn)不夠,再加上對(duì)89S52這一芯片的了解不是很徹底,因此在這方面花費(fèi)了很多的精力和時(shí)間。當(dāng)然這個(gè)過程不乏有同學(xué)的幫助我弈常感謝實(shí)驗(yàn)室同學(xué)的幫助在我的軟件調(diào)試過程中給了我至關(guān)重要的幫助并給了我很多弈常好的建議。當(dāng)然由于我在理論和實(shí)踐方面存在定的缺乏所以在設(shè)計(jì)思路和實(shí)現(xiàn)功能上難免有缺乏和沒有想到的地方還請(qǐng)各位老師給予指。參考文獻(xiàn)[高凌琴,陳青華.俄羅斯方塊游戲關(guān)鍵技術(shù)探討[J].信息技術(shù)與信息.2021.[2譚浩.C程序設(shè)計(jì).[M]北京:清華大學(xué)出版社2003.[3張齊.杜群貴單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)一一基于C語言編[M]北京:電子工業(yè)出版社2004.[4劉洪AT89C2051單片機(jī)及1/0口的擴(kuò)展方[J].山東電子1997116-18[5胡漢才.單片機(jī)原理及其接口技[M].清華大學(xué)出版社2000[6]王彥朝.二維數(shù)組在俄羅斯萬塊游戲編程中的應(yīng)用[J].信息與電腦(理論版)2021-0446-47[7]王曉威,唐叔進(jìn),邢瑞.基于單片機(jī)和液晶顯示器的游戲開發(fā)[J].電子世界2007:30-31[8徐金增.單片機(jī)編程仿真實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)與實(shí)[0]山東師范大學(xué)2021,4[]GeorgeLeKarinaNEdmondKwang.Designofringoscillatorbasedvoltagecontrolledoscillator.ProjectFinalReport[R].2005[10]YeagerBretHowtotroubleshootyourelectronicscale.PowderandBulkEngineerin1995附錄A
電路原理圖?,?.…..?J......·e············--ee··一
,." ',.,...??…... -...…….,"..,…………,….?…...。...... -…….……·…….…..…???? ??........ -..,……...,..,,..,附錄B 主要程序#iclude<AT89X51.H>#defineucharuignedchar#defineuint uigedint#defineDOWNTh伍30#defineMAXHANG20#defineMAXLIE 16#defineMAXPIX 3#definePUSHON 50#defineLCDP2#defineEN P30#defineRW P31#dneRS P32#defineC1P33#defineCS2P34#defineKEYLFfP35#defineKEYDOWNP36#defineKEYRIGHP37#defineKEYROTATIONPl0uchargkey=O旺keystate=tOmsl=tOs=downtimgap=O;ucharmia=,n=O;uchardownok;bitkeyflatimeupda,ahionupdae;ucharidatacubeMap[MAXHANG[2];pedefstruc{blockis;uintscore=O;ucharspeed=l;
ucharcode*box;ucharcube:4;ucharstte:4;charrow;charcolumn;}block;ucharcodebittable[8]{OxlOx2Ox4Ox80};ucharcodecube[]=* ????*/Ox,, , ,/.???*/Ox,Ox,Ox,,4,4,*??*/Ox,,4,,/..??
, ,*/Ox,,/* ????
, ,//x,,,*/Ox,,,/..??
, ,Ox,,*/, ,};ucharcodeasü[]=
, 0Ox3O504,04Ox3//0-OxOOx4Ox7Ox4OxO//-1-Ox6Ox5Ox4Ox4Ox4//-2-Ox2Ox4Ox4Ox4Ox3//-3-Ox1Ox1OxIOxOxl//-4-Ox2Ox4Ox4Ox4Ox3//-5-Ox3Ox4Ox4Ox4Ox3//-6-OxOOx7Ox0Ox0Ox0//-7-Ox3Ox4Ox4Ox4Ox3//-8-Ox4Ox4Ox4Ox2Oxl//-9-OxOOx3Ox3OxOOxO//-:-10//nextOx7Ox0Ox0OxlOOx7//--llOx7Ox4Ox4Ox4Ox4//-E-12Ox6Ox1Ox0Ox1Ox6//-X-13OxOOxOOx7OxOOxO//-T-14//speedOx2Ox4Ox4Ox4Ox3//-S-15Ox7Ox0Ox0Ox0Ox0//--16Ox7Ox4Ox4Ox4Ox4//-E-17Ox7Ox4Ox4Ox4Ox3//D-18//scoreOx3Ox4,O4OxOx2//-C-19Ox3Ox4,O4,04Ox3//-0-20Ox7Ox0Ox1Ox2Ox4//-R-21OxOOxOOxOOxOOxO,//--22//GAMEOVEROx3Ox4O505Ox7//-G-23Ox7Ox1OxlOx1Ox7//-A-24Ox7Ox0OxOOx0Ox7//-M-25OxlOx2Ox4Ox2Oxl//-V-26/ffThE// OxOOx4Ox7O4OxOO //1-27//////////////////voidlcdCmd(ucharcmd)bita;ea=EA;E=ü;EN=O;RW=O;RS=O;LC=cmd;EN=l;EN=l;E=ü;EAea;//一voidlcdWriteByte(ucharch)EN=ü;RS=l;RW=O;LC=ch;E=l;EN=l;EN=O;//一voidlcdStge(ucharpage)pae&=Ox7;page+=Oxb8;lcdCm(page);//一voidldtColumn(ucharcoumn)column&=Ox3f;clumn+=Ox40;lcdCmd(column);//一-//characterfron=5*8voidldlayChar(ucharindeucharpagucharcolume)uchartemp;umtp;p=5*index;for(ilumeicolume;i+)ifi64)CSl=l;CS2=O;temp=l;seCSl=O;CS2=1;temp=i-64;lcdStage(page;lcdSetColumn(temp);lcdWriteByte(asü[p+]);//一一一一一一-//rectangle(560)voidrectangle(void)ucharpage;CSl=l;C2O;lcdStage(O);lcdSetColumn(2;EN=O;RS=l;RW=O;LC=Oxff;EN=l;EN=l;EN=O;for(i=3i51;i++)EN=O;RS=l;RW=O;LC=Oxl;EN=l;EN=l;E=O;E=O;RS=l;RW=O;LCD=Oxff;E=l;EN=l;E=O;//一fo(age;age<7;pag忡)cdStage(page);lcdSetColumn(2);EN=O;RS=l;RW=O;LC=Oxff;EN=l;EN=l;E=O;for(i=3i51;i忡)EN=O;RS=l;RW=O;LCOxO;EN=l;EN=l;EN=O;EN=O;RS=l;RW=O;LCD=Oxff;EN=l;EN=l;EN=O;//一一一一一一一lcdSetPage(7);lcdSetColumn(2);EN=O;RS=l;RW=O;LCD=Oxlf;EN=l;EN=l;EN=O;for(i=3i51;i+)EN=O;R=l;RW=O;LC=Oxl0;EN=l;EN=l;EN=O;EN=O;R=l;R=O;LC=Oxlf;EN=l;EN=l;EN=O;/一一一一一一//x:列;y行,頁33voidldutix(uc缸xucharucharfag)uchardabitmasnextbit;bitbflapflaea;x=x1AXIX;y=y*MAXIX;bflag=O;tag=O;i=y%8;if(i==O)bitmask=Ox;seif(i==l)bitmask=Oxe;seif(i==2)bitmask=Oxc;seif(i==3)bitmask=Ox38;seif(i==4)bitmask=Ox70;seif(i==5)bitmask=OxeO;se證==6)tag=l;bitmask=OxcO;nextbit=l;seif(i==7)bflag=l;bitmask=Ox80;nextbit=3;(x<62)CSl=l;CS2=O;seif(x>63)x-=64;CSl=O;CS2=1;sepflag=l;lcdStage(y/8);for(i=xix+MAXPIX;i++)if(pflag)if(i==6211i==63)CSl=l;CS2=O;lcdStage(y/8);elseif(pflag&&i=64)CSl=O;CS2=1;lcdStage(y/8);lcdSetColumn(i);ea=EA;EA=O;EN=O;LC=Oxff;RS=l;RW=l;EN=l;EN=O;EN=l;dat=LCD;EN=O;if(flag==l)dal=bitmask;elsedat&=-bitmask;lcdSetColumn(i);EN=O;RW=O;RS=l;LC=dat;EN=l;EN=l;EN=O;EA=ea;i(flag)lcdStage(y/81);for(i=xi+MAXPIX;i++)if(pflag)if(i==6211i==63)CSl=l;CS2=O;lcdStage(y/81);elseif(pflag&&i==64)CSl=O;CS2=1;lcdStage(y/81);lcdSetColumn(i);ea=EA;EA=O;EN=O;LC=Oxff;RS=l;RW=l;EN=l;EN=O;EN=l;dat=LCD;EN=O;if(flag==l)datl=nextbit;lIU##VII--ddokkknbkee-:::Mnuttddddc
else漢-hhkCCCU-eeJMmmbnπ漢川,‘』川,‘』A 1·UMAυU八HHOmw(x·LmMHHOmw(EN=O;;LRW=O;RS=l;LC=dat;EN=l;EN=l;EN=O;EA=ea;
nuT,/一一voidlcdClωr(void)ucharpage;CSl=l;CS2=O;fo(age=O;page<8;page+)lcdStage(pag);lcdSetColumn(O);for(i=O;i<64;i+)lcdWriteByte(O);CSl=O;CS2=1;fo(age=O;page<8;page+)lcdStage(pag);lcdSetColumn(O);for(i=O;i<64;i+)lcdWriteByte(O);ldlayChar(1STAR*WIDE);lcdPlayChar(1STAR+2*WIDE);ldlayChar(1STA*WIDE);//SPEEDldlayChar(1STAR);ldlayC(1STAR+*WIDE);ldlayChar(1STAR+2*WIDE);ldlayChar(1STAR+3*WIDE);ldlayChar(1STA+WIDE);//01lcdPlayChar(,TAR+2*WIDE);ldlayChar(STAR+3*WIDE);//SCOREldlayChar(1STAR);ldlayChar(1STAR+*WIDE);ldlayChar(2STAR+2*WIDE);ldlayChar(2STAR+*WIDE);ldlayChar(1STARWIDE);ldlayChar(STAR+l*WIDE);ldlayChar(0STA2*WIDE);ldlayChar(STAR+3*WIDE);ldlayC(STARWIDE);//IMEldlayChar(7STAR);ldlayChar(OSTAR+*WIDE);ldlayChar(10STAR+2*WIDE);lcdPlayChar(STAR+3*WIDE);ldlayChar(OSTARWIDE);//-一一voidshowScoreSpeed(void)ucharnum[5];chari;umttemp;temp=score;for(i=0i;忡)num[i]=temp10;tempmp/l0;for(=;i>O;i--)if(num[i==0)num[i]=22;elsebreak;forfornei>-一)dn-'Im-Cha(nuiSTA4-)WID);JMJMldlaChared/10,4STAR2WIDE);ldlaChar(md10STAR3WIDE)%/一一-
nuvoidtiSrvr(void)if(tiupdae)tiupdaeO;ldlaChar(fen17STAR);ldlChar(fen107STAR+WIDE);ldlaChar(lOSTAR+WIDE);cdPlaChar(mio/0STAR3WIDE);dlChar(mia0STARWIDE);if(fashionupe)fhionupe;ldaCha(2STAR2WID);/=====================================================oidt(void)inrrupt1harey;η1=65531000/25;τ1=656-1000)25;downtiegp++;s=++ts%1o;if(tOm=)if(tOms=50)fashionupe1;/一'eyOff;KEYLEF=l;KEYRIG1;KEYROTATIOl;KEYDOW1;if!KEYLFf)key=;if(!KEYRIGH)ke=l;d}LU(!KE們‘R,,.、ATION)geekkke=2;
VJVde.vtif(!KEYDOWN)tke=3;swtch(eytae)
huobn5xcase0:if(key!=gkey)gkey=key;keystate=l;beak:case1:if(key==gkey)Osl=O;keystae2;if(key!=xff)kyfag=l;elsekeystate=O;beak;case2:if(key==gkey)if(tOs<USHON)Osl++;//==========================================================voidhowexCube(ucharcode*uc盯uchary)uchartemp;for(i=0i4;i+)temp=l;forG=司<司++)if(p[i]&temp)ldPutPi(x+y+l);elseldPuti(x+y+O);temp<<=l;/一一一一一一一一一一'voidcreCue(vod)staticucharnext;this.cube=next;eTIβ%7;is.row=O;iS.c山=6;is.tae=O;this.box=cube+16isbe;hwNetCue(u+16豐nex13);//一-voidshowCuMap(void)usignedcharhanlitemp;fo(ang=MAXHANG-1hagO;hang--)if(ueMa[ag][0]==0&&ueMap[hang][1]==0)break;for(lie=0;lie<(MAXffi8);lie+)emp=e;ifueMa[ang[e]&OxOl)ldPutix(temphan1);ifueMa[ang[li]&Ox02)ldPutix(tβmphan);ifueMa[ang[e]&Ox04)ldPutix(temp+han);ifueMa[ang[e]&Ox08)ldPutix(emp+han);ifueMa[ang[e]&Ox10)ldPutix(tβmp+han);ifcubeMa[ang[e]&Ox20)ldPutPix(mp+hanl)ifcubeMa[ang[lie&Ox40)ldPutixmp+han1;ifcubeMa[ang[li]&Ox80)ldPutix(tβmp+han1);//一一一-voidwriteCubeToMap(void)ucharrocoummp;ucharhalie;for(row=0;row<4;row++)temp=l;forcolumn=0;column<4; lumn++)if(this.box[row]&temp)hang=this.row+row;le=ths.clumn+column;cubeMa[ang[lie/8]l=bittable[lie%8];ldPuti(iehan);temp<<=l;//一一一一voidclarubeFrmap(void)ucharrocoummp;ucharhanlie;for(row=0;row<4;ro忡)tem=l;forcolumn=0;column<4;column++)ifis.box[row]&temp)hangis.row+row;lie=this.column+column;cubeMa[ang[le/8]&=-bittable[lie%8];lcPutPx(liehan0);temp<<=l;//一-ucharchekorder(void)if(this.box[3]!=0&&this.row>(MAXHANG-4))retum1;lseif(this.box[2]!=O&&is.row>(MIANG-3))retum1;lseif(this.box[l]!=O&&this.row>(MAXHANG-2))retum1;lseif(this.box[O]!=O&&is.row>(刀NG-1))retum1;//一-if((this.box[O]&Ox01)11(this.box[l]&Ox01)11(this.box[2]&Ox01)lI(this.box[3]&Ox01))if(this.column<O)retum1;seif(is.box[O]&Ox02)11(is.box[l]&Ox02)11(is.bo2]&Ox02)l(this.box[3]&Ox02))if(this.column<-l)retum1:seif((this.box[O]&Ox04)11(is.box[l]&O04)11(i.bx[2]&Ox04)II(is.box[3]&Ox04))if(this.colum2)rtum1;seif((this.box[O]&Ox08)11(is.box[l]&O08)11(is.box[2]&O08)l(this.box[3]&Ox08))if(this.column<-3)retum1://一一一((this.box[O]&Ox08)11(is.box[l]&Ox08)11(this.box[2]&Ox08)IIis.box[3]&Ox08))ifis.column(MAXLIE-4))ren1:seif((this.box[O]&Ox04)11(is.box[l]&O04)11(thi.bx[2]&Ox04)II(is.box[3]&Ox04))if(this.coumn(MAXLIE-3))rtum1;seif(is.box[O]&Ox02)11(is.box[1]&O02)11(i.ox[2]&Ox02)II(this.box[3]&Ox02))if(this.coumn(MAXLIE2))rtum1:seif((this.box[O]&Ox08)11(is.box[1]&O08)11(i.bx[2]&Ox08)lI(thi.bx[3]&Ox08))if(this.column>(MAXLIE-l))rtum1://--retum0;//一ucharcheckClask(void)ucharrocolumtemp;ucharhanlie;for(row=Oow<4;row++)temp=1;forcolumn=0;coumn4lumn++)if(this.box[row]&temp)hang=this.row+row;lieis.column+column;ifueMa[ang[lie/8]&bittable[lie%8])return;temp<<=1;retum0;/一voidcheckap(void)uchardelete;bitfull;full=O;delete=O;for(i=MAXHANG-li>一)if(cubeMap[i][O]==O&&cubeMap[i[1==0)break:if(cubeMap[i[O==Oxff&&cubeMap[i[1]=Off)dee++:full=1:fo(j=注>O;j-)cubeMa[j[0=cubeMa[j-1[0];cubeMa[j[]=cubeM-1][1];1++:cubeMap[O[0=0;cubeMap[O[]=0;if(full)if(lee==I)score++;elseifdelete==2)score+=4;elseifdelete==3)score+=9;else(delete=)score+=16;rectangleO;howCueMapO;if(score<50)speed1;leif(score<100)speed=2;elseif(score<500)eed=3;elseif(score<1000)spee=4;elseif(score<5000)speed=5;elseif(scor<0000)speed=6;elseif(score<20000)eed=7;elseif(score<30000)seed=8;leif(score<40000)eed=9;elseifscore<50000)eed1;seif(score<60000)speed=l;sespeed1;howcoreSpeedO;/oidmovLft(void)cearCuFrmaO;s.clum-;ifchekorerO11checklsk())is.column++;writeCubeToMapO;/oidmovRgh(void)cearCuFrmaO;吐.column++;ifchekorderO11checkClask())is.column--;writeCubeToMapO;/oidmoveDown(void)cearCuFrmaO;.ow++;ifchekorderO11checkClask())is.row--;downok=l;sedownok=O;wreueToMapO;if(downok)che1apO;/一一voidueRation(void)uchartemp;temp吐1s.state;clearCubeFrmapO;吐ls.state=+is.state%4;iS.box=cube+16iS.cube+4is.state;ifchekorderO11checkClask())this.state=temp;iS.box=cube1this.cube+4is.state;writeCubeToMapO;///////////////1///voidmain(void)'OD=Ox1;η10=(65536-10000)/256;τ1ρ=65536-10000)%256;EA=l;ETO=l;τRO=l;lcdlniO;for(tOms=O;tOm<.MAXHAG;tOms++)cubeMap[ns][O]=O;cubeMap[Os[1]=0;while(l)createCubeO;ifcheckClaskO)rectangleO;#defineSHOWSTAR12#defineGAP8ldayChar(2SHOWSTAR);//GEldlayChar(2SHOWSTAR+GAP);ldayChar(2SHOWSTAR+2*GAP);ldlayChar(1SHOWSTAR+3*GAP);ldlayChar(24HOWSTAR);//OVERldlayChar(2SHOWSTAR+GAP);ldlayChar(1SHOWSTAR+2*GAP);ldlayChar(2SHOWSTAR+3*GAP);ns=O;while(tOms<95);/延時(shí)2秒ns=O;while(tOms<95);((void(code豐)(void))OxOOOO)();while(l)timeServerO;if(keyflag)keyflgO;Osl=O;if(gkey==O)moveLeftO;if(gkey==l)movRghO;if(gkey==2)cubeRotationO;if(gkey==3)moveDownO;if(gkey==O&&tOmsl--PUSHON)Osl-=lO;moveL0;if(gkey==l&&tOmsl=PUSHON)Osl-=lO;movRghO;if(gkey==3&&tOmsl--PUSHON)tOmsl-lO;moveDownO;ifdowntimegap>(DOWNTh-speed))moveDownO;downtimegap=O;if(downok)downok=O;break;附錄C英文資料和中文翻譯Overview'e8051fam.lyofmicrocontrollersisbasedonanarchitecturewhichishigWyoptimizedforembeddedcontrolsystems.ItisusedinawidevarietyofapplicationsfrommilitaryequipmenttoautomobilestothekeyboardonyourP.SecondonlytotheMotorola68Hl1ineightbitprocessorssalethe801farnilyofmicrocontrollersisavailableinawidearrayofvariations齒mmanufacturerssuchasItePhilpandSiemens.Thes
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)輸合共標(biāo)準(zhǔn)合同協(xié)議
- 車輛經(jīng)營(yíng)合伙合同協(xié)議
- 瀏覽商品協(xié)議書
- 購(gòu)買波紋管合同協(xié)議
- 退休醫(yī)生聘用合同協(xié)議
- 朋友相聚協(xié)議書
- 進(jìn)口高粱采購(gòu)合同協(xié)議
- 連帶保證協(xié)議早于主合同
- 海地轉(zhuǎn)讓協(xié)議書
- 連云港離婚起訴協(xié)議合同
- 【MOOC】英語口語進(jìn)階-南京大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 【MOOC】旅游學(xué)概論-中國(guó)地質(zhì)大學(xué)(武漢) 中國(guó)大學(xué)慕課MOOC答案
- 義務(wù)教育質(zhì)量監(jiān)測(cè)應(yīng)急專項(xiàng)預(yù)案
- 上海交通大學(xué)醫(yī)學(xué)院附屬仁濟(jì)醫(yī)院-日間手術(shù)管理信息化實(shí)踐與發(fā)展
- 有源、無源濾波器實(shí)驗(yàn)報(bào)告
- SWOT分析法很全面課件
- 供應(yīng)室手工清洗操作流程課件
- 消防應(yīng)急疏散演練人員簽到表(標(biāo)準(zhǔn)通用版)
- 數(shù)據(jù)中心基礎(chǔ)設(shè)施管理系統(tǒng)DCIM整體方案
- 核電站入廠安全培訓(xùn)課件
- 圍術(shù)期過敏反應(yīng)診治的專家共識(shí)(全文)
評(píng)論
0/150
提交評(píng)論