基于MSP430F5438A單片機(jī)測(cè)量頻率的程序?qū)嵗齙第1頁(yè)
基于MSP430F5438A單片機(jī)測(cè)量頻率的程序?qū)嵗齙第2頁(yè)
基于MSP430F5438A單片機(jī)測(cè)量頻率的程序?qū)嵗齙第3頁(yè)
基于MSP430F5438A單片機(jī)測(cè)量頻率的程序?qū)嵗齙第4頁(yè)
基于MSP430F5438A單片機(jī)測(cè)量頻率的程序?qū)嵗齙第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、基于MSP430F5438A單片機(jī)測(cè)量頻率的程序?qū)嵗?*程序描述:利用Timer_A捕獲脈沖寬度利用MSP430單片機(jī)定時(shí)器A和捕獲/比較功能模塊結(jié)合使用,實(shí)現(xiàn)脈沖寬度的測(cè)量程序用到了定時(shí)器A的CCI1A端口(MSP430F14X的P1.2引腳)作捕獲外部輸入的脈沖電平跳變,start,end,兩個(gè)個(gè)變量來(lái)計(jì)算脈沖寬度*/#include msp430x14x.h#include lcd12864.huint start,end;uint width; /=用于存放脈寬=uint period; /=用于存放周期=uint frequency; /=用于存放頻率=uint fy7; /=用于存

2、放頻率顯示數(shù)據(jù)=uint pd7; /=用于存放周期顯示數(shù)據(jù)=uint wh6; /=用于存放脈寬顯示數(shù)據(jù)=const unsigned char zhouqi=周期為:(us) ; const unsigned char us=us ;const unsigned char pinlv=頻率為:(Hz) ;const unsigned char hz=HZ ;void process(void); /=函數(shù)聲明=void delay(); /=延時(shí)函數(shù)=void InitSys(); /=初始化時(shí)鐘=/* 主函數(shù)*/int main( void ) WDTCTL = WDTPW + WDTH

3、OLD; /=關(guān)狗= InitSys(); /=初始化時(shí)鐘,SMCLK,MCLK均為8M= P1DIR&=BIT2; P1SEL = BIT2; /=設(shè)置P1.2端口為功能模塊使用,即:做捕獲源= TACTL = TASSEL_2+ID_3+TACLR+TAIE+MC1;/=定時(shí)器A時(shí)鐘信號(hào)選擇SMCLK,8分頻,同時(shí)設(shè)置定時(shí)器A計(jì)數(shù)模式為連續(xù)增計(jì)模式= CCTL1 = CM_1+SCS+CAP+CCIE; /=輸入上升沿捕獲,CCI0A為捕獲信號(hào)源= _EINT(); /=開全局中斷允許= Ini_Lcd(); /=初始化液晶= Clear_GDRAM(); /=清屏= Disp_HZ(0x

4、80,zhouqi,8); Disp_HZ(0x88,pinlv,8); while(1) process(); Write_Cmd(0x90);/=寫地址= Write_Data(0x30+pd6); Write_Data(0x30+pd5); Write_Data(0x30+pd4); Write_Data(0x30+pd3); Write_Data(0x30+pd2); Write_Data(0x30+pd1); Write_Data(0x30+pd0); Write_Cmd(0x98);/=寫地址= Write_Data(0x30+fy6); Write_Data(0x30+fy5);

5、 Write_Data(0x30+fy4); Write_Data(0x30+fy3); Write_Data(0x30+fy2); Write_Data(0x30+fy1); Write_Data(0x30+fy0); delay(); /* 初始化時(shí)鐘*/void InitSys() unsigned int i; /- 使用XT2振蕩器 - BCSCTL1&=XT2OFF; /=打開XT2振蕩器= do IFG1 &= OFIFG; /=清除振蕩器失效標(biāo)志= for (i = 0xFF; i 0; i-); /=延時(shí),等待XT2起振= while (IFG1 & OFIFG) != 0)

6、; /=判斷XT2是否起振= BCSCTL2 =SELM_2+SELS; /=選擇MCLK、SMCLK為XT2,8M= /* 延時(shí)函數(shù)*/void delay() unsigned int i; unsigned int j=10; for(i=10;i0;i-) while(j-); /* 數(shù)據(jù)處理 */void process(void) while(endstart); /while(endstart width = end-start; /=實(shí)際脈沖寬度的計(jì)算= period = 2* width; frequency=/period; pd6=period/; pd5=(period

7、-*pd6)/; pd4=(period-*pd6-*pd5)/10000; pd3=(period-*pd6-*pd5-10000*pd4)/1000; pd2=(period-*pd6-*pd5-10000*pd4-1000*pd3)/100; pd1=(period-*pd6-*pd5-10000*pd4-1000*pd3-100*pd2)/10; pd0=period%10; fy6=frequency/; fy5=(frequency-*fy6)/; fy4=(frequency-*fy6-*fy5)/10000; fy3=(frequency-*fy6-*fy5-10000*fy4

8、)/1000; fy2=(frequency-*fy6-*fy5-10000*fy4-1000*fy3)/100; fy1=(frequency-*fy6-*fy5-10000*fy4-1000*fy3-100*fy2)/10; fy0=frequency%10;/* 中斷處理函數(shù)*/#pragma vector=TIMERA1_VECTOR /=定時(shí)器A中斷處理=_interrupt void timer_a(void) switch(TAIV) /=向量查詢= case 2: /=捕獲中斷= if(CCTL1&CM0) /=捕獲到上升沿= CCTL1=(CCTL1&(CM0)|CM1; /=更變?cè)O(shè)置為下降沿觸發(fā)= start=TAR; /=記錄初始時(shí)間= e

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論