一. 概述
LCD12864顯示屏是所說的點(diǎn)陣液晶顯示模塊,就是由12864個(gè)液晶顯示點(diǎn)組成的一個(gè)128列 64行的陣列,所以也就叫成了12864。 每個(gè)顯示點(diǎn)都對(duì)應(yīng)著有一位二進(jìn)制數(shù),0表示滅,1表示亮。 存儲(chǔ)這些點(diǎn)陣信息的RAM被稱為顯示數(shù)據(jù)存儲(chǔ)器。 如果要顯示某個(gè)圖形或漢字就是將相應(yīng)的點(diǎn)陣信息寫入到對(duì)應(yīng)的存儲(chǔ)單元中。 圖形或漢字的點(diǎn)陣信息是由自己設(shè)計(jì)(如果模塊帶有字庫,則不需要自己設(shè)計(jì)漢字),這時(shí)候問題的關(guān)鍵是顯示點(diǎn)在液晶屏上的位置與其在存儲(chǔ)器中的地址之間的關(guān)系。
二. LCD12864基本參數(shù)
1.電氣參數(shù)
- 電源電壓:VDD:+3.0--+5.5V
- 顯示分辨率:128×64點(diǎn)
- 內(nèi)置漢字字庫,提供8192個(gè)16×16點(diǎn)陣漢字(簡(jiǎn)繁體可選)
- 內(nèi)置128個(gè)16×8點(diǎn)陣字符
- 2MHZ時(shí)鐘頻率
- 顯示方式:STN、半透、正顯
- 驅(qū)動(dòng)方式:1/32DUTY,1/5BIAS
- 視角方向:6點(diǎn)
- 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10
- 通訊方式:串行、并口可選
- 內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負(fù)壓
- 無需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)
- 工作溫度:0℃-+55℃,存儲(chǔ)溫度:-20℃-+60℃
2. 引腳說明
LCD12864的引腳總共有20個(gè),如圖:
其中,引腳PSB為并/串行接口選擇引腳,高電平為并行控制; 低電平為串行控制。
3. 電路圖
其中可調(diào)電阻用于調(diào)整顯示器的對(duì)比度。 三極管是為增強(qiáng)電流的驅(qū)動(dòng)能力,為背光LED提供足夠的驅(qū)動(dòng)電流。
三. 控制程序
1.控制時(shí)序
LCD12864控制時(shí)序有兩種,一種為并行控制時(shí)序(本次是以并行為例),另一種是串行控制時(shí)序。
簡(jiǎn)單來說,大部分情況下我們只對(duì)顯示屏做寫操作,讀操作很少用,所以讀操作就不做介紹。 LCD12864顯示屏控制程序簡(jiǎn)化下來,也相對(duì)簡(jiǎn)單,只需要實(shí)現(xiàn)忙檢查、寫數(shù)據(jù)、寫指令、初始化四個(gè)控制函數(shù)即可實(shí)現(xiàn)對(duì)LCD12864的控制。 寫時(shí)序如圖:
2. 忙狀態(tài)檢查函數(shù)
/*******************************************************************************
* 函 數(shù) 名 : LCD12864_Busy
* 函數(shù)功能 : 檢測(cè)LCD是否忙
* 輸 入 : 無
* 輸 出 : 1或0(1表示不忙,0表示忙)
*******************************************************************************/
uchar LCD12864_Busy(void)
{
uchar i = 0;
LCD12864_RS = 0; //選擇命令
LCD12864_RW = 1; //選擇讀取
LCD12864_EN = 1;
LCD12864_Delay1ms(1);
while((LCD12864_DATAPORT & 0x80) == 0x80) //檢測(cè)讀取到的值
{
i++;
if(i > 100)
{
LCD12864_EN = 0;
return 0; //超過等待時(shí)間返回0表示失敗
}
}
LCD12864_EN = 0;
return 1;
}
3. 寫指令函數(shù)
/*******************************************************************************
* 函 數(shù) 名 : LCD12864_WriteCmd
* 函數(shù)功能 : 寫命令
* 輸 入 : cmd
* 輸 出 : 無
*******************************************************************************/
void LCD12864_WriteCmd(uchar cmd)
{
uchar i;
i = 0;
while( LCD12864_Busy() == 0)
{
LCD12864_Delay1ms(1);
i++;
if( i>100)
{
return; //超過等待退出
}
}
LCD12864_RS = 0; //選擇命令
LCD12864_RW = 0; //選擇寫入
LCD12864_EN = 0; //初始化使能端
LCD12864_DATAPORT = cmd; //放置數(shù)據(jù)
LCD12864_EN = 1; //寫時(shí)序
LCD12864_Delay1ms(5);
LCD12864_EN = 0;
}
4. 寫數(shù)據(jù)函數(shù)
/*******************************************************************************
* 函 數(shù) 名 : LCD12864_WriteData
* 函數(shù)功能 : 寫數(shù)據(jù)
* 輸 入 : dat
* 輸 出 : 無
*******************************************************************************/
void LCD12864_WriteData(uchar dat)
{
uchar i;
i = 0;
while( LCD12864_Busy() == 0)
{
LCD12864_Delay1ms(1);
i++;
if( i>100)
{
return; //超過等待退出
}
}
LCD12864_RS = 1; //選擇數(shù)據(jù)
LCD12864_RW = 0; //選擇寫入
LCD12864_EN = 0; //初始化使能端
LCD12864_DATAPORT = dat; //放置數(shù)據(jù)
LCD12864_EN = 1; //寫時(shí)序
LCD12864_Delay1ms(5);
LCD12864_EN = 0;
}
與LCD1602一樣,LCD12864寫數(shù)據(jù)和寫指令的區(qū)別在于RS引腳的電平; RS為高電平時(shí),寫數(shù)據(jù); RS為低電平時(shí),寫指令。
5. 初始化函數(shù)
/*******************************************************************************
* 函 數(shù) 名 : LCD12864_Init
* 函數(shù)功能 : 初始化LCD12864
* 輸 入 : 無
* 輸 出 : 無
*******************************************************************************/
void LCD12864_Init()
{
LCD12864_PSB = 1; //選擇并行輸入
LCD12864_RST = 1; //復(fù)位
LCD12864_WriteCmd(0x30); //選擇基本指令操作
LCD12864_WriteCmd(0x0c); //顯示開,關(guān)光標(biāo)
LCD12864_WriteCmd(0x01); //清除LCD12864的顯示內(nèi)容
}
四. 顯示程序
在LCD12864上顯示特定的字符,實(shí)際上就是對(duì)LCD12864的DDRAM上寫入對(duì)應(yīng)的數(shù)據(jù),顯示屏便顯示你想要的字符。 其中,英文字符占用1個(gè)字節(jié),中文字符占用2個(gè)字節(jié)。
1. 顯示坐標(biāo)關(guān)系
如上圖所示,第一行顯示的地址為80H-87H,第二行為90H-97H,第三行為88H-8FH,第四行為98H-9FH。 所以要顯示屏上哪個(gè)位置顯示哪個(gè)漢字,只需要寫入對(duì)應(yīng)位置的地址,再寫入對(duì)應(yīng)漢字即可。
2. 顯示漢字
只要實(shí)現(xiàn)以上忙檢查 、 寫數(shù)據(jù) 、 寫指令 、初始化四個(gè)控制函數(shù),就可以實(shí)現(xiàn)LCD12864顯示屏漢字的顯示控制。
示函數(shù)只需要寫入起始坐標(biāo),然后顯示對(duì)應(yīng)的漢字。
/*******************************************************************************
* 函 數(shù) 名 : LCD12864_SetWindow
* 函數(shù)功能 : 設(shè)置在基本指令模式下設(shè)置顯示坐標(biāo),并顯示漢字。注意:x是設(shè)置行,y是設(shè)置列
* 輸 入 : x, y,word
* 輸 出 : 無
*******************************************************************************/
void LCD12864_SetWindow(uchar x, uchar y,uchar *word)
{
uchar pos;
uchar i=y;
if(x == 0) // 第一行的地址是80H
x = 0x80;
else if(x == 1) //第二行的地址是90H
x = 0x90;
else if(x == 2) //第三行的地址是88H
x = 0x88;
else if(x == 3) //第三行的地址是98H
x = 0x98;
pos = x + y;
LCD12864_WriteCmd(pos);
while(word[i]!='\\0')
{
if(i<16) //判斷是否在本行的顯示范圍內(nèi)
{
LCD12864_WriteData(word[i]);
i++;
}
}
}
3.主函數(shù)
最后,在主函數(shù)上實(shí)現(xiàn)漢字的顯示了。
#include
#include"lcd12864.h"
unsigned char code CharCode[]="電子應(yīng)用學(xué)習(xí)館";
void main()
{
unsigned char i;
LCD12864_Init();
LCD12864_SetWindow(0, 0,CharCode);
while(1);
}
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7643瀏覽量
166764 -
液晶
+關(guān)注
關(guān)注
6文章
617瀏覽量
70290 -
顯示屏
+關(guān)注
關(guān)注
28文章
4591瀏覽量
76097 -
LCD12864
+關(guān)注
關(guān)注
7文章
233瀏覽量
45648 -
顯示模塊
+關(guān)注
關(guān)注
1文章
54瀏覽量
23767
發(fā)布評(píng)論請(qǐng)先 登錄
神們,誰能幫我把這程序里邊的lcd12232的顯示屏程序改為能在lcd12864上面顯示并使用
LCD12864顯示屏怎么使用
LCD12864直接寫屏驅(qū)動(dòng)程序
LCD12864液晶顯示的設(shè)計(jì)
LCD12864并行和串行顯示的程序和資料免費(fèi)下載
如何使用LCD12864顯示屏顯示溫濕度的詳細(xì)程序和資料免費(fèi)下載

LCD12864顯示屏的基本原理與使用方法和取模軟件等資料免費(fèi)下載

LCD12864的液晶顯示程序免費(fèi)下載

使用LCD12864顯示圖片的仿真和程序資料免費(fèi)下載

使用51單片機(jī)實(shí)現(xiàn)LCD12864顯示屏顯示的仿真文件免費(fèi)下載
使用51單片機(jī)實(shí)現(xiàn)LCD12864顯示屏顯示的仿真文件免費(fèi)下載
詳解LCD12864顯示屏的使用(并行控制)

評(píng)論