TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pabrocpe en 26 de Mayo de 2004, 02:11:00
-
Hola a todos,
quería utilizar una PICDEM 2 PLUS que tengo para hacer algunas pruebas con el C. El problema es que el LCD va conectado de la siguiente forma:
RA1--->E
RA2--->R/W
RA3--->RS
RD4--->RD0
RD5--->RD1
RD6--->RD2
RD7--->RD3
El problema es que no se como modificar la librería lcd.c de CCS no para seleccionar los bits E R/W RS para el puerto A.
Os agradecería cualquier ayuda al respecto, ya que posiblemente no esté cogiendo el camono corrrecto
-
hola pabrocpe
explicate un poco mejor, porque no entiendo que es lo que quieres hacer. Yo he modificado la Rutina lcd.c y anduvo sin problemas.
Pablo
-
El problema es que no se como modificar la rutina lcd.c para asignar los pines RA1,RA2,RA3 del micro para controlar E,RS,R/W. No entiendo muy bien como se hace la asignación de pines en la rutina lcd.c
-
hola pabrocpe
mira yo hice un programa que lee el sensor de temperatura que tiene el DEMPIC2 y lo muestra en el Display. Para ello tuve que modificar, entre otros, al lcd.c. Aqui te mando el codigo. Algunas explicaciones del codigo estan en Aleman, si tienes preguntas estoy a tu disposicion.
Que te diviertas. Saludos desde Suiza, Pablo.
PD.: lcd.c tuyo = lcdAnzeige.c mio
lcd.c mio = es el programa principal
lcd.h mio = es el Header datei, ahi vas a ver como se asignan los pines que tu quieres.
PD2.: no puedo subir las files!!
-
Hola
pues mira.. en el lcd.c hay un pin map, que se hace por medio de una estructura
#define set_tris_lcd(x) set_tris_d(x)
struct lcd_pin_map {
/*BOOLEAN enable;
BOOLEAN rs;
BOOLEAN rw;
BOOLEAN unused;*/ Comentar esto
int otro : 4; //Esto se hace para que puedas usar
int data : 4; // los primeros cuatro pines del puerto d
} lcd;
#byte lcd = 8 // pone la estructura sobre el puerto d
/*esto seria para usar las patillas de control del lcd en
el puerto a */
struc lcd_control_pin{
BOOLEAN sinuso;
BOOLEAN enable;
BOOLEAN rs;
BOOLEAN rw;
int otro : 2; //Ultimos dos pines porta libres
}lcd_cont;
#byte lcd_cont = 5 // Control sobre puerto a
struct lcd_pin_map const LCD_WRITE = {X,0};
struct lcd_pin_map const LCD_READ = {X,15};
//"X" significa para todas salidas un 0, para todas entradas un 15
// el valor "X" actua sobre el puerto d en los primeros cuatro pines
//incluye esto en el main para que los pines de control
//actuen como salidas
set_tris_a(0bX000XX00);
//Las "X" significa que si necesitas estos pines como entradas
//pues pones "1" y como salidas "0", los tres ceros seguidos son los
// pines de control
// ahora lo que tienes que modificar en las rutinas es por ejemplo:
BYTE lcd_read_byte() {
BYTE low,high;
set_tris_lcd(LCD_READ);
lcd_cont.rw = 1; //<-- aca cambias lcd.rw por esto
delay_cycles(1);
lcd_cont.enable = 1; //<-- aca igual lcd.enable
delay_cycles(1);
high = lcd.data;
lcd_cont.enable = 0; //<-- ACA
delay_cycles(1);
lcd_cont.enable = 1; //<--ACA
delay_us(1);
low = lcd.data; //<-- ACA NO
lcd_cont.enable = 0; //<-- ACA SI
set_tris_lcd(LCD_WRITE);
return( (high<<4) | low);
}
//Asi en todo el resto de rutinas
Esta no es la unica forma de modificar lcd.c.. para que funcione como lo necesitas... es solo una sugerencia
Espero te sirva.. 
Saludos
-
Muchisimas gracias. Funciona todo OK.
-
hola a todos, quiero contarles que estoy trabajando con el picdem y la pila recomendada por microchip para webserver, porque quiero implementar el cliente tftp que tienen como demo, pero cuando lo grabo al pic18f452, no me hace el ping y quisiera sabersi alguno de ustedes sabe que podriahacer, Gracias...
PD. Si logro configurar bien las ip y si me detecta el cable de red conectado, solo que no puedo hacer ping a pesar de que si implementa el icmp.