導航:首頁 > 操作系統 > 單片機查詢adc

單片機查詢adc

發布時間:2022-12-08 07:24:35

① 關於單片機ADC的計算

8051除DPTR是可讀寫的16位寄存器外,其餘都是8位的,ADC也不例外
如果其轉換結果超8位,是保存在2個寄存器中的
C語言編程
很簡單,如果12位數據右對齊
轉換結果為
高8位乘256
加低8位
如果左對齊,則結果為高8位乘16
加低8位除16
匯編語言要復雜一些
要會多位元組數據(起碼會雙位元組)的加減乘除運算,教科書上有例子的

② 請問下ADC0809與8031單片機的查詢方式給點原理性的解釋讓我明白~~謝謝

其實不是很懂你想問什麼,我就簡單說一下我能想到的你可能需要的吧。
adc0809是一種模數轉換晶元,簡單來說就是把模擬信號轉換成對應的數字信號。比如輸入為1v,參考高電壓為2v,參考低電壓為0v,那麼輸出就是1v/2v
*255
(乘以255的原因是因為這是一個8位的ad)。
74ls373是三態輸出的八d鎖存器,簡單來說就是通過幾個輸入信號來實現數字信號的d觸發器的控制,三態就是高電平
低電平
高阻態三態。
8031是一種通用單片機,就是通過在裡面進行預先燒寫程序,實現通用控制的一種器件。
總體來說,8031是電路板的大腦,adc0809類似於溫度神經,用來檢測電壓高低,74ls373類似於神經纖維之類用於實現電平信號的一種基礎邏輯的擴展晶元。
建議提出問題時說明具體目標或者用途,回答也好有的放矢。手寫不易,求給分。

③ 單片機控制ADC的常用方法有哪些

1、ADC原理

ADC轉換器由前置濾波器、調制器、數字濾波器和梳值濾波器組成,22∃ADC的結構如圖1所示.它是將輸入信號通過22∃調制器量化成1bit的高速數據流,再經過數字濾波和采樣抽取後才得到最後的結果.和傳統的A󰃗D轉換相比,其原理和結構有很大地不同,下面以一階22∃調制器為例來說明22∃ADC原理.

圖1 2-∃ADC的結構

2、常用的方法

ADC0809是帶有8位A/D轉換器、8路多路開關以及微處理機兼容的控制邏輯的CMOS組件。它是逐次逼近式A/D轉換器,可以和單片機直接介面。

(1)ADC0809的內部邏輯結構

由下圖可知,ADC0809由一個8路模擬開關、一個地址鎖存與解碼器、一個A/D轉換器和一個三態輸出鎖存器組成。多路開關可選通8個模擬通道,允許8 路模擬量分時輸入,共用A/D轉換器進行轉換。三態輸出鎖器用於鎖存A/D轉換完的數字量,當OE端為高電平時,才可以從三態輸出鎖存器取走轉換完的數 據。

(2). ADC0809引腳結構

ADC0809各腳功能如下:
D7-D0:8位數字量輸出引腳。
IN0-IN7:8位模擬量輸入引腳。
VCC:+5V工作電壓。
GND:地。
REF(+):參考電壓正端。
REF(-):參考電壓負端。
START:A/D轉換啟動信號輸入端。
ALE:地址鎖存允許信號輸入端。
(以上兩種信號用於啟動A/D轉換).
EOC:轉換結束信號輸出引腳,開始轉換時為低電平,當轉換結束時為高電平。
OE:輸出允許控制端,用以打開三態數據輸出鎖存器。
CLK:時鍾信號輸入端(一般為500KHz)。
A、B、C:地址輸入線。

ADC0809對輸入模擬量要求:信號單極性,電壓范圍是0-5V,若信號太小,必須進行放大;輸入的模擬量在轉換過程中應該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。

地址輸入和控制線:4條

ALE為地址鎖存允許輸入線,高電平有效。當ALE線為高電平時,地址鎖存與解碼器將A,B,C三條地址線的地址信號進行鎖存,經解碼後被選中的通道的模擬量進轉換器進行轉換。A,B和C為地址輸入線,用於選通IN0-IN7上的一路模擬量輸入。通道選擇表如下表所示。


數字量輸出及控制線:11條

ST為轉換啟動信號。當ST上跳沿時,所有內部寄存器清零;下跳沿時,開始進行A/D轉換;在轉換期間,ST應保持低電平。EOC為轉換結束信號。當 EOC為高電平時,表明轉換結束;否則,表明正在進行A/D轉換。OE為輸出允許信號,用於控制三條輸出鎖存器向單片機輸出轉換得到的數據。OE=1,輸 出轉換得到的數據;OE=0,輸出數據線呈高阻狀態。D7-D0為數字量輸出線。

CLK為時鍾輸入信號線。因ADC0809的內部沒有時鍾電路,所需時鍾信號必須由外界提供,通常使用頻率為500KHZ,

VREF(+),VREF(-)為參考電壓輸入。

2. ADC0809應用說明

(1). ADC0809內部帶有輸出鎖存器,可以與AT89S51單片機直接相連。

(2). 初始化時,使ST和OE信號全為低電平。

(3). 送要轉換的哪一通道的地址到A,B,C埠上。

(4). 在ST端給出一個至少有100ns寬的正脈沖信號。

(5). 是否轉換完畢,我們根據EOC信號來判斷。

(6). 當EOC變為高電平時,這時給OE為高電平,轉換的數據就輸出給單片機了。

3. 實驗任務

如下圖所示,從ADC0809的通道IN3輸入0-5V之間的模擬量,通過ADC0809轉換成數字量在數碼管上以十進制形成顯示出來。ADC0809的VREF接+5V電壓。

4. 程序設計內容

(1). 進行A/D轉換時,採用查詢EOC的標志信號來檢測A/D轉換是否完畢,若完畢則把數據通過P0埠讀入,經過數據處理之後在數碼管上顯示。

(2). 進行A/D轉換之前,要啟動轉換的方法:

ABC=110選擇第三通道

ST=0,ST=1,ST=0產生啟動轉換的正脈沖信號 .

C語言源程序
#include
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,10,0,0,0};
unsigned char dispcount;

sbit ST="P3"^0;
sbit OE="P3"^1;
sbit EOC="P3"^2;
unsigned char channel="0xbc";//IN3
unsigned char getdata;

void main(void)
{
TMOD=0x01;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TR0=1;
ET0=1;
EA=1;

P3=channel;

while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
getdata=P0;
OE=0;
dispbuf[2]=getdata/100;
getdata=getdata%10;
dispbuf[1]=getdata/10;
dispbuf[0]=getdata%10;
}
}

void t0(void) interrupt 1 using 0
{
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}

④ STC單片機 ADC按鍵 求助!!

取那麼多、那麼長時間的平均值干什麼?

連續取 20 次,其中有10 次,按的是這個鍵,有10 次,按的是那個鍵,

平均一下,判定結果:是按下了一個根本就沒有按的鍵。
========
#include<reg52.h>
#include<intrins.h>

unsigned char code k_AD[] = {
10, 40, 70, 100, 130, 160, 190, 210, 230};//九個按鍵所對應的ADC值

unsigned char code an[] = { //共陽段碼
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//--------------------------------------------
void delay(int x)
{
int i;
while(x--) for(i = 115; i > 0; i--);
}
//--------------------------------------------
unsigned char keyscan()
{
unsigned char k1, k2;

k1 = GetADCResult(0);//讀出

if(k1 < 238) { //按下了

delay(20); //延時

k2 = GetADCResult(0); //再次讀出

if((k1 > (k2 - 5) && (k1 < (k2 + 5)) { //兩者相差無幾

k1 /= 2; k2 /= 2; k1 += k2; //兩次的平均值

for(k2 = 0; k2 < 9; k2++) //在表格中查找9次

if(k1 > (k_AD[k2]) - 5) && (k1 < (k_AD[k2]) + 5)) //找到了

return(k2); //就返回鍵值
}
}
return(255); //沒有按鍵
}
//--------------------------------------------
void main()
{
unsigned char key;
while(1) {
key = keyscan();
if(key != 255) P0 = an[key];//顯示鍵值
}
}
//--------------------------------------------

本程序未經驗證,僅供參考。

⑤ 單片機如何用adc求電阻值

你的電阻的電路圖具體是什麼。你可以通過單片機給adc0832送相應的數據,數值可以在0-255范圍內,如果你用的集成電阻器的話,可以通過這個數值不同范圍選擇不同的電阻。

⑥ 單片機集成的ADC指的是什麼器,DAC指的是什麼器

ADC是指模擬信號轉換成數字信號,DAC剛好相反。比如基準電壓是5V、10位ADC的單片機,檢測外部2.5V的電壓,讀取檢測後單片機對應的寄存器值就可以獲取512左右的數值。簡單的說ADC就是單片機檢測電壓。DAC則是你想輸出對應的電壓,只要編程時候賦對於得數值就可以了。

⑦ 什麼是ADC的中斷方式和查詢方式

AD轉換是需要一定時間的,是讓程序就地等待轉換結果讀取數據,還是讓ADC轉換結束之後自動處理結果,可以有兩種選擇。選擇前者就是查詢方式,選擇後者就是中斷方式。ADC轉換結束之後有一個標志會置位,查詢方式就是讓程序等待這個標志位置位。而如果開放了ADC中斷,這個標志位置位的同時會發生中斷,程序暫時掛起,自動進入中斷服務程序處理ADC轉換結果,處理結束之後繼續被掛起的程序。你提問中的兩種方式,和其它諸如定時器、I/O、串列介面等模塊的應用,道理都是一樣的。當然,我說的僅限於單片機片內ADC,至於外掛的ADC那是另一番情景了。

⑧ 單片機中ADC是什麼

ABC的意思指的是,ac轉DC。交流信號轉化為直流信號。

⑨ 關於單片機ADC的計算

8051除DPTR是可讀寫的16位寄存器外,其餘都是8位的,ADC也不例外 如果其轉換結果超8位,是保存在2個寄存器中的
C語言編程很簡單,如果12位數據右對齊
轉換結果為 高8位乘256 加低8位
如果左對齊,則結果為高8位乘16 加低8位除16
匯編語言要復雜一些
要會多位元組數據(起碼會雙位元組)的加減乘除運算,教科書上有例子的

閱讀全文

與單片機查詢adc相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:736
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163