这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 求教用C8051310单片机完成AD转换,用LED灯亮的数目表示信号功率的大小

共1条 1/1 1 跳转至

求教用C8051310单片机完成AD转换,用LED灯亮的数目表示信号功率的大小

菜鸟
2016-12-26 16:12:49     打赏
最近在折腾一个接收部分,射频信号经过混频后,输出一个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;






关键词: C8051310     单片机     转换     求教    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]