久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3990|回復: 0
收起左側

單片機ADC0808電壓表仿真程序

[復制鏈接]
ID:316249 發表于 2018-9-29 21:10 | 顯示全部樓層 |閱讀模式
51單片機電壓表,ADC

0.png 0.png


LM324               CD4051

ADC0808


  • IN0~IN7:8路模擬量輸入端。
  • D0D7:8位數字量輸出端。
  • ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。
  • ALE:地址鎖存允許信號,輸入端,產生一個正脈沖以鎖存地址。
  • START: A/D轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復位,下降沿啟動A/D轉換)。
  • EOC A/D轉換結束信號,輸出端,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。
  • OE: 數據輸出允許信號,輸入端,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態門,輸出數字量。
  • CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHz。
  • REF(+)、REF(-):基準電壓。
  • Vcc:電源,+5V。
  • GND:地。




74LS74                74LS04                    





CD4511
  • A0A3:二進制數據輸入端   
  • YaYg:數據輸出端
  • BI:輸出消隱控制端,接電源
  • LT:燈測試端,接電源
  • LE:數據鎖定控制端,接地
  • VDD: 接電源
  • VSS: 接地


4位數碼管






AT89C52



單片機源程序如下:
  1. #include <reg52.H>
  2. #define uchar unsigned char;
  3. uchar code scan_con[]={0x08,0x04,0x02,0x01};  //定義掃描片選
  4. uchar dispbuf[4]={0,0,0,0}; //定義4個存儲空間
  5. uchar getdata;
  6. unsigned long int temp;//定義暫存空間
  7. uchar i,j,k,l,m;
  8. int a,b;
  9. sbit s3=P3^7;  //位定義,控制模擬開關
  10. sbit s2=P3^6;
  11. sbit s1=P3^5;
  12. sbit dp=P0^7; //定義小數點
  13. #define v20_on {s3=0;s2=0;s1=0;} //宏定義不同量程,不同的開關狀態
  14. #define v2_on {s3=0;s2=0;s1=1;}
  15. #define v02_on {s3=0;s2=1;s1=0;}
  16. sbit ST=P3^1;   //定義單片機和ADC的控制信號
  17. sbit OE=P3^3;
  18. sbit EOC=P3^2;

  19. delay_ms(int n)
  20. {
  21.         for(a=n;a>0;a--)
  22.                 for(b=100;b>0;b--);
  23. }

  24. main(void)
  25. {
  26.         while(1)
  27.         {   
  28. _20v:       //2~20V量程
  29.         v20_on;
  30.         ST=1;
  31.         delay_ms(1);      //啟動A/D轉換
  32.         ST=0;
  33.         while(EOC==0)
  34.         OE=1;
  35.         getdata=P1;
  36.         OE=0;
  37.         if(getdata<21)  //量程不合適,切換
  38.         {
  39.                 goto _2v;
  40.                 delay_ms(1);
  41.         }           
  42.         l=3;
  43.         temp=getdata;   //量程合適,數據處理
  44.         temp=temp*100;
  45.         temp=temp*5/51;
  46.         goto disp;   //跳到數碼管顯示程序段
  47. _2v:                   //200MV~2V量程
  48.         v2_on;
  49.         ST=1;
  50.         delay_ms(1);      //啟動A/D轉換
  51.         ST=0;
  52.         while(EOC==0)
  53.         OE=1;
  54.         getdata=P1;
  55.         OE=0;
  56.         if(getdata<21)
  57.         {
  58.                 goto _02v;
  59.                 delay_ms(1);
  60.         }
  61.         else if(getdata>204)
  62.         {
  63.                 goto _20v;
  64.                 delay_ms(1);
  65.         }
  66.         l=2;
  67.         temp=getdata;
  68.         temp=temp*100*5/51;
  69.         goto disp;
  70. _02v:              //0~200MV量程
  71.            v02_on;
  72.            OE=0;
  73.           ST=1;
  74.         delay_ms(1);      //啟動A/D轉換
  75.         ST=0;
  76.         while(EOC==0)
  77.         OE=1;
  78.         getdata=P1;
  79.         OE=0;
  80.         if(getdata>204)
  81.            {
  82.                    goto _2v;
  83.                    delay_ms(1);
  84.            }
  85.            l=1;
  86.            temp=getdata;
  87.            temp=temp*100*5/51;
  88.            
  89. disp:
  90.            dispbuf[3]=0;
  91.            dispbuf[2]=0;
  92.            dispbuf[1]=0;
  93.            dispbuf[0]=0;
  94.            i=0;
  95.            for(;temp;i++)//電壓值的每個位計
  96.        {
  97.                    dispbuf[i]=temp%10;
  98.                    temp=temp/10;  
  99.            }
  100.            for(k=0;k<=3;k++)  //數碼管顯示
  101.            {
  102.                   
  103.                    if((k==3&&l==3&&i==3)        ||(k==3&&l==1&&i==3))
  104.                    continue;
  105.                    P0=scan_con[k];      //位選
  106.                     P2=dispbuf[k]&0x0f;   //段選
  107.                    if((l==3&&k==2)||(l==2&&k==3)||(l==1&&k==1))
  108.                    dp=0        ;
  109.                    else dp=1;
  110.                    for(m=0;m<=2;m++)
  111.                    for(j=0;j<=20;j++);
  112.                    }
  113.                    }
  114.                    }
復制代碼

所有資料51hei提供下載:
電壓表.zip (795.15 KB, 下載次數: 23)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美aⅴ | 国产精品久久久久久中文字 | 在线观看免费av网站 | 亚洲成人一级 | 91免费观看 | 国产午夜精品一区二区三区嫩草 | 中文字幕视频在线看 | 国产精品7777777 | 在线一区二区观看 | 国产精品污www一区二区三区 | 天天综合网永久 | 亚洲精品久久久久久久久久久久久 | 久久久免费观看视频 | 国产色爽 | 超碰在线免费 | 欧美一区二区三区精品 | 一区二区电影网 | 夜夜爽99久久国产综合精品女不卡 | 亚洲国产福利视频 | 特黄一级 | 亚洲高清在线 | 亚洲综合国产 | 欧产日产国产精品视频 | 色在线免费视频 | 欧美激情久久久 | 午夜影院视频在线观看 | 国产精品久久欧美久久一区 | 国产激情在线观看视频 | 一级片在线观看视频 | 玖玖久久| 久久久av| 成人天堂 | 天天综合网永久 | 香蕉一区| 一区二区激情 | 亚洲高清一区二区三区 | 成人超碰 | 日韩成人影院在线观看 | 91av入口| 精品一区av | 欧美v片|