打印

AD转换结果的疑问

[复制链接]
1691|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaohq|  楼主 | 2009-11-1 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天用M16搞个AD程序,有个很奇怪的结果
我把ADC0接到GND,显示0.22,接到AREF上显示0.55,程序如下大家看看是哪里错了?
#include <mega16.h>
#include <delay.h>
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define ADC_VREF_TYPE 0x00
unsigned int read_adc(unsigned char adc_input)
{
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    delay_us(10);
    ADCSRA|=0x40;
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
}
unsigned int adc_v;
unsigned char da[4];
void conv(unsigned int adc )
{
    unsigned char i;
    for(i=0;i<3;i++)
    da[i]= adc%10;
    adc/=10;
}
void main(void)
{
    PORTA=0x00;
    DDRA=0x00;
    PORTC=0x00;
    DDRC=0x00;
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x86;
    lcd_init(16);
    adc_v=(unsigned long)read_adc(0)*5000/1024;
    conv(adc_v);                                 
    lcd_clear();
    lcd_gotoxy(5,1);
    lcd_putchar(da[3]+0x30);
    lcd_gotoxy(6,1);
    lcd_putchar('.');
    lcd_gotoxy(7,1);
    lcd_putchar(da[2]+0x30);
    lcd_gotoxy(8,1);
    lcd_putchar(da[1]+0x30);
    lcd_gotoxy(9,1);
    lcd_putchar(da[0]+0x30);
    while (1);
     
}
我知道大家不爱看程序的可我怎么能说明白呢?我是在实验板上做的硬件没问题,只有程序了。呵呵。

相关帖子

沙发
gaohq|  楼主 | 2009-11-2 11:58 | 只看该作者
咋就沉了呢。

使用特权

评论回复
板凳
kcl123| | 2009-11-2 12:25 | 只看该作者
现在发新帖说请求来路不正确是什么意思啊?

使用特权

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

本版积分规则

378

主题

3763

帖子

5

粉丝