首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CodevisionAVR在液晶屏或终端上显示模数转换结果

使用CodevisionAVR在液晶屏或终端上显示模数转换结果
EN

Stack Overflow用户
提问于 2014-05-31 17:40:05
回答 1查看 3.1K关注 0票数 0

我的项目是一个音频频谱分析仪,但我卡在显示模数转换的结果,无论是在我的液晶显示器或在终端的CodevisionAVR。

该项目使用具有7.37 MHz外部振荡器的ATmega16A。对于集成开发环境,我使用的是CodevisionAVR。

音频频谱分析仪通过一根3.5 mm的插孔音频电缆输入,该信号经过放大和滤波以选择0到4 KHz之间的频率,该电路的输出连接到PA0,这是微控制器的模数转换器的0通道。

为了进行测试,我将ADC设置为工作在8位(读取最高有效的8位),使用内部2.56V作为基准电压。我已经使用一个10nF的电容器解耦了AREF引脚(为了更好地降低噪声,我会将其改为100nF )。ADC也处于自由运行模式。

我卡在显示模数转换器的结果,要么在我的液晶屏上,要么在CodevisionAVR的终端上(通过串口-使用向导配置)。

这是我在ADC中使用的函数:

代码语言:javascript
复制
    // Voltage Reference: Int., cap. on AREF 
#define ADC_VREF_TYPE ((1<<REFS1) | (1<<REFS0) | (1<<ADLAR)) 

// Read the 8 most significant bits 
// of the AD conversion result 
unsigned char read_adc(unsigned char adc_input) 
{ 
    ADMUX=adc_input | ADC_VREF_TYPE; 
    // Delay needed for the stabilization of the ADC input voltage 
    delay_us(10); 
    // Start the AD conversion 
    ADCSRA|=(1<<ADSC); 
    // Wait for the AD conversion to complete 
    while ((ADCSRA & (1<<ADIF))==0); 
    ADCSRA|=(1<<ADIF); 
    return ADCH; 
} 

代码的主要功能:

代码语言:javascript
复制
void main (void)
{  

Init_Controller();  // this must be the first "init" action/call!
#asm("sei")        // enable interrupts
lcd_init(16);
lcd_gotoxy(0,1);
lcd_putsf("AUDIO SPECTRUM");
delay_ms(3000);
lcd_clear();

    while(TRUE)
    {      
        wdogtrig();

        TCNT1 = 0; //usage of Timer1 with OCR1A 
        TIFR |= 1<<OCF1A;
        for(i=0;i<N;i++) {
            while((TIFR & (1<<OCF1A)) == 0)  
            putchar(read_adc());
            //adc_set[i] = adc_read(); //this is a second option
            TIFR |= 1<<OCF1A;
        } 
        //for(i=0; i<N; i++)
            //printf("adc values: %d \n",adc_set[i]);
} //end while loop
}

N定义为32 =1个AD转换中的样本数。

EN

回答 1

Stack Overflow用户

发布于 2014-06-01 06:01:37

我看到的第一个错误是使用putchar()将一个数字写入LCD。

read_adc()的结果是一个数字,而不是一个ascii字符串。您需要使用sprintf将ADC结果作为字符串写入缓冲区,然后使用lcd_putsf()将缓冲区发送到LCD。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23968514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档