《單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī)》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī)(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) 重慶大學(xué)城市科技學(xué)院 單片機(jī)課程段計(jì) 賣(mài)驗(yàn)報(bào)告 乒 乓 球 游 戲 1設(shè)計(jì)題目 乒乓球計(jì)分器的設(shè)計(jì) 2設(shè)計(jì)思路 本設(shè)計(jì)中,通過(guò)8只連續(xù)排列的發(fā)光二極管的依次點(diǎn)亮代表“乒乓球”的運(yùn)動(dòng)。再用兩 個(gè)按鍵模擬左右兩個(gè)球拍,鍵按下代表球拍擊球?!白笈摹卑聪驴墒拱l(fā)光二極管從左向單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) 右依次點(diǎn)亮,如同“乒乓球”從左向右飛來(lái):“右拍”按下則可使發(fā)光二極管從右向左 依次點(diǎn)亮,代表乒乓球”從右向左運(yùn)動(dòng)。在游戲過(guò)程中,用數(shù)碼顯示管實(shí)時(shí)顯示雙方 比分。游戲規(guī)則如下: (1) “乒乓球”移動(dòng)速度是固定的,設(shè)定0.2秒鐘移動(dòng)一位(發(fā)光二極管)。 (2) 在“乒乓球”移位一次的
2、過(guò)程中, 進(jìn)行15次的測(cè)試, 查詢接球方是否有擊球動(dòng)作。 (3) 接球方的擊球動(dòng)作應(yīng)發(fā)生在“乒乓球”到達(dá)本方最后一位發(fā)光二極管 (即點(diǎn)亮) 2. 6秒鐘時(shí)間之內(nèi)。如接球方在此一秒鐘之內(nèi)按鍵,則接球成功,接球方得分?!捌古?球”轉(zhuǎn)為相反方向運(yùn)動(dòng)。此后,原接球方變?yōu)榘l(fā)球方,原發(fā)球方變?yōu)榻忧蚍?。游戲繼續(xù) 進(jìn)行。 3所做工作 (1) 完成系統(tǒng)設(shè)計(jì)的構(gòu)思, 根據(jù)構(gòu)思開(kāi)始編寫(xiě)程序, 逐步實(shí)現(xiàn)系統(tǒng)所需要的一些功 能 (程序中通過(guò)調(diào)用子函數(shù)實(shí)現(xiàn)); (2) 程序在ke訂中編譯通過(guò)后, 將產(chǎn)生的Hex文件卞載到單片機(jī)實(shí)驗(yàn)箱上進(jìn)行硬件 測(cè)試。 4硬件組成 (1) 具體電路由單片機(jī)電路、發(fā)光二極管顯示電路、按鍵電路
3、和數(shù)碼顯示電路等 部分組成。 (2) Rl、C1組成單片機(jī)的復(fù)位電路,接通電源的瞬間,由于電源電壓通過(guò)R1對(duì) C1的充電過(guò)程,單片機(jī)復(fù)位端1腳獲得一個(gè)高電平復(fù)位脈沖,使得單片機(jī)進(jìn)入初始狀 態(tài)。 (3) 發(fā)光二極管顯示和按鍵電路 PO.OPO.T I I接8只發(fā)光二極管,Pl I接左按鍵(INTO中斷),模擬左拍擊球動(dòng)作; P3.3 I I接右按鍵(INTI中斷),模擬右拍擊球動(dòng)作。P0.00.7丨I和P0.0P0.7 口接數(shù)碼顯示管 顯示扣分計(jì)數(shù)(0、F)。 5 主程序 主程序的功能是進(jìn)行初始化工作,并控制“乒乓球”游戲的開(kāi)始。模擬左拍的按鍵接Ps-sll, 模擬右拍的按鍵接Pxll。游戲開(kāi)始
4、時(shí), 顯示的比分是零比零, 此后, 如右拍按下則“乒乓 球”左移:如左拍按下則“乒乓球”右移。在主程序中,需要用四個(gè)通用寄存器分別作為右 方得分寄存器、左方得分寄存器、0.2秒計(jì)時(shí)常數(shù)寄存器及“乒乓球”移位計(jì)數(shù)器。 (1)“乒乓球”左移子程序發(fā)光二極管顯示電路 單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) 左移子程序的主要功能是控制“乒乓球”的向左移動(dòng),并在逐位移動(dòng)過(guò)程中判斷是 否有左拍擊球動(dòng)作。只有當(dāng)“乒乓球”移動(dòng)到最左的一秒時(shí)間內(nèi)擊球才是有效的,左拍 得分,并轉(zhuǎn)乒乓球右移子程序,使“乒乓球”向右移動(dòng),即相當(dāng)于左方發(fā)球。除此之外, 所有的左拍擊球都算失誤,重新開(kāi)始“乒乓球”左移子程序,相當(dāng)于由右方重新發(fā)球。 (
5、2) “乒乓球”右移子程序 “乒乓球”的右移子程序的原理與左移子程序的原理相同,只要把左移子程序流程圖中的 “右”與“左”互換即可。 6設(shè)計(jì)流程及描述 (1)按鍵掃描程序 本設(shè)計(jì)中用到了 3個(gè)按鍵,其中一個(gè)作為復(fù)位端,另外兩個(gè)作為擊球球拍, 球過(guò)中線后,按鍵一次能及時(shí)將這球擊打回去,按鍵兩次為高拋球返回去;兩 個(gè)球拍是用INTO、INTI外中斷實(shí)現(xiàn)的。 INT1中斷程序流程圖如下: (2)主程序流程圖:單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) (3)顯示流程圖: 7源程序代碼及注釋 單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) org OOOOh s jmp main 單片機(jī)復(fù)位后從OOOOH org 0003h INTO中斷入
6、口 s jmp zdl 轉(zhuǎn)中斷服務(wù)程序 org 0013h INT1中斷入口 s jmp zd2 轉(zhuǎn)中斷服務(wù)程序 org 0030h main :mov r2, #0 mov r3, #0 mov pO, #0 setb p3 2 ;INTO (外部中斷0輸入線) setb p33 ;INTO (外部中斷0輸入線) mov dptr, #tab mov a, r2 ;DPTR指向數(shù)據(jù)表的首地址 move a,a+dptr 查表 mov pl, a mov a, r3 數(shù)碼顯示 move a,a+dptr 查表 mov p2, a ;數(shù)碼顯示 mov tcon,#OAh ;寫(xiě)控制字TCON, I
7、NTO和INT1有請(qǐng)求 mov ie,#85h ;寫(xiě)控制字 IE (EA=1, EX1=1, EXO=1) sjmp $ 等待中斷信號(hào) zdl: epi ea ;關(guān)閉總中斷 acall dianliangl mov rd, #Offh ;調(diào)用從右向左點(diǎn)亮程序 DI: mov r5, #Offh pdl: jnb p33,fhl ;判斷是否有中斷請(qǐng)求,沒(méi)有則順序執(zhí)行 則跳轉(zhuǎn)至中斷程序結(jié)束 djnz r5, pdl djnz rd, DI acall koufenl ;延時(shí)時(shí)間到,調(diào)用扣分程序 fhl: setb ea ;開(kāi)總中斷有效 reti ;中斷返回 zd2: cpl ea ;關(guān)閉總中斷 a
8、call dianliang2 mov rd, #Offh ;調(diào)用從左向右點(diǎn)亮程序 D2: mov r5, #Offh pd2: jnb p32,fh2 ;判斷是否有中斷請(qǐng)求,沒(méi)有則順序執(zhí)行, 則跳轉(zhuǎn)至中斷程序結(jié)束 djnz r5,pd2 djnz rd, D2 acall koufen2 ;延時(shí)時(shí)間到,調(diào)用扣分程序 fh2: setb ea ;開(kāi)總中斷有效 reti ;中斷返回 單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) koufenl: inc r2 cjne r2,#1Oh, songl mov r2, #0 mov r3, #0 songl:mov dptr, #tab mov a, r2 move a
9、, a+dptr mov pO,a ret koufen2: inc r3 cjne r3,#1Oh, song2 mov r2, #0 mov r3, #0 song2:mov dptr, #tab mov a, r3 move a, a+dptr mov p2,a ret dianliangl:mov a,#01h si:mov pO, a acall DINGSHI ssl: rl a cjne a, #01h, si ret dianliang2:mov a,#80h s2: mov pO, a acall DINGSHI ss2: rr a cjne a, #80h, s2 ret
10、DINGSHI: mov tmod, #01h mov r4,#02h CZ:mov thO, #3ch mov tlO,#ObOh ;選手1扣分程序 ;扣分到F則重新開(kāi)局 ;數(shù)碼顯示 ;P0 口輸出 ;子程序返回 ;選手2扣分程序 ;P2丨I輸出 ;從右向左點(diǎn)亮的子函數(shù) ;調(diào)用延時(shí) ;從左向右點(diǎn)亮的子函數(shù) ;產(chǎn)生0.2秒的定時(shí)setb trO WSHM: jbe tfO,OK sjmp WSHM OK: djnz r4,CZ ret tab:db3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h,
11、 71h :顯示 0 F的數(shù)據(jù)表 end 8實(shí)驗(yàn)結(jié)果 單片機(jī)上電后,若不按按鍵則乒乓球點(diǎn)開(kāi)始在示波器上兩邊來(lái)回呈拋物線跳動(dòng),乒 乓球在一邊觸底線后,另一方得分,數(shù)碼管分?jǐn)?shù)加1,同時(shí)LED燈閃爍一下;乒乓球過(guò) 中線后,按鍵一次乒乓球即使反彈回去,數(shù)碼管分?jǐn)?shù)不變,同時(shí)LED燈不亮;連續(xù)按鍵 兩次,乒乓球呈高拋球軌跡反彈回去;當(dāng)一方分?jǐn)?shù)達(dá)到15分時(shí),數(shù)碼管歸零。 單片機(jī)-簡(jiǎn)易乒乓球游戲機(jī) 9課程設(shè)計(jì)體會(huì) 通過(guò)本次課程設(shè)計(jì),真正做到了用單片機(jī)開(kāi)發(fā)一件產(chǎn)品,雖然功能不是很多,但是 對(duì)如何運(yùn)用單片機(jī)開(kāi)發(fā)環(huán)境做到了一定的了解,也對(duì)單片機(jī)的部分功能比較熟悉,做到 了將單片機(jī)課上學(xué)到的知識(shí)應(yīng)用到實(shí)踐當(dāng)中。從開(kāi)始構(gòu)思-編寫(xiě)程序-仿真-焊接板子- 調(diào)試,整個(gè)過(guò)程自己熟悉了一下了,受益匪淺,自己成功做出一件具有一定功能的實(shí)物 也很有成就感,燃起了對(duì)單片機(jī)的興趣。