新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用單片機設計動態輸入范圍的PWMA/D轉換器

        用單片機設計動態輸入范圍的PWMA/D轉換器

        作者: 時間:2012-02-28 來源:網絡 收藏

        1 COP820CJ芯片介紹

        本文引用地址:http://www.104case.com/article/171993.htm

        COP820CJ 是美國國家半導體公司生產的一款8位,它內含64字節RAM和1k字節ROM,并帶有24個I/O口,時鐘頻率為10MHz,工作電壓為 2.5~6.0V。 COP820 CJ具有多喚醒(MIWU)、低壓復位保護、片上模擬比較器和低電磁輻射等功能,其I/O口可編程為三態、推挽輸出、弱上拉等類型。

        COP820CJ的端口分為L/I/D/G四類。其中I口為4位端口,D口為4位輸出端口,G口有6位I/O口和2位輸入口,L口為8位I/O 口。同時L口也是芯片的喚醒端口,其中L1和L2又是比較器輸入口,L3又是比較器輸出口。L口配有數據寄存器(LDATA[0DOH])和配置寄存器(LCONF[0D1H]),兩寄存器可共同決定該端口的狀態。具體關系見表1所列。

        12.jpg

        COP820CJ的片上RAM、端口、寄存器均可映射到00H~FEH的數據內存空間,其中C0~CFH段主要是喚醒及用看門狗控制寄存器,D0~DFH 段有8個端口類寄存器,E0~EFH段為計時器和系統寄存器。00~2FH及F0~FFH為RAM地址。其中,F0~FEH段可用作寄存器,并包括B地址寄存器[FCH]、X地址寄存器[FEH]和SP堆棧指針[FDH]三個專用寄存器。

        2 COP820CJ的工作原理

        2.1基本原理

        13.jpg

        利用COP820CJ的片上模擬比較器和脈沖寬度調制方式可以構成由軟件調控且輸入可變的A/D。其工作原理圖見圖1所示。圖中,L1和L2 為比較器輸入端,當電容電壓小于輸入電壓時, L3端輸出高電平脈沖。反之,L3輸出低脈沖,并對低脈沖減1計數。電路中的輸入電壓可通過L1、L2之間并聯的兩個背向二極管對電容C1快速充放電,以使兩者電位迅速接近。

        比較器允許的輸入電壓為0.4V~VCC-1. 5V(此時電容電壓與充電、放電時間之間為近似線性關系),實際輸入電壓可能要更小一些。因此,可以通過設定高低脈沖的參數使電容電壓始終保持在測量之內。若電源為5V,時鐘頻率為10MHz,脈沖周期為24個,即2.4μs,輸入電壓范圍是1.0V~3.3V。那么,可以設置高脈沖為先低8個時鐘,再高16個時鐘;設置低脈沖為先高5個時鐘,再低19個時鐘。這樣,如果L3始終輸出高脈沖,電容電壓VH將近似為VCC×16/24=3.30V;如果L3始終輸出低電平,電容電壓VL則近似為VCC×5/24=1.04V。進行A/D轉換時,L3可根據比較結果輸出高低脈沖,當脈沖數足夠多時,計數器的值即代表了輸入的電壓值,并可用下式表示:

        14.jpg

        其中,NTON為計數器的值,NTOTAL為總脈沖數。

        2.2轉換時間及分辨率

        由于脈沖周期為2.4μs,若脈沖總數為100,那么,進行兩次計數的轉換時間近似為2.4×100×2=480μs。當輸入為高速變化的信號時,只需減少脈沖總數即可。如脈沖總數為100,輸入電壓為1.0~3.3V,則分辨率為23mV。為提高分辨率,可先對輸入信號進行粗測,然后調整高低脈沖的占空比,以使對應電壓略超出測量結果的上下限值,這樣即可獲得更高的分辨率。

        3軟件

        圖 2所示是用COP820CJ的A/D的工作軟件流程圖。其中,控制寄存器2(CNTRL2[CC])的第三位是比較器允許位,第四位為比較器輸出。X指令為交換兩寄存器中的數據。

        “SBIT(RBIT)i,n”指令為將n 寄存器的第i位置1(0)“IFBITi,n”指令在n寄存器的第i位為1時執行下一條指令,否則跳過。“DRSZn”指令的作用是先將寄存器n的值減 1,如結果非零,則執行下一條指令,否則跳過。

        比較器相關文章:比較器工作原理


        pwm相關文章:pwm原理



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 上犹县| 合川市| 瑞金市| 镇安县| 澎湖县| 上林县| 临江市| 浮梁县| 阳江市| 黄骅市| 绥棱县| 都昌县| 博爱县| 栾川县| 济宁市| 淮滨县| 长丰县| 上杭县| 屏南县| 峨边| 镇安县| 湖南省| 浙江省| 西宁市| 宣恩县| 金坛市| 吴忠市| 新野县| 成安县| 寿光市| 汶川县| 安泽县| 洛宁县| 大竹县| 社会| 锡林郭勒盟| 同江市| 曲阜市| 芦山县| 孝昌县| 忻城县|