版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、南京郵電大學(xué)實 驗 報 告實驗名稱 DSP課程設(shè)計 課程名稱_ DSP課程設(shè)計 班級學(xué)號_ _姓 名_ _開課時間 2011/2012 學(xué)年, 第 1 學(xué)期實驗一、EMIF 接口上的I/O接口擴展一實驗?zāi)康牧私釯CETEK-VC5509-A 板在TMS320VC5509DSP 外部擴展存儲空間上的擴展。了解ICETEK-VC5509-A 板上指示燈擴展原理。學(xué)習(xí)在C 語言中使用擴展的控制寄存器的方法。二實驗原理1TMS320VC5509DSP 的EMIF 接口:存儲器擴展接口(EMIF)是DSP 擴展片外資源的主要接口,它提供了一組控制信號和地址、數(shù)據(jù)線,可以擴展各類存儲器和寄存器映射的外設(shè)。
2、-ICETEK-VC5509-A 評估板在EMIF 接口上除了擴展了片外SDRAM 外,還擴展了指示燈、DIP 開關(guān)和D/A 設(shè)備。具體擴展地址如下:400800-400802h: D/A 轉(zhuǎn)換控制寄存器400000-400000h: 板上DIP 開關(guān)控制寄存器400001-400001h: 板上指示燈控制寄存器-與ICETEK-VC5509-A 評估板連接的ICETEK-CTR 顯示控制模塊也使用擴展空間控制主要設(shè)備:602800-602800h: 讀-鍵盤掃描值,寫-液晶控制寄存器600801-600801h: 液晶輔助控制寄存器602801-600802h: 液晶顯示數(shù)據(jù)寄存器60280
3、2-602802h: 發(fā)光二極管顯示陣列控制寄存器2指示燈擴展原理3實驗程序流程圖:三部分程序代碼/ 定義指示燈寄存器地址和寄存器類型#define LBDS (*(unsigned int *)0x400001)/ 子程序接口void Delay(unsigned int nDelay);/ 延時子程序int i;main()unsigned int uLED4=1,2,4,8;/ 控制字,逐位置1: 0001B 0010B 0100B 1000BCLK_init();/ 初始化DSP運行時鐘SDRAM_init();/ 初始化EMIF接口while ( 1 )for ( i=0;i=0;i
4、- )LBDS=uLEDi;/ 反向順序送控制字Delay(32);/ 延時 【延時256-32】四實驗結(jié)果映射在擴展存儲器空間地址上的指示燈寄存器在設(shè)置時是低4位有效的,數(shù)據(jù)的最低位對應(yīng)指示燈D1,次低位對應(yīng)D2,.依次類推。LED指示燈由D1D2D3D4D3D2D1循環(huán)依次點亮。五實驗小結(jié)通過本次實驗,我們了解到了ICETEK-VC5509-A板在TMS320VC5509DSP外部擴展存儲空間上的擴展,了解了ICETEK-VC5509-A板上指示燈擴展原理。實驗過程中需要注意或者說是需要重點了解的是控制字的寫入,改變控制字就可以控制不同燈的閃爍,例如要使D1、D2燈同時閃爍,控制字就可寫為
5、3,即0011B。實驗二、定時器的使用一實驗?zāi)康耐ㄟ^實驗熟悉VC5509A 的定時器;掌握VC5509A 定時器的控制方法;掌握VC5509A 的中斷結(jié)構(gòu)和對中斷的處理流程;學(xué)會C 語言中斷程序設(shè)計,以及運用中斷程序控制程序流程。二實驗原理1通用定時器介紹及其控制方法TMS320VC5509A 內(nèi)部有兩個20 位通用定時器(GP):*每個通用定時器包括:-一個16 位的減計數(shù)的計數(shù)器TIM;-一個16 位的定時器周期寄存器PRD;-一個16 位的定時器控制寄存器TCR;-一個16 位的定時器預(yù)定標寄存器PSCR;*PSCR 寄存器說明:PSC: 4 位的預(yù)定標值,與TIM 共同組成20 位的定
6、時計數(shù)器.TDDR: 預(yù)定標周期寄存器(在需要時重裝入PSC 的值)TCR 寄存器說明2中斷程序設(shè)計:-程序中應(yīng)包含中斷向量表,VC5509A 默認向量表從程序區(qū)0 地址開始存放,根據(jù)IPVD 和IPVH 的值確定向量表的實際地址。-注意觀察程序中INTR_init()函數(shù)的定義部分,其中IPVD 和IPVH 的值都為0x0d0;同時觀察配置文件ICETEK-VC5509-A.cmd 中的VECT 段描述中o=0x0d000。-向量表中每項為8 個字,存放一個跳轉(zhuǎn)指令,跳轉(zhuǎn)指令中的地址為相應(yīng)服務(wù)程序入口地址。第一個向量表的首項為復(fù)位向量,即CPU 復(fù)位操作完成后自動進入執(zhí)行的程序入口。-服務(wù)程
7、序在服務(wù)操作完成后,清除相應(yīng)中斷標志,返回,完成一次中斷服務(wù)。三實驗結(jié)果LED指示燈D1在定時器的定時中斷中按照設(shè)計定時閃爍。將*prd0 = 0x0ffff改為*prd0 = 0x0fff時,指示燈閃爍的頻率變大。四實驗小結(jié)通過本次實驗,我們學(xué)會了定時器的使用,并通過控制指示燈來觀察中斷的進行,掌握VC5509A 的中斷結(jié)構(gòu)和對中斷的處理流程。在實驗中發(fā)現(xiàn)改變PRD的值會使得指示燈的閃爍頻率發(fā)生變化,通過學(xué)習(xí)知道中斷的次數(shù)關(guān)于PRD和TDDR的公式即為。實驗三、中斷的使用一實驗?zāi)康?通過實驗熟悉VC5509A 的中斷響應(yīng)過程。2學(xué)會C 語言中斷程序設(shè)計,以及運用中斷程序控制程序流程。二實驗原
8、理1中斷及中斷處理過程:中斷簡介:中斷是一種由硬件或軟件驅(qū)動的信號,DSP 在接到此信號時,將當(dāng)前程序懸掛起來,轉(zhuǎn)去執(zhí)行另外一個任務(wù),這個任務(wù)我們稱為中斷服務(wù)程序(ISR)。TMS320C55x (C55x) DSP可支持32 個ISR,可由硬件或軟件觸發(fā)。所有的C55x 中斷,可以分成可屏蔽中斷和不可屏蔽中斷兩種,軟件中斷是不可屏蔽的。DSP 處理中斷的步驟:接收中斷請求。請求由軟件或硬件發(fā)出。響應(yīng)中斷請求。對于可屏蔽中斷,需要滿足若干條件,才發(fā)生響應(yīng);而對于不可屏蔽中斷,則立即響應(yīng)。準備執(zhí)行中斷服務(wù)程序。-完成當(dāng)前正在執(zhí)行的指令;將進入流水線但還未解碼的指令清除。-自動保存若干寄存器的值到
9、數(shù)據(jù)堆棧和系統(tǒng)堆棧。-取得用戶定義的中斷向量表中當(dāng)前中斷向量,中斷向量指向中斷服務(wù)程序入口。執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序包含中斷返回指令,這樣返回時可以出棧以前保存的關(guān)鍵寄存器數(shù)據(jù),從而恢復(fù)中斷服務(wù)程序執(zhí)行前的現(xiàn)場。中斷向量表:中斷向量表的地址可以由用戶指定。外中斷:TMS320C5509 可以響應(yīng)INT0-INT4 五個外中斷。2ICETEK-CTR 板的鍵盤接口:顯示/控制模塊ICETEK-CTR 通過接口P8 連接小鍵盤,接收小鍵盤傳送的掃描碼,并在每個掃描碼結(jié)束后保存,同時向DSP 的INT2 發(fā)送中斷信號;當(dāng)DSP 讀鍵盤時將掃描碼送到數(shù)據(jù)總線上。小鍵盤上每次按下一個鍵將產(chǎn)生2 個
10、掃描碼、2 次中斷。3程序編制:由一個不含中斷處理程序的工程通過改寫加入中斷處理程序部分大致需要如下操作(假設(shè)使用INT2):編制中斷服務(wù)程序:可以用C 語言程序?qū)崿F(xiàn),編寫單獨的一個函數(shù)XINT,此函數(shù)使用interrupt 修飾,沒有參數(shù)和返回值。構(gòu)造中斷向量表:可以用匯編語言構(gòu)造,編寫一個匯編語言模塊程序vector.asm,在程序頭上聲明段名為“.vectors”;定義外部標號_XINT,由于匯編語言要使用C 語言程序中定義的標號XINT,需要在這個標號前加底線;在中斷向量表該中斷對應(yīng)位置(int2)寫匯編語言語句跳轉(zhuǎn)語句。修改連接命令文件:在MEMORY 小節(jié)中開辟單獨的地址段用以存放
11、中斷向量表;在SECTIONS 小節(jié)中指定.vectors 段到前步開設(shè)的內(nèi)存段中。主程序中進行初始化設(shè)置:定位中斷向量表,使能中斷,清中斷等。4實驗程序流程圖:三部分程序代碼void InitMcBSP();void INTR_init( void );void TIME_init(void);int nCount;main()nCount=0;CLK_init();SDRAM_init();INTR_init();InitCTR();InitMcBSP();CTRGR=2;/ 使能IOwhile ( 1 )void InitMcBSP()/ IOPin: McBSP1.FSX S15 /S
12、PCR2.XRST_=0,PCR.XIOEN=1,PCR.FSXM=1,PCR.FSXP=0/1SPCR2_1&=0x0fffe;PCR1|=0x2800;void interrupt XINT()nCount+; nCount%=2;if ( nCount=0 )PCR1=8;void INTR_init( void )IVPD=0x80;IVPH=0x80;IER0=8;DBIER0=8;IFR0=0xffff;asm( BCLR INTM);四實驗結(jié)果通過實驗可以發(fā)現(xiàn),每次按下鍵盤均會發(fā)生兩次中斷,當(dāng)按下鍵不放時會產(chǎn)生連續(xù)的中斷;只有在外中斷發(fā)生時,XINT 函數(shù)才會被執(zhí)行。五實驗小結(jié)通
13、過本次實驗,我們熟悉VC5509A 的中斷響應(yīng)過程,并學(xué)會C 語言中斷程序設(shè)計,以及運用中斷程序控制程序流程。實驗過程中發(fā)現(xiàn),當(dāng)按住任意鍵不放時,指示燈會不停地閃爍即發(fā)生連續(xù)的中斷,而每次按下鍵盤時會發(fā)生兩次中斷。實驗四、步進電機控制一實驗?zāi)康耐ㄟ^實驗學(xué)習(xí)使用 5509DSP 的擴展I/O 端口控制外圍設(shè)備信息的方法,掌握使用5509DSP通用計時器的控制原理及中斷服務(wù)程序的編程方法;了解步進電機的控制方法。二實驗原理1EMIF 接口:TMS320C5509DSP 的擴展存儲器接口(EMIF)用來與大多數(shù)外圍設(shè)備進行連接,典型應(yīng)用如連接片外擴展存儲器等。這一接口提供地址連線、數(shù)據(jù)連線和一組控制
14、線。ICETEK-VC5509-A將這些擴展線引到了板上的擴展插座上供擴展使用。2步進電機是由DSP 通用I/O 管腳輸出直接控制。步進電機的起動頻率大于500PPS(拍每秒),空載運行頻率大于900PPS。5509A 的通用I/O 口S22 控制電機的轉(zhuǎn)動頻率,S14 控制轉(zhuǎn)動方向。3控制的方法是使用DSP 通用定時器設(shè)置S22 以一定的頻率改變高低狀態(tài),輸出方波,設(shè)置S14 為高電平則順時針轉(zhuǎn)動,低電平為逆時針轉(zhuǎn)動。三部分程序代碼void INTR_init( void );void TIME_init(void);int nCount,nStep,nAddStep;unsigned in
15、t uTimPrd0;unsigned int pwm28= 0x86,0x87,0x83,0x8b,0x89,0x8d,0x8c,0x8e ;main()int sEnd;unsigned char dbScanCode,tKey;nCount=0; nStep=1;sEnd=1,nAddStep=1;uTimPrd0=0x1002;CLK_init();SDRAM_init();InitCTR();CTRLR=0x0c2;TIME_init();INTR_init();doif ( nCount16 )nCount=0;dbScanCode=GetKey();/ Scan for Keyb
16、oard inputtKey=CTRCLKEY;/ Clear Keyboard scan bufferif ( dbScanCode!=0 & dbScanCode!=0x0ff )switch(dbScanCode)case SCANCODE_Enter: / Exit ProgramsEnd=0;break;case SCANCODE_4: / Motor Turn ForwardnAddStep=1;break;case SCANCODE_6: / Motor Turn BackwardnAddStep=-1;break;case SCANCODE_Minus: / Motor Spe
17、ed DownuTimPrd0+=0x800;if(uTimPrd0=0x8000)uTimPrd0=0x8002;asm( BSET INTM);TIME_init();asm( BCLR INTM);break;case SCANCODE_Plus: / Motor Speed upuTimPrd0-=0x800;if(uTimPrd0=0x1000)uTimPrd0=0x1002;asm( BSET INTM);TIME_init();asm( BCLR INTM);break;while(sEnd);exit(0);void interrupt Timer()CTRLR=pwmnSte
18、p;nStep+=nAddStep;if ( nStep7 )nStep=0;nCount+; void INTR_init( void )IVPD=0x80;IVPH=0x80;IER0=0x10;DBIER0 =0x10;IFR0=0xffff;asm( BCLR INTM);void TIME_init(void) tim0 = (unsigned int *)0x1000; prd0 = (unsigned int *)0x1001; tcr0 = (unsigned int *)0x1002; prsc0 = (unsigned int *)0x1003; *tcr0 = 0x04f
19、0; *tim0 = 0x0; *prd0 = uTimPrd0; *prsc0 = 2; *tcr0 = 0x00e0;四實驗結(jié)果可以看到顯示/控制模塊上的電機指針在轉(zhuǎn)動,使用“4”和“6”鍵可控制其轉(zhuǎn)動方向,用“+”和“-”鍵可微調(diào)速度。如果“4”是順時針旋轉(zhuǎn),則“6”就是逆時針旋轉(zhuǎn),“+”可以增加旋轉(zhuǎn)速度,“-”是減小速度,但是變化都是很微小。五實驗小結(jié)通過實驗學(xué)習(xí)使用 5509DSP 的擴展I/O 端口控制外圍設(shè)備信息的方法,掌握使用5509DSP通用計時器的控制原理及中斷服務(wù)程序的編程方法;了解步進電機的控制方法。實驗五、多路信號混頻一實驗?zāi)康恼莆誂/D 轉(zhuǎn)換的基本過程和程序處理過程
20、;學(xué)習(xí)通過對采樣值進行計算產(chǎn)生混頻波形。二實驗原理1模數(shù)轉(zhuǎn)換工作過程:-模數(shù)轉(zhuǎn)換模塊接到啟動轉(zhuǎn)換信號后,按照設(shè)置進行相應(yīng)通道的數(shù)據(jù)采樣轉(zhuǎn)換。-經(jīng)過一個采樣時間的延遲后,將采樣結(jié)果放入AD 數(shù)據(jù)寄存器中保存。-等待下一個啟動信號。2模數(shù)轉(zhuǎn)換的程序控制:模數(shù)轉(zhuǎn)換相對于計算機來說是一個較為緩慢的過程。一般采用中斷方式啟動轉(zhuǎn)換或保存結(jié)果,這樣在CPU 忙于其他工作時可以少占用處理時間。設(shè)計轉(zhuǎn)換程序應(yīng)首先考慮處理過程如何與模數(shù)轉(zhuǎn)換的時間相匹配,根據(jù)實際需要選擇適當(dāng)?shù)挠|發(fā)轉(zhuǎn)換的手段,也要能及時地保存結(jié)果。由于TMS320VC5509DSP 片內(nèi)的A/D 轉(zhuǎn)換精度是10 位的,轉(zhuǎn)換結(jié)果(16 位)的最高位(
21、第15位)表示轉(zhuǎn)換值是否有效(0 有效),第14-12 位表示轉(zhuǎn)換的通道號,低10 位為轉(zhuǎn)換數(shù)值,所以在保留時應(yīng)注意取出結(jié)果的低10 位,再根據(jù)高4 位進行相應(yīng)保存。4混頻波形產(chǎn)生:將接收到的兩路AD 采集信號進行相加,并對結(jié)果的幅度進行限制,從而產(chǎn)生混合后的輸出波形。實驗中采用了同相位混頻方法,也可修改程序完成異相混頻法。5源程序及注釋:本實驗程序在主循環(huán)中對AD 進行連續(xù)采樣,每次采樣首先設(shè)置AD 轉(zhuǎn)換控制寄存器(ADCCTL),發(fā)送轉(zhuǎn)換通道號和啟動命令,然后循環(huán)等待轉(zhuǎn)換結(jié)果,最后將結(jié)果保存。由于需要進行實時混頻,所以交替轉(zhuǎn)換通道0 和通道1(ICETEK-VC5509-EDU 實驗箱上A
22、DCIN2 和ADCIN3)。三部分程序代碼void InitADC();void wait( unsigned int cycles );void EnableAPLL( );unsigned int nADC0256,nADC1256,nMixing256;main()int i;unsigned int uWork; EnableAPLL();SDRAM_init();InitCTR();InitADC(); PLL_Init(144);while ( 1 )for ( i=0;i=1;/ 限幅,混頻后仍然產(chǎn)生12位數(shù)據(jù)/uWork=(nADC0i+nADC1i*3);/uWork=2;
23、nMixingi=uWork;/ 在此加軟件斷點void InitADC()ADCCLKCTL=0x23; / 4MHz ADCLKADCCLKDIV=0x4f00;void wait( unsigned int cycles ) int i; for ( i = 0 ; i cycles ; i+ ) 四實驗結(jié)果五實驗體會掌握A/D 轉(zhuǎn)換的基本過程和程序處理過程;學(xué)習(xí)通過對采樣值進行計算產(chǎn)生混頻波形。實驗六、異步串口通信一. 實驗?zāi)康牧私釯CETEK-VC5509-A 評估板上擴展標準RS-232 串行通信接口的原理和方法。學(xué)會對串行通信芯片的配置編程。學(xué)習(xí)設(shè)計異步通信程序。二實驗原理1IC
24、ETEK-VC5509-A 板異步串口設(shè)計。在板上加上16C550、Max232 和驅(qū)動電路部分即可。驅(qū)動電路主要完成將輸出的0-3.3V 電平轉(zhuǎn)換成異步串口的工作電平,轉(zhuǎn)換電平的工作由MAX232 芯片完成,但由于它是5V 器件所以它同DSP 間的信號線必須有電平轉(zhuǎn)換,此板采用的是74LVC245。2串行通信接口設(shè)置。內(nèi)部生成的串行時鐘由系統(tǒng)時鐘SYSCLK 頻率和波特率選擇寄存器決定。串行通信接口使用16 位波特率選擇寄存器,數(shù)據(jù)傳輸?shù)乃俣瓤梢员痪幊虨?5000 多種不同的方式。不同通信模式下的串行通信接口異步波特率由下列方法決定:-BRR=165535 時的串行通信接口異步波特率:串行通
25、信接口異步波特率=SYSCLK/( BRR+1)*8。其中,BRR=SYSCLK/(SCI 異步波特率*8)-1;-BRR=0 時的串行通信接口異步波特率:串行通信接口異步波特率=SYSCLK/16。這里BRR 等于波特率選擇寄存器的16 位值。3實驗程序流程圖:三. 實驗結(jié)果通過 DSP 傳送到PC 機上的信息,可以看出:串口正確工作。我們在“發(fā)送的字符/數(shù)據(jù)”欄中輸入一些要發(fā)送到DSP 的字符串,例如“Hello,man!”,以“.”字符結(jié)尾,然后單擊“手動發(fā)送”按鈕后,在“串口調(diào)試助手”的接收窗口中可看到“oh,you say Hello,man!”的回答。五. 實驗體會通過本次實驗,我
26、們了解了ICETEK-VC5509-A 評估板上擴展標準RS-232 串行通信接口的原理和方法。學(xué)會對串行通信芯片的配置編程。學(xué)習(xí)設(shè)計異步通信程序。 綜合設(shè)計2:LCD液晶顯示一實驗原理1EMIF 接口:TMS320C5509DSP 的擴展存儲器接口(EMIF)用來與大多數(shù)外圍設(shè)備進行連接,典型應(yīng)用如連接片外擴展存儲器等。這一接口提供地址連線、數(shù)據(jù)連線和一組控制線。ICETEK-VC5509-A將這些擴展線引到了板上的擴展插座上供擴展使用。2液晶顯示模塊的訪問、控制是由5509ADSP 對擴展接口的操作完成。控制口的尋址:命令控制接口的地址為0x602800,數(shù)據(jù)控制接口的地址為0x60280
27、1 和0x600802,輔助控制接口的地址為0x600801。3顯示控制方法:液晶顯示模塊中有兩片顯示緩沖存儲器,分別對應(yīng)屏幕顯示的象素,向其中寫入數(shù)值將改變顯示,寫入“1”則顯示一點,寫入“0”則不顯示。其地址與象素的對應(yīng)方式如下:-發(fā)送控制命令:向液晶顯示模塊發(fā)送控制命令的方法是通過向命令控制接口寫入命令控制字,然后再向輔助控制接口寫入0。下面給出的是基本命令字、解釋和C 語言控制語句舉例:.顯示開關(guān):0x3f 打開顯示;0x3e 關(guān)閉顯示;.設(shè)置顯示起始行:0x0c0+起始行取值,其中起始行取值為0 至63;.設(shè)置操作頁:0x0b8+頁號,其中頁號取值為0-7;.設(shè)置操作列:0x40+列
28、號,其中列號為取值為0-63;-寫顯示數(shù)據(jù):在使用命令控制字選擇操作位置(頁數(shù)、列數(shù))之后,可以將待顯示的數(shù)據(jù)寫入液晶顯示模塊的緩存。將數(shù)據(jù)發(fā)送到相應(yīng)數(shù)據(jù)控制I/O 接口即可。4 液晶顯示器與DSP 的連接:5數(shù)據(jù)信號的傳送:由于液晶顯示模塊相對運行在高主頻下的DSP屬于較為慢速設(shè)備,連接時需要考慮數(shù)據(jù)線上信號的等待問題;電平轉(zhuǎn)換:由于DSP 為3.3V 設(shè)備,而液晶顯示模塊屬于5V 設(shè)備,所以在連接控制線、數(shù)據(jù)線時需要加電平隔離和轉(zhuǎn)換設(shè)備,如:ICETEK-CTR 板上使用了74LS245。6實驗程序流程圖:二.實驗要求概述本實驗通過對液晶顯示屏的顯示行、列、頁的設(shè)置,并編寫相關(guān)的序號和姓名
29、代碼,運用液晶顯示模塊的命令控制接口、數(shù)據(jù)控制接口以及輔助控制接口等地址,和左屏、右屏運用的不同方法實現(xiàn)在液晶顯示屏上顯示我們的學(xué)號及姓名。3. 關(guān)鍵部分程序代碼1.控制顯示內(nèi)容:#include scancode.h/ Variables 程曉濤 unsigned char lcdbuf9=B,0,8,0,2,1,5,2,8;unsigned char Line1=0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,0x00,0x0F,0x04,0x04,0x4F,0x21,0x19,
30、0x07,0x01,0x01,0x3F,0x41,0x40,0x41,0x71,0x00,0x04,0xFC,0x03,0x20,0x18,0x06,0x01,0x02,0x0A,0x52,0x82,0x7F,0x02,0x02,0x02,0x00;unsigned char Line2=0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,0x00,0xFE,0x42,0x42,0xFE,0x00,0x84,0x84,0x47,0x5C,0x24,0x64,0x94,0x04,0xC0,
31、0x00,0x10,0x61,0x86,0x70,0x40,0x54,0xD4,0x74,0x5F,0x54,0x54,0xD4,0x54,0x54,0x40,0x00;unsigned char ledbuf8,ledx8;/*通信*/unsigned char Line3=0x40,0x20,0x1F,0x20,0x40,0x5F,0x42,0x42,0x42,0x5F,0x4A,0x52,0x4F,0x40,0x40,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00;u
32、nsigned char Line4=0x40,0x41,0xC6,0x00,0x00,0xF2,0x52,0x52,0x56,0xFA,0x5A,0x56,0xF2,0x00,0x00,0x00,0x80,0x40,0x30,0xFC,0x07,0x0A,0xA8,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00;/*通信*/*工程*/unsigned char Line5=0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x04,0x03,
33、0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00;unsigned char Line6=0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00;/*工程*/2.控制顯示位置:LCD.CCTRLCDCMDR=LCDCMDSTARTLINE;/ 換
34、行Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDPAGE+1;/ 設(shè)置操作頁=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS;/ 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for ( i=0;i48;i+ )nCount=Line1i;CTRLCDRCR=( nBW=0 )?(nCount):(nCount);/ 屏幕左側(cè)第1至8行第i列賦值port8002=0;/ (賦值
35、后當(dāng)前操作列自動加1,所以不需設(shè)置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);詳細代碼請查看附錄。四. 實驗結(jié)果液晶顯示屏顯示出自己的學(xué)號和姓名及專業(yè),即:B08021528 程曉濤通信 工程學(xué)號的每個字符之間是以一定的延時顯現(xiàn)出來,最后穩(wěn)定。通過字模軟件中設(shè)置不同的字體可以得出不同的中文字編碼。5 實驗小結(jié)這次試驗用顯示屏是64X128的,我們設(shè)置的數(shù)字式8個字節(jié),共九個數(shù)字,所以在左屏輸出8個右屏輸出一個,漢字設(shè)置的是16x16全部在右屏輸出。漢字要經(jīng)過字母軟件處理后才可用,漢字分上下兩頁和左右兩頁,可以通過改變頁碼來改變漢字位置。通過此次實驗,
36、讓我對單片機的知識有了進一步的了解,由于以前曾參加過MSP430單片機項目,所以做起來稍微容易些。下面我概括了幾點我的學(xué)習(xí)經(jīng)驗和心得體會:1、萬事開頭難、要勇敢邁出第一步。開始的時候,不要老是給自己找借口,說考研沒時間啦、沒有實驗板啦之類的。遇到困難要一件件攻克,不會建項目,就先學(xué)它,這方面教程很多,隨便找找看一下,做幾次就懂了。然后可以參考別的人程序,抄過來也無所謂,寫一個最簡單的,讓它運行起來,先培養(yǎng)一下自己的感覺,知道寫程序是怎么一回事,無論寫大程序還是小程序,要做的工序不會差多少。寫好程序在上面運行一下看結(jié)果,學(xué)習(xí)效果會好很多,仿真器就看個人需要了。單片機是注重理論和實踐的,光看書不動
37、手,是學(xué)不會的。2、 知識點用到才學(xué),不用的暫時丟一邊。厚厚的一本書,看著人頭都暈了,學(xué)了后面的,前面的估計也快忘光了,所以,最好結(jié)合實際程序,用到的時候才去看,不必 說非要把書從第一頁看起,看完它才來寫程序。比如你寫流水燈,完全就沒必要看中斷的知識,專心把流水燈學(xué)好就是了,這是把整本書化整為零,一小點一小點的啃。3、程序不要光看不寫,一定要自己寫一次。最開始的時候,啥都不懂,可以抄人家的程序過來,看看每一句是干什么用的,達到什么目的,運 行后有什么后果,看明白了之后,就要自己寫一次,你會發(fā)現(xiàn),原來看明白別人的程序很容易,但到自己寫的時候卻一句也寫不出來,這就是差距。當(dāng)你自己能 寫出來的時候,
38、說明你就真的懂了。4、必須學(xué)會掌握調(diào)試程序的方法。不少人寫程序,把代碼寫好了,然后一運行,不是自己想要的結(jié)果,就暈了。這就需要學(xué)習(xí)調(diào)試程序的方法,比如KEIL里,可以下斷點啦,查看寄存器內(nèi)容等等,這些都是調(diào)試程序的手段,當(dāng)你發(fā)現(xiàn)你寫的程序運行結(jié) 果和你想象中不一樣的時候,你可以單步,也可以下斷點,然后跟蹤,查看各相關(guān)寄存器內(nèi)容,看看程序運行過中是不是有什么偏差,找出影響結(jié)果的地方,改正過來。這一個過程非常重要,通過程序的排錯,你可以學(xué)到的知識是書上得不到的。5、開動腦筋,運用多種方法,不斷優(yōu)化 自己的程序。想想用各種不同方法來實現(xiàn)同一功能。這是一個練習(xí)和提高的過程,一個問題,你解決了,那么你再
39、想想,能不能換種寫法,也可以實現(xiàn)同一功能,或 者說,你寫出來的代碼,能不能再精簡一點,讓程序執(zhí)行效率更高,這個過程,就是一個進步的過程。很多知識和經(jīng)驗的獲得,并不是直接寫在書讓你看就可以得到 的,需要自己去實踐,開動腦筋,經(jīng)驗才能得到積累,編程水平才能有所提高。6、看別人的代碼,學(xué)習(xí)人家的思路。這個在學(xué)習(xí)初期是很有用,通過看別人的代碼,特別是有多年編程經(jīng)驗的人寫出的具有一定水平的代碼,可以使自己編程水平得到迅速的提高,同時,也可以結(jié)合別人的編程手法,與自己的想法 融合在一起,寫出更高水平的代碼,從中得到進步。但要注意,切忌將學(xué)習(xí)變成抄襲,更不是抄襲完了就認為自己學(xué)會了,這樣做只會使你退步。7、
40、 嘗試編寫一下綜合應(yīng)用的程序。從流水燈學(xué)起,到動態(tài)掃描,再到中斷,那么,你可以試試寫一下時鐘這種綜合性應(yīng)用的程序,不要小看時鐘,要寫好它不是一件容 易的事情,它包括了單片機大部分的知識,比如有按鍵(IO讀?。?、動態(tài)掃描(IO輸出)、中斷等,如何協(xié)調(diào)好各功能模塊正常工作,才是編程者需要學(xué)習(xí)的地 方,當(dāng)你單獨寫一個功能的時候,比如按鍵讀取,你可能感覺很容易,因為你的程序啥也不做,只是讀按鍵。但把它和其它功能混合在一起,如何在整個程序運行中 使每一部分都正常工作,這就不是寫一個按鍵讀取這么容易的事情,功能模塊之間有可能會互相影響,比如你需要讓數(shù)碼管既能顯示,又要去處理按鍵讀取,怎么使 這兩部分都正常
41、工作,這就是一個協(xié)調(diào)過程。當(dāng)你有了這個處理協(xié)調(diào)能力,你就算是入門了。8、著重于培養(yǎng)解決問題的能力,而不是具體看自己編 寫了多少代碼或者做過什么。“學(xué)單片機重點在于學(xué)習(xí)解決問題的思路,而不是局限于具體的芯片類型和語言”這一直是我的座右銘,是我學(xué)單片機多年來感悟出來 的。經(jīng)??吹接腥苏f“你會驅(qū)動XX芯片,真牛啊”“你搞過XX項目,真厲害”之類的話,其實這是非常片面的,搞過XX芯片,搞過XX項目,只能說明你做過 這一項目,它只是你的業(yè)績,并不是代表能力就一定高。真正的能力應(yīng)該是:“遇到?jīng)]有解決過的問題或器件,能利用自己已學(xué)的知識,迅速找到解決問題的方 法?!边@個才是能力。寫程序的過程就是一個創(chuàng)造的過
42、程,幾乎沒有完全一樣的項目,每次你遇上的幾乎都不相同,所以你擁有的必須是你面對新項目時的創(chuàng)造能 力,而不是標榜著你以往做過多少項目。當(dāng)然,業(yè)績也能從另一側(cè)面反映你的經(jīng)驗和水平。9、面對一個新項目時,多自己開動腦筋,不要急于找別人的程序。有不少人面對一個新項目時,第一步想到的就是網(wǎng)上找別人寫過 的代碼,然后抄一段,自己再寫幾句,湊在一起就完成任務(wù),這雖然可能是省時間,但絕對不利你的學(xué)習(xí)。當(dāng)你接到一個新項目時,應(yīng)該先自己構(gòu)思一下整個程序的 架構(gòu),想想如何來完成,有可能的話,畫一個流程圖,簡單的可以畫在腦子里,對程序中用到的數(shù)據(jù)、變量有一個初步的安排,然后自己動手去寫,遇到實在沒辦法 解決的地方,再
43、去請教別人,或看別人是怎么處理的,這樣首先起碼你自己動過腦想過,自己有自己的思路,如果你一開始就看別人的程序,你的思維就會受限在別 人的思維里,自己想再創(chuàng)新就更難了,這樣你自己永遠也沒辦法提高,因為你是走在別人的影子里。10、多利用網(wǎng)絡(luò)的搜索,學(xué)會提問題。一般來 說,學(xué)習(xí)過程中,你遇上的問題,前人們多數(shù)也有遇上的,所以如果有什么不懂,在自己解決不了的時候,最好先到網(wǎng)上搜索一下,看能不能找到答案,找不到再到 論壇里發(fā)問,發(fā)問也要有目的性,盡量簡單明了的描述問題,讓幫助你的人可以用最少的時間就看懂你說什么,畢竟人家?guī)椭闶敲赓M的,時間也是有限的??傊?,通過本次試驗。感覺自己知識有了不少提升,尤其在
44、硬件方面獲益匪淺。附錄:程序詳細代碼1. 控制顯示內(nèi)容:#include scancode.h #include scancode.h/ McBSP0 -#define SPCR0 (*(unsigned int *)0x018c0008)#define PCR0 (*(unsigned int *)0x018c0024)#define SPCR01 (*(unsigned int *)0x01900008)#define SPCR02 (*(unsigned int *)0x0)/ McBSP1 -ioport unsigned int *SPCR21=(unsigned int *)0x2
45、c04;ioport unsigned int *PCR_1=(unsigned int *)0x2c12;#define SPCR2_1 (*SPCR21)#define PCR1 (*PCR_1)/ McBSP2 -ioport unsigned int *SPCR12=(unsigned int *)0x3005;ioport unsigned int *PCR_2=(unsigned int *)0x3012;#define SPCR1_2 (*SPCR12)#define PCR2 (*PCR_1)/ ICETEK-VC5509-A -#define LBDS (*(unsigned
46、 int *)0x40001)#define DIPS (*(unsigned int *)0x400002)/ ICETEK-CTR -#define CTRGR (*(unsigned int *)0x600800)#define CTRKEY (*(unsigned int *)0x602800)#define CTRCLKEY (*(unsigned int *)0x602801)#define CTRLA (*(unsigned int *)0x602802)#define CTRLR (*(unsigned int *)0x602803)#define CTRLCDCMDR (*(
47、unsigned int *)0x602800)#define CTRLCDCR (*(unsigned int *)0x600801)#define CTRLCDLCR (*(unsigned int *)0x602801)#define CTRLCDRCR (*(unsigned int *)0x600802)/ Special values -#define LCDCMDTURNON 0x3f#define LCDCMDTURNOFF 0x3e#define LCDCMDSTARTLINE 0xc0#define LCDCMDPAGE 0xb8#define LCDCMDVERADDRE
48、SS 0x40/ Variables 程曉濤 unsigned char lcdbuf9=B,0,8,0,2,1,5,2,8;unsigned char Line1=0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00,0x00,0x0F,0x04,0x04,0x4F,0x21,0x19,0x07,0x01,0x01,0x3F,0x41,0x40,0x41,0x71,0x00,0x04,0xFC,0x03,0x20,0x18,0x06,0x01,0x02,0x0A,0x52,0x82,0x
49、7F,0x02,0x02,0x02,0x00;unsigned char Line2=0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,0x00,0xFE,0x42,0x42,0xFE,0x00,0x84,0x84,0x47,0x5C,0x24,0x64,0x94,0x04,0xC0,0x00,0x10,0x61,0x86,0x70,0x40,0x54,0xD4,0x74,0x5F,0x54,0x54,0xD4,0x54,0x54,0x40,0x00;unsigned char led
50、buf8,ledx8;/*通信*/unsigned char Line3=0x40,0x20,0x1F,0x20,0x40,0x5F,0x42,0x42,0x42,0x5F,0x4A,0x52,0x4F,0x40,0x40,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00;unsigned char Line4=0x40,0x41,0xC6,0x00,0x00,0xF2,0x52,0x52,0x56,0xFA,0x5A,0x56,0xF2,0x00,0x00,0x00,0x80,0x40,0x30,0xFC,0x07,0x0A,0xA8,0xA8,0xA9,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度企業(yè)年會活動策劃與執(zhí)行合同范本3篇
- 二零二五年度律師委托協(xié)議:刑事辯護法律服務(wù)合同2篇
- 二零二五年度建筑工程施工成本控制居間協(xié)議3篇
- 二零二五年度智能電網(wǎng)技術(shù)委托開發(fā)服務(wù)協(xié)議3篇
- 二零二五年度挖掘機買賣協(xié)議書(含操作員培訓(xùn)與考核)3篇
- 二零二五年度地下管線探測水鉆打孔工程合同3篇
- 二零二五年度知識產(chǎn)權(quán)轉(zhuǎn)讓延期合同補充協(xié)議書終審版3篇
- 2025年度建筑工地臨時用工勞務(wù)風(fēng)險控制合同3篇
- 2024版公司對第三方債務(wù)擔(dān)保合同版B版
- 2024年標準化煙囪建造協(xié)議模板一
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識
- 促銷活動方案(共29頁).ppt
- 華中數(shù)控車床編程及操作
- 農(nóng)民專業(yè)合作社財務(wù)報表(三張表)
- 培訓(xùn)準備工作清單
- 沉井工程檢驗批全套【精選文檔】
- 貝類增養(yǎng)殖考試資料
- 旅游專業(yè)旅游概論試題有答案
- 3、起重工、焊工、電工安全技術(shù)交底
- 水稻幼穗分化八個時期的劃分表
- 卡特彼勒生產(chǎn)體系手冊(PDF62頁)
評論
0/150
提交評論