Escolar Documentos
Profissional Documentos
Cultura Documentos
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>
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;
}}
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