打印
[MCU]

求教用C8051310完成AD转换,用LED灯亮的数目表示信号强弱

[复制链接]
1189|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
面包所长|  楼主 | 2016-12-26 18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在折腾一个接收部分,射频信号经过混频后,输出一个50MHz左右的中频信号,用检波器检波得到电压,电压大概是大概是0到2.5V之间,可以直接进入单片机行吗?是不是应该接个放大器?
我想用单片机完成AD转换后,用八个或者若干个LED灯亮的个数来表示电压的大小,比如0到0.5V,LED1亮,0.5到1V,LED2亮,以此类推。下面是我再网上找到的一个msp430f6638单片机实验程序,思路和我的差不多,我想能不能改改!

“AD 转换结束会产生中断,编写AD 中断服务程序。利用信号发生器输出信号(例如正 弦波、三角波信号)作为AD 转换的输入,根据输入电压的大小控制LED 灯的亮灭(例如随 着输入电压值的增大,LED1 到LED5 按顺序点亮;随着输入电压值减小,LED 灯按顺序熄灭”

#include <msp430f6638.h>
int main(void)
{ WDTCTL = WDTPW +WDTHOLD;
P4DIR|=BIT5+BIT6+BIT7;  
P5DIR|=BIT7;  P8DIR|=BIT0;  
ADC12CTL0=ADC12MSC+ADC12ON+ADC12SHT1_8;
ADC12CTL1=ADC12CONSEQ1+ADC12SHP;
ADC12MCTL0=ADC12INCH_7;
ADC12CTL0|=ADC12ENC;  
ADC12IE|=BIT0;  
ADC12CTL0|=ADC12SC;
  _EINT();
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)
{ if(ADC12MEM0>=3413)
{ P4OUT|=BIT5+BIT6+BIT7;
  P5OUT|=BIT7;  
P8OUT|=BIT0;

}
if(ADC12MEM0>=2730)
{ P4OUT&=~BIT5;  
P4OUT|=BIT7+BIT6;  
P5OUT|=BIT7;
  P8OUT|=BIT0;
}
  if(ADC12MEM0>=2048)
{ P4OUT&=~(BIT6+BIT5);
  P4OUT|=BIT7;  
P5OUT|=BIT7;  
P8OUT|=BIT0;
}
if(ADC12MEM0>=1365)
{ P4OUT&=~(BIT5+BIT6+BIT7);  
P5OUT|=BIT7;  
P8OUT|=BIT0;
}
if(ADC12MEM0>=683)  
{ P4OUT&=~(BIT5+BIT6+BIT7);  
P5OUT&=~BIT7;  
P8OUT|=BIT0;
}
if(ADC12MEM0>0)
  { P4OUT&=~(BIT5+BIT6+BIT7);
  P5OUT&=~BIT7;  
P8OUT&=~BIT0;
}
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

32

帖子

0

粉丝