精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

pic單片機的ad轉換(實例解析)

jf_f8pIz0xS ? 來源:電子發燒友整理 ? 2018-02-09 14:44 ? 次閱讀

AD轉換就是模數轉換。顧名思義,就是把模擬信號轉換成數字信號。主要包括積分型、逐次逼近型、并行比較型/串并行型、Σ-Δ調制型、電容陣列逐次比較型及壓頻變換型。A/D轉換器是用來通過一定的電路將模擬量轉變為數字量。模擬量可以是電壓、電流等電信號,也可以是壓力、溫度、濕度、位移、聲音等非電信號。但在A/D轉換前,輸入到A/D轉換器的輸入信號必須經各種傳感器把各種物理量轉換成電壓信號。

PIC單片機如何表示電壓

PIC用十位二進制位的數來表示電壓,也就是數值0~1023來表示電壓。那比如現在這個數值是400那這代表多少的電壓?這就要根據參考電壓來確定了。

比如我們設置正參考電壓為3.3V ,當輸入的電壓為0時,數值就為0。當輸入的電壓為3.3V時,數值就是1023. 那如果輸入的電壓是1.2V代表多少電壓。

首先,先算出一個數值代表多少的電壓 3.3V除以1023 約等于 0.003V 。

然后,1.2V除以0.003V 等于400. 這就得出了400代表的是1.2V。

見下圖我們可以看AN0~AN7.這些都是可以配置成模擬輸入的端口。只有這些引腳才能做為AD轉換的端口。

pic單片機的ad轉換(實例解析)

實例講解

例如:下面的原理圖,從RA0/AN0腳輸入個模擬量如果電壓大于1.2v則LED亮否則LED滅。

pic單片機的ad轉換(實例解析)

AD的設置步驟

1,設置端口

將RA0口設置為輸入 TRISA = 0x01;

將RA0口設置為模擬 ANSELA = 0x01;

2, 配置ADC模塊

選擇ADC的轉換時鐘

如何選擇轉換時鐘呢 要根據現在的時鐘頻率進行選擇。可以根據數據手冊中的表格進行選擇 。

我們設置單片機的時鐘頻率為32MHZ ,選擇ADC周期關鍵不要選擇陰影部分,在32MHz 這一列 我們隨意選擇了ADC時鐘周期1us,對應的時鐘源為Fosc/32.,AD控制寄存器1 ADCON1的ADCS《2:0》=010注:ADCS《2:0》代表的意思就是 ADCS的0到2位。

pic單片機的ad轉換(實例解析)

配置參考電壓

我們這里選擇右對齊,所以AD控制寄存器1 ADCON1的 ADFM=1

pic單片機的ad轉換(實例解析)

上面將有關ADCON1寄存器的配置說完了。下面來講解ADCON0

選擇ADC輸入通道

AD轉換模塊只有一個,而AD輸入通道有8個AN0~AN7.所以不可能同時進行AD轉換,那個需要用我們就分配給那個,根據硬件我們將AD轉換模塊分配給AN0.

所以 ADCON0 的CHS《4:0》=0000;

開啟ADC模塊

ADC模塊開啟,ADCON0的ADON=1,只是單純的啟用ADC模塊。并不開始AD轉換。如果不用ADC模塊時候建議關閉。可以省點電哦!!!

開始AD轉換

ADCON0的GO/DONE=1開啟AD轉換。

4 等待AD轉換結束

5 讀取結果

一般情況下我們并不取一次的AD轉換的值。而是取多次之后算平均值。這樣來確保轉換的準確性。 配置ADC模塊,有許多地方并沒有講解為什么這么配置,因為許多配置其實是比較隨意的。并不是那么的絕對的。一定非要選擇哪一個。當然實際的配置還是要根據你項目需求。

//開發環境MPLAB X IDE ,單片機PIC16LF1823.

#include 《pic.h》

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//這個要放到上一行去

__CONFIG(PLLEN_OFF&LVP_OFF) ;

#define ADC_NUM 8 //轉換的次數

#define LED LATA1

void init_GPIO(void)

{

TRISA = 0x01;//端口設置為輸入

ANSELA = 0x01;//設置為模擬輸入

PORTA = 0x00;

LATA = 0x00;

}

void init_fosc(void)

{

OSCCON = 0xF0;//32MHZ

}

void init_AD(void)

{

ADCON1= 0xA0;//右對齊,AD時鐘為Fosc/32,參考電壓為電源電壓,

ADCON0= 0x00;//選擇通道AN0

ADCON0bits.ADON = 1;//開啟模塊

}

unsigned int ADC_BAT_ONE(void)//轉換一次

{

unsigned int value;

value=0;

ADCON0bits.CHS =0;//選擇通道AN0

ADCON0bits.ADGO=1;//開始轉換

while(ADCON0bits.GO==1);//等待轉換結束

value=(unsigned int)ADRESH;//強制類型轉換,因為ADRESH是字符型的只能表示8位二進制。所以必須轉換成可以容納10位二進制的整型。

value= value《《8;// 將高兩位左移8位

value += ADRESL;//低八位加入ADRESL的值。

return value;

}

unsigned int ADC_BAT_contiue(void)

{

unsigned int ADV_MCU[ADC_NUM],ADV_CNT,ADV_ALL;

ADV_ALL=0;

for(ADV_CNT=0;ADV_CNT《ADC_NUM;ADV_CNT++)//進行多次AD轉換

{

ADV_MCU[ADV_CNT]=ADC_BAT_ONE();

}

for(ADV_CNT=0;ADV_CNT《ADC_NUM;ADV_CNT++)//計算多次AD轉換的平均值

{

ADV_ALL += ADV_MCU[ADV_CNT];

}

ADV_ALL= ADV_ALL/ADC_NUM;

return ADV_ALL;//得到結果返回

}

/*

*

*/

int main(int argc, char** argv) {

init_fosc();//設置時鐘

init_GPIO();//設置I/O口

init_AD();//設置AD

while(1)

{

if( ADC_BAT_contiue()》400)//判斷輸入電壓是否大于1.2V

{

LED=1;//燈亮

}

else

{

LED=0;//燈滅

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44514

    瀏覽量

    632979
  • PIC單片機
    +關注

    關注

    64

    文章

    691

    瀏覽量

    101882
  • AD轉換
    +關注

    關注

    3

    文章

    167

    瀏覽量

    45290
收藏 人收藏

    評論

    相關推薦

    如何將PIC單片機AD轉換數據打包

    問題。本文中,小編將介紹如何將pic單片機A/D轉換數據打包,以達到減少空間、提高效率的目的。如果你對本文內容具有一定興趣,不妨繼續往下閱讀哦。
    的頭像 發表于 07-04 11:13 ?4504次閱讀

    PIC單片機概述

    目標 掌握PIC單片機的主要特點、PIC單片機的3個層次、單片機性能指標的具體含義及PIC
    發表于 12-19 22:31 ?50次下載

    PIC單片機實現音樂播放的實例程序

    PIC單片機實現音樂播放的實例程序*********************************   PIC單片機
    發表于 01-16 11:33 ?2263次閱讀

    PIC單片機循環程序實例

    在這里介紹一種定時程序,說明循環程序在PIC單片機上的應用。筆者仍以PIC16F84單片機為例建立其定時源程序清單
    發表于 04-26 10:25 ?3129次閱讀

    PIC單片機的EEPROM讀寫實例

    PIC單片機的EEPROM讀寫實例及說明,本內容提供了詳細程序實例
    發表于 06-27 16:30 ?8274次閱讀

    PIC單片機教程_PIC單片機學習要點

    PIC單片機是一種用來開發去控制外圍設備的集成電路(IC)。本內容向廣大工程師全面的介紹了PIC單片機,涵蓋PIC
    發表于 06-28 15:19
    <b class='flag-5'>PIC</b><b class='flag-5'>單片機</b>教程_<b class='flag-5'>PIC</b><b class='flag-5'>單片機</b>學習要點

    上海某公司PIC16F877單片機編程實例教程下載

    上海某公司PIC16F877單片機編程實例教程下載
    發表于 06-17 11:37 ?46次下載

    PIC單片機C語言程序設計實例精粹

    PIC單片機C語言程序設計實例精粹,非常有用的資料。
    發表于 01-15 17:17 ?97次下載

    PIC單片機入門與實戰_部分2

    PIC中檔系統系列的結構介紹入手,系統闡述PIC單片機在開發過程中的最基本步驟,通過引用設計實例,深入淺出的介紹PIC
    發表于 04-14 16:26 ?4次下載

    PIC單片機入門與實戰_部分1

    PIC中檔系統系列的結構介紹入手,系統闡述PIC單片機在開發過程中的最基本步驟,通過引用設計實例,深入淺出的介紹PIC
    發表于 04-14 16:26 ?7次下載

    PIC單片機AD轉換數據存儲及串口效率

    PIC單片機AD轉換數據存儲及串口效率
    發表于 02-07 17:14 ?16次下載

    PIC單片機之I2C(從模式)實例講解

    PIC單片機之I2C(從模式)實例講解
    發表于 01-24 17:21 ?30次下載

    pic單片機程序設計的基本方法解析

    pic單片機在學習和工作中均扮演著重要角色,在往期文章中,小編曾對pic單片機匯編指令加以介紹,以幫助大家更好掌握pic
    發表于 03-06 09:58 ?1641次閱讀

    零點起步之PIC單片機常用模塊與典型實例

    零點起步之PIC單片機常用模塊與典型實例
    發表于 02-08 14:16 ?0次下載

    8051單片機PIC單片機的區別是什么

    8051單片機PIC單片機都屬于單片機的一種,8051單片機PIC
    的頭像 發表于 07-07 11:31 ?2175次閱讀