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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3741|回復: 1
收起左側

51單片機+ADC0809數碼管顯示程序+Proteus仿真

[復制鏈接]
ID:821279 發表于 2020-11-9 16:51 | 顯示全部樓層 |閱讀模式
一。ADC0809介紹
二。基于51單片機的原理圖
三。相關程序

一。ADC0809介紹

1、ADC0809簡介
  • ADC0809是采用COMS工藝制造的雙列直插式單片8位A/D轉換器。分辨率8位,精度7位,帶8個模擬量輸入通道,有通道地址譯碼鎖存器,輸出帶三態數據鎖存器。啟動信號為脈沖啟動方式,最大可調節誤差為±1LSB。
  • ADC0809內部沒有時鐘電路,故CLK時鐘需由外部輸入,fclk允許范圍為500kHz-1MHz,典型值為640kHz。每通道的轉換需要66~73個時鐘脈沖,大約100-110us。(轉換時間)工作溫度范圍為-40℃—+85℃。功耗為15mW,輸入電壓范圍為0–5V,單一+5V電源供電。
2、ADC0809的引腳介紹

  • IN0~IN7 : 8路模擬量輸入端
  • D0~D7:8位數字量輸出端
  • ADDA、ADDC、ADDC:3位地址輸入線,用于選擇8路模擬通道中的一路,選擇情況見表。
  • ALE:地址鎖存允許信號,輸入,高電平有效
  • START:A/D轉換啟動信號,輸入,高電平有效
  • EOC:A/D轉換結束信號,輸出。當啟動轉換時,高引腳為低電平,當A/D結束轉換時,高引腳輸出高電平。
  • OE:數據輸出允許信號,輸入,高電平有效。當轉換結束后,如果從該引腳輸入高電平,則打開輸出三態門,輸出鎖存器的數據從D0~D7送出。
  • CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ.
  • REF+、REF-:基準電壓輸入端。
  • VCC:電源,接+5V;
  • GND:地。

3、ADC0809的工作流程
  • 輸入3位地址,并使ALE=1,將地址存入地址鎖存器中,經地址譯碼器譯碼從8路模擬通道中選通一路模擬量送到比較器。
  • 送START一高脈沖,START的上升沿使逐次逼近寄存器復位,下降沿啟動A/D轉換,并使EOC信號為低電平。
  • 送START一高脈沖,START的上升沿使逐次逼近寄存器復位,下降沿啟動A/D轉換,并使EOC信號為低電平。
  • 當CPU執行一讀數據指令,使OE為高電平,則從輸出端D0~D1讀出數據

二。基于51單片機的原理圖
捕獲.PNG 捕獲.PNG 捕獲.PNG

三。相關程序
  1. #include<reg52.h>
  2. unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  3. unsigned char dispbuf[4];
  4. unsigned int i;
  5. unsigned int j;
  6. unsigned char getdata;
  7. unsigned int temp;
  8. unsigned int temp1;
  9. unsigned char count;
  10. unsigned char d;
  11. sbit ST=P3^0;
  12. sbit OE=P3^1;
  13. sbit EOC=P3^2;
  14. sbit CLK=P3^3;
  15. //sbit P34=P3^4;
  16. //sbit P35=P3^5;
  17. //sbit P36=P3^6;
  18. sbit P20=P2^0;
  19. sbit P21=P2^1;
  20. sbit P22=P2^2;
  21. sbit P23=P2^3;
  22. sbit P17=P1^7;
  23. void TimeInitial();
  24. void Delay(unsigned int i);

  25. void TimeInitial()
  26. {
  27.          TMOD=0x10;
  28.          TH1=(65536-200)/256;
  29.          TL1=(65536-200)%256;
  30.          EA=1;
  31.          ET1=1;
  32.          TR1=1;
  33. }

  34. void Delay(unsigned int i)
  35. {
  36.   unsigned int j;
  37.   for(;i>0;i--)
  38.   {
  39.   for(j=0;j<125;j++)
  40.   {;}
  41.   }
  42. }

  43. void Display()
  44. {
  45.            P1=dispbitcode[dispbuf[3]];
  46.                  P20=0;
  47.                  P21=1;
  48.                  P22=1;
  49.                  P23=1;
  50.                  Delay(10);
  51.                  P1=0x00;
  52.                  P1=dispbitcode[dispbuf[2]];
  53.                  P17=1;
  54.                  P20=1;
  55.                  P21=0;
  56.                  P22=1;
  57.                  P23=1;
  58.                  Delay(10);
  59.                  P1=0x00;
  60.                  P1=dispbitcode[dispbuf[1]];
  61.                  P20=1;
  62.                  P21=1;
  63.                  P22=0;
  64.                  P23=1;
  65.                  Delay(10);
  66.                  P1=0x00;
  67.                  P1=dispbitcode[dispbuf[0]];
  68.                  P20=1;
  69.                  P21=1;
  70.                  P22=1;
  71.                  P23=0;
  72.                  Delay(10);
  73.                  P1=0x00;
  74. }
  75. void main()
  76. {
  77.                 TimeInitial();
  78.                 while(1)
  79.                 {
  80.                                 ST=0;
  81.                                 OE=0;
  82.                                 ST=1;
  83.                                 ST=0;
  84. //                                P34=0;
  85. //                                P35=0;
  86. //                                P36=0;
  87.                                 while(EOC==0);
  88.                                 OE=1;
  89.                                 getdata=P0;
  90.                                 OE=0;
  91.                                 temp=getdata*1.0/256*500;
  92.                                 dispbuf[0]=temp%10;
  93.                                 dispbuf[1]=temp/10%10;
  94.                                 dispbuf[2]=temp/100%10;
  95.                                 dispbuf[3]=temp/1000;
  96.                                 Display();
  97.                 }
  98. }

  99. void t1(void) interrupt 3 using 0
  100. {
  101.   TH1=(65536-200)/256;
  102.   TL1=(65536-200)%256;
  103.   CLK=~CLK;
  104.   }
復制代碼

全部資料51hei下載地址:
ADC0809.7z (101.46 KB, 下載次數: 71)
回復

使用道具 舉報

ID:826428 發表于 2020-11-30 13:52 來自手機 | 顯示全部樓層
老哥,實物的話,51時鐘怎么達到500khz呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年网站在线观看 | 精品福利一区 | 国产一级片| 亚洲精品久久久一区二区三区 | 亚洲精品成人免费 | 国产在线a| 91精品国产色综合久久 | 久久精品视频一区二区 | 一级黄色淫片 | 97超碰在线免费 | 国产精品亚洲片在线播放 | 久久人操 | 欧美中文字幕一区二区三区亚洲 | 成人国产精品免费观看 | 国产精品久久久久久久久久免费看 | 国内自拍视频在线观看 | 日操操| 精品久久久久国产免费第一页 | 亚洲精品二区 | 午夜国产 | 欧美a∨ | 欧美成人a∨高清免费观看 色999日韩 | 日韩a | 特级毛片| 91精品导航 | 国产精品日韩欧美一区二区三区 | 欧美日韩久久精品 | 欧美h视频 | 永久免费视频 | 欧美1页| www.国产日本| 99精品视频在线观看 | 中文字幕一区二区三区乱码在线 | 337p日本欧洲亚洲大胆精蜜臀 | 在线中文字幕第一页 | 亚洲综合天堂网 | 久久性色| 国产一区二区日韩 | 亚洲日产精品 | 欧美成人aaa级毛片在线视频 | 国产免费又黄又爽又刺激蜜月al |