基于單片機(jī)的乒乓球游戲系統(tǒng)的設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的乒乓球游戲系統(tǒng)的設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的乒乓球游戲系統(tǒng)的設(shè)計(jì)_第3頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于單片機(jī)的乒乓球游戲系統(tǒng)的設(shè)計(jì)引言設(shè)計(jì)背景AT89C51AT89C51單片機(jī),LCD512話功能等。功能說(shuō)明AT89C5112864-12LCD32LCDLCD在運(yùn)動(dòng)。而第三個(gè)鍵則作為方向選擇鍵,可增加游戲的趣味性。(發(fā)球?qū)τ螒驅(qū)崿F(xiàn)方法做如下說(shuō)明:乒乓球移動(dòng)速度是可調(diào)的,通過(guò)撥盤(pán)開(kāi)關(guān)可實(shí)現(xiàn)改變乒乓球移動(dòng)速度;LCD停止運(yùn)動(dòng),LCD設(shè)計(jì)要求基本要求設(shè)計(jì)內(nèi)容LCD512.基本要求必須實(shí)現(xiàn)2人單打游戲,要求實(shí)現(xiàn)乒乓球的來(lái)回運(yùn)動(dòng),能顯示比分。提高要求4可開(kāi)關(guān)復(fù)位,有擊球,接球的聲音效果等。擴(kuò)展要求1,2機(jī)畫(huà)面。技術(shù)指標(biāo)50,37,25,12(20μs)查詢(xún)是否有擊球動(dòng)作。在規(guī)定的地點(diǎn)內(nèi)按鍵,則接球成功,然后乒乓球向?qū)Ψ竭\(yùn)動(dòng)。滅,LED每一局中,哪方的得球個(gè)數(shù)首先滿11滿三局后,系統(tǒng)將顯示整體局分比表示哪方獲得勝利。LED用喇叭模擬擊球聲音,發(fā)球聲音頻率為1kHZ,接球失誤提示聲音頻率為2kHZ。每局結(jié)束蜂鳴器報(bào)警頻率為1.5kHZ.3.硬件設(shè)計(jì)硬件電路框圖本次實(shí)習(xí)設(shè)計(jì)的乒乓球游戲機(jī)的硬件電路方面包括:單片機(jī)主電路(復(fù)位電路、振蕩電路、電源);LCD顯示接口電路;語(yǔ)音放大電路;按鍵設(shè)定電路。其結(jié)構(gòu)框圖如下:按鍵控制電路(模擬球拍)復(fù)位電路按鍵控制電路(模擬球拍)復(fù)位電路振蕩電路LCD顯示接口電路語(yǔ)音放大電路各部分電路圖1)51單片機(jī)最小系統(tǒng):復(fù)位電路和振蕩電路LCD語(yǔ)音放大電路元器件的選擇綜合設(shè)計(jì)元器件清單元件名稱(chēng)需要數(shù)量元件名稱(chēng)需要數(shù)量單片機(jī)STC511個(gè)電容4.7u1個(gè)晶振50MHz1個(gè)電容22u1個(gè)喇叭、麥克各1個(gè)電容220u1個(gè)LED2個(gè)電容0.001u1個(gè)開(kāi)關(guān)11個(gè)電阻1K2個(gè)電源接口1個(gè)電阻10K8個(gè)液晶顯示器1個(gè)電阻100K3個(gè)鎖存器74LS3731個(gè)電阻4702個(gè)與非門(mén)74LS001個(gè)電阻5101個(gè)電位器20K1個(gè)電位器20K1個(gè)二極管1個(gè)電容30P2個(gè)74LS001個(gè)電容0.1u4個(gè)工具清單名稱(chēng)名稱(chēng)鉗子鑷子平頭螺絲刀導(dǎo)線數(shù)量1111若干重要原件簡(jiǎn)介AT89C51CPURAMROM/計(jì)數(shù)器以及輸如輸出AT89C51518CMOS電源和晶振:Vcc——運(yùn)行和程序校驗(yàn)時(shí)加+5V。Vss——接地。X1——X2——反相放大器的輸出,輸入到內(nèi)部時(shí)鐘發(fā)生器。I/O:4,32I/O:P0——8位、漏極開(kāi)路的雙向I/O口。出指令字節(jié)(這時(shí)需加外部上拉電路。P0口(作為總線時(shí))能驅(qū)動(dòng)LSTTLP1——8位、準(zhǔn)雙向I/O口。在編程/P14負(fù)載。P2——8位、準(zhǔn)雙向I/O口。8P24LDTTLP3——8I/O中斷:

P31P3/4LSTTLP3.——RXD(串行輸入口P3.——RXD(串行輸出口P3.2——INT00,P3.3——INT21,定時(shí)器/計(jì)數(shù)器:P3.4——T0/0P3.5——T1/1數(shù)據(jù)存儲(chǔ)器選通:P3.6——WR低電平有效,輸出,片外存儲(chǔ)器寫(xiě)選通。P3.7——RD低電平有效,輸出,片外存儲(chǔ)器寫(xiě)選通。12864-121、液晶顯示模塊概述128×64-128192(16X16128(8X1664X256RA(GDRAMCPU2、模塊引腳說(shuō)明引腳名稱(chēng)方向說(shuō)明引腳名稱(chēng)方向說(shuō)明1VSS-GND(0V)11DB4I數(shù)據(jù)42VDD-SupplyVoltage12DB5I數(shù)據(jù)5ForLogic(+5v)3VO-(+5v)13DB6I數(shù)據(jù)64RS(CS)OH:Data14DB7I數(shù)據(jù)7L:InstructionCode5R/W(SID)OH:Read L:WriteH:ParallelMode15PSBOL:SerialMode6E(SCLK)OEnableSignal串口低電屏16NC-空腳ResetSignal7DB0I數(shù)據(jù)017/RSTO8DB1I數(shù)據(jù)118NC-低電平有效空腳9DB2I數(shù)據(jù)219LEDA-背光源正極(LED+5V)10DB3I數(shù)據(jù)320LEDK-背光源負(fù)極(LED-OV)3、具體指令介紹:、清除顯示CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLLH功能:清除顯示屏幕,把DDRAM位址計(jì)數(shù)器調(diào)整為“00H”、位址歸位CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLHX功能:把DDRAM“00H顯示DDRAM、位址歸位CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLHI/DS是由ZA0-A5Z起始地址可以是0-63Z、顯示狀態(tài)開(kāi)/關(guān)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHDCB功能:D=1;整體顯示ON C=1;游標(biāo)ON B=1;游標(biāo)位置ON、游標(biāo)或顯示移位控制CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLHS/CR/LXX的內(nèi)容

功能:設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位:這指令并不改變DDRAM、功能設(shè)定CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLHDLX0REXX功能:DL=1(必須設(shè)為1) RE=1;擴(kuò)充指令集動(dòng)作 RE=0:基指令集動(dòng)作CGRAMCODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHAC5AC4AC3AC2AC1AC0功能:設(shè)定CGRAM位址到位址計(jì)數(shù)器(AC)DDRAMCODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLHAC6AC5AC4AC3AC2AC1AC0功能:設(shè)定DDRAM位址到位址計(jì)數(shù)器(AC)、讀取忙碌狀態(tài)(BF)和位址CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLHBFAC6AC5AC4AC3AC2AC1AC0功能:讀取忙碌狀態(tài)(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出位址計(jì)數(shù)器(AC)的值RAMCODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HHLD7D6D5D4D3D2D1D0功能:寫(xiě)入資料到內(nèi)部的RAM(DDRAM/CGRAM/TRAM/GDRAM)RAMCODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0HHHD7D6D5D4D3D2D1D0功能:從內(nèi)部RAM讀取資料(DDRAM/CGRAM/TRAM/GDRAM)、待命模式(12H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLLH功能:進(jìn)入待命模式,執(zhí)行其他命令都可終止待命模式IRAM(13H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLHSR功能:SR=1;允許輸入卷動(dòng)位址 SR=0;允許輸入IRAM位址、反白選擇(14H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLHR1R0功能:選擇4行中的任一行作反白顯示,并可決定反白的與否、睡眠模式(015H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHSLXX功能:SL=1;脫離睡眠模式 SL=0;進(jìn)入睡眠模式、擴(kuò)充功能設(shè)定(016H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLHHX1REGL功能:RE=1;擴(kuò)充指令集動(dòng)作 RE=0;基本指令集動(dòng)作G=1;圖顯示ON G=0;繪圖顯示OFFIRAM(017H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHAC5AC4AC3AC2AC1AC0功能為垂直卷動(dòng)位址 寫(xiě)ICONRAM位址RAM(018H)CODE:RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLHAC6AC5AC4AC3AC2AC1AC0功能:設(shè)定GDRAM位址到位址計(jì)數(shù)器(AC)4、顯示步驟RAM(DDRAM)RAM64×2416字)的中文字型顯示,當(dāng)寫(xiě)入顯示資料RAM時(shí),可以分別顯示CGROM、與CGRAMST7920AHCGROMCGROMDDRAM0000H—0006H的編碼中將自動(dòng)的結(jié)合下一個(gè)位元組,組成兩個(gè)位元組的編碼達(dá)(A140—D75F,各種字型詳細(xì)編碼如下:8DDRAM02H—7FH顯示CGRAM16DDRAM0006H四種編碼。顯示中文字形:將16位元資料寫(xiě)入DDRAMK,范圍為A1A1H—F7FEH的編碼。RAM(GDRAM)RAM64×32256×64RAM8RAM,而地址計(jì)數(shù)器會(huì)自動(dòng)加一;在寫(xiě)入RAMRAM關(guān)閉繪圖顯示功能。先將水平的位元組坐標(biāo)(X)RAM再將垂直的坐標(biāo)(Y)RAMD15——D8RAMD7——D0RAMISD1420ISD140016位或32位處ISD的芯片將成為開(kāi)發(fā)工程師的不二選擇。ISD1420為美國(guó)ISD公司出品的優(yōu)質(zhì)單片語(yǔ)音錄放集成電路,由振蕩器、EEPROM總體電路圖4軟件設(shè)計(jì)軟件設(shè)計(jì)原理子程序的流程圖。主程序的功能是進(jìn)行初始化工作,并控制“乒乓球”游戲的開(kāi)始。模擬左拍的按鍵接P3.7

口,模擬右拍的按鍵接P3.5

口。游戲開(kāi)始時(shí),顯示的比分是零比零,1時(shí)常數(shù)寄存器及“乒乓球”移位計(jì)數(shù)器。其流程圖見(jiàn)下圖:軟件清單#include<reg51.h>#include<intrins.h>#include<string.h>#defineucharunsignedchar#defineuint unsignedint#defineClearDisplay0x01#defineEntryModeSet#defineDisplayOnCtrl#defineFunctionSetB0x30#defineFunctionSetE0x34#defineFuncDrawOn0x36sbitRS=P3^2;sbitRW=P3^3;sbitE=P3^4;sbitPLAYE=P3^1;sbitSpeed1=P2^0;sbitSpeed2=P2^1;sbitP1_Left=P2^5;sbitP1_Right=P2^7;sbitP1_Direction=P2^6;sbitP2_Left=P2^2;sbitP2_Right=P2^4;sbitP2_Direction=P2^3;charcodeScore[]="000102030405060708091011";charcodeRound[]="012";charcodeAllRound[]="0123charcodestr1[]="局1 分";charcodestr2[]="甲0 0乙";charcodestr3[]="比 分";charcodestr4[]="00 00";charcodeP1Win[]="甲獲勝!";charcodeP2Win[]="乙獲勝!";ucharDirection1=0x00;ucharDirection2=0x00;ucharRoundP1=0;ucharRoundP2=0;ucharScoreP1=0;ucharScoreP2=0;ucharCount_Round=1;ucharchoice=0x00;ucharw;unsignedcharcodeBMP1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x1F,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x3F,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x3F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x7F,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF9,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0x7F,0xFC,0x3F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF3,0xBF,0xF8,0x1F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF3,0x9F,0xF0,0x0F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF6,0xCF,0xE0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF7,0x8F,0xE0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF3,0x9F,0xDC,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF0,0x1F,0xD6,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xF8,0x7F,0xF6,0x0F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xDC,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xDC,0x3F,0xFF,0xFF,0xF8,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x3F,0x88,0x03,0xE0,0x7F,0xFF,0xFF,0xF8,0x00,0x00,0x7F,0xF0,0x00,0x03,0xF9,0x80,0x1F,0x00,0x00,0x7B,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xF8,0x00,0x0F,0xFE,0x60,0x1F,0x0E,0x00,0x3F,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFC,0x00,0x3F,0xFF,0x90,0x1F,0x8F,0x00,0x07,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFC,0x00,0x7F,0xFF,0xE8,0x1F,0xC3,0x80,0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFC,0x00,0xFF,0xFF,0xF4,0x1F,0xE0,0xE0,0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFC,0x00,0xFF,0xFF,0xFA,0x17,0xF8,0x20,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFC,0x01,0xFF,0xFF,0xFB,0x13,0xF8,0x00,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFE,0x01,0xFF,0xFF,0xFD,0x19,0xFE,0x00,0x00,0x07,0xFF,0xFF,0xF8,0x00,0x00,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,0x98,0xFF,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x7F,0xFC,0x03,0xFF,0xFF,0xFE,0x98,0x3F,0xC0,0x07,0xFF,0xFF,0xFF,0xEC,0x00,0x00,0x3F,0xFC,0x03,0xFF,0xFF,0xFF,0x58,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x1F,0xF8,0x03,0xFF,0xFF,0xFF,0xC8,0x03,0xFF,0xFF,0xFF,0xFF,0xFC,0xFC,0x00,0x00,0x00,0xC0,0x07,0xFF,0xFF,0xFF,0xC8,0x00,0x7F,0xFF,0xFF,0xFF,0xFC,0xFC,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFC,0x00,0x1F,0xFF,0xFF,0xFF,0xD3,0xFC,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0xFF,0xFF,0xFE,0x2F,0xF8,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x20,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x7F,0xF9,0xF8,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x1F,0x87,0xFC,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x3B,0xFF,0xFC,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x7F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x0F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0x00,0x07,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0x80,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x07,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x01,0xFF,0xFE,0x3F,0xFF,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0xFC,0x3F,0xFF,0xFF,0xFF,0xFF,0x9F,0xFD,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x1F,0xFF,0xFF,0xFF,0xFF,0xC3,0xFC,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x33,0xFF,0xFF,0xFF,0x78,0x7E,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0x80,0x1F,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xC0,0x07,0x07,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xE0,0x03,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x7F,0x00,};voidWriteData(unsignedchardispdata);voidClearPP(ucharx,uchary,ucharflag);voidWriteCmd(unsignedcharcmdcode);voidDisp_Img(unsignedcharcode*img){unsignedintj=0;unsignedcharx,y,i;for(i=0;i<9;i+=8)for(y=0;y<32;y++)for(x=0;x<8;x++){WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x+0x80+i);WriteData(img[j++]);WriteData(img[j++]);WriteData(FunctionSetB);}}#defineLCD_DATAP0voiddelay(uchart){uchari,j;for(i=0;i<t;i++)for(j=0;j<200;j++);}voidBallDelay(){uchari,j,w;uchark;if(Speed1==0&&Speed2==0)k=60;elseif(Speed1==0&&Speed2==1)k=40;elseif(Speed1==1&&Speed2==0)k=20;elseif(Speed1==1&&Speed2==1)k=10;for(i=0;i<k;i++)for(w=0;w<100;w++)for(j=0;j<10;j++);}bitCheck_Busy(){bitbusy;RS=0;RW=1;E=1;_nop_();LCD_DATA=0xFF;busy=(bit)(LCD_DATA&0x80);E=0;returnbusy;}voidwait(){while(Check_Busy());}voidWriteData(unsignedchardispdata){wait();RS=1;RW=0;E=0;_nop_();_nop_();LCD_DATA=dispdata;E=1;_nop_();_nop_();E=0;}voidWriteCmd(unsignedcharcmdcode){wait();RS=0;RW=0;E=0;_nop_();_nop_();LCD_DATA=cmdcode;E=1;_nop_();_nop_();E=0;}voidLcd_Reset(){WriteCmd(ClearDisplay);delay(10);WriteCmd(FunctionSetB);delay(10);WriteCmd(DisplayOnCtrl);delay(10);WriteCmd(ClearDisplay);delay(10);WriteCmd(EntryModeSet);}voidWriteStr(unsignedcharcode*s){while(*s>0){WriteData(*s);s++;}}voidName_Disp(){WriteCmd(0x80);WriteStr("****小組成員WriteCmd(0x90);WriteStr("XX WriteCmd(0x88);WriteStr("XX WriteCmd(0x98);WriteStr("指導(dǎo)教師:XXX");}voidPrintStr(ucharadress_x,ucharrow,charstr[]){switch(row){case1:adress_x|=0x80;break;case2:adress_x|=0x90;break;case3:adress_x|=0x88;break;case4:adress_x|=0x98;break;default:break;}WriteCmd(FunctionSetB);WriteCmd(adress_x);while(*str!='\0'){WriteData(*str);str++;}}voidPrintChar(ucharadress_x,ucharrow,charstr[],ucharn,uchark){switch(row){case1:adress_x|=0x80;break;case2:adress_x|=0x90;break;case3:adress_x|=0x88;break;case4:adress_x|=0x98;break;default:break;}WriteCmd(FunctionSetB);WriteCmd(adress_x);if(k==0)WriteData(*(str+n));else{WriteData(*(str+2*n));WriteData(*(str+2*n+1));}}voidHalf_Screen(){unsignedcharx,y;for(y=0;y<0x20;y++)for(x=0;x<8;x++){WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x+0x80);WriteData(0x00);WriteData(0x00);WriteCmd(FunctionSetB);}for(y=0;y<0x20;y++){WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(0x83);WriteData(0x00);WriteData(0x01);WriteCmd(FunctionSetB);}}voidClrscreen(){WriteCmd(0x01);delay(100);}voidStartScreen(){P2=0x00;PLAYE=1;PLAYE=0;Clrscreen();Name_Disp();for(w=0;w<200;w++)delay(20);Clrscreen();Disp_Img(BMP1);for(w=0;w<200;w++)delay(20);PrintStr(0,1,str1);PrintStr(0,2,str2);PrintStr(0,3,str3);PrintStr(0,4,str4);Half_Screen();}voidClearPP(ucharx,uchary,ucharflag){WriteCmd(FunctionSetE);WriteCmd(y+0x80);WriteCmd(x);WriteData(0x00);WriteData(0x00);WriteCmd(FuncDrawOn);WriteCmd(FunctionSetB);if(flag==0)y--;elsey++;WriteCmd(FunctionSetE);WriteCmd(y+0x80);WriteCmd(x);WriteData(0x00);WriteData(0x00);WriteCmd(FuncDrawOn);WriteCmd(FunctionSetB);}ucharToRightDown(ucharx,uchary,ucharflag){ucharn,y1,i,count=0;uchardisp1=0xc0;for(i=0;i<2;i++){for(n=0;n<14;n++){if(n==7){y++;disp1=0xc0;ClearPP(x,y1,1);}if(n!=0&&n!=7){WriteCmd(FuncDrawOn);WriteCmd(y1+0x80);WriteCmd(x);WriteData(0x00);WriteData(0x00);WriteCmd(FunctionSetB);}WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(disp1);WriteData(0x00);}else{WriteData(0x00);WriteData(disp1);}WriteCmd(FunctionSetB);y1=y;y++;WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(disp1);WriteData(0x00);}else{WriteData(0x00);WriteData(disp1);}WriteCmd(FunctionSetB);disp1>>=1;count++;BallDelay();if(flag==1){P2=0xFF;if(count>22&&P2_Right==1) {ClearPP(x,y1,1);return1;}if(count<=22&&P2_Right==1){ClearPP(x,y1,1);return0;}}}ClearPP(x,y1,1);disp1=0xC0;x++;y++;}return0;}ucharToLeftUp(ucharx,uchary,ucharflag){uchardisp2=0x03;ucharn,y1,i,count=0;for(i=0;i<2;i++){for(n=0;n<14;n++){if(n==7){y--;disp2=0x03;ClearPP(x,y1,0);}if(n!=0&&n!=7){WriteCmd(FuncDrawOn);WriteCmd(y1+0x80);WriteCmd(x);WriteData(0x00);WriteData(0x00);WriteCmd(FunctionSetB);}WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(0x00);WriteData(disp2);}else{WriteData(disp2);WriteData(0x00);}WriteCmd(FunctionSetB);y1=y;y--;WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(0x00);WriteData(disp2);}else{WriteData(disp2);WriteData(0x00);}WriteCmd(FunctionSetB);disp2<<=1;count++;if(flag==1){P2=0xFF;if(count>22&&P1_Right==1){ClearPP(x,y1,0);return1;}if(count<=22&&P1_Right==1){ClearPP(x,y1,0);returnBallDelay();}ClearPP(x,y1,0);disp2=0x03;x--;y--;}return0;}ucharToLeftDown(ucharx,uchary,ucharflag){uchardisp2=0x03;ucharn,y1,i,count=0;for(i=0;i<2;i++){for(n=0;n<14;n++){if(n==7){y++;disp2=0x03;ClearPP(x,y1,1);}if(n!=0&&n!=7){WriteCmd(FuncDrawOn);WriteCmd(y1+0x80);WriteCmd(x);WriteData(0x00);WriteData(0x00);WriteCmd(FunctionSetB);}WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(0x00);WriteData(disp2);}else{WriteData(disp2);WriteData(0x00);}WriteCmd(FunctionSetB);y1=y;y++;WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(0x00);WriteData(disp2);}else{WriteData(disp2);WriteData(0x00);}WriteCmd(FunctionSetB);disp2<<=1;count++;if(flag==1){P2=0xFF;if(count>22&&P1_Left==1){ClearPP(x,y1,0);return1;}if(count<=22&&P1_Left==1){ClearPP(x,y1,0);returnBallDelay();}ClearPP(x,y1,1);disp2=0x03;x--;y++;}return0;}ucharToRightUp(ucharx,uchary,ucharflag){uchardisp1=0xc0;ucharn,y1,i,count=0;for(i=0;i<2;i++){for(n=0;n<14;n++){if(n==7){y--;disp1=0xc0;ClearPP(x,y1,0);}if(n!=0&&n!=7){WriteCmd(FuncDrawOn);WriteCmd(y1+0x80);WriteCmd(x);WriteData(0x00);WriteData(0x00);WriteCmd(FunctionSetB);}WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(disp1);WriteData(0x00);}else{WriteData(0x00);WriteData(disp1);}WriteCmd(FunctionSetB);y1=y;y--;WriteCmd(FuncDrawOn);WriteCmd(y+0x80);WriteCmd(x);if(n<7){WriteData(disp1);WriteData(0x00);}else{WriteData(0x00);WriteData(disp1);}WriteCmd(FunctionSetB);disp1>>=1;count++;if(flag==1){P2=0xFF;if(count>22&&P2_Left==1){ClearPP(x,y1,0);return1;}if(count<=22&&P2_Left==1){ClearPP(x,y1,0);return0;}}BallDelay();}ClearPP(x,y1,0);disp1=0xc0;x++;y--;}return0;}voidTwoPlayers(){bitSuccess;while(1){Direction1=0x00;Direction2=0x00;P1=0xFF;if(P1_Right==1){ToRightDown(0x84,0,0);if(Direction1==0xFF)Success=ToRightUp(0x86,31,1);elseSuccess=ToRightDown(0x8E,0,1);if(Success!=1){P2=0x70;PLAYE=1;PLAYE=0;ScoreP1++;PrintChar(0,4,Score,ScoreP1,1);//修改P1的比分?jǐn)?shù)for(w=0;w<10;w++)delay(10);}}if(P2_Right==1){ToLeftUp(0x8F,31,0);if(Direction2==0xFF)Success=ToLeftDown(0x8D,0,1);elseSuccess=ToLeftUp(0x85,31,1);if(Success!=1){P2=0x80;PLAYE=1;PLAYE=0;ScoreP2++;PrintChar(3,4,Score,ScoreP2,1);for(w=0;w<10;w++)delay(10);}}if(P2_Left==1){ToLeftDown(0x87,0,0);if(Direction2==0xFF)Success=ToLeftUp(0x85,31,1);elseSuccess=ToLeftDown(0x8D,0,1);if(Success!=1){P2=0x80;PLAYE=1;PLAYE=0;ScoreP2++;PrintChar(3,4,Score,ScoreP2,1);for(w=0;w<10;w++)de

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論