云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > msp430g2553测频率以及测峰值

msp430g2553测频率以及测峰值

  • 62 次阅读
  • 3 次下载
  • 2025/12/10 13:43:42

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测频率以及测峰值 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

do{ ADC10CTL0 |= ENC+ADC10SC; while((ADC10CTL0 &ADC10IFG)==0); adc_sample = ADC10MEM; if(adc_maxadc_max)

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com