Cambio de pantalla lcd 16x2

#22
En proteus tienes que poner la salida de la pantalla por ejemplo si utilizas el puerto b de salida lo pones asi:

PIC LCD

RB0------------>D4
RB1------------>D5
RB2------------>D6
RB3------------>D7
RB4------------>RS
RB5------------>E
RW----->a masa

No se porque hay que ponerlo asi, pero en la vida real hay que ponerlo como lo explica la ayuda del flowcode (RB0---->D0, etc) hay muchas personas que no han podido simular un LCD en proteus por el mismo problema yo lo descubri intentando esto y WUA me sirvio, Tambien hay otro problema que por ejemplo si quieres mostrar 255 en bit proteus te muestra 77 o si quieres mostrar 1023 en INT proteus te muestra 308 esto se arregla aplicando unos calculos pero en la vida real no hay que aplicar nada, Parace que flowcode y proteus no se entienden bien lo demas si funciona bien...
 
#23
me guataria mantener vivo el hilo hasta que que consiga hacer funcionar una simulacion en proteus. Mira que busco...
" cuatro termostatos, con salida a 4 reles e indicación de max. y min. para cada uno.
cuando pulse el lcd cambia de t1 (con su max, y min.) a t2 y asi sucesivamente"
y seguro que es una tonteria. Pero no doy con la tecla.
saludos.
 
#25
Bueno, a los amigos que han seguido este hilo, os dejo, con permiso de los moderadores, un pdf que me ha parecido muy interesante. Complementa a nuestro querido libro del 16f84 del Sr.Palacios.
(son 300 paginas con un monton de ejemplos.) merece la pena verlo.
Aqui os dejo el ASM que andaba buscando. Pulsando el swich cambia la pantalla del lcd.
el ejemplo es del libro que os comento.
Espero que sea de utilidad para otros novatos como yo.
saludos y... hasta otra.


Código:
title " Visualización de mensajes en función de un pulsador "
;************************************** Mens_06.asm 
; En el modulo LCD se pueden visualizar varios mensajes diferentes. El paso de uno
; a otro se realiza al actuar sobre un pulsador conectado a la línea RA4.
; En pantalla aparecere por ejemplo:
; " Mensaje 2 " (primera línea).
; "S.S. de los Reyes." (segunda línea).
;**
;Programa para PIC 16F877.
;Velocidad del Reloj:1 MHz.
;Reloj instrucción: 250 KHz = 4 uS.
;Perro Guardián deshabilitado.
;Tipo de Reloj XT.
;Protección de Código: OFF.
;************************************** Elegimos PIC ********************************************************************
138
list p=16f877, f=inhx32
;***************** Asignación de nombres de Registros de Funciones especiales a direcciones *****************
#include <p16f877.inc> ;Este fichero contiene los nombres y direcciones de los
; registros de funciones especiales.
; Este fichero esta localizado en el directorio
; con el nombre MPASM.
;************************************** Igualdades ***********************************************************************
#DEFINE Pulsador PORTA,4 ; Línea donde se conecta el pulsador.
ValorMaximo EQU D'4' ; Numero de mensajes.
;************************************** Registros ************************************************************************
CBLOCK 0x20
Contador ; El contador a visualizar.
ENDC
;************************************* Sección Código de Reset *******************************************************
ORG 0 ;Dirección del Vector Reset
GOTO COMIENZO ;Comienzo del Programa
;*********************************** Sección de Configuración *********************************************************
COMIENZO clrf PORTA ; Reseteamos el PORTA.
bsf STATUS,RP0 ; Ir al Banco 1.
movlw 0x06 ; Poner el PORTA como señales digitales.
movwf ADCON1
bsf Pulsador ; Línea del pulsador configurada como entrada.
bcf STATUS,RP0 ; Ir al Banco 0.
call LCD_Inicializa ; Inicializar el LCD.
clrf Contador
call Visualiza ; Inicializa contador y los visualiza por primera vez.
;************************************* Principal **************************************************************************
Principal btfsc Pulsador ; Lee el pulsador.
goto Fin
call Retardo_20ms ; Espera estabilicen niveles de tensión.
btfsc Pulsador ; Vuelve a leer el pulsador.
goto Fin
call IncrementaContador ; Incrementa el contador.
call Visualiza ; Visualiza el mensaje correspondiente.
EsperaDejePulsar btfss Pulsador
goto EsperaDejePulsar
Fin goto Principal
;********************************** Subrutina "IncrementaContador" **************************************************
; Incrementa el valor de la variable Contador. Si llega al valor máximo lo resetea.
IncrementaContador incf Contador,F ; Incrementa el contador.
139
movf Contador,W ; Ha superado su valor máximo?
sublw ValorMaximo-1 ; (W)<- ValorMaximo-(Contador).
btfss STATUS,C ; Si C=1 salta una instrucción.
(Contador)> #ValorMaximo
clrf Contador ; Lo inicializa si ha superado su valor máximo.
return
;************************************** Subrutina "Visualiza" **********************************************************
Visualiza call LCD_Borra ; Borra la pantalla y se sitúa en la línea 1.
movlw MensajeN ; Apunta a este mensaje.
call LCD_Mensaje ; Lo visualiza.
movf Contador,W ; A continuación visualiza el contador.
call BIN_a_BCD ; Se debe visualizar en BCD.
call LCD_Byte
call LCD_Linea2 ; Al principio de la segunda línea del LCD.
movf Contador,W
call ApuntaMensaje ; Apunta al mensaje que se va a visualizar.
call LCD_Mensaje ; Lo visualiza.
return
;************************************** Subrutina "ApuntaMensaje" ****************************************************
ApuntaMensajeaddwf PCL,F
retlw Mensaje0
retlw Mensaje1
retlw Mensaje2
retlw Mensaje3
;***************************************** Subrutina "Mensajes" ********************************************************
Mensajes addwf PCL,F
Mensaje0 DT " DESARROLLO DE ",0x00 ; Posición inicial del mensaje 0.
Mensaje1 DT " PROYECTOS ", 0x00 ; Posición inicial del mensaje 1.
Mensaje2 DT "S.S. SEBASTIAN", 0x00 ; Posición inicial del mensaje 2.
Mensaje3 DT "de los Reyes", 0x00 ; Posición inicial del mensaje 3.
MensajeN DT " Mensaje ", 0x00 ; Posición inicial del mensaje primera línea del LCD.
;*********************************************** Librerías ****************************************************************
INCLUDE <LCD_MENS.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
END
 

Adjuntos

#26
Hola amigos, muy buen material el que han aportado! Yo estoy con el mismo dilema de modificar los valores que aparecen en el lcd mediante un pulsador. La parte de intercambiar la información mostrada ya la implementé con el Flowcode (si alguien la necesita la subo).
Ahora estoy necesitando la rutina en flowcode para modificar los valores visualizados en el lcd mediante pulsadores "subir" y "bajar", ya q le doy vueltas y no logro hallar la solución.. Espero alguien pueda ayudarme.
Saludos y felicitaciones por el foro!
 
#27
Hola amigos, muy buen material el que han aportado! Yo estoy con el mismo dilema de modificar los valores que aparecen en el lcd mediante un pulsador. La parte de intercambiar la información mostrada ya la implementé con el Flowcode (si alguien la necesita la subo).
Ahora estoy necesitando la rutina en flowcode para modificar los valores visualizados en el lcd mediante pulsadores "subir" y "bajar", ya q le doy vueltas y no logro hallar la solución.. Espero alguien pueda ayudarme.
Saludos y felicitaciones por el foro!
 
#28
cfperalta dijo:
Hola amigos, muy buen material el que han aportado! Yo estoy con el mismo dilema de modificar los valores que aparecen en el lcd mediante un pulsador. La parte de intercambiar la información mostrada ya la implementé con el Flowcode (si alguien la necesita la subo).
Ahora estoy necesitando la rutina en flowcode para modificar los valores visualizados en el lcd mediante pulsadores "subir" y "bajar", ya q le doy vueltas y no logro hallar la solución.. Espero alguien pueda ayudarme.
Saludos y felicitaciones por el foro!
Creo que esto es lo que quieres:
 

Adjuntos

Temas similares

Arriba