LCD 16x2 ejemplo CCS para 16F628a

Gracias al foro ahora ya tengo algunas cosas un poco mas claras:

Utilizaré CCS (lenguaje C), mi display es compatible (16x2) y bus de 4 u 8 bits (cualquiera), PIC 16F628A.

Me gustaría que alguien me pasara un ejemplo para hacer funcionar mi lcd,

algo sencillo (por el momento me conformo con un "hola mundo", después evolucionaré en su uso).

He probado cantidad de código (he revisado todo el foro) y no logro un buen resultado.
No encuentro código para el PIC que utilizo y tengo problemas al compilar.

Y recién estos empezando a comprender el uso de las librerías.

(utilizo el PORTA para las señales de control y todo el PORTB para el display, pero no me preocupa cambiar el cableado siempre que sepa como es la nueva opción)

Como verán es la primera vez que intento esto.

Saludos y muchas gracias.
 
que mas gastón?,

aqui esta lo que pides, tanto para el 628 como para el 628a, el esquematico por si las moscas, ah!, no lo probe en un protoboard por que no tengo dicho pic, lo probe en proteus(que hay mismo esta el archivo) y algo si se, es que si sirve en proteus, sirve en cualquier montaje real, se lo aseguro, y a mi me sirvio, fijese las funciones y todo, y otra cosa, si no sirve o se ve muy claro, revisa las conexiones que por lo general es lo que fallan, despues si alguien lo pide, publico una libreria mucho mas completa con muchisimas mas opciones, como animaciones y todo eso, por lo pronto, me comenta, cuidese...
 

Adjuntos

  • lcd_16f628_163.rar
    39.7 KB · Visitas: 3,594
Saludos amigos, estoy ingresando en este fascinante mundo de los microcontroladores y con la programacion en c con ccs, ya estoy trabajando con el ejemplo de lcd en ccs de Leonardo, tal vez me pudieran enviar un archivo para estudiarlo y aprender para manejar un teclado hexadecimal 4x4. Muchas gracias. (gracias Leonardo)
Palmas.
 
Gracias tio, pero si te refieres al ejemplo lcdkb... Pues no lo entiendo bien, tal vez uno más didáctico como para "iniciados".Gracias de todos modos.
Palmas.
 
Primero mirate en driver el fichero LCD.C

Un ejemplo podria ser algo como esto


PHP:
#include <16F628.h>
#use delay(clock=4000000)
#fuses NOWDT,WDT,NOPROTECT


#include "Lcd.c"
#define use_portb_lcd TRUE

void main()
{
int a=10;
  lcd_init();
  lcd_gotoxy(1,1);
  printf(LCD_PUTC,"proba 2  %u",a);
  while(TRUE);
}

No lo he compilado, pero basicamente es lo que tienes que hacer
 
Última edición por un moderador:
Gracias, ya logrè sacar texto por el lcd, ahora quisiera conseguir lo mismo pero usando el teclado; es decir, un progrma minimo que me permita lograr usar el teclado, luego ya estudiando mas poder realziar algo cuendo se aprieta tal o cual tecla. Muchas gracias tiopepe.
Palmas
 
Saludos amigos listeros. Hay algo que no entiendo o me estoy confundiendo. El asunto es el siguiente: Leonardo J. da respuesta a un listero y le envia un código para el 16f628 (para usar el lcd) (que lo use con el f84 y funciono bien), pero lo que no entiendo es DONDE esta el "include" para que funcione este lcd. Dentro del comprimido de Leonardo hay un archivo llamado lcd_leo.c pero en el programa no indica su utilización. Osea, tengo entendido que para hacer funcionar un lcd, por ejemplo en ensamblador, se crean una serie de rutinas y para que cada vez no se esté escribiendo estas rutinas, se crea un "include a esta rutina". Alguien podría indicarme (quien si no tu Leonardo) por qué en el programa "...lcd para 16f628...." no se llama al archivo lcd_leo.c? Gracias por las respuestas y disculpen, pero todos creo que tenemos momentos de "bloqueo mental"

Palmas.
 
que mas gastón?,

aqui esta lo que pides, tanto para el 628 como para el 628a, el esquematico por si las moscas, ah!, no lo probe en un protoboard por que no tengo dicho pic, lo probe en proteus(que hay mismo esta el archivo) y algo si se, es que si sirve en proteus, sirve en cualquier montaje real, se lo aseguro, y a mi me sirvio, fijese las funciones y todo, y otra cosa, si no sirve o se ve muy claro, revisa las conexiones que por lo general es lo que fallan, despues si alguien lo pide, publico una libreria mucho mas completa con muchisimas mas opciones, como animaciones y todo eso, por lo pronto, me comenta, cuidese...

Hola.

Lo utilice en el pic 16f877a, unicamente cambie la libreria y en el proteus me corre bien y todo, solo que cuando lo hago fisicamente me aparece el mensaje parcial. solo se ve "Mundo", quisiera saber si es cosa de mi hardware o es la programacion que hay que cambiarle algo.

gracias
 
hola como estan, destripador el problema puede ser tu hadware muchas LCD son echisas que quiero decir con esto que son fabricadas por gente con poca experiencia en ese tema pero lo que pasa es que tienen un corrimiento de 5 letras si utilizas la libreria de LCD. c del CCS esta incluye una funcion que es lal siguinte

lcd_gotoxy(5,1)

que permite poder por coordenadas los mensajes el 5 indica su pocion sobre el eje X y el 1 su pocion sobre el eje Y checalo y ve si eso lo remedia
 

Adjuntos

  • Practica_10.txt
    1,014 bytes · Visitas: 989
Sres:

En el 16f628 y 648 para usar el puerto A con un lcd primero deben apagar los comparadores que de arranque se activan.

Debes poner CMCON en 0x07 (07 en hexa) para apagar los comparadores y poder usar el port A como I/O.

Alguna vez un moderador dijo ( creo que fué Fogonazo, no lo recuerdo bien):
LEAN LAS HOJAS DE DATOS...!
Un gran consejo que me ayudó mucho...!

Suerte con el LCD.
 
Como estas...muy interesante tu programa...y gracias por ello...perr quisiera saber si tu sabes como modificar la librería de PICC lcd.c para utilizar el puerto B del PIC16F628A para solo llamar a esa librería y no poner tanto código!

O tal vez sepas de algun problema que pueda existir con este pic y dicha librería...gracias de antemano!!!
 
hola foreros, que tal?? estoy realizando un proyecto para el instituto, y estoy haciendo un termómetro, y quiero mostrar la temperatura en el lcd. Pues bien, de momento solo veo la linea de arriba, la del contraste, y no se exactamente si le llegan datos al lcd,creo que si... entonces pongo mi programa a continuacion para ver si me podéis echar una mano y lográis ver algo que pueda modificar.
Cuando pruebo el lcd aun no le conecto el sensor de temperatura lm35, y he probado otros programillas en plan mostrar un "hola mundo" y nada. MXAS GRACIAS


#include <18f4550.h>
#device adc =16
#fuses XTPLL,noMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,NOVREGEN,INTRC_IO
#use delay(clock=12000000)
#use standard_io(A)
#use standard_io(B)
#use standard_io(C)
#use standard_io(D)
#include <lcd.c>

void main()
{
long vtem=0;
int temp=0; //temperatura a mostrar en grados.

//setup_oscillator(OSC_4MHZ);
lcd_init();
setup_adc_ports(AN0||VSS_VDD); //Se configura el CAD.
setup_adc(ADC_CLOCK_INTERNAL);
//setup_counters(RTCC_INTERNAL,RTCC_DIV_2); //TIMER0: Clock Interno y Preescaler
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_oscillator(False);

while (TRUE)
{

set_adc_channel(0); //seleccion de canal cad.
vtem=read_adc(); //Se carga variable con el valor del cad.
temp=(vtem*5)/655.35; //Formula Para pasar de decimal a grados.


//printf(lcd_putc,"\f");
lcd_gotoxy(1,1);
printf(lcd_putc,"vtem= %ld",vtem);
delay_ms(50);
lcd_gotoxy(1,2);
printf(lcd_putc,"TEMP: %d",temp);
delay_ms(50);
//delay_ms(6000);

}
}
 
hola foreros, que tal?? estoy realizando un proyecto para el instituto, y estoy haciendo un termómetro, y quiero mostrar la temperatura en el lcd. Pues bien, de momento solo veo la linea de arriba, la del contraste, y no se exactamente si le llegan datos al lcd,creo que si... entonces pongo mi programa a continuacion para ver si me podéis echar una mano y lográis ver algo que pueda modificar.
Cuando pruebo el lcd aun no le conecto el sensor de temperatura lm35, y he probado otros programillas en plan mostrar un "hola mundo" y nada. MXAS GRACIAS

Asegurate que estén bien conectadas todas las patas como dice el lcd.c, y antes de lcdInit agregá un delay de 20 milisegundos.

Si no tenés osciloscopio/analizador lógico, podrías usar un simulador como proteus para ver qué está haciendo el código.
 
En el proteus lo simulo y me funciona perfectamente, y creo que las patillas están bien, utilizo solo 4 bits y conecto desde la patilla 7 del puerto D hasta la 4,, desd D7 hasta D4, con sus respectivo enable, R/W...
Seguiré intentando cosejas a ver, aunq creo que mi problema puede provenir del tiempo al que funciona el pic, no se exactamente si estoy haciendo funcionar el reloj interno del pic a 4MHZ o no...
 
hola disculpame las molestias es q no tengo a quien recurrir q me pueda solucionar mi problema
te comento tengo una placa entrenadora con lcd y no puedo configurar los pines no se como poreso nesesito una mano
estos son los datos q tengo


Configuracion de LCD a 4 BITs

RB0 a RB3 datos
RB4 RS
RB5 rw
RB6 E

Todo el ( Puerto B ) ademas de ser configurado directamente a LCD contiene disponibles
de manera paralela a los LEDs desde RB0 a RB7.

Los leds estan seteados en dos partes RB0 a RB3 y RB4 a RB7 a negativo, por un jumper que puede ser levantado para disponer del HEADER y usar un protoboard externo, como entradas etc, independientemente.

Los pulsadores RA0 a RA3 contienen una resitencia pull up de 4k7 y capacitores de .1 para eliminar ruidos.

Las resistencias de los pulsadores RA0 y RA1 estan eliminadas opcionalemnte de fabrica de manera que al colocar los PRESET analogicos para desarrollar aplicaciones analogicas no compliquen su uso, de manera
que si se requiere tener estos pull up se alojan los presets en el centro, para poder usar digitalmente las entradas, si no fuere asi dispone de RA0 y RA1 normalmente para conversiones analogas en PICs como los 16F818.

El reloj de tiempo real a 32khz esta directamente conectado a la linea de 28 y 40 dip para su uso.

La memoria Serial 24LC256 esta conectada directamente a la linea de 28 y 40 dip por SCK y SDK de esta linea de PIC.

a estoy usando un pic 18f2550
gracias por tu ayuda

El Max232 esta comunicado directamente a las señales RX y TX para la linea 28 y 40 DIP.

El reset es general para todas las lineas desde 18 a 40 dip.

El cristal general des de 4mhz.

El buzzer y o led PWM esta conectado y seteado segun se elija uno u otro por jumper a PWM RC2.

El sensor de temperatura es del tipo TC74 RC4 y RC3

La programacion puede ser via ISCP por RJ o por Header lineal.

La alimentacion puede ser por batteria 9v.

La alimentacion maxima 12v 500 ma.


TODOS LOS ZOCALOS PARA PIC DESDE 18, 28 Y 40 DIP, ESTAN COMUNICADOS DE MANERA PARALELA CON SUS CORRESPONDIENTES PORTS DE MANERA DE PODER USAR Y EMIGRAR DE MICRO SIN PROBLEMAS.
 
Hola a todos, yo tengo un problema y no se si es el ccs o proteus pero cuando quiero simular en proteus el pic16f628a con un lcd de 16x2 no me sale el mensaje, solo se enciende la pantalla y eso es todo...he buscado por todos lados he puesto otras librerias de lcd.c y nada...me gustaria saber como puedo solucionar este problema o si a alguien le paso y ya lo soluciono...de ante mano muchas gracias...
 
Atrás
Arriba