標(biāo)題: 數(shù)模轉(zhuǎn)換ADC0809數(shù)字電壓表的proteus仿真及源碼 [打印本頁]

作者: 51黑ff    時(shí)間: 2016-10-10 16:22
標(biāo)題: 數(shù)模轉(zhuǎn)換ADC0809數(shù)字電壓表的proteus仿真及源碼
ADC0809中文資料  
1.主要特性  1)8路8位A/D轉(zhuǎn)換器,即分辨率8位。   2)具有轉(zhuǎn)換起?刂贫。   3)轉(zhuǎn)換時(shí)間為100μs   4)單個(gè)+5V電源供電   5)模擬輸入電壓范圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。   6)工作溫度范圍為-40~+85攝氏度   7)低功耗,約15mW。   

2.內(nèi)部結(jié)構(gòu)    ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖13.22所示,它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型D/A轉(zhuǎn)換器、逐次逼近  ADC0809內(nèi)部結(jié)構(gòu)框圖 寄存器、三態(tài)輸出鎖存器等其它一些電路組成。因此,ADC0809可處理8路模擬量輸入,且有三態(tài)輸出能力,既可與各種微處理器相連,也可單獨(dú)工作。輸入輸出與TTL兼容。   

3.外部特性(引腳功能)   ADC0809芯片有28條引腳,采用雙列直插式封裝,下面說明各引腳功能。       IN0~I(xiàn)N7:8路模擬量輸入端。  
    2-1~2-8:8位數(shù)字量輸出端! 
    ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。
  ALE:地址鎖存允許信號(hào),輸入,高電平有效。   
    START: A/D轉(zhuǎn)換啟動(dòng)信號(hào),輸入,高電平有效。   
    EOC: A/D轉(zhuǎn)換結(jié)束信號(hào),輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸出一個(gè)高電平(轉(zhuǎn)換期間一直為低電平)   OE:數(shù)據(jù)輸出允許信號(hào),輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時(shí),此端輸入一個(gè)高電平,才能打開輸出三態(tài)門,輸出數(shù)字量! 
    CLK:時(shí)鐘脈沖輸入端。要求時(shí)鐘頻率不高于640KHZ。   
    REF(+)、REF(-):基準(zhǔn)電壓。   
    Vcc:電源,單一+5V。   
    GND:地。   
ADC0809的工作過程是:首先輸入3位地址,并使ALE=1,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到比較器。START上升沿將逐次逼近寄存器復(fù)位。下降沿啟動(dòng) A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖,指示A/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平 時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。


51單片機(jī)做的數(shù)模轉(zhuǎn)換ADC0809芯片的數(shù)字電壓表的proteus仿真原理圖如下:

單片機(jī)源程序:
  1. /********************************************************************
  2. 51黑電子論壇
  3. *********************************************************************/
  4. #include <reg52.h>             //頭文件
  5. #define uchar unsigned char           //宏定義無符號(hào)字符型
  6. #define uint  unsigned  int           //宏定義無符號(hào)整型
  7. code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數(shù)碼管字跟
  8. uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端                                                                 //位控制碼
  9. sbit ST=P3^0;   //A/D啟動(dòng)轉(zhuǎn)換信號(hào)
  10. sbit OE=P3^1;   //數(shù)據(jù)輸出允許信號(hào)
  11. sbit EOC=P3^2;  //A/D轉(zhuǎn)換結(jié)束信號(hào)
  12. sbit CLK=P3^3;  //時(shí)鐘脈沖  
  13. uint z,x,c,v,AD0809, date;        //定義數(shù)據(jù)類型
  14. /******************************************************************
  15. 延時(shí)函數(shù)
  16. ******************************************************************/
  17. void delay(uchar t)
  18. {
  19.   uchar i,j;
  20.    for(i=0;i<t;i++)
  21.    {
  22.             for(j=13;j>0;j--);
  23.          { ;
  24.          }
  25.    }
  26. }
  27. /**********************************************************************
  28.                 數(shù)碼管動(dòng)態(tài)掃描
  29. *********************************************************************/
  30. void xianshi() //顯示函數(shù)
  31. {
  32. uint z,x,c,v;
  33.   z=date/1000;                         //求千位
  34.   x=date%1000/100;                 //求百位
  35.   c=date%100/10;                 //求十位
  36.   v=date%10;                         //求個(gè)位

  37.       P2=0XFF;
  38.           P0=seg7code[z]&0x7f;
  39.           P2=wei[0];
  40.           delay(80);
  41.           P2=0XFF;  
  42.       P0=seg7code[x];
  43.           P2=wei[1];
  44.           delay(80);
  45.           P2=0XFF;  
  46.              P0=seg7code[c];
  47.           P2=wei[2];
  48.           delay(80);
  49.           P2=0XFF;  
  50.       P0=seg7code[v];
  51.           P2=wei[3];
  52.           delay(80);
  53.           P2=0XFF;
  54.   }
  55. /*************************************************************************
  56.                                 CLK振蕩信號(hào)        
  57. **************************************************************************/
  58. void timer0( ) interrupt 1 //定時(shí)器0工作方式1
  59. {

  60. TH0=(65536-2)/256;          //重裝計(jì)數(shù)初值
  61. TL0=(65536-2)%256;          //重裝計(jì)數(shù)初值
  62. CLK=!CLK;                          //取反
  63. }

  64. /*************************************************************************
  65.                                 主函數(shù)        
  66. **************************************************************************/
  67. void main()
  68. {
  69. TMOD=0X01;                          //定時(shí)器中斷0

  70. CLK=0;                                  //脈沖信號(hào)初始值為0
  71. TH0=(65536-2)/256;          //定時(shí)時(shí)間高八位初值
  72. TL0=(65536-2)%256;          //定時(shí)時(shí)間低八位初值
  73. EA=1;                                  //開CPU中斷
  74. ET0=1;                                  //開T/C0中斷
  75. TR0=1;
  76. while(1)                           //無限循環(huán)
  77.         {
  78.         ST=0;                                //使采集信號(hào)為低
  79.         ST=1;                                //開始數(shù)據(jù)轉(zhuǎn)換
  80.         ST=0;                                //停止數(shù)據(jù)轉(zhuǎn)換
  81.         while(!EOC);                //等待數(shù)據(jù)轉(zhuǎn)換完畢
  82.         OE=1;                                //允許數(shù)據(jù)輸出信號(hào)
  83.         AD0809=P1;                    //讀取數(shù)據(jù)
  84.         OE=0;                                //關(guān)閉數(shù)據(jù)輸出允許信號(hào)
  85.         if(AD0809>=251)                //電壓顯示不能超過5V
  86.         AD0809=250;
  87.         date=AD0809*20;                //數(shù)碼管顯示的數(shù)據(jù)值,其中20為采集數(shù)據(jù)的毫安值
  88.         xianshi();                        //數(shù)碼管顯示函數(shù)
  89.    
  90.     }
  91. }        
復(fù)制代碼



ADC0809數(shù)字電壓表仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個(gè)單片機(jī)仿真,全部下載后找到第012個(gè)項(xiàng)目即可):
http://www.torrancerestoration.com/bbs/dpj-56298-1.html
作者: ING-sh    時(shí)間: 2017-12-21 21:23
厲害了
作者: 天之藍(lán)1994    時(shí)間: 2017-12-25 21:28
很厲害
作者: 山賊甲    時(shí)間: 2017-12-27 17:12
贊了,非常有用
作者: 7486203    時(shí)間: 2018-1-4 16:20
謝謝樓主分享哈
作者: 忖腹食水    時(shí)間: 2018-1-17 00:31
借了lz的程序?yàn)槭裁磾?shù)碼管顯示的有問題
作者: advantech    時(shí)間: 2018-1-18 22:25
51黑有你更精彩!!
作者: opop1988    時(shí)間: 2018-1-19 21:19
不錯(cuò),學(xué)習(xí)中,對(duì)我有用
作者: 2649676585    時(shí)間: 2018-3-4 18:17
HAO真心不錯(cuò)的帖子
作者: jary1314    時(shí)間: 2018-4-5 21:49
真的很不錯(cuò),很有借鑒作用
作者: 柳果果    時(shí)間: 2018-4-16 13:04
電路圖怎么打開?
作者: 柳果果    時(shí)間: 2018-4-16 17:02
程序在keil怎么通過編譯?

作者: 單片機(jī)AT89C51    時(shí)間: 2018-4-24 09:34
數(shù)碼管為啥數(shù)字是一位一位的顯示,怎么可以讓四位同時(shí)顯示
作者: opop1988    時(shí)間: 2018-4-24 10:26
很好很不錯(cuò)
作者: 范總    時(shí)間: 2018-6-11 12:47
為什么側(cè)的值只有某個(gè)準(zhǔn)確,代碼是不是有問題
作者: 渺宇宙    時(shí)間: 2019-7-9 14:13
贊一個(gè)
作者: 我就兇猛    時(shí)間: 2019-7-15 14:02
想問下樓主這個(gè)電壓表的量程是多少
作者: pangjineng    時(shí)間: 2019-10-7 08:43
得分。有用。謝謝了。
作者: colorb    時(shí)間: 2020-3-9 11:24
eoc是可以直接接到單片機(jī)上的嗎

作者: sxr2912719    時(shí)間: 2020-3-11 22:07
太給力,謝謝分享
作者: Wleiloaf    時(shí)間: 2020-4-19 15:29
資料很全。
作者: 閆YZH    時(shí)間: 2020-4-28 09:44
真厲害呀
作者: asdpoi    時(shí)間: 2020-5-13 16:06
做設(shè)計(jì)急需,謝謝樓主分享
作者: 馬大佬    時(shí)間: 2020-6-23 21:00
厲害了,很有用

作者: Jeff_BlindCat    時(shí)間: 2020-6-24 21:23
謝謝樓主分享,再溫習(xí)下數(shù)模轉(zhuǎn)換。
作者: superlc    時(shí)間: 2020-6-25 00:22
厲害了

作者: cuibaigao    時(shí)間: 2021-3-11 12:23
范總 發(fā)表于 2018-6-11 12:47
為什么側(cè)的值只有某個(gè)準(zhǔn)確,代碼是不是有問題

感覺程序的時(shí)序有問題吧,值都不對(duì)啊
作者: nyzhoujinshuai    時(shí)間: 2021-5-31 12:03
數(shù)碼管顯示有問題




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1