Buscador
YoReparo.com La Web 

Regístrate gratis para participar de los foros, o si ya estás registrado haz login.

Control modulo LCD con PIC16F84A

comentario del autor Dom May 25, 2008 8:24 pm
   
Hola amigos les pido q podavor me ayuden me compre un LCD y quiero programarlo ya se programar con este PIC pero nose como usar el LCD en assembler nose si alguien me podria pasar las librerias necesarias y algun programa sencillo como ejemplo gracias de antemano.

MILmaster

Reputación

asistió a la solución Mar May 27, 2008 11:45 pm
   
Aquí tienes bastante información al respecto:
http://www.yoreparo.com/foros/digital/-quottodo-sobre-microcontroladores-pic-16f84-quot-t264122.html
Saludos

torres.electronico
Moderador
Reputación

solución Vie May 30, 2008 10:31 pm
   
Hola. Las librerias te las puedo pasar, lo dificil es aprenderlas a utilizar.

LCD.rar  (1,19 kb) -

Fofo almarales

Reputación

asistió a la solución Sab May 31, 2008 5:38 pm
   
MILmaster escribió:Hola amigos les pido q podavor me ayuden me compre un LCD y quiero programarlo ya se programar con este PIC pero nose como usar el LCD en assembler nose si alguien me podria pasar las librerias necesarias y algun programa sencillo como ejemplo gracias de antemano.


Hola, no se si esto te podra ayudar, mas aya del uso de librerrias, ahy otra forma de usar los LCD, que aunque es algo mas largo de programar, se termina haciendo mas simple. Al menos para comenzar. A ver:

En principio el LCD se debe configurar antes de comenzar a escribir, por ello lo primero sera mandar la info de configuracion. Una vez configurado, la idea es enviar los pulsos de habiliacion correspondientes y la informacion en binario correspondiente a cada letra o instruccion a ejecutar. Te adjunto un par de documento que oportunamente baje de internet y un programita bastante simnple que escribe una frase en un lcd de 16*2, a partir de un pic16f84a.
Aca te copio el codigo del programita que esta adjnto para explicarte algo de los que est, aunque creo que el programa es bastante claro. Algo mas, para saber que codigo binario le corresponde al ascii que queres escribir tenes que buscar el mapa de caracteres de tu Display, por ello, si el mapa no es igual al del mio, lo que escriba no sera correcto aunque la parte de configuracion es muy parecida en todos.


;(aqui te indica como coenstar el display con el pic y la configuracion basica)
;LCD
;RB0 a RB7 del PIC van a DB0 a DB7 del LCD
;RA0 = RS
;RA1 = R/W
;RA2 = E
;Programa diseñado para PIC 16F84 con Oscilador
;a cristal de 4MHz.

;(a partir de aqui se definen las equivalencias)
status equ 03
porta equ 05
portb equ 06
trisa equ 85
trisb equ 86
;(Lo que sigue es para el temporizador)
reg1 equ 10
reg2 equ 11
reg3 equ 12

valor1 equ d'130'
valor2 equ d'150'
;(en esta parte se salta el vector de interrupcion, ya que las mismas no son utilizadas)
reset org 0
goto inicio
org 5
;(desde aqui se configuran las lineas de entrada y salida,
;yo personalmente las lineas queno uso las onfiguro como salida)

inicio bsf status,5
movlw b'00000'
movwf trisa
movlw b'00000000'
movwf trisb
bcf status,5
;aca limpio los puertos, para asegurarme que no exista basura en ellos

config clrf porta
clrf portb

;desde aca configuro el LCD, como se describe en uno de los archivos que te adjunte

movlw b'00110000'
movwf portb
nop
nop
bsf porta,2
call tiempo
clrf porta

movlw b'00111000'
movwf portb
nop
nop
bsf porta,2
call tiempo
clrf porta

movlw b'00001110'
movwf portb
nop
nop
bsf porta,2
call tiempo
clrf porta

movlw b'00000110'
movwf portb
nop
nop
bsf porta,2
call tiempo
clrf porta

;ahora estamos listos para escribir en el display, recorda que cada caracter lo mandamos individualmente
;sin usar tables ni definiciones
;para hacer mas facil el programa, escribi una sub-rutina de escritura, la cual llame escribir, por lo tanto
;luego de cargar el codigo binario en el registro W llamo a esa sub-rutina, cuando regreso cargo el codigo
;siguiente y asi sigo hasta el final.
; Expotecnica 2007

caract movlw b'01000101' ; E
call escribir
movlw b'01111000' ; x
call escribir
movlw b'01110000' ; P
call escribir
movlw b'01101111' ; o
call escribir
movlw b'01010100' ; T
call escribir
movlw b'01100101' ; e
call escribir
movlw b'01100011' ; c
call escribir
movlw b'01101100' ; n
call escribir
movlw b'01101001' ; i
call escribir
movlw b'01100011' ; c
call escribir
movlw b'01100001' ; a
call escribir

movlw b'00100000' ; -- espacio --
call escribir
movlw b'00110010' ; 2
call escribir
movlw b'00110000' ; 0
call escribir
movlw b'00110000' ; 0
call escribir
movlw b'00110111' ; 7
call escribir
; Salto de línea
movlw b'11000000' ; ABAJO !!!
call salto_linea
:baje a la segunda linea (lcd2*16) y sigo escribiendo.
; Técnica #1 MERLO
movlw b'01010100' ; T
call escribir
movlw b'10010110' ; é
call escribir
movlw b'01100011' ; c
call escribir
movlw b'01101110' ; n
call escribir
movlw b'01101001' ; i
call escribir
movlw b'01100011' ; c
call escribir
movlw b'01100001' ; a
call escribir
movlw b'00100000' ; espacio
call escribir
movlw b'00100011' ; #
call escribir
movlw b'00110001' ; 1
call escribir
movlw b'00100000' ; espacio
call escribir
movlw b'01001101' ; M
call escribir
movlw b'01000101' ; E
call escribir
movlw b'01010010' ; R
call escribir
movlw b'01001100' ; L
call escribir
movlw b'01001111' ; O
call escribir
;ahora lo hago parpadear un par de veces, borrar y recomenzar (si mal no lo recuerdo)

call parpadear
goto caract

;aqui estan todas las sub-rutinas
;temporizador

tiempo movlw valor2
movwf reg2
dos movlw valor1
movwf reg1
uno decfsz reg1
goto uno
decfsz reg2
goto dos
retlw 00
;la de escribir
escribir movwf portb
call tiempo
bsf porta,0
bsf porta,2
call tiempo
clrf porta
clrf portb
retlw 00
;la del parpadeo que utiliza algunas funciones del display
parpadear movlw 5
movwf reg3
parpadear1 clrf porta
movlw b'00001000' ; Apago la pantalla
movwf portb
bsf porta,2
call tiempo
bcf porta,2
; Le doy un retardo
call tiempo
call tiempo
call tiempo
; Prendo la pantalla
movlw b'00001100' ; Prendo la pantalla
movwf portb
bsf porta,2
call tiempo
bcf porta,2
; Le doy un retardo
call tiempo
call tiempo
call tiempo
decfsz reg3
goto parpadear1
;para limpiar la pantalla
; Borro la pantalla
movlw 0
movwf portb
bsf porta,2
call tiempo
bcf porta,2
call tiempo
retlw 00
;rutina para saltar de linea en el display, de la primera a la segunda
salto_linea movwf portb
clrf porta
bsf porta,2
call tiempo
bcf porta,2
call tiempo
clrf portb
call tiempo
clrf porta
retlw 00


end
;algunos codigos para recordar
; Ir arriba: 10
; Ir abajo: 01
; Clear: db3 = 1 d c b ( display, cursor, blink )
; Expotecnica 2007
; Tecnica 1 Merlo



Bueo espero que todo esto te sea de utilidad, cualquier duda respecto del presente no hay problema si me lo consultas.
Cordialmente Christian
SUERTE!!!

lp.txt  (3,51 kb) -

manual_LCD.pdf  (253,13 kb) -

MODULOS LCD.doc  (377 kb) -

roggero_ch

Reputación

asistió a la solución Sab May 31, 2008 5:48 pm
   
No esta mal lo que estas exponiendo, pero consumís recursos del micro... quiza, sea mas efectible implementar de ultima una eeprom con mensajes precargados y con el PIC directamente buscamos la direccion y subimos al LCD.
Osea, lo veo mas sencillo que armar semejante estructura que nos ocupa bastante capacidad y tiempo...
Ojo, no digo que este mal lo que estas exponiendo, solo doy un simple punto de vista.
Saludos

torres.electronico
Moderador
Reputación



Hacer una pregunta

Reglamento / P+F

Foros

Miembros / Expertos