新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MC9S08LL16 在水表氣表中的設計應用

        MC9S08LL16 在水表氣表中的設計應用

        作者: 時間:2016-12-02 來源:網絡 收藏


        下面以讀主存儲器起始地址為0x20的3個字節(jié)為例說明它的編程:


        /************* main function ************/
        void main (void)
        {
        unsigned char buffer;
        //read main memory at address 0x20. 21, 22, and stored at buffer
        Read_4442_main_memory(0x20, 3, buffer);
        }
        // read main memory function
        void Read_4442_main_memory(unsigned char Address, unsigned char number, unsigned
        char *data)
        {
        unsigned char command;
        command[0] = 0x30;
        command = Address;
        send_SLE4442_Command(command);
        send_SLE4442_Data(number, data);
        }

        電池電壓檢測

        由于氣表采用電池供電, 因此需對電池電壓進行監(jiān)測, 在電池耗盡之前, 報警提醒用戶更換電池。 雖然LL16內部有掉電檢測電路LVI, 但使能該模塊將消耗較大的電流, 所以不宜采用。 可以利用LL16內部模擬比較器或A/D模塊監(jiān)測電池電壓,A/D模塊或內部模擬比較器會消耗一定的功耗, 為了降低功耗, 可以采用定時檢測的方法, 因為電池電壓是緩慢下降的。

        在水表中, 如果采用鋰電池直接供電, 這里介紹一種簡便的方法用于電池電壓檢測:在LL16的內部集成一個1.17V的帶隙基準電壓,此帶隙基準電壓內部連接到ADC的輸入通道AD27; 因此可以不需要任何外部電路,AD模塊只需定時采樣此基準電壓,由此可換算出電池電壓。

        這種方法的好處是,不需要外部任何器件, 既節(jié)省成本又節(jié)省空間,而且可以獲知當前準確的電池電壓。它的原理如下: AD的參考電壓設為VDD, VDD即為電池電壓, 如果AD設為12bit模式 那么:帶隙基準電壓的AD值(AD27)=(1.17V / VDD) *4096 = (1.17V/ 電池電壓) * 4096;所以: 電池電壓= (4096 / 帶隙基準電壓的AD值(AD27)) * 1.17 (V)

        電機驅動電路

        在氣表應用中,采用直流電機來開關閥門。 其驅動電路普遍采用H橋電路, 如下圖。此電路成本低,可靠性高。

        當PTC3,PTC4同時輸出高電平或低電平時, 電機不工作。 當PTC3輸出高,PTC4輸出低時, 電機向一個方向轉動。 當PTC3輸出高, PTC4輸出低時, 電機向反方向轉動。 PTC2用作電機到位檢測。




        軟時鐘的實現

        由于在氣表水表應用中, 對時鐘的要求并不是特別精確, 因此可以利用LL16的TOD模塊方便地實現軟時鐘, 從而省去外部的實時時鐘芯片, 降低系統(tǒng)成本。 TOD模塊使用非常簡單,下圖為它的內部結構圖:



        TOD的時鐘源有三個, 即內倍的1 kHz RC振蕩器, ICSIRCK時鐘及外部晶振時鐘??紤]到精度因素, 所以選用外部32.768k晶振作為時鐘源。 TOD模塊對時鐘源進行計數,可產生1S或1/4S中斷。 因此可利用這1秒鐘一次的中斷實現軟時鐘。 同時此中斷把CPU從睡眠模式喚醒, 用來查詢IC 卡座, 流量脈沖計數,以及電池電壓檢

        測等。TOD的初始化如下:

        void TOD_init(void)
        {
        TODC = 0x11;
        TODC_TODEN =1;
        TODSC=0X08;
        }
        TOD的中斷服務程序:
        void interrupt VectorNumber_Vtod RTC_ISR(void)
        {
        TODSC_SECF = 1; // clear 1s interrupt flag
        Clock_processing();
        }

        TOD 的中斷服務程序:
        void interrupt VectorNumber_Vtod RTC_ISR(void)
        {
        TODSC_SECF = 1; // clear 1s interrupt flag
        Clock_processing();
        }


        LCD 驅動

        LL16內部有LCD驅動模塊, 可配置為24*8,或28*4。 LCD與I/O復用, 多余的段可設為普通I/O。注意,所有和LCD驅動復用的GPIO,在作為I/O功能使用時,其輸出模式為開漏,需要外接上拉電阻。

        LCD驅動是LL16的一大特色, 具有許多優(yōu)越的性能。

        · 低功耗, LCD模塊僅消耗900nA的電流
        · 可配置為24*8即8COM端驅動模式, 從而節(jié)省更多的I/O口
        · COM 和SEGMENT可隨意配置, 方便布線, 從而提高EMC性能。
        · 具有頻率可調的閃爍功能, MCU在睡眠模式仍然工作, 從而達到更省電的目的。
        · 內置電荷泵, 產生LCD驅動所需的偏置電壓
        · 內置可調的穩(wěn)壓電壓源, 此穩(wěn)壓電壓源可作為LCD的輸入電壓, 通過內置電荷泵, 產生LCD驅動所需的偏置電壓。 當電池電壓降低時, 可保證LCD的對比度不受影響, 這一點對水表設計非常有用。


        關鍵詞: MC9S08LL16氣表水

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 泌阳县| 大宁县| 汤阴县| 香格里拉县| 友谊县| 锦州市| 陆川县| 二手房| 五寨县| 阳山县| 凌云县| 若尔盖县| 霍林郭勒市| 赤峰市| 黄冈市| 咸宁市| 芦溪县| 建瓯市| 塔河县| 白城市| 金昌市| 正安县| 定远县| 台东县| 浦县| 乐平市| 苗栗市| 双牌县| 泰兴市| 浪卡子县| 绥化市| 延安市| 明溪县| 尼玛县| 曲沃县| 泰州市| 慈溪市| 鄢陵县| 新安县| 英吉沙县| 东丰县|