
NUEVO BLOG YoReparo!
Nueva Base de Fallas - Videos!
Regístrate gratis para participar de los foros, o si ya estás registrado haz login.
| comentario del autor | Dom May 25, 2008 8:24 pm | |
|
|
||
| asistió a la solución | Mar May 27, 2008 11:45 pm | |
|
http://www.yoreparo.com/foros/digital/-quottodo-sobre-microcontroladores-pic-16f84-quot-t264122.html Saludos |
||
| solución | Vie May 30, 2008 10:31 pm | |
|
LCD.rar (1.19 kb) - |
||
| 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!!! |
||
| asistió a la solución | Sab May 31, 2008 5:48 pm | |
|
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 |
||