新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 簡單的溫度指示器使用基于RISC的MCU

        簡單的溫度指示器使用基于RISC的MCU

        作者: 時間:2008-12-20 來源:網絡 收藏

        非常簡單的可以在8位RISC微控制器周圍構建(參見圖)。來自溫度感應器的數據由MCU處理并且用于顯示溫度。在本電路中使用的MAX6577溫度感應器可以測量范圍在-40°C至125°C之間的溫度。它幾乎不需要其他外部元件。
        這個感應器可以將溫度轉換成其輸出信號頻率與絕對溫度(K)成比例的方形波。如果這個頻率已經測量出來了,計算溫度就會變得相當容易。這可以通過不同的時間測量電路或者MCU中提供的定時器來實現。

        這個電路使用AVR 低成本MCU用來處理感應器數據和顯示溫度。在其他器件中,這個MCU配有4千字節的系統內可編程閃存、128字節的SRAM、128字節的系統可編程EEPROM、一個六通道10位ADC、20個可編程I/O線路、多個定時器和一個UART。

        溫度在三個共陽極的七段顯示器上顯示。顯示器的各個段都連結在一起,在軟件的幫助下對顯示的數據進行復用。這種方法不僅減少了I/O接口線路數,而且還降低了電流要求。

        顯示器連接到MCU的端口D。為顯示溫度讀數,數據被鎖存在這個端口上,且相應的顯示器被激活。這可以通過定時器0來實現,該定時器被配置具有64預標定因子。只要定時器0發生計數上溢,就會產生中斷。定時器0的ISR鎖存端口D(即顯示器的數據總線)上的顯示數據,并且生成相應的信號來啟用各自的顯示器裝置(在端口B處,并且通過各自的晶體管Q1、Q2或者Q3)。

        溫度測量使用定時器1來實現。定時器計數確定了輸入信號的脈沖寬度。sensorstatus()子程序重復檢查感應器信號的邏輯狀態。一旦檢測到第一個上升邊沿,就會啟用先前在定時器模式中將預定標因子配置為1的定時器。然后,當檢測到感應器信號的第一個下降沿時,就會停用定時器。接著,定時器內容就會被顯示出來,并且可以用于計算溫度感應器信號的脈沖寬度。定時器內容顯示之后,定時器就會被重新初始化為0。一旦信號的時間周期已知,即可輕松地算出信號頻率(fOUT=1/tOUT)。此后就會檢查數據是否超過這個限制。

        由于輸入信號是一個占空比為50%的方波,所以總的脈沖周期為寬度的2倍。因此,溫度的計算公式為CPU_FREQ/(2×寬度)。然后,從中減去273.15 K即可得到攝氏度溫度。通過執行可以處理浮點數據的AVR-GCC開發環境,將脈沖的時間周期轉換成溫度已經變得相當簡單。

        要顯示的范圍狀態和溫度信息通過變量“r”來實現。一旦定時器0的ISR處于激活狀態,就會檢查“r”的值,并且各自的數據也會被鎖存端口D上,這取決于DISPLAY_ON變量的值,這個變量也可以用來選擇各自的激活的七段顯示器單元。如果輸入數據在范圍之內,則ISR調用binarytobcd()子程序,這個子程序可以將二進制數據轉換成有效的BCD格式。BCD數據(半字節)是根據激活的七段顯示器單元來分開的,這可以再次通過關聯DISPLAY_ON的值來實現。一旦ISR完成了它的工作,定時器0就會被重新初始化為一個值(Refresh_Val),這個值將產生下一個中斷,接著顯示下一數據,并且不會引起閃爍。

        本軟件使用AVR-GCC開發環境編寫。它可以處理所有的AVR MCU功能,包括不同的中斷、EEPROM、定時器、UART和ADC等。本軟件被用來編譯C源程序,并生成HEX文件。可以使用基于并行端口的編程器(例如uisp)將這個文件下載到MCU的系統內可編程閃存中。

        可以方便地進行修改本軟件,從而顯示從-40°C至125°C這個完整范圍內的溫度,或者以華氏度顯示數據。還可以修改這個軟件以顯示輸入信號的頻率。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 建水县| 鲁山县| 宿松县| 云和县| 五台县| 宜州市| 乡宁县| 武夷山市| 长白| 大同市| 缙云县| 安阳县| 巴青县| 三江| 阳原县| 长治县| 依兰县| 嘉善县| 泉州市| 通辽市| 玉龙| 阆中市| 固始县| 土默特左旗| 托里县| 乌什县| 枣阳市| 大宁县| 达孜县| 内黄县| 汽车| 马鞍山市| 巍山| 塔河县| 独山县| 涿鹿县| 高青县| 白河县| 报价| 宿州市| 茂名市|