嵌入式系統(tǒng)試驗報告_第1頁
嵌入式系統(tǒng)試驗報告_第2頁
嵌入式系統(tǒng)試驗報告_第3頁
嵌入式系統(tǒng)試驗報告_第4頁
嵌入式系統(tǒng)試驗報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本文格式為Word版,下載可任意編輯——嵌入式系統(tǒng)試驗報告

嵌入式系統(tǒng)

姓名:學號:班級:計算機科學與技術非師范實驗報告

努爾買買提·吐孫

12600123121班

1

試驗一LCD控制

一、試驗目的

1、初步把握液晶顯示屏的使用及其電路設計方法。2、把握S3C44B0X處理器的LCD控制器的使用。

3、通過試驗把握液晶顯示文本和圖形的方法以及程序設計方法。二、試驗內(nèi)容

學習LCD顯示器的基本原理,理解其驅(qū)動的控制方法。把握S3C44B0X處理器的基本原理和方法,并編程實現(xiàn):1、畫出多個矩形框2、顯示ASCII字符3、顯示漢字字符三、試驗流程圖

終止2

開始初始化LCD12864畫坐標函數(shù)TLC2543讀數(shù)據(jù)子函數(shù)LCD1602的更新顯示延時子函數(shù)確定每個電壓值對應的坐標點亮確定的值清屏四、試驗核心代碼

#include\#include\#include\#include\

#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihostingexternU32LCDBuffer[240][320];intmain(void){

inti,j,k;U32jcolor;ARMTargetInit();//開發(fā)版初始化

LCD_Init();

//LCD初始化

for(k=10;k9?否是發(fā)送十位數(shù)只顯示個位顯示十、個位延時開啟zlg7289發(fā)送個位數(shù)關閉zlg7289

{

U32key;

ARMTargetInit();//開發(fā)版初始化Uart_Printf(\

Zlg7289_Reset();//zlg7289復位ARMTargetInit();//開發(fā)版初始化

LCD_Init();

LCD_ChangeMode(DspTxtMode);//轉換LCD顯示模式為文本顯示模式LCD_Cls();//文本模式下清屏命令while(1){

key=GetKey();//得到按鍵值Delay(7000);switch(key){

case(0):

LCD_printf(\Uart_Printf(\break;case(1):

LCD_printf(\Uart_Printf(\break;case(2):

LCD_printf(\Uart_Printf(\break;case(3):

6

LCD_printf(\Uart_Printf(\case(4):

LCD_printf(\Uart_Printf(\case(5):

LCD_printf(\Uart_Printf(\case(6):

LCD_printf(\Uart_Printf(\case(7):

LCD_printf(\Uart_Printf(\case(8):

LCD_printf(\Uart_Printf(\case(9):

LCD_printf(\Uart_Printf(\case(10):

LCD_printf(\

Uart_Printf(\case(11):

LCD_printf(\Uart_Printf(\case(12):

7

}

LCD_printf(\Uart_Printf(\case(13):

LCD_printf(\Uart_Printf(\case(14):

LCD_printf(\

Uart_Printf(\case(15):

LCD_printf(\Uart_Printf(\case(16):

LCD_printf(\Uart_Printf(\

ZLG7289_ENABLE();//使zlg7289占有同步串口Delay(5);//延時

WriteSDIO(ZLG7289_CMD_DATA0|0);//數(shù)碼管以方式0譯碼,第一個數(shù)碼管亮

//WriteSDIO(key);//顯示個位Delay(1);//延時*/if(key>=4Delay(1);break;case(5):WriteSDIO(8);Delay(1);break;case(6):WriteSDIO(9);Delay(1);break;case(8):WriteSDIO(4);Delay(1);break;case(9):WriteSDIO(5);Delay(1);break;case(10):WriteSDIO(6);Delay(1);break;case(11):WriteSDIO(1);Delay(1);break;

9}

}

}

}

case(12):WriteSDIO(2);Delay(1);break;case(13):WriteSDIO(3);Delay(1);break;case(15):WriteSDIO(0);Delay(1);break;

ZLG7289_DISABLE();//zlg7289放棄同步串口控制權

return0;

五、試驗體會

在本次試驗,熟悉了鍵盤以及LED的驅(qū)動原理。鍵盤的閉合鍵,尋常采用兩種方法,即行掃描法和行反轉法獲取鍵值。同時還了解了ZLG7289芯片的特點和基本使用方法。

10

試驗三A/D接口試驗

一、試驗目的

1、熟悉ARM本身自帶的八路十位A/D控制器及相應寄放器。

2、編程實現(xiàn)ARM系統(tǒng)的A/D功能,把握帶有A/D的CPU編程實現(xiàn)A/D功

能的主要方法。二、試驗內(nèi)容

學習A/D和LCD接口原理,了解實現(xiàn)A/D和LCD系統(tǒng)對于系統(tǒng)的軟件和硬件要求。閱讀ARM芯片文檔,把握ARM的A/D和LCD相關寄放器的功能,熟悉ARM系統(tǒng)硬件的A/D和LCD相關接口。利用外部模擬信號編程實現(xiàn)ARM循環(huán)采集全部前4路通道,并且在LCD上動態(tài)顯示曲線。每個通道以不同顏色的畫筆繪制曲線。三、試驗流程圖

1、獲取轉換結果函數(shù)否

四、試驗核心代碼#include\#include\#include\#include\

11

啟動延時通道延時轉換終止?

是返回轉換結果#include\#include\

externU32LCDBuffer[240][320];

#pragmaimport(__use_no_semihosting_swi)#defineADCCON_FLAG#defineADCCON_SLEEP#defineADCCON_ADIN0#defineADCCON_ADIN1#defineADCCON_ADIN2#defineADCCON_ADIN3#defineADCCON_ADIN4#defineADCCON_ADIN5#defineADCCON_ADIN6#defineADCCON_ADIN7

0x400x20(0x0

}

for(k=pre[i];k>4);//去掉低4位,保存12位有效數(shù)據(jù)SendSIOData(0);temp=ReadSIOData();

SendSIOData(ADS7843_CMD_X);temp>4);SendSIOData(0);temp=ReadSIOData();

SendSIOData(ADS7843_CMD_X);temp>4);SendSIOData(0);temp=ReadSIOData();

SendSIOData(ADS7843_CMD_Y);temppMainWindow=CreateWindow(120,pMainwinRect,

FONTSIZE_SMALL,WND_STYLE_MODE,Main_Wnd_Caption_16,NULL);}

voidDisplay_Task(void*Id){

inttempi;

41

DrawWindow(pMainWindow);

ClearScreen();

ShowBmp(pdc,bmp_frame,0,0);initfinished=TRUE;//初始化部分終止

while(1){}

DestoryDC(pdc);

pMsg=WaitMessage(0);switch(pMsg->Message){}

DeleteMessage(pMsg);OSTimeDly(50);

caseOSM_TOUCH_SCREEN:

x=pMsg->WParam

y=pMsg->WParam>>16;

onKey(x,y);break;

U16tempstr[20];

//判斷主任務的初始化部分是否完成,假使完成則繼續(xù)下面的顯示工作,否則不再繼續(xù)向下執(zhí)行,交出CPU使用權片

if(initfinished==FALSE)OSTimeDly(2000);while(1){

if(gameover==TRUE){}

elseif(pause==TRUE){}else{

ShowBmp(pdc,bmp_gamepause,41,95);//顯示游戲暫停圖OSTimeDly(4000*1-700*Step);continue;

OSTimeDly(4000*1-700*Step);continue;

for(tempi=0;tempi=20){}

gameover=TRUE;if(CatchCount>=10){}else{}

ShowBmp(pdc,bmp_gameover,41,95);//顯gamepass=TRUE;

ShowBmp(pdc,bmp_gamepass,41,95);//顯

示游戲過關圖片

示游戲終止圖片

43

}

}

}

OSTimeDly(4000*1-700*Step);

五、試驗體會

本次試驗,我們運用ARMSDT2.5.2的集成開發(fā)環(huán)境,編寫了一個小游戲,我們在編寫和調(diào)試程序的過程中,把握了LCD驅(qū)動方法,把握了鍵盤控制方法,學會了如何把鍵盤控制轉換為觸摸屏控制。

44

}

}

LCD_printf(\Uart_Printf(\OSTimeDly(1000);

voidSYS_Task(void*Id)

{OSRunning=TRUE;//使能多任務切換}

五、試驗體會

通過本次試驗,了解uCOS-II內(nèi)核的主要結構,把握了將uCOS-II內(nèi)核移植到ARM7處理器上的基本方法。把握了在ARMSDT2.5或ADS1.2集成開發(fā)環(huán)境中編寫和調(diào)試程序的基本過程。通過此次試驗,讓我復習了嵌入式ARM系統(tǒng)軟、硬件的基本知識,分析了uC/OS-II的源代碼,對移植相關部分的代碼作了分析解讀,熟悉了ARM體系架構,最終基于ARM微處理器作了uC/OS-II的具體移植工作。不管是移植還是自己設計的,我想最終的目的是解決這個問題,這首先要有個好的學習態(tài)度,通過它讓我自己認識到自己的不足和弱項,多分析做些試驗驗證,對于問題解決是幫助的。

uHALr_InstallSystemTimer();LCD_printf(\Uart_Printf(\for(;;){}

OSTimeDly(10000);

31

試驗六捉小雞

一、試驗目的

學習設計一個繁雜應用程序的結構并編譯完成它,結合應用之前試驗學到的知識,編寫一個功能比較繁雜的綜合應用程序。二、試驗內(nèi)容

小游戲:捉小雞。

一只小雞不停地隨機出現(xiàn)在9個格子的任意一個,在小雞停留在某一格子的時間段內(nèi),游戲者假使能正確按相應的鍵,就算游戲者抓住一只小雞。游戲總共20只小雞,每抓住一只得5分,20只小雞全部出現(xiàn)后游戲終止。

界面中左邊是9個格子,一只小雞不停地隨機出現(xiàn)在9個格子的任意一個,假使目前小雞正出現(xiàn)在第5個格子。假使游戲者能趕在小雞出現(xiàn)在另一個格子前按下“5〞鍵,就算游戲者抓住一只小雞,假使游戲者沒有按下正確的鍵,則沒有抓住小雞。

界面的右邊顯示游戲的一些相關信息?!肮灿楔暀陲@示游戲中到目前為止已經(jīng)出現(xiàn)的小雞總數(shù)?!白プ〃暀陲@示本級游戲中到目前為止游戲者已經(jīng)抓住小雞的數(shù)目?!暗梅吱暀陲@示游戲進行到現(xiàn)在,游戲者所有得分的累積。三、試驗流程圖判斷觸摸范圍狀態(tài)變量初始化,位置變量初始化顯示登陸圖片清屏,顯示主框圖等待觸摸屏掃描消息“確定〞鍵“取消〞鍵“1-9〞數(shù)字鍵刪除延時語句游戲得分增加游戲重新開始暫停游戲判斷觸摸范圍是否和當前位置一致

32

四、試驗核心代碼

#include\#include\#include#include#include#include\

#pragmaimport(__use_no_semihosting_swi)//ensurenofunctionsthatusesemihosting//記錄9個格子的位置structRECTRect[9];structRECT*pRect[9];

//記錄一些相關位置,StepRect位置顯示游戲等級,CountRect位置顯示總共出現(xiàn)的小雞的數(shù)目

//CatchRect位置顯示抓到的小雞的數(shù)目,ScoreRect位置顯示當前的分數(shù)u8StepRectX,StepRectY,TotalCountRectX,TotalCountRectY;u8CatchCountRectX,CatchCountRectY,ScoreRectX,ScoreRectY;u8Step;//游戲等級

u8TotalCount;//總共出現(xiàn)的小雞的數(shù)目u8CatchCount;//抓到的小雞的數(shù)目u8Score;//游戲當前的分數(shù)

u8CurrentPos;//小雞當前正在哪一個格子中BOOLEANgameover,pause;BOOLEANgamepass;

BOOLEANinitfinished;//記錄初始化是否完成,用于協(xié)調(diào)多個任務,確保其它任務在主任務初始化終止后再開始工作

33

PDCpdc;//繪圖用的DC

charbmp_hitchick[12]={'1','4','5','_','8','0','','','B','M','P',0};//擊中小雞的圖片

charbmp_misschick[12]={'1','4','5','_','8','1','','','B','M','P',0};//沒有擊中小雞的圖片

charbmp_gameend[12]={'1','4','5','_','9','0','','','B','M','P',0};//游戲通關的圖片

charbmp_logo[12]={'1','4','5','_','5','9','','','B','M','P',0};//登錄圖片

charbmp_gamepass[12]={'1','4','5','_','7','0','','','B','M','P',0};//游戲過關圖片

charbmp_gameover[12]={'1','4','5','_','7','1','','','B','M','P',0};//游戲終止圖片

charbmp_frame[12]={'1','2','7','_','3','9','','','B','M','P',0};charbmp_chick[12]={'1','2','7','_','3','5','','','B','M','P',0};charbmp_gamepause[12]={'1','2','7','_','3','7','','','B','M','P',0};

charbmp_empty[12]={'1','2','7','_','4','0','','','B','M','P',0};///******************任務定義***************///

OS_STKMain_Stack[STACKSIZE*8]={0,};//Main_Task堆棧

voidMain_Task(void*Id);//Main_Task,主要對一些變量進行初始化

#defineMain_Task_Prio12//Main_Task的優(yōu)先級

OS_STKLed_Flash_Stack[STACKSIZE]={0,};//LED閃爍任務堆棧voidLed_Flash_Task(void*Id);//LED閃爍任務#defineLed

溫馨提示

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

評論

0/150

提交評論