<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 電源與新能源 > 設計應用 > 基于MAXQ3120微控制器的電表(EM)參考設計

基于MAXQ3120微控制器的電表(EM)參考設計

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


g_PW: 包含當前有效的各個(gè)通信通道的口令號碼。

g_irTimer; g_rsTimer: 用于計數各個(gè)通道口令有效時(shí)間的定時(shí)器。一旦接收到口令后,它的有效期限是60秒。一個(gè)口令的有效時(shí)間結束后,g_PW中相關(guān)的4位數據就會(huì )被清零。

g_LoadCurveUsage; g_LoadCurvePeak; g_LoadCurveTimeStamp: 與負載曲線(xiàn)記錄任務(wù)相關(guān)的變量。g_LoadCurveUsage累計用電量,并會(huì )最終報告給負載曲線(xiàn)記錄任務(wù)。負載曲線(xiàn)記錄任務(wù)會(huì )定
期地將該值寫(xiě)入EEPROM并隨后清除該變量。

g_LoadCurvePeak和g_LoadCurveTimeStamp跟蹤負載曲線(xiàn)的最大功率值,并記錄峰值功率產(chǎn)生的間隔和時(shí)間。

AState: 包含一組與異步事件相關(guān)的變量。當接收到一個(gè)設置地址消息時(shí),msg_rx標志被置為高。地址設置邏輯電路被激活后,變量timer包含恢復正常顯示所需的秒數。DSPState和Register變量跟蹤寄存器用電量信息從DSP邏輯傳送到用電量報告函數的過(guò)程。通常,寄存器變量包括所有用電類(lèi)型(有功、無(wú)功、正功率和負功率等)。

g_new_baud: DL/T 645協(xié)議規范提供了一種只改變單個(gè)消息波特率的機制。當收到波特率變更請求并得到確認后,下一個(gè)消息就會(huì )以更高的波特率傳送。隨后,波特率恢復到正常值(本中采用1,200bps)。g_new_baud總是保存下一個(gè)消息的波特率。

g_TransmitDelay: 一些RS-485轉換器在發(fā)送完最后一個(gè)字符后會(huì )延遲一段固定時(shí)間,隨后切換回接收模式。因此,當主機傳送完一個(gè)請求后,它可能會(huì )丟失發(fā)送的前幾個(gè)字符,因為與主機串口相連的RS-485轉換器仍處在發(fā)送模式下。這個(gè)變量保存了發(fā)送狀態(tài)保持的固定延時(shí),延時(shí)結束后主機的RS-485轉換器切換回接收模式。

current_temp: 如果引用該變量,它將包含從DS3231 RTC/溫度傳感器中讀出的最新數值。

定制功能

符合DL/T 645-多功能、瓦時(shí)通信協(xié)議。但這篇文檔不僅僅對通信協(xié)議進(jìn)行說(shuō)明。DL/T 645確實(shí)對一個(gè)多功能電表需要執行的操作進(jìn)行了規定,包括測量、時(shí)段管理和報告功能。因此,如果你要選擇其它電表協(xié)議,你必須替換掉寄存器管理器以及除串口管理器之外的所有消息函數,或者至少對其進(jìn)行重大修改。修改的細節不在本文討論范疇內。

本文檔將著(zhù)重討論三個(gè)定制領(lǐng)域:顯示定制、寄存器映射定制和DSP函數定制。


顯示定制

顯示器完全由顯示管理器控制。其它任何任務(wù)都不會(huì )向的LCD寄存器寫(xiě)入數據。DisplayFormatter.c模塊包含了顯示管理器及其主要子程序UpdateLCD。

如果你只是想在電表中使用一個(gè)不同的LCD模塊,則只需修改UpdateLCD。所以我們將從這個(gè)模塊的定制開(kāi)始說(shuō)起。如果你想改變顯示信息的類(lèi)型,你就要修改DisplayManager,并且可能需要給電表的其它部分提供額外的鉤子(hook)函數。

定制UpdateLCD

UpdateLCD接收兩個(gè)參數:一個(gè)待顯示的32位數值和一個(gè)8位信號指示器數值 。32位顯示值包括8個(gè)4位數值。因此,UpdateLCD支持8位、7段顯示器。注意,支持112段顯示,所以可以定制該程序以支持更大規模的顯示器。 如果想用不同的顯示器,你需要修改LCDFont結構。它被定義為static const類(lèi)型。這樣定義的結構進(jìn)行編譯和連接后,將駐留在程序空間,而不是數據空間。

LCD空間分配表:

本文引用地址:http://dyxdggzs.com/article/180459.htm



這里有個(gè)重要的假設:每個(gè)字符都可填入一個(gè)LCD寄存器。如果所采用的LCD結構中,屬于1位顯示的某些段要占用多個(gè)LCD寄存器,則需要修改整個(gè)UpdateLCD。

數字的顯示順序是什么?

程序假設最右端的顯示數字,是32位顯示參數的低四位。這是最自然的順序;如果你將“123456”傳遞給參數,則顯示器會(huì )顯示“123456”。

信號指示器

如果你想在顯示特定信息的情況下,同時(shí)點(diǎn)亮特定的信號指示器,則需要另外一個(gè)8位變量來(lái)存儲指示信息。UpdateLCD程序使用一個(gè)switch結構,以在顯示數字之后馬上點(diǎn)亮這些指示器。

特殊狀態(tài)顯示

在displayformatter.c文件的最后還有一組程序。這些程序控制特殊狀態(tài)顯示,例如電表初始化、EEPROM初始化和程序故障(異常)。它們被直接寫(xiě)入LCD寄存器,而且要針對不同的顯示進(jìn)行定制。

定制顯示管理器

除了顯示用電量、時(shí)間和日期以外,如果你還想顯示其它信息,則需要修改顯示管理器。

顯示管理器的第一部分,處理電表地址設置信息的顯示。僅當地址設置按鈕被按下時(shí)才起作用,不需要修改這一部分。

顯示管理器的其它部分,通過(guò)全局變量g_LCDMode來(lái)獲取類(lèi)別。為確定要顯示的下一個(gè)條目,這個(gè)變量在一個(gè)字節內包括了所有必要的信息。它的格式如下所示:

總會(huì )顯示電表使用過(guò)程中累計的總用電量,并顯示由g_LCDMode字節所指定的條目。在本中,這個(gè)變量被固定為1D除了顯示總用電量以外,只顯示時(shí)間和日期。

控制變量

顯示管理器由狀態(tài)變量disp所控制,該變量有兩個(gè)元素:It和State。由名字可以得知,disp.State存放顯示的當前狀態(tài),而disp.Item跟蹤將要顯示的信息,具體含義如下:



評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>