国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

51單片機+ADC0808做電壓表能測試0~5v的電壓誤差很小 proteus仿真

[復制鏈接]
樓主
coolfire 發(fā)表于 2021-4-25 14:23:43 | 只看該作者 |只看大圖 |倒序瀏覽 |閱讀模式
附件里有完整源碼和仿真
51單片機+ADC0808做電壓表能測試0~5v的電壓誤差很小 proteus仿真 1.jpg
單片機程序:
  1. //功能:晶振11.0592M,通過采集模擬信號,讓數碼管顯示當前電壓//

  2. #include<reg51.h>
  3. sbit duancun= P2^1 ;         //控制鎖存器段選
  4. sbit weicun= P2^2;                 //控制鎖存器位選
  5. sbit OE  = P1^0;  //輸出使能,OE=0高阻,OE=1 ADC轉換結果輸出到單片機
  6. sbit ST  = P1^2;  //啟動信號,上升沿復位清零ADC,下降沿啟動轉換,低電平保持轉換
  7. sbit ALE  = P1^1;         
  8. sbit OEC  = P1^3;
  9. sbit p07  = P0^7;

  10. #define uint unsigned int
  11. #define uchar unsigned char



  12. void delay(uint x)
  13. {

  14.         while(x--);        

  15. }

  16. /**********************************
  17. 函數名:xianshi()
  18. 變量:i
  19. 功能:處理 i的數據 ,讓i能夠顯示到數碼管上

  20. ***********************************/

  21. void xianshi(uint i)        

  22.   {                  unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,
  23.                               0x99,0x92,0x82,0xf8,0x80,0x90};
  24.            unsigned char code led[]={0x00,0x01,0x02,0x04,
  25.                            0x08,0x10,0x20,0x40,0x80};
  26.            delay(50);
  27.                    duancun=1;
  28.                    P0=duan[i%10];         
  29.                    duancun=0;
  30.                    weicun=1;
  31.                    P0=led[8];
  32.                    weicun=0;
  33.                     P0=0xff;



  34.                    delay(50);
  35.                    duancun=1;
  36.                    P0=duan[i/10%10];
  37.                    duancun=0;
  38.                    weicun=1;
  39.                    P0=led[7];
  40.                    weicun=0;
  41.                     P0=0xff;

  42.                    delay(50);
  43.                    duancun=1;
  44.                    P0=duan[i/100%10]&0x7f;
  45.                
  46.                    duancun=0;
  47.                    weicun=1;
  48.                    P0=led[6];
  49.                    weicun=0;
  50.                     P0=0xff;

  51.   }

  52. void main()                           
  53. {        float qq=1.962;
  54.         while(1)        
  55.        {                    
  56.                 ALE =1;
  57.             ST =1;
  58.             delay(5);
  59.                 ALE = 0;
  60.                 ST = 0;
  61.                delay(5);
  62.                 ALE = 1;
  63.                 ST = 1;/*啟動A/D轉換,上升沿復位清零ADC,下降沿啟動轉換,低電平保持轉換*/
  64.         delay(50);  
  65.         OE = 0;         //輸出使能,OE=1高阻,OE=0 ADC轉換結果允許輸出到單片機
  66.         xianshi((P3*qq)); //因為P3的數據最大只有255,電壓最大是5V,所以乘0.962就約等于500
  67.         OE = 1;               //輸出使能,OE=0高阻

  68.      }

  69. }
復制代碼
需要Proteus8.8及以上版本打開 AD轉換c程序和proteus仿真.zip (84.22 KB, 售價: 1 E幣)

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

本版積分規(guī)則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 02:48

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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