void shiftout(unsigned char orden,unsigned char valor)
{
unsigned char b = orden == LSBFIRST? 1: 128;
while(b) {
if(valor & b)
DATA_LCD=1;
else
DATA_LCD=0;
CLK_LCD=1;
Delay10KTCYx(300000);
CLK_LCD=0;
if(orden == LSBFIRST)
b <<= 1;
else
b >>= 1;
}
}#include <p18f4610.h>
#include <delays.h> //Libreria para los retardos
#include <stdlib.h> //Libreria para conversiones a string
#include <stdio.h>
#include <sw_uart.h>
#include <string.h>
#pragma config OSC=HS,FCMEN=OFF,IESO=OFF
#pragma config PWRT=ON,BOREN=OFF,BORV=0,WDT=OFF,WDTPS=32768
#pragma config MCLRE=ON,LPT1OSC=OFF,PBADEN=OFF,CCP2MX=PORTBE
#pragma config STVREN=OFF,LVP=OFF,XINST=OFF,DEBUG=OFF
#pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF,CPB=OFF
#pragma config WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF,WRTB=OFF,WRTC=OFF
#pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF
#define CLK_LCD PORTBbits.RB6
#define DATA_LCD PORTBbits.RB7
#define DATA_ENABLE_0 PORTBbits.RB5
#define DATA_ENABLE_1 PORTAbits.RA2
#define DATA_ENABLE_2 PORTEbits.RE0
#define LSBFIRST 0
#define TOTALIZADOR PORTDbits.RD4
void DelayTXBitUART(void);
void DelayRXBitUART(void);
void DelayRXHalfBitUART(void);
void LCD_cmd(const rom char *mensaje, int c);
void shiftout(unsigned char orden,unsigned char valor);
void Delay_ms(unsigned t);
char x[20];
unsigned char valor1;
unsigned char valor2;
unsigned char valor3;
unsigned char valor4;
void main(void)
{
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b00000000;
TRISD=0b00000000;
TRISE=0b000;
ADCON1=15;
Delay_ms(1000);
OpenUART();
LCD_cmd("Hola Mundo",10);
valor1=0x4F;
shiftout(0,valor1);
TOTALIZADOR=1;
Delay_ms(1);
TOTALIZADOR=0;
//while(1){}
}
void shiftout(unsigned char orden,unsigned char valor)
{
unsigned char b;
b=orden;
if(orden==LSBFIRST)
{
b=1;
}
else
{
b=128;
}
DATA_ENABLE_0=0;
while(b) {
if(valor & b){
DATA_LCD=1;
}
else{
DATA_LCD=0;
CLK_LCD=1;
CLK_LCD=0;
}
if(orden == LSBFIRST)
b <<= 1;
else
b >>= 1;
}
DATA_ENABLE_0=1;
}
void DelayTXBitUART(void)
{
Delay10TCYx(52);
}
void DelayRXHalfBitUART(void)
{
Delay10TCYx(26);
}
void DelayRXBitUART(void)
{
Delay10TCYx(52);
}
void LCD_cmd(const rom char *mensaje, int c)
{
int x;
for (x=0;x<c;x++)
{
WriteUART(mensaje[x]);
}
WriteUART('\0');
}
void Delay_ms(unsigned t)
{
while(t--)
{
Delay100TCYx(50);
}
}void shiftout(unsigned char orden,unsigned char valor)
{
unsigned char b;
b=orden;
if(orden==LSBFIRST)
b=1;
else
b=128;
while(b)
{
if(valor & b)
DATA_LCD=1;
else
DATA_LCD=0;
CLK_LCD=1;
Delay_ms(1);
CLK_LCD=0;
if(orden == LSBFIRST)
b <<= 1;
else
b >>= 1;
}
}#include <p18f4610.h>
#include <delays.h> //Libreria para los retardos
#include <stdlib.h> //Libreria para conversiones a string
#include <stdio.h>
#include <sw_uart.h>
#include <string.h>
#pragma config OSC=HS,FCMEN=OFF,IESO=OFF
#pragma config PWRT=ON,BOREN=OFF,BORV=0,WDT=OFF,WDTPS=32768
#pragma config MCLRE=ON,LPT1OSC=OFF,PBADEN=OFF,CCP2MX=PORTBE
#pragma config STVREN=OFF,LVP=OFF,XINST=OFF,DEBUG=OFF
#pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF,CPB=OFF
#pragma config WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF,WRTB=OFF,WRTC=OFF
#pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF
#define CLK_LCD PORTBbits.RB6
#define DATA_LCD PORTBbits.RB7
#define DATA_ENABLE_0 PORTBbits.RB5
#define DATA_ENABLE_1 PORTAbits.RA2
#define DATA_ENABLE_2 PORTEbits.RE0
#define LSBFIRST 0
#define TOTALIZADOR PORTDbits.RD4
typedef enum _BOOL{ FALSE = 0, TRUE } BOOL;
BOOL Bit;
BOOL Bit2;
BOOL orden1;
void DelayTXBitUART(void);
void DelayRXBitUART(void);
void DelayRXHalfBitUART(void);
void LCD_cmd(const rom char *mensaje, int c);
void shiftout(unsigned char orden,unsigned char valor);
void Delay_ms(unsigned t);
void shiftout2(BOOL orden1,BOOL Bit2);
char x[20];
unsigned char valor1;
unsigned char valor2;
unsigned char valor3;
unsigned char valor4;
unsigned char valor5;
unsigned char valor6;
void main(void)
{
TRISA=0b00000000;
TRISB=0b00000000;
TRISC=0b00000000;
TRISD=0b00000000;
TRISE=0b000;
ADCON1=15;
Delay_ms(1000);
OpenUART();
LCD_cmd("Hola Mundo",10);
DATA_ENABLE_0=0;
Bit=TRUE;
shiftout2(FALSE,Bit);
valor1=0x66;
shiftout(0,valor1);
valor2=0x66;
shiftout(0,valor2);
valor3=0x66;
shiftout(0,valor3);
valor4=0x66;
shiftout(0,valor4);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
DATA_ENABLE_0=1;
DATA_ENABLE_1=0;
Bit=TRUE;
shiftout2(FALSE,Bit);
valor5=0x66;
shiftout(0,valor5);
valor6=0x66;
shiftout(0,valor6);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=FALSE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
Bit=TRUE;
shiftout2(FALSE,Bit);
DATA_ENABLE_1=1;
TOTALIZADOR=1;
Delay_ms(1);
TOTALIZADOR=0;
//while(1){}
}
void shiftout(unsigned char orden,unsigned char valor)
{
unsigned char b;
b=orden;
if(orden==LSBFIRST)
b=1;
else
b=128;
while(b)
{
if(valor & b)
DATA_LCD=1;
else
DATA_LCD=0;
CLK_LCD=1;
Delay_ms(1);
CLK_LCD=0;
if(orden == LSBFIRST)
b <<= 1;
else
b >>= 1;
}
}
void shiftout2(BOOL orden1,BOOL Bit2)
{
BOOL b;
b=orden1;
if(orden1==LSBFIRST)
b=1;
else
b=128;
while(b)
{
if(Bit2 & b)
DATA_LCD=1;
else
DATA_LCD=0;
CLK_LCD=1;
Delay_ms(1);
CLK_LCD=0;
if(orden1 == LSBFIRST)
b <<= 1;
else
b >>= 1;
}
}
void DelayTXBitUART(void)
{
Delay10TCYx(52);
}
void DelayRXHalfBitUART(void)
{
Delay10TCYx(26);
}
void DelayRXBitUART(void)
{
Delay10TCYx(52);
}
void LCD_cmd(const rom char *mensaje, int c)
{
int x;
for (x=0;x<c;x++)
{
WriteUART(mensaje[x]);
}
WriteUART('\0');
}
void Delay_ms(unsigned t)
{
while(t--)
{
Delay100TCYx(50);
}
}
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;
}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;
}
}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;
}