Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

23/06/2010 #1


Problema putrsXLCD(); no escribe nada!
Hola que tal a todos, de antemano les agradezco el tiempo que se toman por leer mi pregunta. Lo que pasa es que quiero aprender a programar un LCD utilizando C18 con la librería XLCD.h que ya viene con el compilador. El problema que tengo es que puedo hacer que la función:

putcXLCD(´a´);

me imprima este carácter, osea funcione de maravilla, mas sin embargo cuando trato de usar la función:

putrsXLCD("texto");

no imprime nada, no hace nada pues y la verdad no se por que, si en todos lados he visto que así es como se debe de usar esa función. He tratado también de usar la instrucción

putsXLCD(variable) y tampoco funciona.

A continuación les pongo el código, yo no creo que sea algo de hardware,por que entonces: Por que si funciona utilizando la instrucción putcXLCD('a')?

Les dejo el código para ver que opinan:

Código:
#include<p18f2550.h>
#include<delays.h>
#include<xlcd.h>

#pragma config FOSC = XT_XT, FCMEN= OFF, IESO= OFF, CPUDIV= OSC1_PLL2
#pragma config PWRT= ON, BOR= OFF, BORV=0
#pragma config WDT= OFF, WDTPS = 32768
#pragma config MCLRE= ON, LPT1OSC=OFF, PBADEN= OFF, CCP2MX=OFF
#pragma config STVREN= OFF, LVP= OFF, XINST=OFF, DEBUG= OFF
#pragma config CP0= ON, CP1= ON, CP2= ON
#pragma config CPB=ON, CPD= ON
#pragma config WRT0= ON, WRT1 = ON, WRT2=ON
#pragma config WRTB = ON, WRTC= ON, WRTD=ON
#pragma config EBTR0= ON, EBTR1 = ON, EBTR2=ON
#pragma config EBTRB=ON

void DelayFor18TCY(void)
{
	Delay10TCYx(2);
}

void DelayPORXLCD(void)
{
	Delay1KTCYx(15);
}

void DelayXLCD(void)
{
	Delay1KTCYx(2);
}

//ENVIA COMANDO AL LCD

void comandXLCD(unsigned char a)
{
	BusyXLCD();
	WriteCmdXLCD(a);
}


void main()
{
	OpenXLCD(FOUR_BIT & LINES_5X7);
	comandXLCD(0x06);
	comandXLCD(0x0c);
	putcXLCD('a');
    putrsXLCD("HOla Mundo");
	
	while(1)
    {
		
    }

}
GRACIAS. Si encuentro la respuesta antes, yo se las hare saber
24/06/2010 #2


Respuesta: Problema putrsXLCD(); no escribe nada!
Hola, puedes hacer la prueba de intercambiar las instrucciones, osea poner primero putrsXLCD("HOla Mundo"), y ver que pasa.
24/06/2010 #3


Respuesta: Problema putrsXLCD(); no escribe nada!
Hola que tal, muchas gracias por responderme ricber , ya cambie la ubicación de la instrucción y por desgracia pasa lo mismo :S estoy usando el proteus 7.4 SP3, con un microcontrolador PIC18f2550, ya intente tambien con un PIC18f4550 y pasa exactamente lo mismo. He buscado en varios foros pero en todos lados dice que asi es como debe de funcionar la instruccion y que no hay ningun problema. De verdad que no entiendo por que pasa esto :S. Te dejo el codigo de la simulacion cambiando el orden de las instrucciones.


Código:
#include<p18f2550.h>
#include<delays.h>
#include<xlcd.h>

#pragma config FOSC = XT_XT, FCMEN= OFF, IESO= OFF, CPUDIV= OSC1_PLL2
#pragma config PWRT= ON, BOR= OFF, BORV=0
#pragma config WDT= OFF, WDTPS = 32768
#pragma config MCLRE= ON, LPT1OSC=OFF, PBADEN= OFF, CCP2MX=OFF
#pragma config STVREN= OFF, LVP= OFF, XINST=OFF, DEBUG= OFF
#pragma config CP0= ON, CP1= ON, CP2= ON
#pragma config CPB=ON, CPD= ON
#pragma config WRT0= ON, WRT1 = ON, WRT2=ON
#pragma config WRTB = ON, WRTC= ON, WRTD=ON
#pragma config EBTR0= ON, EBTR1 = ON, EBTR2=ON
#pragma config EBTRB=ON

void DelayFor18TCY(void)
{
	Delay10TCYx(2);
}

void DelayPORXLCD(void)
{
	Delay1KTCYx(15);
}

void DelayXLCD(void)
{
	Delay1KTCYx(2);
}

//ENVIA COMANDO AL LCD

void comandXLCD(unsigned char a)
{
	BusyXLCD();
	WriteCmdXLCD(a);
}


void main()
{
	OpenXLCD(FOUR_BIT & LINES_5X7);
	comandXLCD(0x06);
	comandXLCD(0x0c);
	putrsXLCD("HOla Mundo");
	putcXLCD('b');
    putrsXLCD("HOla Mundo");
    putcXLCD('a');
	
	while(1)
    {
		
    }

}
MUCHAS MUUCHAS GRACIAS

PD. En el display me aparecen asi las letras: "ba" gracias
24/06/2010 #4


Respuesta: Problema putrsXLCD(); no escribe nada!
Hola, estas probando solo en proteus
24/06/2010 #5


Respuesta: Problema putrsXLCD(); no escribe nada!
Solucionado

Ya encontre la solucion al problema. Lo que pasa hice fue crear una nueva libreria, ya que la libreria xlcd.h no contiene los metodos que utilizo, por ejemplo, la libreria xlcd.h tiene una funcion:

void putsXLCD(char *buffer);

pero no viene la programación de esa función, osea, que no hace nada, por eso, cuando mandaba llamar esa función desde mi programa principal no hacia nada ni me marcaba error al utilizar esa instrucción, todo esto debido a que no tenia nada programado esa función.
Como lo solucione fue creando una libreria nueva, con el nombre <lcd.h>, esta libreria contiene la programacion de cada uno de los metodos. Les adjunto la libreria, las instrucciones son las mismas solo que ahora esta libreria incluye todo la programacion de cada uno de los metodos. Funciona todo muy bien. La libreria se tiene que agregar a la carpeta de MCC18/h . ( no se olviden cambiar la extension del archio a lcd.h ya que ahorita esta como archivo de texto).
De lo que me di cuenta, es que, todas las funciones de la libreria (putsXLCD(), putrsXLCD(), etc) vienen en la carpeta de MCC18-src-pmc common- XLCD ahi vienen todas las funciones descritas pero por separado, debe de haber una manera de poder adjuntar esa carpeta al proyecto.


Le agradesco a freshdesing y a ribec ojala y les sea util
Archivos Adjuntos
Tipo de Archivo: txt lcd.txt (30,4 KB (Kilobytes), 310 visitas)
25/06/2010 #6


Respuesta: Problema putrsXLCD(); no escribe nada!
Muy bueno que hayas resuelto el problema y gracias por comentarlo.
21/04/2015 #7


No se puede encontrar el archivo.h
de lujo amigo, ahora si podrán decir que Ablanco les echó la mano

---------- Actualizado después de 52 minutos ----------

de lujo amigo, ahora si podrán decir que Ablanco les echó la mano
hola amigos, estoy usando el mplab x, y puse el archivo en c/archivos de programa/microchip/mplabc18/v3.47/h
cuando tecleo #include me aparece el archivo para seleccionarlo, sin embargo, cuando termino de escribir me sale el warning de que no se puede encontrar el archivo.
Saben si se tiene que poner en otro directorio?
21/04/2015 #8
Moderador

Avatar de D@rkbytes

¿Tienes bien establecidas las locaciones de los compiladores?

Eso lo puedes ver en la pestaña Build Tools del menú Options: Build Tools.jpg

También puedes agregar el archivo ¿?.H desde el árbol de archivos del proyecto: Header Files.jpg

¿Ya probaste colocando el archivo en la carpeta donde está el archivo principal de tu proyecto?
Pero en vez de incluirlo de esta forma: #include <mi_lib.h> debes incluirlo así: #include "mi_lib.h"
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.