單片機(jī)原理及應(yīng)用第四講_第1頁
單片機(jī)原理及應(yīng)用第四講_第2頁
單片機(jī)原理及應(yīng)用第四講_第3頁
單片機(jī)原理及應(yīng)用第四講_第4頁
單片機(jī)原理及應(yīng)用第四講_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第四講LCD液晶顯示模塊

LCD結(jié)構(gòu)與原理

1、LCD(LiquidCrystalDisplay)的工作原理液晶面板包含了兩片精致的玻璃,中間夾著一層液晶。液晶是一種具有規(guī)則性分子排列的有機(jī)化合物。當(dāng)加電時(shí)導(dǎo)通,排列有秩序,使光線容易通過;不加電時(shí)排列混亂,阻止光線通過。由于液晶材料本身并不發(fā)光,所以在液晶顯示屏背面有一塊背光板和反光膜,背光板是由熒光物質(zhì)組成的,可以發(fā)射光線,其作用主要是提供均勻的背景光源。背光板發(fā)出的光線在穿過第一層玻璃板之后進(jìn)入包含成千上萬水晶液滴的液晶層。液晶層中的水晶液滴都被包含在細(xì)小的單元格結(jié)構(gòu)中,一個(gè)或多個(gè)單元格構(gòu)成屏幕上的一個(gè)像素。在玻璃板與液晶材料之間是透明的電極,電極分為行和列,在行與列的交叉點(diǎn)上,通過改變電壓而改變液晶的旋光(排列)狀態(tài),所以液晶材料的作用類似于一個(gè)個(gè)小的光閥。LCD顯示器的分類當(dāng)前市場(chǎng)上液晶顯示器種類繁多,按排列形狀可分為字段型、點(diǎn)陣字符型和點(diǎn)陣圖形型。(1)字段型。它是以長條狀組成字符顯示。該類顯示器主要用于數(shù)字顯示,也可用于顯示西文字母或某些字符,已廣泛用于電子表、計(jì)算器、數(shù)字儀表中(類似于數(shù)碼管)。(2)點(diǎn)陣字符型。它專門用于顯示字母、數(shù)字、符號(hào)等。它由若干57或510的點(diǎn)陣組成,每一個(gè)點(diǎn)陣顯示一個(gè)字符。此類顯示模塊廣泛應(yīng)用在各類單片機(jī)應(yīng)用系統(tǒng)中。(3)點(diǎn)陣圖形型。它是在平板上排列多行或多列,形成矩陣式的晶格點(diǎn),點(diǎn)的大小可根據(jù)顯示的清晰度來設(shè)計(jì)。這類液晶顯示器可廣泛應(yīng)用于圖形顯示,如用于筆記本電腦、彩色電視和游戲機(jī)等。點(diǎn)陣字符型液晶顯示模塊介紹在單片機(jī)應(yīng)用系統(tǒng)中,常使用點(diǎn)陣字符型LCD顯示器。要使用點(diǎn)陣字符型LCD顯示器,必須有相應(yīng)的LCD控制器、驅(qū)動(dòng)器來對(duì)LCD顯示器進(jìn)行掃描、驅(qū)動(dòng),還要有一定空間的RAM和ROM來存儲(chǔ)單片機(jī)寫入的命令和顯示字符的點(diǎn)陣。由于LCD的面板較為脆弱,制造商已將LCD控制器、驅(qū)動(dòng)器、RAM、ROM和LCD顯示器用PCB連接到一起,稱為液晶顯示模塊(LCdModule,LCM)。使用者只需購買現(xiàn)成的液晶顯示模塊即可。單片機(jī)控制LCM時(shí),只要向LCM送入相應(yīng)的命令和數(shù)據(jù)就可實(shí)現(xiàn)所需要的顯示內(nèi)容,這種模塊與單片機(jī)接口簡單,使用靈活方便。(1)液晶顯示板在液晶顯示板上排列著若干57或510點(diǎn)陣的字符顯示位,從規(guī)格上分為每行8、16、20、24、32、40位,有1行、2行及4行等,用戶可根據(jù)需要,選擇購買。(2)模塊電路框圖

圖10-18為字符型LCD模塊框圖,它由日立公司生產(chǎn)的控制器HD44780、驅(qū)動(dòng)器HD44100及幾個(gè)電阻和電容組成。HD44100是擴(kuò)展顯示字符位用的(例如,16字符1行模塊就可不用HD44100,16字符2行模塊就要用一片HD44100)。圖10-18

字符型LCD模塊的電路框圖(3)1602字符型LCM的特性(兩行顯示,每行16個(gè)字符)①內(nèi)部具有字符發(fā)生器ROM(CGROM),即字符庫??娠@示192個(gè)57點(diǎn)陣字符,見圖10-19。由該字符庫可看出LCM顯示的數(shù)字和字母部分的代碼值,恰好與ASCII碼表中的數(shù)字和字母相同。所以在顯示數(shù)字和字母時(shí),只需向LCM送入對(duì)應(yīng)的ASCII碼即可。② 模塊內(nèi)有64字節(jié)的自定義字符RAM(CGRAM),用戶可自行定義8個(gè)57點(diǎn)陣字符。圖10-19ROM字符庫的內(nèi)容(12*16=192個(gè)字符+4*16=64預(yù)留自定義字符)③模塊內(nèi)有80字節(jié)的數(shù)據(jù)顯示存儲(chǔ)器(DDRAM)即:緩存、顯存注意:這里的地址屬于片外地址,所以其實(shí)際地址要加上0x80(片內(nèi)128B,地址范圍:0X00~0X7F)2.LCM的引腳1602LCM通常有16個(gè)引腳,也有少數(shù)的LCM為14個(gè)引腳,其中包括8條數(shù)據(jù)線、3條控制線和3條電源線,如表10-10所示。通過單片機(jī)寫入模塊的命令和數(shù)據(jù),就可對(duì)顯示方式和顯示內(nèi)容做出選擇。3.命令格式及功能說明(1)內(nèi)部寄存器LCD控制器HD44780內(nèi)有多個(gè)寄存器,寄存器的選擇如表10-11所示。RS位和R/W*引腳上的電平?jīng)Q定對(duì)寄存器的選擇和讀/寫,而DB7~DB0決定命令功能。忙標(biāo)記和地址計(jì)數(shù)器(也稱狀態(tài)字寄存器)最高位(STA7)為忙標(biāo)記:1忙(不能讀寫)0閑(可讀寫)低7位(STA6~STA0)為顯存地址:顯存為80B,其地址占7位,分別

為:第一行0X00~0X27、第二行0X40~0X67)(2)命令功能說明下面介紹可寫入命令寄存器的11個(gè)命令。①清屏。命令格式如下:功能:清除屏幕顯示,并把地址計(jì)數(shù)器AC置“0”。②返回。命令格式如下:功能:置DDRAM(顯示數(shù)據(jù)RAM)及顯示RAM的地址為“0”,顯示返回到原始位置。數(shù)據(jù)沒有被清空,屏幕仍會(huì)顯示!下一次顯示從第一行第一位開始。③輸入方式設(shè)置。命令格式如下:

功能:i)設(shè)置光標(biāo)移動(dòng)方向(I/D=1,為增量方式:每讀/寫一個(gè)字符后地址加1,光標(biāo)加1;I/D=0,為減量方式:每讀/寫一個(gè)字符后地址減1,光標(biāo)減1;)ii)指定屏幕是否移動(dòng)(S=1,表示移位,每寫一個(gè)字符后整個(gè)屏幕顯示移動(dòng)(I/D=1,屏幕左移;I/D=0,屏幕右移)而光標(biāo)不動(dòng);S=0,屏幕顯示不移動(dòng)。④顯示開關(guān)控制。命令格式如下:功能:D位(DB2)控制整體顯示的開關(guān),D=1,開顯示;D=0,關(guān)顯示。C位(DB1)控制光標(biāo)的開關(guān),C=1,光標(biāo)開;C=0,光標(biāo)關(guān)。B位(DB0)控制光標(biāo)處字符的閃爍,B=1,光標(biāo)閃爍;B=0,光標(biāo)不閃爍。⑤光標(biāo)移位。命令格式如下:功能:移動(dòng)光標(biāo)或整體顯示,DDRAM中內(nèi)容不變。其中:S/C=1時(shí),顯示移位(屏幕移位、顯示范圍移位);S/C=0時(shí),光標(biāo)移位。R/L=1時(shí),向右移位,R/L=0時(shí),向左移位。⑥功能設(shè)置。命令格式如下:

功能:DL位設(shè)置接口數(shù)據(jù)位數(shù),DL=1為8位數(shù)據(jù)接口;DL=0為4位數(shù)據(jù)接口。N位設(shè)置顯示行數(shù),N=0單行顯示;N=1雙行顯示。F位設(shè)置字型大小,F(xiàn)=1時(shí)為510點(diǎn)陣,F(xiàn)=0時(shí)為57點(diǎn)陣。⑦CGRAM(自定義字符RAM)地址設(shè)置。格式如下:功能:設(shè)置CGRAM的地址,地址范圍為0~63。⑧DDRAM(數(shù)據(jù)顯示存儲(chǔ)器)地址設(shè)置。命令格式如下:功能:設(shè)置DDRAM的地址,地址范圍為0~127。

⑨讀忙標(biāo)志BF及地址計(jì)數(shù)器。命令格式如下:功能:BF位為忙標(biāo)志。BF=1,表示忙,此時(shí)LCM不能接收命令和數(shù)據(jù);BF=0,則表示LCM不忙,可接收命令和數(shù)據(jù)。AC位為地址計(jì)數(shù)器的值,范圍為0~127。

⑩向CGRAM/DDRAM寫數(shù)據(jù)。命令格式如下:功能:將數(shù)據(jù)寫入CGRAM或DDRAM中,應(yīng)與CGRAM或DDRAM地址設(shè)置命令結(jié)合使用。

?從CGRAM/DDRAM中讀數(shù)據(jù)。命令格式如下:功能:從CGRAM或DDRAM中讀出數(shù)據(jù),應(yīng)與CGRAM或DDRAM地址設(shè)置命令結(jié)合使用。(3)有關(guān)說明①顯示位與DDRAM地址的對(duì)應(yīng)關(guān)系,如表10-12所示。(3)有關(guān)說明②讀寫時(shí)序(相對(duì)單片機(jī)而言LCM速度很慢,所以一定要LCM的操作時(shí)序,否則會(huì)導(dǎo)致錯(cuò)誤)大家要學(xué)會(huì)看時(shí)序圖,以后會(huì)用到更多的部件,使用時(shí)都要注意它們的時(shí)序,看時(shí)序圖的方法都是一樣的。(3)有關(guān)說明②讀寫時(shí)序(3)有關(guān)說明②讀寫時(shí)序i)廠家在做時(shí)序圖時(shí)一般會(huì)把信號(hào)按照信號(hào)有效的時(shí)間順序從上到下排列,所以操作順序也就變成了先操作最上邊的信號(hào),接著依次操作后面的。ii)讀操作的時(shí)序應(yīng)該是:①、RS=0(讀忙標(biāo)志BF和地址計(jì)數(shù)器AC)或RS=1(讀數(shù)據(jù)寄存器);②、(延時(shí)tSP1,等待地址建立,再發(fā)讀命令)RW=1(讀操作);③、E=1,LCM將數(shù)據(jù)輸出到數(shù)據(jù)線上,并保持,一直到E=0為止;④、(延時(shí)tD,等待數(shù)據(jù)建立[穩(wěn)定])從數(shù)據(jù)線上讀取數(shù)據(jù)⑤、E=0,撤銷數(shù)據(jù)。(3)有關(guān)說明②讀寫時(shí)序(3)有關(guān)說明②讀寫時(shí)序iii)寫操作的時(shí)序應(yīng)該是:①、RS=0(寫指令寄存器)或RS=1(寫數(shù)據(jù)寄存器);②、(延時(shí)tSP1,等待地址建立,再發(fā)寫命令)RW=0(寫操作);③、由于LCM是在E的下降沿將數(shù)據(jù)送入內(nèi)部控制器鎖存,為了產(chǎn)生下降沿,在將數(shù)據(jù)送到總線之前,E=1;④、MCU將數(shù)據(jù)送到數(shù)據(jù)線上;⑤、(延時(shí)tHD2,數(shù)據(jù)在總線上保持一段時(shí)間)E=0,產(chǎn)生下降沿,將數(shù)據(jù)鎖存,即寫操作時(shí)E下降沿有效。(3)有關(guān)說明②讀寫時(shí)序AT89S51單片機(jī)與LCD的接口及軟件編程1.AT89S51單片機(jī)與1602LCD模塊的接口AT89S51與1602LCD模塊(LCM)的接口電路如圖10-20所示,通過對(duì)數(shù)據(jù)總線的讀寫實(shí)現(xiàn)對(duì)LCM的控制。圖10-20AT89S51單片機(jī)與LCD模塊的接口電路2.讀LCM狀態(tài)(測(cè)試忙/閑)//函數(shù)名稱:DectectBusyBit()//函數(shù)功能:檢測(cè)狀態(tài)標(biāo)志位(判斷是忙/閑)//入口參數(shù):無//出口參數(shù):忙時(shí)返回1,閑時(shí)返回0/*******************************************************/unsignedcharDectectBusyBit(void)//狀態(tài)判斷函數(shù)(忙/閑?忙時(shí)返回1,閑時(shí)返回0){bitresult;P0=0xff;/*讀狀態(tài)值時(shí),先賦高電平,因?yàn)閿?shù)據(jù)線上之前的值可能為0,會(huì)誤認(rèn)為LCM空閑*/RS=0;delay(5);RW=1;LCDEN=1;delay(5);//延時(shí),等待數(shù)據(jù)穩(wěn)定result=BF;LCDEN=0;returnresult; } 3.寫命令//函數(shù)名稱:WrComLCD()//函數(shù)功能:為LCD寫指令//入口參數(shù):指令(ComVal)//出口參數(shù):無/*******************************************************/voidWrComLCD(unsignedcharComVal){ while(DectectBusyBit()==1);//先檢測(cè)LCM是否空閑 RS=0; delay(1);RW=0; LCDEN=1; P0=ComVal; delay(1); LCDEN=0; }4.寫數(shù)據(jù)//函數(shù)名稱:WrDatLCD()//函數(shù)功能:為LCD寫數(shù)據(jù)//入口參數(shù):數(shù)據(jù)(DatVal)//出口參數(shù):無/*******************************************************/voidWrDatLCD(unsignedcharDatVal){ while(DectectBusyBit()==1); RS=1; delay(1);RW=0; LCDEN=1; P0=DatVal; delay(1); LCDEN=0; }5.初始化0FH:開顯示,光標(biāo)閃爍5.初始化//函數(shù)名稱:LCD_Init()//函數(shù)功能:初始化LCD//入口參數(shù):無//出口參數(shù):無/*******************************************************/voidLCD_Init(void){ WrComLCD(0x38);//功能設(shè)定:16*2行顯示、5*7點(diǎn)陣、8位數(shù)據(jù)接口

WrComLCD(0x38); WrComLCD(0x38);//多次重復(fù)設(shè)定指令,是因?yàn)長CD啟動(dòng)后并不知道您使用的是4位數(shù)據(jù)通信方式還是8位方式,所以它總是先執(zhí)行高4位的指令,也就是說第一次寫入該指令時(shí),低四位的數(shù)據(jù)可能被忽略,為了可靠,最好多寫幾遍該指令。

WrComLCD(0x01);//顯示清屏

WrComLCD(0x06);//光標(biāo)自增、畫面不動(dòng)

delay(1); //稍作延時(shí),等待上面的設(shè)置生效,防止下面顯示亂碼

WrComLCD(0x0C);//開顯示、關(guān)光標(biāo)}【例1】1602液晶顯示實(shí)例實(shí)現(xiàn)在1602液晶的第一行顯示“Welcome!”,在第二行顯示“MCU-STUDY-BOARD”。電路源程序【例2】1602液晶顯示實(shí)例返回指令與清屏指令的比較電路源程序【例3】1602液晶顯示實(shí)例按鍵控制1602液晶上光標(biāo)移動(dòng)、整屏移動(dòng)可以讓光標(biāo)移動(dòng)到任何位置改寫電路源程序【例4】1602液晶顯示實(shí)例實(shí)現(xiàn)在1602液晶上滾動(dòng)顯示電路源程序12864概述(64行128列點(diǎn)陣)

我們學(xué)習(xí)是采用的LCD為STN類,像素為128*64黑白字符圖形式12864液晶屏。買LCD的時(shí)候會(huì)配帶相應(yīng)的驅(qū)動(dòng)控制器,雖然對(duì)應(yīng)的驅(qū)動(dòng)控制其型號(hào)很多,不過使用方法大同小異。12864有帶字庫的和不帶字庫兩種,不帶字庫的需要自己用專用軟件取模,現(xiàn)在市面上常用的驅(qū)動(dòng)控制器都帶字庫。JHD529M1是一個(gè)128*64的LCD驅(qū)動(dòng)控制器,可顯示漢字及圖形。內(nèi)置8192個(gè)中文漢字CGROM(16*16)、128個(gè)字符(ASCII碼)HCGROM(8*16)及128*64點(diǎn)陣顯示RAM(GDRAM)。128×64點(diǎn)陣液晶顯示屏有三種控制器,分別是KS0108、T6963C和ST7920。三種控制器主要區(qū)別是:KS0108不帶任何字庫、T6963C帶ASCII碼、ST7920帶國標(biāo)二級(jí)字庫(8千多個(gè)漢字)。采用不同的控制芯片,其管腳定義不一樣,控制方式也不一樣,請(qǐng)大家一定要注意!ST7920功能描述ST7920是一個(gè)集成LCD控制器和驅(qū)動(dòng)器的芯片,能夠顯示字母、數(shù)字、中文和自定義字符。支持8位、4位并行及串行總線接口。包括RAM、ROM、LCD顯示驅(qū)動(dòng)和控制電路的所有功能都集成在一塊芯片上。最小的系統(tǒng)配置就能實(shí)現(xiàn)中文字符的顯示。

ST7920包含的字符ROM支持8192個(gè)16×16點(diǎn)陣的中文字模和126個(gè)16×8點(diǎn)陣的字母數(shù)字字模,也包含支持圖形顯示的GDRAM(最高支持64×256),這使得ST7920能夠支持字符和圖形的混合顯示。ST7920也內(nèi)嵌了4個(gè)16×16的軟件可編程的CGRAM。

ST7920有著很寬的工作電壓范圍(2.7V~5.5V)。ST7920的低功耗設(shè)計(jì),適合于電池供電的便攜設(shè)備。

ST7920LCD驅(qū)動(dòng)器是一個(gè)32行×64列的驅(qū)動(dòng)電路。通過擴(kuò)展段驅(qū)動(dòng)器ST7921,ST7920能支持高達(dá)32行×256列(64*128)的顯示能力。ST7920功能描述PSB是ST7920類液晶的標(biāo)志性引腳(并行及串行總線接口)教材上的例子就是采用ST7920控制器。分上下2個(gè)半屏操作:上32*128下32*128KS0108功能描述KS0108是一種帶有列輸出的液晶顯示控制器,與行驅(qū)動(dòng)KS0107配合使用組成液晶顯示驅(qū)動(dòng)控制系統(tǒng)。KS0108是列驅(qū)動(dòng)器,有64路列驅(qū)動(dòng)輸出。最多支持64*192(3個(gè)列驅(qū)動(dòng)器,對(duì)應(yīng)3個(gè)片選CS1、CS2、CS3,每個(gè)64列)在64*128中只有2個(gè)列驅(qū)動(dòng)器,對(duì)應(yīng)2個(gè)片選信號(hào)CS1、CS2。CS1和CS2是KS0108類液晶的標(biāo)志性引腳,分左右2個(gè)半屏操作左64*64-右64*64本章以不帶字庫的KS0107(KS0108)控制器為例進(jìn)行介紹。ST7920功能描述ST7920是一個(gè)集成LCD控制器和驅(qū)動(dòng)器的芯片,能夠顯示字母、數(shù)字、中文和自定義字符。支持8位、4位并行及串行總線接口。包括RAM、ROM、LCD顯示驅(qū)動(dòng)和控制電路的所有功能都集成在一塊芯片上。最小的系統(tǒng)配置就能實(shí)現(xiàn)中文字符的顯示。

ST7920包含的字符ROM支持8192個(gè)16×16點(diǎn)陣的中文字模和126個(gè)16×8點(diǎn)陣的字母數(shù)字字模,也包含支持圖形顯示的GDRAM(最高支持64×256),這使得ST7920能夠支持字符和圖形的混合顯示。ST7920也內(nèi)嵌了4個(gè)16×16的軟件可編程的CGRAM。

ST7920有著很寬的工作電壓范圍(2.7V~5.5V)。ST7920的低功耗設(shè)計(jì),適合于電池供電的便攜設(shè)備。

ST7920LCD驅(qū)動(dòng)器是一個(gè)32行×64列的驅(qū)動(dòng)電路。通過擴(kuò)展段驅(qū)動(dòng)器ST7921,ST7920能支持高達(dá)32行×256列(64*128)的顯示能力?;咎卣鞯碗娫措妷?.5-5.5V,2MHZ時(shí)鐘頻率,通訊方式為串并行可選,工作溫度為0-55度。顯示內(nèi)容可以構(gòu)成全中文人機(jī)互交圖形界面??梢燥@示8*4行16*16點(diǎn)陣漢字,也可以完成圖形顯示。并且可以實(shí)現(xiàn)光標(biāo)顯示,畫面移動(dòng),自定義字符、睡眠模式。通信接口并行:8位數(shù)據(jù)線DB0-DB7、3位控制線RS,R/W,E

串行:I2C接口CS,SCLK,SDA下面先以帶字庫的ST7920控制器為例進(jìn)行介紹。字符顯示(帶中文字庫,可顯示字符、漢字)用戶可直接將漢字字符送到指定地址顯示(DDRAM)(下面的地址需要加0X80H)第1個(gè)字第2個(gè)字第3個(gè)字第4個(gè)字第5個(gè)字第6個(gè)字第7個(gè)字第8個(gè)字第一行00H01H02H03H04H05H06H07H第二行10H11H12H13H14H15H16H17H第三行08H09H0AH0BH0CH0DH0EH0FH第四行18H19H1AH1BH1CH1DH1EH1FH第一行和第三方其實(shí)屬于一行第二行和第四方其實(shí)屬于一行圖形顯示按照點(diǎn)陣?yán)L圖顯示圖片,畫點(diǎn)、線、面,可按點(diǎn)陣圖來顯示漢字用戶需編程將點(diǎn)陣圖送到GDRAM指定地址顯示圖形顯示(下面的地址需要加0X80H)64行128列點(diǎn)陣水平地址X(0~7)0(16列)1234567垂直地址Y(0~31)上半屏0…31水平地址X(8~15)8(16列)9101112131415下半屏0…31注意:(1)一個(gè)水平地址對(duì)應(yīng)16列點(diǎn)陣。水平地址有16個(gè),上半屏的水平地址為0-7,下半屏的水平地址為8-15,所以可通過水平地址來區(qū)分上、下半屏。每寫入16位數(shù)據(jù)(先寫高8位,再寫低8位)后,水平地址X會(huì)自加1。(2)一個(gè)垂直地址對(duì)應(yīng)一行點(diǎn)陣,上、下半屏共用水平地址。垂直地址Y不會(huì)自加1,每寫完一行后,需人為的加1。LCD12864在點(diǎn)陣的物理排列上是128×64但在地址排列上卻是256×32管腳定義:管腳號(hào)管腳名稱LEVER管腳功能描述1VSS(GND)0電源地2VDD(VCC)+5.0V電源電壓3V0-液晶顯示器驅(qū)動(dòng)電壓4RS(CS)H/LRS為數(shù)據(jù)/指令選擇(1數(shù)據(jù)0指令)CS為串行片選線5R/W(SID)H/LR/W為讀/寫選擇(1讀0寫)SID為串行數(shù)據(jù)線6E(SCLK)H/LE為使能信號(hào)(與讀寫配合使用)SCLK為串行同步時(shí)鐘信號(hào)7~14DB0~7H/L數(shù)據(jù)線15PSBH/LPSB為并/串選擇(1并0串)16NC空腳17RSTH/L復(fù)位信號(hào),低電平復(fù)位18NC空腳19LED+-LED背光板電源+20LED--LED背光板電源-指令指令碼說明執(zhí)行時(shí)間RSRWDB7DB6DB5DB4DB3DB2DB1DB0清除顯示0000000001將DDRAM填滿“20H”,并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到“00H”(同1602)4.6ms地址歸位000000001X設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到“00H”,并且將游標(biāo)移到開頭原點(diǎn)位置;這個(gè)指令并不改變DDRAM的內(nèi)容(同1602)4.6ms輸入方式設(shè)定00000001I/DS指定在資料的讀取與寫入時(shí),設(shè)定游標(biāo)移動(dòng)方向及指定顯示的移位(同1602)72us顯示狀態(tài)開/關(guān)0000001DCBD=1:整體顯示開C=1:游標(biāo)開B=1:游標(biāo)位置反白允許72us游標(biāo)或顯示移位控制000001S/CR/LXX設(shè)定游標(biāo)的移動(dòng)與顯示的移位控制位元;這個(gè)指令并不改變DDRAM的內(nèi)容(同1602)72us基本指令集指令指令碼說明執(zhí)行時(shí)間RSRWDB7DB6DB5DB4DB3DB2DB1DB0功能設(shè)定00001DLXREXXDL=1(8位),DL=0(4位)RE=1:擴(kuò)充指令集RE=0:基本指令集72us設(shè)定CGRAM地址0001AC5AC4AC3AC2AC1AC0設(shè)定CGRAM地址到地址計(jì)數(shù)器AC:00-3F(預(yù)留64個(gè)自定義字型碼)72us設(shè)定DDRAM地址0010AC5AC4AC3AC2AC1AC0設(shè)定DDRAM地址到地址計(jì)數(shù)器AC第一/三行(80-8F),第二/四行(90-9F)72us讀取忙碌標(biāo)志(BF)和地址01BFAC6AC5AC4AC3AC2AC1AC0讀取忙碌標(biāo)志(BF)可以確認(rèn)內(nèi)部動(dòng)作是否完成,同時(shí)可以讀出地址計(jì)數(shù)器(AC)的值0us寫資料到RAM10D7D6D5D4D3D2D1D0寫入資料到內(nèi)部的RAM72us讀出RAM的值11D7D6D5D4D3D2D1D0從內(nèi)部RAM讀取資料72us基本指令集:指令指令碼說明執(zhí)行時(shí)間RSRWDB7DB6DB5DB4DB3DB2DB1DB0待命模式0000000001將DDRAM填滿“20H”,并且設(shè)定DDRAM的地址計(jì)數(shù)器AC到“00H”72us卷動(dòng)地址或IRAM地址選擇000000001SRSR=1:允許輸入垂直卷動(dòng)地址SR=0:允許輸入IRAM地址、CGRAM地址72us反白選擇00000001R1R0選擇4行中的任一行作反白顯示,并可決定反白與否72us睡眠模式0000001SLXXSL=1:脫離睡眠模式SL=0:進(jìn)入睡眠模式72us

擴(kuò)充指令集:初始化時(shí)一般采用基本指令,這樣可以顯示字符和漢字(帶字庫的話),需要繪圖時(shí)才打開擴(kuò)充指令,繪圖完后又要恢復(fù)到基本指令以顯示字符、漢字。指令指令碼說明執(zhí)行時(shí)間RSRWDB7DB6DB5DB4DB3DB2DB1DB0擴(kuò)充功能設(shè)定00001DLXREG0DL=1(8位),DL=0(4位)RE=1:擴(kuò)充指令集動(dòng)作RE=0:基本指令集動(dòng)作G=1:繪圖顯示ONG=0:繪圖顯示OFF72us設(shè)定IRAM地址或卷動(dòng)地址0001AC5AC4AC3AC2AC1AC0SR=1:AC5-AC0為垂直卷動(dòng)地址SR=0:AC3-AC0為IRAM地址72us設(shè)定繪圖RAM地址001000AC3AC2AC1AC0設(shè)定繪圖GDRAM地址(2個(gè)字節(jié),先送一個(gè)字節(jié)的垂直地址(0X80+0~31),再送一個(gè)字節(jié)的水平地址(0X80+0~15)):垂直地址:AC4-AC0水平地址:AC3-AC072us00AC4AC3AC2AC1AC0

擴(kuò)充指令集:并行方式傳輸:

LCD12864和單片機(jī)并口連接圖并行時(shí)序(將PSB接H為并行模式)

1.寫時(shí)序?qū)憰r(shí)序流程如圖所示:RS為命令/數(shù)據(jù)選擇信號(hào),R/W為讀寫選擇信號(hào),E微操作驅(qū)動(dòng)信號(hào),DB0-DB7為數(shù)據(jù)總線。上圖為寫操作,所以R/W則表明當(dāng)前進(jìn)行的是寫操作。DB0-DB7為單片機(jī)向JHD529M1寫數(shù)據(jù)。2.讀時(shí)序讀時(shí)序流程如圖所示:RS為命令/數(shù)據(jù)選擇信號(hào),R/W為讀寫選擇信號(hào),E為操作驅(qū)動(dòng)信號(hào),DB0-DB7為數(shù)據(jù)總線。當(dāng)寫入命令11111100B時(shí),R/W為H,RS為L,不需要延時(shí),控制器會(huì)馬上讀出當(dāng)前的AC值。然后進(jìn)行判忙等操作。當(dāng)發(fā)送11111110B時(shí),R/W為H,RS為H,驅(qū)動(dòng)控制器會(huì)把當(dāng)前地址計(jì)數(shù)器的數(shù)據(jù)發(fā)送出來。讀數(shù)據(jù)要延時(shí)72us。串行模式LCD12864和單片機(jī)串行模式連接圖(將PSB接L為串行模式,串行模式只需三根線)串行模式寫時(shí)序和讀時(shí)序是一樣的流程,串行口時(shí)序圖如下圖:

串行模式下輸入11111100后,驅(qū)動(dòng)控制器會(huì)輸出兩個(gè)字節(jié)的數(shù)據(jù),分別為DDDD0000和0000DDDD,最高位為判忙狀態(tài)位。讀LCM狀態(tài)(測(cè)試忙/閑)unsignedcharDectectBusyBit(void)//狀態(tài)判斷函數(shù)(忙/閑?忙時(shí)返回1,閑時(shí)返回0)寫命令voidWrComLCD(unsignedcharComVal)寫數(shù)據(jù)voidWrDatLCD(unsignedcharDatVal)坐標(biāo)定位(設(shè)置DDRAM地址AC)//函數(shù)名稱:PosLCD()//函數(shù)功能:輸入定位//入口參數(shù):無//出口參數(shù):無/*******************************************************/voidPosLCD(uChar8X,uChar8Y)//設(shè)置顯示漢字的行列坐標(biāo)(X:1-4行、Y:0-7列){ uChar8ucPos; if(X==1) {X=0x80;} //第一行

elseif(X==2) {X=0x90;} //第二行

elseif(X==3) {X=0x88;} //第三行

elseif(X==4) {X=0x98;} //第四行

ucPos=X+Y; //計(jì)算地址

WrComLCD(ucPos); //顯示地址}初始化//函數(shù)名稱:LCD_Init()//函數(shù)功能:初始化LCD//入口參數(shù):無//出口參數(shù):無/*******************************************************/voidLCD_Init(void){ WrComLCD(0x30);//功能設(shè)定:8位數(shù)據(jù)接口、選擇基本指令

delay(10);

WrComLCD(0x01);//顯示清屏

delay(10);

WrComLCD(0x0C);//顯示設(shè)置:開顯示、游標(biāo)關(guān)、不反白delay(10);}【例1】12864液晶顯示實(shí)例(基于ST7920)實(shí)現(xiàn)在12864液晶(帶字庫)上顯示漢字,要求如下:第一行顯示"天生我才必有用,"第二行顯示"千金散盡還復(fù)來。"第三行顯示"--李白"第四行顯示"單片機(jī)愛好者共勉"源程序繪圖RAM(GDRAM)

繪圖顯示RAM提供64×32個(gè)位元組的記憶空間,在更改繪圖RAM時(shí),先連續(xù)寫入水平與垂直的坐標(biāo)值,再寫入兩個(gè)8位元的資料到繪圖RAM,而地址計(jì)數(shù)器(AC)會(huì)自動(dòng)加一;在寫入繪圖RAM的期間,繪圖顯示必須關(guān)閉,整個(gè)寫入繪圖RAM的步驟如下:

1關(guān)閉繪圖顯示功能。

2先將水平的位元組坐標(biāo)(X)寫入繪圖RAM地址;

3再將垂直的坐標(biāo)(Y)寫入繪圖RAM地址;

4將D15——D8寫入到RAM中;

5將D7——D0寫入到RAM中;

6打開繪圖顯示功能。按點(diǎn)陣顯示漢字、圖片若LCM模塊自帶漢字字庫,該字庫中的字型碼均為宋體的,無法按照其他字體顯示。

若LCM模塊不帶漢字字庫時(shí)要想顯示漢字的話,需將漢字當(dāng)成點(diǎn)陣圖形來顯示,可以得到漢字多種字體的點(diǎn)陣圖,能按照不同字體顯示漢字。首先要去取漢字對(duì)應(yīng)的點(diǎn)陣圖形,將其寫入GDRAM,按照繪圖顯示。這里需要用到取模軟件,該軟件既可以取漢字的點(diǎn)陣數(shù)據(jù),也可以取圖片的點(diǎn)陣數(shù)據(jù)。ST7920是按行寫的,應(yīng)該選擇橫向取模KS0108是按列寫的,應(yīng)該選擇縱向取模程序的編寫與取模順序有很大的關(guān)系,一定要注意,要搞清楚取模順序漢字取模01。單擊“模式”菜單設(shè)置為“字符模式”02。單擊“選項(xiàng)”菜單設(shè)置為“取模方式”為逐列方式,“C51格式”03。在“生成字模”左邊的文本框中輸入漢字。04。單擊“生成字?!?5。單擊“保存字?!睂Ⅻc(diǎn)陣數(shù)據(jù)保存到TXT文件圖片取模01。單擊“模式”菜單設(shè)置為“圖形模式”02。單擊“選項(xiàng)”菜單設(shè)置為“取模方式”為逐列方式,“C51格式”03。單擊“文件”中的“打開”,選擇圖片(圖片類型:單色BMP(因?yàn)?28*64只能顯示單色的圖像),像素128*64(像素大了則一屏顯示不完,要編程移屏,)04。單擊“生成字?!?5。單擊“保存字?!睂Ⅻc(diǎn)陣數(shù)據(jù)保存到TXT文件LCD繪制圖片voidLcdDrawPicture(unsignedchar*pPicture){ unsignedchari,j; WrComLCD(0x34);//寫數(shù)據(jù)時(shí),選擇擴(kuò)充指令,關(guān)閉圖形顯示

/*====先操作上半屏====*/ for(i=0;i<32;i++)//i用來控制垂直地址Y(0~31)

{

WrComLCD(0x80+i); //先寫垂直坐標(biāo)值

WrComLCD(0x80+0); //再寫水平坐標(biāo)值,上半屏水平地址X是(0-7)//每寫入一幀數(shù)據(jù)(16位)后自動(dòng)增加1for(j=0;j<16;j++) //一幀數(shù)據(jù)分兩次寫,共8幀

WrDatLCD(*pPicture++);//先高8位,后低8位

} /*====后操作下半屏====*/ for(i=0;i<32;i++) {WrComLCD(0x80+i); WrComLCD(0x80+8);//下半屏水平地址X是(8-15) for(j=0;j<16;j++) WrDatLCD(*pPicture++); } WrComLCD(0x36);//寫完數(shù)據(jù),開圖形顯示}源程序【例2】12864液晶顯示實(shí)例(基于ST7920)實(shí)現(xiàn)在12864液晶(不帶字庫)上顯示漢字,要求如下:第一行顯示"天生我才必有用,"第二行顯示"千金散盡還復(fù)來。"第三行顯示"--李白"第四行顯示"單片機(jī)愛好者共勉"源程序【例3】12864液晶顯示實(shí)例(基于ST7920)實(shí)現(xiàn)在12864液晶上顯示圖片漢字???總結(jié):寫字符:先初始化清屏,緊接著設(shè)置指令類別為基本指令集,再寫字符到DDRAM中,然后打開顯示。繪圖:將指令類別設(shè)置為基本指令集,然后清屏,再設(shè)置指令類別為擴(kuò)充指令集將圖像數(shù)據(jù)寫入繪圖顯示RAM(GDRAM)中,打開顯示。注意清屏命令必須在基本指令集設(shè)置下完成。在PROTEUS中有2款128*64液晶模塊:AMPIRE128*64、LGM12641BS1R,它們均不帶中文字庫,也不是采用ST7920控制芯片,而是采用KS0108控制芯片。這里有必要向大家介紹一下128*64的KS0108液晶模塊管腳、指令、及驅(qū)動(dòng)方法。管腳定義:管腳號(hào)管腳名稱LEVER管腳功能描述1VSS(GND)0電源地2VDD(VCC)+5.0V電源電壓3V0-液晶顯示器驅(qū)動(dòng)電壓4D/I(RS)H/LD/I=“H”,表示DB7∽DB0為顯示數(shù)據(jù)D/I=“L”,表示DB7∽DB0為顯示指令5R/WH/LR/W=“H”,讀R/W=“L”,寫6EH/LR/W=“L”,E信號(hào)下降沿鎖存DB7∽DB0R/W=“H”,E=“H”時(shí)DDRAM數(shù)據(jù)讀到DB7∽DB07~14DB0~7H/L數(shù)據(jù)線15CS1H/LH:選擇芯片(右半屏)信號(hào)16CS2H/LH:選擇芯片(左半屏)信號(hào)17RSTH/L復(fù)位信號(hào),低電平復(fù)位18VOUT-1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論