You are on page 1of 43

ESCUELA MILITAR DE INGENIERA MCAL.

ANTONIO JOSE DE SUCRE BOLIVIA

INFORME # 5

INGENIERIA DE SISTEMAS ELECTRONICOS

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

const char character[] = {10,10,10,0,17,17,14,0};

CustomCha r

Lcd_RAM

fin

CustomCha r

Lcd_RAM

Char i

Char i

Lcd_Cmd(64);

LCD_Cmd(IntDir);

i=0 hasta i<=7 de 1

i=0 hasta i<=8 de 1

Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0);

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;

unsigned short contador,contador2; char cadena[5]=" "; char cadena2[5]=" ";

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);

ShortToStr (contador,cadena); ShortToStr (contador2,cadena2); Lcd_Out(2,12,cadena); Lcd_Out(2,10,cadena2); contador++;

Conta dor=10

contador=0; contador2++;

Conta dor2=10

Conta dor2==0

FIN

2. Contador decremental de 9999 a 0000.


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;

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 dor2==9 Conta dor3--

Conta dor3==-1

Conta dor3=9 Conta dor4--

Conta dor4==-1

Conta dor4==9

FIN

3. Contador de 0.1 a 1.0, de 0.1.


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;

unsigned short contador,contador2; char cadena[5]=" "; char cadena2[5]=" ";

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);

1 ShortToStr (contador,cadena); ShortToStr (contador2,cadena2); Lcd_Out(2,12,cadena); Lcd_Out(2,11," ,"); Lcd_Out(2,8,cadena2); contador++;

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<=7; i++) Lcd_Chr_CP(character[i])

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);

while(1) Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); LCD_Chr_Cp(Mapa[i]);;

FIN

FIN

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);

porcentaje==15

porcentaje=100

FIN

b. El usuario puede ingresar el porcentaje y el nmero.


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;

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

5. Despliegue de series. d. Serie 8-9-11-14-18


INICIO INICIO INICIO

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<=7; i++) Lcd_Chr_CP(character[i]

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);

while(1) Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); LCD_Chr_Cp(Mapa[i])

x=x+nx; ByteToStr (x,cadena); Lcd_Out(2,12,cadena); nx++; FIN FIN

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<=7; i++) Lcd_Chr_CP(character[i]

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);

while(1) Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); LCD_Chr_Cp(Mapa[i])

x=x+(nx+1); ByteToStr (x,cadena); Lcd_Out(2,12,cadena); nx++; if(nx==20) FIN FIN

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<=7; i++) Lcd_Chr_CP(character[i]

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);

while(1) Lcd_Cmd(_LCD_RETURN_HOME); Lcd_Chr(pos_row, pos_char, 0); LCD_Chr_Cp(Mapa[i])

x=nx*nx; IntToStr (x,cadena); Lcd_Out(2,12,cadena); nx++; FIN FIN

nx==21

nx=1;

FIN

6. Despliegue de los N primeros nmeros primos.


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;

int num,control=2; char cadena[5]=" ";

num=PORTA;

control%2!=00 || control==2

IntToStr (control,cadena);

Lcd_Out(2,12,caden a); control++;

control>num

Control=2

FIN

10

7. Mostrar la serie 2^N.


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;

unsigned short contador=0,serie=2; char cadena[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); Delay_ms(50);

ShortToStr(serie,cadena); Lcd_Out(2,10,cadena); serie=2^(contador); contador++; Delay_ms(200);

FIN

4. CAPTURAS DE PANTALLA SIMULADOR. 1. Contador de 00 a 99.

12

2. Contador decremental de 9999 a 0000.

14

3. Contador de 0.1 a 1.0, de 0.1.

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

b. El usuario puede ingresar el porcentaje y el nmero.

5. Despliegue de series. a.Serie 8-9-11-14-18

18

b.Serie 8-10-13-17-22

c.Serie 1-4-9-16-25

20

6. Despliegue de los N primeros nmeros primos.

7. Mostrar la serie 2^N.

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;

unsigned short contador,contador2; char cadena[5]=" "; char cadena2[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 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;

unsigned short contador,contador2; char cadena[5]=" "; char cadena2[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 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]);

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=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); }

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; 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;

unsigned short nx=0,x=8; char cadena[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,"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;

unsigned short nx=0,x=7; char cadena[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,"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;

int nx=1,x; char cadena[5]=" ";

void CustomChar(char pos_row, char pos_char) { char i;

36

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 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;

int num,control=2; char cadena[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]);

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;

unsigned short contador=0,serie=2; char cadena[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) {

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.

7. FOTOGRAFAS DE LOS CIRCUITOS.

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.

9. BIBLIOGRAFA. Presentaciones explicadas en clase por el docente.

You might also like