新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機內部模擬比較器的應用

        單片機內部模擬比較器的應用

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

        需要注意的是,由于采用端口查詢的方式來檢測器的輸出結果,MCS51系列端口查詢命令需要占用2個機器周期,而定時計數器則需要在每個機器周期上加1。因此,在使用時有可能在器的輸出反轉時,程序不能立刻停止定時計數器,而是要等到下一個機器周期運行到CLRTR0語句時才停止。這樣,定時計數器的值總為偶數,這一問題如果不在程序中進行處理就會造成誤差。解決的方法是增加I0、Cf的積分時間,即把積分時間加大一倍,再把定時計數器的讀數即Tref和Tx除以2,這樣就能把定時計數器多加了1的誤差去掉而得到正確的結果。也就是說,如果要得到12位的分辨率,那么就需要有13位的定時計數器的讀數。這種算法雖然犧牲了定時計數器的1位分辨率,加長了轉換周期,但是確保了測量結果的準確性。對于有器輸出跳變中斷的如Z86E08等,上述過程處理起來會更簡單,可用程序在比較器輸出反轉時來設定中斷,并在中斷子程序的開始時停止定時計數器,其讀數減去從比較器中斷到執行中斷子程序之間的機器周期數即為實際積分時間。

        由于AT89C2051的定時計數器為16位,所以該A/D轉換器的分辨率實際上可以達到15位。調整I0和Cf的值就能改變A/D轉換器的分辨率,I0和Cf的取值與分辨率和單片機時鐘頻率之間的關系,應滿足下式:

        12×2N+1/(f0 Vmax)≤Cf/IO≤12×216/(f0Vmax)

        式中Vmax 為最大輸入電壓,N為分辨率位數,f0為單片機的時鐘頻率。根據上式,在設計時應保證足夠長的積分時間以保證分辯率的要求。同時還應保證積分時間不能超過單片機的最大定時值,以免引起定時計數器的溢出。

        3 軟件編程

        整個工作過程的主要程序如下(該程序采用MCS51匯編語言編寫)。除法子程序和20μs延時子程序分別為:

        (1)初始化主程序:

        49.jpg



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 渭源县| 五莲县| 五峰| 通海县| 哈巴河县| 商丘市| 天峻县| 浦北县| 三江| 通许县| 克什克腾旗| 韶山市| 辽宁省| 理塘县| 台北市| 盘锦市| 堆龙德庆县| 汾阳市| 深泽县| 奉贤区| 阿城市| 宜兴市| 遵化市| 石屏县| 石台县| 团风县| 柘城县| 图片| 邛崃市| 辉南县| 禄丰县| 三门县| 潜江市| 大兴区| 胶州市| 普定县| 扶余县| 乾安县| 台前县| 江津市| 留坝县|