液晶顯示技術(shù)T6963C的使用C語言_第1頁
液晶顯示技術(shù)T6963C的使用C語言_第2頁
液晶顯示技術(shù)T6963C的使用C語言_第3頁
液晶顯示技術(shù)T6963C的使用C語言_第4頁
液晶顯示技術(shù)T6963C的使用C語言_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、T6963C的使用(C語言)內(nèi)置T6963C的128×128圖形液晶顯示模塊從圖1我們可以看出:(1)偏壓電路的設(shè)計(jì)液晶顯示驅(qū)動(dòng)電源采用了1/13偏壓電路(),電阻R1R5組成了分壓電路,其中:R1=R2=R4=R5=R,R3的值為()R。驅(qū)動(dòng)負(fù)電源由接口V0提供。(2)驅(qū)動(dòng)電路的組成在液晶顯示驅(qū)動(dòng)控制系統(tǒng)中,由兩片T6A39列驅(qū)動(dòng)器和兩片T6A40行驅(qū)動(dòng)器組成驅(qū)動(dòng)電路。(3)T6963C工作參數(shù)的設(shè)置T6963C的工作參數(shù)設(shè)置如下:/DUAL=1 單屏結(jié)構(gòu)SDSEL=0 一位串行數(shù)據(jù)傳輸MDS=1、MDl=MD0=0 N=16即1/128占空比系數(shù)MD2=MD3=1 M=32即25

2、6點(diǎn)列/行FS0=0 通過計(jì)算機(jī)選擇6×8點(diǎn)陣字體或8×8點(diǎn)陣字體(4)晶振頻率選擇根據(jù)T6963的設(shè)置參數(shù)可以求得:Fosc= FR×64×2×M×N =60×64×2×32×16=3.932MHz。通過查表6-32也可以得到頻率值,大小也為3.932MHz。這個(gè)時(shí)候,選用4MHz的晶振。(5)顯示存儲(chǔ)器顯示存儲(chǔ)器為8K字節(jié)容量,存儲(chǔ)器芯片為6264或其它SRAM。圖1 內(nèi)置T6963C的128×128圖形液晶顯示模塊的電原理圖內(nèi)置T6963C控制器的液晶顯示模塊的接口技術(shù)內(nèi)置T69

3、63C控制器的液晶顯示模塊與計(jì)算機(jī)的接口時(shí)序?yàn)镮nter8080時(shí)序。本節(jié)以常用的單片機(jī)AT89C51為實(shí)驗(yàn)樣機(jī),以模塊128128為顯示樣片敘述計(jì)算機(jī)與內(nèi)置T6963C控制器的液晶顯示模塊的接口技術(shù)。1 直接訪問方式直接訪問方式是把內(nèi)置T6963C控制器的液晶顯示模塊作為存儲(chǔ)器或I/O設(shè)備直接掛在計(jì)算機(jī)的總線上。模塊的數(shù)據(jù)線接計(jì)算機(jī)的數(shù)據(jù)總線上,片選及寄存器選擇信號(hào)線由計(jì)算機(jī)的地址總線提供,讀和寫操作由計(jì)算機(jī)的讀寫操作信號(hào)控制。計(jì)算機(jī)直接訪問方式下與內(nèi)置T6963C控制器的液晶顯示模塊的實(shí)用接口電路如圖1所示。圖1 直接訪問方式下接口電路圖上圖所示的電路,對于完成液晶顯示模塊的顯示來說,所用

4、的硬件是相對比較少的,但是如果計(jì)算機(jī)需要進(jìn)行擴(kuò)展的話,使用上圖的話不是很經(jīng)濟(jì)(浪費(fèi)了太多的地址空間)。這個(gè)時(shí)候,可以考慮使用全地址譯碼或者部分地址譯碼的方式。在上圖所示的電路中:8位數(shù)據(jù)總線與AT89C51的數(shù)據(jù)總線連接地址線A15作為模塊操作的片選線地址線A14作為模塊的寄存器選擇線C/D這樣就確定了AT89C51操作字符型液晶顯示模塊的唯一地址選擇。圖中的電位器為V0提供了可調(diào)的驅(qū)動(dòng)電壓,用以實(shí)現(xiàn)顯示對比度的調(diào)節(jié)。以下將給出直接訪問方式的驅(qū)動(dòng)程序。(1)地址定義#include <reg51.h>#include <stdio.h>#include <intr

5、ins.h>#define uchar unsigned char#define uint unsigned int#define nop() _nop_()xdata uchar CmdADD _at_ 0xC000;xdata uchar DatADD _at_ 0x8000; #define STA0 0#define STA1 1#define STA2 2#define STA3 3#define STA6 6(2)讀狀態(tài)字與狀態(tài)判斷uchar ReadST(uchar Status) uchar temp; temp=CmdADD; switch(status) case 0

6、: temp&=0x01; /*屏蔽其余位*/ break; case 1: temp&=0x02; /*屏蔽其余位*/ break; case 2: temp&=0x04; /*屏蔽其余位*/ break; case 3: temp&=0x08; /*屏蔽其余位*/ break; case 6: temp&=0x40; /*屏蔽其余位*/ break; default:break; return temp;(3)寫指令和寫數(shù)據(jù)/*寫入一個(gè)字節(jié)的數(shù)據(jù)*/void WrDat(uchar dat) while(ReadST(STA1)=0x00) DatA

7、DD=dat;/*寫入無參數(shù)的命令*/void WrCom1(uchar cmd) while(ReadST(STA0)=0x00) CmdADD=cmd;/*寫入帶一個(gè)參數(shù)的命令*/void WrCom2(uchar dat,cmd) WrDat(dat); Com1(cmd);/*寫入帶兩個(gè)參數(shù)的命令*/void WrCom3(uchar dat1,dat2,cmd) WrDat(dat1); WrDat(dat2); WrCom1(cmd);(4)讀數(shù)據(jù)uchar RdDat(void) uchar temp; while(ReadST(STA1)=0x00) temp=DatADD;

8、return temp;2 間接控制方式間接控制方式是將內(nèi)置T6963C控制器的液晶顯示模塊與計(jì)算機(jī)系統(tǒng)中的某個(gè)并行I/O接口連接,計(jì)算機(jī)通過對該I/O接口的操作間接的實(shí)現(xiàn)對模塊的控制。本文以AT89C51的P1和P2接口為并行接口與字符型液晶顯示模塊連接,圖2給出了本文推薦的實(shí)用接口電路。圖2 間接控制方式下的接口電路圖圖中的電位器為V0提供了可調(diào)的驅(qū)動(dòng)電壓,用以實(shí)現(xiàn)顯示對比度的調(diào)節(jié)。在編制驅(qū)動(dòng)函數(shù)的時(shí)候,要注意時(shí)序的配合,根據(jù)Intel8080時(shí)序的規(guī)范,間接控制方式通過軟件執(zhí)行產(chǎn)生操作時(shí)序,所以在時(shí)間上是足夠滿足要求的。因此間接控制方式能夠?qū)崿F(xiàn)高速計(jì)算機(jī)與字符型液晶顯示模塊的連接。(1)

9、接口定義#include <reg51.h>#include <stdio.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define nop() _nop_()#define STA0 0#define STA1 1#define STA2 2#define STA3 3#define STA6 6sbit CD=P27;sbit CE=P26;sbit RD=P25;sbit WR=P24;(2)讀狀態(tài)字與狀態(tài)判斷uchar ReadST(uchar

10、Status) uchar temp; CE=0; P1=0xFF; CD=1; RD=0; temp=P1; RD=1; switch(status) case 0: temp&=0x01; /*屏蔽其余位*/ break; case 1: temp&=0x02; /*屏蔽其余位*/ break; case 2: temp&=0x04; /*屏蔽其余位*/ break; case 3: temp&=0x08; /*屏蔽其余位*/ break; case 6: temp&=0x40; /*屏蔽其余位*/ break; default:break; ret

11、urn temp;(3)寫指令和寫數(shù)據(jù)/*寫入一個(gè)字節(jié)的數(shù)據(jù)*/void WrDat(uchar dat) while(ReadST(STA1)=0x00) CD=0; P1=dat; WR=0; WR=1;/*寫入無參數(shù)的命令*/void WrCom1(uchar cmd) while(ReadST(STA0)=0x00) CD=1; P1=dat; WR=0; WR=1;/*寫入帶一個(gè)參數(shù)的命令*/void WrCom2(uchar dat,cmd) WrDat(dat); Com1(cmd);/*寫入帶兩個(gè)參數(shù)的命令*/void WrCom3(uchar dat1,dat2,cmd) W

12、rDat(dat1); WrDat(dat2); WrCom1(cmd);(4)讀數(shù)據(jù)uchar RdDat(void) uchar temp; while(ReadST(STA1)=0x00) CD=0; P1=0xFF; RD=0; temp=P1; RD=1; return temp;內(nèi)置T6963C控制器型圖形液晶顯示模塊的應(yīng)用軟件內(nèi)置T6963C圖形液晶顯示模塊的應(yīng)用是隨應(yīng)用系統(tǒng)的性質(zhì)而定,本節(jié)將提供一些實(shí)用程序并作為示例進(jìn)一步對T6963C指令的應(yīng)用作一說明。接口電路為圖2和圖3所示的實(shí)用電路,驅(qū)動(dòng)程序也為上一節(jié)所提供的。使用的液晶顯示模塊的樣機(jī)的電原理圖為圖6-66所示的128&

13、#215;128圖形點(diǎn)陣的原理圖,供使用者參考。1 初始化設(shè)置初始化設(shè)置主要是對顯示區(qū)域的設(shè)置和顯示方式的設(shè)置。這個(gè)程序只需在主程序?qū)ο到y(tǒng)初始化時(shí)調(diào)用一次就可以了,除非要在應(yīng)用中需要改變設(shè)置。是為了計(jì)算地址的方便,設(shè)置顯示區(qū)域的寬度為10H,即16個(gè)字節(jié)(128/8=16)。初始化子程序通常在主程序開始時(shí)調(diào)用。void Init(void) WrCom3(0x00,0x00,0x40); WrCom3(0x10,0x00,0x41); WrCom3(0x00,0x08,0x42); WrCom3(0x10,0x00,0x43); WrCom1(0xA7); WrCom1(0x80); WrCo

14、m1(0x9C);2 清顯示存儲(chǔ)器該子程序?qū)︼@示存儲(chǔ)器完全清零,不分顯示區(qū)域性質(zhì)。所以在初始化時(shí)使用和在全顯示存儲(chǔ)器需要清零時(shí)使用。void ClearLCD(void) uint temp; WrCom3(0x00,0x00,0x24); WrCom1(0xB0); for(temp=0;temp<8192;temp+) while(ReadST(STA3)=0x00) WrDat(0x00); WrCom1(0xB2);3 建立CGRAM該程序是在內(nèi)部CGROM有效時(shí)建立CGRAM的子程序,所以使用的字符代碼是從80H開始的。一般在建立CGRAM的時(shí)候,把CGRAM定義在SRAM的最

15、后面的一段地址空間內(nèi),在本段代碼中,因?yàn)镃GROM有效,所以只能定義128個(gè)CGRAM,占用的空間為1KB,地址空間為1C00H1FFFH。這個(gè)時(shí)候,可以看出起始地址的偏置地址值與字符代碼值的大小如下:ad15ad14ad13ad12ad11ad10ad9ad8ad7ad6ad5ad4ad3ad2ad1ad00001110000000000偏置地址值為03H;字符代碼從80H開始。void WrCGRAM(uchar count,*tab) uint temp,counttemp; counttemp=count<<3; WrCom3(0x03,0x00,0x22); WrCom3

16、(0x00,0x1C,0x24); WrCom1(0xB0); for(temp=0;temp<counttemp;temp+) while(ReadST(STA3)=0x00) WrDat(*(tab+temp); WrCom1(0xB2);4 西文字符寫入(文本屬性顯示方式的應(yīng)用)非文本屬性顯示方式的西文字符寫入非常簡單,先設(shè)置顯示地址指針(24H),再寫入字符代碼即可。所以這里就不再舉例說明了。該程序使用了字符代碼和字符顯示屬性兩個(gè)參數(shù)。將圖形顯示區(qū)域作為文本屬性區(qū)。在寫入字符代碼后將字符的屬性參數(shù)寫入相應(yīng)的屬性區(qū)內(nèi)。注意觀察不同屬性的顯示效果。/字模,屬性,列,行void WrT

17、XT(uchar code,pred,o_x,o_y) uchar temp,addr1,addr2; uint addr; addr=o_y<<4+o_x; addr1=addr; addr2=addr>>8; WrCom3(addr1,addr2,0x24); WrCom2(code,0xC4); addr2+=8; WrCom3(addr1,addr2,0x24); WrCom2(pred,0xC4);uchar code TXTTAB=0x28,0x45,0x4C,0x4C,0x4F,0x00,0x37,0x4F,0x52,0x4C,0x44;void Disp

18、TXT(void) uchar temp1,temp2; WrCom1(0x84); WrCom1(0x9F); WrCom3(8,1,0x21); for(temp1=0;temp1<13;temp1+) for(temp2=0;temp1<11;temp2+) WrTXT(*(TXTTAB+temp2),temp1,temp2,1); Delayms(200); 5 漢字寫入(圖形方式)在圖形方式下顯示漢字是比較常用的方法。漢字庫作在程序區(qū)內(nèi),按排序定義各漢字的代碼。寫入漢字字模如同寫入圖形數(shù)據(jù)一般,這里提供單字節(jié)漢字代碼使用的漢字寫入子程序。在這個(gè)程序段中,將128×

19、;128的液晶顯示屏分成了8行8列共64個(gè)16×16的顯示區(qū)域,每個(gè)區(qū)域顯示一個(gè)漢字。/顯示漢字,某行某列/這個(gè)函數(shù)將128×128分為8行8列共64個(gè)區(qū)域,每個(gè)對應(yīng)一個(gè)16×16點(diǎn)陣的漢字/字模數(shù)組,列,行,字模void WrCC(uchar *zimo,o_x,o_y,uint code) uchar i,addr1,addr2; uint addr; addr=o_y<<8+o_x<<2; addr1=addr; addr2=addr>>8; code<<=5; for(i=0;i<16;i+) WrCo

20、m3(addr1+i*16,8+addr2,0x24); WrCom2(*(zimo+code),0xC0); code+; WrCom2(*(zimo+code),0xC4); code+; uchar code CCTAB=/*- 文字: 液 代碼“0x00”*/0x40,0x40,0x20,0x20,0x27,0xFE,0x09,0x20,0x89,0x20,0x52,0x7C,0x52,0x44,0x16,0xA8,0x2B,0x98,0x22,0x50,0xE2,0x20,0x22,0x30,0x22,0x50,0x22,0x88,0x23,0x0E,0x22,0x04,/*- 文字

21、: 晶 代碼“0x01”*/0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x00,0x00,0x7E,0x7E,0x42,0x42,0x7E,0x7E,0x42,0x42,0x42,0x42,0x7E,0x7E,0x42,0x42,0x00,0x00,/*- 文字: 顯 代碼“0x02”*/0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x04,0x40,0x04,0x40,0x44,0x48,0x24,0x48,0x14,0

22、x50,0x14,0x60,0x04,0x40,0xFF,0xFE,0x00,0x00,0x00,0x00,/*- 文字: 示 代碼“0x03”*/0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x11,0x20,0x11,0x10,0x21,0x08,0x41,0x0C,0x81,0x04,0x01,0x00,0x05,0x00,0x02,0x00,;6 屏讀演示程序段屏讀操作是依據(jù)T6963C引腳MD3,MD2設(shè)置的顯示窗口長度參數(shù)操作的。在128128液晶顯示模塊上顯示窗長度設(shè)置為256點(diǎn),即32個(gè)字節(jié)長,所以在應(yīng)用屏讀操作時(shí),要設(shè)置文本區(qū)和圖形區(qū)的寬度與引腳設(shè)置參數(shù)相等才能正確的使用。這樣做圖形區(qū)的地址與文本區(qū)的地址才能對應(yīng)起來。下面提供的演示程序是將在文本顯示下的“H”和“C”屏讀寫入相應(yīng)的圖形區(qū)中,然后關(guān)文本顯示以觀看顯示效果這兩個(gè)字符依然存在。uchar LCDRdData8; void LCDRead(uchar o_x,o_y) uchar te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論