Cómo escribir una pantalla LCD en lenguaje C
//51 controlador de microcontrolador ST7070 controla la pantalla LCD de 16*2 caracteres
#include
sbit RS = P3^2;
sbit R_W = P3^3;
sbit EN = P3^4;
sbit ocupado=P1^7;
sbit Auto =P3 ^6;
paso pequeño=P3^7;
void write_command(char);
void write_data(char);
void delay_s(int);
void delayms(int);
unsigned char checkbusy(void);
void scan(void);
p>
void madefont(void);
void money(void);
void abcd(void);
void number( vacío);
imagen vacía(vacío);
vacío blanco(vacío);
vacío negro(vacío);
vacío nieve(vacío);
vacío hoi(vacío);
vacío hline(vacío);
vacío vline(vacío);
void net (void);
void frame(void);
void main(void)
{
delay_s(40 );
// write_command(0x20);
// write_command(0x20);
write_command(0x38); // CONJUNTO DE FUNCIONES
delay_s(10);
write_command(0x38); //CONJUNTO DE FUNCIONES
delay_s(2);
write_command(0x38); CONJUNTO DE FUNCIONES
delay_s(2);
write_command(0x28); //CONJUNTO DE FUNCIONES
delay_s(2);
write_command (0x28) ; //CONFIGURACIÓN DE FUNCIONES
delay_s(2);
write_command(0x0c); //Mostrar en
delay_s(10); p>
write_command(0x01); //Borrar pantalla
delay_s(10);
write_command(0x06); // modo de entrada establecido
retraso_s(10 );
>
// write_command(0x0c); //mostrar en
// delay_s(2);
// write_command(0x01); //BORRAR pantalla
>// retardo_s(2);
write_command(0x2C); //FUNCTION SETC EXT=1
retardo_s(2);
write_command (0x04); //resistencia de polarización configurada, selección de resistencia de polarización externa.
delay_s(2);
checkbusy()
money();
delay_s(200);
scan();
checkbusy();
abcd();
retraso_s(200);
escaneo();
checkbusy();
número();
retraso_s(200) ;
scan();
checkbusy();
picure();
delay_s(200);
escaneo();
checkbusy();
blanco();
retardo_s(200);
escaneo( );
checkbusy();
negro();
delay_s(200);
scan();
checkbusy();
nieve();
delay_s(50);
scan();
checkbusy ();
hoi();
delay_s(200);
scan();
madefont(); // Crear palabras
delay_s(200);
checkbusy();
hline();
delay_s(200); p> p>
scan();
checkbusy();
vline();
delay_s(200);
scan();
checkbusy();
net();
delay_s(200);
scan() ;
marcar ocupado();
frame();
delay_s(200);
scan();
}
void write_command(char comm) p>
{ RS = 0;
R_W = 0;
EN = 1;
P1=comm&0xf0;
delayms(1);
EN = 0;
EN=1;
com<<=4;
P1=comm&0xf0 ;
EN=0;
}
void write_data(char dda)
{ RS = 1;
R_W = 0;
EN = 1;
P1=dda&0xf0;
delayms(1);
EN = 0 ;
ES=1;
dda<<=4;
P1=dda&0xf0;
ES=0;
}
void delay_s(int c)
{ int i,j;
for (i = 0; i<=c; i++ )
for ( j = 1; j<=1000; j++);
}
retrasos nulos(int c1)
{ int i,j;
for (i = 0; i<=c1; i++)
for ( j = 1; j<=50; j++);
}
unsigned char checkbusy(void) //Detectar BF
{
busy=0x01
RS =; 0;
R_W = 1;
EN = 0;
EN = 1
mientras(ocupado);//cuando Cuando BUSY=1, el ciclo continúa. Cuando BUSY=0, comienza a ejecutarse la siguiente instrucción.
return(busy
}
void); madefont( void) //Crear palabras
{
int i,j;
write_command(0x40);
for(i =0 ;i<4;i++) //HLINE,CODE=00H
{
write_data(0x1f);
write_data(0x00); p>
}
for(i=0;i<8;i++) //VLINE, código=01h
{
write_data(0x15
}
for(i=0;i<4;i++) //net,CODE=02H
{
escribir_datos (0x15);
escribir_datos(0);
}
para(i=0;i<1;i++)
//Marco,CODE=03H
{
write_data(0x1f);
for(j=0;j<6;j++)
{
escribir_datos(0x11);
}
escribir_datos(0x1f);
}
}
escaneo nulo(nulo)
{
while(paso==1&Auto==0)
{
demora_s(5);
}
if(paso==0)
{
demora_s(5) ;
mientras(paso==0)
{
demora_s(5);
}
delay_s(5);
}
else if(Auto==1)
{
delay_s(5); p> p>
}
delay_s(5);
write_command(0x01);
}
anular dinero ( vacío)
{
int i,j;
write_command(0x80);
for(i=0;i<2 ;i++ )
{
for(j=0;j<1;j++)
{
write_data(0xB1); p>
escribir_datos(0xB2);
escribir_datos(0xB3);
escribir_datos(0xB4);
escribir_datos(0xB5); p>
escribir_datos(0xB6);
escribir_datos(0xB7);
escribir_datos(0xB8);
escribir_datos(0xB9);
escribir_datos(0xBA);
escribir_datos(0xBB);
escribir_datos(0xBC);
escribir_datos(0xB1);
escribir_datos (0xBE);
escribir_datos(0xBF);
escribir_datos(0xC0);
escribir_datos(0xD1);
escribir_datos (0xD2 );
escribir_datos(0xD3);
escribir_datos(0xD4);
escribir_datos(0xD5);
escribir_datos(0xD6);
escribir_datos();
0xD7);
write_data(0xD8);
write_data(0xD9);
write_data(0xDA);
write_data(0xDB) ;
escribir_datos(0xDC);
escribir_datos(0xD1);
escribir_datos(0xDE);
escribir_datos(0xDF);
write_data(0xE0);
}
}
}
void abcd (void)
{
int i,j;
write_command(0x80);
for(i=0;i<2;i++) p>
{
for(j=0;j<1;j++)
{
write_data(0x41);
escribir_datos(0x42);
escribir_datos(0x43);
escribir_datos(0x44);
escribir_datos(0x45);
escribir_datos(0x46);
escribir_datos(0x47);
escribir_datos(0x48);
escribir_datos(0x49);
escribir_datos( 0x4A);
escribir_datos(0x4B);
escribir_datos(0x4C);
escribir_datos(0x4D);
escribir_datos(0x4E)
escribir_datos(0x4F);
escribir_datos(0x50);
escribir_datos(0x61);
escribir_datos(0x62); /p>
escribir_datos(0x63);
escribir_datos(0x64);
escribir_datos(0x65);
escribir_datos(0x66); >
escribir_datos(0x67);
escribir_datos(0x68);
escribir_datos(0x69);
escribir_datos(0x6A); p> escribir_datos(0x6B);
escribir_datos(0x6C);
escribir_datos(0x61);
escribir_datos(0x6E);
write_data(0x6F);
write_data(0x70);
}
}
}
número nulo (nulo)
{
int i,j;
write_command(0x80);
for(i=0;i<2;i++)
{
for(j=0;j<1;j++)
{
write_data(0x11);
write_data(0x12); p> escribir_datos(0x13);
escribir_datos(0x14);
escribir_datos(0x15);
escribir_datos(0x16);
escribir_datos(0x17);
escribir_datos(0x18);
escribir_datos(0x19);
escribir_datos(0x1A);
escribir_datos( 0x1B);
escribir_datos(0x1C);
escribir_datos(0x11);
escribir_datos(0x1E);
escribir_datos(0x1F) ;
escribir_datos(0x20);
escribir_datos(0x31);
escribir_datos(0x32);
escribir_datos(0x33);
escribir_datos(0x34);
escribir_datos(0x35);
escribir_datos(0x36);
escribir_datos(0x37);
escribir_datos(0x38);
escribir_datos(0x39);
escribir_datos(0x3A);
escribir_datos(0x3B);
escribir_datos(0x3C);
escribir_datos(0x31);
escribir_datos(0x3E
escribir_datos(0x3F);
write_data(0x40);
}
}
}
imagen vacía (void)
{
int i,j;
write_command(0x80);
for(i=0;i<2;i++)
{
for(j=0;j<1;j++)
{
escribir_datos(0x81);
escribir_datos(0x82)
escribir_datos(0x83);
escribir_datos(0x84);
escribir_datos(0x85);
escribir_datos(0x86); /p>
escribir_datos(0x87);
escribir_datos(0x88);
escribir_datos(0x89);
escribir_datos(0x8A);
escribir_datos(0x8B);
escribir_datos(0x8C);
escribir_datos(0x81);
escribir_datos(0x8E);
escribir_datos(0x8F);
escribir_datos); (0x90);
escribir_datos(0x91);
escribir_datos(0x92);
escribir_datos(0x93);
escribir_datos(0x94); );
escribir_datos(0x95);
escribir_datos(0x96);
escribir_datos(0x97);
escribir_datos(0x98);
escribir_datos(0x99);
escribir_datos(0x9A);
escribir_datos(0x9B);
escribir_datos(0x9C); p>
p>
escribir_datos(0x91);
escribir_datos(0x9E
escribir_datos(0x9F);
escribir_datos(0xA0);
}
}
}
blanco vacío (vacío)
{
int i, j;
write_command(0x80);
for(i=0;i<4;i++)
{
for( j=0;j<8;j++)
{
escribir_datos(0x91);
escribir_datos(0x92);
}
}
}
vacío negro(vacío)
{
int i ,j;
p>write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0; j<8;j++)
{
escribir_datos(0xff);
escribir_datos(0xff);
}
}
}
nieve vacía(vacío)
{
int i,j ;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j =0;j<16; j++)
{
escribir_datos(0xdb);
// escribir_datos(0x32);
// escribir_datos(0x33);
// escribir_datos(0x34);
}
}
} p>
void hoi (void)
{
int i,j;
write_command(0x80);
para (i=0;i<4;i++)
{
para(j=0;j<16;j++)
{
// write_data(0x00);
// write_data(0x01);
// write_data(0x02);
write_data(0x03);
}
}
}
línea vacía (void)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x01);
}
}
}
void vline(void)
{
int i,j;
write_command(0x80 );
para(i=0;i<4;i++)
{
para(j=0;j<40;j++) p>
{
write_data(0x02);
}
}
}
nulo net(void)
{
int i,j;
write_command(0x80);
for(i=0;i <4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x03 );
}
}
}
marco vacío(vacío)
{
int i,j;
write_command(0x80);
for(i=0;i<4;i++)
{
for(j=0;j<40;j++)
{
write_data(0x04);
}
}
}