Professional Documents
Culture Documents
INFORME # 5
MICROPROCESADORES
ALUMNOS: 9181299 LP 6782530 LP 4884326 LP 4790920 LP PARALELO: DURAN CORRALES RANDOLF JOSEPH FLORES CHAVEZ FERNANDO MARCELO LOPEZ SANCHEZ FABIAN NELSON MOLINA GUZMAN CHRISTIANE RODRIGO 6to Semestre
FECHA:
16/09/2013
LA PAZ - BOLIVIA
INFORME DE LABORATORIO #5 1. OBJETIVO. Desplegar informacin por pantalla LCD mediante un microcontrolador PIC 18F4550. 2. OBJETIVO DE LA PRUEBA. Realizar primeros circuitos, ejemplos, bsicos para el uso de una pantalla LCD 16x2. 1. Contador de 00 a 99. 2. Contador decremental de 9999 a 0000. 3. Contador de 0.1 a 1.0, de 0.1. 4. Porcentaje de nmero del 0% al 100%. 5. Despliegue de series. a. Serie 8-9-11-14-18 b. Serie 8-10-13-17-22 c. Serie 1-4-9-16-25
6. Despliegue de los N primeros nmeros primos. 7. Mostrar la serie 2^N. 3. PROGRAMAS. En todos los programas presentes se us un logo () al inicio del funcionamiento del LCD, con ayuda de MIKROC PRO FOR PIC siendo su cdigo generador:
inicio
CustomCha r
Lcd_RAM
fin
CustomCha r
Lcd_RAM
Char i
Char i
Lcd_Cmd(64);
LCD_Cmd(IntDir);
LCD_Chr_Cp(Mapa[i]);
I I
Fin
Fin
1. Contador de 00 a 99.
inicio
// LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Conta dor de 00 a 99"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
Conta dor=10
contador=0; contador2++;
Conta dor2=10
Conta dor2==0
FIN
// LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
short contador=9,contador2=9,contador3=9,conta dor4=9; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" "; char cadena4[5]=" ";
Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEA R); Lcd_Out(1,1,"Conta dor decrementa l); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
ShortT oStr (contador,cadena); ShortT oStr (contador2,cadena2); ShortT oStr (contador3,cadena3); ShortT oStr (contador4,cadena4); Lcd_Out(2,12,cadena); Lcd_Out(2,10,cadena2); Lcd_Out(2,8,cadena3); Lcd_Out(2,6,cadena4); contador--;
Conta dor=-1
contador=9; contador2--;
Conta dor2=-1
Conta dor3==-1
Conta dor4==-1
Conta dor4==9
FIN
// LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Conta dor 0.1 a 1.0"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
Conta dor=10
contador=0; contador2=1-;
Conta dor=1
Conta dor2==1
Conta dor2=0
FIN
4. Porcentaje de nmero del 0% al 100%. a. a. Con 15 == 100%, y a medida cambia el usuario los datos, muestra que porcentaje de 15 es.
INICIO
INICIO INICIO
int porcentaje=0,op; float DECIMAL; char Txt[20]; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" "; char i; void CustomChar(char pos_row, char pos_char) {
int porcentaje=0,op; float DECIMAL; char Txt[20]; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" "; char i; void Lcd_RAM_Car(char IntDir, const char *Mapa) char i; LCD_Cmd(IntDir);
i=0;i<8;i++
TRISB=0x00; TRISA=0xFF; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
FIN
FIN
porcentaje==15
porcentaje=100
FIN
// LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
int porcentaje,numero; float DECIMAL0,DECIMAL; char Txt[20]; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" ";
Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1,"Porcentual de "); Lcd_Out(2,5," % "); Delay_ms(50);
FloatToStr(DECIMAL,Txt); IntToStr(numero,cadena); IntToStr(porcentaje,cadena2); numero=PORTA; porcentaje=PORTD; Lcd_Out(1,14,cadena); Lcd_Out(2,1,cadena2); Lcd_Out(2,10,Txt); DECIMAL0=porcentaje*numero; DECIMAL=DECIMAL0/100;
FIN
const char character[] = {10,10,10,0,17,17,14,0} unsigned short nx=0,x=8; char cadena[5]=" "; void CustomChar(char pos_row, char pos_char) char i; Lcd_Cmd(64);
const char character[] = {10,10,10,0,17,17,14,0} unsigned short nx=0,x=8; char cadena[5]=" "; void Lcd_RAM_Car(char IntDir, const char *Mapa) char i; LCD_Cmd(IntDir);
i=0;i<8;i++
TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Serie A"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
nx==20
nx=0; x=0;
FIN
e. Serie 8-10-13-17-22
INICIO INICIO INICIO
const char character[] = {10,10,10,0,17,17,14,0} unsigned short nx=0,x=7; char cadena[5]=" "; void CustomChar(char pos_row, char pos_char) char i; Lcd_Cmd(64);
const char character[] = {10,10,10,0,17,17,14,0} unsigned short nx=0,x=7; char cadena[5]=" "; void Lcd_RAM_Car(char IntDir, const char *Mapa) char i; LCD_Cmd(IntDir);
i=0;i<8;i++
TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Serie B"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
nx==20
nx=0; x=7;
FIN
f.
Serie 1-4-9-16-25
INICIO
INICIO INICIO
const char character[] = {10,10,10,0,17,17,14,0} unsigned short nx=0,x=7; char cadena[5]=" "; void CustomChar(char pos_row, char pos_char) int nx=1,x; char cadena[5]=" "; char i; Lcd_Cmd(64);
const char character[] = {10,10,10,0,17,17,14,0} unsigned short nx=0,x=7; char cadena[5]=" "; void Lcd_RAM_Car(char IntDir, const char *Mapa) char i; LCD_Cmd(IntDir);
i=0;i<8;i++
TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Serie C"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50);
nx==21
nx=1;
FIN
// LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
num=PORTA;
control%2!=00 || control==2
IntToStr (control,cadena);
control>num
Control=2
FIN
10
// LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
FIN
12
14
4. Porcentaje de nmero del 0% al 100%. a. Con 15 == 100%, y a medida cambia el usuario los datos, muestra que porcentaje de 15 es.
16
18
b.Serie 8-10-13-17-22
c.Serie 1-4-9-16-25
20
22
5. CDIGO. 1. Contador de 00 a 99. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Contador de 00 a 99"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { ShortToStr (contador,cadena); ShortToStr (contador2,cadena2); Lcd_Out(2,12,cadena); Lcd_Out(2,10,cadena2); contador++; if(contador==10) { contador=0; contador2++; } if (contador2==10) { contador2=0; } Delay_ms(200); } }
24
2. Contador decremental de 9999 a 0000. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
short contador=9,contador2=9,contador3=9,contador4=9; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" "; char cadena4[5]=" ";
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); }
void main(void) { TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Contador decremental"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { ShortToStr (contador,cadena); ShortToStr (contador2,cadena2); ShortToStr (contador3,cadena3); ShortToStr (contador4,cadena4); Lcd_Out(2,12,cadena); Lcd_Out(2,10,cadena2); Lcd_Out(2,8,cadena3); Lcd_Out(2,6,cadena4); contador--; if(contador==-1) { contador=9; contador2--; if(contador2==-1) { contador2=9; contador3--; if(contador3==-1) { contador3=9; contador4--;
26
if(contador4==-1) { contador4=9; } } } } Delay_ms(100); } } 3. Contador de 0.1 a 1.0, de 0.1. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Contador 0.1 a 1.0"); Lcd_Out(2,11," ,"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { ShortToStr (contador,cadena); ShortToStr (contador2,cadena2); Lcd_Out(2,12,cadena); Lcd_Out(2,11," ,"); Lcd_Out(2,8,cadena2); contador++; if(contador==10) { contador=0; contador2=1; } if (contador==1)
28
{ if(contador2==1) { contador2=0; } } Delay_ms(200); } } 4. Porcentaje de nmero del 0% al 100%. a. Con 15 == 100%, y a medida cambia el usuario los datos, muestra que porcentaje de 15 es. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
int porcentaje=0,op; float DECIMAL; char Txt[20]; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" ";
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]);
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISA=0xFF; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { FloatToStr(DECIMAL,Txt); op=PORTA; Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Porcentual de 15"); Lcd_Out(2,12," % "); Lcd_Out(2,1,Txt); if(porcentaje==15) { porcentaje=100; } DECIMAL=op*100/15;
30
Delay_ms(500); } } b.El usuario puede ingresar el porcentaje y el nmero. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
int porcentaje,numero; float DECIMAL0,DECIMAL; char Txt[20]; char cadena[5]=" "; char cadena2[5]=" "; char cadena3[5]=" ";
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISD=0xFF; TRISA=0xFF; LATA=0x00; ADCON1=0x0F; PORTD=0x00; PORTA=0x00; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Lcd_Out(1,1,"Porcentual de "); Lcd_Out(2,5," % "); Delay_ms(50); while(1) { FloatToStr(DECIMAL,Txt); IntToStr(numero,cadena); IntToStr(porcentaje,cadena2); numero=PORTA; porcentaje=PORTD; Lcd_Out(1,14,cadena); Lcd_Out(2,1,cadena2); Lcd_Out(2,10,Txt); DECIMAL0=porcentaje*numero; DECIMAL=DECIMAL0/100; Delay_ms(100); } }
32
5. Despliegue de series. a.Serie 8-9-11-14-18 const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores creo =S sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Serie A"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { x=x+nx; ByteToStr (x,cadena); Lcd_Out(2,12,cadena); nx++; if(nx==20) { nx=0; x=0; } Delay_ms(200); } } b.Serie 8-10-13-17-22 const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores creo =S sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit;
34
sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Serie B"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { x=x+(nx+1); ByteToStr (x,cadena); Lcd_Out(2,12,cadena); nx++; if(nx==20) { nx=0; x=7; } Delay_ms(200); } } c.Serie 1-4-9-16-25 const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
36
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) { TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Serie C"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { x=nx*nx; IntToStr (x,cadena); Lcd_Out(2,12,cadena); nx++; if(nx==21) {
nx=1; } Delay_ms(200); } } 6. Despliegue de los N primeros nmeros primos. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores creo =S sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]);
38
} }
void main(void) { TRISB=0x00; TRISA=0xFF; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Out(1,1,"Numeros primos"); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { num=PORTA; if(control%2!=00 || control==2) { IntToStr (control,cadena); Lcd_Out(2,12,cadena); control++; if(control>num) { control==2; } } Delay_ms(200); } }
7. Mostrar la serie 2^N. const char character[] = {10,10,10,0,17,17,14,0}; // LCD conectores creo =S sbit LCD_RS at RB1_bit; sbit LCD_EN at RB3_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; // direcciones Pin sbit LCD_RS_Direction at TRISB1_bit; sbit LCD_EN_Direction at TRISB3_bit; sbit LCD_D7_Direction at TRISB7_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D4_Direction at TRISB4_bit;
void CustomChar(char pos_row, char pos_char) { char i; Lcd_Cmd(64); for (i = 0; i<=7; i++) Lcd_Chr_CP(character[i]); Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); }
void Lcd_RAM_Car(char IntDir, const char *Mapa) { char i; LCD_Cmd(IntDir); for(i=0;i<8;i++) { LCD_Chr_Cp(Mapa[i]); } }
void main(void) {
40
TRISB=0x00; TRISA=0x00; PORTA=0x00; LATA=0x00; ADCON1=0x0F; CMCON=0x07; Lcd_Init(); Lcd_RAM_Car(64,character); LCD_Chr(1,1,0); Delay_ms(1000); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Delay_ms(50); while(1) { ShortToStr(serie,cadena); Lcd_Out(2,10,cadena); serie=2^(contador); contador++; Delay_ms(200); } } 6. CAPTURA DE PANTALLA DEL GRABADOR.
42
8. CONCLUSIONES. Desplegar caracteres o series en una pantalla LCD, a veces, se complica con los bucles for, usualmente usado para simplificar el trabajo, por lo que deducimos las frmulas matemticas de lo que deseamos desplegar y las aplicamos directamente. Desplegar caracteres personalizados es posible con la herramienta de MIKRO C para creacin de caracteres.