TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: BINARIO en 29 de Enero de 2007, 10:00:52
-
Alguien sabe de alguna libreria ya echa para utilizar un LCD tipo hitachi con un 16f877, espero su respuesta y gracias, si me pueden añadir el circuito estaria bueno.
-
revise el foro mijo
-
OK GRACIAS, ESTUVE BUSCANDO PERO NO HE ENCONTRADO AUN, SEGUIRE BUSCANDO, OTRA COSA GRACIAS POR SER TAN AMABLE...
-
la verdad en el foro hay mucha informacion sobre el tema
algunas dudas de lo leido se puede preguntar y aqui amablemente se puede responder.
saludos y gracias
-
haber amigo, visita este link: http://www.todopic.com.ar/foros/index.php?topic=4530.0 son ejemplos de Vszener, muchos, la primera pagina, el primer post del hilo en realidad tiene un indice busca los qeu digan lcd y ya iras viendo, pues como dicen, siempre trata de buscar, se que a veces uno quiere las cosas inmediatas, pero mas rapido a veces te sale que tu busques hasta qeu te respondan, weno hay te dejo, espero te sirva; adios.
ahh y weno si hablas de libreria supongo que te refieres a lenguaje c, este hilo que te dejo esta en CCS.
-
con cinco post echos y preguntando cosas repetidas hasta el cansancio no se puede pedir mucho
-
Señor Pshikon, lamento que mis dudas le hayan provocado tal estado de sulfuracion, solo queria conseguir alguna info de lcd porque estaba trabajando en un proyecto al respecto de eso, desconocia que no se podia preguntar en el foro sobre temas que ya figuraban, dado mi trabajo y que no cuento con demasiado tiempo es que no pude revisar a fondo el foro como usted debe de haberlo echo, estuve buscando en la red y encontre el ejemplo de hola mundo para lcd de 2x16 lo publicare en breve, nuevamente le reitero mis disculpas si le cause alguna molestia o me diriji a su persona de modo incorrecto, y me comprometo a respetar las normativas del foro en post de poder enviar y recibir informacion que es la finalidad de este foro segun creo, desde ya muchas gracias por su invaluable ayuda.
-
:o hola binario las rutinas del LCD son faciles de realizar solo hay que tener un poco de paciencia para poder realizarlas y leer un poco el datasheet del microcontrolador hitachi , bueno no te puedo agradeciria que me mencionaras en que entorno de programacion vas a realizar tu pruebas (MPLAB ,CSS,etc)
saludos :mrgreen:
-
Yo trabajo con MPLAB 7, asi que asi es como lo hago se que para muchos es el lenguaje de programacion mas complicado, es decir el mas bajo pero creo que es el que mejor se adapta a mis conocimientos se que hoy por hoy no importa mucho el tamaño del programa eso es cosa del pasado, pero sabes me gustaria programar en C, el pic basic me esta gustando, mira consegui una rutina del LCD es esta:
;****************************************** http://www.x-robotics.com *******
; PROGRAMA : LCD.LIB
; Funcion : Libreria de funciones para controlar un display
; LCD de 2x16 lineas complatible con Hitachi.
;
; Revision : 1.0 Programa para : PIC16F84
; CPU Clock : 4 MHz Reloj instruccion : 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
;****************************************** http://www.x-robotics.com *******
LCD_E BSF RA,2 ;Activa señal E
NOP ;Espera 1uS
BCF RA,2 ;Desactiva señal E
RETURN
LCD_BUSY BSF RA,1 ;Pone el LCD en modo lectura
BSF STATUS,5 ;Selecciona el Banco 1
MOVLW 0xFF
MOVWF TRISB ;Puerta B act£a de entrada
BCF STATUS,5 ;Selecciona el Banco 0
BSF RA,2 ;Activa el LCD (Señal E)
NOP
L_BUSY BTFSC RB,7 ;Chequea el bit BUSY
GOTO L_BUSY ;Est a "1" (Ocupado)
BCF RA,2 ;Desactiva el LCD (Se¤al E)
BSF STATUS,5 ;Selecciona el Banco 1
CLRF TRISB ;Puerta B actua como salida
BCF STATUS,5 ;Selecciona el Banco 0
BCF RA,1 ;Pone el LCD en modo escritura
RETURN
LCD_REG BCF RA,0 ;Desactiva RS (Modo instruccion)
MOVWF RB ;Saca el codigo de instruccion
CALL LCD_BUSY ;Espera a que se libere el LCD
GOTO LCD_E ;Genera pulso en señal E
LCD_DATOS BCF RA,0 ;Desactiva RS (Modo instrucci¢n)
MOVWF RB ;Valor ASCII a sacar por RB
CALL LCD_BUSY ;Espera a que se libere el LCD
BSF RA,0 ;Activa RS (Modo dato)
GOTO LCD_E ;Genera pulso en señal E
LCD_INI MOVLW b'00111000'
CALL LCD_REG ;Codigo de instruccion
CALL DELAY_5MS ;Temporiza 5 mS.
MOVLW b'00111000'
CALL LCD_REG ;Codigo de instruccion
CALL DELAY_5MS ;Temporiza 5 mS.
MOVLW b'00111000'
CALL LCD_REG ;Codigo de instruccion
CALL DELAY_5MS ;Temporiza 5 mS.
RETURN
LCD_PORT BSF STATUS,5 ;Selecciona el banco 1 de datos
CLRF TRISB ;RB se programa como salida
MOVLW b'00011000' ;RA<4:3> se programan como entradas
MOVWF TRISA ;RA<2:0> se programan como salidas
BCF STATUS,5 ;Selecciona el banco 0 de datos
;MOVLW b'00000000'
;MOVWF INTCON ;Desactiva interrupciones
BCF RA,0 ;Desactiva RS del modulo LCD
BCF RA,2 ;Desactiva E del modulo LCD
;****************************************************************************
;DELAY_5MS genera una temporizacion de 5mS necesario para la secuencia de
;inicio del LCD
DELAY_5MS movlw 0x1a
movwf DATO_B
clrf DATO_A
DELAY_1 decfsz DATO_A,1
goto DELAY_1
decfsz DATO_B,1
goto DELAY_1
return
Esta muy buena y gracias a esta rutina estoy aprendiendo a dominar este tipo de display creo que con un poco de trabajo es posible lograr muchas cosas, se que esta libreria se puede incluir llamandola desde el programa con un include, pero segun veo tambien se pueden introducir las subrutinas en el prg que hagas y te va a funcionar igual.
bueno si saben algo mas siempre es buena una data, seguire buscando y espero lograr grandes cosas con este bicho de 2x16.
Gracias por el manual que publicaste me ha sido de mucha utlidad aprendi mucho de ese manual junto con esta libreria creo que cualquiera que entre al foro podra aprender a utilizar lo unico que no me guio como plantear el circuito, si lo se medio tonto de mi parte pero una manito en este aspecto me permitiria lograr concluir mi proyecto con lcd.
-
ACA ESTA EL EJEMPLO QUE PROMETI DEL PROGRAMA HOLA MUNDO ESTE ES PARA UN 16cf84, si alguien se da una idea qu ese modifica para un 16f877 bienvenida sea la mano brindada nos vemos
1110001100001001
;****************************************** http://www.x-robotics.com *******
; PROGRAMA : hola.asm
; Funcion : Programa de ejemplo de utilizacion de rutinas para control de
; LCD Hitachi 44780 o compatible.
; Revision : 1.0 Programa para : PIC16F84
; CPU Clock : 4 MHz Reloj instruccion : 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
;****************************************** http://www.x-robotics.com *******
;
;
;****************************** Igualdades **********************************
;
list p=16c84 ;Procesador PIC16c84
list c=132 ;Listado a 132 caracteres
TIMER0 equ 01 ;Registro del TIMER0
OPCION equ 0x1 ;Registro de opciones,p gina 1
PCL equ 0x2 ;Registro PC
PCLATH equ 0xa ;Registro alto del PC
STATUS equ 03 ;Registro de estado
RA equ 05 ;Puerta A
RB equ 06 ;Puerta B
PORTA equ 05 ;Puerta A
PORTB equ 06 ;Puerta B
TRISA equ 0x5 ;Reg. de programaci¢n de la puerta A, p gina 1
TRISB equ 0x6 ;Reg. de programaci¢n de la puerta B, p gina 1
INTCON equ 0xb ;Registro de control de interrupciones
DATO_A equ 0xc ;Registro del dato A
DATO_B equ 0xd ;Registro del dato B
RESUL equ 0xe ;Registro de resultados
TEMPO1 equ 0xf ;Registro temporal 1
TEMPO2 equ 0x10 ;Registro temporal 2
OFFSET equ 0x11 ;Variable de desplazamientos de mensajes
RP0 EQU 05h ;Bit 5 registro STATUS
Digito EQU 1Fh ;Cursor para leer la tabla de datos.
;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
ORG 00h ;Direccion del Vector de RESET
GOTO INICIO ;Comienza el programa
ORG 05h ;detras del Vector Interrupcion
Include "LCD.LIB"
;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
INICIO CLRF Digito ;Pone a 0 la variable digito
CALL LCD_PORT ;Puertos en modo LCD
BCF RA,0 ;Desactiva RS del modulo LCD
BCF RA,2 ;Desactiva E del modulo LCD
START CALL LCD_INI ;Inicia LCD (CFG puertos...)
START_1 MOVLW b'00000001' ;Borrar LCD y Home
CALL LCD_REG
MOVLW b'00000110' ;
CALL LCD_REG
MOVLW b'00001100' ;LCD On, cursor Off,Parpadeo Off
CALL LCD_REG
MOVLW 0x80 ;Direccion caracter
CALL LCD_REG
REPETIR MOVF Digito,w ;W=Digito
CALL DATO_1 ;Coge el caracter
IORLW 0 ;Compara
BTFSC STATUS,2 ;Es el ultimo?
GOTO acabar ;Si
CALL LCD_DATOS ;Visualiza caracter
INCF Digito,f ;Incrementa numero de Digito
GOTO REPETIR ;Vuelve a escribir
acabar nop
goto acabar ;Buclee infinito
;<<<<<<---------------------- TABLA DE DATOS ------------------------->>>>>>>
DATO_1 ADDWF PCL,1
RETLW 'H'
RETLW 'O'
RETLW 'L'
RETLW 'A'
RETLW ' '
RETLW 'M'
RETLW 'U'
RETLW 'N'
RETLW 'D'
RETLW 'O'
RETLW 0x00
;<<<<<<\\\\\\\\\\\THE\\\\\\\\\\\\\\\\////////////////END//////////////>>>>>>>
END
-
Para pasar tu programa al pic16f877 solo debes leer el datasheet :mrgreen:
-
QUE APORTE SEÑOR !
111001110001110011010110010101010101010101010101011111000000000011100010100
000000000000011100000000000011000000000111111111111000011111110101101000011
-
Por lo demas no creo que haya alguien del foro que modifique tu programa al pic que pides no por lo complejo que seria si no por que pienso que de esta forma se te estaria mal acostumbrando a que todo se de en bandeja, lo cual pienso yo no es la idea del foro, No es mala onda solo es una opinion personal.
-
Coincido con ascii, no te debes molestar, pero si si se teda todo realizado, entonces nunca aprenderas y lo mejor de todo y lo que mas satisfaccion te da es realizar una cosa por ti mismo.
Lo que si hacemos todos es responder a preguntas, dudas, etc... muy concretas respecto a cualquier cosa que no entiendas y en la que estes. O no te ha gustado hecerte la rutina que has posteado.
De todas formas no es mucho lo que hay que cambiar para pasar de un micro a otro. No es necesario que te leas todo el datasheet, con ver las paginas de memoria y la siruacion de los registros SFR va a ser suficiente y veras como lo consigues.
Fermin
-
:-/ :-/TKZ, PERSONALMENTE CREO QUE DAR ALGUNOS EJEMPLOS AYUDA A QUE OTROS QUE DIRECTAMENTE NO TIENEN IDEA O POSIBILIDAD ALGUNA PRACTIQUEN Y SE VAYAN HACIENDO UNA IDEA, PARA APRENDER DE PIC ESTUVE MUCHO TIEMPO LEYENDO Y BUSCANDO INFORMACION NADIE PIDE LAS COSAS EN BANDEJA, SOLO TENGO LA INTENCION DE QUE EN PARTE SI ALGUIEN DESCONOCE DE UN TEMA EN EL FORO NO SE CONTESTE DE MANERA PEDANTE DICIENDO INVESTIGALO VOS, O ESTA EN EL FORO, CREO QUE MI OPINION ES CLARA Y MIENTRAS PUEDA POSTEARE LOS TEMAS QUE VAYA ENCONTRANDO O LOS PORYECTOS QUE PUEDA DESARROLLAR, CREO QUE COMPARTIR LA INFORMACION ES EL UNICO CAMINO PARA LOGRAR NUEVOS DESCUBRIMIENTOS, VOS NO LO SABES PERO TAL VEZ SI LE NEGAS UNA DATA A ALGUN FLACO QUE PREGUNTA AMABLEMENTE ESTES SACANDO DEL MEDIO A ALGUIEN QUE PODRIA LLEGAR A SER MUY BRILLANTE Y BENEFICIARNOS A TODOS YO NO EXIJO A NADIE QUE PROPORCIONE INFORMACION OBLIGATORIAMENTE CUANDO ALGUIEN INDAGUE DE UNA DUDA, PERO CREO QUE UN LINK, O UN ACLARACION AMABLE SURTE MAS EFECTO QUE UNA RESPUESTA PEDANTE Y ENGREIDA, ES MI HUMILDE OPINION Y ESPERO QUE LOS PROXIMOS POST SEAN DE APORTES MAS QUE DE REGAÑOS, DADO QUE ESTE FORO SEGUN CREO SE TRATA DE PERSONAS ADULTAS COMPARTIENDO INFORMACION, ESPERO QUE PODAMOS SEGUIR COMPARTIENDO LA INFORMACION QUE TODOS NECESITAMSO SOBRE LA MATERIA QUE NOS GUSTA.
110010101011000111110001111111111111111100101000010011111000010101010101011
011111111010111111111111111110010100001001111100001010101010101100000000001
-
Binario, más allá de tus razones que puedan ser buenas o no, te pido leas las reglas del foro sobre todo la sección donde se aclara que el uso de mayúsculas es "gritar".
Con el tiempo te darás cuenta que el espíritu de la mayor parte de los miembros activos del foro es la de compartir conocimientos. También es cierto que hay mucho posteado y a veces es molesto ver y ver y ver de nuevo la misma pregunta por más que tu no tengas la culpa de eso, esa es la finalidad de que te digan que 'busques' , porque hay decenas de miles de posts en este foro y versan sobre distintos temas, entonces es raro que algo que no sea estrictamente nuevo no aparezca, al menos siquiera mencionado.
Saludos
-
comprendido señór moderador,nome dicuentadelas mayusculas le pido me disculpesigamos con el tema si?
-
la MODIFICACION SOLO TIENES QUE DECLARAR LOS VARIABLES GENERALES DESDE LA POSICION 20
Y TAMBIEN TENER LAS SALIDAS DEL PORTA COMO DIGITALES
MOVLW 07 ; SALIDAS O ENTRADAS DIGITALES DIGITALES
MOVWF ADCON1
DATO_A equ 20 ;Registro del dato A
DATO_B equ 21 ;Registro del dato B
RESUL equ 22 ;Registro de resultados
TEMPO1 equ 23 ;Registro temporal 1
Y ASI SUCESIVAMENTE
Y NO TIENES MAS NADA QUE HACER
DISCULPAS POR MAYUSCULA
SALUDOS
-
comprendido señór moderador,nome dicuentadelas mayusculas le pido me disculpesigamos con el tema si?
Si, la idea es continuar con el tema, lo de las mayúsculas fue un comentario al margen.
Para darte una pauta, debes comparar el pic de origen con el pic destino. En tu caso, el pic de destino es mucho mas grande y complejo (tiene los mismos módulos y aún más que el pic original). Esto te beneficia ya que está garantizado casi al 99% de que tu aplicación, cualquiera sea, podrá correr en el nuevo pic. Un caso en que no sería posible una migración sería si el nuevo pic a pesar de ser mayor, no tenga un módulo (por ejemplo el módulo USB) , pero este no es tu caso.
El código que has puesto es muy breve y simple. No habría problemas en migrarlo.
Deberás verificar que la declaración que hiciste de registros sea correcta, para ello haz
include "P16F877.inc" y con eso ya habrás incluido los registros del nuevo pic con lo cual no te hace falta hacer todos los EQUS que tu has hecho. Ya están definidos en el archivo .inc que provee microchip
Como sugerencia, fíjate de deshabilitar las entradas analógicas del puerto A del PIC16F877.
Esto se hace cargando 0x06 en el registro ADCON1.
Sería importante conocer para qué micro está hecha esa librería (LCD.LIB) y verificar si es posible reconfigurarla, en caso contrario deberás recodificarla.
Saludos
-
maunix si no me equivoco creo que todo el programa esta hecho en base al PIC16F84...saludos :)
-
maunix si no me equivoco creo que todo el programa esta hecho en base al PIC16F84...saludos :)
Si, el código lo leí, pero me parece que se te pasó por alto esto:
ACA ESTA EL EJEMPLO QUE PROMETI DEL PROGRAMA HOLA MUNDO ESTE ES PARA UN 16cf84, si alguien se da una idea qu ese modifica para un 16f877 bienvenida sea la mano brindada nos vemos
Como ves el amigo pide ayuda para pasar su código al 16F877.
Saludos
-
Si claro eso lo tengo claro, yo pense que tu pregunta iba referida a la libreria LCD.LIB, creo que no nos estamos entendiendo, otra cosa para desabilitar las entradas analogicas del porta, yo cargo 0X07 no 0x06 como tu planteas, no recuerdo bien probablemente la configuracion sea 11x para los LSB en ese caso daria igual.... saludos.
-
Hola Binario: para conectar el lcd al pic debes asignar cada pata del pic a cada pata del lcd en cuanto a datos y control, suponiendo que la transmisión de datos hacia el lcd lo hagas a 8 bits por ejemplo, puedes elegir el puerto b completo osea desde RB0 hasta RB7 conectados a las patas 7 hasta la 14 del lcd que corresponden al D0 hasta D7 del mismo.
luego elijes los otros tres pines de control que van al lcd, que son RS pata 4, RW pata 5 y E pata 6 del lcd, en este caso podrías elejir el puerto E completo (tiene solo tres bits) que serían RE0, RE1 y RE2.
para el programa tendrías que modificar el asembler para que los datos y el control te salgan por dichos pines del 16f877.
cualquier cosa pregunta.
saludos.