51單片機AD轉換電路設計實現

2020-08-29 背影lmc

51單片機AD轉換電路設計實現

關於AD轉換的原理,大家在《數字電子技術》中已經學過,這裡做過多的介紹,本文介紹一款經典的8位AD轉換晶片ADC0804,基於51單片機設計AD轉換電路,並完成測量值的轉換。

1 晶片引腳介紹

CS:片選信號,低電平有效,即CS=0時候晶片才能正常工作,單獨一個ADC0804晶片時候直接置零。當有多個晶片時候可以通過片選信號實現分時復用。

WR:低電平有效,當WR信號由高到低時候實現一次ADC轉換。

RD:低電平有效,RD=0時候可以讀取數據。

Vin+:模擬電壓輸入端。

Vin-:一般接地,當模擬電壓是雙邊輸入時候Vin+和Vin-分別接模擬電壓的正負極。

VREF/2:參考電壓接入引腳,可懸空或接外界電壓。接外電壓時候晶片的參考電壓為所接電壓的兩倍。懸空時候晶片參考電壓為VCC。

CLKR/CLKIN:外接RC電路產生轉換所需的時鐘信號,CLK=1/1.1RC。

AGND和DGND:模擬和數字地。

INTR:中斷請求信號輸出引腳,當完成一次AD轉換後該引腳為低電平,一般與單片機的中斷信號相連。

DB0~DB7:輸出轉換後的八位二進位結果。

2 ADC0804的一般接法:

Proteus仿真電路:

3 ADC0804的工作時序:

啟動轉換時序

先將CS置低電平,晶片開始工作,WR隨後置低,經過一段時間的低電平之後,WR拉高,AD轉換啟動,經過1-8個A/D時鐘周期後,模數轉換完成,INTR引腳拉低,通知單片機本次轉換完成。

數據讀取時序

當INTR為低電平時,先將CS置低,接著RD置低,經過一段時間後數字輸出口上的數據達到穩態,此時單片機可以讀取數據,讀取完成後將RD拉高,最後將CS拉高。INTR自動變化,無需人為操作。一般在只有一片ADC0804晶片時候,可以一直將CS置低。

4 仿真實現

51單片機讀取ADC0804數據的方式有兩種,一種是通過不斷掃描的方式讀取;另一種是將ADC0804的INTR引腳接單片機的中斷引腳,當AD轉換完成後,通過外部中斷的方式通知單片機讀取數據。

4.1 掃描的方式

Proteus仿真電路圖

原始碼:

include <intrins.h>sbit CS=P3^5;sbit adrd=P3^7;sbit adwr=P3^6;unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char com[]={0x01,0x02,0x04,0x08};unsigned char num,num2=0,time[4]={0,0,0,0},val;float val2;unsigned int val3;void main(){TMOD=0x01;TH0=(65536-917)/256;TL0=(65536-917)%256;;EA=1;ET0=1;TR0=1;CS=0;while(1){adwr = 1;//_nop_();adwr = 0;//_nop_();adwr = 1;//P1 = 0xff;//adrd = 1;//_nop_();adrd = 0;//_nop_();val = P1;//adrd = 1;//val2=((val*1.0/255)*5.0);val3=val2*1000;time[0]=val3/1000;time[1]=val3%1000/100;time[2]=val3%100/10;time[3]=val3%10;}}void Timer0() interrupt 1{TH0 = (65536-917)/256;TL0 = (65536-917)%256;;num++;if(num==10){num=0;P0=~com[num2];P2=0xff;if(num2==0){P2=display[time[num2]]|0x80;}else{P2=display[time[num2]];}num2++;if(num2>=4)num2=0;}}


4.2 外部中斷的方式

Proteus仿真電路

原始碼:

include <intrins.h>sbit CS=P3^5;sbit adrd=P3^7;sbit adwr=P3^6;unsigned char code display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};unsigned char com[]={0x01,0x02,0x04,0x08};unsigned char num,num2=0,time[4]={0,0,0,0},val;float val2;unsigned int val3;void Delay50ms() //@11.0592MHz{unsigned char i, j, k;_nop_();_nop_();i = 3;j = 26;k = 223;do{do{while (--k);} while (--j);} while (--i);}void main(){TMOD=0x01;TH0=(65536-917)/256;TL0=(65536-917)%256;;EA=1;ET0=1;TR0=1;EX0=1;IT0 = 0;CS=0;while(1){adwr = 1;//_nop_();adwr = 0;//_nop_();adwr = 1;//Delay50ms();}}void Timer0() interrupt 1{TH0 = (65536-917)/256;TL0 = (65536-917)%256;;num++;if(num==10){num=0;P0=~com[num2];P2=0xff;if(num2==0){P2=display[time[num2]]|0x80;}else{P2=display[time[num2]];}num2++;if(num2>=4)num2=0;}}void Init0() interrupt 0{adrd = 1;//_nop_();adrd = 0;//_nop_();val = P1;//adrd = 1;//val2=((val*1.0/255)*5.0);val3=val2*1000;time[0]=val3/1000;time[1]=val3%1000/100;time[2]=val3%100/10;time[3]=val3%10;}

相關焦點

  • 基於51單片機的嵌入式SNMP代理器設計與實現
    2 嵌入式代理器的硬體實現 我們設計的基於SNMP的控制系統原理見圖2。 控制現場的信號採集由A/D轉換模塊輸入單片機。單片機對信號進行處理,並且執行SNMP代理器的任務,硬體部分主要包括A/D、串口、乙太網、小邏輯、單片機、監控信號採集、電源及監控等模塊,本文著重介紹與嵌入式SNMP代理器密切相關的部分。
  • 《電子發燒友網51單片機設計方案TOP10》
    主機硬體系統由AT89C51單片機、數碼顯示、RS 232數據通信等電路組成。其主機系統電路原理圖如圖2所示。這裡的顯示電路為2位,如果呼叫方大於100個,可進行擴展,顯示方式採用軟體控制。   對目前所有兼容lntel 8031指令系統的單片機,統l稱為51單片機。Intel的8031單片機是51單片機的始祖。8031單片機是目前應用最廣泛的8位單片機之一。
  • 51單片機+PID算法水溫控制系統設計
    本系統設計採用基於PID算法的單片機控制來實現水溫的調控。單片機控制部分採用AT89C51單片機為核心,採用軟體編程,實現用PID算法來控制PWM波的產生,繼而控制電爐的加熱來實現溫度控制。通過編程對PID各參數的調整,來達到提高加溫速度,減小超調的目的。
  • 一款基於51單片機的簡易示波器設計
    它由前向控制部分,數據採集和存儲部分,51單片機控制部分以及按鍵和MS12864R顯示部分組成。本文引用地址:http://www.eepw.com.cn/article/248283.htm1 簡易數字示波器的工作原理以及總體框架本設計硬體電路部分由單片機控制系統電路,前向輸入調理電路,模數轉換和存儲電路,以及按鍵顯示電路組成。
  • 基於51單片機的電子時鐘課程設計
    2.題目與要求本次課程設計的題目為:電子時鐘的設計,其具體要求為:(1)能實現時、分、秒的顯示;(2)能實現12、24小時制的切換;(3)能設定時間;(4)能設定鬧鐘;整個系統要設計鍵盤和顯示器,利用單片機內部時鐘完成定時器的定時設計。
  • 基於51單片機的兩路溫度控制器的設計方案
    本方案中所設計的溫度控制器,採用AT89C51單片機作為內核,採用DS18B20作為溫度傳感器,通過四位LED顯示,通過循環掃描實現了兩路溫度的採集與顯示。
  • 基於51單片機的異步串行接口鍵盤設計
    筆者結合工作實際,圍繞單片機89C51設計了通用異步串行接口鍵盤作為顯示分系統的擴展鍵盤。目的在於為顯示分系統增加一種幹預手段。實踐表明:此鍵盤改善了系統的人機界面,提高了系統的處理效率。1 設計要求與工作原理1.1 設計要求 (1)擴展鍵盤鍵位編碼符合顯示分系統的約定。
  • 基於51單片機的人體紅外模塊的自動門設計
    為了搭建性能穩定的外部電路及實現較高的性價比,使自動門達到真正的智能控制,針對各個模塊的功能要求,分別有以下一些不同的設計方案:1.驅動電機方案A:選擇步進電機作為自動門的引擎。步進電機最大的優點就是在距離上能夠得到較精確控制,在沒有行程開關作為電機停止的信號時,步進電機是最有選擇。方案B:採用普通直流電機。
  • 基於MCS-51系列單片機實現遙測數據存儲系統的設計
    基於MCS-51系列單片機實現遙測數據存儲系統的設計 吳芝路,任廣輝,王 發表於 2020-11-27 10:12:25   作者:吳芝路,任廣輝,王桂玲
  • 基於51單片機的電子廣告牌電路設計
    在此主要介紹以AT89S51為控制晶片,用8×8的點陣屏4塊來級聯實現16×16的點陣屏,從而用於廣告牌顯示等。1 系統設計方案 鑑於所設計的點陣屏為16×16單色顯示,可以用8×8的點陣屏4塊來級聯實現,此時點陣屏的行列各為16管腳,需要擴展口,採用74LS164串行輸入並行輸出來實現。
  • 單片機紅外電路設計原理
    紅外發射功能主要由紅外發射管來實現,紅外發射管在外觀上和透明的LED發光二極體極為相似,其驅動和控制方式也一致。在使用單片機控制發射管時,一般使用三極體來驅動,NPN三極體和PNP三極體都可以實現。如下圖所示使用PNP三極體來實現的。
  • 基於51單片機和可編程邏輯器件實現LED顯示屏
    LED顯示屏主要由電流驅動電路及LED點陣陣列、控制系統和PC端管理軟體三部分構成(圖1)。控制系統負責接收、轉換和處理各種外部信號,並實現掃描控制,然後驅動LED點陣顯示需要的文字或圖案。控制系統作為LED顯示屏的核心部分,直接決定了顯示屏的顯示效果和性能的優劣。
  • Proteus軟體仿真與Keil的51單片機系統設計
    它包括PROTEUS VSM(Virtual System Modelling)、PROTEUS PCB DESIGN兩大組成部分,在PC機上就能實現原理圖電路設計、電路分析與仿真、單片機代碼級調試與仿真、系統測試與功能驗證以及形成PCB文件的完整嵌入式系統設計與研發過程。
  • 基於proteus的51單片機開發實例37-DAC0832
    設計思路圖1 DAC0832電路本例中使用51單片機控制D/ADAC0832與51單片機的接口VCC、ILE同時接到+5V,WR1和WR2同時接到單片機的同一個埠P3.6;CS和XFER也同時接到單片機的一個埠P2.7。這種接法使DAC0832相當於一個單片機的外部擴展存儲器,其地址為0x7fff。只要採用對片外存儲器尋址的方法將數據寫入該地址,DAC0832就會自動開始數模轉換。
  • 51單片機入門:LED燈實現不同頻率閃爍
    在上一篇文章中,我們用51單片機實現了單個LED燈的閃爍,但閃爍頻率固定的。下面我們實現LED燈不同頻率的閃爍!
  • 跟我學51單片機(四):獨立-矩陣鍵盤應用與設計
    上講介紹並應用了單片機的串口通信,並給出了實例。從這一講開始將介紹單片機的外圍電路。這講向大家介紹單片機外接鍵盤電路,通過該講,讀者可以掌握單片機外接鍵盤的工作原理從而實現電路與程序設計。
  • 基於MSP430F1611單片機實現多功能電路保護裝置的設計
    基於MSP430F1611單片機實現多功能電路保護裝置的設計 陳明,包鑫 ,朱墨子 發表於 2020-12-14 10:14:32 電力系統的飛速發展對繼電保護不斷提出新的要求
  • 基於51單片機定時器的電子時鐘設計方案
    今天我們將會為大家分享一種比較基礎的電子時鐘設計方案,該方案基於51單片機定時器進行設計,精度較高,時鐘鬧鐘調節簡單。本文引用地址:http://www.eepw.com.cn/article/201808/387025.htm在本方案中,我們所設計的這種電子時鐘主要由51單片機定時器、1602LCD液晶屏等構成。
  • 單片機與電腦接口(TTL與RS232電平模擬轉換)電路及工作原理
    但是PC機和單片機的通訊卻不能夠用電纜直接進行連接,原因是PC機RS232串口的電平標準和單片機的TTL電平不一致,因此單片機和PC機之間的串口通訊必須要有一個RS232/TTL電平轉換電路。通常這個電路都選擇專用的RS232接口電平轉換集成電路進行設計,如MAX232、HIN232等。
  • 51單片機之4位數加法計算器的設計報告
    本設計採用AT89C52單片機作為主要核心部件,附以上電復位電路,時鐘電路及按鍵調時電路組成。數字鐘已成為人們日常生活中: 必不可少的必需品, 廣泛用於個人家庭以及車站、 碼頭、劇場、辦公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。 由於數字集成電路技術的發展和採用了先進的石英技術,使數字鐘具有走時準確、性 能穩定、攜帶方便等優點,它還用於計時、自動報時及自動控制等各個領域。