日本老熟妇一二三区-麻豆视频精品一区-人妻中文字幕xx-一区二区美女少妇-日本成人一级在线

  • LCD顯示模塊并行接口驅(qū)動程序設(shè)計(2)———LCD顯示模塊并行接口驅(qū)動程序設(shè)計(2)

    2 程序設(shè)計、移植和剪裁方法
    2.1 LCD驅(qū)動器I/O操作基本程序
        對驅(qū)動器控制是完成液晶產(chǎn)品開發(fā)的第一步也是關(guān)鍵部分,下面的程序是采用I/O模擬8031時序方法完成對控制器進(jìn)行控制,通過這個方法有助于理解對控制器控制的操作步驟。圖1為C8051F340同驅(qū)動器的連接方法,本文所有例程編寫都遵循這種連接方式。操作基本程序清單如下:

     


        上述的dlcd,clcd1,clcd2,clcd3函數(shù)中,如果把控制器的片選信號接到低電平,cs這個管腳在程序可以略去;假如P4端口和其他端口相連接,cs管腳要通過I/O口控制驅(qū)動器是否選通。注意函數(shù)中的延遲函數(shù):數(shù)據(jù)出現(xiàn)在端口上要經(jīng)過T6的時間在wr的上升沿把數(shù)據(jù)寫入控制器。
    2.2 LCD高級程序設(shè)計
        函數(shù)draw_point功能:把有顏色的點在LCD指定位置顯示出來。函數(shù)參數(shù)意義(參考圖3):
        word_which_display:設(shè)置顯示頁;
        word_which_write:設(shè)置操作頁;
        word_x,:新坐標(biāo)O'在原坐標(biāo)O下橫坐標(biāo);
        word_y:新坐標(biāo)O'在原坐標(biāo)O下縱坐標(biāo);
        line_x:點G在坐標(biāo)系O'下橫坐標(biāo)
        line_y:點G在坐標(biāo)系O'下縱坐標(biāo)
        yanse1,yanse2:連續(xù)寫入的8位像素字節(jié)
        說明:顯示頁的設(shè)置是為了顯示兩頁緩存中的一頁數(shù)據(jù)到LCD上,操作頁的設(shè)置是為了把數(shù)據(jù)寫入到兩頁緩存當(dāng)中的一頁。如果顯示頁為第1頁,操作頁為第0頁,此時LCD顯示的是第一頁的緩存的數(shù)據(jù),此時把數(shù)據(jù)寫入到第0頁緩存中,寫入的數(shù)據(jù)在LCD上不被顯示;如果顯示頁為第0頁,操作頁為第0頁,此時LCD顯示的是第0頁的緩存的數(shù)據(jù),此時把數(shù)據(jù)寫入到第0頁緩存中,寫入的數(shù)據(jù)可以在LCD上實時的顯示出來。程序依據(jù)圖3中對坐標(biāo)軸設(shè)計方法和LCD區(qū)域劃分手段判斷點G在新坐標(biāo)系O'中坐標(biāo)值。在程序中一定要注意每寫兩個字節(jié)顯示數(shù)據(jù)列地址(列坐標(biāo))自動加1。為此設(shè)計如下函數(shù):


        這個函數(shù)功能比較多樣化,是用新坐標(biāo)系O'來確認(rèn)點G的坐標(biāo)。執(zhí)行函數(shù)draw_point(0,0,511,255,8,9,0xf8,0x07)結(jié)果為,當(dāng)前顯示第0頁,點為紅色且被置到第0頁。新坐標(biāo)O'在原坐標(biāo)O的(511,255)處,點G在坐標(biāo)系O'的位置為(8,9),也就是被置到圖3中的F區(qū);如果執(zhí)行函數(shù)draw_point(0,0,0,0,、520,364,0xf8,0x07),那么此點和上一個點將重合,此時坐標(biāo)系O’和原坐標(biāo)O重合。

     函數(shù)display_word功能:把字體寫入到控制器緩沖區(qū)指定位置中,并控制字體是否顯示。函數(shù)參數(shù)意義:
        word:顯示字體字庫的首地址;
        word_line,word_row:字庫行數(shù)和列數(shù)(列數(shù)等于字模的列數(shù)/8);
        word1,word2:字體顯示的顏色的16進(jìn)制表示;
        backdrop1,backdrop2:字體和背景的顏色其他參數(shù)含義同clear_region。函數(shù)原型和參數(shù)如下:

     


    2.3 其他主要函數(shù)編寫說明
        清屏程序:可以通過draw_point函數(shù)編寫得到,建議清屏函數(shù)具有清理任何緩存頁中的數(shù)據(jù)并控制數(shù)據(jù)顯示的功能。如函數(shù)及參數(shù)列表如下:
    void clear_region(c har word_which_display,c har
        word_which_write,int word_x,int word_y,
        unsigned int word_row,unsigned int
        word_line,unsigned c har with_color)
    在這個函數(shù)中,參數(shù)word_row:清理的矩形區(qū)域距離word_x的長度;參數(shù)word_line:清理的矩形區(qū)域距離word_y的長度;參數(shù)with color:清理區(qū)域的顏色。此函數(shù)所清理的是矩形區(qū)域。函數(shù)改寫可以采用連續(xù)置點的方法,通過draw_piont函數(shù)連續(xù)的向清屏區(qū)域內(nèi)置入一定顏色的點。由于篇幅所限,本文不給出程序清單。
        畫線程序:把LCD上任意兩點連接成直線。設(shè)LCD上兩點坐標(biāo)M(x1,y1)和N(x2,y2),得斜率由于x方向地增量△x=1,則△y=k。通過循環(huán)置點就可以得到直線。
        本文所用的函數(shù)如下:
    void draw_line(c har word_which_display, c har word_which_write,unsigned int x1,unsigned int y1,int x2,int y2,c har colour)
    參數(shù)功能:x1,y1:LCD上任意一點M的坐標(biāo)
        x2,y2:LCD上任意一點N的坐標(biāo)
        colour:連線的顏色
        同種LCD驅(qū)動器可應(yīng)用在不同的MCU上,如果采用I/O模擬時序的方法,需改動管腳設(shè)置并注意讀寫的時間要求。如本文的程序在8051單片機(jī)上運(yùn)行時候基本程序中的不需要加延時,在C8051F單片機(jī)(晶振48MHz)上需要加延時。另外MCU和LCD驅(qū)動器必須共地處理,否則可能會產(chǎn)生不必要的干擾。
        對驅(qū)動器的控制還可以采用直接訪問外部存儲器的方法,這個時候相當(dāng)于向固定的寄存器寫數(shù)據(jù)和控制字,接口程序如下:

       
        如果向外部存儲器寫數(shù)據(jù),采用dlcd=0x04的形式,它的含義是把數(shù)0x04存儲到外部地址為0x0000中。使用此方法要注意MCU的EMIF的接口讀寫時序。有一些控制器的功能更豐富一些,如clcd1=0x81,驅(qū)動器會執(zhí)行0x81所代表的功能。本文使用的是C8051F340單片機(jī),這款單片機(jī)有自帶的EMIF接口,在使用之前需要對其進(jìn)行配置:
        P1SKIP=0x80;//跳過WR和RD引腳
        XBR1=0x41;//Enable crossbar and enable
    //EMIF工作在地址/數(shù)據(jù)復(fù)用方式
    //只用外部存儲器
    //ALE高和ALE低脈沖寬度=4個SYSCLK周期EMI0CF=0x0c;
    //地址建立時間=0個SYSCLK周期。
    ///WR和/RD脈沖寬度=2個SYSCLK周期。
    //地址保持時間=1個SYSCLK周期
        EMI0TC=0X05;


    3 使用舉例及顯示效果
        如圖4是使用本文程序設(shè)計的飛機(jī)操縱性能檢測評估儀操作使用界面,界面中左邊的箭頭可以通過按鍵控制下上下移動,并進(jìn)入到相應(yīng)的操作界面。

        首先要了解,LCD顯示圖像的實質(zhì)是在屏幕上置入一定顏色的點,曲線y=f(x)也基于這個原理產(chǎn)生,當(dāng)x軸連續(xù)時且函數(shù)值y幅度很小的時候在LCD上顯示的圖形是連續(xù)的,當(dāng)幅度很大時會產(chǎn)生幅度離散的圖形,如果可以把兩個離散的點用一條線連上,那么離散圖形可以變得連續(xù),圖4中有正弦函數(shù)顯示的事例。程序?qū)嵗缦拢?br /> for(i=0;i<640;i++)
        {y1=200*sin(0.05*i);y2=200*sin(0.05*(i+1));
        draw_line(0,0,0,240,y1,y1-y2,i,’g’);}


    4 結(jié)束語
        上述控制程序是當(dāng)今通用的使用方法??刂乞?qū)動器的函數(shù)如顯示字體、清屏幕和置點等都要人為編寫,但這更有助于對LCD顯示的過程的理解?,F(xiàn)如今市場上LCD驅(qū)動器的品種多,且有很大一部分控制起來要優(yōu)于本文所使用的驅(qū)動器,本文的目的旨在給予大家一種通用有效的方法,希望在以后遇到LCD驅(qū)動器的時候能快速入門,縮短開發(fā)周期,節(jié)約成

     
     
    網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系我們  |  廣告服務(wù)  |  版權(quán)隱私  |  友情鏈接  |  站點導(dǎo)航