久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9019|回復: 3
打印 上一主題 下一主題
收起左側

MSP430單片機TFT_LCD顯示太空大戰小游戲設計論文

[復制鏈接]
跳轉到指定樓層
樓主
太空大戰小游戲
—— 基于TFT_LCD顯示屏的MSP430單片機實驗


目錄

一、實驗硬件
1、概述
2、 應用模塊
A.  LCD模塊
B.  TM1638
二、 實驗程序
1、 程序實現效果
2、 程序封裝模塊
1、圖形產生與移動
2、我方戰機的控制
3、敵機與獎勵的產生及移動
4、擊落敵機與獲得獎勵
5、關卡升級
6、施放大招:
三、 感想與思考
附頁(實驗程序代碼)

一、實驗硬件1、概述
    本次課程設計是在MSP430單片機液晶屏字符顯示功能的基礎上,編程設計游戲。程序的設計基于《F6638實驗指導手冊》中,“TFT-LCD 實驗--字符顯示”的程序點亮TFT-LCD屏幕,編寫游戲程序,與IO控制結合,實現游戲的可視化和游戲操作。由于Code Composer Studio v5.5.0難以對該程序樣例實現編譯,采用的開發工具為Code Composer Studio v6.0。
MSP430系列單片機是由美國TI公司生產的新一代16位單片機,因以其集成密度高、運算速度快、外設接口豐富等優勢受到越來越多的產品開發人員的青睞,是當前使用最多的單片機之一。在很多具體應用中,甚至只利用一片MSP430單片機,就可以完成一個系統的全部功能。下面給出實驗中使用的MSP430F66單片機的封裝圖和功能框圖。



圖1-MSP430F6638封裝圖
圖2-MSP430F6638功能框圖
2、應用模塊A.  LCD模塊
本次編寫的程序所用的主要模塊為LCD模塊,在功能框圖中顯示為 LCD_B。硬件電路設計如下所示。其中 U21 (TPS75105DSKR)是 LCD 屏背光控制芯片,由 LCD_BL_EN 引腳控制使能端。

圖3-MSP430F6638LCD硬件設計電路




PIN NO.
FUNCTION DESCRIPTIONS SYMBOL(模塊引腳定義以及各個引腳的功能)
NO.
Symbol
Description
1, 2
GND
3, 4
VCC
電源(2.8-3.4V)
5
NC1
空腳
6
NC2
空腳
7
NC3
空腳
8
RESET
復位
9
A0
LCD寄存器選擇段
10
SDA
LCD數據傳輸線
11
SCK1
LCD CLK 時鐘線
12
LCD_CS
LCD片選
13
SCK
SD卡CLK時鐘線
14
MISO
SD卡主輸入,從輸出
15
MOSI
SD卡從輸入,主輸出
16
CS_SD
SD卡片選
17, 18
LED+
背光正極
19, 20
LED-
背光負極


    LCD的全稱是Liquid Crystal Display,即液晶顯示器,因功耗低而備受工程師青睞,大規模應用于電子設備中。而MSP430單片機中的TFT-LCD則是指薄膜晶體管,Thin-Film Transistor。薄膜晶體管液晶顯示器(TFT-LCD)具有重量輕、平板化、低功耗、無輻射、顯示品質優良等特點,其應用領域正在逐步擴大,已經從音像制品、筆記本電腦等顯示器發展到臺式計算機、工程工作站(EWS)用監視器。對液晶顯示器的要求也正在向高分辨率、高彩色化發展。

MSP430F6638所采用的TFT-LCD 液晶屏的工作參數如下:

X320 點 TFT 透射式點陣液晶顯示模塊
驅動duty:1/240 Duty
2.4“ (COG 式)
可視角度:12 時
ILI9328 LCD 驅動程序或同等能力
邏輯電壓:2.8V
數據接口:80的系統 8/9/16/18bit 總線接口
觸摸面板
白色背光

B.  TM1638
在我們所制作的游戲中有一部分用到了矩陣鍵盤的一個按鍵,矩陣鍵盤隸屬于TM1638電路,TM1638是帶鍵盤掃描接口的LED(發光二極管顯示器)驅動控制專用電路,內部集成有MCU 數字接口、數據鎖存器、LED 高壓驅動、鍵盤掃描等電路。其對于矩陣鍵盤的讀取如下圖所示:

圖4-TM1638鍵盤讀取電路

其中A-F分別對應KS1-KS6。一旦有按鍵按下,TM1638中相關的寄存器的值就會改變(按鍵按下時相應字節由0變1)。

2、實驗程序1、程序實現效果
在TFT-LCD屏上進行飛機大戰小游戲。規則如下:
  • 擊中敵機得一分,敵機觸及底線扣除一點生命值,生命值為零時游戲結束。
  • 隨機出現紅黃藍三種獎勵,紅色獎勵增加攻擊范圍,藍色獎勵增加移動速度,黃色獎勵增加一點生命值。
  • 隨得分增長游戲難度提升,逐步增加敵機出現頻率及移動速度,共15關。
  • 按“1”鍵可施放大招,消滅屏幕上所有敵機,冷卻30秒后可再次施放。

2、程序封裝模塊1、圖形產生與移動
    基于示例程序“SPI_LCD_TFT”中所含頭文件,利用其中各函數進行繪圖。在繪制各圖形時選取其上一點為相對參考點,然后用相對于它的坐標畫出整個圖形。需要移動圖形時通過參量“sp”控制其移動距離,移動參考點,并在新的位置畫出圖形,同時將原來位置圖形用背景色描一遍以擦除。在移動我方戰機時,程序為先擦除左右兩邊原來圖形,再顯示即時位置圖形,這樣可以防止擦除行為影響到新圖形。
    如繪制敵機的函數為:
void Drawenemy(x,y,c)
{
              LCD_TFT_FillRectangle(x,y-4,x+2,y-1,c);
              LCD_TFT_FillRectangle(x,y+1,x+2,y+4,c);
              LCD_TFT_FillRectangle(x+2,y-5,x+6,y+5,c);
              LCD_TFT_DrawLine(x+2,y-9,x+2,y+9,c);
              LCD_TFT_DrawLine(x+2,y-9,x+6,y-5,c);
              LCD_TFT_DrawLine(x+2,y+9,x+6,y+5,c);
              LCD_TFT_DrawLine(x+6,y-3,x+9,y,c);
              LCD_TFT_DrawLine(x+6,y+3,x+9,y,c);
}

2、我方戰機的控制
    參考按鍵消抖示例程序“msp430f6638_Key_debounce”,在按鍵時將戰機參考點分別向左或向右移動sp個單元。
    如向左移動主要語句為:
    if(Is_sw1_pressed()==1)                  // is key 1 pressed
        {                                                    // yes
                      s=s-sp;
        }
void movebird()
{
              Drawbird(s-sp,BLACK);
              LCD_TFT_DrawLine(205,s-sp,1,s-sp,BLACK);
              Drawbird(s+sp,BLACK);
              LCD_TFT_DrawLine(205,s+sp,1,s+sp,BLACK);
              Drawbird(s,YELLOW);
}

3、敵機與獎勵的產生及移動
    兩次利用隨機數函數rand()。對于某種顏色的敵機,第一次產生一個0到1000隨機數,將其與某數(sp0)比較以決定是否產生該顏色敵機,改變sp0值即可改變敵機出現頻率;第二次產生一個14到305的隨機數以決定敵機出現的位置參考點y坐標。獎勵的產生同樣如此。
    敵機和獎勵的移動速度可由兩個參量改變,即時間間隔sp1及移動距離sp2。
    如敵機向下移動的函數為:
  1. void moveenemy(i)
  2. {
  3.               if(enemy[i]==1)
  4.               {
  5.                             if(ttt[i] < sp1)
  6.                             {
  7.                                           ttt[i]++;
  8.                             }
  9.                             else
  10.                             {
  11.                                           t[i]=t[i]+sp2;
  12.                                           Drawenemy(t[i]-sp2,r[i],BLACK);
  13.                                           if(r[i]<500)
  14.                                           {
  15.                                                         Drawenemy(t[i],r[i],enemycolor[i]);
  16.                                           }
  17.                                           ttt[i]=1;
  18.                             }
  19.               }
  20. }
復制代碼

4、擊落敵機與獲得獎勵
    通過比較敵機與我方戰機的相對位置來判斷是否擊落,擊落后將及時位置圖形描為背景色,并將各參數重置,由數組enemy[7]來標志某顏色敵機是否存在于畫面,若不存在則允許產生。獎勵的獲得同上,其中加速效果通過改變sp達到,增加攻擊范圍效果通過addweapon()函數在畫面上呈現,同時通過改變在判斷擊落時所用的參量range來達到改變攻擊范圍的效果。詳見程序附頁。

5、關卡升級
    通過一系列參量數組以及判斷是否升級,然后通過增加sp0與sp2的值分別增加敵機出現頻率及敵機移動速度完成關卡升級。以下為關卡升級內容的主要函數,其中各個細節因關系到游戲難度,所以都是由我們多次測試所得到的。
  1. void levelup(i)
  2. {
  3.               if(level[i]==0)
  4.               {
  5.                             sp0=sp0+30;
  6.                             if(i==1||i==3||i==5||i==7||i==9||i==10||i==11||i==12||i==13||i==14)
  7.                             {
  8.                                           sp2=sp2+3;
  9.                                           buffspeed++;
  10.                             }
  11.                             if(i==12||i==13||i==14)
  12.                             {
  13.                                           sp2=sp2+2;
  14.                             }
  15.                             if(i==3||i==7||i==9||i==12||i==13||i==14)
  16.                             {
  17.                                           possibuff[2]=possibuff[2]+70;
  18.                             }
  19.                             level[i]=1;
  20.               }
  21. }
復制代碼


6、施放大招
    參考關于矩陣鍵盤的樣例程序“MatrixKeyboard_DigitalTube”,利用內置函數判斷“1”鍵是否按下,爾后通過循環語句執行函數kill(i)中部分指令來消滅所有敵機,同時通過drawdazhao()函數在畫面上呈現。爾后借用簡單的循環語句完成大招冷卻時間倒計時。
    詳見程序中dazhao()函數。

附頁(實驗程序代碼)

請下載附件

完整論文下載(word格式 可編輯):
http://www.zg4o1577.cn/bbs/dpj-90602-1.html



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:312905 發表于 2019-7-15 15:42 | 只看該作者
大佬流弊

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产香蕉 | 亚洲二区视频 | 国产精品免费在线 | 久久久久国产成人精品亚洲午夜 | 久久精品一级 | 欧美色性| 99日韩 | 成人福利网站 | 在线观看成人 | 一区二区三区视频在线观看 | 久久久国产一区二区三区四区小说 | 欧美黄在线观看 | 国产精品区一区二区三区 | 极品久久 | 99精品在线观看 | 老司机深夜福利网站 | 超碰在线免费公开 | 国产精品国色综合久久 | 日韩成人中文字幕 | 国产一区二区三区免费观看在线 | 欧美一区二区三区视频在线 | 日本一二三区在线观看 | 久久久精品综合 | 97热在线| 久久久久久久久久久爱 | av一级 | 成人免费在线观看 | www.日韩系列 | 日本人爽p大片免费看 | 欧美成人激情 | 久久精品国产免费高清 | 日韩视频在线观看中文字幕 | 色伊人久久| 成人免费日韩 | 精品欧美一区二区三区免费观看 | 国产午夜精品久久久久免费视高清 | 欧美一级毛片在线播放 | av福利网 | 国产精品99视频 | 成人免费网站 | 最新91在线 |