亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于UCGUI的觸摸屏顯示設(shè)計(jì)

        2014-02-05 05:36:39王學(xué)俊孔新偉周晨晨
        液晶與顯示 2014年5期
        關(guān)鍵詞:嵌入式用戶設(shè)計(jì)

        劉 勇,王學(xué)俊,孔新偉,周晨晨

        (大連工業(yè)大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院,遼寧 大連 116034)

        1 引 言

        隨著工業(yè)控制技術(shù)的迅猛發(fā)展,在控制中人們?cè)絹?lái)越多的用到液晶觸摸屏,液晶觸摸屏作為新型人機(jī)交互裝置具有堅(jiān)固耐用、反應(yīng)速度快、節(jié)省空間、操作直觀等諸多優(yōu)點(diǎn)。利用這種技術(shù),用戶只要用手指碰觸屏上的圖符或文字就能實(shí)現(xiàn)對(duì)主機(jī)控制,從而實(shí)現(xiàn)人機(jī)交互功能,這種技術(shù)大大方便了那些不懂操作的用戶。 觸摸屏作為一種最新的輸入設(shè)備,它是目前最簡(jiǎn)單、方便、自然的一種人機(jī)交互方式[1]。

        雖然觸摸屏的操作簡(jiǎn)單,但是觸摸屏的圖形界面的設(shè)計(jì)部分,對(duì)于不懂觸摸屏原理以及不精通編程的普通用戶來(lái)說(shuō),卻是一個(gè)晦澀難懂的難題。本文正是基于這一點(diǎn),結(jié)合UCGUI嵌入式圖形支持系統(tǒng)技術(shù),開發(fā)研制一款操作設(shè)計(jì)簡(jiǎn)單的智能觸摸顯示屏,用戶只需要掌握很少的電腦操作知識(shí),在電腦上執(zhí)行幾步簡(jiǎn)單的操作,即可設(shè)計(jì)出自己想要的圖形界面,并且可以下載到下位機(jī)上運(yùn)行并顯示出來(lái)。

        2 系統(tǒng)流程

        圖1 系統(tǒng)總流程圖Fig.1 Overall system flow chart

        本設(shè)計(jì)的主要流程是先在上位機(jī)上產(chǎn)生圖形界面數(shù)據(jù)庫(kù),然后通過(guò)RS232加載到下位機(jī)主控制器上,下位機(jī)主控制器將圖形界面數(shù)據(jù)經(jīng)過(guò)分析處理后再在液晶觸摸屏上顯示出來(lái),并同時(shí)在下位機(jī)主控制器上運(yùn)行監(jiān)控程序,當(dāng)液晶觸摸屏上發(fā)生觸碰事件時(shí),把信號(hào)反饋給下位機(jī)主控制器,下位機(jī)主控制器根據(jù)不同的信號(hào)做出相應(yīng)的反應(yīng)并在液晶屏上顯示出來(lái)。

        其主流程圖如圖1所示。

        3 系統(tǒng)組成

        本設(shè)計(jì)分為硬件和軟件兩大部分。

        3.1 硬件部分

        3.1.1 液晶屏控制器

        本設(shè)計(jì)采用RA8875芯片作為液晶屏控制器。RA8875是一個(gè)文字與繪圖模式的雙圖層液晶顯示 (TFT-LCD) 控制器,可結(jié)合文字或2D圖形應(yīng)用,最大可支持到800×480 點(diǎn)分辨率的中小尺寸數(shù)字面板。內(nèi)建 768 KB 顯示內(nèi)存,可為大多數(shù)使用者提供一個(gè)更具彈性的解決方案。此外,使用者可藉由選用外部串行式Flash 接口,支持BIG5/GB 編碼,最大可提供達(dá)32×32 pixel的字型輸入。在圖形的使用上,RA8875 支持2D 的BTE 引擎 (Block Transfer Engine),此功能兼容于一般通用的2D BitBLT 功能,可處理大量圖形數(shù)據(jù)轉(zhuǎn)換與傳送。同時(shí)RA8875 也內(nèi)建幾何圖形加速引擎 (Geometric Speed-up Engine),提供使用者透過(guò)簡(jiǎn)單的設(shè)定輕松畫出直線、矩形、圓形和橢圓的幾何圖形[2]。

        相對(duì)于其他的TFT控制器解決方案,RA8875是一個(gè)功能強(qiáng)大及低成本的彩色TFT 控制器,讓使用者順利解決軟硬件開發(fā)上的困難,同時(shí)達(dá)成低成本、高效能的系統(tǒng)方案。

        3.1.2 觸摸屏控制器

        本設(shè)計(jì)采用TSC2046作為觸摸屏的控制器。觸摸屏一般分為電容、電阻、矢量壓力傳感、表面聲波以及紅外線掃描等類型,使用最多的是四線和五線電阻式觸摸屏。四線電阻式觸摸屏由2個(gè)透明的電阻薄膜組成[3],當(dāng)水平和垂直方向電阻網(wǎng)有電壓時(shí),就可以通過(guò)A/D轉(zhuǎn)換面板在觸摸點(diǎn)測(cè)量出電壓從而求出對(duì)應(yīng)的坐標(biāo)值[3-4]。TSC2046是新一代四線觸摸屏控制器,是典型的逐次逼近寄存器型A/D 變換器。其結(jié)構(gòu)以電容再分布為基礎(chǔ),包含了取樣/保持功能,支持低電壓的I/O接口。

        TS2046接口電路圖如圖2所示。

        圖2 觸摸屏控制器接口電路Fig.2 Touch screen controller interface circuit

        3.1.3 下位機(jī)主控制器

        圖3 上位機(jī)與下位機(jī)信息交換電路Fig.3 Upper machine and lower machine information exchange circuit

        本設(shè)計(jì)采用STM32103VET6芯片作為下位機(jī)主控制器。STM32系列32位閃存微控制器使用來(lái)自于ARM公司的具有突破性Cortex-M3內(nèi)核,該內(nèi)核是專門設(shè)計(jì)于滿足集高性能、低功耗、實(shí)時(shí)應(yīng)用、具有競(jìng)爭(zhēng)性價(jià)格于一體的嵌入式領(lǐng)域要求。STM32103VET6芯片CPU可達(dá)72 MHz,具有512 KB內(nèi)部存儲(chǔ)空間、64 KB RAM、100個(gè)引腳,可以充分滿足程序設(shè)計(jì)者的要求[5]。由于該芯片集成了更豐富的資源、方便使用的架構(gòu)以及低功耗等特性,加上有競(jìng)爭(zhēng)力的價(jià)格,使得從16位升級(jí)到32位變得容易,使該系列芯片正在逐步取代ARM7系列芯片。使用該芯片開發(fā)產(chǎn)品更簡(jiǎn)便快捷。

        上位機(jī)與下位機(jī)主控制器信息加載電路如圖3所示。其中PA9為STM32芯片的串口數(shù)據(jù)發(fā)送端USART1_TX,PA10為STM32芯片的串口數(shù)據(jù)接收端USART1_RX。

        3.2 軟件部分

        3.2.1 移植UCGUI到主控制器

        UCGUI是一種嵌入式應(yīng)用中的圖形支持系統(tǒng)。能夠?yàn)槿魏问褂肔CD圖形顯示的應(yīng)用提供高效的獨(dú)立于處理器及LCD控制器的圖形用戶接口,它適用單任務(wù)以及多任務(wù)系統(tǒng)環(huán)境, 并適用于任意LCD控制器和CPU控制的真實(shí)顯示或虛擬顯示[6]。

        3.2.2 建立用戶圖形界面數(shù)據(jù)庫(kù)

        用戶想要在屏幕上顯示的窗口、文字、控件等的集合稱為用戶圖形界面。用戶圖形界面數(shù)據(jù)庫(kù)就是這些窗口、文字、控件的屬性的集合。通過(guò)用戶圖形界面數(shù)據(jù)庫(kù),可以實(shí)現(xiàn)用戶想要設(shè)計(jì)的界面的顯示。

        3.2.3 觸摸屏、圖形界面、監(jiān)控程序設(shè)計(jì)

        軟件部分重點(diǎn)在于UCGUI的移植與配置,液晶屏的初始化以及下位機(jī)主控制器的監(jiān)控程序設(shè)計(jì)。

        其中,UCGUI的移植與配置是根據(jù)選用的液晶屏參數(shù)對(duì)GUIConf.h、LCDConf.h、LCDDummy.c 3個(gè)文件進(jìn)行相關(guān)的配置[7]。

        GUIConf.h文件主要是對(duì)ucgui進(jìn)行相關(guān)的配置,具體如下:

        #ifndef GUICONF_H

        #define GUICONF_H

        #define GUI_OS (0)/*這里指的是對(duì)操作系統(tǒng)的支持,因?yàn)橹挥袉渭兊囊浦睻CGUI,所以要把這個(gè)設(shè)置為0*/

        #define GUI_SUPPORT_TOUCH (1)

        /* 是否支持觸摸 */

        #define GUI_SUPPORT_UNICODE(1)

        /*UNICODE編碼支持*/

        #define GUI_ALLOC_SIZE 5000 /*

        動(dòng)態(tài)內(nèi)存機(jī)制 */

        #define GUI_WINSUPPORT 1

        /*支持窗口*/

        #define GUI_SUPPORT_MEMDEV 1

        /* 內(nèi)存控制*/

        #define GUI_SUPPORT_AA 1

        /* 抗鋸齒*/

        #endif

        LCDConf.h文件是對(duì)液晶屏做相應(yīng)的配置,具體如下:

        #defineLCD_XSIZE (800) /*定義液晶屏長(zhǎng)度為800*/

        #defineLCD_YSIZE (480) /*定義液晶屏寬度為480*/

        #defineLCD_CONTROLLER (8875) /*控制器編號(hào)*/

        #defineLCD_BITSPERPIXEL (16) /*16位點(diǎn)顯示格式*/

        #defineLCD_FIXEDPALETTE (565) /*對(duì)應(yīng)紅綠藍(lán)為565位*/

        #defineLCD_INIT_CONTROLLER() /*定義控制器型號(hào)RA8875*/

        配置層的相關(guān)配置都已完成,然后就是接口層,LCDDummy.c文件為接口層配置文件,具體如下:

        將其中的LCD_L0_Init函數(shù)定義如下:

        int LCD_L0_Init(void)

        {

        RA875_Init ();//液晶屏初始化函數(shù)

        return0;

        }

        將其中的LCD_L0_SetPixelIndex函數(shù)定義如下:

        void(intx,inty,intPixelIndex)

        {

        RA875_SetPoint(u16 x,u16 y,u16 point);//調(diào)用置點(diǎn)程序

        }

        將其中的LCD_L0_GetPixelIndex函數(shù)定義如下

        unsignedintLCD_L0_GetPixelIndex(intx,inty)

        {

        return RA875_GetPoint(u16 x,u16 y);//調(diào)用取點(diǎn)程序

        }

        至此,UCGUI的移植完畢,移植的難點(diǎn)在于設(shè)備驅(qū)動(dòng)函數(shù)的編寫以及接口層的設(shè)計(jì)。

        液晶屏的初始化主要是在Init_RA875()中實(shí)現(xiàn)的,首先程序調(diào)用GPIO_Configuration()函數(shù)對(duì)液晶屏使用的GPIO管腳進(jìn)行初始化,具體代碼如下:

        void GPIO_Configuration(void)

        {

        GPIO_InitTypeDef GPIO_InitStructure; //GPIOA到E口時(shí)鐘使能

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode =

        GPIO_Mode_AF_PP;

        GPIO_Init(GPIOE,&GPIO_InitStructure); // RS指令/數(shù)據(jù)選擇控制訊號(hào)端口

        GPIO_InitStructure.GPIO_Pin =

        GPIO_Pin_11 ;

        GPIO_InitStructure.GPIO_Speed =

        GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode =

        GPIO_Mode_AF_PP;

        GPIO_Init(GPIOD,&GPIO_InitStructure);

        …………

        GPIO_SetBits(GPIOD,GPIO_Pin_4);//MCU選用的是6800系列時(shí)置1

        GPIO_SetBits(GPIOD,GPIO_Pin_5);

        }

        在對(duì)TFT LCD使用的GPIO管腳進(jìn)行初始化后就可以正常的訪問(wèn)液晶屏驅(qū)動(dòng)芯片了,程序根據(jù)驅(qū)動(dòng)芯片的ID進(jìn)行初始化[8],其初始化部分程序如下:

        void Init_RA875(void)

        {

        WriteCommand(0x88);

        WriteData(0x0c);//PLL(鎖相回路)控制寄存器參數(shù)設(shè)置,PLLDIVN[4:0] = 20 FIN = 16 MHz

        DelayMs(1);

        WriteCommand(0x89);

        WriteData(0x02);//PLLDIVK[2:0] =2

        DelayMs(10);

        WriteCommand(0x10); //色彩深度設(shè)定

        WriteData(0x0F);//256色0x0F/65K色0x0C

        ……………

        TP_auto_mode(); //觸摸面板自動(dòng)模式設(shè)置

        WriteCommand(0x70);//設(shè)置采樣時(shí)間和ADC時(shí)鐘

        WriteData(0xB2);

        Enable_TP();

        RA8875_WAITSTATUS();

        clear_TP_interrupt(); //清TP中斷

        Active_Window(0,799,0,479);//設(shè)定面板分辨率為800 pixel×480 pixel

        ………………………

        PWM1_enable();

        PWM1_fnuction_sel();

        PWM1_clock_ratio(0x03);//2MHz PWM1

        PWM1_duty_cycle(0x00);//亮度設(shè)置

        //設(shè)置數(shù)字光標(biāo)

        Text_Cursor_Horizontal_Size(24);

        Text_Cursor_Vertical_Size(4);

        Text_Blink_Time(0x35);

        Text_Cursor_Blink_Enable();

        Text_Cursor_Enable();

        MemoryWrite_Cursor_autoIncrease();//寫光標(biāo)加1

        }

        至此完成了液晶屏的底層驅(qū)動(dòng)設(shè)計(jì),為以后用戶圖形界面的顯示做好了準(zhǔn)備。

        用戶圖形界面監(jiān)控程序重點(diǎn)在于函數(shù)_cbCallback(WM_MESSAGE*pMsg)。

        其主要內(nèi)容如下:

        static void _cbCallback(WM_MESSAGE * pMsg)

        {

        int NCode, Id;

        WM_HWIN hWin = pMsg->hWin;

        switch (pMsg->MsgId) //判斷發(fā)生什么觸發(fā)事件,根據(jù)觸發(fā)事件做出相應(yīng)變化。

        {

        case WM_PAINT:

        PaintDialog(pMsg);

        break;

        case WM_INIT_DIALOG:

        ……………

        (((WM_KEY_INFO*)(pMsg->Data.p))->Key) //判斷是否有按鍵按下

        {

        …………

        WM_NOTIFICATION_VALUE_CHANGED:

        …………

        WM_DefaultProc(pMsg);

        }

        4 結(jié) 論

        本設(shè)計(jì)采用STM32F103VET6作為主控芯片,RA8875作為液晶屏控制芯片,有效降低了開發(fā)成本,并且縮短了圖形界面顯示與反應(yīng)的時(shí)間,保證了顯示界面的穩(wěn)定性。利用RS232通信技術(shù)實(shí)現(xiàn)用戶圖形數(shù)據(jù)庫(kù)的加載,使用戶圖形界面的設(shè)計(jì)簡(jiǎn)單易懂,易于操作,即便不懂編程的用戶也可以很快設(shè)計(jì)出自己想要的圖形界面。

        [1] 杜詩(shī)超,宋永昌,王建.觸摸屏、組態(tài)軟件入門與典型應(yīng)用 [M].北京:中國(guó)電力出版社,2012.

        Du S C, Song Y C, Wang J.IntroductiontoTouchScreen,ConfigurationSoftwareandTypicalApplications[M].Beijing: China Electric Power Press,2012. (in Chinese)

        [2] 韓超.嵌入式GUI開發(fā)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2009.

        Han C.EmbeddedGUIDevelopmentandDesign[M]. Beijing: Electronic Industry Press,2009. (in Chinese)

        [3] 胡冰.EP7212處理器的LCD控制及觸摸屏接口設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002(5):49-54.

        Hu B. EP7212 processor of LCD and touch screen control interface design [J].Microcontrollers&EmbeddedSystems,2002(5):49-54.(in Chinese)

        [4] 劉榮林,程曉東.SSP接口的觸摸屏軟硬件系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009(11): 64-67.

        Liu R L, Cheng X D. Hardware and software system design of touch of the SSP interface pitcher [J].Microcontrollers&EmbeddedSystems,2009(11): 64-67. (in Chinese)

        [5] 黃福睿.基于ARM和WindowsEmbeddedCE6.0的嵌入式車載系統(tǒng)的設(shè)計(jì)及研究[D]. 沈陽(yáng):沈陽(yáng)理工大學(xué).2011.

        Huang F R. Based on ARM and embedded on-board WindowsEmbeddedCE6.0 system design and research [D]. Shenyang:Shenyang Ligong University,2011. (in Chinese)

        [6] 陳超.MATLAB應(yīng)用實(shí)例精講:圖像處理與GUI設(shè)計(jì)篇[M].北京:電子工業(yè)出版社,2011.

        Chen C.MATLABApplicationExample:ImageProcessingandGUIDesign[M]. Beijing:China Electric Power Press,2011.(in Chinese)

        [7] 劉軍.例說(shuō)STM32[M].北京:北京航空航天大學(xué)出版社,2011.

        Liu J.CaseSaysSTM32 [M]. Beijing: Beijing University of Aeronautics and Astronautics Press,2011. (in Chinese)

        [8] Urwin-Wright S, Sanders D A. Rugged LCD touch screens for embedded applications [J].MechanicalSystemsandSignalProcessing,2008(2):23-24

        猜你喜歡
        嵌入式用戶設(shè)計(jì)
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        如何獲取一億海外用戶
        Altera加入嵌入式視覺聯(lián)盟
        无码人妻精品一区二区三区东京热| 亚洲精品中文字幕尤物综合| 长腿丝袜在线观看国产| 久久久亚洲熟妇熟女av| 看黄a大片日本真人视频直播| 久久麻豆精品国产99国产精| 少妇一级aa一区二区三区片| 国产饥渴的富婆一凶二区| 日本少妇高潮喷水xxxxxxx| 久久国产色av| 亚洲国产一区二区三区在观看| 日韩在线不卡一区三区av| 在线播放免费人成毛片乱码| 丰满爆乳无码一区二区三区| h动漫尤物视频| 婷婷久久av综合一区二区三区| 人人摸人人搞人人透| 日本精品一区二区三区在线视频| 久久久9色精品国产一区二区三区| 久久精品中文字幕有码| 色综合久久精品亚洲国产 | 青青草在线成人免费视频| 婷婷亚洲岛国热超碰中文字幕 | 人妻在卧室被老板疯狂进入国产| 日本在线免费精品视频| 亚洲av综合色区一区二区| 亚洲精品无码久久久| 亚洲精品二区中文字幕| 日日噜噜夜夜久久密挑| 亚洲精品久久久久一区二区| 国产精品欧美成人| 亚洲高清中文字幕精品不卡| 亚洲精品一区二区在线免费观看| 国内精品人妻无码久久久影院| 99在线精品国产不卡在线观看 | 熟妇人妻久久中文字幕| 国产区福利| 免费黄网站永久地址进入| 国产精品永久在线观看| 少妇人妻在线视频| 亚洲综合精品在线观看中文字幕|