導航:首頁 > 操作系統 > 51單片機連接adc

51單片機連接adc

發布時間:2024-09-21 12:19:53

單片機如何實現多路模擬量的數據採集、顯示

普通單片機實現多路模擬量的數據採集、顯示需要:

外部連接一個多通道輸入的ADC晶元,單片機按照一定的周期驅動模擬開關切換到不同的模擬通道,設計模數轉換控制器的控製程序,可以進行定時模擬信號採集和顯示。

(1)51單片機連接adc擴展閱讀:

單片機基本結構及作用:

1、運算器

運算器由運算部件——算術邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8位數據,分別來自累加器和數據寄存器。

ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最後將結果存入累加器。

運算器有兩個功能:

執行各種算術運算。

執行各種邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。

運算器所執行全部操作都是由控制器發出的控制信號來指揮的,並且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。

2、控制器

控制器由程序計數器、指令寄存器、指令解碼器、時序發生器和操作控制器等組成,是發布命令的「決策機構」,即協調和指揮整個微機系統的操作。其主要功能有:

從內存中取出一條指令,並指出下一條指令在內存中的位置。

對指令進行解碼和測試,並產生相應的操作控制信號,以便於執行規定的動作。

指揮並控制CPU、內存和輸入輸出設備之間數據流動的方向。

微處理器內通過內部匯流排把ALU、計數器、寄存器和控制部分互聯,並通過外部匯流排與外部的存儲器、輸入輸出介面電路聯接。外部匯流排又稱為系統匯流排,分為數據匯流排DB、地址匯流排AB和控制匯流排CB。通過輸入輸出介面電路,實現與各種外圍設備連接。

3、主要寄存器

累加器A

累加器A是微處理器中使用最頻繁的寄存器。在算術和邏輯運算時它有雙功能:運算前,用於保存一個操作數;運算後,用於保存所得的和、差或邏輯運算結果。

數據寄存器DR

數據寄存器通過數據匯流排向存儲器和輸入散豎/輸出設備送(寫)或取(讀)數據的暫存單元。它可以保存一條正在解碼的指令,也可以保存正在送槐或往存儲器中存儲的一個數據位元組等等。

指令寄存器IR和指令解碼器ID

指令包括操作碼和操作數。

指令寄存器是用來保存當前正在執行的一條指令。當執行一條指令時,先把它從內存中取到數據寄存器中,然後再傳送到指令寄存器。

當系統執行給定的指令時,必須對操作碼進行解碼,以確定所要求的操作,指令解碼器就是負責這項工作的。其中,指令寄存器中操作碼欄位的輸出就是指令解碼器的輸入。

程序計數器PC

PC用於確定下一條指令鉛掘伍的地址,以保證程序能夠連續地執行下去,因此通常又被稱為指令地址計數器。在程序開始執行前必須將程序的第一條指令的內存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執行指令的地址。

地址寄存器AR

地址寄存器用於保存當前CPU所要訪問的內存單元或I/O設備的地址。由於內存與CPU之間存在著速度上的差異,所以必須使用地址寄存器來保持地址信息,直到內存讀/寫操作完成為止。

顯然,當CPU向存儲器存數據、CPU從內存取數據和CPU從內存讀出指令時,都要用到地址寄存器和數據寄存器。同樣,如果把外圍設備的地址作為內存地址單元來看的話,那麼當CPU和外圍設備交換信息時,也需要用到地址寄存器和數據寄存器。

② 51單片機adc模塊的功能是

ADC模塊當然是實現模數轉換。

③ 51單片機 C語言ADC程序怎麼寫

typedef unsigned char BYTE;
typedef unsigned int WORD;
#include "reg51.h"
#include "intrins.h"

/*Declare SFR associated with the ADC */
sfr ADC_CONTR = 0xBC;
sfr ADC_RES = 0xBD;
sfr ADC_LOW2 = 0xBE;
sfr P1ASF = 0x9D;
sfr P2M0 = 0x96;
sfr P2M1 = 0x95;

/*Define ADC operation const for ADC_CONTR*/
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60

//延時
void Delay(WORD n)
{
WORD x;

while (n--)
{
x = 5000;
while (x--);
}
}

//初始AD寄存器
void InitADC()
{
P1ASF = 0xff;
ADC_RES = 0;
ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
Delay(2);
}

//AD轉換
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while (!(ADC_CONTR & ADC_FLAG));
ADC_CONTR &= ~ADC_FLAG;

return ADC_RES;
}

void main()
{ BYTE temp;
P2M1=0; P2M0=0x03; //P2.0和P2.1強推挽
InitADC();
while (1)
{
temp=GetADCResult(0);//轉換P1.0
if(temp>1)
P2|=0x03; //P1.0有電壓 P2.0和P2.1輸出高
else
P2&=0xFC; //P1.0無電壓 P2.0和P2.1輸出低
}
}

④ 51單片機c語言,ADC模數轉換的問題

對於這個,要這么看:
假設中斷A是優先順序高的中斷,中斷B是優先順序低的中斷
如果在正常執行的過程中,發生中斷A,那麼,中斷A執行完成後,會返回正常程序;
如果在正常執行過程中,發生中斷B,又在中斷B處理過程中發生中斷A,那麼,中斷A執行完成後,一定要返回的是中斷B,這是由硬體決定的,不是軟體決定的,所以,軟體沒有任何指令可以讓中斷A執行完成後直接跳過還沒有執行完的中斷B而直接回到主程序,因為這是硬體決定的,軟體做不到,即便你在高級中斷A中關閉了中斷B,但是因為你原來的中斷B還沒有執行完,所以,仍然要把沒執行完的部分執行下去,才能返回到正常程序.
對於ARM系列的可以,對於51來說,是不行的,因為51軟體指令不允許修改PC寄存器的值

⑤ 光強感測器怎麼接入51單片機 給個接入的電路圖

說個原理給你吧,剩下的自己多想想,拿別人的原理圖來就用,知識永遠都是別人的。
1、光強感測器(不知道你說的是什麼元件,我就猜是光敏電阻之類的吧)感應光強的變化,輸出的是電流或者電壓(具體視你的元件和電路而定,如果是電流就加個運放或者串聯個電阻換成電壓,可自己用萬用表測)。
2、這個電壓可能很小,所以需要運放來放大這個信號(電壓足夠大則不需要)。放大後,沒有內置AD的單片機是無法識別這種信號的(數字的世界只有0和1),所以要用一個模擬-數字轉換器,也就是ADC晶元來將這個電壓值轉換成並行或者串列的數據,並送到單片機的IO口上。當然這個ADC的工作也要靠51單片機來控制。
3、將ADC轉換出來的數據與參考光照強度值對比(一般是線性的),獲得「光強度-電壓值」公式,然後選個顯示器件,如數碼管、液晶等等,將強度數據顯示出來。
以上字字手打,希望對你有幫助。如果還不明白,可以慢慢聊!

⑥ 51單片機連電位器一定要adc嗎

一定。51單片機連電位器需要adc的,因為作AD用必須一個接電源一個接地,兩個電阻中間即VREF接單片機引腳或接一個1K的電阻再接單片機引腳。

⑦ adc0809轉換的一些問題(與51單片機配合)

1 、地址是人為定義的,在51單片機中P0口是低位地址8位與數據口8位分時復用,所有連接在地址匯流排上的器件,都必須有一個地址區間(地址塊),例如,RAM 62256需要32Kbyte,0000H--7FFFH,就是一個片選信號。
ad轉換器需要一個,經過地址解碼器,解碼後的「區間」,即儲存器的片選信號,解碼器可以分成1,2,4,8塊----,1就是單一地址,必須解碼器;看自己需要選定,選定一塊,如果需要,這一塊還可以用解碼器再次解碼,原則上可以到單個地址,ADC0809需要8個地址,用低位地址線A0,A1,A2三根,和上面所述的片選信號線,完成對該器件8路ad轉換器的選擇,低位地址線可以共用,片選線不能與其它器件共用。
2、外部數據輸入到P0口是需要有相應的器件被選擇,需要讀寫信號線控制的,這里用 /RD 讀信號,它不是單一發出,它與地址線共同完成對器件的讀寫操作。
這個例子中,需要選擇這個ADC器件(片選),還需要選擇由哪一路轉換器輸出(A0,A1,A2)。

data=P0這條指令和data=P1一樣,沒有地址輸出,沒有/RD輸出,就是沒有選擇到需要的器件。

⑧ 51單片機的adc介面在哪

埠引腳P3.4至P3.7處。
51單片機的P1是輸入埠,P0是輸出埠。ADC的控制信號(INTR、WR、RD和CS)分別在埠引腳P3.4至P3.7處可用。
51單片機是對兼容英特爾8051指令系統的單片機的統稱。

閱讀全文

與51單片機連接adc相關的資料

熱點內容
linux重啟命令apache 瀏覽:751
半夜解壓有什麼壞處 瀏覽:424
linux代理命令 瀏覽:637
調用tasking的編譯器編譯 瀏覽:292
青檸app是什麼 瀏覽:866
linuxapachephp56 瀏覽:395
安卓手機如何打開eng文件 瀏覽:22
看拉丁電視都用什麼app好 瀏覽:779
什麼是哲學pdf 瀏覽:509
hdfs的三個下載命令 瀏覽:525
java常用的排序演算法 瀏覽:359
51單片機連接adc 瀏覽:861
python命名變數報錯 瀏覽:122
安卓手機如何換windows系統 瀏覽:614
python中的類是什麼 瀏覽:632
我的英雄學院用哪個app可以看 瀏覽:37
excel插入選項卡對象命令 瀏覽:695
python字元全排列 瀏覽:507
824頁大瓜文件pdf 瀏覽:222
朔州ios源碼 瀏覽:251