欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于msp430F149單片機的頻測量+最高頻率12MH
[打印本頁]
作者:
悟不出來
時間:
2021-12-12 10:37
標題:
基于msp430F149單片機的頻測量+最高頻率12MH
最高可采集到12MHZ,經過測試精度極高,可以精確到小數點后三位
單片機源程序如下:
/*********************************************************************
程 序 名:基于msp430F149單片機的頻率計
版 本 :PLj
時 間 :2015.11.17~2015.11.24
班 級 :電子1302班
功 能 :頻率計
使用說明:被測信號輸入p1.0口;LCD12864顯示;頻率測量范圍:1hz~12.5MHZ;
1hz~10MHZ 誤差萬分之一以內;
*********************************************************************/
#include <msp430x14x.h>
#include "set_clock.h"
#include "lcd12864.h"
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
uchar xianshi1[]; // 定義顯示數組
long int pinlvzhi; // 頻率計數常量
int number; // 中斷計數常量
uint old_pinlvzhi,new_pinlvzhi;// 計數器原始值、計數器更新值
void set_TimerA_TACTL(void); //設置定時器A的寄存器TACTL,TAR清零,開啟溢出中斷,使用外部引腳TACLK輸入。
void fenchai(); //把頻率的數值分拆放入顯示數和去掉高位為0的數值
/*********************************************************************
函數名:void main()
功能: 主函數;
*********************************************************************/
void main()
{
WDTCTL=WDTPW+WDTHOLD;
set_clock(); //設置MSP430工作時鐘;
lcd12864_init(); //LCD12864初始化函數;
set_TimerA_TACTL(); //設置定時器A的寄存器TACTL,TAR清零,開啟溢出中斷,使用外部引腳TACLK輸入。
number=0; //中計數常量初始化;
P1DIR=0x00; //P1 I/O模式為輸入;
P1SEL=0xff; //P1 I/O選擇第二功能;外部引腳輸入;
IE1 |= WDTIE; //開啟看門狗定時器中斷;
_EINT(); // 總中斷開
lcd12864_display(1,3,"測頻率");
TACTL|=MC_2; //連續計數模式 ;
Delay_ms(1); //給MCU反應時間;
WDTCTL=0x5a1c; //看門狗定時器定時一秒(WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL);
old_pinlvzhi=TAR; //讀取TAR計數器原始值;
while(1)
{
fenchai();
lcd12864_display(2,1,xianshi1);
}
}
/*********************************************************************
*函數名:void set_TimerA_TACTL(void)
*功 能:設置Timer_A的TACTL控制寄存器、
**********************************************************************/
void set_TimerA_TACTL(void)
{
TACTL|=TACLR; //Timer_A計數器清零位
/******************** 選擇Timer_A的輸入時鐘源 *********************/
TACTL|=TASSEL_0; //Timer_A時鐘源選擇:TACLK(使用外部引腳輸入)
TACTL|=TAIE; //Timer_A溢出中斷使能允許位
}
/*********************************************************************/
/*********************************************************************
*函數名:void fenchai()
*功 能:把頻率的數值分拆放入顯示數和去掉高位為0的數值
**********************************************************************/
void fenchai()
{ xianshi1[0]=pinlvzhi/10000000+'0'; //頻率值高位
xianshi1[1]=pinlvzhi/1000000%10+'0';
xianshi1[2]=pinlvzhi/100000%10+'0';
xianshi1[3]=pinlvzhi/10000%10+'0';
xianshi1[4]=pinlvzhi/1000%10+'0';
xianshi1[5]=pinlvzhi/100%10+'0';
xianshi1[6]=pinlvzhi/10%10+'0';
xianshi1[7]=pinlvzhi%10+'0';
xianshi1[8]='H'; //頻率值低位
xianshi1[9]='z'; //頻率值低位
xianshi1[10]=0x20;
xianshi1[11]=0x20;
if(xianshi1[0]=='0') //去掉最高位的0
{
xianshi1[0]=0x20;
if(xianshi1[1]=='0')
{
xianshi1[1]=0x20;
if(xianshi1[2]=='0')
{
xianshi1[2]=0x20;
if(xianshi1[3]=='0')
{
xianshi1[3]=0x20;
if(xianshi1[4]=='0')
{
xianshi1[4]=0x20;
if(xianshi1[5]=='0')
{
xianshi1[5]=0x20;
if(xianshi1[6]=='0')
{
xianshi1[6]=0x20;
}
}
}
}
}
}
}
}
/*********************************************************************/
/********************************************************************
*函數名:void set_TimerA_TACTL(void)
*功 能:設置Timer_A的TACTL控制寄存器、
*************** TimerA CCR2的捕獲中斷 ****************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void TimerA_I(void)
{
switch(TAIV)
{
case 2:
break;
case 4:
break;
case 10:
number++;//中斷計數常量溢出加一
break;
}
}
/********************************************************************/
/********************************************************************
看門狗中斷服務子程序
********************************************************************/
#pragma vector = WDT_VECTOR
__interrupt void WDT_IRQ(void)
{
new_pinlvzhi=TAR;//得到計數器計數后的值
if(number==0)////中斷計數常量溢小于1
{
pinlvzhi=new_pinlvzhi-old_pinlvzhi;//得到頻率值=計數器現在的值-計數器原始值
}
else
{
pinlvzhi=new_pinlvzhi+number*65536-old_pinlvzhi;//得到頻率值;
}
number=0; //清零;
old_pinlvzhi=new_pinlvzhi;//把上一次計數器的計數值作為下一次的計數初值;
}
/*************************************END*******************************/
復制代碼
代碼下載:
代碼.7z
(92.24 KB, 下載次數: 18)
2021-12-13 03:59 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
3331963944
時間:
2022-5-18 20:47
牛哇,寫的很整齊。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1