智能车制作

标题: 液晶显示AD 为什么显示0.000000 大神解释一下,怎样才能显示正常 [打印本页]

作者: 古鉄    时间: 2014-5-21 00:22
标题: 液晶显示AD 为什么显示0.000000 大神解释一下,怎样才能显示正常
#include "derivative.h"
#include <stdio.h>
#include <string.h>
#include"OLED12864.h"   //液晶
int AD_wValue1,AD_wValue2,AD_wValue3,AD_wValue4;//AD转换结果
void delay(int n)
{
   int i,j;
   for(i=0;i<n;i++)
       for(j=0;j<2670;j++);
}

//-----时钟初始化程序--------//
void PLL_Init(void)      
{                    
  REFDV=1;           
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;
}
//--------------总线时钟=48/2=24MHz------------//
//-----ATD初始化程序--------//
void AD_Init(void)     
{
  ATD0CTL1=0x00; //00000000  选择AD0通道为外部触发,8 位精度,采样前不放电
  ATD0CTL2=0x40; //01000000  标志位自动清零,禁止外部触发, 禁止中断
  ATD0CTL3=0xa0; //10001000  右对齐无符号,每次转换1 个序列, No FIFO, Freeze 模式下继续转
  ATD0CTL4=0x01; //00000001  采样时间为4 个AD 时钟周期,PRS=1,ATDClock=24/(2*(1+1))=6MHz
  ATD0CTL5=0x30; //00100000  特殊通道禁止,连续转换,单通道转换,输入通道为0
  ATD0DIEN=0x00; //00000000  禁止数字输入
}
//-----读取AD转换结果--------//
void AD_GetValue()
{
  AD_wValue1=ATD0DR0;  //读取结果寄存器的值
  AD_wValue2=ATD0DR1;  //读取结果寄存器的值
  AD_wValue3=ATD0DR2;  //读取结果寄存器的值
  AD_wValue4=ATD0DR3;  //读取结果寄存器的值

}



//-----主函数--------//
void main(void)
{
  char e[20] ;
  PLL_Init();
  AD_Init();
  DDRB=0XFF;
  PORTB=0XFF;
  LCD_Init();
  delay(2);   
  EnableInterrupts;

  for(;;)
  {
    while(!ATD0STAT2_CCF0);    // 等待转换结束while(ATDOSTAT2_CCF0==1)
          AD_GetValue();   // 读取转换结果

/******************液晶显示*************************/
  sprintf (e, "%f", AD_wValue1);
  LCD_Print(0,0,e);
  sprintf (e, "%f", AD_wValue2);
  LCD_Print(0,2,e);
  sprintf (e, "%f", AD_wValue3);
  LCD_Print(0,4,e);
  sprintf (e, "%f", AD_wValue4);
  LCD_Print(0,6,e);  
/******************************************/
  delay(1000);
  }
}


作者: FeiRain    时间: 2014-5-21 00:48
应该是使用%f  你可以试试  sprintf (e, "%3d", AD_wValue1);  //8位精度 最大是256 直接显示
作者: 古鉄    时间: 2014-5-21 13:56
FeiRain 发表于 2014-5-21 00:48
应该是使用%f  你可以试试  sprintf (e, "%3d", AD_wValue1);  //8位精度 最大是256 直接显示

谢谢了,真的可以了!

作者: 244880113    时间: 2015-2-19 12:53
AD初始化中的注释与值是不是不太一样,序列长度是4,连续转换模式吧






欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2