MSP430單片機(jī)入門(mén)課件講解_第1頁(yè)
MSP430單片機(jī)入門(mén)課件講解_第2頁(yè)
MSP430單片機(jī)入門(mén)課件講解_第3頁(yè)
MSP430單片機(jī)入門(mén)課件講解_第4頁(yè)
MSP430單片機(jī)入門(mén)課件講解_第5頁(yè)
已閱讀5頁(yè),還剩63頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

MSP430專(zhuān)題2005年11月本講稿可以在電子中心網(wǎng)站或

課件欄目下載什么是單片機(jī)單片機(jī)也叫微控制器單片機(jī)就是單片計(jì)算機(jī)一個(gè)芯片就是一臺(tái)計(jì)算機(jī)

計(jì)算機(jī)CPU兩大營(yíng):INTELAMD

單片機(jī)五花八門(mén)按總線(xiàn)寬度分:4位機(jī);8位機(jī);

16位機(jī);

32位機(jī);運(yùn)行速度可以調(diào)整:32K12M266M等有很多國(guó)際大公司參與設(shè)計(jì)生產(chǎn):51系列幾十個(gè)公司生產(chǎn)PIC系列美國(guó)微芯摩托羅拉臺(tái)灣大陸蘇州飛利浦的系列8位51系列以及32位ARM系列德州儀器的系列430十六位單片機(jī)南京東大可以生產(chǎn)ARM單片機(jī)應(yīng)用舉例我們周?chē)膯纹瑱C(jī)應(yīng)用有:空調(diào)洗衣機(jī)電視機(jī)微波爐電子手表手機(jī)食堂消費(fèi)機(jī)計(jì)算機(jī)外圍:鼠標(biāo)、鍵盤(pán)、硬盤(pán)、光碟一輛汽車(chē)有40片左右單片機(jī)等等以上列舉都是單片機(jī)應(yīng)用??照{(diào)機(jī)控制系統(tǒng)框圖CPU單元溫度采集單元壓縮機(jī)風(fēng)機(jī)鍵盤(pán)顯示學(xué)習(xí)MSP430單片機(jī)推薦參考書(shū)《MSP430系列超低功耗16位單片機(jī)接口技術(shù)及系統(tǒng)設(shè)計(jì)實(shí)例》

北航出版社魏小龍編著《MSP430系列單片機(jī)C語(yǔ)言程序設(shè)計(jì)與開(kāi)發(fā)》

北航出版社胡大可編著MSP430單片機(jī)學(xué)習(xí)方法強(qiáng)化理論知識(shí)大量做實(shí)驗(yàn)勤于思考多動(dòng)手已經(jīng)與MSP430廠家———TI(德州儀器)建立了聯(lián)合實(shí)驗(yàn)室,擁有60套實(shí)驗(yàn)設(shè)備。地點(diǎn):3410。其中40套為贈(zèng)送,20套購(gòu)買(mǎi)MSP430F449單片機(jī)結(jié)構(gòu)

MSP430F449片內(nèi)資源16-BitRISC結(jié)構(gòu),12-BitA/D16-BitTimer_B

16-BitTimer_A6*8I/O比較器USART160SegmentsLCD60KB+256BFlashMemory,2KBRAM看門(mén)狗基本定時(shí)器

MSP430F449內(nèi)部有什么?上頁(yè)內(nèi)容MSP430F449全有在仿真環(huán)境內(nèi),我們可以清楚地看到他們打開(kāi)仿真環(huán)境的對(duì)應(yīng)窗口即可。MSP430開(kāi)發(fā)流程編寫(xiě)源代碼修改程序硬件準(zhǔn)備結(jié)束仿真調(diào)試滿(mǎn)意?修改硬件軟件不滿(mǎn)意硬件不滿(mǎn)意滿(mǎn)意MSP430開(kāi)發(fā)調(diào)試過(guò)程1、建立工程項(xiàng)目2、編寫(xiě)源代碼3、將源代碼添加到項(xiàng)目文件4、選擇器件5、選擇仿真方式6、編譯下載代碼到芯片7、仿真調(diào)試(演示)

數(shù)據(jù)類(lèi)型字節(jié)數(shù)數(shù)據(jù)表示范圍注釋sfrb,sfrw1

聲明字節(jié)或字長(zhǎng)度的I/O類(lèi)型char(默認(rèn)類(lèi)型)10—255等價(jià)于unsignedcharchar(使用-c選項(xiàng))1-128—127等價(jià)于signedcharsignedchar1-128—127

unsignedchar10—255

short,int2-32768—32767

unsignedshortunsignedint20—65535

long412147483648—2147483647

unsignedlong 40—4294967295pointer 2

指針類(lèi)型float418E-38—39E+38浮點(diǎn)類(lèi)型double,longdouble 418E-38—39E+38

表達(dá)式語(yǔ)句(結(jié)構(gòu))

條件語(yǔ)句

開(kāi)關(guān)語(yǔ)句

循環(huán)語(yǔ)句

返回語(yǔ)句

條件語(yǔ)句

語(yǔ)句表達(dá)形式有3種(a、b、c):a if(條件表達(dá)式)語(yǔ)句b if(條件表達(dá)式)語(yǔ)句1 else語(yǔ)句2c if(條件表達(dá)式)語(yǔ)句1 elseif(條件表達(dá)式)語(yǔ)句2 elseif(條件表達(dá)式)語(yǔ)句3

……開(kāi)關(guān)語(yǔ)句

switch(表達(dá)式) { case常量表達(dá)式1:語(yǔ)句1 break; case常量表達(dá)式2:語(yǔ)句2 break; case常量表達(dá)式3:語(yǔ)句3 break;

…… default:語(yǔ)句d }循環(huán)語(yǔ)句

while(條件表達(dá)式)語(yǔ)句; 當(dāng)條件滿(mǎn)足時(shí),就反復(fù)執(zhí)行后面的語(yǔ)句,一直執(zhí)行到條件不滿(mǎn)足時(shí)。以軟件延時(shí)程序?yàn)槔f(shuō)明該語(yǔ)句是如何執(zhí)行的。voiddelay(longv){while(v!=0)v--;}do語(yǔ)句while(條件表達(dá)式) 先執(zhí)行一次循環(huán)體的語(yǔ)句,再判斷條件是否滿(mǎn)足,以決定是否再執(zhí)行循環(huán)體。下面的程序?qū)?shù)組BUFF[20]中的全部數(shù)據(jù)相加。

Intx=0; CharI=0; Do{ x=BUFF[I]+x; I=I+1; } while(I<20);……for([初值設(shè)定表達(dá)式];[循環(huán)條件表達(dá)式];[條件更新表達(dá)式])語(yǔ)句

for語(yǔ)句常用于需固定循環(huán)次數(shù)的循環(huán)。下面的程序段同樣實(shí)現(xiàn)將數(shù)組BUFF[20]中的全部數(shù)據(jù)相加的功能。Intx=0; CharI=0;for(I=0;I<20;I++) x=BUFF[I]+x;

……goto語(yǔ)句標(biāo)號(hào)

goto語(yǔ)句常用于跳轉(zhuǎn)到一個(gè)固定的地址標(biāo)號(hào)。其中固定的地址標(biāo)號(hào)是一個(gè)帶“:”的標(biāo)志符。比如:

……MM:……

…… gotoMMM

……函數(shù)的定義與調(diào)用

函數(shù)類(lèi)型函數(shù)名(形式參數(shù)表) 形式參數(shù)說(shuō)明

{

局部變量定義 函數(shù)體語(yǔ)句

}[存儲(chǔ)變量類(lèi)型]interrupt[中斷矢量變量]函數(shù)類(lèi)型函數(shù)名(形式參數(shù)表) 形式參數(shù)說(shuō)明

{

局部變量定義 函數(shù)體語(yǔ)句

}經(jīng)常使用的延時(shí)函數(shù) voiddelay(longv){while(v!=0)v--;}delay(100)究竟延時(shí)多久呢?就是這句話(huà)執(zhí)行需要的時(shí)間。時(shí)間等于:機(jī)器周期×需要的機(jī)器周期數(shù)(在仿真環(huán)境中可以測(cè)試出來(lái))MSP430單片機(jī)的輸入輸出P1P2P3P4P5P6引腳控制寄存器PnDIR 方向寄存器 1為輸出、0為輸入PnOUT 輸出寄存器 1輸出高、0為低PnIN 輸入寄存器 讀出口線(xiàn)的狀態(tài)PnSEL 第二功能寄存器

n=1,2,3,4,5,6引腳使用舉例控制連接在P5.1口線(xiàn)的發(fā)光二極管的亮與熄:首先、 P51為輸出 ---P5DIR=0x02;亮 輸出1 ---P5OUT=2;熄滅 輸出0 ---P5OUT=0;如何讓發(fā)光二級(jí)管閃爍?1、亮2、延時(shí)1秒鐘3、熄滅4、延時(shí)1秒鐘5、跳轉(zhuǎn)到步驟1(演示)如何改變發(fā)光二級(jí)管閃爍的速度?改變延時(shí)的時(shí)間參數(shù)1、亮2、延時(shí)1秒鐘3、熄滅4、延時(shí)1秒鐘5、跳轉(zhuǎn)到步驟1(演示)如何讓一只發(fā)光管閃快、另一只慢?增加一個(gè)變量xxxx為模5計(jì)數(shù)器只有當(dāng)xx為1的時(shí)候第一發(fā)光管亮只有當(dāng)xx小于4的時(shí)候第二發(fā)光管亮其余時(shí)間兩個(gè)都熄滅(5分鐘時(shí)間學(xué)生自己編寫(xiě)程序)第三個(gè)按鈕控制前兩個(gè)按鈕Charkey_en=0;If(key==2)key_en=~key_en;If((key==0)&(key_en==0)){}If((key==1)&(key_en==0)){}串行密碼鎖設(shè)計(jì)按照順序:KEY0-KEY1-KEY2;

KEY1-KEY0-KEY2;K0-K0-K0-K1-K2-K0-K2;K2-K2-K0-K1-K2;錯(cuò)誤狀態(tài)的清除很重要??!如何讓單片機(jī)發(fā)聲?聲音是什么?——聲音是震動(dòng)產(chǎn)生的;揚(yáng)聲器發(fā)聲的原理:處在磁場(chǎng)中的有電流的線(xiàn)圈產(chǎn)生震動(dòng),繼而發(fā)聲。不同的頻率產(chǎn)生不同的聲音;MSP430的端口可以輸出不同的頻率;繼而可以推動(dòng)揚(yáng)聲器產(chǎn)生不同的聲音。下頁(yè)的程序?qū)l(fā)出什么聲音呢?第一段程序voidgun(void){for(ff=40;ff<200;ff++){P6OUT^=BIT0;//對(duì)輸出置反

for(tmp=0;tmp<ff;tmp++);//延時(shí)

}}第二段程序voids1(void){for(ff=30;ff<500;ff++){P6OUT^=BIT0;//對(duì)輸出置反

for(tmp=0;tmp<ff;tmp++);//延時(shí)

}}第三段程序voids2(void){for(ff=50;ff<100;ff++){P6OUT^=BIT0;//對(duì)輸出置反

for(tmp=0;tmp<ff;tmp++);//延時(shí)

}}總結(jié)以上三段程序的結(jié)構(gòu)完全一樣,但是效果完全不一樣!主要為:頻率不一樣;各頻率段的延時(shí)不一樣。第三段頻率高,延時(shí)短。數(shù)碼管的顯示CBEGAFDEGAFD以上為數(shù)碼管的原理,實(shí)質(zhì)為8只發(fā)光二級(jí)管,地端連接在一起,當(dāng)給ADEG高電平時(shí)將顯示數(shù)字“2”。CAEDBFGNDHG01111101如何顯示實(shí)驗(yàn)系統(tǒng)有6只數(shù)碼管連接在端口上。程序舉例(演示)液晶顯示器的使用液晶顯示器的控制寄存器LCDCTLLCDMEMI常用:LCDCTL=0XDF;液晶顯示原理與顯示碼表CBEGAFDCBEGAFD如果紅色顯示將顯示數(shù)字“2”如果HGFEDCBA對(duì)應(yīng)一個(gè)字節(jié)的高到低位則顯示碼為:HGFEDCBA 010110110x5b常用數(shù)字的液晶段碼HGFEDCBA0123456789液晶碼表什么是碼表?就是一個(gè)數(shù)組,用于查找對(duì)應(yīng)數(shù)字的顯示碼LCD_TAB[10]={0x3f,0x06,0x5b…….};當(dāng)要顯示“1”的時(shí)候,使用語(yǔ)句:LCDMEM[N]=LCD_TAB[1];為什么?在液晶屏上顯示數(shù)據(jù)依次顯示0-6:charI;For(I=0;I<7;I++)LCDMEM[I]=LCD_TAB[I];如何在液晶上循環(huán)顯示作為思考題自己編寫(xiě)程序?yàn)樯蠙C(jī)內(nèi)容如何在液晶上顯示閃動(dòng)的數(shù)字作為思考題上機(jī)內(nèi)容定時(shí)器TATA的原理:TA的工作方式4種工作模式:連續(xù)增減停定時(shí)器TA的寄存器控制寄存器TACTL捕獲/比較寄存器定時(shí)器應(yīng)用舉例產(chǎn)生1秒的定時(shí)信號(hào):首先、選擇輸入信號(hào)來(lái)源其次、選擇工作模式最后、設(shè)定比較值開(kāi)啟中斷、啟動(dòng)定時(shí)器等待時(shí)間的到達(dá)。時(shí)鐘的設(shè)計(jì)作為上機(jī)內(nèi)容,請(qǐng)同學(xué)們自己編寫(xiě)完整程序要點(diǎn):1、定時(shí)器設(shè)置為1秒中斷一次2、寫(xiě)時(shí)間程序兩個(gè)60進(jìn)制,一個(gè)24進(jìn)制,7進(jìn)制3、時(shí)間送液晶顯示4、顯示:星期時(shí)分秒

5、每秒發(fā)光二極管閃爍設(shè)計(jì)鬧鐘要點(diǎn):

1、基于前面的時(shí)鐘程序

2、增加時(shí)間控制

3、到達(dá)規(guī)定的時(shí)間點(diǎn),發(fā)光二極管亮5秒掃描鍵盤(pán)鍵盤(pán)原理掃描鍵盤(pán)為行列掃描掃描鍵盤(pán)的完整程序?yàn)椋?、判斷是否有按鍵按下;2、判斷是哪個(gè)按鍵按下;3、判斷是否按鍵松開(kāi)。按鍵原理圖電路原理圖行線(xiàn)P11、P12、P13

列線(xiàn)P14、P15、P16、P17全上拉P13P14P16P17P15P12P11如何判斷是否有按鍵按下首先、設(shè)置端口:行線(xiàn)為輸出、列線(xiàn)為輸入。然后、行線(xiàn)輸出為低電平最后判斷:如果有按鍵按下,則列線(xiàn)不全為高電平,如果沒(méi)有鍵按下,則列線(xiàn)全部為高電平。charKeyj(void){ P1DIR=0x0E;//setp1.1~p1.3設(shè)置為輸出模式P1OUT=0x00;//p1.1~p1.3輸出值清零return(P1IN&0xf0);}如果返回值為0xf0

則有按鍵按下嗎?以后直接調(diào)用這個(gè)函數(shù),即可判斷有否按鍵按下。注意:有鍵按下后,需要消抖動(dòng)使用延時(shí)再判斷的方法即可消除抖動(dòng)If(Keyj()!=0xf0){delay(200); //延時(shí)消除抖動(dòng)

If(Keyj()==0xf0)exit; //沒(méi)有按鍵未抖動(dòng)

else //確實(shí)有鍵按下

{ //處理

}檢查程序正確性測(cè)試方法:如果有按鍵按下則發(fā)光管亮If(Keyj()!=0xf0){delay(200); //延時(shí)消除抖動(dòng)

If(Keyj()==0xf0)exit; //沒(méi)有按鍵為抖動(dòng)

else //確實(shí)有鍵按下

{P1OUT=1; //處理DELAY(10000);P1OUT=0;}如何查找哪個(gè)按鍵按下方法為:一個(gè)一個(gè)地查找。先第一行輸出0,檢查列線(xiàn)是否非全高否則第二行輸出0,檢查列線(xiàn)是否非全高否則第三行輸出0,檢查列線(xiàn)是否非全高如果某行輸出0時(shí),查到列線(xiàn)非全高,則該行有按鍵按下。根據(jù)第幾行線(xiàn)輸出0與第幾列線(xiàn)讀入為0,即可判斷在具體什么位置的按鍵按下。下頁(yè)具體程序。voidcheck_Key(void){unsignedcharrow,col,tmp1,tmp2;//tmp1用來(lái)設(shè)置P1OUT的值,使P1.1~P1.3中有一個(gè)為0tmp1=0x08;for(row=0;row<3;row++){P1OUT|=0x0E;//p1.1~P1.3=1P1OUT-=tmp1;//P1.1~p1.3中有一個(gè)為0tmp1=tmp1/2;//tmp1右移一位

if((P1IN&0xf0)<0xf0){//是否P1IN的P1.4~P1.7中有一位為0tmp2=0x80;//tmp2用于檢測(cè)出那一位為0for(col=0;col<0x04;col++){//列檢測(cè)

if((P1IN&tmp2)==0x00){//是否是該列

key_val=key_Map[row*4+col];//獲取鍵值

return; //退出循環(huán)

}tmp2/=2; //tmp2右移

}}}}完整的鍵盤(pán)程序de鍵盤(pán)程序過(guò)程:判斷按鍵消除抖動(dòng)判斷位置等待松開(kāi)voidkey(void){If(Keyj()!=0xf0){delay(200); //延時(shí)消抖

If(Keyj()!=0xf0) //確實(shí)按下

check_Key();Wait:if(Keyj()==0xf0)gotowait;//等待松開(kāi)}將鍵盤(pán)的鍵碼液晶顯示設(shè)計(jì)時(shí)間控制器要求:(2、3同學(xué)討論設(shè)計(jì))時(shí)間可以調(diào)整控制點(diǎn)5個(gè)可以鍵盤(pán)輸入控制時(shí)間到,發(fā)光管亮可以輸入每個(gè)控制點(diǎn)的發(fā)光管亮的時(shí)間5-20秒計(jì)算器設(shè)計(jì)要求:(鍵盤(pán)與液晶)(2、3同學(xué)討論設(shè)計(jì))被操作數(shù)2位,結(jié)果4位運(yùn)算:+-×/操作規(guī)則:1、輸入兩個(gè)數(shù)字為第一操作數(shù)2、輸入運(yùn)算:1、2、3、4

+-×/3、輸入兩個(gè)數(shù)字為第二操作數(shù)4、#為取消5、※為回車(chē)運(yùn)算(等號(hào))ADC12的使用deMSP430內(nèi)含12路12位200KPS的ADC:模擬輸入端為P6,將P6設(shè)置為第二功能則為ADC12;A10為內(nèi)部溫度傳感器;ADC12框圖ADC12 使用舉例首先設(shè)置ADC12:ADC12CTL0=ADC12ON+REFON+REF2_

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論