STM32課程設(shè)計(jì)貪吃蛇Word版_第1頁(yè)
STM32課程設(shè)計(jì)貪吃蛇Word版_第2頁(yè)
STM32課程設(shè)計(jì)貪吃蛇Word版_第3頁(yè)
STM32課程設(shè)計(jì)貪吃蛇Word版_第4頁(yè)
STM32課程設(shè)計(jì)貪吃蛇Word版_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、傳播優(yōu)秀Word版文檔 ,希望對(duì)您有幫助,可雙擊去除!STM32大作業(yè)報(bào)告 學(xué)生姓名: 學(xué) 號(hào): 所在院系: 光電信息與計(jì)算機(jī)工程學(xué)院 專業(yè)班級(jí): 授課教師: 完成時(shí)間: 2016年 前言隨著科學(xué)技術(shù)的不斷進(jìn)步,嵌入式近些年來逐漸興起,其領(lǐng)域比較新,發(fā)展非常迅速,由于它屬于新興領(lǐng)域,接觸的人并不是很多,但是嵌入式在各種電子設(shè)備上的應(yīng)用越來越越廣泛,并且各種電子設(shè)備也在朝著嵌入式微系統(tǒng),智能化的方向前進(jìn)。STM32系列是基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARM Cortex-M內(nèi)核。作為21世紀(jì)的人才,為了與社會(huì)實(shí)際需要相銜接,提高我們的學(xué)習(xí)興趣,利用STM32系列單片機(jī)進(jìn)

2、行了一次嵌入式系統(tǒng)設(shè)計(jì)。摘要在本次作業(yè)中采用STM32系列中的STM32F103RCT6微控制器芯片,采用ALIENTEK戰(zhàn)艦STM32開發(fā)板,使用MiniSTM32開發(fā)板上的 LCD 接口,來點(diǎn)亮 TFTLCD,實(shí)現(xiàn)觸摸屏功能。1、 課程設(shè)計(jì)任務(wù)要求 本次的課程設(shè)計(jì)目的是實(shí)現(xiàn)一個(gè)經(jīng)典的貪吃蛇游戲,整個(gè)游戲?qū)崿F(xiàn)功能分別為: 1、初始化程序。 2、隨機(jī)紅點(diǎn)、左轉(zhuǎn)、右轉(zhuǎn)、判斷邊框。2、 系統(tǒng)硬件設(shè)計(jì)硬件設(shè)計(jì)原理圖 根據(jù)此硬件設(shè)計(jì)圖再結(jié)合軟件設(shè)計(jì)就能做出此游戲。3、 系統(tǒng)軟件實(shí)現(xiàn) 此次的課程設(shè)計(jì)在于開發(fā)個(gè)貪吃蛇游戲,其流程圖如下圖所示。程序流程圖為方便介紹,此軟件實(shí)現(xiàn)只給出主要程序部分:1、本例程提

3、供了硬件平臺(tái)的初始化GPIO是常規(guī)輸入/輸出端口,STM32F103RCT6有PA、PB、PC、PD、PE共5個(gè)16位的GPIO。STM32的GPIO都可編程,具有很多復(fù)用功能。GPIO可以配置為很多總模式,這些模式有:輸入浮空、輸入上拉、輸入下拉、模擬輸入、開漏輸入、推挽輸出、推挽復(fù)用、開漏復(fù)用。通過對(duì)GPIO寄存器編程,可以設(shè)置每個(gè)端口的工作模式。24C02 EEPROM是開發(fā)板板載的 2Kbit(256 個(gè)字節(jié))EEPROM ,型號(hào)為:24C02,用于掉電數(shù)據(jù)保存。因?yàn)?STM32 內(nèi)部沒有 EEPROM,所開發(fā)板外擴(kuò)了24C02,用于存儲(chǔ)重要數(shù)據(jù),用來做IIC 實(shí)驗(yàn),該芯片直接掛在 S

4、TM32 的 IO 口上。IIC(InterIntegrated Circuit)總線是一種由 PHILIPS 公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。 它是由數(shù)據(jù)線 SDA 和時(shí)鐘 SCL 構(gòu)成的串行總線, 可發(fā)送和接收數(shù)據(jù)。在 CPU 與被控 IC 之間、IC 與 IC 之間進(jìn)行雙向傳送,高速 IIC 總線一般可達(dá) 400kbps 以上。IIC 總線在傳送數(shù)據(jù)過程中共有三種類型信號(hào), 它們分別是:開始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。開始信號(hào):SCL 為高電平時(shí),SDA 由高電平向低電平跳變,開始傳送數(shù)據(jù)。結(jié)束信號(hào):SCL 為高電平時(shí),SDA 由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。應(yīng)

5、答信號(hào): 接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后, 向發(fā)送數(shù)據(jù)的 IC 發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU 向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU 接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。/* 名 稱:AT24CXX_Init(void)* 功 能:初始化IIC接口*/ /初始化IIC接口void AT24CXX_Init(void)IIC_Init();void IIC_Init(void) GPIO_InitTypeDef GPIO_InitStructure;/RCC-APB2ENR|=

6、14;/先使能外設(shè)IO PORTC時(shí)鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; /推挽輸出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure); IIC_SCL=1;IIC_SDA=1;/* 名 稱:v

7、oid CMLCD_Init(void)* 功 能:初始化觸摸屏的硬件接口*/void CMLCD_Init(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);/使能PORTC時(shí)鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_3|GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /設(shè)置成推免輸出GPIO_InitStructure.GP

8、IO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure);/初始化GPIOC 0 3 13GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2|GPIO_Pin_1; /初始化GPIOC 2 1GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;/浮空輸入GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);TPEN=1; 2、貪吃蛇

9、功能控制SPI是串行外設(shè)端口,是一種同步串行外設(shè)端口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信、交換信息。STM32的SPI支持全雙工同步傳輸,可選擇以8或16位傳輸幀格式進(jìn)行傳輸,支持多種模式。USART為STM32的同步異步接收器。它提供了一種靈活的方法與使用異步串行數(shù)據(jù)格式的外部設(shè)備之間進(jìn)行全雙工數(shù)據(jù)交換。USART利用分?jǐn)?shù)波特率發(fā)生器提供寬范圍的波特率選擇。另外,它還允許多處理器通信。USART也可以使用DMA方式直接將接受的數(shù)據(jù)存儲(chǔ)到內(nèi)存或從內(nèi)存中批量發(fā)送數(shù)據(jù),也支持多種中斷方式。TFT-LCD 即薄膜晶體管液晶顯示器。其英文全稱為:Thin Film Transistor-L

10、iquid CrystalDisplay。TFT-LCD 與無源 TN-LCD、STN-LCD 的簡(jiǎn)單矩陣不同,它在液晶顯示屏的每一個(gè)象素上都設(shè)置有一個(gè)薄膜晶體管(TFT) ,可有效地克服非選通時(shí)的串?dāng)_,使顯示液晶屏的靜態(tài)特性與掃描線數(shù)無關(guān),因此大大提高了圖像質(zhì)量。TFT-LCD 也被叫做真彩液晶顯示器。ALIENTEK 提供的 2.8寸TFTLCD 模塊,其驅(qū)動(dòng)芯片有很多種類型,比如有:ILI9341/ILI9325/RM68042/RM68021/ILI9320/ILI9328/LGDP4531/LGDP4535/SPFD5408/SSD1289/1505/B505/C505/NT3531

11、0/NT35510 等。LED(DS0 和 DS1)。其電路在ALIENTEK MiniSTM32開發(fā)板上默認(rèn)是已經(jīng)連接好了的。DS0接PA8,DS1接PD2。/* 名 稱:int main(void) * 功 能:主函數(shù) */ #include led.h#include delay.h#include sys.h#include usart.h#include lcd.h#include tanchishe.h#include cmlcd.h#include timeit.h#include stdlib.h/畫一個(gè)大點(diǎn)(2*2的點(diǎn)) /x,y:坐標(biāo)/color:顏色void TP_Dra

12、w_Big_Point(u16 x,u16 y,u16 color) POINT_COLOR=color;LCD_DrawPoint(x,y);/中心點(diǎn) LCD_DrawPoint(x+1,y);LCD_DrawPoint(x,y+1);LCD_DrawPoint(x+1,y+1); int main(void) u8 sta,sta1;u16 rand_color;delay_init(); /延時(shí)函數(shù)初始化 uart_init(9600); /串口初始化為9600LED_Init(); /初始化與LED連接的硬件接口 LCD_Init();time_init();CMLCD_Init();

13、 / 觸摸屏初始化AT24CXX_Init(); /eeprom 初始化sta1=TP_Get_Adjdata();if(!sta1)sta=CMLCD_Adjust();if(sta)TP_Save_Adjdata(); /校準(zhǔn)成功就保存參數(shù)LCD_ShowString(40,40,100,16,16,SUCCESSFUL!);else LCD_ShowString(40,40,100,16,16,NO SUCCESSFUL!);TABCHISHE_Init();while(1)delay_ms(500); /產(chǎn)生隨機(jī)坐標(biāo)if(snake.eat_sta)snake.eat_sta=0;sn

14、ake.rand_x=8*(1+(int)(29.0*rand()/(RAND_MAX+1.0); snake.rand_y=8*(1+(int)(34.0*rand()/(RAND_MAX+1.0);rand_color=LCD_ReadPoint(snake.rand_x,snake.rand_y);while(rand_color=BLUE) /隨機(jī)點(diǎn)不能是蛇身上的點(diǎn)snake.rand_x=8*(1+(int)(29.0*rand()/(RAND_MAX+1.0); snake.rand_y=8*(1+(int)(34.0*rand()/(RAND_MAX+1.0);rand_colo

15、r=LCD_ReadPoint(snake.rand_x,snake.rand_y);LCD_Fill(snake.rand_x,snake.rand_y,snake.rand_x+snake.size,snake.rand_y+snake.size,RED);LED0=!LED0;TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); /關(guān)中斷 防止中斷服務(wù)函數(shù)對(duì) 顯示坐標(biāo)的影響snake.eat_sta=show(snake.d1);disappear(snake.d2,turn);TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE

16、); /開中斷/* 名 稱:void TABCHISHE_Init(void)* 功 能:貪吃蛇初始化*/void TABCHISHE_Init(void)Shuzu_Init(turn); / 轉(zhuǎn)向數(shù)組初始化LCD_Clear(WHITE); POINT_COLOR=RED;LCD_DrawLine(0,282, 240, 282);LCD_DrawLine(120,280, 120, 320);LCD_ShowString(20,290,72,12,12,left/down);LCD_ShowString(20,303,36,12,12,score:);LCD_ShowString(140

17、,290,64,12,12,right/up); / 以下為貪吃蛇程序初始化 LCD_Fill(120,160,136,168,BLUE); /一開始蛇長(zhǎng)度為2個(gè)SIZEsnake.eat_sta=0;snake.length=2;LCD_ShowxNum(56,303,snake.length,3,12,0x80);snake.max=MAX;snake.size=8;snake.d1=0;snake.d2=0;snake.x1=128;snake.x2=snake.x1+snake.size;snake.y1=160;snake.y2=snake.y1+snake.size;snake.X

18、1=112;snake.X2=snake.X1+snake.size;snake.Y1=160;snake.Y2=snake.Y1+snake.size;snake.rand_x=8*(1+(int)(29.0*rand()/(RAND_MAX+1.0); snake.rand_y=8*(1+(int)(34.0*rand()/(RAND_MAX+1.0);LCD_Fill(snake.rand_x,snake.rand_y,snake.rand_x+snake.size,snake.rand_y+snake.size,RED);/* 名 稱:void disappear(u8 d,u16 t

19、urnMAX3)* 功 能:貪吃蛇移動(dòng)尾部消失格子*/新消失的一格/參數(shù): 往左消失,往右消失 void disappear(u8 d,u16 turnMAX3)int i=0;if(d=0) /默認(rèn) 方向?yàn)閺淖蟮接襰nake.X1=snake.X1+snake.size;snake.X2=snake.X2+snake.size;LCD_Fill(snake.X1,snake.Y1,snake.X2,snake.Y2,WHITE); /新顯示的一格else if(d=1) /方向?yàn)橄碌缴蟬nake.Y1=snake.Y1-snake.size;snake.Y2=snake.Y2-snake.s

20、ize;LCD_Fill(snake.X1,snake.Y1,snake.X2,snake.Y2,WHITE); /新顯示的一格else if(d=2) /方向?yàn)橛业阶髎nake.X1=snake.X1-snake.size;snake.X2=snake.X2-snake.size;LCD_Fill(snake.X1,snake.Y1,snake.X2,snake.Y2,WHITE); /新顯示的一格else if(d=3) /方向?yàn)樯系较聅nake.Y1=snake.Y1+snake.size;snake.Y2=snake.Y2+snake.size;LCD_Fill(snake.X1,snake.Y1,snake.X2,snake.Y2,WHITE); /新顯示的一格for(i=0;i=0&cmlcdxy.X=280&cmlcdxy.YMA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論