1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

    <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
    <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
  2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
    現在位置:范文先生網>理工論文>電子通信論文>液晶顯示在嵌入式系統中的應用

    液晶顯示在嵌入式系統中的應用

    時間:2023-02-20 23:47:02 電子通信論文 我要投稿

    液晶顯示在嵌入式系統中的應用

    摘要:介紹了液晶顯示在嵌入系統中的應用編程,給出了在液晶顯示與系統接口的應用層編程中,采用環形結構算法來達到快速、簡單地進行漢字代碼的編碼以及漢字的分頁和分行顯示的顯示應用程序。

        關鍵詞:嵌入式系統;液晶顯示;環形結構算法;漢字顯示

    1 引言

    在嵌入系統中,一個良好的人機界面必須提供友善的菜單,同時應能實現漢字和圖形顯示,并應提供英文、數字輸入和漢字輸入功能。筆者采用香港精電公司的128×64點陣顯示模塊在以MPC860作為主CPU并以Nuclus PLUS為嵌入式操作系統的系統中進行液晶顯示?取得了較為滿意的效果。圖1所示為其結構框圖。

    香港精電公司的128×64點陣模塊內部自帶液晶圖形顯示控制芯片T6963,其中C/D腳用于控制字與數據,RD和WR分別為讀、寫使能端。當WR為低時,C/D為高為寫命令,C/D為低為寫數據;而當RD為低時,C/D為高為讀狀態?C/D為低為讀數據。另外,CE為器件使能引腳,D0~D7為數據和地址復用總線引腳。
    (范文先生網m.baimashangsha.com收集整理)
    2 應用編程

    利用MPC860嵌入式系統的快速性,可將顯示應用程序分為兩層,其中底層為硬件接口層,上層為應用層。硬件接口層主要是顯示液晶模塊自帶的ASCII函數和顯示漢字代碼函數。由于硬件各不相同,在此不作具體介紹。而上層應用層的主要功能是提供友善的菜單,同時實現漢字和圖形顯示,并提供英文、數字輸入和漢字輸入功能。由于硬件接口層的隔離作用,不同的系統具有一定的通用性,以下重點介紹應用層編程中的漢字代碼編碼方法和顯示編程的實現這兩部分。

    2.1 漢字代碼編碼

    一般西文為8×8點陣,因而顯示一個西文字需要8個字節?而每個漢字占4個西文字體,因此顯示一個漢字需要32個字節。漢字字庫表為一張數據表? 每個漢字在數據表中,通常由32個字節組成一個點陣圖形。由于ASCII碼編碼是由0X00-0X7F表示,因此?每個漢字可由兩個字節0Xxx和0Xyy來表示,每個字節為0X80~0XFF(區別于ASCII代碼)。第一漢字定義為0X80 0X80,依此類推直至0X80 0XFF ,0X81 0X80,……,……,0XFF 0XFF ,總計可以定義128×128=16384個漢字。

    一個漢字代碼表可簡單表示為:

    hz code table?INT?=?

    //漢字“數”的32字節的點陣圖形代碼為?

    0x08?0x49?0x2A?0x08?0xFF?0x19?0x2C?0x4A?

    0x10?0xFE?0x22?0x22?0x14?0x18?0x25?0x42?

    0x40?0x40?0x40?0x84?0xFE?0x08?0x88?0x88?

    0x88?0x90?0x50?0x20?0x50?0x88?0x0E?0x04?

    //漢字“據”的32字節的點陣圖形代碼為?

    0x10?0x13?0x12?0x12?0xFF?0x12?0x16?0x1B?

    0x32?0xD2?0x13?0x15?0x15?0x15?0x59?0x21?

    0x04?0xFE?0x04?0x04?0xFC?0x20?0x24?0xFE?

    0x20?0x24?0xFE?0x04?0x04?0x04?0xFC?0x04,

    }

    2.2 顯示編程

    在系統顯示中,主要的顯示方式有頁處理和行處理兩種。系統可以根據按鍵來顯示某一頁。實際上,頁也是由相應行來顯示的。頁中的行可由按鍵來改變。一個頁能顯示8行ASCII碼或4行漢字代碼,帶有漢字的行一般要占有2個只有ASCII碼的行,而頁可以由任意多行組成。顯示時,通過按鍵可控制能顯示行,并可在行中輸入漢字或ASCII碼。

        在設計中,所有的頁可組成一個環形隊列結構,頁中的行也可組成一個環形隊列結構,其關系如圖2所示。圖3所示是該系統的顯示流程。

    下面給出一個行結構:

    typedef struct lcdLine

    {

    struct lcdLine *previous? //前一行

    struct lcdLine *next? //后一行

    unsigned short lineId? //行特征字

    unsigned char showflag? //是否顯示漢字

    unsigned char start? //顯示行號 ,漢字一

    定是奇數行如 1,3,5,7

    unsigned char lcdseg?16??

    //顯示的代碼如是ASCII碼,0X10顯示0,

    0X3C顯示\ ?漢字為0X80 0X81 顯示漢字“據”

    void ?*flcdLine??struct lcdLine * plcdLine??

    //處理行函數

    };

    由于頁是由行組成的,所以頁結構的定義如下:

    typedef struct lcdPage

    {

    struct lcdLine *firstLine? //該頁中的第一行

    struct lcdPage *previous? //前一頁

    struct lcdPage *next? //后一頁

    unsigned short pageId? //頁特征字

    } lcdPage?

    下面給出的是一個環行隊列函數的程序代碼:

    VOID CSC Place On List?CS NODE **head? CS NODE *new node?

    {

    /* Determine if the list in non-empty. */

    if ?*head?

    {

    /* The list is not empty. Add the new

    node to the end of the list. */

    new node->cs previous=?*head?

    ->cs previous?

    (new node ->cs previous)->cs

    next=new node?

    new node-> cs next =?*head??

    (new node->cs next)->cs previous

    =new node;

    }?

    else

    {

    /* The list is empty? setup the head and

    the new node. */

    ?*head? = new node?

    new node -> cs previous = new node?

    new node -> cs next = new node?

    }

    }

    在建立了上述結構后,便可以得出行隊列和頁隊列的組成方法:

    lcdLine lcdLine?30??

    lcdPage lcdPage?10?; //初始化列

    lcdLine?0?..lcdseg?0?=0x80?

    lcdLine?0?..lcdseg?1?=0x80?

    lcdLine?0?..lcdseg?2?=0x80?

    lcdLine?0?..lcdseg?3?=0xBC?

    lcdLine?0?..lcdseg?4?=0x80?

    lcdLine?0?..lcdseg?5?=0x97?

    lcdLine?0?..lcdseg?6?=0x80?

    lcdLine?0?..lcdseg?7?=0x98?

    lcdLine?0?..lcdseg?8?=0x80?

    lcdLine?0?..lcdseg?9?=0x99?

    lcdLine?0?..lcdseg?10?=0x00?

    lcdLine?0?..lcdseg?11?=0x00?

    lcdLine?0?..lcdseg?12?=0x00?

    lcdLine?0?..lcdseg?13?=0x00?

    lcdLine?0?..lcdseg?14?=0x00?

    lcdLine?0?..lcdseg?15?=0x00?

    lcdLine?0?..start =1? //第二行起

    lcdLine?0?..showflag =1? //漢字

    lcdLine?0?.lineId =1001; //行標識

    ?firstlcdLine 1?=NULL?

    CSC Place On List ?&firstlcdLine 1? &lcdLine?0??? //第一頁中的第一行

    CSC Place On List?&firstlcdLine 1?&lcdLine?1???

    CSC Place On List ?&firstlcdLine 1? &lcdLine?2???

    CSC Place On List ?&firstlcdLine 1? &lcdLine?3???由于四行即可組成一個循環隊列,其中lcdLine?0?指定為第一頁的第一個入口行,FirstlcdLine 1與lcdLine為同一行,lcdPage?0?頁的入口行為firstlcd-Line;lcdPage?0?.firstLine=firstlcdLine 1?lcdPage?0?.pageID =1001,這樣,依據該方法便可以生成任意多的頁。具體方法如下:

    lcdpage 1=NULL?

    lcdPage Place On List?&lcdpage 1? &lcdpage?0???

    lcdPage Place On List?&lcdpage 1? &lcdpage?1???

    lcdPage Place On List?&lcdpage 1? &lcdpage?2???

    lcdPage Place On List?&lcdpage 1? &lcdpage?3???

    lcdPage Place On List?&lcdpage 1? &lcdpage?4???

    lcdPage Place On List?&lcdpage 1? &lcdpage?5???

    這樣,用五頁即可組成一個循環隊列,其中lcd-page_1與lcdpage?0?為同一頁。

    對于行的顯示,最基礎的行顯示方法如下:

    void disp lcd Line?lcdMenu *lcdm?unsigned char start? //START為行號

    {

    unsigned char i?loop?

    unsigned char zt?zt1?

    unsigned char sign?

    unsigned char offset?

    unsigned char offlen?

    unsigned char *phz?

    unsigned char z0?

    phz=?unsigned char *?&hz code table?

    /漢字代碼初地址

    offset=start*16? //顯示的位置 行號 *列號

    offlen =0?

    loop=0?

    z0=0x00?

    sign=lcdm->showflag? //是否為漢字

    while?loop<16? //在同一行中從0列到15列

    {

    zt=lcdm->lcdseg?loop?? //取第一個代碼

    if?zt<=0x7F? /小于0X80為ASCII代碼

    {

    disp self ascii?&zt?1?offset??

    //在本行,顯示自有的ASCII代碼

    if?sign==1?

    {

    disp self ascii?&z0?1?offset 16??

    //在上一行,同一列的位置,不顯示任何代碼

    }

    offset=offset +1?

    offlen=offlen +1?

    loop++?

    }

    else

    {

    loop++?

    zt1=lcdm->lcdseg?loop??

    //取第二個代碼

    disp chinese??phz+?zt-0x80? *4096 +?zt1-0x80? *32??1?offset ?? //顯示漢字

    offset=offset + 2 ?

    offlen=offlen +2?

    loop++?

    }

    }

    }

    3 結束語

    由于本系統在顯示時采用了環形結構算法,因此,可以達到快速、簡單的漢字顯示效果。


    【液晶顯示在嵌入式系統中的應用】相關文章:

    液晶顯示器在嵌入式系統中的應用08-06

    UML 在嵌入式系統設計中的應用04-12

    Java技術在嵌入式系統中的應用08-06

    Jini在分布式嵌入式系統中的應用08-06

    1553B總線在嵌入式系統中的應用08-06

    單片機嵌入式系統在遠程電網監測系統中的應用08-06

    基于HMM的語音識別技術在嵌入式系統中的應用08-06

    液晶顯示模塊DMF-50081在單片機系統中的應用08-06

    聲效芯片CS4235在DSP的嵌入式系統中的應用08-06

    国产福利萌白酱精品tv一区_日韩亚洲中字无码一区二区三区_亚洲欧洲高清无码在线_全黄无码免费一级毛片
    1. <code id="ya7qu"><span id="ya7qu"><label id="ya7qu"></label></span></code>

      <b id="ya7qu"><bdo id="ya7qu"></bdo></b>
      <wbr id="ya7qu"><optgroup id="ya7qu"><strike id="ya7qu"></strike></optgroup></wbr>
    2. <u id="ya7qu"><bdo id="ya7qu"></bdo></u>
      亚洲激情在线中文 | 又色又爽视频香蕉网络 | 亚洲不卡AV中文 | 亚洲女人自熨在线视频 | 亚洲精品综合精品自拍 | 久久国产免费福利永久 |