《電子技術應用》
您所在的位置:首頁 > 顯示光電 > 設計應用 > LCD顯示模塊并行接口驅動程序設計
LCD顯示模塊并行接口驅動程序設計
張芝賢,王明賀, 張正吉, 邱偉華, 劉筠筠
摘要: 本文介紹一種LCD圖形液晶驅動器的使用方法以及程序裁剪、移植和擴展,實現在任意坐標上顯示圖形和漢字。這款驅動器不帶字庫,對需要顯示的漢字和字母通過字模產生器產生數據, 通過程序設計把字體在LCD通過描點描述出來。
Abstract:
Key words :

0 引 言
人們在日常生活中,LCD占有很大的地位。人們使用的電腦、手機、車載系統、各種測量設備、顯示設備等等,都把LCD作為重要的人機接口,它把使用者需要 的信息及時反應出來。目前市場上存在著各種LCD和相對應的驅動模塊,驅動模塊所帶的驅動程序都是針對本身模塊開發的,各種驅動程序之間通用性差,而且在 不同的平臺上很難移植。每換一種LCD產品,都要根據它的驅動模塊重寫驅動程序。這樣產品開發資源浪費,開發周期長,成本增加。本文將介紹一種LCD圖形 液晶驅動器的使用方法以及程序裁剪、移植和擴展,實現在任意坐標上顯示圖形和漢字。這款驅動器不帶字庫,對需要顯示的漢字和字母通過字模產生器產生數據, 通過程序設計把字體在LCD通過描點描述出來(本文所用的字模采用陽碼)。


1 典型圖形LCD驅動器NHC_313簡介
1.1 驅動器簡介
NHC_313驅動器驅動最大點陣數為640(列)×480(行),顯示顏色為65536色(16位色)。本文所用的LCD為SHARP公司產品,產品型 號為LQ104V1DG52。NHC_313有8位復用并行接口一數據總線和控制總線。MCU可以通過總線對LCD進行操作,隨時寫顯示存儲器,而不影響 顯示效果,即顯示不會出現“雪花”。NHC_313內部有兩頁顯示緩存,使用人員可以讓一頁緩存的數據在LCD上顯示出來,同時可以對第二頁的緩存進行操 作。此驅動器與微處理器接口連接簡單,接口的讀、寫操作兼容8031總線時序。這款驅動器只是單純的圖形圖像顯示,沒有內置字庫、圖形庫。如果設計人員要 顯示漢字,必須要把需要的漢字用字模生成器產生字模的16進制文件,然后通過程序控制把需要的字體逐一描到LCD上。驅動器的控制引腳如下:
WR:數據寫入,低電平有效
CS:片選端,低電平有效
A0:地址信號線0
A1:地址信號線1
DB0~DB7:數據總線
對NHC_313讀寫的時候采用8031時序,如圖1為NHC_313接口電路8031時序圖,在表1中列出了接口的時序特征參數。

    當驅動器與8051等I/O口讀寫速度不是很快的MCU連接時,I/O的特性其本上可以滿足表1的時序特征參數,圖2給出的是MCU和驅動器無縫連接的接 口電路,這種方法是采用IO模擬時序的時候用到的引腳(不止局限于圖中列出的引腳),本文建議采用I/O口模擬時序的方法控制驅動器。要注意的是如果 I/O的讀寫速度過快則不能滿足接口時序特性參數。例如采用Silab公司的C8051F340作為NHC_313的MCU,由于C8051F340的內 部晶振為48MHz,I/O讀寫速度不能很好滿足時序特性(寫周期不能滿足),所以在程序設汁中會看到有延時程序。而Atmel 8051系列單片機I/O可以滿足表1的時序參數特性,不需要加入延時程序。

    表2為驅動器命令,由于顯示的像素點數為640(列)×480(行),對于8位的I/O不能一次的把行和列的信息完全表示出來,由此設置了行列的高低地址(8位地址線只能表示0~255的地址信息)。

    對驅動器進行寫操作要遵循以下規律:
a)設定顯示頁和操作頁地址(A1=A0=1,CS=0,WR=0)

    D1-D0設定列地址高字節;D2設定行地址高字節。開機時先執行此操作再執行其他操作。
b)寫行地址低字節。(A1=0,A0=1)
c)寫列地址低字節字節。(A1=1,A0=0)
d)連續寫兩次8位字節對應一個像素點顏色(A1=0,A0=0)。第一個字節:

    R4、R3、R2、R1、R0表示紅色灰度;G5、G4、G3、G2、G1、G0表示綠色灰度;B4、B3、B2、B1、B0表示藍色灰度。如在同一行內 連續寫數據不用每次重寫行坐標和列坐標,每一次“寫數據”操作后列地址自動加1,即每寫兩個字節顯示數據列地址自動加1。
1.2 關于液晶屏的簡單說明
本文中的液晶顯示器顯示的顏色數量為65536種一16位色,對一個像素點所要顯示的顏色需要用兩個字節的數據來表示。需要注意的是,LCD的坐標系同數學上的坐標系有所不同,LCD的坐標系如圖3所示。

    坐標系上的點和LCD的像素點是一一對應的,每一個像素點用坐標系的橫縱坐標唯一標識。由于八位的數據線只能表示0~255的范圍,所以把LCD分割成了 圖3中的幾個區域,這些區域保證了橫縱坐標范圍在0~255之內,通過設置行列高低地址選擇所要顯示的區域。每個區域獨立為一個小的坐標系,如圖3中的F 區域所示,區域中的點用這個小坐標系的坐標唯一表示。例如在選擇LCD上點(630,420),通過整體坐標軸把這個點定位到F區,通過簡單的計算得知此 點在F區域坐標下的新坐標值為(118,108)。選擇區域的過程就是設置行列高低地址的過程,也可以理解為地址的寫入為先寫如高地址,后寫入低地址,且 地址的長度為11位,最高位為行列地址選擇位。為了方便理解和使用,本文把地址用區域來表示。例如選擇F區域,執行操 作:A1=A0=1,CS=0,WR=0,然后向控制器寫入D2D1D0=110。

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


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


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

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


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

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


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

    首先要了解,LCD顯示圖像的實質是在屏幕上置入一定顏色的點,曲線y=f(x)也基于這個原理產生,當x軸連續時且函數值y幅度很小的時候在LCD上顯 示的圖形是連續的,當幅度很大時會產生幅度離散的圖形,如果可以把兩個離散的點用一條線連上,那么離散圖形可以變得連續,圖4中有正弦函數顯示的事例。程 序實例如下:
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 結束語
上述控制程序是當今通用的使用方法??刂乞寗悠鞯暮瘮等顼@示字體、清屏幕和置點等都要人為編寫,但這更有助于對LCD顯示的過程的理解。現如今市場上 LCD驅動器的品種多,且有很大一部分控制起來要優于本文所使用的驅動器,本文的目的旨在給予大家一種通用有效的方法,希望在以后遇到LCD驅動器的時候 能快速入門,縮短開發周期,節約成本。本文中所有列舉出來的函數都經過C8051F340單片機的測試和偉福的硬件仿真。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美影院久久久| 欧美一区二区精品久久911| 欧美精品日韩一本| 激情欧美国产欧美| 亚洲一区二区在线看| 久久国产精品久久久| 欧美成人日韩| 性娇小13――14欧美| 99riav1国产精品视频| 亚洲三级免费电影| 国产精品第一页第二页第三页| 久久精品中文字幕一区二区三区| 久久男人资源视频| 欧美成人免费全部| 久久人91精品久久久久久不卡| 久久精品五月| 亚洲美女免费视频| 亚洲美女黄网| 欧美特黄一级大片| 亚洲国产成人精品视频| aa亚洲婷婷| 欧美深夜福利| 亚洲精品久久7777| 亚洲一区二区av电影| 久久国产精品久久w女人spa| 久久综合久久88| 性久久久久久久| 国产精品你懂的在线| 欧美午夜激情视频| 欧美日韩视频在线观看一区二区三区| 亚洲精品一区二区三| 1000精品久久久久久久久| 欧美日本簧片| 国产日韩一区二区| 欧美日韩在线第一页| 国产精品永久免费在线| 欧美激情导航| 欧美日韩精品综合在线| 在线免费高清一区二区三区| 国产乱码精品一区二区三区av| 亚洲无毛电影| 国产一区欧美| 欧美成年人视频| 欧美看片网站| 亚洲国产精品小视频| 亚洲一区精品在线| 日韩午夜激情| 女生裸体视频一区二区三区| 国产精品人人做人人爽| 羞羞视频在线观看欧美| 欧美天天在线| 久久亚洲综合网| 香蕉久久夜色精品国产| 欧美图区在线视频| 1000部精品久久久久久久久| 狠色狠色综合久久| 久久精品国产精品亚洲| 亚洲一区二区三区中文字幕| 亚洲激情自拍| 国产精品久久久久久超碰| 欧美激情 亚洲a∨综合| 一区免费视频| 欧美精品少妇一区二区三区| 欧美另类在线观看| 99精品视频免费观看视频| 日韩视频中午一区| 久久综合九色综合欧美狠狠| 欧美精品七区| 欧美日韩国产高清视频| 另类人畜视频在线| 国产欧美日韩视频一区二区三区| 国产日韩精品一区二区| 欧美成人有码| 亚洲综合色激情五月| 麻豆91精品91久久久的内涵| 亚洲大片在线| 欧美日韩精品免费观看视频完整| 欧美高清你懂得| 国产精品日韩一区二区| 午夜精品久久久久久久男人的天堂| 欧美久久电影| 久久精品123| 亚洲日本精品国产第一区| 一区二区三区在线免费播放| 亚洲一区一卡| 日韩视频一区二区三区在线播放免费观看| 国产精品99久久久久久久vr| 国产精品白丝黑袜喷水久久久| 亚洲黄色三级| 亚洲国产精品va在线看黑人动漫| 亚洲精品影视在线观看| 久久久久久国产精品一区| 国产手机视频一区二区| 久久这里只精品最新地址| 欧美一级欧美一级在线播放| 午夜精品视频在线观看一区二区| 在线精品视频一区二区| 免费欧美视频| 欧美一区二区三区四区高清| 亚洲免费观看在线观看| 一区二区三区回区在观看免费视频| 妖精成人www高清在线观看| 久久久精品五月天| 国产精品一区二区男女羞羞无遮挡| 国产欧美亚洲精品| 亚洲欧洲日夜超级视频| 欧美精品福利视频| 国产精品视频第一区| 国产综合色在线视频区| 在线看一区二区| 午夜一级在线看亚洲| 国产女同一区二区| 亚洲专区一区二区三区| 国产精品一区二区男女羞羞无遮挡| 欧美女同在线视频| 亚洲理论电影网| 欧美v国产在线一区二区三区| 亚洲美女在线观看| 麻豆精品视频在线观看视频| 国产视频一区免费看| 国产精品豆花视频| 国产精品美腿一区在线看| 美女脱光内衣内裤视频久久网站| 欧美一区二区三区视频免费播放| 久久福利资源站| 久久精品国产999大香线蕉| 欧美成人官网二区| 欧美日韩在线视频首页| 欧美日韩在线免费| 日韩午夜精品| 国产区亚洲区欧美区| 在线观看视频日韩| 亚洲福利视频一区二区| 91久久国产综合久久蜜月精品| 国产欧美日韩一区二区三区| 久久精品av麻豆的观看方式| 香蕉久久夜色精品国产使用方法| 亚洲午夜一区二区三区| 久久免费少妇高潮久久精品99| 在线视频国产日韩| 欧美午夜a级限制福利片| 99精品久久免费看蜜臀剧情介绍| 亚洲国产天堂久久综合网| 亚洲视频在线免费观看| 中日韩高清电影网| 午夜视频一区二区| 亚洲女人天堂av| 国产精品xnxxcom| 欧美大片18| 狠狠色综合网站久久久久久久| 在线综合亚洲欧美在线视频| 欧美日韩在线播放一区| 欧美性jizz18性欧美| 国产精品99久久久久久宅男| 亚洲成人自拍视频| 国产九九视频一区二区三区| 在线欧美日韩国产| 日韩亚洲欧美高清| 欧美国产大片| 国产精品vip| 亚洲美女av电影| 最新国产成人av网站网址麻豆| 激情欧美国产欧美| 亚洲清纯自拍| 欧美亚洲免费电影| 亚洲高清久久网| 亚洲高清不卡在线观看| 一区二区三区在线看| 免费视频最近日韩| 久久精品人人做人人综合| 国产伦精品一区二区三区照片91| 一区二区三区成人精品| 国产精品一区二区在线观看| 亚洲三级电影全部在线观看高清| 国产精品成人观看视频国产奇米| 午夜精品一区二区三区在线播放| 欧美freesex交免费视频| 亚洲一级电影| 欧美一区在线看| 中文在线不卡视频| 激情成人在线视频| 久久婷婷色综合| 在线成人h网| 女生裸体视频一区二区三区| 欧美日韩高清在线观看| 午夜性色一区二区三区免费视频| 国产日韩在线播放| 亚洲女ⅴideoshd黑人| 久久精品人人做人人爽| 亚洲六月丁香色婷婷综合久久| 亚洲成人自拍视频| 午夜一级久久| 欧美日韩视频在线一区二区| 日韩亚洲一区在线播放| 国产精品美女久久福利网站| 欧美视频在线一区二区三区| 激情五月婷婷综合| 国语自产精品视频在线看| 精品不卡一区二区三区| 亚洲电影欧美电影有声小说| 一区二区三区四区在线| 欧美午夜不卡影院在线观看完整版免费| 欧美日韩国产色站一区二区三区| 在线欧美日韩国产| 亚洲经典三级| 国产情侣一区| 亚洲精品你懂的| 亚洲综合色视频| 亚洲乱码国产乱码精品精| 久久精品中文| 久久成人免费网| 一区二区三区视频观看| 国产麻豆精品在线观看| 国产一区二区三区的电影| 欧美视频免费| 久久在线免费观看| 亚洲经典一区| 伊人色综合久久天天五月婷| 在线欧美不卡| 免费不卡在线视频| 亚洲日韩欧美一区二区在线| 欧美喷潮久久久xxxxx| 在线免费观看欧美| 韩国av一区二区三区四区| 欧美日韩中文字幕在线视频| 欧美一站二站| 在线观看不卡| 国语对白精品一区二区| 亚洲精品久久7777| 蜜桃av久久久亚洲精品| 一区二区三区精品国产| 一本色道久久综合一区| 欧美日韩色综合| 一区二区三区精品久久久| 性一交一乱一区二区洋洋av| 美女尤物久久精品| 国产日韩在线一区二区三区| 国产一区二区三区在线观看网站| 免费亚洲电影在线观看| 久久青青草综合| 亚洲高清一区二区三区| 欧美一级视频一区二区| 久久国产精彩视频| 久久精品国产亚洲高清剧情介绍| 国产日韩在线一区| 欧美一级久久久久久久大片| 国产欧美日韩亚洲精品| 亚洲一区二区三区777| 嫩草成人www欧美| 雨宫琴音一区二区在线| 篠田优中文在线播放第一区| 欧美性猛交xxxx乱大交退制版| 国产精品任我爽爆在线播放| 一区在线观看视频| 巨乳诱惑日韩免费av| 狠狠色综合色综合网络| 欧美高清视频免费观看| 欧美久久99| 亚洲第一精品夜夜躁人人躁| 宅男精品导航| 国产亚洲精品bt天堂精选| 久久综合网络一区二区| 国产欧美亚洲视频| 久久精品国产99国产精品| 亚洲国产欧美另类丝袜| 久久国产精品久久w女人spa| 免费成人网www| 国产日韩欧美麻豆| 欧美日韩黄色大片| 久久精品亚洲精品| 国产精品青草综合久久久久99| 亚洲欧美激情视频在线观看一区二区三区| 欧美视频中文字幕在线| 久久国内精品视频| 国产精品一区二区视频| 国产私拍一区| 欧美mv日韩mv国产网站| 久久免费高清视频| 亚洲精品国产日韩| 欧美视频在线观看免费| 亚洲男人天堂2024| 久热这里只精品99re8久| 国产伦精品一区二区三| 日韩一级黄色大片| 久久三级视频| 9久草视频在线视频精品| 欧美国产日韩一区| 亚洲一二三区在线| 夜夜嗨网站十八久久| 国产精品日韩久久久| 久久久久久久久久看片| 欧美国产综合| 另类春色校园亚洲| 欧美日一区二区在线观看| 国产精品久久久99| 亚洲黄一区二区三区| 久久久无码精品亚洲日韩按摩| 欧美一区二区三区四区在线观看地址| 一区二区欧美在线| 午夜精品久久久久影视| 亚洲欧美日韩在线高清直播| 午夜精品一区二区在线观看| 国产精品高潮视频| 亚洲精品在线观看视频| 国产精品卡一卡二卡三| 99国产成+人+综合+亚洲欧美| 玖玖玖免费嫩草在线影院一区| 亚洲一区在线观看免费观看电影高清| 国产性猛交xxxx免费看久久| 亚洲在线成人| 亚洲免费在线播放| 亚洲一区视频| 久久精品色图| 亚洲欧洲一区| 在线精品视频在线观看高清| 樱桃国产成人精品视频| 国产一区二区三区四区在线观看| 亚洲高清网站| 欧美国产日韩xxxxx| 欧美精品在线视频观看| 亚洲天堂免费在线观看视频| 午夜精品在线看| 欧美激情国产日韩精品一区18| 久久综合伊人77777| 国产精品久久久久久模特| 亚洲精品一区二区三区不| 在线观看一区欧美| 久久久噜噜噜久久|