lcd_caracter_personalizado

Anuncio
C:\prueba_lcd_1\caracteres.asm
; REALIZADO POR EL ING. CESAR QUISPE, COMO PARTE DEL CURSO DE MICROCONTROLADORES
; SENATI-SURQUILLO.
; EL PRESENTE "CODIGO NUEVO" GRABA UN CARACTER PERSONALIZADO Y LUEGO LO VISUALIZA
EN
; EL LCD.
List P=16f84a
INCLUDE "P16F84A.INC"
__CONFIG
_XT_OSC & _CP_OFF & _PWRTE_ON & _WDT_OFF
org 0x00
goto inicio
org 0x05
CBLOCK 0X0C
------------DAT_ROM
<----AGREGAR
ENDC
inicio
bsf
clrf
clrf
bcf
ESTADO,5
PTAB_T
PTAA_T
ESTADO,5
call
inicializa_lcd
call
LCD_CURSOR_ON
; Debe encenderse el LCD luego de inicializarse.
;-------------------CODIGO
NUEVO--------------------------------------------call
CGRAM
;Esta funcion GRABA el caracter PERSONALIZADO al
LCD
call
CLEAR_LCD
;Esta funcion "Retorna" el cursor al LCD(en el
paso
;anterior el cursor se quedo en la CGROM
movlw
.00
;Se carga el codigo ASCII o el Caracter
;por ejemplo podria ser : .64 o '@'
;En este caso se mostrara el byte GRABADO.
call
MOSTRAR_CARACTER;el codigo anterior se envia al LCD para
mostrarlo.
;--------------------CODIGO
NUEVO----------------------------------------------bucle
goto
bucle
;//////// Antes de llamar a esta funcion el dato debe estar en w /////////
;/// SE EMPLEA TANTO PARA VISUALIZAR UN DATO EN EL LCD O PARA GRABAR
;/// UN NUEVO CARACTER EN LA CGROM.
MOSTRAR_CARACTER
movwf
DAT_ROM
bsf
PTAA_T,0
; RS=1
bcf
PTAA_T,1
; E=0
;///////////////////
movfw
DAT_ROM
;enviando la parte alta
movwf
PTAB_T
bsf
PTAA_T,1
; E=1; Inicio escrtura
bcf
PTAA_T,1
; E=0
call
retardo_40microseg ; Debe durar 50 microsegundos
SWAPF
DAT_ROM,0
;enviando la parte BAJA
movwf
PTAB_T
bsf
PTAA_T,1
; E=1; Inicio escrtura
bcf
PTAA_T,1
; E=0
call
retardo_40microseg ; Debe durar 50 microsegundos
return
;/////////////////FN LEER CARACTER
1
C:\prueba_lcd_1\caracteres.asm
;ESTA FUNCION GRABA UN CARACTER EN LA CGRAM (UN CARACTER
; PERSONALIZADO EN EL LCD Y ES EL SIGUIENTE.
;000 11111 -->Dir a grabar =0x40 DATO a grabar=31
;000 00100 -->Dir a grabar =0x40 DATO a grabar=04
;000 01110 -->Dir a grabar =0x40 DATO a grabar=14
;000 01010 -->Dir a grabar =0x40 DATO a grabar=10
;000 01110 -->Dir a grabar =0x40 DATO a grabar=14
;000 00100 -->Dir a grabar =0x40 DATO a grabar=04
;000 11111 -->Dir a grabar =0x40 DATO a grabar=31
CGRAM
movlw
call
0X40
;
CGRAM_DIR
<---DIRECCION INICIAL DEL 1ER CARACTER
movlw
call
.31
; <--1ra fila del caracter
MOSTRAR_CARACTER
movlw
call
movlw
call
0X41 ;1
CGRAM_DIR
.04
MOSTRAR_CARACTER
movlw
call
movlw
call
0X42 ;2
CGRAM_DIR
.14
MOSTRAR_CARACTER
movlw
call
movlw
call
0X43 ;3
CGRAM_DIR
.10
MOSTRAR_CARACTER
movlw
call
movlw
call
0X44 ;5
CGRAM_DIR
.14
MOSTRAR_CARACTER
movlw
call
movlw
call
0X45 ;6
CGRAM_DIR
.4
MOSTRAR_CARACTER
movlw
0X46
; <---DIRECCION FINAL 1ER CARACTER, EL SEGUNDO CARACTER
COMIENZA EN 0X47
call
CGRAM_DIR
movlw
.31
; <--Ultima fila del caracter
call
MOSTRAR_CARACTER
return
;//CGRAM_DIR ESTA FUNCION UBICA EL CURSOR EN LA CGRAM, LA DIRECCION
; VIENE EN W ///////
CGRAM_DIR ; byte a envar llego en EN W
movwf
DAT_ROM
bcf
PTAA_T,0
; RS=0
bcf
PTAA_T,1
; E=0
;------------------------------------------movfw
DAT_ROM
movwf
PTAB_T
bsf
bcf
PTAA_T,1
PTAA_T,1
; E=1 ; Inicio escrtura
; E=0
2
C:\prueba_lcd_1\caracteres.asm
call
retardo_1.7mseg
SWAPF
movwf
DAT_ROM,0
PTAB_T
bsf
bcf
PTAA_T,1
PTAA_T,1
; Tiempo q tarda en escribirse un comando
; E=1 ; Inicio escrtura
; E=0
call
retardo_1.7mseg
; Tiempo q tarda en escribirse un comando
; ----------------------------------------------return
;----------------------------;//CLEAR LCD, UBICA EL CURSOR AL INICIO DE LA DDRAM///////
CLEAR_LCD ; W=0000 0001
movlw
0x01
movwf
DAT_ROM
bcf
PTAA_T,0
; RS=0
bcf
PTAA_T,1
; E=0
;------------------------------------------movfw
DAT_ROM
movwf
PTAB_T
bsf
PTAA_T,1
; E=1 ; Inicio escrtura
bcf
PTAA_T,1
; E=0
call
retardo_1.7mseg
; Tiempo q tarda en escribirse un comando
SWAPF
DAT_ROM,0
movwf
PTAB_T
bsf
PTAA_T,1
; E=1 ; Inicio escrtura
bcf
PTAA_T,1
; E=0
call
retardo_1.7mseg
; Tiempo q tarda en escribirse un comando
; ----------------------------------------------return
;####### RETURN HOME#####
; UBICA EL CURSOR EN LA DIRECCION DE LA DRAM
; PRIMERA POSICION DEL LCD.
RETURN_HOME ; byte a envar=0000 0010
bcf
PTAA_T,0
; RS=0
bcf
PTAA_T,1
; E=0
;---------------------------movlw
b'00000010'
movwf
PTAB_T
bsf
PTAA_T,1
; E=1 ; Inicio escrtura
bcf
PTAA_T,1
; E=0
call
retardo_1.7mseg
; Tiempo q tarda en escribirse un comando
movlw
b'00100000'
movwf
PTAB_T
bsf
PTAA_T,1
; E=1 ; Inicio escrtura
bcf
PTAA_T,1
; E=0
call
retardo_1.7mseg
; Tiempo q tarda en escribirse un comando
return
; ------------------------------------------------
3
Descargar