128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集。利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面。可以顯示8×4行16×16點(diǎn)陣的漢字。 也可完成圖形顯示。低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。
lcd12864基本特性:
?。?)、低電源電壓(VDD:+3.0--+5.5V)
(2)、顯示分辨率:128×64點(diǎn)
(3)、內(nèi)置漢字字庫(kù),提供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
(8)、視角方向:6點(diǎn)
?。?)、背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/5—1/10
?。?0)、通訊方式:串行、并口可選
?。?1)、內(nèi)置DC-DC轉(zhuǎn)換電路,無(wú)需外加負(fù)壓
?。?2)、無(wú)需片選信號(hào),簡(jiǎn)化軟件設(shè)計(jì)
?。?3)、工作溫度: 0℃ - +55℃ ,存儲(chǔ)溫度: -20℃ - +60℃
lcd12864顯示漢字程序
#include《reg52.h》
#define uchar unsigned char
#define uint unsigned int
#define DataPort P3
#define N 800 sbit E=P2^0;
sbit RW=P2^1;
sbit RS=P2^2;
sbit PSB=P2^3;
int num;
uint i=0;
uint l=0;
uint b;
uchar a[]
=“我愛我家0123456789abcdefg,今天是2007年8月8日星期三,太熱了!~_~”;
uchar d[]={0x98,0x90,0x88,0x80};
/**************延時(shí)1ms*count*****************/
void delay(int count)
{ int x,y;
for(x=0;x《count;x++)
for(y=0;y《120;y++);
}
/**************延時(shí)1us***********************/
/*void delayuS(uchar buf)
{
while(buf--);
}*/
/***********忙檢測(cè)********************/
void Busy()
{
DataPort=0xFF;
RS=0;
RW=1;
while (1)
{
E =1;
if (P0^7==0) break;
}
E=0;
}
/***********寫指令子程序****************/
void Write_Com(uchar command)
{
Busy(); //檢測(cè)忙標(biāo)志位
RS=0;
RW=0;
DataPort=command; //寫入指令
E=1;
delay(1);
E=0;
}
/***********寫數(shù)據(jù)子程序***************/
void Write_Data(uchar Data)
{
Busy();
RS=1;
RW=0;
DataPort=Data;
E=1;
delay(1);
E=0;
}
/***********LCD初始化*******************/
void Init_LCD(void)
{
PSB=0;
delay(1);
PSB=1;
//將PSB置1,通信方式為8位數(shù)據(jù)并口 delay(1);
Write_Com(0x30);//30H--基本指令操作
Write_Com(0x0c);//開顯示,關(guān)光標(biāo),不閃爍。
Write_Com(0x01);//清除顯示
Write_Com(0x02);
Write_Com(0x06);//指定在資料寫入或讀取時(shí),光標(biāo)的移動(dòng)方向,DDRAM的
地址計(jì)數(shù)器(AC)加1。
Write_Com(0x04);//顯示狀態(tài) 全關(guān)
}
/*****************清屏***********************/
void Clear_LCD(void)
{
Write_Com(0x01);
Write_Com(0x34);
Write_Com(0x30);
}
/******************讀地址*************************************/
/*void Read_Add(void)
{
//uchar add=0; DataPort=0xFF; RS=0; RW=1; Busy();
add=(DataPort|0x10)&0xbf;
//return(add);
}*/ //讀地址失敗
/*****************判斷行*******************/
/*void Line_Num(uchar k)
{
//uint l;
if(k》=128&&k《=135)l=1;
if(k》135&&k《=143) l=3;
if(k》143&&k《=151) l=2;
if(k》151&&k《=159) l=4;
}*/
/*******************逐行顯示***************************************/
void Display_Line(uchar x)
{
uchar c=0;
c=x-0x1; //本函數(shù)說明,函數(shù)內(nèi)部的計(jì)算公式一定要處在函數(shù)的首行
if(i==0) Write_Com(x);
if(i==2*(0x87-c)) Write_Com(0x90);
if(i==2*(0x97-c)) Write_Com(0x98);
if(i==2*(0x8f-c)) Write_Com(0x88);
}
/*void Scan_Line(void)
{
if(i==14) Write_Com(0x90);
if(i==30) Write_Com(0x88);
if(i==45) Write_Com(0x98);
}*/
void Show_Chiese()
{
EA=0;
b=sizeof(a);
num=b;
for(l=0;l《4;l++)
{
for(i=0;i《num;i++)
{
Display_Line(d[l]);
Write_Data(a[i]);
} delay(N); //EA=1; }
EA=1;
TH0=0x06;
TL0=0x06;
Clear_LCD();
delay(500);
}
void main(void)
{
TMOD=0x01;
///選擇定時(shí)器模式
TR0=1;
//開中斷,并允許T0中斷 ET0=1;
EA=1;
//總開關(guān) Init_LCD();
Clear_LCD();
while(1);
{
};
}
void t0(void) interrupt 1 using 0
{
//delay(100);
Show_Chiese();
//EA=0;
}
評(píng)論
查看更多