第一范文网 - 专业文章范例文档资料分享平台

msp430g2553测频率以及测峰值

来源:用户分享 时间:2025/6/1 7:00:55 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

do{

ADC10CTL0 |= ENC+ADC10SC;

while((ADC10CTL0 &ADC10IFG)==0); adc_sample = ADC10MEM; if(adc_max

adc_max = adc_sample; }

}while(0==flag1);

adc_max = adc_max*(3300/1023); //while(0==flag1); flag2=0; /* //筛选

for(int i=0;i<200;i++) {

if(adc_sample[i]>adc_max) {

adc_max=adc_sample[i]; } } */

//显示幅值

for(int i=0;i<5;i++) {

temp = adc_max/(10000/(unsigned int)(pow(10,i))); LCDBuf1[i] = temp + '0';

adc_max = adc_max%(10000/(unsigned int)(pow(10,i))); }

LCDBuf1[5] = 0;

LCD_Disp_string(0,1,LCDBuf1); LCD_Disp_string(5,1,LCDBuf3); adc_max = 0; } }

// Timer A1 interrupt service routine

#pragma vector=TIMER1_A0_VECTOR __interrupt void Timer1_A (void) {

if(0==flag2) {

TA0CTL = 0;

TA1CTL = 0;

TA1CTL |= TACLR; FRE=TA0R; flag1=1;

TA0CTL = TASSEL_0 + MC_0; TA1CTL = TASSEL_1 + MC_0; //TA0CTL |= TACLR;

//TA0CTL = TASSEL_0 + MC_1;

//TA1CTL = TASSEL_1 + MC_1 + TAIE; //测了一次还没开 } else {

TA1CTL = TASSEL_1 + MC_0; flag1=1; } }

// ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) {

flag1=1;

ADC10CTL0 &= ~ENC; }

lcd头文件

//#include \

#define SET_LCD_1602_E P2OUT |= 0x04 #define CLR_LCD_1602_E P2OUT &= ~0x04

#define SET_LCD_1602_RS P2OUT |= 0x01 #define CLR_LCD_1602_RS P2OUT &= ~0x01

#define SET_LCD_1602_RW P2OUT |= 0x02 #define CLR_LCD_1602_RW P2OUT &= ~0x02 #define LCD_IO_OUT P1OUT #define LCD_IO_DIR P1DIR #define LCD_IO_IN P1IN #define LCD_IO_SEL P1SEL

#define uchar unsigned char

//P2.2 //P2.0 //P2.1 #define uint unsigned int

void IO_Init(void); void LCD_Init(void);

void LCD_Check_busy(void); //检测LCD是否在忙,即能否接收数据和指令 void LCD_Write_Command(uchar command); void LCD_Write_Data(uchar dat); void LCD_Set_xy( uchar x, uchar y ); uchar LCD_Read_Sta(void);

uchar LCD_Read_Data(uchar x,uchar y);

void User_def_char(uchar n,uchar *s); //输入用户自定义字符(5*8点阵字符),0~7共8个字符

void LCD_Disp_char(uchar x,uchar y,uchar dat); void LCD_Disp_string(uchar x,uchar y,uchar *s);

uchar large=0; //当large为1时,为5*8点阵;为0时,为5*10点阵

void IO_Init(void) { LCD_IO_SEL &=~ 0xF0; //LCD_IO_DIR |= 0x07 ; P2DIR |= 0x07; P2SEL &=~ 0x07; }

void LCD_Init(void) { LCD_Write_Command(0x28); LCD_Write_Command(0x0F); LCD_Write_Command(0x06); LCD_Write_Command(0x01); }

void LCD_Check_busy(void) { uchar flag=0x80; flag &= LCD_Read_Sta(); while(flag == 0x80) { __delay_cycles(100); flag &= LCD_Read_Sta(); } }

void LCD_Write_Command(uchar command) { LCD_Check_busy(); CLR_LCD_1602_RS; CLR_LCD_1602_RW; CLR_LCD_1602_E; uchar temp; temp = command & (0x3C); if((temp==(0x26))||(temp==(0x2C))||(temp==(0x36))||(temp==(0x3C))) large = 0; //为5*10点阵 else large = 1; LCD_IO_DIR |= 0xF0; LCD_IO_OUT = (command&(0XF0))+(LCD_IO_OUT&(0x0F)); SET_LCD_1602_E; CLR_LCD_1602_E; command <<= 4; LCD_IO_OUT = (command&(0XF0))+(LCD_IO_OUT&(0x0F)); SET_LCD_1602_E; CLR_LCD_1602_E; }

void LCD_Write_Data(uchar dat) { LCD_Check_busy(); SET_LCD_1602_RS; CLR_LCD_1602_RW; CLR_LCD_1602_E; LCD_IO_DIR |= 0xF0; LCD_IO_OUT = (dat&(0XF0))+(LCD_IO_OUT&(0x0F)); SET_LCD_1602_E; CLR_LCD_1602_E; dat <<= 4; LCD_IO_OUT = (dat&(0XF0))+(LCD_IO_OUT&(0x0F)); SET_LCD_1602_E; CLR_LCD_1602_E; }

void LCD_Set_xy(uchar x,uchar y) {

uchar address; if (y == 0)

搜索更多关于: msp430g2553测频率以及测峰值 的文档
msp430g2553测频率以及测峰值.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c4n7mh8nb4h47ty60k278_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top