版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ym12864c圖形液晶顯示模塊讀寫測(cè)試(一)、ym12864c模塊一.概述ym12864c 是一種圖形點(diǎn)陣液晶顯示器。它主要采用動(dòng)態(tài)驅(qū)動(dòng)原理由行驅(qū)動(dòng)控制器和列驅(qū)動(dòng)器兩部分組成了128(列)×64(行)的全點(diǎn)陣液晶顯示。此顯示器采用了cob 的軟封裝方式,通過導(dǎo)電橡膠和壓框連接lcd,使其壽命長(zhǎng),連接可靠。二.特性1.工作電壓為+5v±10% ,可自帶驅(qū)動(dòng) lcd 所需的負(fù)電壓。2.全屏幕點(diǎn)陣,點(diǎn)陣數(shù)為128(列)×64(行),可顯示8(/行)×4(行)個(gè)(16×16 點(diǎn)陣)漢字,也可完成圖形,字符的顯示。3.與 cpu 接口采用5 條位控制總
2、線和8 位并行數(shù)據(jù)總線輸入輸出,適配m6800 系列時(shí)序。4.內(nèi)部有顯示數(shù)據(jù)鎖存器,自帶上電復(fù)位電路。5.簡(jiǎn)單的操作指令 顯示開關(guān)設(shè)置,顯示起始行設(shè)置,地址指針設(shè)置和數(shù)據(jù)讀/寫等指令。三硬件說明1)顯示數(shù)據(jù) ram(ddram)ddram(64×8×8 bits)是存儲(chǔ)圖形顯示數(shù)據(jù)的。此ram 的每一位數(shù)據(jù)對(duì)應(yīng)顯示面板上一個(gè)點(diǎn)的顯示(數(shù)據(jù)為h)與不顯示(數(shù)據(jù)為l)。ddram 的地址與顯示位置關(guān)系對(duì)照?qǐng)D(見附錄一)2)i/o 緩沖器(db0db7)i/o 緩沖器為雙向三態(tài)數(shù)據(jù)緩沖器。是lcm(液晶顯示模塊)內(nèi)部總線與mpu總線的結(jié)合部。其作用是將兩個(gè)不同時(shí)鐘下工作的系統(tǒng)連接
3、起來,實(shí)現(xiàn)通訊。i/o緩沖器在片選信號(hào)/cs 有效狀態(tài)下,i/o 緩沖器開放,實(shí)現(xiàn)lcm(液晶顯示模塊)與mpu 之間的數(shù)據(jù)傳遞。當(dāng)片選信號(hào)為無效狀態(tài)時(shí),i/o 緩沖器將中斷l(xiāng)cm(液晶顯示模塊)內(nèi)部總線與mpu 數(shù)據(jù)總線的聯(lián)系,對(duì)外總線呈高阻狀態(tài),從而不影響mpu 的其他數(shù)據(jù)操作功能。3)輸入寄存器輸入寄存器用于接收在 mpu 運(yùn)行速度下傳送給lcm(液晶顯示模塊)的數(shù)據(jù)并將其鎖存在輸入寄存器內(nèi),其輸出將在lcm(液晶顯示模塊)內(nèi)部工作時(shí)鐘的運(yùn)作下將數(shù)據(jù)寫入指令寄存器或顯示存儲(chǔ)器內(nèi)。4)輸出寄存器輸出寄存器用于暫存從顯示存儲(chǔ)器讀出的數(shù)據(jù),在mpu 讀操作時(shí),輸出寄存器將當(dāng)前鎖存的數(shù)據(jù)通過i/
4、o 緩沖器送入mpu 數(shù)據(jù)總線上。5)指令寄存器指令寄存器用于接收 mpu 發(fā)來的指令代碼,通過譯碼將指令代碼置入相關(guān)的寄存器或觸發(fā)器內(nèi)。6)狀態(tài)字寄存器狀態(tài)字寄存器是 lcm(液晶顯示模塊)與mpu 通訊時(shí)唯一的“握手”信號(hào)。狀態(tài)字寄存器向mpu 表示了lcm(液晶顯示模塊)當(dāng)前的工作狀態(tài)。尤其是狀態(tài)字中的“忙”標(biāo)志位是mpu 在每次對(duì)lcm(液晶顯示模塊)訪問時(shí)必須要讀出判別的狀態(tài)位。當(dāng)處于“忙”標(biāo)志位時(shí),i/o 緩沖器被封鎖,此時(shí)mpu 對(duì)lcm(液晶顯示模塊)的任何操作(除讀狀態(tài)字操作外)都將是無效的。7)x 地址寄存器x 地址寄存器是一個(gè)三位頁地址寄存器,其輸出控制著ddram 中8
5、 個(gè)頁面的選擇,也是控制著數(shù)據(jù)傳輸通道的八選一選擇器。x 地址寄存器可以由mpu 以指令形式設(shè)置。x 地址寄存器沒有自動(dòng)修改功能,所以要想轉(zhuǎn)換頁面需要重新設(shè)置x 地址寄存器的內(nèi)容。8)y 地址計(jì)數(shù)器y 地址計(jì)數(shù)器是一個(gè)6 位循環(huán)加一計(jì)數(shù)器。它管理某一頁面上的64 個(gè)單元。y地址計(jì)數(shù)器可以由mpu 以指令形式設(shè)置,它和頁地址指針結(jié)合唯一選通顯示存儲(chǔ)器的一個(gè)單元,y 地址計(jì)數(shù)器具有自動(dòng)加一功能。在顯示存儲(chǔ)器讀/寫操作后y 地址計(jì)數(shù)將自動(dòng)加一。當(dāng)計(jì)數(shù)器加至3fh 后循環(huán)歸零再繼續(xù)加一。9)z 地址計(jì)數(shù)器z 地址計(jì)數(shù)器是一個(gè)6 位地址計(jì)數(shù)器,用于確定當(dāng)前顯示行的掃描地址。z 地址計(jì)數(shù)器具有自動(dòng)加一功能
6、。它與行驅(qū)動(dòng)器的行掃描輸出同步,選擇相應(yīng)的列驅(qū)動(dòng)的數(shù)據(jù)輸出。10)顯示起始行寄存器顯示起始行寄存器是一個(gè) 6 位寄存器,它規(guī)定了顯示存儲(chǔ)器所對(duì)應(yīng)顯示屏上第一行的行號(hào)。該行的數(shù)據(jù)將作為顯示屏上第一行顯示狀態(tài)的控制信號(hào)。11)顯示開/關(guān)觸發(fā)器顯示開/關(guān)觸發(fā)器的作用就是控制顯示驅(qū)動(dòng)輸出的電平以控制顯示屏的開關(guān)。在觸發(fā)器輸出為“關(guān)”電平時(shí),顯示數(shù)據(jù)鎖存器的輸入被封鎖并將輸出置“0”,從而使顯示驅(qū)動(dòng)輸出全部為非選擇波形,顯示屏呈不顯示狀態(tài)。在觸發(fā)器輸出為“開”電平時(shí),顯示數(shù)據(jù)鎖存器被控制,顯示驅(qū)動(dòng)輸出受顯示驅(qū)動(dòng)數(shù)據(jù)總線上數(shù)據(jù)控制,顯示屏將呈顯示狀態(tài)。12)復(fù)位端/res復(fù)位端/res 用于在lcm(液晶
7、顯示模塊)上電時(shí)或需要時(shí)實(shí)現(xiàn)硬件電路對(duì)lcm(液晶顯示模塊)的復(fù)位。該復(fù)位功能將實(shí)現(xiàn): 設(shè)置顯示狀態(tài)為關(guān)顯示狀態(tài) 顯示起始寄存器清零。顯示ram 第一行對(duì)應(yīng)顯示屏上的第一行。 在復(fù)位期間狀態(tài)字中reset 位置“1”。實(shí)物圖13) 模塊引腳圖三 讀寫時(shí)序電路連接圖如下:c源程序代碼如下: 本程序只演示了一行八(每個(gè)字為16*16)個(gè)漢字的顯示,其它部分的顯示與此類同。程序采用上面的原理圖均通過實(shí)測(cè)。#include<reg52.h>sbit lcd_rs=p22; /指令/數(shù)據(jù)選擇端;0為指令,1為數(shù)據(jù)sbit lcd_r
8、w=p21; /讀/寫選擇端;0為寫,1為讀sbit lcd_e=p20; /讀寫脈沖輸入端,下降沿時(shí)數(shù)據(jù)寫入lcd中,高電平時(shí)從lcd中讀出數(shù)據(jù)sbit lcd_cs1=p27; /左半屏片選端,低電平有效sbit lcd_cs2=p26; /右半屏片選端,低電平有效void lcd_init(); /ym12864c圖形顯示模塊初始化函數(shù)聲明unsigned char lcd_busf(); /ym12864c忙檢測(cè)函數(shù)聲明void lcd_l_comd(unsigned char l_comd); /向ym12864c左半屏寫指令函數(shù)聲明void lcd_r_comd(unsigned
9、char r_comd); /向ym12864c右半屏寫指令函數(shù)聲明void lcd_l_data(unsigned char l_wdata); /向ym12864c左半屏寫顯示數(shù)據(jù)函數(shù)聲明void lcd_r_data(unsigned char r_wdata); /向ym12864c右半屏寫顯示數(shù)據(jù)函數(shù)聲明void lcd_write_l(unsigned char page,unsigned char lie,unsigned char number,unsigned char *wdata); /向ym12864c的指定頁,指定列,寫入8或16字節(jié)的顯示數(shù)據(jù)void lcd_wri
10、te_r(unsigned char page,unsigned char lie,unsigned char number,unsigned char *wdata); /向ym12864c的指定頁,指定列,寫入8或16字節(jié)的顯示數(shù)據(jù)/* (16 x 16 , 宋體 );陰碼,逆向取模(低位在前),列行式,c51格式,16進(jìn)制 */* 顯示掃描從左上角第1列(豎為列,橫為行)向下,從左到右掃描 */ /采用pctolcd2002字模軟件提取unsigned char code displ= /左半屏第1與2頁的顯示編碼0x24,0x28,0xe0,0x3f,0xe0,0x2c,0x23,0x
11、d5,0xa9,0xbf,0xc0,0x95,0x89,0xbf,0x00,0x00,0x40,0x30,0x0f,0x10,0x3f,0x12,0x09,0xff,0x4a,0x4a,0x7f,0x4a,0x4a,0x4a,0x40,0x00,/*"耀",0*/0x00,0x10,0x0c,0x24,0x24,0x24,0x24,0x25,0xe6,0x24,0x24,0x24,0x14,0x0c,0x04,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7f,0x01,0x01,0x01,0x01,0x01,0x00,0x0
12、0,/*"宇",1*/0x10,0x12,0x92,0x72,0xfe,0x51,0x91,0x00,0x22,0xcc,0x00,0x00,0xff,0x00,0x00,0x00,0x04,0x02,0x01,0x00,0xff,0x00,0x04,0x04,0x04,0x02,0x02,0x02,0xff,0x01,0x01,0x00,/*"科",2*/0x08,0x08,0x88,0xff,0x48,0x28,0x00,0xc8,0x48,0x48,0x7f,0x48,0xc8,0x48,0x08,0x00,0x01,0x41,0x80,0x7f,
13、0x00,0x40,0x40,0x20,0x13,0x0c,0x0c,0x12,0x21,0x60,0x20,0x00;/*"技",3*/unsigned char code dispr= /右半屏第1與2頁的顯示編碼0x00,0x10,0x10,0x10,0x90,0x70,0x00,0xff,0x20,0x60,0x90,0x08,0x04,0x00,0x00,0x00,0x10,0x10,0x08,0x06,0x01,0x40,0x80,0x7f,0x00,0x00,0x01,0x06,0x0c,0x18,0x08,0x00,/*"水",0*/0x
14、00,0x00,0xfc,0x84,0x84,0x84,0x84,0xfc,0x84,0x84,0x84,0x84,0xfc,0x00,0x00,0x00,0x00,0x00,0x7f,0x10,0x10,0x10,0x10,0x1f,0x10,0x10,0x10,0x10,0x7f,0x00,0x00,0x00,/*"田",1*/0x00,0x42,0x62,0x5a,0xc6,0x10,0x54,0x54,0x54,0xff,0x54,0x54,0x7c,0x10,0x10,0x00,0x40,0x23,0x14,0x08,0x17,0x28,0x29,0x49,0x4
15、9,0x7f,0x49,0x49,0x49,0x49,0x40,0x00,/*"建",2*/0x10,0x21,0x86,0x70,0x00,0x02,0x8a,0x92,0x42,0x46,0x19,0x81,0x81,0x91,0x8d,0x00,0x04,0xfc,0x03,0x00,0x00,0x00,0xff,0x44,0x44,0x44,0x40,0x44,0x44,0x44,0xff,0x00;/*"滔",3*/main() lcd_init(); /ym12864c圖形顯示模塊初始化 lcd_write_l(1,1,16,&dis
16、pl0); /向左半屏,第1頁,第1列,寫入16字節(jié)的顯示數(shù)據(jù)(即該字的上半部分) lcd_write_l(2,1,16,&displ16); /向左半屏,第2頁,第1列,寫入16字節(jié)的顯示數(shù)據(jù)(即該字的下半部分) lcd_write_l(1,17,16,&displ32); lcd_write_l(2,17,16,&displ48); lcd_write_l(1,33,16,&displ64); lcd_write_l(2,33,16,&displ80); lcd_write_l(1,49,16,&displ96); lcd_write_l(2
17、,49,16,&displ112); lcd_write_r(1,1,16,&dispr0); /向右半屏,第1頁,第1列,寫入16字節(jié)的顯示數(shù)據(jù)(即該字的上半部分) lcd_write_r(2,1,16,&dispr16); /向右半屏,第2頁,第1列,寫入16字節(jié)的顯示數(shù)據(jù)(即該字的下半部分) lcd_write_r(1,17,16,&dispr32); lcd_write_r(2,17,16,&dispr48); lcd_write_r(1,33,16,&dispr64); lcd_write_r(2,33,16,&dispr80)
18、; lcd_write_r(1,49,16,&dispr96); lcd_write_r(2,49,16,&dispr112); while(1);/*函數(shù)名稱:lcd_init函數(shù)功能:lcd12864c初始化入口參數(shù):出口參數(shù):其 它:*/void lcd_init() lcd_r_comd(0xc0); /顯示起始行設(shè)置,它規(guī)定了顯示屏上最頂一行所對(duì)應(yīng)的顯示存儲(chǔ)器的行地址 lcd_l_comd(0xc0); /取值范圍c0ff,(對(duì)應(yīng)164行) lcd_r_comd(0xb8); /頁地址設(shè)置,從左上角向左下角每8行為1頁,取值范圍b8bf(對(duì)應(yīng)18頁) lcd_l_co
19、md(0xb8); lcd_r_comd(0x40); /列地址設(shè)置,從左上角第1列開始掃描顯示,取值范圍407f(對(duì)應(yīng)164列) lcd_l_comd(0x40); lcd_r_comd(0x3f); /3f開顯示,3e關(guān)顯示 lcd_l_comd(0x3f);/*函數(shù)名稱:lcd_busf函數(shù)功能:讀lcd12864c忙標(biāo)志位入口參數(shù):出口參數(shù):temp返回忙閑狀態(tài);0為閑,1為忙其 它:*/unsigned char lcd_busf() unsigned char temp=0; p2=0x3a; /左右半屏同時(shí)選中,讀忙標(biāo)志位 p0=0xff; p2=0x3b; /e=0 temp=
20、p0; if(temp&0x80)=0x80) temp=1; else temp=0; p2=0xfa; /e=0;左右半屏均不選中 return(temp); /返回0為閑,1為忙/*函數(shù)名稱:lcd_l_write函數(shù)功能:向lcd12864左半屏寫指令入口參數(shù):comd 中的內(nèi)容為寫入的指令出口參數(shù):其 它:*/void lcd_l_comd(unsigned char l_comd) while(lcd_busf(); /等待lcd12864c空閑 p2=0x78; /選擇左半屏,寫指令,e=0,rs=0,rw=0,cs1=0 p0=l_comd; p2=0x79; /e=1
21、 p2=0x78; /e=0/*函數(shù)名稱:lcd_r_write函數(shù)功能:向lcd12864c右半屏寫指令入口參數(shù):comd 中的內(nèi)容為寫入的指令出口參數(shù):其 它:*/void lcd_r_comd(unsigned char r_comd) while(lcd_busf(); p2=0xb8; /cs2=0,rs=0,rw=0,e=0 p0=r_comd; p2=0xb9; /e=1 p2=0xb8; /e=0/*函數(shù)名稱:lcd_l_data函數(shù)功能:向lcd12864c左半屏寫數(shù)據(jù)入口參數(shù):wdata 中的內(nèi)容為寫入的數(shù)據(jù)出口參數(shù):其 它:*/void lcd_l_data(unsign
22、ed char l_wdata) while(lcd_busf(); p2=0x7c; /cs1=0,rs=1,rw=0,e=0 p0=l_wdata; p2=0x7d; /e=1 p2=0x7c; /e=0/*函數(shù)名稱:lcd_r_data函數(shù)功能:向lcd12864c右半屏寫數(shù)據(jù)入口參數(shù):data 中的內(nèi)容為寫入的數(shù)據(jù)出口參數(shù):其 它:*/void lcd_r_data(unsigned char r_wdata) while(lcd_busf(); p2=0xbc; /cs2=0,rs=1,rw=0,e=0 p0=r_wdata; p2=0xbd; /e=1 p2=0xbc; /e=0/
23、*函數(shù)名稱:lcd_write_l函數(shù)功能:寫lcd12864c左半屏,從x頁,n列開始寫入number字節(jié)數(shù)據(jù)入口參數(shù):page 為頁數(shù)取值范圍18,lie表示從哪一列開始寫入顯示數(shù)據(jù)取值范圍164,number 為寫 入的列的列數(shù)(即字節(jié)數(shù))取值范圍164,wdata 中的內(nèi)容為寫入的顯示數(shù)據(jù)。出口參數(shù):其 它:*/void lcd_write_l(unsigned char page,unsigned char lie,unsigned char number,unsigned char *wdata) unsigned char i; lcd_l_comd(0xb7+page); lc
24、d_l_comd(0x3f+lie); for(i=0;i<number;i+) lcd_l_data(*wdata);wdata+; /*函數(shù)名稱:lcd_write_r函數(shù)功能:寫lcd12864c右半屏,從x頁,n列開始寫入number字節(jié)數(shù)據(jù)入口參數(shù):page 為頁數(shù)取值范圍18,lie表示從哪一列開始寫入顯示數(shù)據(jù)取值范圍164,number 為寫 入的列的列數(shù)(即字節(jié)數(shù))取值范圍164,wdata 中的內(nèi)容為寫入的顯示數(shù)據(jù)。出口參數(shù):其 它:*/void lcd_write_r(unsigned char page,unsigned char lie,unsigned char
25、 number,unsigned char *wdata) unsigned char i; lcd_r_comd(0xb7+page); lcd_r_comd(0x3f+lie); for(i=0;i<number;i+) lcd_r_data(*wdata);wdata+; 匯編讀寫子程序(源代碼)如下:cs1 bit p2.7 ;片選左cs2 bit p2.6 ;片選右rs bit p2.2 ;指令/數(shù)據(jù)寄存器選擇rw bit p2.1 ;讀/寫選擇e bit p2.0 ;時(shí)鐘信號(hào)輸出端,下降沿時(shí)lcm發(fā)送或接收數(shù)據(jù)com equ 25h ;指令暫存器dat equ 26h ;數(shù)據(jù)
26、暫存器;1左區(qū)驅(qū)動(dòng)子程序;1)寫指令代碼子程序(左)prl0: clr cs1setb cs2clr rs ; rs=0setb rw ; r/w=1prl01: clr emov p0,#0ffh ; p1 口置“1”setb e ; e=1jb p0.7,prl01 ; 判忙標(biāo)志為“0”否,否再讀clr e ; e=0clr rw ; r/w=0mov p0,com ; 寫指令代碼setb e ; e=1clr e ; e=0ret;2)寫顯示數(shù)據(jù)子程序(左)prl1: clr cs1setb cs2clr rs ; rs=0setb rw ; r/w=1prl11: clr emov p0,#0ffh ; p1 口置“1”setb e ; e=1jb p0.7,prl11 ; 判忙標(biāo)志為“0”否,否再讀clr e ; e=0setb rs ; rs=1clr rw ; r/w=0mov p0,dat ; 寫數(shù)據(jù)setb e ; e=1clr e ; e=0ret;3)讀顯示數(shù)據(jù)子程序(左)prl2: clr cs1setb c
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房地產(chǎn)借款合同質(zhì)押協(xié)議3篇
- 2025版辦公室裝修材料采購(gòu)及施工監(jiān)理合同范本3篇
- 2025年度環(huán)保設(shè)備采購(gòu)質(zhì)保金與履約保證金協(xié)議3篇
- 二零二五年度保險(xiǎn)合同-保險(xiǎn)范圍與保險(xiǎn)金額2篇
- 2025年度新能源發(fā)電項(xiàng)目投資合作協(xié)議2篇
- 2025年同學(xué)聚會(huì)班長(zhǎng)致辭模版(2篇)
- 2025年度網(wǎng)絡(luò)系統(tǒng)建設(shè)與維護(hù)協(xié)議3篇
- 觀察花的課程設(shè)計(jì)
- 車間質(zhì)檢職責(zé)內(nèi)容模版(2篇)
- 2025年信息化工作個(gè)人工作總結(jié)(2篇)
- 胸腔積液-課件
- 公司設(shè)備轉(zhuǎn)讓合同協(xié)議書
- 2023年全國(guó)統(tǒng)一建筑工程預(yù)算工程量計(jì)算規(guī)則完整版
- cn.7a一種醬香型大曲酒固態(tài)發(fā)酵的生態(tài)控制方法
- TLFSA 003-2020 危害分析與關(guān)鍵控制點(diǎn)(HACCP)體系調(diào)味面制品生產(chǎn)企業(yè)要求
- LY/T 2244.3-2014自然保護(hù)區(qū)保護(hù)成效評(píng)估技術(shù)導(dǎo)則第3部分:景觀保護(hù)
- GB/T 8491-2009高硅耐蝕鑄鐵件
- 供水安全與搶修
- DB31 595-2021 冷庫單位產(chǎn)品能源消耗指標(biāo)
- 第三章果蔬采后生理課件
- 【英語手寫體】26英文字母手寫體描紅書寫字帖
評(píng)論
0/150
提交評(píng)論