Você está na página 1de 8

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica


Ingeniería en Comunicaciones y Electrónica

Instituto Politécnico Nacional


Escuela Superior de Ingeniería
Mecánica y Eléctrica
Unidad Zacatenco

Ingeniería en comunicaciones y electronica

Reporte de la
Aplicacion de la LCD que muestra direccion y Dato

7CM4
Microcontroladores
Profesor:
Gómez Salazar Víctor Manuel
Presentan:
 Díaz Gómez Jorge Damián

0
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica

Simulacion en Proteus

1
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica

CODIGO
2
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica
#include <xc.h>
#include <pic18f4550.h>
#include "lcd_portd_xc8.h"
#include <stdio.h>

#pragma config WDT= OFF


#pragma config LVP= OFF
#pragma config FOSC= HS
//Funciones de Usuario
void Tarea_Principal(void);
void Config_Puertos(void);
void Imprime_Mensaje(void);
unsigned char* Imprime_Caracteres(unsigned char *memoria);
void Incremento_memoria(void);

unsigned char Mensaje1[]="Direccion:";


unsigned char Mensaje2[]="Dato:";
unsigned char Direccion[]=/*{48,120,70,48};*/{48,120,50,48}; //UTILIZANDO EL CODIGO ASCII
char *Apunta;
char *Apunta1=100;
unsigned char *memoria=0x20;

void main(void)
{
Config_Puertos();
Tarea_Principal();
}
void Config_Puertos(void)
{
Config_Puerto=0x80;//0b10000000
}
void Tarea_Principal(void)
{

Inicializa_LCD();

3
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica
Comando_LCD(CURSOR_OFF & BLINK_OFF);
//memoria=0x30;
while(2)
{

Comando_LCD(DDRAM_L1 + 0);
Apunta=&Mensaje1[0];
Imprime_Mensaje();

Comando_LCD(DDRAM_L1 + 10);
Apunta=&Direccion[0];
Imprime_Mensaje();
Incremento_memoria();

Comando_LCD(DDRAM_L2 + 5);
memoria = Imprime_Caracteres(memoria);

Comando_LCD(DDRAM_L2 + 0);
Apunta=&Mensaje2[0];
Imprime_Mensaje();

__delay_ms(1000);
Comando_LCD(CLEAR);
}
}

void Imprime_Mensaje(void)
{
while(*Apunta)
{
Dato_LCD(*Apunta);
Apunta++;
}
}

4
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica
unsigned char* Imprime_Caracteres(unsigned char *memoria)
{
Dato_LCD(memoria);
memoria+=1;
if(memoria==0xff+1)
{
memoria=0x20;
}
return memoria;
}

void Incremento_memoria(void)
{
Direccion[3]+=1;
if(Direccion[3]==58){
Direccion[3]=65;
}

else if(Direccion[3]==71)
{
Direccion[3]=48;
Direccion[2]+=1;
}

if(Direccion[2]==71)
{
Direccion[2]=50;
}
else if(Direccion[2]==58)
{
Direccion[2]=65;
}}

Problemáticas que surgieron al crear esta aplicación

5
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica
Inicialmente no sabíamos como imprimir correctamente una direccion especifica, el programa
nos arrojaba valores extraños el cual no coincidían con los valores de la tabla, pero
consultando el manual de usuario nos dimos cuenta que el orden de estos tenían una
dirección de datos diferentes al ser una LCD china por lo que tuvimos que conseguir otro
manual de usuario diferente de la LCD.
Observar la Pagina 11(Manual de usuario LCD)
El segundo problema fue el pensar en como mostrar los valores de las direcciones usando el
lenguaje C, así que pensamos en varias opciones usando apuntadores, con el cual tuvimos
bastantes problemas,investigando un poco mas recordamos que al usar tipos de datos Char
podíamos imprimir datos mediante los cuales le daríamos uso al código ASCII, este se le
implementaría un contador para ir incrementado dato por dato este.
Apoyándonos de la siguiente tabla, tomamos en cuenta que del numero 58 al número 64 eran
caracteres especiales estos se tenían que descartar para pasar al numero 65 que es la letra A.
El objetivo era usar el código Hexadecimal, así llegamos a la resolución final de los codigos.

6
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
Ingeniería en Comunicaciones y Electrónica

Practica de mostrar mensajes


Usando esta misma conexión se desplego el dato y código mostrado de la tabla de caracteres en la LCD.

Você também pode gostar