Funciones para la manipulación de 3 drivers (MM5452N) para LCD de cristal:
Funciones que habilitan los drivers individualmente
void Crystal_LCD_1(unsigned char bit_ini,unsigned char dig_1,unsigned char dig_2,unsigned char dig_3,unsigned char dig_4,unsigned char relleno_1,unsigned char relleno_2,unsigned char relleno_3,unsigned char relleno_4,unsigned char relleno_5,unsigned char relleno_6,unsigned char relleno_7)
{
DATA_ENABLE_1=0;
//Delay_ms(1);
pulso_reloj(bit_ini);
Datos_LCD_Cristal(dig_1);
Datos_LCD_Cristal(dig_2);
Datos_LCD_Cristal(dig_3);
Datos_LCD_Cristal(dig_4);
pulso_reloj(relleno_1);
pulso_reloj(relleno_2);
pulso_reloj(relleno_3);
pulso_reloj(relleno_4);
pulso_reloj(relleno_5);
pulso_reloj(relleno_6);
pulso_reloj(relleno_7);
//Delay_ms(1);
DATA_ENABLE_1=1;
}
void Crystal_LCD_2(unsigned char bit_ini,unsigned char dig_5,unsigned char dig_6,unsigned char dig_11,unsigned char dig_12,unsigned char relleno_1,unsigned char relleno_2,unsigned char relleno_3,unsigned char relleno_4,unsigned char relleno_5,unsigned char relleno_6,unsigned char relleno_7)
{
DATA_ENABLE_2=0;
//Delay_ms(1);
pulso_reloj(bit_ini);
Datos_LCD_Cristal(dig_5);
Datos_LCD_Cristal(dig_6);
Datos_LCD_Cristal(dig_11);
Datos_LCD_Cristal(dig_12);
pulso_reloj(relleno_1);
pulso_reloj(relleno_2);
pulso_reloj(relleno_3);
pulso_reloj(relleno_4);
pulso_reloj(relleno_5);
pulso_reloj(relleno_6);
pulso_reloj(relleno_7);
//Delay_ms(1);
DATA_ENABLE_2=1;
}
void Crystal_LCD_3(unsigned char bit_ini,unsigned char dig_7,unsigned char dig_8,unsigned char dig_9,unsigned char dig_10,unsigned char relleno_1,unsigned char relleno_2,unsigned char relleno_3,unsigned char relleno_4,unsigned char relleno_5,unsigned char relleno_6,unsigned char relleno_7)
{
DATA_ENABLE_3=0;
//Delay_ms(1);
pulso_reloj(bit_ini);
Datos_LCD_Cristal(dig_7);
Datos_LCD_Cristal(dig_8);
Datos_LCD_Cristal(dig_9);
Datos_LCD_Cristal(dig_10);
pulso_reloj(relleno_1);
pulso_reloj(relleno_2);
pulso_reloj(relleno_3);
pulso_reloj(relleno_4);
pulso_reloj(relleno_5);
pulso_reloj(relleno_6);
pulso_reloj(relleno_7);
//Delay_ms(1);
DATA_ENABLE_3=1;
}
Función de selecciona en numero a desplegar:
void Datos_LCD_Cristal(unsigned char valor)
{
unsigned int i,b,n;
switch(valor)
{
case 0:
for(i=0;i<6;i++)
{pulso_reloj(1);}
pulso_reloj(0);
break;
case 1:
pulso_reloj(0);
for(i=0;i<2;i++)
{pulso_reloj(1);}
for(i=0;i<4;i++)
{pulso_reloj(0);}
break;
case 2:
for(i=0;i<2;i++)
{pulso_reloj(1);}
pulso_reloj(0);
for(i=0;i<2;i++)
{pulso_reloj(1);}
pulso_reloj(0);
pulso_reloj(1);
break;
case 3:
for(i=0;i<4;i++)
{pulso_reloj(1);}
for(i=0;i<2;i++)
{pulso_reloj(0);}
pulso_reloj(1);
break;
case 4:
pulso_reloj(0);
for(i=0;i<2;i++)
{pulso_reloj(1);}
for(i=0;i<2;i++)
{pulso_reloj(0);}
for(i=0;i<2;i++)
{pulso_reloj(1);}
break;
case 5:
pulso_reloj(1);
pulso_reloj(0);
for(i=0;i<2;i++)
{pulso_reloj(1);}
pulso_reloj(0);
for(i=0;i<2;i++)
{pulso_reloj(1);}
break;
case 6:
pulso_reloj(1);
pulso_reloj(0);
for(i=0;i<5;i++)
{pulso_reloj(1);}
break;
case 7:
for(i=0;i<3;i++)
{pulso_reloj(1);}
for(i=0;i<4;i++)
{pulso_reloj(0);}
break;
case 8:
for(i=0;i<7;i++)
{pulso_reloj(1);}
break;
case 9:
for(i=0;i<3;i++)
{pulso_reloj(1);}
for(i=0;i<2;i++)
{pulso_reloj(0);}
for(i=0;i<2;i++)
{pulso_reloj(1);}
break;
}
}
Funcion de pulso de reloj:
void pulso_reloj(unsigned char valor)
{
unsigned char b;
if(valor==1)
{DATA_LCD=1;}
else
{DATA_LCD=0;}
CLK_LCD=1;
CLK_LCD=0;
b <<= 1;
}