LCD1602 muestra el programa de cadena de caracteres chinos
#include lt;reg51.hgt;
#define uchar unsigned char
#define uint unsigned int
uchar xpos, ypos ;
sbit clave=P2^0;
sbit rs=P3^0
sbit rw=P3^1;
sbit e=P3^2;
void nop(){}
void delay(uint z) //Retraso
{
uint x, y;
for(x=z;xgt;0;x--)
for(y=112;ygt;0;y--); /p>
}
void check() //Ocupado
{
rs=0
rw =1;
e=0;
P1=0xff
e=1; p> nop();
while(P1amp;0x80){}
}
void wrc(uchar com) //Escribir comando p>
{
verificar();
rs=0
rw=0
e=1; p>
P1=com;
nop();
e=0
nop();
void wrd(uchar date) //Escribir datos
{
check();
rs=1;
rw=0;
e=1;
P1=fecha
nop(); 0;
nop();
}
void init() //Inicialización
{
wrc(0x38);
wrc(0x01);
wrc(0x0c);
wrc(0x06); /p>
void lcdpos() //Posicionamiento del puntero de dirección de datos internos
{
xposamp;=0x01;
yposamp;=0x1f ; /p>
if(xpos==0x00)
wrc(ypos|0x80
else
wrc((ypos 0x40) |0x80); );
}
void lcdw(uchar x, uchar y, uchar *s) //Escribe una cadena en las coordenadas especificadas
{ xpos=x ;
for(ypos=y;yposlt;20;ypos)
{ lcdpos();
wrd(*s);
p >s;
<p> }
}
void main()
{
init();
cgram(
while(1)
{
lcdw(0, 0, "######### "); p>
p>
lcdw(1,1,"!!!!!!!!!");
lcdw(2,2,"amp;amp;amp;amp ;amp;amp ;amp;amp;amp;amp; ");
lcdw(3, 3, "$$$$$$$$$$ ");
}
}