找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 27311|回復: 27
收起左側

數模轉換ADC0809數字電壓表的proteus仿真及源碼

  [復制鏈接]
ID:137190 發(fā)表于 2016-10-10 16:22 | 顯示全部樓層 |閱讀模式
ADC0809中文資料  
1.主要特性  1)8路8位A/D轉換器,即分辨率8位。   2)具有轉換起�?刂贫�。   3)轉換時間為100μs   4)單個+5V電源供電   5)模擬輸入電壓范圍0~+5V,不需零點和滿刻度校準。   6)工作溫度范圍為-40~+85攝氏度   7)低功耗,約15mW。   

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

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


51單片機做的數模轉換ADC0809芯片的數字電壓表的proteus仿真原理圖如下:
0.png
單片機源程序:
  1. /********************************************************************
  2. 51黑電子論壇
  3. *********************************************************************/
  4. #include <reg52.h>             //頭文件
  5. #define uchar unsigned char           //宏定義無符號字符型
  6. #define uint  unsigned  int           //宏定義無符號整型
  7. code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數碼管字跟
  8. uchar wei[4]={0XEf,0XDf,0XBf,0X7f};  //位的控制端                                                                 //位控制碼
  9. sbit ST=P3^0;   //A/D啟動轉換信號
  10. sbit OE=P3^1;   //數據輸出允許信號
  11. sbit EOC=P3^2;  //A/D轉換結束信號
  12. sbit CLK=P3^3;  //時鐘脈沖  
  13. uint z,x,c,v,AD0809, date;        //定義數據類型
  14. /******************************************************************
  15. 延時函數
  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.                 數碼管動態(tài)掃描
  29. *********************************************************************/
  30. void xianshi() //顯示函數
  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;                         //求個位

  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振蕩信號        
  57. **************************************************************************/
  58. void timer0( ) interrupt 1 //定時器0工作方式1
  59. {

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

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

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


ADC0809數字電壓表仿真工程文件及所有完整程序等資料下載地址(壓縮包一共有45個單片機仿真,全部下載后找到第012個項目即可):
http://www.torrancerestoration.com/bbs/dpj-56298-1.html

評分

參與人數 3黑幣 +11 收起 理由
923932516 + 5 很給力!
QQwert + 5 很給力!
山賊甲 + 1 贊一個!

查看全部評分

回復

使用道具 舉報

ID:136693 發(fā)表于 2017-12-21 21:23 | 顯示全部樓層
厲害了
回復

使用道具 舉報

ID:262115 發(fā)表于 2017-12-25 21:28 來自觸屏版 | 顯示全部樓層
很厲害
回復

使用道具 舉報

ID:265659 發(fā)表于 2017-12-27 17:12 | 顯示全部樓層
贊了,非常有用
回復

使用道具 舉報

ID:271459 發(fā)表于 2018-1-4 16:20 | 顯示全部樓層
謝謝樓主分享哈
回復

使用道具 舉報

ID:276416 發(fā)表于 2018-1-17 00:31 來自觸屏版 | 顯示全部樓層
借了lz的程序為什么數碼管顯示的有問題
回復

使用道具 舉報

ID:246228 發(fā)表于 2018-1-18 22:25 | 顯示全部樓層
51黑有你更精彩�。�!
回復

使用道具 舉報

ID:124995 發(fā)表于 2018-1-19 21:19 | 顯示全部樓層
不錯,學習中,對我有用
回復

使用道具 舉報

ID:287137 發(fā)表于 2018-3-4 18:17 | 顯示全部樓層
HAO真心不錯的帖子
回復

使用道具 舉報

ID:302544 發(fā)表于 2018-4-5 21:49 | 顯示全部樓層
真的很不錯,很有借鑒作用
回復

使用道具 舉報

ID:308622 發(fā)表于 2018-4-16 13:04 | 顯示全部樓層
電路圖怎么打開?
回復

使用道具 舉報

ID:308622 發(fā)表于 2018-4-16 17:02 | 顯示全部樓層
程序在keil怎么通過編譯?
回復

使用道具 舉報

ID:314776 發(fā)表于 2018-4-24 09:34 來自觸屏版 | 顯示全部樓層
數碼管為啥數字是一位一位的顯示,怎么可以讓四位同時顯示
回復

使用道具 舉報

ID:124995 發(fā)表于 2018-4-24 10:26 | 顯示全部樓層
很好很不錯
回復

使用道具 舉報

ID:276534 發(fā)表于 2018-6-11 12:47 | 顯示全部樓層
為什么側的值只有某個準確,代碼是不是有問題
回復

使用道具 舉報

ID:580869 發(fā)表于 2019-7-9 14:13 | 顯示全部樓層
贊一個
回復

使用道具 舉報

ID:475783 發(fā)表于 2019-7-15 14:02 | 顯示全部樓層
想問下樓主這個電壓表的量程是多少
回復

使用道具 舉報

ID:134271 發(fā)表于 2019-10-7 08:43 | 顯示全部樓層
得分。有用。謝謝了。
回復

使用道具 舉報

ID:705047 發(fā)表于 2020-3-9 11:24 | 顯示全部樓層
eoc是可以直接接到單片機上的嗎
回復

使用道具 舉報

ID:706694 發(fā)表于 2020-3-11 22:07 | 顯示全部樓層
太給力,謝謝分享
回復

使用道具 舉報

ID:711413 發(fā)表于 2020-4-19 15:29 | 顯示全部樓層
資料很全。
回復

使用道具 舉報

ID:729193 發(fā)表于 2020-4-28 09:44 | 顯示全部樓層
真厲害呀
回復

使用道具 舉報

ID:697141 發(fā)表于 2020-5-13 16:06 | 顯示全部樓層
做設計急需,謝謝樓主分享
回復

使用道具 舉報

ID:786044 發(fā)表于 2020-6-23 21:00 | 顯示全部樓層
厲害了,很有用
回復

使用道具 舉報

ID:495287 發(fā)表于 2020-6-24 21:23 | 顯示全部樓層
謝謝樓主分享,再溫習下數模轉換。
回復

使用道具 舉報

ID:787783 發(fā)表于 2020-6-25 00:22 | 顯示全部樓層
厲害了
回復

使用道具 舉報

ID:163623 發(fā)表于 2021-3-11 12:23 | 顯示全部樓層
范總 發(fā)表于 2018-6-11 12:47
為什么側的值只有某個準確,代碼是不是有問題

感覺程序的時序有問題吧,值都不對啊
回復

使用道具 舉報

ID:911035 發(fā)表于 2021-5-31 12:03 | 顯示全部樓層
數碼管顯示有問題
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

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