欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8857|回復: 6
打印 上一主題 下一主題
收起左側

AD轉換值怎樣分離個位十位百小數位

[復制鏈接]
跳轉到指定樓層
樓主
ID:12816 發表于 2011-3-22 00:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
請問如下程序AD轉換值怎樣分離個位十位百小數位謝謝!

float voltage = 0.0; 
//uint V;
float VCC = 4.99;

//======== AD轉換程序 ======================================
uint ADC(uchar Od) 
 {
 uint AD_Result_Temp = 0 ;
 ADC_CONTR = ADC_CONTR|0x80; //1000,0000打開A/D轉換電源
   P1ASF = SET_IO[Od];//
   delayms(20); //20   
   ADC_CONTR = ADC_CONTR & 0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
   ADC_CONTR = ADC_CONTR|((ADC_ID[Od])& 0x07); //設置當前通道號00000111
   delayms(1); //延時使輸入電壓達到穩定
   ADC_RES = 0; //STC12C5A16AD系列單片機_清A/D轉換結果寄存器高八位
   ADC_RESL = 0; //STC12C5A16AD系列單片機_清A/D轉換結果寄存器低二位
   ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,啟動轉換
   do { ; }    
   while((ADC_CONTR & 0x10)==0);     //0001,0000等待A/D轉換結束
   ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D轉換
   AD_Result_Temp = ((AD_Result_Temp|ADC_RES)<<2)|(ADC_RESL&0x03);//高八位+低二位
  return AD_Result_Temp;//ADC_RES;
 } 
//====檢測============================================
void PIS1()  //0.6V~0.8V   0.7V +_ 0.1V
 {
  //VCC = 2.499 * 1024 / ADC(0); //先讀取基準電壓算出供電電壓
  voltage = ADC(1) * VCC / 1024;
   } 

如果要將voltage 這個值用lcd顯示出來應該怎樣分離個位十位百。小數位呢?謝謝!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2011-3-22 01:36 | 只看該作者

你這個是adc0804?

回復

使用道具 舉報

板凳
ID:12816 發表于 2011-3-22 03:37 | 只看該作者
以下是引用admin在2011-3-22 1:36:59的發言:

你這個是adc0804?

stc12c5a16ad

voltage本身是個浮點數請問怎樣分離?謝謝!

回復

使用道具 舉報

地板
ID:1 發表于 2011-3-22 19:38 | 只看該作者
  http://www.raoushi.com/mcu/1206.html
回復

使用道具 舉報

5#
ID:28704 發表于 2011-3-25 13:17 | 只看該作者
這個問題很好,我也想知道怎么解決,希望有高手一起來討論。
回復

使用道具 舉報

6#
ID:40045 發表于 2012-5-10 22:04 | 只看該作者
看不懂    看不……
回復

使用道具 舉報

7#
ID:40740 發表于 2012-5-24 22:32 | 只看該作者

/* Temperature data convert *
void TEMCONV()
{
  if(TEM_DATA[1]>127)
  {
    TEM_DATA[0] = (~TEM_DATA[0])+1;
    if((~TEM_DATA[0]) >= 0XFF)
    TEM_DATA[1] = (~TEM_DATA[1])+1;
    else TEM_DATA[1] = ~TEM_DATA[1];
    TEM_SIGN = 1;
  }
  TEMP = TEM_DATA[0]&0X0F;
  TEM_DIS[0] = (TEMP * 10/16);
  TEMP = ((TEM_DATA[0]&0XF0 >> 4) | (TEM_DATA[1]&0X0F) << 4);
  TEM_DIS[3] = TEMP/100;
  TEMP = TEMP%100;
  TEM_DIS[2] = TEMP/10;
  TEM_DIS[1] = TEMP%10;
  if(!TEM_DIS[3])
  {
    TEM_DIS[3] = 10;
    if(!TEM_DIS[2])
    {
    TEM_DIS[2] = 10;
    }
  }
}

/*  Display function *
void DISPLAY()
{

  P2 = SEG_DATA[TEM_DIS[0]];
  P0 = 0X0D;                   //小數點位
      MSDELAY(10);
  P2 = 0XFF;
  P0 = 0X0F;
  P2 = SEG_DATA[TEM_DIS[2]];
  P0 = 0X0B;                 //十位
  MSDELAY(10);
      P2 = 0XFF;
  P0 = 0X0F;
  P2 = SEG_DATA[TEM_DIS[1]];
  P0 = 0X0E;                 //個位
      MSDELAY(10);     
  P2 = 0XFF;
  P0 = 0X0F;
  P2 = 0X7F;
  P0 = 0X0E;                 //小數點
      MSDELAY(10);     
  P2 = 0XFF;
  P0 = 0X0F;
  P2 = SEG_DATA[TEM_DIS[3]];
  P0 = 0X07;                 //百位
      MSDELAY(10);
      P2 = 0XFF;
  P0 = 0X0F;
}

 

 

這是我的溫度數值轉換,你看看

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表