<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          MC9S08LL16 在水表氣表中的設(shè)計(jì)應(yīng)用

          作者: 時(shí)間:2016-12-02 來(lái)源:網(wǎng)絡(luò) 收藏


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


          /************* 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);
          }

          電池電壓檢測(cè)

          由于氣表采用電池供電, 因此需對(duì)電池電壓進(jìn)行監(jiān)測(cè), 在電池耗盡之前, 報(bào)警提醒用戶(hù)更換電池。 雖然LL16內(nèi)部有掉電檢測(cè)電路LVI, 但使能該模塊將消耗較大的電流, 所以不宜采用。 可以利用LL16內(nèi)部模擬比較器或A/D模塊監(jiān)測(cè)電池電壓,A/D模塊或內(nèi)部模擬比較器會(huì)消耗一定的功耗, 為了降低功耗, 可以采用定時(shí)檢測(cè)的方法, 因?yàn)殡姵仉妷菏蔷徛陆档摹?br />
          在水表中, 如果采用鋰電池直接供電, 這里介紹一種簡(jiǎn)便的方法用于電池電壓檢測(cè):在LL16的內(nèi)部集成一個(gè)1.17V的帶隙基準(zhǔn)電壓,此帶隙基準(zhǔn)電壓內(nèi)部連接到ADC的輸入通道AD27; 因此可以不需要任何外部電路,AD模塊只需定時(shí)采樣此基準(zhǔn)電壓,由此可換算出電池電壓。

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

          電機(jī)驅(qū)動(dòng)電路

          在氣表應(yīng)用中,采用直流電機(jī)來(lái)開(kāi)關(guān)閥門(mén)。 其驅(qū)動(dòng)電路普遍采用H橋電路, 如下圖。此電路成本低,可靠性高。

          當(dāng)PTC3,PTC4同時(shí)輸出高電平或低電平時(shí), 電機(jī)不工作。 當(dāng)PTC3輸出高,PTC4輸出低時(shí), 電機(jī)向一個(gè)方向轉(zhuǎn)動(dòng)。 當(dāng)PTC3輸出高, PTC4輸出低時(shí), 電機(jī)向反方向轉(zhuǎn)動(dòng)。 PTC2用作電機(jī)到位檢測(cè)。




          軟時(shí)鐘的實(shí)現(xiàn)

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



          TOD的時(shí)鐘源有三個(gè), 即內(nèi)倍的1 kHz RC振蕩器, ICSIRCK時(shí)鐘及外部晶振時(shí)鐘。考慮到精度因素, 所以選用外部32.768k晶振作為時(shí)鐘源。 TOD模塊對(duì)時(shí)鐘源進(jìn)行計(jì)數(shù),可產(chǎn)生1S或1/4S中斷。 因此可利用這1秒鐘一次的中斷實(shí)現(xiàn)軟時(shí)鐘。 同時(shí)此中斷把CPU從睡眠模式喚醒, 用來(lái)查詢(xún)IC 卡座, 流量脈沖計(jì)數(shù),以及電池電壓檢

          測(cè)等。TOD的初始化如下:

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

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


          LCD 驅(qū)動(dòng)

          LL16內(nèi)部有LCD驅(qū)動(dòng)模塊, 可配置為24*8,或28*4。 LCD與I/O復(fù)用, 多余的段可設(shè)為普通I/O。注意,所有和LCD驅(qū)動(dòng)復(fù)用的GPIO,在作為I/O功能使用時(shí),其輸出模式為開(kāi)漏,需要外接上拉電阻。

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

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


          關(guān)鍵詞: MC9S08LL16氣表水

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();