lcd12864显示汉字程序

网友投稿 251 2022-11-24

lcd12864显示汉字程序

lcd12864基本特性:

(1)、低电源电压(VDD:+3.0--+5.5V)

(2)、显示分辨率:128×64点

(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)

(4)、内置 128个16×8点阵字符

(6)、显示方式:STN、半透、正显

(7)、驱动方式:1/32DUTY,1/5BIAS

(8)、视角方向:6点

(11)、内置DC-DC转换电路,无需外加负压

(12)、无需片选信号,简化软件设计

(13)、工作温度: 0℃ - +55℃ ,存储温度: -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 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};

/**************延时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;

}

E=0;

}

/***********写指令子程序****************/

{

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);

地址计数器(AC)加1。

Write_Com(0x04);//显示状态 全关

}

/*****************清屏***********************/

void Clear_LCD(void)

{

Write_Com(0x01);

Write_Com(0x34);

Write_Com(0x30);

}

/******************读地址*************************************/

{

//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);

}

{

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;

Clear_LCD();

while(1);

{

};

}

void t0(void) interrupt 1 using 0

{

//delay(100);

Show_Chiese();

//EA=0;

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python之自动化报表
下一篇:从数据蛮荒到数据中台,数据产品演进的5个阶段
相关文章

 发表评论

暂时没有评论,来抢沙发吧~