当前位置:主页 > 资讯中心 > 技术知识 >

12864显示汉字程序

发布时间:2018-07-09

lcd12864基本特性:
 
(1)、低电源电压(VDD:+3.0--+5.5V)
 
(2)、显示分辨率:128&TImes;64点
 
(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)
 
(4)、内置128个16×8点阵字符
 
(5)、显示方式:STN、半透、正显
 
(6)、驱动方式:1/32DUTY,1/5BIAS
 
(7)、视角方向:6点
 
(8)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
 
(9)、通讯方式:串行、并口可选
 
(10)、内置DC-DC转换电路,无需外加负压
 
(11)、无需片选信号,简化软件设计
 
(13)、工作温度:0℃-+55℃,存储温度:-20℃-+60℃
 
12864显示汉字程序
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[]
 
uchar d[]={0x98,0x90,0x88,0x80};
 
/**************延时1ms*count*****************/
 
void delay(int count)
 
{int x,y;
 
for(x=0;x《count;x++)
 
for(y=0;y《120;y++);
 
}
 
/**************延时1us***********************/
 
/*void delayuS(uchar buf)
 
{
 
while(buf--);
 
}*/
 
/***********忙检测********************/
 
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();//检测忙标志位
 
RS=0;
 
RW=0;
 
DataPort=command;//写入指令
 
E=1;
 
delay(1);
 
E=0;
 
}
 
/***********写数据子程序***************/
 
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位数据并口delay(1);
 
Write_Com(0x30);//30H--基本指令操作
 
Write_Com(0x0c);//开显示,关光标,不闪烁。
 
Write_Com(0x01);//清除显示
 
Write_Com(0x02);
 
Write_Com(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的
 
地址计数器(AC)加1。
 
Write_Com(0x04);//显示状态全关
 
}
 
/*****************清屏***********************/
 
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;//本函数说明,函数内部的计算公式一定要处在函数的首行
 
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;
 
///选择定时器模式
 
TR0=1;
 
//开中断,并允许T0中断ET0=1;
 
EA=1;
 
//总开关Init_LCD();
 
Clear_LCD();
 
while(1);
 
{
 
};
 
}
 
void t0(void)interrupt 1 using 0
 
{
 
//delay(100);
 
Show_Chiese();
 
//EA=0;
 
}

12864相关资讯:

lcd12864基本参数

lcd12864液晶显示屏的特点

lcd12864液晶屏原理

上一篇:lcd12864基本参数

下一篇:lcd12864工作原理

杭州精显科技有限公司