日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 顯示光電 > 顯示光電
[導讀]0 引 言人們在日常生活中,LCD占有很大的地位。人們使用的電腦、手機、車載系統(tǒng)、各種測量設備、顯示設備等等,都把LCD作為重要的人機接口,它把使用者需要的信息及時反應出來。目前市場上存在著各種LCD和相對應的驅

0 引 言

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

1 典型圖形LCD驅動器NHC_313簡介

1.1 驅動器簡介

NHC_313驅動器驅動最大點陣數為640(列)×480(行),顯示顏色為65536色(16位色)。本文所用的LCD為SHARP公司產品,產品型號為LQ104V1DG52。NHC_313有8位復用并行接口一數據總線和控制總線。MCU可以通過總線對LCD進行操作,隨時寫顯示存儲器,而不影響顯示效果,即顯示不會出現(xiàn)“雪花”。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的地址信息)。
 

對驅動器進行寫操作要遵循以下規(guī)律:

a)設定顯示頁和操作頁地址(A1=A0=1,CS=0,WR=0)

 

D1-D0設定列地址高字節(jié);D2設定行地址高字節(jié)。開機時先執(zhí)行此操作再執(zhí)行其他操作。

b)寫行地址低字節(jié)。(A1=0,A0=1)

c)寫列地址低字節(jié)字節(jié)。(A1=1,A0=0)

d)連續(xù)寫兩次8位字節(jié)對應一個像素點顏色(A1=0,A0=0)。第一個字節(jié):

R4、R3、R2、R1、R0表示紅色灰度;G5、G4、G3、G2、G1、G0表示綠色灰度;B4、B3、B2、B1、B0表示藍色灰度。如在同一行內連續(xù)寫數據不用每次重寫行坐標和列坐標,每一次“寫數據”操作后列地址自動加1,即每寫兩個字節(jié)顯示數據列地址自動加1。

1.2 關于液晶屏的簡單說明

本文中的液晶顯示器顯示的顏色數量為65536種一16位色,對一個像素點所要顯示的顏色需要用兩個字節(jié)的數據來表示。需要注意的是,LCD的坐標系同數學上的坐標系有所不同,LCD的坐標系如圖3所示。
 

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

2 程序設計、移植和剪裁方法

2.1 LCD驅動器I/O操作基本程序

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

上述的dlcd,clcd1,clcd2,clcd3函數中,如果把控制器的片選信號接到低電平,cs這個管腳在程序可以略去;假如P4端口和其他端口相連接,cs管腳要通過I/O口控制驅動器是否選通。注意函數中的延遲函數:數據出現(xiàn)在端口上要經過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:連續(xù)寫入的8位像素字節(jié)

說明:顯示頁的設置是為了顯示兩頁緩存中的一頁數據到LCD上,操作頁的設置是為了把數據寫入到兩頁緩存當中的一頁。如果顯示頁為第1頁,操作頁為第0頁,此時LCD顯示的是第一頁的緩存的數據,此時把數據寫入到第0頁緩存中,寫入的數據在LCD上不被顯示;如果顯示頁為第0頁,操作頁為第0頁,此時LCD顯示的是第0頁的緩存的數據,此時把數據寫入到第0頁緩存中,寫入的數據可以在LCD上實時的顯示出來。程序依據圖3中對坐標軸設計方法和LCD區(qū)域劃分手段判斷點G在新坐標系O'中坐標值。在程序中一定要注意每寫兩個字節(jié)顯示數據列地址(列坐標)自動加1。為此設計如下函數:

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

函數display_word功能:把字體寫入到控制器緩沖區(qū)指定位置中,并控制字體是否顯示。函數參數意義:

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:清理的矩形區(qū)域距離word_x的長度;參數word_line:清理的矩形區(qū)域距離word_y的長度;參數with color:清理區(qū)域的顏色。此函數所清理的是矩形區(qū)域。函數改寫可以采用連續(xù)置點的方法,通過draw_piont函數連續(xù)的向清屏區(qū)域內置入一定顏色的點。

由于篇幅所限,本文不給出程序清單。

畫線程序:把LCD上任意兩點連接成直線。設LCD上兩點坐標M(x1,y1)和N(x2,y2),得斜率由于x方向地增量△x=1,則△y=k。通過循環(huán)置點就可以得到直線。

本文所用的函數如下:

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,驅動器會執(zhí)行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軸連續(xù)時且函數值y幅度很小的時候在LCD上顯示的圖形是連續(xù)的,當幅度很大時會產生幅度離散的圖形,如果可以把兩個離散的點用一條線連上,那么離散圖形可以變得連續(xù),圖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顯示的過程的理解?,F(xiàn)如今市場上LCD驅動器的品種多,且有很大一部分控制起來要優(yōu)于本文所使用的驅動器,本文的目的旨在給予大家一種通用有效的方法,希望在以后遇到LCD驅動器的時候能快速入門,縮短開發(fā)周期,節(jié)約成本。本文中所有列舉出來的函數都經過C8051F340單片機的測試和偉福的硬件仿真。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LCD顯示遠程更新是指通過中央服務器實現(xiàn)對廣泛分布的LCD顯示屏的遠程更新和管理。

關鍵字: LCD顯示

本文將演示一種加速嵌入式系統(tǒng)設計原型階段的方法,說明如何將與硬件無關的驅動程序和傳感器結合使用,簡化整個嵌入式系統(tǒng)的器件選擇。同時還將介紹嵌入式系統(tǒng)的器件、典型軟件結構以及驅動程序的實現(xiàn)。后續(xù)文章“利用與硬件無關的方法簡...

關鍵字: 嵌入式系統(tǒng) 驅動程序 傳感器

隨著科技的飛速發(fā)展,嵌入式系統(tǒng)已經成為現(xiàn)代生活不可或缺的一部分,它們被廣泛應用于從智能家居到自動駕駛汽車的各個領域。而在這些系統(tǒng)中,C語言由于其高效性、可移植性和對硬件的直接控制能力,成為了嵌入式系統(tǒng)開發(fā)的首選語言。

關鍵字: C語言 驅動程序

LCD顯示遠程更新是指通過中央服務器實現(xiàn)對廣泛分布的LCD顯示屏的遠程更新和管理。

關鍵字: LCD顯示 遠程更新

每個嵌入式軟件應用程序都必須在某個時候訪問最低級別的固件并控制硬件。驅動程序的設計和實現(xiàn)對于確保系統(tǒng)能夠滿足其實時要求至關重要。

關鍵字: 嵌入式 驅動程序

在Linux內核開發(fā)中,字符設備驅動程序是連接硬件設備與用戶空間應用程序的重要橋梁。本文將詳細介紹如何編寫一個基本的字符設備驅動程序,從理論框架到實際代碼實現(xiàn),再到測試和部署。

關鍵字: Linux 字符設備 驅動程序

在嵌入式系統(tǒng)中,板上通信接口是指用于將各種集成電路與其他外圍設備交互連接的通信通路或總線。下面將逐一說明常用的板上通信接口。

關鍵字: UART 1-Wire接口 并行接口

USB攝像頭是一種采用USB接口的視頻采集設備,其優(yōu)點在于即插即用、操作簡便,無需額外驅動程序,支持筆記本電腦,并且成本較低,可以支持遠程網絡觀看。

關鍵字: usb攝像頭 驅動程序

與兩相雙極步進電機的驅動電路相比,兩相單極步進電機的驅動電路在輸入段配置、內部邏輯及控制電路和驅動電路使用雙通道方面基本相同,但是輸出段的配置不同。

關鍵字: 四相步進電機 驅動程序 程序電路

Holtek新推出通過BQB(Bluetooth Qualification Body)認證Bluetooth 5.2 Arm? Cortex?-M0+低功耗藍牙(Bluetooth Low Energy, BLE) M...

關鍵字: MCU 藍牙 LCD顯示
關閉