基于ARM的網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置人機(jī)交互研發(fā)._第1頁
基于ARM的網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置人機(jī)交互研發(fā)._第2頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于 ARM 勺網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置人機(jī)交互研發(fā)0 引言非線性、非對(duì)稱、非平穩(wěn)電力設(shè)備的大量使用,給保證供電質(zhì)量帶來了 嚴(yán)峻的挑戰(zhàn)。電能質(zhì)量問題已經(jīng)越來越引起用戶和供電部門的重視。采取技術(shù) 措施來對(duì)電能質(zhì)量進(jìn)行改善,首先就要對(duì)電能質(zhì)量進(jìn)行及時(shí)準(zhǔn)確的監(jiān)測(cè)。具有 圖形化接口的人機(jī)交互功能作為必不可少的功能之一,在電能質(zhì)量監(jiān)測(cè)裝置的 開發(fā)中占有重要的地位。文獻(xiàn)3-4 都實(shí)現(xiàn)了人機(jī)交互功能,但文獻(xiàn)3只 移植了卩 C /GUI 圖形接口,而沒有使用 卩 C /OS-H,系統(tǒng)對(duì)多任務(wù)0 引言非線性、非對(duì)稱、非平穩(wěn)電力設(shè)備的大量使用,給保證供電質(zhì)量帶來了嚴(yán)峻的 挑戰(zhàn)。電能質(zhì)量問題已經(jīng)越來越引起用戶和供電部

2、門的重視。采取技術(shù)措施來 對(duì)電能質(zhì)量進(jìn)行改善,首先就要對(duì)電能質(zhì)量進(jìn)行及時(shí)準(zhǔn)確的監(jiān)測(cè)。具有圖形化 接口的人機(jī)交互功能作為必不可少的功能之一, 在電能質(zhì)量監(jiān)測(cè)裝置的開發(fā)中 占有重要的地位。 文獻(xiàn) 3-4 都實(shí)現(xiàn)了人機(jī)交互功能,但文獻(xiàn)3只移植了 卩 C /GUI 圖形接口,而沒有使用 卩C /OS-H,系統(tǒng)對(duì)多任務(wù)的支持不夠;文獻(xiàn) 4中完成了一定的人機(jī)交互功能,圖形化程度不高,而且它們都是基于S3C44B0X 處理器。LPC2478 作為 32 bit ARM7 處理器,集成了非常豐富的功 能模塊,可以大大減少外部芯片的使用,顯著降低開發(fā)成本。在LPC2478 上進(jìn)行人機(jī)交互功能的研究有很大的實(shí)際意

3、義。本文采用LPC2478 微處理器,以RealView MDK 為開發(fā)平臺(tái),移植了實(shí)時(shí) 嵌入式操作系統(tǒng) 卩 C /OS-H和卩 C /GUI圖形接口,在此基礎(chǔ)上進(jìn)行了用戶程序的編寫,最終實(shí)現(xiàn)了網(wǎng)絡(luò)型電能質(zhì) 量監(jiān)測(cè)裝置的具有圖形化接口的人機(jī)交互功能。1 硬件結(jié)構(gòu)及功能1. 1 硬件結(jié)構(gòu)硬件結(jié)構(gòu)圖如圖 1 所示,網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置采用了雙CPU 及雙口 RAM的結(jié)構(gòu),2 個(gè) CPU 分別采用的是 DSP( TMS320F2812)和 ARM(LPC2478)TMS320F2812 的高速保證了裝置的實(shí)時(shí)性,LPC2478 提供的豐富的接口大大增 強(qiáng)了裝置的可擴(kuò)展性。雙口 RAM 采用的是 I

4、DT70V9289 其中,DSP 的主要作用 是進(jìn)行電力信號(hào)的采集、計(jì)算與分析及實(shí)現(xiàn)故障報(bào)警、事件記錄;ARM 則主要負(fù)責(zé)人機(jī)交互功能和通信功能網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置硬件結(jié)構(gòu)框圖圖 1 網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置硬件結(jié)構(gòu)框圖。裝置中人機(jī)交互功能在硬件方面主要通過 LPC2478 微處理器和 6 個(gè)按鍵及 LCD 液晶屏(AT056TN52 實(shí)現(xiàn)。裝置所采用的液晶屏 TFT-LCD 為 AT056TN52 它有 18 根數(shù)據(jù)線,設(shè)計(jì)中將其與 LPC2478 處理器的數(shù)據(jù)總線相連;解析度為 640X480 像素,每個(gè)像素可以顯示最多 26 萬種顏色,完全可以滿足裝置的顯示 需求。鍵盤采用的是 6 個(gè)按

5、鍵,LPC2478 的 GPIO 中斷功能使鍵盤的實(shí)現(xiàn)變得非常簡(jiǎn) 單。該裝置中每個(gè)按鍵都與 I /O 口直接相連,另一端接地。為每個(gè)按鍵并聯(lián) 上一個(gè)電容可以有效防止按鍵抖動(dòng)。1.2 網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置的功能裝置的主要功能: 基本電力參數(shù)監(jiān)測(cè)功能; 電能質(zhì)量參數(shù)監(jiān)測(cè)功能; 人 機(jī)交互功能; 報(bào)警功能;網(wǎng)絡(luò)通信功能。針對(duì)裝置豐富的功能,需要有強(qiáng)大的人機(jī)交互功能做為支持。為便于操 作,裝置的人機(jī)交互界面需要以中文窗口界面實(shí)現(xiàn)。用于人機(jī)交互功能的窗口 分為兩類:對(duì)話框和菜單。對(duì)話框的功能是參數(shù)的設(shè)置與顯示,菜單的功能是為 用戶提供選擇界面,接受用戶的選擇,并根據(jù)選擇結(jié)果運(yùn)行相應(yīng)的程序。設(shè)計(jì)人機(jī)界面

6、時(shí),首先要根據(jù)實(shí)際需求確定需要幾級(jí)菜單,然后確定各級(jí) 菜單中選擇項(xiàng)的數(shù)量,最后確定每個(gè)選擇項(xiàng)對(duì)應(yīng)的窗口。裝置的菜單結(jié)構(gòu)如圖 2 所示。菜單中每個(gè)漢字為 24X24 點(diǎn)陣,對(duì)話框中的小字為 21X21 點(diǎn) 陣。本文設(shè)計(jì)了三級(jí)菜單,在屏幕下方顯示一級(jí)菜單,選擇一級(jí)菜單中的對(duì)應(yīng) 項(xiàng)后彈出二級(jí)菜單,二級(jí)菜單下又包含三級(jí)菜單。用戶可以通過方向鍵以及確 認(rèn)鍵來進(jìn)行選擇并加以確認(rèn)。裝置菜單結(jié)構(gòu)圖可圖 2 裝置菜單結(jié)構(gòu)圖2 人機(jī)交互功能的軟件開發(fā)要實(shí)現(xiàn)裝置的有圖形接口的人機(jī)交互功能,必須進(jìn)行嵌入式操作系統(tǒng)和 圖形接口在 LPC2478 微處理器上的移植。嵌入式操作系統(tǒng)的使用可以大大提高 裝置的可靠性和實(shí)時(shí)性,

7、圖形接口的移植則可以顯著提高圖形化系統(tǒng)的開發(fā)效 率,縮短開發(fā)周期。在比較了幾種主流的圖形接口之后,最終選擇卩 C /OS-H嵌入式操作系統(tǒng)和 卩 C /GUI 圖形接口,因?yàn)樗鼈兊拇a量少,而且功能強(qiáng)大, 非常適合移植在資源有限的嵌入式硬件平臺(tái)上。2. 1 卩 C/OS-H的移植卩C/OS-n嵌入式操作系統(tǒng)的移植工作包含以下幾個(gè)內(nèi)容:編寫硬件初始 化啟動(dòng)代碼 ; 編寫設(shè)備驅(qū)動(dòng)代碼 ; 修改操作系統(tǒng)與硬件相關(guān)的代碼。所謂啟動(dòng)代碼,就是處理器在啟動(dòng)的時(shí)候執(zhí)行的一段代碼,主要任務(wù)是 定義程序入口指針 ;設(shè)置異常向量 ;初始化處理器各模式下的堆棧和寄存器 ; 配置 CPU 時(shí)鐘源;初始化系統(tǒng)功能模塊;

8、跳轉(zhuǎn)到 C 語言主程序中等等。由于以上的操 作均與處理器體系結(jié)構(gòu)和系統(tǒng)配置密切相關(guān),所以一般由匯編來編寫。在裝置 中示意性的啟動(dòng)代碼為:PRESERVE8Vectors LDR PC ,Reset_AddrLDR P C, Undef_AddrLDR P C, SWI_AddrLDR PC PAA_AddrLDR PC DAA_AddrLDR PC,IRQ_AddrLDR PC,F(xiàn)IQ_AddrReset_Addr為每一種處理器模式初始化堆棧;地址重映射,設(shè)置 MEMMAP = 1;配置時(shí)鐘源,設(shè)置 Fpclk = 72M;初始化 FLASH;初始化 SDRAM;IMPORT _mainLDR

9、 R0,= _mainBX R0;跳轉(zhuǎn)到主程序中設(shè)備驅(qū)動(dòng)代碼是操作系統(tǒng)和硬件之間的橋梁。通過驅(qū)動(dòng)代碼,用戶可以不用了解具體硬件的細(xì)節(jié),只需調(diào)用驅(qū)動(dòng)層所提供的函數(shù)就能對(duì)硬件進(jìn)行操 作。在移植卩C/OS-n時(shí),亦只需根據(jù)硬件環(huán)境編寫必要的硬件驅(qū)動(dòng)程序即 可。在此移植中,涉及到人機(jī)交互功能的硬件除微處理器 LPC2478 外主要是鍵 盤和液晶,液晶部分的驅(qū)動(dòng)代碼包含在了卩 C /GUI 圖形接口的移植步驟中。而鍵盤的主要功能為接受用戶的輸入,在微處理器 LPC2478 中,可以使用 I /O 中斷的功能來實(shí)現(xiàn)對(duì)鍵盤輸入的監(jiān)測(cè),驅(qū)動(dòng)代碼則為鍵盤的中斷處理程序 :void Key_Handler(voi

10、d) DWORD key_n = 0;key_n = IO0_INT_STAT_F; / / 讀取中斷狀態(tài)IO0_INT_EN_F = 0 xE07F8FFF; / / 禁止中斷IO0_INT_CLR | = 0 xFFFFFFFF; / / 清除中斷if (key_n 0 x00800000) = = 0 x00800000) OSMboxPost(Keybox , (void * )1);if (key_n 0 x01000000) = = 0 x01000000) OSMboxPost(Keybox , (void * )2);if (key_n 0 x02000000) = = 0 x

11、02000000) OSMboxPost(Keybox , (void * )3);if (key_n 0 x08000000) = = 0 x08000000) OSMboxPost(Keybox , (void * )4);if (key_n 0 x10000000) = = 0 x10000000) OSMboxPost(Keybox , (void * )5);if (key_n 0 x00001000) = = 0 x00001000) OSMboxPost(Keybox , (void * )6);IO0_INT_EN_F | = 0 x1F807000; / / 開啟中斷編寫完硬

12、件初始化啟動(dòng)代碼和設(shè)備驅(qū)動(dòng)代碼之后,在修改操作系統(tǒng)與硬 件相關(guān)的代碼之前,應(yīng)該了解 卩C/OS-n的體系結(jié)構(gòu)如圖 3 所示。移植卩 C /os-n,最主要的工作就是移植與硬件相關(guān)的3 個(gè)文件,即 os _CPU. H OS_CPU_C. C 和 OS _CPU_A. ASM OS_CPU. H 中含有用#define 定義的與處理器 有關(guān)的常量、宏和類型定義。通過對(duì)此處定義的修改,可以使源代碼中對(duì)數(shù)據(jù) 類型的使用不依賴于具體的處理器。移植時(shí),只要使處理器、編譯器和卩 C/OS-n三者之間數(shù)據(jù)類型統(tǒng)一即可。在此文件中還有一個(gè)卩C/OS-n對(duì)堆棧增長(zhǎng)方式的定義 OS_STK_GROW,由于 Kei

13、l 只支持遞減堆棧,因此,此處需要定 義OS _ STK _GROWT 的值為 1。OS_CPU_C. C 文件中,需要進(jìn)行的工作是編寫 任務(wù)堆棧初始化函數(shù) OSTask-StkInit()。該函數(shù)在創(chuàng)建一個(gè)任務(wù)時(shí)被調(diào)用。根 據(jù)微處理器的寄存器結(jié)構(gòu),就可以確定在本次移植中針對(duì)LPC2478 應(yīng)該使用的任務(wù)的堆棧結(jié)構(gòu),從而可以寫出堆棧初始化函數(shù)代碼。在OS_CPU_A. ASMfc件中,有 4 個(gè)函數(shù)需要編寫,分別是啟動(dòng)最高優(yōu)先級(jí)就緒任務(wù)函數(shù)OSStartHighRdy(),時(shí)鐘節(jié)拍中斷服務(wù)子程序 OSTickISR(),任務(wù)級(jí)任務(wù)切換 函數(shù)OS_TASK_SW(及中斷級(jí)任務(wù)切換函數(shù) OSInt

14、CtxSw()。卩 C/OS-n的體系結(jié)構(gòu)圖圖 3 卩C/OS-n的體系結(jié)構(gòu)圖2. 2 卩 C/GUI 的移植卩 C /GUI 是一種用于嵌入式應(yīng)用的圖形支持軟件,它被設(shè)計(jì)用于為任 何一個(gè)圖形 LCD 的應(yīng)用提供一個(gè)有效的不依賴于處理器和 LCD 控制器的圖形用 戶接口。卩 C /GUI 的軟件體系模塊結(jié)構(gòu)如圖 4 所示。移植的過程具體可以分 為以下幾步:按照需要,定制自己的開發(fā)環(huán)境;修改配置文件;編寫硬件接口函數(shù) 及 LCD 驅(qū)動(dòng)函數(shù);編譯、鏈接、調(diào)試?yán)映绦?。其中又以修改配置文件,編?硬件接口函數(shù)及 LCD 驅(qū)動(dòng)函數(shù)最為主要。卩 C/GUI 的分層模塊結(jié)構(gòu)圖 4 卩 C/GUI 的分層模

15、塊結(jié)構(gòu)(1)對(duì) LCDConf. h 的修改。LCDConf. h 文件中包含的宏定義主要是 LCD 宏和LCD 控制宏,用于定義所使用的 LCD 的像素尺寸和所選擇的功能,以及如何對(duì) LCD控制器進(jìn)行訪問。在裝置中為:#defi ne LCD_XSIZE (640) #defi ne LCD_YSIZE (480)#define LCD_BITSPERPIXEL (16) (2)對(duì) GUICong. h 的修改。對(duì) GUICong. h 文件進(jìn)行修改就是對(duì) 卩 C /GUI 相 應(yīng)的功能進(jìn)行裁減。通過對(duì)這個(gè)文件的修改,可以決定圖形接口是否支持操作 系統(tǒng),是否采用內(nèi)存設(shè)備,是否采用窗口管理器等

16、。在裝置中為:#define GUI_OS (1)#define GUI_SUPPORT_TOUCH (0)#define GUI_SUPPORT_MEMDEV1#define GUI_WINSUPPORT 1LCD 驅(qū)動(dòng)程序。 根據(jù)本文所采用的液晶 AT056TN52 的數(shù)據(jù)手冊(cè), 編寫對(duì)應(yīng) 的 LCD驅(qū)動(dòng)程序, 在 GUI_LCDDriver 文件夾中的 LCDDummy.(文件中,有一 個(gè)函數(shù)的修改,它就是 LCD_L0_SetPixelIndex( ) 函數(shù)。在這個(gè)函數(shù)中需要根 據(jù)具體的硬件寫出一個(gè)在指定位置顯示一個(gè)指定像素值的語句,因?yàn)楸敬我浦?所用的外部 SDRAM 為L(zhǎng)CD 所分

17、配的顯示緩存起始地址為 0 xA000000Q 因此, 這個(gè)語句在裝置中為:* (0 xA0000000 + (640X2xy + xX2) = PixelIndex除此之外,還有幾個(gè)函數(shù)需要改寫,它們都可以通過調(diào)用LCD_L0_SetPixelIndex( ) 函數(shù)實(shí)現(xiàn)。主要是以下幾個(gè)函數(shù):LCD_L0_Init(); / / 初始化顯示屏LCD_L0_ReInit(); / / 重新初始化 LCDLCD_L0_Off(); / / 關(guān)閉 LCDLCD_L0_On(); / / 開啟 LCDLCD_L0_DrawBitmap(); / / 通用繪制位圖函數(shù)LCD_L0_DrawHLine()

18、; / / 繪制一條水平線LCD_L0_DrawVLine(); / / 繪制一條垂直線LCD_L0_FillRect(); / / 填充一個(gè)矩形區(qū)域LCD_LO_XorPixel(); / /反轉(zhuǎn)一個(gè)像素2. 3 人機(jī)交互界面程序的編寫在工業(yè)上應(yīng)用的一些圖形界面并不需要多么復(fù)雜,而是需要顯示一些 簡(jiǎn)潔實(shí)用的功能界面,卩 C /GUI 的優(yōu)勢(shì)從而也能得到發(fā)揮。該裝置的人機(jī)交互 程序結(jié)構(gòu)如圖 5 所示。在移植成功 卩 C /OS-n實(shí)時(shí)操作系統(tǒng)和 卩 C /GUI 圖形 界面系統(tǒng)的基礎(chǔ)上,裝置人機(jī)交互界面程序的編寫會(huì)很方便。人機(jī)交互程序結(jié)構(gòu)示意圖圖 5 人機(jī)交互程序結(jié)構(gòu)示意圖鍵盤輸入部分,本裝置

19、采取的是 I /O 中斷方式,LPC2478 的 GPIO 端 口 0和端口 2 的每根引腳都可以產(chǎn)生中斷信號(hào)。每個(gè)中斷信號(hào)可編程設(shè)置為上 升沿觸發(fā)、下降沿觸發(fā)或脈沖觸發(fā)。GPIO 中斷信號(hào)與 VIC 的外部中斷 3 共享同一個(gè)中斷通道。該裝置使用 6 個(gè)按鍵,分別連接到 GPIO 端口 0 中的 6 根引 腳。設(shè)置 GPIO 對(duì)應(yīng)引腳的中斷為下降沿觸發(fā)。當(dāng)按鍵按下時(shí),對(duì)應(yīng)的引腳上 產(chǎn)生一個(gè)下降沿觸發(fā) GPIO 中斷,在中斷處理程序中讀取 GPIO 下降沿中斷狀態(tài) 寄存器的值,可以判斷出按鍵按下,從而進(jìn)行對(duì)應(yīng)的處理。編寫液晶顯示部分程序之前,必須對(duì)各個(gè)任務(wù)的優(yōu)先級(jí)進(jìn)行合理的分 配,本裝置的顯示

20、界面主要包括實(shí)時(shí)時(shí)間顯示任務(wù),三級(jí)菜單顯示任務(wù)和各個(gè) 具體顯示任務(wù)或設(shè)置任務(wù)。任務(wù)優(yōu)先級(jí)的分配上,實(shí)時(shí)時(shí)間顯示的任務(wù)優(yōu)先級(jí) 最低;具體顯示或設(shè)置任務(wù)的優(yōu)先級(jí)要低于菜單顯示任務(wù);下級(jí)菜單顯示的任務(wù) 優(yōu)先級(jí)要低于上級(jí)菜單顯示的任務(wù)優(yōu)先級(jí)。功能顯示菜單任務(wù)的觸發(fā)條件有: 上級(jí)菜單顯示任務(wù)中的確定鍵; 下級(jí)菜單顯示任務(wù)中的返回鍵。需要注意的是返回上級(jí)菜單需要使用喚醒函數(shù)OSTaskResume(N)如果是從下級(jí)菜單返回,則需要把下級(jí)菜單的圖像用背景圖 像覆蓋。功能顯示菜單任務(wù)的流程如圖 6 所示。功能菜單顯示任務(wù)流程圖圖 6 功能菜單顯示任務(wù)流程圖。具體顯示結(jié)果或設(shè)置任務(wù)的觸發(fā)條件只有一種,就是最低級(jí)菜單顯示任 務(wù)中的確定鍵。在具體顯示結(jié)果任務(wù)中,用確定鍵來返回頂級(jí)菜單。在具體的設(shè)置任務(wù)中,按下確定鍵則保存設(shè)置結(jié)果,然后返回頂級(jí)菜單,按下取消鍵則不保存設(shè)置結(jié)果,直接返回頂級(jí)菜單在整個(gè)網(wǎng)絡(luò)型電能質(zhì)量監(jiān)測(cè)裝置所提供的功能中,實(shí)時(shí)時(shí)鐘顯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論