freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的貪吃蛇游戲-資料下載頁(yè)

2024-11-07 22:14本頁(yè)面

【導(dǎo)讀】入工作學(xué)習(xí)做好準(zhǔn)備。設(shè)計(jì)加入了游戲暫停,中途退出,地圖選擇,背景提示音效等功能。為節(jié)省存儲(chǔ)空間,巧便攜的游戲機(jī)系統(tǒng)。51系列單片機(jī)技術(shù)成熟,功能強(qiáng)大,應(yīng)用廣泛。軟件采用C語(yǔ)言編程,方便靈活,大大加快了軟件開(kāi)發(fā)速度,縮短了開(kāi)。發(fā)周期,并且便于移植。為提高開(kāi)發(fā)效率和硬件穩(wěn)定性,采用了功能強(qiáng)大的硬件仿真軟。CPU內(nèi)負(fù)責(zé)執(zhí)行數(shù)學(xué)運(yùn)算、邏輯運(yùn)算(例如與、通常用來(lái)描述串行端口的通信速率。即每秒傳輸?shù)奈粩?shù)。其主要功能是將指令譯碼、確定需要的操作數(shù)和要執(zhí)行的操作。算、邏輯運(yùn)算和移位操作將在ALU中執(zhí)行。

  

【正文】 器選擇。 RS=0 時(shí),選擇指令寄存器; RS=1 時(shí),選擇數(shù)據(jù)寄存器 7 腳 R/W:讀寫(xiě)信號(hào)線。 R/W=1 時(shí),讀操作: R/W=0 時(shí),寫(xiě)操作 8 腳 E:顯示板控制使能端 9~ 16 腳 DB0DB7:雙向三念 I/ O 線 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 14 頁(yè),共 31 頁(yè) 17 腳 RST:復(fù)位端,低電平有效 18 腳 Vout: 對(duì)比度調(diào)節(jié)供電 硬件電路圖如下: 圖 LCD12864 硬件連接圖 LCD12864 管腳圖如下: 圖 LCD12864 管腳圖 LCDl2864 并行方式時(shí), 數(shù)據(jù)線 DB0~ DB7 用來(lái)傳送數(shù)據(jù)和命令。 CSI 和常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 15 頁(yè),共 31 頁(yè) CS2 為液晶顯示器的左右半屏的選擇端口。液晶的亮度可以使用改變 VO 的輸入電壓來(lái)改變。 根據(jù)上述管腳功能介紹,硬件管腳相關(guān)定義如下: 定義單片機(jī)與 12864 的接口 , 數(shù)據(jù)接口為 p0 口 sbit lcd_en=P3^4。 sbit lcd_di=P3^5。 sbit lcd_rw=P3^6。 sbit cs1=P3^3。 sbit cs2=P3^7。 點(diǎn)陣顯示原理 LCDl2864 顯示的點(diǎn)陣方式是 128x64。橫向 O 一 127 共 128 個(gè)點(diǎn)陣,分為左右 兩屏。 各占 063 共 64 個(gè)點(diǎn)陣;縱向 063 共 64 個(gè)點(diǎn)陣,每 8 個(gè)縱向點(diǎn)陣 (8 個(gè)點(diǎn)陣可以看成 8 位. 8 位為 1 字節(jié) )構(gòu)成一頁(yè),將屏幕分成 8 頁(yè),并按照縱向取模,字節(jié)倒序的方式顯示一字節(jié)內(nèi)容。由于將 4x4 點(diǎn)陣定義為單位點(diǎn)陣的大小,并定義單位點(diǎn)陣為豆子的大小,因此將屏幕按 4x4 比例從 128x64 縮小為 32x16(即將4x4 點(diǎn)陣看成 LCDl2864 上的一個(gè)最小點(diǎn)陣 )。 LCD 示驅(qū)動(dòng)原理 從電子學(xué)角度簡(jiǎn)述液晶顯示器件的顯示原理為 [3]:在外加電場(chǎng)的作用下具有偶極矩的液晶棒狀分子在排列狀態(tài)上發(fā)生變化,使得通過(guò)液晶 顯示器件的光被調(diào)制,從而呈現(xiàn)明與暗或透過(guò)與不透過(guò)的顯示效果。液晶顯示器件中的每個(gè)顯示像素都可以單獨(dú)被電場(chǎng)控制,不同的顯示像素按照驅(qū)動(dòng)信號(hào)的 “指揮 ”在顯示屏上合成各種字符,數(shù)字及圖形。液晶顯示驅(qū)動(dòng)功能就是建立這種電場(chǎng)。 液晶的顯示效果是由于在顯示像素上施加了電場(chǎng)的緣故,而這個(gè)電場(chǎng)則由顯示像素前后兩電極上的電位信號(hào)差所產(chǎn)生。在顯示像素上建立直流電池是非常容易的事,但直流電場(chǎng)將導(dǎo)致液晶材料的化學(xué)反應(yīng)和電極老化,從而迅速降低液晶材料的壽命,因此必須建立交流驅(qū)動(dòng)電場(chǎng),并要求在這個(gè)交流電場(chǎng)中的直流分量越小越好,通常要求 直流分量小于 50mV。由此要求液晶顯示驅(qū)動(dòng)器的驅(qū)動(dòng)輸出必須是交流驅(qū)動(dòng)?,F(xiàn)在液晶顯示驅(qū)動(dòng)器是全數(shù)字化集成電路,所以這種交流驅(qū)動(dòng)是以脈沖電壓形式產(chǎn)生的。 液晶顯示像素上交流電場(chǎng)的強(qiáng)弱用交流電場(chǎng)的有效值表示,當(dāng)有效值大于液晶的 ICJ 值電壓時(shí),像素產(chǎn)生電光效應(yīng),呈顯示狀態(tài) 。當(dāng)有效值在閥值電壓附近時(shí),液晶將呈現(xiàn)較弱的電光效應(yīng),此態(tài)將會(huì)影響液晶顯示器件的顯示對(duì)比度。因此液晶顯示驅(qū)動(dòng)器要能夠控制驅(qū)動(dòng)輸出的電壓幅值,以實(shí)現(xiàn)對(duì)顯示對(duì)比度的控制。液晶顯示驅(qū)動(dòng)器通過(guò)對(duì)其輸出到液晶顯示器件電極上的電位信號(hào)進(jìn)行相位、峰值、頻率等參的 調(diào)制來(lái)建立交流驅(qū)動(dòng)電場(chǎng),以實(shí)現(xiàn)液晶顯示器件的顯示效果。液晶顯示的驅(qū)動(dòng)方式有許多,常用于液晶顯示器件上的驅(qū)動(dòng)方法有靜態(tài)驅(qū)動(dòng)和動(dòng)態(tài)驅(qū)動(dòng)兩種 ,在這里就不多介紹了 。 本系統(tǒng)用的是靜態(tài)驅(qū)動(dòng), 基本思想 是 在相對(duì)應(yīng)的一對(duì)電極間連續(xù)外加電場(chǎng)或常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 16 頁(yè),共 31 頁(yè) 不外加電場(chǎng)。如圖所示: 圖 驅(qū)動(dòng)原理圖 驅(qū)動(dòng)波形:根據(jù)此電信號(hào),筆段波形不是與公用波形同相就是反相。同相時(shí)液晶上無(wú)電場(chǎng), LCD 處于非選通狀態(tài)。反相時(shí),液晶上施加了一矩形波。當(dāng)矩形波的電壓比液晶閾值高很多時(shí), LCD 處于選通狀態(tài)。 圖 靜態(tài)波形 圖 設(shè)計(jì)圖顯示模塊圖如下: 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 17 頁(yè),共 31 頁(yè) 圖 LCD 結(jié)果圖 5 系統(tǒng)軟件設(shè)計(jì) 主程序設(shè)計(jì) 如圖所示,程序設(shè)計(jì)的主程序即 main 函數(shù)很簡(jiǎn)單,主要完成初始化工作,主要完成對(duì) LCD 屏幕,貪吃蛇結(jié)構(gòu)的初始化,然后不斷運(yùn)行貪吃蛇游戲程序。下面逐一分析每一個(gè)子程序的設(shè)計(jì)。 圖 主程序流程圖 具體代碼實(shí)現(xiàn)如下: void main() { present_menu_num=0。 //對(duì)菜單值進(jìn)行初始化 cs_nd=1。 tcs_dt=1。 initial_lcd()。 //對(duì) LCD 進(jìn)行初始化 clear_lcd()。 //對(duì) LCD 進(jìn)行清屏 huihui(present_menu_num) 。 //返回到主菜單 while(1) { 開(kāi)始 LCD 屏幕初始化 貪吃蛇設(shè)計(jì)初始化 貪吃蛇運(yùn)行子程序 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 18 頁(yè),共 31 頁(yè) key_down()。 //利用無(wú)限循環(huán)對(duì)按鍵進(jìn)行反復(fù)查詢 } 按鍵模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 該模塊包括兩部分:按鍵檢測(cè)和按鍵處理 [10]。 按鍵檢測(cè)模塊 按鍵檢測(cè)是模塊是用的查詢的方式來(lái)實(shí)現(xiàn)的, 6 個(gè)按鍵對(duì)應(yīng) 6 個(gè)引腳,先對(duì)引腳進(jìn)行初始化,設(shè)置 P2 口的電平為低電平,其他的為高電平 [7]。模塊流程圖如下所示: 開(kāi) 始讀 取 鍵 值有 鍵 否 ?延 時(shí)調(diào) 用 顯 示 子 程 序延 時(shí)讀 取 按 鍵 狀 態(tài)確 實(shí) 有 鍵 ?判 斷 是 哪 個(gè) 按 鍵 作 用按 鍵 值 暫 存退 出NYY 圖 按鍵檢測(cè)流程圖 具體代碼實(shí)現(xiàn): /********************************************************************** * 名稱 : Keyboard() * 功能 : 按鍵檢測(cè)函數(shù) 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 19 頁(yè),共 31 頁(yè) * 說(shuō)明 : 反復(fù)的進(jìn)行查找 ***********************************************************************/ void key_down() { unsigned char h。 if((P2amp。0x7f)!=0x7f) { delay_ms(10)。 if ((P2amp。0x7f)!=0x7f) { h=P2amp。0x7f。 switch(h) { ……………………………………… .. 具體見(jiàn)程序代碼 ……………………………………… ... } while( (P2amp。0x7f)!=0x7f )。 //等待松手,如果按下去是一直按著的,沒(méi)松手的話就一直循環(huán),如果松了手的話,就可以跳出 while 語(yǔ)句了,回到最后的 return 語(yǔ)句,返回 num 的值,接著數(shù)碼管執(zhí)行顯示 num的值 P2=0xff。 delay_ms(10)。 } 按鍵處理模塊 按鍵處理模塊,主要實(shí)現(xiàn)對(duì)按鍵的處理,游戲有六個(gè)按鍵,分別是“方向上鍵”,“方向下鍵”,“方向左鍵”,“方向右鍵”,“暫停鍵”,“確定鍵 (開(kāi)始/暫停鍵 )”,在游戲的不同階段,按鍵有不同的功能,比如方向 鍵,在游戲過(guò)程中,起到控制蛇運(yùn)動(dòng)方向的作用,而在游戲開(kāi)始前,選擇地圖的時(shí)候,它又用來(lái)選擇地圖,所以要根據(jù)游戲狀態(tài)的不同,對(duì)按鍵做不同的處理。對(duì)應(yīng)七個(gè)函數(shù),分別是游戲開(kāi)始狀態(tài),游戲選擇返回狀態(tài),游戲等待開(kāi)始狀態(tài),游戲中狀態(tài),游戲中暫停狀態(tài),游戲通關(guān)狀態(tài),游戲結(jié)束狀態(tài) [15]。 游戲的開(kāi)始狀態(tài),點(diǎn)擊進(jìn)入主菜單畫(huà)面,選擇其中的開(kāi)始選項(xiàng) 選擇地圖狀態(tài),點(diǎn)擊進(jìn)入主菜單畫(huà)面,選擇其中的地圖選項(xiàng),再選擇返回點(diǎn)擊確定鍵。 代碼實(shí)現(xiàn)如下: 首先是對(duì)函數(shù)原型聲明 : void tcs_game() void wei_you() //向右 void wei_zuo() //向左 void wei_shang() //向上 void wei_xia() //向下 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 20 頁(yè),共 31 頁(yè) 另外定義定時(shí)器一 16 位定時(shí)器模式 10ms 中斷一次 用來(lái)掃描鍵盤(pán) 。 void timer1_initial() { EA=1。 TMOD= (0x0f amp。 TMOD) | 0x10 。 //定時(shí)器一 16位定時(shí)器模式 10ms中斷一次 用來(lái)掃描鍵盤(pán) TH1=0xDC。//10ms 中斷一次 TL1=0x00。 TR1=1。 } l2864顯示模塊 將游戲界面劃分成游戲區(qū)與信息區(qū),其中游戲區(qū)為 25x16(其中去掉上下邊框,游戲區(qū)的實(shí)際范圍是 25x14),信息區(qū)為 7x16。本模塊提供了 LCDl2864 的初始化,顯示游戲界面的函數(shù),顯示選框的函數(shù)、顯示游戲狀態(tài)的函數(shù) (游戲運(yùn)行或暫停 )和顯示圖形的函數(shù)。具體功能如下: (1) 對(duì) LCDl2864 的初始化 (2) 在 LCDl2864 上顯示選框 (3) 在 LCDl2864 上顯示各種界面 (4) 在 LCD12864 上顯示各種地圖 (5) 在 LCD12864 上 顯示漢字 (6) 在 LCD12864 上顯示圖形 LCD12864 軟件功能框圖: 顯 示 菜 單初始化模塊開(kāi)顯示器模塊清屏模塊寫(xiě)顯示器數(shù)據(jù)發(fā)顯示器狀態(tài)關(guān)顯示器模塊讀顯示器狀態(tài) 圖 功能框圖 LCD12864 子程序流程圖如下所示: 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 21 頁(yè),共 31 頁(yè) 開(kāi) 始初 始 化 L C D 接 口 函 數(shù)設(shè) 置 中 斷設(shè) 置 開(kāi) 機(jī) 畫(huà) 面畫(huà) 蛇開(kāi) 定 時(shí) 器游 戲 是 否 結(jié) 束顯 示 游 戲 結(jié) 束 畫(huà) 面結(jié) 束游 戲Y E SN O 圖 LCD12864 主流程圖 常州大學(xué)本科生畢業(yè)設(shè)計(jì)(論文) 第 22 頁(yè),共 31 頁(yè) 函數(shù)定義如下: //12864 基本操作 選擇屏幕用 cs1 cs2 void initial_lcd()。//初始化 12864 void clear_lcd()。//清屏 12864 void write_lcd_dat(unsigned char dat)。//向 12864 寫(xiě)一個(gè)字節(jié)的數(shù)據(jù) void write_lcd_(unsigned char )。//向 12864 發(fā)送一個(gè)字節(jié)的命令 unsigned char check_lcd_busy()。 //測(cè)忙 void set_lcd_xy(unsigned char x,unsigned char y)。//設(shè)置液晶的坐標(biāo) unsigned char read_lcd_dat()。//向液晶讀一個(gè)字 void draw_lcd_point(unsigned char x,unsigned char y,unsigned char dat)。//畫(huà)點(diǎn) void write_lcd_shuzi(unsigned char x,unsigned char y,unsigned char code *dat)。//寫(xiě)數(shù)字 void write_lcd_hanzi(unsigned char x,unsigned char y,unsigned char code *dat)。//寫(xiě)漢字 void draw_lcd_picture(unsigned char code *dat)。//畫(huà)圖 畫(huà) 128*64 的全圖 void key_down()。 void shadow(unsigned char x)。 void game_over()。 蛇運(yùn)動(dòng)控制模塊詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 本模塊主要進(jìn)行蛇運(yùn)動(dòng)的控制,觸發(fā)各種事件的響應(yīng)。主要開(kāi)發(fā)內(nèi)容包括蛇的方向、蛇的速度、蛇的位置的控制,吃食物、撞邊界、判斷并調(diào)用其它模塊進(jìn)行相應(yīng)操作。根據(jù)不同的等級(jí)以及難度級(jí),使貪吃蛇以不同的速度前進(jìn)。具體功能如下: (1) 貪吃蛇按一定方向移動(dòng) (2) 貪吃蛇根據(jù)按鍵改變方向 (3) 貪吃蛇判斷吃食物 (4) 貪吃蛇判斷撞邊界 相關(guān)變量 和函數(shù)的 定義 //對(duì)于蛇的結(jié)構(gòu)體定義 struct she { unsigned char x,y,value。 unsigned char direction。 }。 struct she tou,wei,food。 //蛇的頭尾節(jié)點(diǎn) 和食物
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1