0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機(jī)中AD/DA轉(zhuǎn)換器介紹及原理詳解

dytfki8u8yql ? 來源:電子技術(shù)控 ? 2023-08-29 09:12 ? 次閱讀

一、AD/DA介紹

AD(AnalogtoDigital):模擬-數(shù)字轉(zhuǎn)換,將模擬信號轉(zhuǎn)換為計算機(jī)可操作的數(shù)字信號,DA (Digital to Analog) :數(shù)字-模擬轉(zhuǎn)換,將計算機(jī)輸出的數(shù)字信號轉(zhuǎn)換為模擬信號。AD/DA轉(zhuǎn)換打開了計算機(jī)與模擬信號的大門,極大的提高了計算機(jī)系統(tǒng)的應(yīng)用范圍,也為模擬信號數(shù)字化處理提供了可能。

二、硬件電路模型

b8a4d0ec-4596-11ee-a2ef-92fbcf53809c.png

AD轉(zhuǎn)換通常有多個輸入通道,用多路選擇開關(guān)連接至AD轉(zhuǎn)換器,以實(shí)現(xiàn)AD多路復(fù)用的目的,提高硬件利用率;AD/DA與單片機(jī)數(shù)據(jù)傳送可使用并口(速度快、 原理簡單),也可使用串口(接線少、使用方便);可將AD/DA模塊直接集成在單片機(jī)內(nèi),這樣直接寫入/讀出寄存器就可進(jìn)行AD/DA轉(zhuǎn)換, 單片機(jī)的I0口可直接復(fù)用為AD/DA的通道 。

三、AD/DA原理待定學(xué)習(xí)

b8c1c95e-4596-11ee-a2ef-92fbcf53809c.png

四、XPT2046

b8ef80e2-4596-11ee-a2ef-92fbcf53809c.png

AD/DA性能指標(biāo)

指AD/DA數(shù)字 量的精細(xì)程度,通常用位數(shù)表示。例如,對于5V電源系統(tǒng)來說, 8位的AD可將5V等分為256份,即數(shù)字量變化最小-個單位時,模擬量變化5V/256=0.01953125V,所以,8位AD的電壓分辨率為0.01953125V, AD/DA的位數(shù)越高, 分辨率 就越高。
轉(zhuǎn)換速度: 表示AD/DA的最大采樣/建立頻率,通常用轉(zhuǎn)換頻率或者轉(zhuǎn)換時間來表示,對于采樣/輸出高速信號,應(yīng)注意AD/DA的轉(zhuǎn)換速度。
可將AD/DA模塊直接集成在單片機(jī)內(nèi),這樣直接寫入/讀出寄存器就可進(jìn)行AD/DA轉(zhuǎn)換, 單片機(jī)的I0口可直接復(fù)用為AD/DA的通道 。

XPT2046時序,采用SPI方式通信

b90d9bae-4596-11ee-a2ef-92fbcf53809c.png

DIN——MISO——主設(shè)備輸入、從設(shè)備輸出

DOUT——MOSI——主設(shè)備輸出,從設(shè)備輸入

起始位——第一位,即 S 位??刂谱值氖孜槐仨毷?1,即 S= 1。在 XPT2046 的 DIN 引腳檢測到起始位前,所有的輸入將被忽略。

地址——接下來的 3 位( A2、 A1 和 A0)選擇多路選擇器的現(xiàn)行通道(見表 3、表 4 和圖 6),觸摸屏驅(qū)動和參考源輸入。

b9407844-4596-11ee-a2ef-92fbcf53809c.png

MODE——模式選擇位,用于設(shè)置 ADC 的分辨率。MODE= 0,下一次的轉(zhuǎn)換將是 12 位模式;MODE= 1,下一次的轉(zhuǎn)換將是 8 位模式。

SER/ DFR位控制參考源模式,選擇單端模式( SER/DFR = 1),或者差分模式( SER/DFR = 0)。在X坐標(biāo)、 Y坐標(biāo)和觸摸壓力測量中,為達(dá)到最佳性能,首選差分工作模式。參考電壓來自開關(guān)驅(qū)動器的電壓。在單端模式下,轉(zhuǎn)換器的參考電壓固定為VREF相對于GND引腳的電壓(更詳細(xì)的說明,見表 3 和表 4,圖 5 和圖 8)。采用單端模式時,X- Y-接地。

PD0 和 PD1——表 5 展示了掉電和內(nèi)部參考電壓配置的關(guān)系。ADC 的內(nèi)部參考電壓可以單獨(dú)關(guān)閉或者打開,但是,在轉(zhuǎn)換前,需要額外的時間讓內(nèi)部參考電壓穩(wěn)定到最終穩(wěn)定值;如果內(nèi)部參考源處于掉電狀態(tài),還要確保有足夠的喚醒時間。ADC 要求是即時使用,無喚醒時間的。另外還得注意,當(dāng) BUSY 是高電平的時候,內(nèi)部參考源禁止進(jìn)入掉電模式。XPT2046 的通道改變后,如果要關(guān)閉參考源,則要重新對 XPT2046 寫入命令。即PD1為1是內(nèi)部參考電壓2.5V,,PD1為0是外部參考電壓VREF。

b956cefa-4596-11ee-a2ef-92fbcf53809c.png

五、代碼


		/*---------------------------------------------------------------------*/ /* --- 公眾號:我愛單片機(jī) ----------------------------------------------*/ /* --- Web: www.52dpj.com --------------------------------------------*/ /* --- QQ: 1256711178 -------------------------------------------------*/ /*---------------------------------------------------------------------*/ #include  // 引腳定義 sbit XPT2046_CS = P3 ^ 5; sbit XPT2046_DCLK = P3 ^ 6; sbit XPT2046_DIN = P3 ^ 4; sbit XPT2046_DOUT = P3 ^ 7; /** * @brief ZPT2046讀取AD值 * @param Command 命令字,范圍:頭文件內(nèi)定義的宏,結(jié)尾的數(shù)字表示轉(zhuǎn)換的位數(shù) * @retval AD轉(zhuǎn)換后的數(shù)字量,范圍:8位為0~255,12位為0~4095 */ unsigned int XTP2046_ReadAD(unsigned char Command) // 指令包括選擇的通道,分辨率8、12位,參考電壓,單端模式 { unsigned int ADVAlue = 0; unsigned char i; XPT2046_DCLK = 0; XPT2046_CS = 0; for (i = 0; i < 8; i++) // 發(fā)送指令 { XPT2046_DIN = Command & (0x80 >> i); // 高位在前,先發(fā)送高位 XPT2046_DCLK = 1; XPT2046_DCLK = 0; } for (i = 0; i < 16; i++) // 讀取AD數(shù)據(jù) { XPT2046_DCLK = 1; XPT2046_DCLK = 0; if (XPT2046_DOUT) { ADVAlue |= (0x8000 >> i); } // 高位在前,一共讀16位,但只有前12位有效,后四位用0填充 } XPT2046_CS = 1; if (Command & 0x08) // 根據(jù)模式選擇8位還是12位 { return ADVAlue >> 8; // 當(dāng)8位時,讀取到的數(shù)據(jù)是高八位,因此要往后移8位才是真實(shí)數(shù)據(jù) } else { return ADVAlue >> 4; // 當(dāng)12位時,有效數(shù)據(jù)是12位,后四位都是無效數(shù)據(jù),因此往后移4位是真實(shí)數(shù)據(jù) } } main.c #include  #include "LCD1602.h" #include "Delay.h" #include "XPT2046.h" unsigned int ADVAlue; void main() { LCD_Init(); LCD_ShowString(1, 1, "ADJ NTC RG"); while (1) { ADVAlue = XTP2046_ReadAD(XTP2046_XP_8); // 讀取AIN0,可調(diào)電阻 LCD_ShowNum(2, 1, ADVAlue, 4); // 顯示AIN0 ADVAlue = XTP2046_ReadAD(XTP2046_YP_8); // 讀取AIN1,熱敏電阻 LCD_ShowNum(2, 6, ADVAlue, 4); // 顯示AIN1 ADVAlue = XTP2046_ReadAD(XTP2046_VBAT_8); // 讀取AIN2,光敏電阻 LCD_ShowNum(2, 11, ADVAlue, 4); // 顯示AIN2 Delay(10); } }

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6040

    文章

    44594

    瀏覽量

    636948
  • 轉(zhuǎn)換器
    +關(guān)注

    關(guān)注

    27

    文章

    8738

    瀏覽量

    147568
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    274

    文章

    5705

    瀏覽量

    123926
  • 模擬信號
    +關(guān)注

    關(guān)注

    8

    文章

    1137

    瀏覽量

    52545
  • 數(shù)字信號
    +關(guān)注

    關(guān)注

    2

    文章

    975

    瀏覽量

    47607

原文標(biāo)題:51單片機(jī)AD模數(shù)轉(zhuǎn)換,使用SPI通信方式

文章出處:【微信號:電子技術(shù)控,微信公眾號:電子技術(shù)控】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)原理及應(yīng)用: DA轉(zhuǎn)換器的主要指標(biāo)與接口#單片機(jī)

    單片機(jī)DA轉(zhuǎn)換器
    學(xué)習(xí)硬聲知識
    發(fā)布于 :2022年11月08日 23:27:12

    單片機(jī)原理及應(yīng)用: DA轉(zhuǎn)換器芯片DAC0832#單片機(jī)

    單片機(jī)DAC0832DA轉(zhuǎn)換器
    學(xué)習(xí)硬聲知識
    發(fā)布于 :2022年11月08日 23:29:04

    求助51單片機(jī)連接DA轉(zhuǎn)換器的問題。

    51單片機(jī)連了一個 DAC7611 轉(zhuǎn)換器(12位串行)。發(fā)現(xiàn)了一個問題,在我給它送入偶數(shù)時候,DAC7611的確能輸出正確的電壓。比如送入500,它輸出就是500mv,并且很穩(wěn)定。。但是給它送入
    發(fā)表于 07-16 20:00

    51單片機(jī)中斷詳解

    單片機(jī)_中斷理解51單片機(jī)中斷詳解(上)51單片機(jī)中斷詳解
    發(fā)表于 11-22 06:08

    51單片機(jī)和stm32單片機(jī)如何串口通信呢,需要電平轉(zhuǎn)換器嗎?

    51單片機(jī)和stm32單片機(jī)如何串口通信呢,需要電平轉(zhuǎn)換器嗎?
    發(fā)表于 11-01 07:47

    AD轉(zhuǎn)換器AD976與51單片機(jī)的接口設(shè)計

    AD轉(zhuǎn)換器AD976與51單片機(jī)的接口設(shè)計。
    發(fā)表于 01-25 10:25 ?82次下載

    51單片機(jī)DA轉(zhuǎn)換器的應(yīng)用

    D/A轉(zhuǎn)換器單片機(jī)接口方便與否,主要決定于轉(zhuǎn)換器本身是否帶數(shù)據(jù)鎖存。有兩類D/A轉(zhuǎn)換器,一類是不帶鎖存
    發(fā)表于 04-17 15:38 ?8533次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>DA</b><b class='flag-5'>轉(zhuǎn)換器</b>的應(yīng)用

    使用51單片機(jī)驅(qū)動TLV5616數(shù)據(jù)轉(zhuǎn)換器的驅(qū)動程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)驅(qū)動TLV5616數(shù)據(jù)轉(zhuǎn)換器的驅(qū)動程序免費(fèi)下載。
    發(fā)表于 08-02 17:34 ?10次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>驅(qū)動TLV5616數(shù)據(jù)<b class='flag-5'>轉(zhuǎn)換器</b>的驅(qū)動程序免費(fèi)下載

    使用51單片機(jī)進(jìn)行PCF8591的AD和DA轉(zhuǎn)換的程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)進(jìn)行PCF8591的AD和DA轉(zhuǎn)換的程序免費(fèi)下載。
    發(fā)表于 07-19 17:38 ?20次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>進(jìn)行PCF8591的AD和<b class='flag-5'>DA</b><b class='flag-5'>轉(zhuǎn)換</b>的程序免費(fèi)下載

    如何進(jìn)行51單片機(jī)的AD和DA轉(zhuǎn)換

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行51單片機(jī)的AD和DA轉(zhuǎn)換詳細(xì)資料說明。
    發(fā)表于 06-17 17:44 ?18次下載
    如何進(jìn)行<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的AD和<b class='flag-5'>DA</b><b class='flag-5'>轉(zhuǎn)換</b>

    如何使用單片機(jī)設(shè)計AD和DA轉(zhuǎn)換器詳細(xì)資料說明

     某些單片機(jī)內(nèi)部巳經(jīng)集成了AD DA轉(zhuǎn)換器,使其在工控行業(yè)、儀器儀表.家電產(chǎn)品的應(yīng)用與日俱增.但是這類單片機(jī)還存在價格偏高、引腳利用率較低的問題.
    發(fā)表于 06-13 17:17 ?11次下載
    如何使用<b class='flag-5'>單片機(jī)</b>設(shè)計AD和<b class='flag-5'>DA</b><b class='flag-5'>轉(zhuǎn)換器</b>詳細(xì)資料說明

    使用51單片機(jī)和ADS7816轉(zhuǎn)換器進(jìn)行連接的源代碼免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用51單片機(jī)和ADS7816轉(zhuǎn)換器進(jìn)行連接的源代碼免費(fèi)下載。
    發(fā)表于 11-11 17:55 ?39次下載

    使用單片機(jī)實(shí)現(xiàn)DA轉(zhuǎn)換的實(shí)驗(yàn)文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)DA轉(zhuǎn)換的實(shí)驗(yàn)文件免費(fèi)下載。
    發(fā)表于 03-24 11:11 ?20次下載

    基于C51單片機(jī)DA方波可控制發(fā)生

    基于C51單片機(jī)DA方波可控制發(fā)生文章目錄前言一、DA轉(zhuǎn)換器1.
    發(fā)表于 11-23 16:22 ?8次下載
    基于C<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>DA</b>方波可控制發(fā)生<b class='flag-5'>器</b>

    單片機(jī)基礎(chǔ)】ADC0809模數(shù)轉(zhuǎn)換器詳解

    單片機(jī)基礎(chǔ)】ADC0809模數(shù)轉(zhuǎn)換器詳解
    發(fā)表于 11-23 17:21 ?44次下載
    【<b class='flag-5'>單片機(jī)</b>基礎(chǔ)】ADC0809模數(shù)<b class='flag-5'>轉(zhuǎn)換器</b><b class='flag-5'>詳解</b>