MSP430F5529實驗指導書(V10)_第1頁
MSP430F5529實驗指導書(V10)_第2頁
MSP430F5529實驗指導書(V10)_第3頁
MSP430F5529實驗指導書(V10)_第4頁
MSP430F5529實驗指導書(V10)_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、東北林業大學 “3+1”實驗班MSP430F5529 實驗指導書(V1.0)2014年10月27日東北林業大學機電工程學院“3+1”實驗室實驗一 基礎GPIO實驗實驗二 鍵盤與液晶顯示實驗實驗三 時鐘系統配置實驗實驗四 看門狗與定時器實驗實驗五 AD/DA實驗實驗六 比較器實驗實驗七 Flash實驗實驗八 串行通信實驗實驗一 基礎GPIO實驗【實驗目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列單片機程序開發的基本步驟;3、掌握MSP430 IO口的基本功能。【實驗儀器】1、SEED-EXP430F5529v1.0開發板一套;2、PC機操作系統Windows XP或Windows

2、7,CCSv5.1集成開發環境。【實驗原理】CCS(Code Composer Studio)是 TI 公司研發的一款具有環境配置、源文件編輯、程序調試、跟蹤和分析等功能的集成開發環境,能夠幫助用戶在一個軟件環境下完成編輯、編譯、鏈接、調試和數據分析等工作。CCSv5.1 為 CCS 軟件的最新版本,功能更強大、性能更穩定、可用性更高,是 MSP430 軟件開發的理想工具。SEED-EXP430F5529v1.0開發板上的有8個可操作的LED燈,與MCU的IO口對應關系如圖1-1所示:圖1-1 LED與MCU的IO對應關系電路我們可以通過控制單片機IO口的輸出電平狀態來控制各個LED燈的亮滅。

3、開發板上還有2個可操作的按鍵S1,S2。如圖1-2所示。圖1-2 按鍵電路我們可以通過讀取與按鍵相連的IO口的輸入電平狀態來執行相應的操作。此外,S1,S2還可以作為外部中斷源,觸發中斷。【實驗內容】1、用調用頭文件的方法,使能MSP430F5529開發板上的8個LED燈依次按順序循環點亮;2、用按鍵S1控制開發板上LED1的亮滅狀態(查詢法);3、用按鍵S2控制開發板上跑馬燈的循環速度(中斷方式)。【實驗步驟】內容1:使能開發板上的8個LED燈依次按順序循環點亮1、打開CCSv5并確定工作區間,然后選擇File->New->CCS Project 彈出圖1-3對話框。圖1-3 新

4、建一個CCS工程2、在 Project name 中輸入新建工程的名稱,在此輸入 lab1_1。3、在 Device 部分選擇器件的型號:在此Family選擇MSP430;Variant選擇MSP430X5XX family,芯片選擇MSP430F552;其余保持默認。4、在左下角對話框中,選擇Empty Projects下拉菜單下的Empty Project(空工程),單擊Finish。5、在新窗口中輸入如下代碼:#include <msp430f5529.h>void main(void)volatile unsigned int i;WDTCTL=WDTPW+WDTHOLD;

5、 / 關閉看門狗P1DIR |= BIT0; /配置P1.0為輸出功能P8DIR |= BIT1 + BIT2; /配置P8.1,P8.2為輸出功能P1DIR |= BIT1 + BIT2 + BIT3 +BIT4 +BIT5;while(1)P1OUT = BIT0;_delay_cycles(500000); /延時P1OUT &= BIT0;P8OUT = BIT1;_delay_cycles(500000); /延時P8OUT = BIT2;_delay_cycles(500000); /延時P8OUT &= BIT2;for(i=BIT1;i<=BIT5; i=

6、i<<1)P1OUT = i;_delay_cycles(500000); /延時6、保存程序后Bulid(單擊菜單中 ,或快捷鍵Ctrl+B)編譯程序。7、調試程序(單擊菜單中 )自動進入調試界面并下載程序。8、運行程序(單擊菜單中 )進行程序的運行、暫停、停止、單步運行等操作。9、觀察實驗現象,回顧操作步驟。內容2:用按鍵S1控制開發板上LED1的亮滅狀態(查詢法)1、關閉上一個工程(在Project Explorer窗口,右鍵 Close Project)。2、建立新工程,步驟同上,并命名為lab1_2。3、在新建工程的編輯窗口輸入如下代碼:#include <msp4

7、30f5529.h>volatile unsigned int flag=0; /定義按鍵標志位void Keyscan(); /申明按鍵檢測函數void main(void)WDTCTL=WDTPW+WDTHOLD; / 關閉看門狗P1DIR |= BIT0; /配置P1.0為輸出功能P1OUT &= BIT0; /初始化禁止LED0亮/*按鍵初始化*/P1DIR &= BIT7;P1OUT |= BIT7;P1REN |= BIT7; /設置為內部上拉 while(1) Keyscan(); /按鍵檢測 if(flag != 0) P1OUT |= BIT0; els

8、e P1OUT &= BIT0; void Keyscan() /按鍵檢測函數 if(P1IN & BIT7) = 0) _delay_cycles(10000); /延時10ms if(P1IN & BIT7) = 0) while(P1IN & BIT7) = 0);/等待按鍵抬起 flag = flag; /按鍵標志位取反 4、編譯、調試并下載程序到開發板。5、運行程序,觀察現象。內容3:用按鍵S2控制開發板上跑馬燈的循環速度(中斷方式)1、建立新工程,步驟同上,并命名為lab1_3。2、在新建工程的編輯窗口輸入如下代碼:#include<msp43

9、0f5529.h>unsigned char flag = 0; /定義按鍵標志位void main()WDTCTL = WDTPW + WDTHOLD; / 關閉看門狗P1DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5;P1OUT &= (BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5);P8DIR |= BIT1 + BIT2;P8OUT &= (BIT1 + BIT2); /初始化LED/*按鍵中斷初始化*/P1DIR &= BIT7; /配置P1.7為按鍵輸入P1OUT |= B

10、IT7;P1REN |= BIT7; /設置為內部上拉P1IE |= BIT7; /P1.7中斷使能P1IFG &= BIT7; /清除P1.7的中斷標志位P1IES |= BIT7; /置1,設置為下降沿觸發_enable_interrupt();while (1)P1OUT |= BIT0;P1OUT &= BIT5;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_cycles(200000);P8OUT |= BIT1;P1OUT &= BIT0;if(flag =0)_delay_cycles(1000000);/

11、閃爍else_delay_cycles(200000);P8OUT |= BIT2 ;P8OUT &= BIT1;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_cycles(200000);P1OUT |= BIT1;P8OUT &= BIT2;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_cycles(200000);P1OUT |= BIT2;P1OUT &= BIT1;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_c

12、ycles(200000);P1OUT |= BIT3;P1OUT &= BIT2;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_cycles(200000);P1OUT |= BIT4;P1OUT &= BIT3;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_cycles(200000);P1OUT |= BIT5;P1OUT &= BIT4;if(flag =0)_delay_cycles(1000000);/閃爍else_delay_cycles(200000);#

13、pragma vector = PORT1_VECTOR_interrupt void PORT_1(void)_delay_cycles(300);while(P1IE & BIT7) = 0); /等待按鍵釋放if(flag=1)flag = 0;elseflag = 1;P1IFG &= BIT7; /清除中斷標志3、編譯、調試并下載程序到開發板。4、運行程序,觀察現象。【思考與分析】1、在實際應用當中,一般將未用的IO口設置為輸出狀態,為什么?試查閱資料加以研究。2、在用查詢法檢測按鍵時,為什么要連續檢測兩次并在此期間加上10ms左右的延時?3、試編寫程序,用開發板上的

14、兩個按鍵及8個LED燈設計一個可控的跑馬燈系統。其中,一個按鍵控制LED燈的流水速度(至少兩種流水速度可調),另一個按鍵控制LED燈的流水方式(至少3種流水方式可調)。實驗二 鍵盤與液晶顯示實驗【實驗目的】1、學習鍵盤及液晶與MCU硬件電路的連接方法;2、掌握鍵盤控制芯片CH452的鍵盤檢測方法;3、掌握TFT2.2真彩液晶屏的使用方法;4、了解SPI總線的通信模式和基本特點。【實驗儀器】1、MSP430G2553 Launch Pad一塊,MSP430F5529 Mini Board 一塊;2、TFT2.2_and_KEY鍵盤接口一塊,TFT2.2液晶屏一塊;3、PC機操作系統Windows

15、 XP或Windows 7,CCSv5.1集成開發環境。【實驗原理】1、液晶顯示的基本原理 TFT-LCD(Thin Film Transistor-Liquid Crystal Display),即薄膜晶體管液晶顯示器,也就是大家常說的真彩液晶顯示屏。它可以“主動的”對屏幕上的各個獨立的像素進行控制。顯示屏由許多可以發出任意顏色的光線的像素組成,只要控制各個像素顯示相應的顏色就能顯示我們想要的色彩斑斕的世界。本實驗所使用的TFT2.2彩色液晶模塊是一個2.2寸的TFT模塊,內置TFT控制器,對外連接直接通過8位的SPI總線進行指令和數據的傳輸。TFT2.2有像素點數為240×320

16、,色彩深度為16位色,也就是每一個像素點需要用16位的數據來表示其顯示內容。TFT2.2模塊的顯示操作非常簡便,需要改變某一個像素點的顏色時,只需要對該點所對應的2個字節的顯存進行操作即可。而為了便于索引操作,模塊將所有的顯存地址分為X軸地址(X Address)和Y軸地址(Y Address),分別可以尋址的范圍為X Address=0239,Y Address=0319,X Address和Y Address交叉對應著一個顯存單元(2byte);這樣只要索引到了某一個X、Y軸地址時,并對該地址的寄存器進行操作,便可對TFT-LCD顯示器上對應的像素點進行操作了。TFT2.2模塊的像素點與顯

17、存對應關系如下圖所示:圖2-1 顯存與像素點對應關系示意圖 液晶模塊與單片機的連接方式見工程Lcd.c文件中。2、矩陣鍵盤檢測的基本原理為了節省單片機的IO口,提高鍵盤檢測的效率和準確性,本實驗我們采用鍵盤控制芯片CH452進行鍵盤掃描。并采用4線串行接口與單片機交換數據,單片機可以頻繁地通過串行接口進行高速操作,而絕對不會降低CH452的工作效率。在鍵盤掃描期間, DIG7DIG0 引腳按照DIG0至DIG7的順序依次輸出高電平,其余7個引腳輸出低電平;SEG7SEG0引腳的輸出被禁止,當沒有鍵被按下時, SEG7SEG0 都被下拉為低電平;當有鍵被按下時,例如連接 DI G3 與 SEG4

18、 的鍵被按下,則當DIG3輸出高電平時SEG4檢測到高電平;為了防止因為按鍵抖動或者外界干擾而產生誤碼,CH452實行兩次掃描,只有當兩次鍵盤掃描的結果相同時,按鍵才會被確認有效。如果CH452檢測到有效的按鍵,則記錄下該按鍵代碼,并通過4線串行接口中的DOUT引腳或者2線串行接口中的INT#引腳產生低電平有效的鍵盤中斷(當INTM為1時輸出低電平脈沖中斷), 此時單片機可以通過串行接口讀取按鍵代碼; 在沒有檢測到新的有效按鍵之前, CH452 不再產生任何鍵盤中斷。CH452不支持組合鍵,也就是說,同一時刻,不能有兩個或者更多的鍵被按下;如果多個鍵同時按下,那么按鍵代碼較小的按鍵優先。有關鍵

19、盤檢測的詳細介紹請參考CH452芯片手冊。【實驗內容】1、練習液晶顯示部分基本函數的使用,如:畫點,畫線,畫矩形,顯示數字、字符、字符串、顯示漢字等;2、仔細研讀鍵盤檢測程序,當有按鍵按下時,將相應的按鍵編碼顯示在液晶屏的合適位置。如:按下KEY5,將在液晶顯示屏上顯示“The KEYCODE is KEY01”;3、自己另編寫一個顯示漢字的函數,顯示你所想要的漢字大小,例如48*48;4、自己另編寫一個顯示圖片的函數,顯示你所想要尺寸的真彩圖片;【實驗步驟】內容1:基本函數的使用1、打開CCSv5,選擇“File>>Import”命令,彈出如圖2-2所示對話框,單擊展開“Code

20、 Composer Studio”選項,選擇“Existing CCS/CCE Eclipse Projects”。圖2-2 導入新的CCSv5工程文件2、單擊“Next”按鈕,彈出圖2-3所示對話框。圖2-2 選擇導入工程目錄3、單擊“Browse”按鈕,選擇工程文件目錄Lcd_and_Key。單擊“Finish”按鈕,即可完成已有工程的導入。4、在此工程下練習一下函數的用法:/* LCD App */void LCD_GPIO(void);/LCD IO初始化void SPI_Init(void); /SPI初始化void LCD_Clear(uint16 Color); /清屏void

21、LCD_CH(uint16 x,uint16 y,const uint8 index); /顯示漢字void LCD_Fill(uint16 xsta,uint16 ysta,uint16 xend,uint16 yend,uint16 color); /顏色填充void LCD_DrawPoint(uint16 x,uint16 y); /畫點void LCD_DrawPoint_big(uint16 x,uint16 y); /畫一個大點void LCD_DrawLine(uint16 x1, uint16 y1, uint16 x2, uint16 y2); /畫線void LCD_Dr

22、awRectangle(uint16 x1, uint16 y1, uint16 x2, uint16 y2); /畫矩形void Draw_Circle(uint16 x0,uint16 y0,uint8 r); /畫圓void LCD_ShowChar(uint16 x,uint16 y,uint8 num,uint8 mode); /顯示一個字符void LCD_ShowNum(uint16 x,uint16 y,uint32 num,uint8 len); /顯示數字void LCD_Show2Num(uint16 x,uint16 y,uint16 num,uint8 len); /

23、顯示2個數字void LCD_ShowFloatNum(uint16 x,uint16 y,double num); /顯示浮點數void LCD_ShowString(uint16 x,uint16 y,int8 *p);/顯示字符串void LCD_ShowPicture();/顯示圖片內容2:按鍵檢測并顯示鍵值void main(void) WDTCTL = WDTPW | WDTHOLD; / 關閉開門狗 PLL_Init(); LCD_GPIO(); SPI_Init(); LCD_Init(); /TFT初始化/*基本刷屏測試*/LCD_Clear(RED);LCD_Clear(G

24、REEN);LCD_Clear(YELLOW);/*清屏,并定義前景色和背景色*/LCD_Clear(RED); BACK_COLOR=BLACK; POINT_COLOR=WHITE; delayms(100); Keyscan(); /鍵盤掃描使能 _bis_SR_register(GIE);while(1)if(key_flag = 1) /按鍵標志位為1,有按鍵按下if(KEYCODE = 1) /判斷是否為KEY1按下KEYCODE = 0;LCD_ShowString(32,64,"The KEYCODE is KEY01");if(KEYCODE = 2) /

25、判斷是否為KEY2按下KEYCODE = 0;LCD_ShowString(32,64,"The KEYCODE is KEY02");key_flag = 0; /按鍵標志位清0 內容3:顯示漢字1、用文字取模軟件生成想要顯示漢字的字模,并將字模數組寫到font.c文件中,在font.h文件中加以聲明;2、在lcd.c文件中改寫漢字顯示函數,并在lcd.h文件中加以聲明;/*函 數 名:LCD_CH48_48功 能:在指定位置顯示一個漢字(48*48大小)入 口 參 數:dcolor內容顏色;gbcolor背景顏色返 回 值:無*/void LCD_CH48_48(uin

26、t16 x,uint16 y,const uint8 index)uint16 i,j; /為了防止溢出,i,j必須定義為16為的int型const uint8 *temp=hanzi48_48; Address_set(x,y,x+47,y+47); /設置區域temp+=index*288;/* 減法更高效 */for(j=288;j>0;j-)for(i=8;i>0;i-) if(*temp&(1<<(8-i)!=0)LCD_WR_DATA(POINT_COLOR);elseLCD_WR_DATA(BACK_COLOR);temp+; 3、在main.c文

27、件中調用漢字顯示函數。內容4:顯示圖片1、用圖片取模軟件生成想要顯示圖片的字模,并將字模數組寫到picture.c文件中,在picture.h文件中加以聲明;2、在lcd.c文件中改寫圖片顯示函數,并在lcd.h文件中加以聲明;/*函 數 名:LCD_ShowPicture1功 能:顯示自定義大小圖片入口參數:x,y坐標;wid 圖片寬度 high 圖片高度返 回 值:無*/void LCD_ShowPicture1(uint16 x,uint16 y,uint16 wid,uint16 high) /顯示自定義大小圖片 int16 i; int16 area=wid*high-1; if(w

28、id>239) wid=239; if(high>319) high=319;Address_set(x,y,x+wid-1,y+high-1);/坐標設置for(i=area;i>=0;i-) LCD_WR_DATA8(image(area-i)*2+1); /發送顏色數據 LCD_WR_DATA8(image(area-i)*2); 3、在main.c文件中調用漢字顯示函數。【思考與分析】1、在液晶顯示程序中能否使用MSP430單片機的低功耗模式?為什么?2、嘗試在TFT2.2真彩液晶屏上編寫一個含有兩級以上的菜單程序,菜單風格自擬。實驗三 時鐘系統配置實驗【實驗目的】1

29、、掌握MSP430的時鐘系統結構與工作原理;2、了解MSP430系列單片機幾種時鐘信號的基本用途;3、學會用FLL鎖頻環配置時鐘;【實驗儀器】1、SEED-EXP430F5529v1.0開發板一套;2、TDS210雙蹤示波器一臺;3、PC機操作系統Windows XP或Windows 7,CCSv5.1集成開發環境。【實驗原理】在MSP430單片機中,時鐘系統的主要作用是為CPU工作提供時序,以及為不同的片內外設提供不同頻率的時鐘。1、5個時鐘輸入源(1)XT1CLK 低頻或高頻時鐘源:可以使用標準晶振,振蕩器或者外部時鐘源輸入4MHz32MHz。XT1CLK可以作為內部FLL模塊的參考時鐘。

30、(2)XT2CLK 高頻時鐘源:可以使用標準晶振,振蕩器或者外部時鐘源輸入4MHz32MHz。(3)VLOCLK 低功耗低頻內部時鐘源:典型值為10KHZ。(4)REFOCLK 低頻修整內部參考時鐘源:典型值為32768Hz,作為FLL基準時鐘源。(5)DCOCLK 片內數字控制時鐘源:通過FLL模塊來穩定。2、3個時鐘信號(1)ACLK 輔助時鐘:ACLK可由軟件選擇來自XT1CLK、REFOCLK、VLOCLK、DCOCLK、DCOCLKDIV、XT2CLK(由具體器件決定)這幾個時鐘源之一。然后經1、2、4、8、16、32分頻得到。ACLK可由軟件選作各個外設模塊的時鐘信號,一般用于低速

31、外設模塊。(2)MCLK 系統主時鐘: MCLK可由軟件選擇來自上述5種時鐘源,同樣可經過分頻得到。MCLK主要用于CPU和系統。(3)SMCLK 子系統時鐘:可由軟件選擇來自上述5種時鐘源,同樣可經過分頻得到。 SMCLK可由軟件選作各個外設模塊的時鐘信號,主要用于高速外設模塊。通過軟件配置,可以通過5個時鐘輸入源來產生特定頻率的3個時鐘信號供CPU和外設使用。3、MSP430F5xx/6xx系列單片機的時鐘系統結構框圖如圖3-1所示。圖3-1 MSP430F5xx/6xx系列單片機的時鐘系統結構框圖4、MSP430單片機的P1.0、P2.2、P7.7引腳的第二功能可以分別輸出ACLK、SM

32、CLK、MCLK,我們可以通過設置相應時鐘信號從對應引腳輸出,用示波器進行觀察。【實驗內容】1、編寫時鐘配置程序,設置ACLK=XT1CLK =32768Hz,SMCLK=XT2CLK=4MHz,MCLK=DCO(默認)=32×ACLK=1048576Hz,并將ACLK、SMCLK和MCLK分別通過P1.0、P2.2、P7.7口輸出;2、通過FLL鎖頻環電路自動校正技術使內部DCO振蕩器穩定地運行在2.45MHz。【實驗步驟】內容1:配置并輸出輔助時鐘ACLK、子系統時鐘SMCLK及主時鐘MCLK1、建立新工程,并命名為lab3_1。2、在新建工程的編輯窗口輸入如下代碼:#inclu

33、de <msp430f5529.h>void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop WDTP1DIR |= BIT0; / ACLK set out to pinsP1SEL |= BIT0;P2DIR |= BIT2; / SMCLK set out to pinsP2SEL |= BIT2;P7DIR |= BIT7; / MCLK set out to pinsP7SEL |= BIT7;P7SEL |= BIT2+BIT3; / Port select XT2UCSCTL6 &= XT2OFF; / Set XT2 O

34、nUCSCTL6 &= (XT1OFF); / XT1 OnUCSCTL6 |= XCAP_3; / Internal load cap/ Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag UCSCTL6 &

35、amp;= XT2DRIVE0; / Decrease XT2 Drive according to / expected frequency UCSCTL4 |= SELA_0 + SELS_5; / Select SMCLK, ACLK source and DCO source while(1); / Loop in place 3、編譯、調試并下載程序到開發板。4、運行程序,用示波器觀察P1.0、P2.2、P7.7口的輸出波形。內容2:通過FLL鎖頻環電路自動校正技術使內部DCO振蕩器穩定地運行在2.45MHz。注意:相互關系式有:ACLK=XT1=32768Hz,MCLK=SMCLK

36、=DCO=(74+1)*REFO=2457600Hz,這里XT1CLK被選為ACLK,REFO是內部調整過的32768Hz參考時鐘,提供一個穩定的參考時鐘用作FLLREFCLK。1、建立新工程,步驟同上,并命名為lab3_2。2、在新建工程的編輯窗口輸入如下代碼:#include <msp430f5529.h>void main(void)WDTCTL = WDTPW + WDTHOLD; / Stop WDTP1DIR |= BIT0; / ACLK set out to pinsP1SEL |= BIT0;P2DIR |= BIT2; / SMCLK set out to pi

37、nsP2SEL |= BIT2;P7DIR |= BIT7; / MCLK set out to pinsP7SEL |= BIT7;UCSCTL6 &= (XT1OFF); / XT1 OnUCSCTL6 |= XCAP_3; / Internal load cap/ Loop until XT1 fault flag is cleared do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + DCOFFG); / Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags

38、 while (SFRIFG1&OFIFG); / Test oscillator fault flag / Initialize DCO to 2.45MHz _bis_SR_register(SCG0); / Disable the FLL control loop UCSCTL0 = 0x0000; / Set lowest possible DCOx, MODx UCSCTL1 = DCORSEL_3; / Set RSELx for DCO = 4.9 MHz UCSCTL2 = FLLD_1 + 74; / Set DCO Multiplier for 2.45MHz /

39、(N + 1) * FLLRef = Fdco / (74 + 1) * 32768 = 2.45MHz / Set FLL Div = fDCOCLK/2 _bic_SR_register(SCG0); / Enable the FLL control loop / UG for optimization. / 32 x 32 x 2.45 MHz / 32,768 Hz = 76563 = MCLK cycles for DCO to settle _delay_cycles(76563); / Loop until XT1,XT2 & DCO fault flag is clea

40、red do UCSCTL7 &= (XT2OFFG + XT1LFOFFG + 0x0004 + DCOFFG);/ Clear XT2,XT1,DCO fault flags SFRIFG1 &= OFIFG; / Clear fault flags while (SFRIFG1&OFIFG); / Test oscillator fault flag while(1); / Loop in place3、編譯、調試并下載程序到開發板。4、運行程序,用示波器觀察P1.0、P2.2、P7.7口的輸出波形。【思考與分析】1、在不做任何配置的情況下,MSP430F5529

41、單片機的各個時鐘的默認值是多少?試編程加以驗證。2、試編寫程序驗證MSP430F5529單片機的主時鐘頻率最大可達到多少?3、MSP430系列單片機最大的特點是低功耗,低功耗是如何體現的?查閱資料,加以詳細論述。實驗四 看門狗與定時器實驗【實驗目的】1、了解看門狗定時器的基本作用;2、學會使用定時器在MSP430的某一引腳輸出特定占空比的方波;3、掌握MSP430系列單片機定時器的幾種工作模式;4、熟悉MSP430系列單片機定時器的比較/捕獲功能。【實驗儀器】1、MSP430G2553 Launch Pad一塊,MSP430F5529 Mini Board 一塊;2、TFT2.2_and_KE

42、Y鍵盤接口一塊,TFT2.2液晶屏一塊;3、TDS210雙蹤示波器一臺;4、PC機操作系統Windows XP或Windows 7,CCSv5.1集成開發環境。【實驗原理】看門狗定時器主要用于在程序跑飛時,則不會在看門狗定時時間到達之前執行看門狗清零指令,看門狗就會溢出,從而使系統產生復位,保證程序的正常運行。16位定時器的計數值寄存器TAR在每個時鐘信號的上升沿進行增加/減少,可利用軟件讀取TAR寄存器的計數值。此外,當定時時間到,產生溢出時,定時器可產生中斷。置位定時器控制寄存器中的TACLR控制位,可自動清除TAR寄存器的計數值,同時,在增/減計數模式下,清除了時鐘分頻器和計數方向。Ti

43、mer_A共有4種工作模式:停止模式、增計數模式、連續計數模式和增/減計數模式,具體工作模式可以通過MC控制位進行選擇,具體配置如表4-1所示。表4-1 Timer_A工作模式配置列表MC控制位配置值Timer_A工作模式描 述00停止模式Timer_A停止01增計數模式Timer_A從0到TAxCCR0重復計數10連續計數模式Timer_A從0到0FFFFh重復計數11增/減計數模式Timer_A從0增計數到TAxCCR0之后減計數到0,循環往復定時器Timer_A的捕獲模式:當CAP控制位置為1時,捕獲/比較模塊配置為捕獲模式。捕獲模式被用于捕獲事件發生的時間。捕獲輸入CCIxA和CCIx

44、B可連接外部引腳或內部信號,這需通過CCIS控制位進行配置。可通過CM控制位將捕獲輸入信號觸發沿配置為上升沿觸發、下降沿觸發或兩者都觸發。捕獲事件在所選輸入信號觸發沿產生,如果產生捕獲事件,定時器將完成以下工作:l 主計數器計數值復制到TAxCCRn寄存器中;l 置位中斷標志位CCIFG。【實驗內容】1、使用看門狗定時功能產生一個方波(周期性的取反P1.0);2、利用定時器TA0,使其工作在增計數模式下,選擇ACLK作為其參考時鐘。將P1.2和P1.3引腳配置為定時器輸出,且使CCR1和CCR2工作在比較輸出模式7下,最終使P1.2引腳輸出75%占空比的PWM波形,使P1.3引腳輸出25%占空

45、比的PWM波形。3、選擇鍵盤上的一個按鍵,當該按鍵按下一次時,打開定時器開始計時,利用定時器的捕獲功能,捕捉該按鍵再次按下時的精確時間,并將該時間顯示在液晶顯示屏上。【實驗步驟】內容1:看門狗定時器產生方波信號1、建立新工程,并命名為lab4_1。2、在新建工程的編輯窗口輸入如下代碼:#include <msp430f5529.h>void main(void)WDTCTL = WDTPW+WDTCNTCL+WDTSSEL0+WDTIS_5;/ 看門狗定時器工作在看門狗模式,定時1S,選擇ACLK作為參考時鐘P1DIR |= 0x01; / 設置P1.0端口為輸出P1OUT = 0

46、x01; / 反轉P1.0端口狀態_bis_SR_register(LPM3_bits + GIE);/ 進入低功耗模式3,并啟用中斷3、編譯、調試并下載程序到開發板。4、運行程序,用示波器觀察P1.0口的輸出波形。內容2:用定時器產生特定占空比的PWM信號1、建立新工程,步驟同上,并命名為lab4_2。2、在新建工程的編輯窗口輸入如下代碼:#include <msp430f5529.h>void main(void) WDTCTL = WDTPW + WDTHOLD; / 關閉看門狗P1DIR |= BIT2+BIT3; / P1.2和P1.3設為輸出P1SEL |= BIT2+BIT3; / P1.2和P1.3引腳功能選為定時器輸出TA0CCR0 = 512-1; / PWM周期定義TA0CCTL1 = OUTMOD_7; /

溫馨提示

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

評論

0/150

提交評論