www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]12864點(diǎn)陣液晶顯示模塊(LCM)就是由128*64個(gè)液晶顯示點(diǎn)組成的一個(gè)128列*64行的陣列。每個(gè)顯示點(diǎn)對(duì)應(yīng)一位二進(jìn)制數(shù),1表示亮,0表示滅。存儲(chǔ)這些點(diǎn)陣信息的RAM稱為顯示數(shù)據(jù)存儲(chǔ)器。要顯示某個(gè)圖形或漢字就是將相應(yīng)的點(diǎn)

12864點(diǎn)陣液晶顯示模塊(LCM)就是由128*64個(gè)液晶顯示點(diǎn)組成的一個(gè)128列*64行的陣列。每個(gè)顯示點(diǎn)對(duì)應(yīng)一位二進(jìn)制數(shù),1表示亮,0表示滅。存儲(chǔ)這些點(diǎn)陣信息的RAM稱為顯示數(shù)據(jù)存儲(chǔ)器。要顯示某個(gè)圖形或漢字就是將相應(yīng)的點(diǎn)陣信息寫入到相應(yīng)的存儲(chǔ)單元中。圖形或漢字的點(diǎn)陣信息當(dāng)然由自己設(shè)計(jì),問題的關(guān)鍵就是顯示點(diǎn)在液晶屏上的位置(行和列)與其在存儲(chǔ)器中的地址之間的關(guān)系。

由于多數(shù)液晶顯示模塊的驅(qū)動(dòng)電路是由一片行驅(qū)動(dòng)器和兩片列驅(qū)動(dòng)器構(gòu)成,所以12864液晶屏實(shí)際上是由左右兩塊獨(dú)立的64*64液晶屏拼接而成,每半屏有一個(gè)512*8 bits顯示數(shù)據(jù)RAM。左右半屏驅(qū)動(dòng)電路及存儲(chǔ)器分別由片選信號(hào)CS1和CS2選擇。(少數(shù)廠商為了簡(jiǎn)化用戶設(shè)計(jì),在模塊中增加譯碼電路,使得128*64液晶屏就是一個(gè)整屏,只需一個(gè)片選信號(hào)。)

顯示點(diǎn)在64*64液晶屏上的位置由行號(hào)(line,0~63)與列號(hào)(column,0~63)確定。512*8 bits RAM中某個(gè)存儲(chǔ)單元的地址由頁地址(Xpage,0~7)和列地址(Yaddress,0~63)確定。每個(gè)存儲(chǔ)單元存儲(chǔ)8個(gè)液晶點(diǎn)的顯示信息。

為了使液晶點(diǎn)位置信息與存儲(chǔ)地址的對(duì)應(yīng)關(guān)系更直觀關(guān),將64*64液晶屏從上至下8等分為8個(gè)顯示塊,每塊包括8行*64列個(gè)點(diǎn)陣。每列中的8行點(diǎn)陣信息構(gòu)成一個(gè)8bits二進(jìn)制數(shù),存儲(chǔ)在一個(gè)存儲(chǔ)單元中。(需要注意:二進(jìn)制的高低有效位順序與行號(hào)對(duì)應(yīng)關(guān)系因不同商家而不同)存放一個(gè)顯示塊的RAM區(qū)稱為存儲(chǔ)頁。即64*64液晶屏的點(diǎn)陣信息存儲(chǔ)在8個(gè)存儲(chǔ)頁中,每頁64個(gè)字節(jié),每個(gè)字節(jié)存儲(chǔ)一列(8行)點(diǎn)陣信息。因此存儲(chǔ)單元地址包括頁地址(Xpage,0~7)和列地址(Yaddress,0~63)。

例如點(diǎn)亮128*64的屏中(20,30)位置上的液晶點(diǎn),因列地址30小于64,該點(diǎn)在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,該點(diǎn)在RAM中頁地址為2,在字節(jié)中的序號(hào)為4;所以將二進(jìn)制數(shù)據(jù)00010000(也可能是00001000,高低順序取決于制造商)寫入Xpage=2,Yaddress=29的存儲(chǔ)單元中即點(diǎn)亮(20,30)上的液晶點(diǎn)。


/////LCD12864液晶屏測(cè)試程序(已通過)//////

////////液晶屏型號(hào):HJ12864M-1//////////

///////////////////////////////////////

#include

#define uchar unsigned char

#define uint unsigned int

//8bit數(shù)據(jù)接入IO口

#define Part P0 //P0接8位數(shù)據(jù)線

//控制數(shù)據(jù)端

sbit LCD_RS=P2^5; //定義12864液晶RS端,寄存器選擇信號(hào) H:數(shù)據(jù)寄存器 L:指令寄存器

sbit LCD_RW=P2^6; //定義12864液晶RW端,讀/寫信號(hào) H:讀 L:寫

sbit LCD_EN=P2^7; //定義12864液晶LCDEN端, 片選信號(hào) 下降沿觸發(fā),鎖存數(shù)據(jù)

//

sbit LCD_PSB=P3^2; //定義12864液晶PSB端, H:并行 L:串行

sbit LCD_RST=P3^4; //定義12864液晶RST端, H:不復(fù)位 L:復(fù)位

uchar code dis1[]={"床前明月光"};

uchar code dis2[]={"疑是地上霜"};

uchar code dis3[]={"舉頭望明月"};

uchar code dis4[]={"低頭思故鄉(xiāng)"};

//=====================================

//毫秒延時(shí)函數(shù)

void delay(uint xms)

{

uint i,j;

for(j=0;i

for(i=0;i<110;i++);

}

//====================================

//LCD忙檢測(cè)函數(shù)

bit lcd_busy()

{

bit result;

LCD_RS=0;

LCD_RW=1;

LCD_EN= 1;

result=(bit)(Part & 0x80);

LCD_EN=0;

return result;

}

//=====================================

//液晶寫命令函數(shù)

void lcd_write_cmd(uchar com)

{

while(lcd_busy());

LCD_RS=0; //選擇指令寄存器

LCD_RW=0; //寫

LCD_EN=0;

Part=com; //指令值賦給P0口

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

//=====================================

//液晶寫一個(gè)字符數(shù)據(jù)函數(shù)

void lcd_write_dat(uchar date)

{

while(lcd_busy());

LCD_RS=1; //選擇數(shù)據(jù)寄存器

LCD_RW=0; //寫

LCD_EN=0;

P0=date; //數(shù)據(jù)值賦給P0口

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

//=====================================

//液晶寫一個(gè)字符串函數(shù)

void lcd_write_string(uchar *str)

{

while(*str!='