找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6778|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

單片機ADC0804測量電壓問題 數(shù)字量不是按線性變換的,沒有規(guī)律

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:166914 發(fā)表于 2017-4-7 21:53 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
50黑幣
我用ADC0804測量電壓,轉(zhuǎn)換的數(shù)字量是(0~255),但是在變換電壓時,這個數(shù)字量不是按線性變換的,變換沒有規(guī)律,如果我把電壓設(shè)為2.5V,輸出位001,而不是177啊,這是怎么回事,我用的是郭天祥的那個程序,一模一樣,程序沒有錯。

0804.png (18.39 KB, 下載次數(shù): 140)

0804.png

最佳答案

查看完整內(nèi)容

從數(shù)字量換算成模擬量的過程有問題。 在顯示數(shù)轉(zhuǎn)換為顯示數(shù)字子程序中,滿量程A-D值FFH(255)對應(yīng)UREF+(5V),顯示時需將A-D值按比例變換:255→500。變換方法為:(A-D值÷255)×500=(A-D值÷51)×100V。在變換過程中,數(shù)值會超出一字節(jié)(大于255)。 先Proteus仿真一下,確認有效。 實例81 ADC0808中斷方式A-D(ALE輸出CLK) 實例84 ADC0808并行A-D(虛擬CLK) 實例85 ADC0832串行A-D(TXD輸出CLK) ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

10#
ID:151348 發(fā)表于 2017-4-9 09:03 | 只看該作者
雪花太 發(fā)表于 2017-4-8 23:02
那你有沒有一個正確的程序。能給我看哈嗎?謝謝了

木有,只有ADC0832的程序
回復(fù)

使用道具 舉報

9#
ID:166914 發(fā)表于 2017-4-8 23:02 | 只看該作者
imxuheng 發(fā)表于 2017-4-8 19:21
沒有,程序似乎不行

那你有沒有一個正確的程序。能給我看哈嗎?謝謝了
回復(fù)

使用道具 舉報

8#
ID:151348 發(fā)表于 2017-4-8 19:21 | 只看該作者
雪花太 發(fā)表于 2017-4-8 15:14
這個電路有沒有錯啊

沒有,程序似乎不行
回復(fù)

使用道具 舉報

7#
ID:166914 發(fā)表于 2017-4-8 15:14 | 只看該作者

這個電路有沒有錯啊
回復(fù)

使用道具 舉報

6#
ID:166914 發(fā)表于 2017-4-8 15:13 | 只看該作者
1300584512 發(fā)表于 2017-4-8 09:27
有沒有可能數(shù)碼管的共陰和共陽弄錯

這個應(yīng)該沒有,都能顯示了
回復(fù)

使用道具 舉報

5#
ID:166914 發(fā)表于 2017-4-8 15:12 | 只看該作者

#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit duan=P2^0;
sbit wei=P2^1;
sbit wr=P3^0;
sbit rd=P3^1;
sbit cs=P3^2;
sbit intr=P3^3;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay1ms(uint t)
{
  uint i,j;
  for(i=0;i<t;i++)
  for(j=0;j<110;j++);
}
void display(uchar bai,uchar shi,uchar ge)
{
  wei=1;
  P0=0x7e;
  wei=0;
  P0=0xff;
  duan=1;
  P0=table[bai];
  duan=0;
  delay1ms(5);


  wei=1;
  P0=0x7d;
  wei=0;
  P0=0xff;
  duan=1;
  P0=table[shi];
  duan=0;
  delay1ms(5);


  wei=1;
  P0=0x7b;
  wei=0;
  P0=0xff;
  duan=1;
  P0=table[ge];
  duan=0;
  delay1ms(5);
}
void main()
{
  uchar a,A1,A2,A3,adval;
  cs=0;
  wei=1;
  P0=0x7f;
  wei=0;
  while(1)
  {
    wr=1;
        _nop_();
        wr=0;
        _nop_();
        wr=1;
        while(intr);
        for(a=10;a>0;a--)
        {
           display(A1,A2,A3);
        }
        P1=0xff;
        rd=1;
        _nop_();
        rd=0;
        _nop_();
        adval=P1;
        rd=1;
        A1=adval/100;
        A2=adval%100/10;
        A3=adval%100%10;
        display(A1,A2,A3);
  }
}
回復(fù)

使用道具 舉報

地板
ID:183740 發(fā)表于 2017-4-8 09:27 | 只看該作者
有沒有可能數(shù)碼管的共陰和共陽弄錯

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:151348 發(fā)表于 2017-4-8 09:04 | 只看該作者
附上程序看看
回復(fù)

使用道具 舉報

沙發(fā)
ID:82765 發(fā)表于 2017-4-7 22:28 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
回復(fù)

使用道具 舉報

樓主
ID:111634 發(fā)表于 2017-4-7 21:53 | 只看該作者
本帖最后由 zl2168 于 2017-4-9 09:48 編輯

從數(shù)字量換算成模擬量的過程有問題。
顯示數(shù)轉(zhuǎn)換為顯示數(shù)字子程序中,滿量程A-DFFH255)對應(yīng)UREF+5V),顯示時需將A-D值按比例變換:255500。變換方法為:(A-D÷255×500=A-D÷51×100V。在變換過程中,數(shù)值會超出一字節(jié)大于255)。
Proteus仿真一下,確認有效。
實例81 ADC0808中斷方式A-D(ALE輸出CLK)
實例81 ADC0808A-D( ALE輸出CLK,中斷方式).rar (54.32 KB, 下載次數(shù): 13)

實例84 ADC0808并行A-D(虛擬CLK)
實例84 ADC0808A-D(虛擬CLK).rar (35.75 KB, 下載次數(shù): 4)

實例85 ADC0832串行A-D(TXD輸出CLK)
實例85 ADC0832串行A-D( TXD輸出CLK).rar (36.86 KB, 下載次數(shù): 3)

實例86 ADC0832串行A-D(虛擬CLK)
實例86 ADC0832串行A-D(虛擬CLK).rar (35.29 KB, 下載次數(shù): 4)

以上摘自張志良編著《單片機實驗實訓(xùn)100例》 ISBN 978-7-5124-1603-1,北航社出版.。書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。













回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表