新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC單片機C語言程序設計(14)

        PIC單片機C語言程序設計(14)

        作者: 時間:2013-02-05 來源:網絡 收藏
          十五、Pic單片機的A/D轉換

          在電子技術中,傳感器是一種很重要的器件,傳感器的種類也有多種,如溫度傳感器、光敏傳感器、壓力傳感器……,其特點是能把非電量,如溫度、光度、壓力等轉換成相關的電量(電流或電壓)。這些電量都是模擬量,可用Pic 單片機的A/D 轉換,將上述的模擬量轉換成數字量,再將數字量進行各種處理,如LED、LCD 顯示。

          Pic16F87X 系列單片機, 具有A/D 轉換的功能。Pic16F876/873 芯片為28 引腳, 有5 個模擬輸入端的10 位A/D 轉換(5 通道);Pic16F877 為40 引腳,有8 個模擬輸入端的10位A/D 轉換(8 通道)。Pic16F876/873 芯片的模擬輸入端為AN0~AN3,其引腳是② ~ ⑤腳和⑦腳AN4,幾乎占用了Pic16F876/873 所有的A 口。由于Pic 單片機的端口具有復用功能,所以上述的模擬輸入口不會影響I/O 端口的通用特性。

          上述芯片的A/D 轉換,都已模塊化,具有10 位(二進制的)分辨率,所以完全可以滿足大多數測量精度的要求,此外,還可利用Pic 單片機睡眠狀態下進行A/D 轉換(利用內部自帶的RC 振蕩作時鐘),因在睡眠模式下,部分數字電路的開關噪聲已停止,所以可獲得更高的A/D 轉換精度。

          Pic 單片機的A/D 轉換功能的操作,遠比本連載1~13 中介紹的各種功能的C 程序要復雜些,學會編寫A/D 轉換的C 程序,也是進一步學習Pic 單片機C 的重要內容之一。因為在編輯A/D 轉換的C 程序時,會用到芯片內部多個專用寄存器(控制模塊),學會相關模塊的使用方法,可為編輯其它復雜功能的C 程序建立良好的思維方法。

          1.Pic16F87X 的 A/D 轉換必備知識

         ?、?A/D 轉換控制寄存器ADCON1

          ADCON1 是8 位的可讀寫的寄存器,如圖59 所示,其功能是A/D 轉換時,選擇芯片引腳輸入信號的類型(模擬量A 或數字量D),以及A/D 轉換結果存放的格式(見下文)。

        圖59

          ADCON1 的第6、5、4 位,在A/D 轉換中未派上用場,讀作“0”。 ADCON1 的第3、2、1、0 位(Bit3、Bit2、Bit1 和Bit0), 是管理Pic16F87X 引腳功能(A 或D)的選擇(可參看相關書藉的A/D 轉換引腳功能選擇表,因該表占用版面多,這里略去),例如在下文C 程序中,設ADCON1=0x8a 時, 選擇Pic16F873A 的AN0(RA0)、AN1(RA1)RA4(AN4)、RA5(AN5)為模擬量輸入、(AN6、AN7 為數字量輸入),AN3、AN2 參考電壓設置端(十、一)。

         ?、?A/D 轉換結果寄存器ADRESH、ADRESL。因Pic16F87X 的A/D 轉換值是10 位的二進制數(代碼),而A/D 轉換的結果是存放在指定的結果寄存器中,因結果寄存器是8 位的,所以A/D 轉換結果的10 位數, 利用ADRESH存放A/D 的高字節;利用ADRESL 存放A/D的低字節。存放方法是利用前述的ADCON1( 圖59) 的第7 位(bit)ADFM 進行選擇, 當令ADFM=1 時,A/D 轉換結果的低8 位存放在ADREL 中;高兩位存放在ADRESH 中;當令ADFM=0 時,A/D 轉換結果的低兩位存放在ADRESL 中,余下的高8 位存放在ADRESH 中,這由C 語言設計者自由選擇。若對A/D 轉換代碼的分辨率要求不高(如實驗程序),可取A/D轉換的高8 位而舍去低2 位,以使C 程序簡化。

          ⑶ A/D 轉換控制寄存器ADCON0

          ADCON0 的功能是用于控制A/D 轉換的操作,其相關位的功能如圖60 所示。

        圖60

          圖中ADCONO 的第0 位(Bit0),ADON是A/D 轉換允許位(俗稱打開A/D 轉換),當令ADON=1 時,打開的A/D 轉換;AD0N=0 時,關閉A/D 轉換。ADCON0 的第1 位, 未使用讀作0。

          ADCON0 的第2 位也是重要的功能位:在ADON=1 時,若令=1,啟動A/D 轉換;若令=0,A/D 轉換完成。

          ADCONO 的5~3 位(Bit5、Bit4 和Bit3)CHS2、CHS1、CHS0 是A/D 轉換模擬通道的選擇,對Pic16F873A 芯片,有下述關系:

          ADCONO 的第7、6 位即ADCS1和ADCS0,是A/D 轉換時鐘選擇位,有以下關系:

          此外,在A/D 轉換時,還會用到外圍接口中斷標志寄存器PIR1 的標志位ADIF(Bit6)和外圍接口中斷使能寄存器PIE1 的使能位ADIE。

          當令ADIF=1 時, 代表A/D 轉換已完成;ADIF=0 時,A/D 轉換未完成。

          當令ADIE=1 時, 打開A/D 轉換中斷;ADIE=0 時,關閉A/D 轉換中斷。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 闸北区| 泰顺县| 阜南县| 泾川县| 玛沁县| 湛江市| 滦南县| 溆浦县| 左权县| 定陶县| 平罗县| 嵊州市| 梓潼县| 乌恰县| 江门市| 龙州县| 建水县| 麻栗坡县| 静海县| 平顺县| 东宁县| 克东县| 扬州市| 安新县| 山阴县| 隆德县| 武城县| 耿马| 德保县| 旺苍县| 永和县| 蓝山县| 木兰县| 庄浪县| 青冈县| 宜州市| 延川县| 张家港市| 博爱县| 久治县| 中西区|