• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    uC/GUI實(shí)現(xiàn)OLED顯示的移植與優(yōu)化研究

    2016-11-08 08:36:20胡平平王晶杰
    關(guān)鍵詞:發(fā)送數(shù)據(jù)字節(jié)代碼

    胡平平 王晶杰

    (北京信息科技大學(xué)自動(dòng)化學(xué)院 北京 100192)

    ?

    uC/GUI實(shí)現(xiàn)OLED顯示的移植與優(yōu)化研究

    胡平平王晶杰

    (北京信息科技大學(xué)自動(dòng)化學(xué)院北京 100192)

    為了擴(kuò)展STM32系統(tǒng)中OLED顯示處理功能、提高處理效率,給出了uC/GUI實(shí)現(xiàn)OLED最小顯示系統(tǒng)的移植方法。并根據(jù)OLED顯示器的特性,提出了新的程序結(jié)構(gòu),設(shè)計(jì)了快速判決算法,對(duì)關(guān)鍵代碼進(jìn)行了優(yōu)化,在uC/GUI下實(shí)現(xiàn)了高效的OLED顯示處理。實(shí)際測(cè)試數(shù)據(jù)分析證明,所設(shè)計(jì)的算法不僅降低了處理復(fù)雜度,還使顯示處理速度成倍提高。

    uC/GUIOLED移植算法優(yōu)化

    0 引 言

    uC/GUI是著名的uC/OS-II開(kāi)發(fā)者M(jìn)icrium 公司的另一個(gè)優(yōu)秀開(kāi)源軟件,是專(zhuān)為嵌入式應(yīng)用而設(shè)計(jì)的、可移植、可裁減的圖形用戶(hù)界面系統(tǒng)軟件[1]。uC/GUI可為任何使用圖像LCD的應(yīng)用程序提供高效的、獨(dú)立于處理器和LCD控制器的圖形用戶(hù)接口[2]。uC/GUI可用于單任務(wù)和多任務(wù)嵌入式系統(tǒng)中,全部代碼用C語(yǔ)言完成,可方便地移植到各種CPU上[3,4]。

    有機(jī)發(fā)光二極管(簡(jiǎn)稱(chēng)OLED)具有纖薄、可制成各種形狀、占用空間小等優(yōu)勢(shì),它是繼白熾燈、熒光燈、LED之后的又一次光源革命。由于它節(jié)能、環(huán)保、壽命長(zhǎng)而應(yīng)用廣泛,被列入我國(guó)戰(zhàn)略性新興產(chǎn)業(yè)[5]。和LCD相比,OLED具有體積小、亮度高、視角寬、自發(fā)光、低功耗、壽命長(zhǎng)、動(dòng)態(tài)范圍廣和可彎曲等諸多優(yōu)點(diǎn)[6]。

    由于uC/GUI主要是為L(zhǎng)CD設(shè)計(jì)的,向各種LCD顯示器的移植不僅簡(jiǎn)單,而且執(zhí)行效率非常高。OLED有著與LCD不同的控制方式和RAM映像,雖然按常規(guī)方法將uC/GUI移植到OLED顯示器并不困難,但執(zhí)行效率非常低。這既不符合嵌入式系統(tǒng)嚴(yán)苛的實(shí)時(shí)性要求,也沒(méi)有充分發(fā)揮uC/GUI的優(yōu)勢(shì)。

    本文在分析uC/GUI系統(tǒng)特點(diǎn)的基礎(chǔ)上,先給出了實(shí)現(xiàn)OLED最小顯示系統(tǒng)的移植方法,然后結(jié)合OLED顯示的特點(diǎn),設(shè)計(jì)了全新的程序結(jié)構(gòu)并對(duì)關(guān)鍵代碼進(jìn)行了優(yōu)化,提出了快速判決算法,不僅提高了軟件的執(zhí)行效率,且快速實(shí)現(xiàn)了復(fù)雜的處理。

    1 OLED顯示器及操作方法

    本文所使用MCU是Cortex-M3系列芯片STM32F105,OLED為單色128×64點(diǎn)陣顯示器,驅(qū)動(dòng)芯片為SSD1303。MCU與SSD1303的連接采用并行方式,如圖1所示。

    圖1 MCU與SSD1303的連接圖

    圖中PC0至PC7按8位I/O端口操作,其他四根控制線則按位進(jìn)行輸出操作。操作宏的定義如下:

    #define Oled_DCPAout(0)

    #define Oled_CSPAout(2)

    #define Oled_WRPBout(10)

    #define Oled_RDPAout(11)

    #define SetOledData(x)GPIOC->ODR=(GPIOC->ODR&0xff00)|x

    #define GetOledData()(GPIOC->IDR&0xff)

    SSD1303最大可驅(qū)動(dòng)132列64行點(diǎn)陣顯示器,內(nèi)部有132×64位顯示SRAM,MCU可對(duì)它進(jìn)行讀寫(xiě)操作。該SRAM的位和顯示點(diǎn)陣的映射關(guān)系如圖2所示。

    圖2 顯示器點(diǎn)陣和SRAM的映射關(guān)系

    顯示點(diǎn)陣的64行分為8頁(yè),每頁(yè)8行;頁(yè)中的每一列映射為SRAM的一個(gè)字節(jié),位序?yàn)閎it7至bit0,每頁(yè)中的132列映射為SRAM中連續(xù)的132個(gè)字節(jié)。讀寫(xiě)一個(gè)SRAM字節(jié)的代碼如下:

    void WriteOledCmd(U8 Cmd)

    {

    SetOledData(Cmd);

    Oled_DC= 0;Oled_WR= 0;

    // 寫(xiě)命令字

    Oled_CS= 0;Oled_CS= 1;

    // 產(chǎn)生CS低脈沖

    Oled_WR= 1;Oled_DC= 1;

    // 寫(xiě)結(jié)束,默認(rèn)數(shù)據(jù)字

    }

    void WriteOledByte(U8 Data, int Page, int Col)

    {

    WriteOledCmd(Page+0xB0);

    // 設(shè)置頁(yè)號(hào)

    WriteOledCmd(Col&0xf);

    // 設(shè)置列低地址

    WriteOledCmd((Col>>4)+0x10);

    //設(shè)置列高地址

    Oled_WR = 0;

    // 寫(xiě)操作

    SetOledData(Data);

    Oled_CS = 0;Oled_CS = 1;

    // 產(chǎn)生CS脈沖

    Oled_WR = 0;

    // 寫(xiě)結(jié)束

    }

    U8 ReadOledByte(int Page, int Col)

    {

    U8 Data;

    WriteOledCmd(Page+0xB0);

    // 設(shè)置頁(yè)號(hào)

    WriteOledCmd(Col&0xf);

    // 設(shè)置列低地址

    WriteOledCmd((Col>>4)+0x10);

    //設(shè)置列高地址

    Oled_RD = 0; Oled_CS = 0;

    // 讀操作

    Data = GetOledData();

    // 得到數(shù)據(jù)字節(jié)

    Oled_CS = 1; Oled_RD = 0;

    // 讀結(jié)束

    return Data;

    }

    讀(寫(xiě))一個(gè)SRAM字節(jié)的處理需要92(95)條匯編指令,代碼長(zhǎng)度為109(110)個(gè)字。

    2 OLED最小顯示系統(tǒng)的uC/GUI移植方法

    本文使用的是V3.94版的uC/GUI,移植過(guò)程分為添加源程序、修改配置文件和編制關(guān)鍵代碼三部分。

    2.1添加uC/GUI源程序

    uC/GUI的可裁剪性表現(xiàn)在其源程序按函數(shù)功能可細(xì)分為許多獨(dú)立的小源程序文件,如GUI_DispChars.c文件只含GUI_Disp Chars()一個(gè)函數(shù),僅兩行代碼!簡(jiǎn)單地將所有uC/GUI源程序都添加到項(xiàng)目文件中,對(duì)支持smart鏈接(僅鏈接用到的模塊)的編譯器來(lái)說(shuō)不會(huì)增加目標(biāo)代碼的尺寸,但臃腫的項(xiàng)目文件不符合uC/GUI短小精干原則和“綠色”編程精神。好的做法是在項(xiàng)目文件夾中創(chuàng)建一個(gè)與uC/GUI軟件包Start文件夾類(lèi)似的兩層共五個(gè)文件夾:

    需要添加的具體源程序文件是:

    Config下的GUIConf.h和LCDConf.h。

    Core下的GUI.h、GUI_ConfDefaults.h、GUI_DispChar.c、GUI_DispChars.c和GUI_DispString.c等30個(gè)文件。

    LCDDriver下的LCDDummy.c,該文件包含了移植中所有需要修改的函數(shù)。

    Font下的F8x16.c(本文僅使用了8×16點(diǎn)陣字符集)。

    2.2修改uC/GUI配置文件

    文件LCDConf.h中符號(hào)的修改:

    LCD_XSIZE(128)

    // 原值640

    LCD_YSIZE(64)

    // 原值480

    LCD_BITSPERPIXEL (1)

    // 原值8

    LCD_CONTROLLER(1303)

    // 原值1375,h

    其中的1303表示SSD1303,沒(méi)有特殊含義,其用法見(jiàn)下文。

    文件GUIConf.h中符號(hào)的修改:

    GUI_OS(0)

    // 不支持操作系統(tǒng)

    GUI_SUPPORT_TOUCH(0)

    // 不支持觸摸屏

    GUI_SUPPORT_UNICODE(0)

    // 不支持ASCII和Unicode混合使用

    GUI_DEFAULT_FONT &GUI_Font8x16

    // 原GUI_Font6x8

    GUI_ALLOC_SIZE128*64

    // 為WM和存儲(chǔ)設(shè)備用

    GUI_WINSUPPORT0

    // 不支持窗口

    GUI_SUPPORT_MEMDEV0

    // 不支持存儲(chǔ)設(shè)備

    GUI_SUPPORT_AA0

    // 不支持去鋸齒

    2.3編制關(guān)鍵代碼

    移植只需對(duì)LCDDummy.c里的相關(guān)代碼進(jìn)行修改即可,基本系統(tǒng)的移植僅需修改三個(gè)函數(shù):

    (1) 初始化代碼

    uC/GUI初始化由GUI_Init()完成,調(diào)用的一系列函數(shù)中僅GUI_X_Init()和LCD_L0_Init()需要修改。GUI_X_Init()用于初始化GUI運(yùn)行之前需運(yùn)行的硬件,本文系統(tǒng)沒(méi)有這樣的硬件,僅在LCDDummy.c中設(shè)置一個(gè)空的GUI_X_Init()函數(shù)即可。初始化移植只需將LCD_L0_Init()對(duì)LCD_INIT_CONTROL LER()的調(diào)用替換為對(duì)OLED控制器SSD1303的初始化處理就行了。

    (2) 設(shè)置像素代碼

    模板中設(shè)置像素函數(shù)是一個(gè)空函數(shù),移植后的代碼如下:

    void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)

    {

    U8 Mask=0x80>>(y&7);

    U8 Data = ReadOledByte(y>>3, x);

    if ( PixelIndex ) Data |= Mask;

    else Data &= ~Mask;

    WriteOledByte(Data, y&7, x);

    }

    (3) 讀取像素代碼

    模板中讀取像素函數(shù)是一個(gè)僅返回0的函數(shù),移植后的代碼如下所示:

    unsigned int LCD_L0_GetPixelIndex(int x, int y)

    {

    return (ReadOledByte(y>>3, x)&(0x80>>(y&7))) ? 1 : 0;

    }

    另外,必須將原始LCDDummy.c的編譯條件:

    #if (LCD_CONTROLLER==-1) && (!defined(WIN32) ‖ defined(LCD_SIMCONTROLLER) ) 改為:

    #if (LCD_CONTROLLER==1303) 才能通過(guò)編譯。

    3 OLED顯示代碼的優(yōu)化設(shè)計(jì)

    3.1OLED顯示代碼存在的問(wèn)題

    上述移植完成的uC/GUI雖然能夠正確地實(shí)現(xiàn)OLED的顯示處理,但其執(zhí)行效率非常低。分析uC/GUI的代碼發(fā)現(xiàn),所有顯示處理最終都是通過(guò)LCD_L0_SetPixelIndex()和LCD_L0_GetPixelIndex()兩個(gè)函數(shù)實(shí)現(xiàn)的,而單獨(dú)對(duì)每一個(gè)像素處理并沒(méi)有充分利用OLED顯示器的特點(diǎn)。

    首先,向OLED顯示器讀寫(xiě)一個(gè)像素與讀寫(xiě)一頁(yè)中該列的8行像素的處理量完全一樣。在上述讀(寫(xiě))SRAM字節(jié)代碼中,設(shè)置地址(頁(yè)號(hào)和列號(hào))的指令數(shù)多達(dá)72條,占總代碼92(95)條的78.3%(75.8%)。而實(shí)際上OLED顯示器內(nèi)部有一個(gè)可以自動(dòng)加1的地址計(jì)數(shù)器,僅需設(shè)置一次頁(yè)號(hào)和列號(hào),就可以連續(xù)讀寫(xiě)最多達(dá)132個(gè)SRAM字節(jié),這一特性在上面的代碼中完全沒(méi)有利用。

    以顯示一個(gè)8×16點(diǎn)陣的字符為例,需要調(diào)用128次設(shè)置像素的函數(shù),共需執(zhí)行207×128=26 496條指令。而實(shí)際上需要設(shè)置SRAM的字節(jié)數(shù)量最多24個(gè)(若字符起始行正好在頁(yè)邊界上則僅為16個(gè)),如果連續(xù)設(shè)置,僅需設(shè)置3次地址和寫(xiě)信號(hào)( (72+6)×3=234條指令),然后3次連續(xù)寫(xiě)8個(gè)字節(jié)(13×8×3=312條指令),總指令數(shù)量為546條,是逐像素處理的2.06%??梢?jiàn),提高顯示處理速度存在很大的空間。

    3.2新的處理策略和關(guān)鍵代碼

    為了充分利用OLED顯示的優(yōu)勢(shì),必須將像素的逐點(diǎn)處理改為批量處理,為此本文設(shè)計(jì)了新的處理策略:在MCU內(nèi)存中設(shè)置一個(gè)OLEDSRAM的映像空間OledRamMap,同時(shí)設(shè)置一個(gè)SRAM更新標(biāo)志OledRamUpdateFlag:

    U8 OledRamMap[8*128];

    // 長(zhǎng)度1024B

    U8 OledRamUpdateFlag[8*(128/8)];

    // 長(zhǎng)度128B

    OledRamMap的每一個(gè)字節(jié)在OledRamUpdateFlag中都有一位標(biāo)志表示該字節(jié)是否更新。所有處理像素的函數(shù)都不直接訪問(wèn)OLED的SRAM,而是對(duì)OledRamMap和OledRamUpdate Flag進(jìn)行設(shè)置,必要時(shí)由更新函數(shù)UpdateOledDisp()按更新標(biāo)志將OledRamMap寫(xiě)到OLED的SRAM中。

    OledRamMap和OledRamUpdateFlag在初始化時(shí)被清零,OledRamUpdateFlag在每次更新后也清零。新策略關(guān)鍵代碼的實(shí)現(xiàn)如下所示:

    void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)

    {

    U8 BitMask = 0x80>>(y&7);

    U8 *pCntData=&OledRamMap[(yPhys<<4)+xPhys];

    if ( PixelIndex ) *pCntData |= BitMask;

    else *pCntData &= ~BitMask;

    OledRamUpdateFlag[(y<<1) +(x>>3)] |=0x80>> (x&7);

    }

    unsigned int LCD_L0_GetPixelIndex(int x, int y)

    {

    return (OledRamMap[(y<<4) +x]&(0x80>>(y&7)))?1:0;

    }

    void LCD_L0_XorPixel(int x, int y)

    {

    OledRamMap[(y<<4) +x] ^= (0x80>>(y&7));

    OledRamUpdateFlag[(y<<1) +(x>>3)] |= 0x80>>(x&7);

    }

    UpdateOledDisp()的處理流程如圖3所示。

    3.3更新處理的進(jìn)一步優(yōu)化和快速判決算法

    上面的更新處理算法在更新數(shù)據(jù)分片位于連續(xù)空間的情況下效率確實(shí)很高,但在更新數(shù)據(jù)零碎且分散的情況下,效率并不高。最壞的情形是更新標(biāo)志為1和0交替出現(xiàn),此時(shí)要為每一個(gè)需更新的數(shù)據(jù)設(shè)置地址。分析發(fā)現(xiàn),送一次數(shù)據(jù)需13條指令,而設(shè)置一次地址需要76條指令,是送數(shù)據(jù)的5.8倍。也就是說(shuō),如果兩個(gè)需要更新的數(shù)據(jù)間不需要更新的數(shù)據(jù)數(shù)量小于6個(gè)時(shí),就應(yīng)該連續(xù)發(fā)送這些無(wú)需更新的數(shù)據(jù)而不重新設(shè)置地址。

    圖3 OLEDSRAM更新處理流程圖

    為此,在更新標(biāo)志由1變0時(shí)要根據(jù)該0后面連續(xù)4個(gè)標(biāo)志位的16種情況來(lái)決定是否停止發(fā)送數(shù)據(jù)。由于標(biāo)志由1變0出現(xiàn)的位置有8種(按字節(jié)訪問(wèn)的),因此共有128種情況。顯然,為決定是否停止發(fā)送數(shù)據(jù)而進(jìn)行128種判決處理是完全不可接受的。本文設(shè)計(jì)了快速算法,通過(guò)邏輯運(yùn)算和查表操作,僅需一次判斷便可得出判決結(jié)果。實(shí)現(xiàn)方法如下:

    新算法的原則是:如果判決結(jié)果是繼續(xù)發(fā)送數(shù)據(jù),則將當(dāng)前0標(biāo)志及后面4位中某些0標(biāo)志置位即可。這樣可保持處理的簡(jiǎn)潔性,少增加新的分支。此外,當(dāng)前0標(biāo)志的8個(gè)位置中,有4個(gè)位置的后續(xù)4位將延伸到下一個(gè)標(biāo)志字節(jié),因此必須將連續(xù)16個(gè)更新標(biāo)志用一個(gè)U16變量CntFlagW聯(lián)合處理。而檢測(cè)字MaskW也由0x8000移位至0x100,新增一個(gè)與此對(duì)應(yīng)的變量BitShift由0變至7。設(shè)置一個(gè)判決門(mén)限數(shù)組FlagLevel如下:

    const u16 FlagLevel[]={0x0400,0x0200,0x0100,0x0080,

    0x0040,0x0020,0x0010,0x0008};

    令Tmp = CntFlagW&(MaskW-1),

    如果Tmp≥FlagLevel[BitShift],則應(yīng)該繼續(xù)發(fā)送數(shù)據(jù),此時(shí)應(yīng)將CntFlagW修改為:

    CntFlagW |= FlagSetV[(Tmp>>(11-BitShift)])<<(11-BitShift)

    其中FlagSetV的定義如下:

    const u8 FlagSetV[] = {0x1F,0x1E,0x1C,0x1C,0x18,0x1A,

    0x18, 0x18,0x10,0x16,0x14,0x14,0x10,0x12,0x10,0x10};

    例如,若CntFlagW=101000X(X表示后面10個(gè)無(wú)關(guān)二進(jìn)制位,以下同),此時(shí)MaskW=0x4000,BitShift=1,Tmp=CntFlagW &0x3fff=001000X,顯然Tmp≥FlagLevel[1]=0x200,應(yīng)該繼續(xù)發(fā)送數(shù)據(jù)且將CntFlagW與FlagSetV[8]<<10=0x4000邏輯或,變成111000X。此處的三個(gè)0是不能置位的,因?yàn)閄的前3位為0時(shí),后面的第1個(gè)0處應(yīng)該停止發(fā)送數(shù)據(jù)。如果CntFlagW= 101001X,也應(yīng)該繼續(xù)發(fā)送數(shù)據(jù)且將CntFlagW與FlagSetV[9] <<10=0x16<<10=0x5800邏輯或,變成111111X。對(duì)于BitShift=1時(shí),僅CntFlagW= 100000X且X的第一個(gè)位為0的情況下Tmp的最大值是0x1FF,才會(huì)停止發(fā)送數(shù)據(jù),此時(shí)從當(dāng)前0標(biāo)志開(kāi)始已經(jīng)有6個(gè)連續(xù)的0標(biāo)志了。對(duì)于BitShift為其它值的情況與此完全類(lèi)似。

    另外,如果連續(xù)的8個(gè)標(biāo)志都是0,則無(wú)需進(jìn)行最內(nèi)層的MaskW移位循環(huán),從而進(jìn)一步提高了速度。改進(jìn)后的更新處理流程如圖4所示。

    圖4 改進(jìn)的OLEDSRAM更新處理流程圖

    3.4優(yōu)化結(jié)果的性能分析

    1) 更新處理改進(jìn)前后的性能比較

    通過(guò)在實(shí)際代碼上對(duì)標(biāo)志位各種組合共32類(lèi)情況的精確測(cè)試分析,在0和1標(biāo)志交替出現(xiàn),較短(5個(gè)以?xún)?nèi))連續(xù)0標(biāo)志和較長(zhǎng)(8個(gè)及以上)連續(xù)0標(biāo)志的情況下,改進(jìn)后都變快。僅在6至14個(gè)連續(xù)0標(biāo)志且非整字節(jié)0標(biāo)志的情況下,改進(jìn)后速度基本沒(méi)變(最慢0.95)。大量連續(xù)0標(biāo)志的情況下,改進(jìn)后速度提升最多,最大為8.704倍。

    2) 優(yōu)化前后顯示字符的性能比較

    優(yōu)化前,顯示一個(gè)字符設(shè)置像素的指令數(shù)量為26 496條;優(yōu)化后設(shè)置像素函數(shù)僅30條指令,顯示一個(gè)字符設(shè)置像素的指令數(shù)量為30×128=3840,而更新處理(按最多的24字節(jié)算)則需要1330(全0標(biāo)志)+ 666×1(送24字節(jié))+252(設(shè)置3次地址)-12×1(減去0標(biāo)志已含)=2236,共6076,速度提高了4.36倍。同理,連續(xù)顯示N個(gè)字符再更新的速度比如表1所示。

    表1 連續(xù)顯示N個(gè)字符再更新的速度比

    可見(jiàn),一次更新處理前顯示的字符越多,優(yōu)化方案的速度提高越大。如果考慮到實(shí)際應(yīng)用中顯示區(qū)域重疊的情況,本文方案的優(yōu)勢(shì)就更大了。

    3) 可優(yōu)化的其它處理函數(shù)和使用注意事項(xiàng)

    (1) 其他可以?xún)?yōu)化的函數(shù)

    模板中的繪制函數(shù)LCD_L0_DrawHLine()、LCD_L0_Draw VLine()和LCD_L0_FillRect()也可以進(jìn)行類(lèi)似的優(yōu)化。另外,由于經(jīng)常會(huì)對(duì)全屏進(jìn)行無(wú)條件更新,特編制一個(gè)將OledRamMap[]無(wú)條件傳送到OLEDSRAM的函數(shù),其執(zhí)行速度分別是上面改進(jìn)前后更新處理代碼的1.497和1.596倍。

    (2) 關(guān)于顯示顏色

    在使用顏色設(shè)置函數(shù)GUI_SetColor()和GUI_ SetBkColor()時(shí)需要特別注意。雖然單色OLED僅需0和1兩種顏色,但uC/GUI系統(tǒng)的顏色仍然是由紅r、綠g和藍(lán)b三個(gè)分量構(gòu)成的U32類(lèi)型(即r×65536+g×256+b),要想將顏色設(shè)置為1,必須保證r+g+b≥(255×3/2)=383。如GUI_SetColor(0x80ff)將前景色設(shè)置為1,而GUI_SetColor(0x7fff)則將前景色設(shè)置為0。

    4 結(jié) 語(yǔ)

    本文給出的處理方法已在實(shí)際硬件上進(jìn)行了完整的測(cè)試和驗(yàn)證,因移植uC/GUI而增加的代碼為7754 B、點(diǎn)陣數(shù)據(jù)3374 B、RAM空間1488 B(含SRAM映像1024 B和標(biāo)志128 B,實(shí)際uC/GUI使用的空間為336 B)。而不用uC/GUI實(shí)現(xiàn)的僅有字符(且只能在整頁(yè)地址行上)顯示的代碼,其長(zhǎng)度是:代碼2040 B、點(diǎn)陣數(shù)據(jù)3376 B、RAM空間16 B。相比之下,具有強(qiáng)大功能和易用、易擴(kuò)展性的uC/GUI的確是短小精干,具有很大的優(yōu)勢(shì)。此外本文所述的方法同樣適用于彩色OLED,而其中的快速判決思想則可應(yīng)用到其它類(lèi)似的軟件設(shè)計(jì)中。

    [1] 石億,黃輝先,趙娟,等.uC/OS-Ⅱ與uC/GUI在Cortex-M3上的移植研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2012,28(9):159-161.

    [2] 葛欣,孟凡榮.使用uC/GUI開(kāi)發(fā)圖形用戶(hù)界面[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(1):253-255.

    [3] 李向陽(yáng),曾旖,奚大順.在uC/GUI中實(shí)現(xiàn)漢字顯示[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005(5):76-77.

    [4] 葛欣,孟凡榮.移植uC/GUI應(yīng)用程序時(shí)有關(guān)LCD配置的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(4):1006-1008.

    [5] 劉飛.OLED照明技術(shù)及應(yīng)用進(jìn)展[J].照明工程學(xué)報(bào),2014,25(3):93-97.

    [6] 劉勇.基于MSP430F149的OLED顯示系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)與軟件工程,2013(21):177-179.

    [7] Solomon Systech Limited.SSD1303用戶(hù)手冊(cè)[EB/OL].2006.6,V2.4. http://wenku.baidu.com/view/6aa1891aff00bed5b9f31d7f.html.

    [8] Micrium.uC-GUI 5-26 user manual.pdf[EB/OL]. 2014.12,V5.26. https://doc.micrium.com/download/attachments/10753198.

    RESEARCH ON TRANSPLANT AND OPTIMISATION OF OLED DISPLAY IMPLEMENTED WITH uC/GUI

    Hu PingpingWang Jingjie

    (SchoolofAutomation,BeijingInformationScienceandTechnologyUniversity,Beijing100192,China)

    To expand the functions of OLED display and processing in STM32 system and to improve processing efficiency, we presented the transplant approach for OLED minimum display system implemented with uC/GUI. According to the features of OLED monitor we proposed new program structure, designed the fast discrimination algorithm, and optimised the key codes. The efficient OLED display and processing under uC/GUI is then implemented. It is proved by actual test data analysis that the designed algorithm decreases the complexity of processing and doubles the display and processing speed as well.

    uC/GUIOLEDTransplantAlgorithm optimisation

    2015-07-31。北京市重點(diǎn)學(xué)科項(xiàng)目(5111523302)。胡平平,副教授,主研領(lǐng)域:信號(hào)處理,智能儀器。王晶杰,副教授。

    TP311.54

    A

    10.3969/j.issn.1000-386x.2016.10.057

    猜你喜歡
    發(fā)送數(shù)據(jù)字節(jié)代碼
    移動(dòng)自組網(wǎng)中MAC層協(xié)議研究
    No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
    No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    基于馬爾科夫鏈的LoRaWAN網(wǎng)絡(luò)節(jié)點(diǎn)性能分析
    帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
    簡(jiǎn)談MC7字節(jié)碼
    婷婷色av中文字幕| 国产成人免费观看mmmm| 伊人亚洲综合成人网| 90打野战视频偷拍视频| 欧美激情极品国产一区二区三区 | 视频区图区小说| 亚洲色图 男人天堂 中文字幕 | 精品第一国产精品| 亚洲 欧美一区二区三区| 黄色怎么调成土黄色| 18禁在线无遮挡免费观看视频| 亚洲精品成人av观看孕妇| 男女无遮挡免费网站观看| 免费av不卡在线播放| 波多野结衣一区麻豆| 黑人猛操日本美女一级片| 日韩免费高清中文字幕av| 自线自在国产av| 不卡视频在线观看欧美| 中文字幕人妻熟女乱码| 在线观看免费高清a一片| 性色avwww在线观看| 国产精品国产三级国产专区5o| 午夜免费观看性视频| 肉色欧美久久久久久久蜜桃| 国产精品秋霞免费鲁丝片| 亚洲av电影在线观看一区二区三区| 熟女人妻精品中文字幕| 精品一区二区三卡| 欧美精品一区二区大全| 欧美精品av麻豆av| 在线观看www视频免费| 热99久久久久精品小说推荐| 两性夫妻黄色片 | 免费少妇av软件| 国产av精品麻豆| 国产精品秋霞免费鲁丝片| 少妇猛男粗大的猛烈进出视频| 丝袜在线中文字幕| 成人免费观看视频高清| 久久久久精品久久久久真实原创| 国产免费一区二区三区四区乱码| 久久久a久久爽久久v久久| 99国产综合亚洲精品| 免费播放大片免费观看视频在线观看| 美女主播在线视频| 韩国高清视频一区二区三区| 2021少妇久久久久久久久久久| 欧美日韩国产mv在线观看视频| 夜夜骑夜夜射夜夜干| 韩国av在线不卡| 国产无遮挡羞羞视频在线观看| 十八禁高潮呻吟视频| 天天影视国产精品| 国产色婷婷99| 久久久欧美国产精品| 日韩在线高清观看一区二区三区| 亚洲在久久综合| 成年人免费黄色播放视频| 国产av码专区亚洲av| 一级,二级,三级黄色视频| 国产 一区精品| 桃花免费在线播放| 亚洲内射少妇av| 制服人妻中文乱码| 国产免费视频播放在线视频| 国内精品宾馆在线| 亚洲成人一二三区av| 国产色爽女视频免费观看| 97超碰精品成人国产| 免费人妻精品一区二区三区视频| 免费观看性生交大片5| 丝袜在线中文字幕| 岛国毛片在线播放| 美女国产视频在线观看| 久久久久精品性色| 男人添女人高潮全过程视频| 免费高清在线观看视频在线观看| 亚洲欧美日韩卡通动漫| 高清在线视频一区二区三区| 精品国产露脸久久av麻豆| 18禁裸乳无遮挡动漫免费视频| 日韩免费高清中文字幕av| 在线观看人妻少妇| 久久亚洲国产成人精品v| 纵有疾风起免费观看全集完整版| 美女国产视频在线观看| 美女xxoo啪啪120秒动态图| 国产69精品久久久久777片| 欧美人与善性xxx| 最黄视频免费看| 中文字幕av电影在线播放| 久久久久久久国产电影| 天堂中文最新版在线下载| 亚洲精品色激情综合| 老司机亚洲免费影院| 精品一品国产午夜福利视频| 街头女战士在线观看网站| 人人妻人人添人人爽欧美一区卜| 久久精品国产a三级三级三级| 久久久久久久久久人人人人人人| 国产精品国产三级国产av玫瑰| 一本大道久久a久久精品| 午夜影院在线不卡| 国产精品国产三级专区第一集| 精品第一国产精品| 亚洲av在线观看美女高潮| 黑丝袜美女国产一区| 最近最新中文字幕免费大全7| 中文字幕精品免费在线观看视频 | 两性夫妻黄色片 | 男男h啪啪无遮挡| 交换朋友夫妻互换小说| av播播在线观看一区| 女人久久www免费人成看片| 美女中出高潮动态图| 亚洲欧美成人精品一区二区| 尾随美女入室| 国产一区二区激情短视频 | 99九九在线精品视频| 9191精品国产免费久久| 曰老女人黄片| 国产精品久久久久久精品古装| 亚洲国产看品久久| 国产成人精品福利久久| 欧美xxⅹ黑人| 久久久亚洲精品成人影院| 日本vs欧美在线观看视频| 大码成人一级视频| 亚洲,一卡二卡三卡| 精品国产国语对白av| 欧美日韩av久久| 国产高清三级在线| videosex国产| 国产亚洲欧美精品永久| 国产一级毛片在线| 天堂中文最新版在线下载| 男女边吃奶边做爰视频| 超碰97精品在线观看| 巨乳人妻的诱惑在线观看| 国产黄色免费在线视频| 9191精品国产免费久久| 97超碰精品成人国产| 日韩中字成人| 国内精品宾馆在线| 欧美日本中文国产一区发布| 国产国拍精品亚洲av在线观看| 亚洲欧美日韩另类电影网站| 黑丝袜美女国产一区| 亚洲内射少妇av| 热re99久久精品国产66热6| 黄色一级大片看看| 777米奇影视久久| 免费黄色在线免费观看| 国产av精品麻豆| 精品久久国产蜜桃| 免费黄网站久久成人精品| 免费女性裸体啪啪无遮挡网站| 夫妻午夜视频| 黄色 视频免费看| 免费高清在线观看日韩| 午夜久久久在线观看| 激情视频va一区二区三区| 看十八女毛片水多多多| 国产亚洲午夜精品一区二区久久| 香蕉精品网在线| 国产男女超爽视频在线观看| 搡老乐熟女国产| 中文字幕免费在线视频6| 免费观看av网站的网址| 久久久久人妻精品一区果冻| 久久久久国产精品人妻一区二区| 国产在视频线精品| 久久97久久精品| 丝袜在线中文字幕| 国产淫语在线视频| 五月开心婷婷网| 国产成人精品久久久久久| 五月伊人婷婷丁香| 久久午夜综合久久蜜桃| 亚洲高清免费不卡视频| 蜜桃国产av成人99| 巨乳人妻的诱惑在线观看| 国产精品.久久久| 91aial.com中文字幕在线观看| 欧美精品av麻豆av| 美女内射精品一级片tv| 国产精品久久久久久精品古装| 久热这里只有精品99| 香蕉丝袜av| 欧美bdsm另类| 免费大片18禁| 性色av一级| h视频一区二区三区| 欧美精品一区二区免费开放| 国产片特级美女逼逼视频| 久久精品国产亚洲av涩爱| 久久久久久伊人网av| 97精品久久久久久久久久精品| 久久精品人人爽人人爽视色| 夫妻午夜视频| 十八禁高潮呻吟视频| 亚洲精品日韩在线中文字幕| 亚洲四区av| 亚洲精品美女久久久久99蜜臀 | 亚洲国产欧美日韩在线播放| 一级,二级,三级黄色视频| 午夜福利视频精品| 免费在线观看完整版高清| 我的女老师完整版在线观看| 丰满饥渴人妻一区二区三| 成人亚洲欧美一区二区av| 亚洲欧洲精品一区二区精品久久久 | 久久99精品国语久久久| 精品国产国语对白av| 国产成人午夜福利电影在线观看| 亚洲国产精品专区欧美| 香蕉精品网在线| 精品福利永久在线观看| 最后的刺客免费高清国语| 蜜桃在线观看..| 久久这里只有精品19| 97人妻天天添夜夜摸| 国产在线免费精品| 国产精品欧美亚洲77777| 自线自在国产av| 亚洲精品日韩在线中文字幕| 一区二区三区乱码不卡18| 另类亚洲欧美激情| 亚洲av男天堂| 久久99热6这里只有精品| 香蕉丝袜av| 天堂8中文在线网| 一级爰片在线观看| 亚洲美女黄色视频免费看| 高清不卡的av网站| 少妇人妻精品综合一区二区| 亚洲内射少妇av| 在线观看美女被高潮喷水网站| 97精品久久久久久久久久精品| 高清在线视频一区二区三区| 香蕉丝袜av| 国产精品三级大全| 久久精品久久久久久久性| 少妇高潮的动态图| 国产一区亚洲一区在线观看| 国产亚洲精品久久久com| 亚洲丝袜综合中文字幕| 欧美日韩视频精品一区| 一级毛片我不卡| 国产精品麻豆人妻色哟哟久久| 中文字幕人妻丝袜制服| 久久久久久久久久久免费av| 少妇人妻久久综合中文| 亚洲综合精品二区| 精品国产一区二区三区四区第35| 美女大奶头黄色视频| 亚洲av电影在线观看一区二区三区| 啦啦啦啦在线视频资源| 捣出白浆h1v1| www.色视频.com| 午夜老司机福利剧场| 免费黄频网站在线观看国产| 边亲边吃奶的免费视频| 国产男人的电影天堂91| 国内精品宾馆在线| 国产一区有黄有色的免费视频| 国产成人精品福利久久| 免费av中文字幕在线| 日韩制服丝袜自拍偷拍| 最近最新中文字幕大全免费视频 | 极品人妻少妇av视频| 亚洲,一卡二卡三卡| 午夜91福利影院| 涩涩av久久男人的天堂| 国产熟女欧美一区二区| 色吧在线观看| 夜夜骑夜夜射夜夜干| 日本欧美视频一区| 母亲3免费完整高清在线观看 | 久久久久久久久久久久大奶| 一本—道久久a久久精品蜜桃钙片| 人人妻人人添人人爽欧美一区卜| 久久久久久久大尺度免费视频| 中国美白少妇内射xxxbb| 只有这里有精品99| 黑人欧美特级aaaaaa片| 乱人伦中国视频| 中文字幕另类日韩欧美亚洲嫩草| 久久久久视频综合| 丰满少妇做爰视频| av黄色大香蕉| 美女大奶头黄色视频| 国国产精品蜜臀av免费| 久久久久国产精品人妻一区二区| 亚洲人成网站在线观看播放| 国产极品天堂在线| 欧美另类一区| 18禁动态无遮挡网站| 国产男女超爽视频在线观看| 我的女老师完整版在线观看| 亚洲欧美中文字幕日韩二区| 久热这里只有精品99| 国产熟女午夜一区二区三区| 9191精品国产免费久久| 日韩视频在线欧美| 日韩中字成人| 欧美 亚洲 国产 日韩一| 在线观看一区二区三区激情| 国产免费一级a男人的天堂| 成人影院久久| av黄色大香蕉| 亚洲精品,欧美精品| 男男h啪啪无遮挡| 国产色爽女视频免费观看| av.在线天堂| 国产激情久久老熟女| 中文字幕制服av| 99国产综合亚洲精品| 爱豆传媒免费全集在线观看| 国产精品久久久久久精品古装| 国产有黄有色有爽视频| 欧美国产精品一级二级三级| 久久人人97超碰香蕉20202| 插逼视频在线观看| √禁漫天堂资源中文www| 国产在线一区二区三区精| 九九在线视频观看精品| 亚洲内射少妇av| 熟女人妻精品中文字幕| 波野结衣二区三区在线| 色哟哟·www| 国产一级毛片在线| 精品国产一区二区三区久久久樱花| 少妇的丰满在线观看| 亚洲精品成人av观看孕妇| 大香蕉久久网| 亚洲成国产人片在线观看| 一本大道久久a久久精品| 欧美激情 高清一区二区三区| 五月伊人婷婷丁香| 日韩成人av中文字幕在线观看| 精品人妻一区二区三区麻豆| a级毛片在线看网站| 一区二区三区四区激情视频| 久久婷婷青草| 草草在线视频免费看| 成年人午夜在线观看视频| 亚洲精品久久成人aⅴ小说| av网站免费在线观看视频| 精品少妇久久久久久888优播| 一个人免费看片子| 亚洲精品自拍成人| 最后的刺客免费高清国语| 97超碰精品成人国产| 国产精品秋霞免费鲁丝片| 男人爽女人下面视频在线观看| 国产成人午夜福利电影在线观看| 精品一区二区三区四区五区乱码 | 精品国产国语对白av| 男女无遮挡免费网站观看| 国产熟女午夜一区二区三区| 热re99久久国产66热| 久久精品熟女亚洲av麻豆精品| 国产一区二区在线观看日韩| 日韩免费高清中文字幕av| 成人午夜精彩视频在线观看| 欧美日韩精品成人综合77777| 免费日韩欧美在线观看| 欧美激情 高清一区二区三区| 国产国语露脸激情在线看| 热99国产精品久久久久久7| 成年人免费黄色播放视频| 2018国产大陆天天弄谢| 欧美3d第一页| 看免费成人av毛片| 亚洲国产精品一区三区| 午夜福利乱码中文字幕| 2022亚洲国产成人精品| 人妻人人澡人人爽人人| 日韩欧美一区视频在线观看| 69精品国产乱码久久久| 国产片特级美女逼逼视频| 十八禁网站网址无遮挡| 国产精品人妻久久久影院| 妹子高潮喷水视频| 免费观看av网站的网址| 国产精品女同一区二区软件| 伊人久久国产一区二区| 亚洲精品乱码久久久久久按摩| 我要看黄色一级片免费的| 国产白丝娇喘喷水9色精品| 成人18禁高潮啪啪吃奶动态图| 精品人妻在线不人妻| 99热国产这里只有精品6| 一本大道久久a久久精品| 国产探花极品一区二区| 日韩制服骚丝袜av| 狂野欧美激情性bbbbbb| 免费av不卡在线播放| www.熟女人妻精品国产 | 18在线观看网站| 高清欧美精品videossex| 久久亚洲国产成人精品v| 日日撸夜夜添| 亚洲欧美日韩另类电影网站| 熟女电影av网| 综合色丁香网| 精品国产一区二区三区四区第35| 如日韩欧美国产精品一区二区三区| 欧美 亚洲 国产 日韩一| 18+在线观看网站| 久久久国产一区二区| 国产精品久久久av美女十八| 免费在线观看黄色视频的| 大香蕉97超碰在线| 秋霞伦理黄片| 婷婷色综合大香蕉| a级毛色黄片| 成人毛片a级毛片在线播放| 久久 成人 亚洲| 考比视频在线观看| 日韩av免费高清视频| 亚洲美女搞黄在线观看| 蜜臀久久99精品久久宅男| 免费日韩欧美在线观看| 久久久久久久久久人人人人人人| 久久青草综合色| 18禁国产床啪视频网站| 亚洲综合色网址| 丁香六月天网| 久久久久精品久久久久真实原创| 久久久久久人人人人人| 中文欧美无线码| 建设人人有责人人尽责人人享有的| 国产福利在线免费观看视频| av电影中文网址| 五月开心婷婷网| 一区二区三区四区激情视频| 欧美激情 高清一区二区三区| 午夜激情久久久久久久| 黄色 视频免费看| 亚洲国产精品一区二区三区在线| 91精品伊人久久大香线蕉| a级片在线免费高清观看视频| 一级片'在线观看视频| 国产在线一区二区三区精| 亚洲精品,欧美精品| a 毛片基地| 中文字幕另类日韩欧美亚洲嫩草| av卡一久久| 久久久久久久久久久免费av| 国产在线一区二区三区精| 久久国产精品大桥未久av| 男男h啪啪无遮挡| 亚洲在久久综合| 欧美另类一区| 成人综合一区亚洲| 国产麻豆69| 女的被弄到高潮叫床怎么办| 69精品国产乱码久久久| 韩国av在线不卡| 免费观看在线日韩| 中文字幕av电影在线播放| 18禁国产床啪视频网站| 亚洲综合色网址| 日本91视频免费播放| 日韩中字成人| 免费日韩欧美在线观看| 女性生殖器流出的白浆| xxx大片免费视频| av线在线观看网站| 大码成人一级视频| 久久av网站| 大片免费播放器 马上看| 国产成人精品久久久久久| 韩国av在线不卡| 最新中文字幕久久久久| av在线老鸭窝| 久久午夜综合久久蜜桃| 国产成人精品在线电影| a 毛片基地| 欧美日韩视频精品一区| 午夜福利视频在线观看免费| 狂野欧美激情性xxxx在线观看| 国产成人一区二区在线| 国产免费一区二区三区四区乱码| 一级片免费观看大全| 婷婷成人精品国产| 各种免费的搞黄视频| kizo精华| 99九九在线精品视频| 男的添女的下面高潮视频| 999精品在线视频| www.色视频.com| 成年动漫av网址| 日本av手机在线免费观看| 国产有黄有色有爽视频| 国产精品国产三级国产专区5o| 亚洲欧美成人综合另类久久久| 午夜影院在线不卡| 观看美女的网站| 国产有黄有色有爽视频| 青春草国产在线视频| 极品人妻少妇av视频| 精品人妻在线不人妻| 日日爽夜夜爽网站| 亚洲精品aⅴ在线观看| 国产成人欧美| 亚洲av福利一区| 色5月婷婷丁香| 久久午夜福利片| 91午夜精品亚洲一区二区三区| 飞空精品影院首页| 啦啦啦在线观看免费高清www| 欧美人与善性xxx| 一本大道久久a久久精品| 免费高清在线观看视频在线观看| 亚洲少妇的诱惑av| 中国国产av一级| 欧美日韩综合久久久久久| 亚洲精品第二区| 亚洲国产av影院在线观看| 国产av一区二区精品久久| 卡戴珊不雅视频在线播放| 欧美精品一区二区大全| 国产爽快片一区二区三区| 国产男女内射视频| 国产在线免费精品| a 毛片基地| 国产欧美日韩综合在线一区二区| 亚洲三级黄色毛片| 日日摸夜夜添夜夜爱| 在线看a的网站| 亚洲av综合色区一区| 日韩三级伦理在线观看| 精品少妇黑人巨大在线播放| 大香蕉97超碰在线| av免费观看日本| 男人添女人高潮全过程视频| 高清不卡的av网站| 国产精品 国内视频| 久久久久久人妻| 97在线视频观看| 人人妻人人澡人人爽人人夜夜| 最近2019中文字幕mv第一页| 亚洲欧洲国产日韩| 两个人免费观看高清视频| 少妇猛男粗大的猛烈进出视频| 精品人妻偷拍中文字幕| 乱人伦中国视频| av天堂久久9| 看十八女毛片水多多多| 亚洲精品成人av观看孕妇| 99热网站在线观看| 深夜精品福利| 久久久久网色| 中文欧美无线码| 国产xxxxx性猛交| 中文字幕av电影在线播放| 久久久久久久久久久久大奶| 久久精品国产a三级三级三级| 亚洲精品国产色婷婷电影| 精品国产一区二区三区久久久樱花| 青春草国产在线视频| 日韩三级伦理在线观看| 免费大片黄手机在线观看| 九色亚洲精品在线播放| 亚洲国产av新网站| 亚洲国产精品999| 国产精品嫩草影院av在线观看| 欧美日韩精品成人综合77777| 秋霞伦理黄片| 午夜91福利影院| 亚洲美女黄色视频免费看| 精品一区二区三卡| 男男h啪啪无遮挡| 免费高清在线观看视频在线观看| 国产一区有黄有色的免费视频| av在线播放精品| 日韩人妻精品一区2区三区| 亚洲精品一区蜜桃| 黄片播放在线免费| 高清黄色对白视频在线免费看| 国产爽快片一区二区三区| 国产高清国产精品国产三级| 精品熟女少妇av免费看| 久久久久久久国产电影| av天堂久久9| 永久网站在线| 久久人人97超碰香蕉20202| 制服人妻中文乱码| 在线看a的网站| 韩国精品一区二区三区 | 老女人水多毛片| 看免费av毛片| 亚洲精品乱码久久久久久按摩| 日本91视频免费播放| 久久99热这里只频精品6学生| 永久网站在线| 日韩制服丝袜自拍偷拍| 亚洲情色 制服丝袜| 国产免费一级a男人的天堂| 老熟女久久久| 国产成人av激情在线播放| av网站免费在线观看视频| 精品亚洲成a人片在线观看| 久久99热这里只频精品6学生| 天天躁夜夜躁狠狠久久av| 久久久国产欧美日韩av| 亚洲精品av麻豆狂野| 国产精品国产三级专区第一集| 国产xxxxx性猛交| 精品卡一卡二卡四卡免费| 久久99蜜桃精品久久|