當前位置:
首頁 >
PIC单片机入门_8位AD转换器
發布時間:2025/3/15
53
豆豆
生活随笔
收集整理的這篇文章主要介紹了
PIC单片机入门_8位AD转换器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.前言
PIC16F876的模數轉換器 (A/D) 模塊有多達 8 個模擬輸入通道。如果選擇8位A/D 轉換器,那么芯片可以將能將一個模擬輸入信號轉換成相應的 8 位數字信號。采樣保持輸出是轉換器的輸入,A/D 轉換器采用逐次逼近法產生轉換結果。通過軟件設置,模擬參考電壓可以選擇為器件的正向電源電壓 (VDD) 或 VREF 引腳上的電平。 A/D 轉換器具備可在休眠狀態下工作的獨特特性。2.AD控制原理
與A/D 轉換器相關連得有 3 個寄存器,它們分別是:? A/D 結果寄存器 (ADRES) ? ? ?
? A/D 控制寄存器 0 (ADCON0) ?控制 A/D 模塊的操作
? A/D 控制寄存器 1 (ADCON1) ??端口的引腳功能進行配置I/O 引腳可被配置成模擬輸入 ( 其中一個 I/O 也可作為模擬參考電壓 ) 或數字 I/O 口。?
A/D 模塊結構框圖如圖 所示:
2.1 AD控制寄存器0:控制A/D模塊操作
bit [7:6] ADCS1:ADCS0:A/D 轉換時鐘選擇位;00 = FOSC/2;01 = FOSC/8;10 = FOSC/32;11 = FRC ( 來自內部 A/D 的 RC 振蕩器的時鐘 ) bit [5:3] CHS2:CHS0:模擬通道選擇位;000 = channel 0, (AN0);001 = channel 1, (AN1);010 = channel 2, (AN2);011 = channel 3, (AN3);100 = channel 4, (AN4);101 = channel 5, (AN5);110 = channel 6, (AN6);111 = channel 7, (AN7)。
注:PIC16F876A僅提供AN0~AN4模擬通道選擇位。 bit 2 GO/DONE:A/D 轉換狀態位;當 ADON = 1 時,1 = A/D 轉換正在進行;( 該位置 1 啟動 A/D 轉換。 A/D 轉換結束后該位由硬件自動清零 );0 = 未進行 A/D 轉換
bit 1 保留 : 總是保持該位為 0。
bit 0 ADON: A/D 模塊開啟位;1 = A/D 轉換器模塊工作;0 = A/D 轉換器關閉,不消耗工作電流。
2.2?控制寄存器 1 (ADCON1):引腳功能配置
bit 7 ? ? ADFM: A/D轉換結果格式選擇位 ?1 = 右對齊 ?0 = 左對齊 bit6 ? ? ?ADCS2:A/D轉換時鐘選擇位
bit 3:0 PCFG2:PCFG0:A/D 端口配置控制位;其端口配置效果圖如下所示:
注 : 當 AN3 被選作 VREF 時, A/D 的參考電壓為 AN3 引腳的電壓。當 AN3 被選作模擬輸入 (A) 時, A/D 的參考電壓為器件的 VDD。
3.AD操作細則
當A/D轉換完成之后,轉換結果被載入ADRES寄存器,GO/DONE (ADCON0<2>)位被清零,且A/D中斷標志位 ADIF 置 1。
當配置好 A/D 模塊后,在啟動轉換前必須先選擇A/D轉換的通道。模擬輸入通道的相應TRIS位
必須設置為輸入。采集時間 ( acquisition time) 的確定我們要詳細說明。在這一采集時間過去之后,A/D轉換即可開始。 3.1 AD采集需要遵循的步驟?
1. 配置 A/D 模塊:對模擬引腳 / 參考電壓 / 數字 I/O (ADCON1) 進行配置;選擇 A/D 輸入通道 (ADCON0);選擇 A/D 轉換時鐘 (ADCON0);打開 A/D 轉換模塊 (ADCON0)
2. 需要時,設置 A/D 中斷:?將 ADIF 位清零;將 ADIE 位置 1;將 GIE 位置 1
3. 等待所需的采集時間
4. 啟動 A/D 轉換:將 GO/DONE 置 1 (ADCON0)
5. 等待 A/D 轉換完成,通過以下兩種方法之一可判斷轉換是否完成:輪詢 GO/DONE 位是否被清零;或等待 A/D 轉換的中斷。
6. 讀取 A/D 結果寄存器 (ADRES),需要時將 ADIF 位清零。
7. 要再次進行 A/D 轉換,根據要求轉入步驟 1 或步驟 2。每一位的 A/D 轉換時間定義為 TAD。在下一次采集開始前至少需要等待 2TAD。
A/D 轉換時序如下:
3.2 AD采集時間要求
TACQ = 放大器的建立時間 +?保持電容充電時間 +溫度系數?= TAMP + TC + TCOFFPIC為中檔單片機提供了最小采集時間計算參考;由于這一部分我只是工程上的應用,沒有進行芯片原理探究;只給出一個參考公式,其余的不做涉獵: TACQ = TAMP + TC + TCOFF
TACQ = 5 μs + Tc + [(Temp - 25°C)(0.05 μs/°C)]
TC = -CHOLD (RIC + RSS + RS) ln(1/512)-51.2 pF (1 k? + 7 k? + 10 k?) ln(0.0020)-51.2 pF (18 k?) ln(0.0020)-0.921 μs (-6.2146) =5.724 μs
TACQ = 5 μs + 5.724 μs + [(50°C - 25°C)(0.05 μs/°C)]=10.724 μs + 1.25 μs=11.974 μs。
3.3 AD采集過程中時鐘的選擇
每一位的 A/D 轉換時間被定義為 TAD。每完成一次 8 位 A/D 轉換需要 9.5 TAD。 A/D 轉換的時鐘源可用軟件進行選擇。 TAD 的 4 種選項為:2TOSC;8TOSC;32TOSC;內部 RC 振蕩器
為了確保 A/D 轉換正確,所有器件的 A/D 轉換時鐘 (TAD) 的選擇必須滿足最小 1.6 μs 的 TAD時
間。下表 顯示了器件在不同工作頻率下以及所選的不同A/D時鐘源下得到的TAD結果。
陰影部分不在推薦工作范圍內。1: RC 時鐘源的典型 TAD 為 4 μs。2: 這些值違反了所需最小 TAD 時間。3: 要加快轉換時間,建議選擇另一時鐘源。4: 器件工作頻率高于 1 MHz 時,整個轉換過程應在休眠模式下進行,否則 A/D 轉換精度可能超出允許范圍。
3.4?配置模擬輸入端口
ADCON1 和相應的 TRIS 寄存器用來控制 A/D 端口引腳的運行。若希望端口引腳為模擬輸入,則必須將其相應的 TRIS 位置 1( 輸入 ) ;A/D 轉換與 CHS2:CHS0 位及 TRIS 位的狀態無關。3.5 正式進行AD轉換
下面一步一步介紹如何進行 A/D 轉換。I/O 引腳被配置成模擬輸入。模擬參考電壓 (VREF) 為器件電壓 VDD。使能 A/D 中斷,A/D 轉換時鐘設為 FRC。該轉換在 AN0 通道上進行。注:由于所需采集時間的要求, 不應在打開 A/D 模塊的同一指令中將 GO/DONE 位置 1(喚醒AD采集模塊與開始進行AD采集必須分開)!!! 在轉換期間將 GO/DONE 位清零將中止當前 A/D 轉換。 ADRES 寄存器中的內容不會被部分完成的 A/D 轉換樣本所更新, ADRES 寄存器仍然保持上一次轉換完成后的結果 ( 或上一次寫入ADRES 寄存器中的值 )。 A/D 轉換被中止后,在下一次采集開始前,需要等待 2TAD 時間。 等待 2TAD 之后,采集將在所選通道上自動開始。
實例: BSF STATUS, RP0 ;STATUS的PRO置1 CLRF ADCON1 ;配置AD控制寄存器1,即進行端口配置 BSF PIE1, ADIE ;PIE1的中斷寄存器ADIE使能位置1 BCF STATUS, RP0 ;STATUE的PRO位清零 MOVLW 0xC1 ;RC時鐘, A/D被開啟,選擇了通道0 MOVWF ADCON0 ;配置AD控制寄存器0,C1=1100 0001 喚醒了AD 卻不能讓他工作! BCF PIR1, ADIF ;A/D中斷標志位清零 BSF INTCON, PEIE;開啟外圍中斷使能,置1 BSF INTCON, GIE ;開啟全局中斷使能,置1BSF ADCON0, GO ;在此處才正式開啟 A/D 裝換功能 : ; The ADIF bit will be set and the GO/DONE : ; bit is cleared upon completion of the : ; AD工作流程圖具體如下所示:
4.討論一下復位對AD采樣的影響
器件復位迫使所有寄存器進入復位狀態,同時迫使 A/D 模塊關閉并中止任何正在進行的轉換。上電復位時, ADRES 寄存器中的值保持不變。上電復位后 ADRES 寄存器中的值不確定。5.同學問的一個小問題
早晨,同學問我,我代碼中重復出現BSF,BCF,是不是數據和程序的差別? NO!NO!NO!先看英文 ?BSF = Bit Set; BCF:Bit Clear ? BSF ?f,b ? ? 給f 的第b位置1BCF ?f,b ? ? 給f 的第b位清0
參考:PIC英文技術手冊
總結
以上是生活随笔為你收集整理的PIC单片机入门_8位AD转换器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVASCRIPT:VOID(0)含义
- 下一篇: XEIM|XEIM企业即时通讯