Subrutina Display LCD 16X2 AVR asm

Subrutina Display LCD 16X2, AVR ensamblador (assembler)


LINK DE DESCARGA AL FINAL DEL POST

;***************************************************************************
; SUBRUTINA DE CONTROL Y ESCRITURA EN DISPLAY LCD 16X2 (1602), PARA DIFERENTES 
; FRECUENCIAS DE OPERACION, EN LENGUAJE ENSAMBLADOR, COMPATIBLE PARA DIFERENTES 
; FAMILIAS DE MICOCONTROLADORES AVR DE 8 BITS.
;
; REALIZADA POR ING. C.N. JOSUE NORBERTO MARTINEZ F. (OCTUBRE 2018)
; produccionesrek@gmail.com
; http://prdiagramasyelectronica.blogspot.com/
;***************************************************************************
;
;EL CODIGO DE ESTAS SUBRUTINAS PUEDE SER AGREGADO AL CODIGO DEL PROGRAMA 
;PRINCIPAL O PUEDE SER INCLUIDO UTILIZANDO EL COMANDO ".INCLUDE"
;
;  EJEMPLO:
;  .INCLUDE "SUBRUTINA_LCD_16X2_4HILOS.INC"
;
;
;PARA EJECUTAR ESTA SUBRUTINA SE DEBEN SEGUIR LOS SIGUIENTES PASOS:
;1.- DEFINIR LAS CONSTANTES:
; FRECUENCIA_MHZ
; REFERENCIA_CERO
; DDRX_DISPLAY
; PORTX_DISPLAY
; DATA_BIT4
; DATA_BIT5
; DATA_BIT6
; DATA_BIT7
; REGISTER_SELECT
; ENABLE_PIN
;
;2.- INICIALIZAR EL DISPLAY EJECUTANDO LA SUBRUTINA:
; INICIAR_SUBRUTINA_LCD16X2_4HILOS
;
;3.- ENCENDER EL DISPLAY EJECUTANDO LA SUBRUTINA:
; ENCIENDE_DISPLAY
;
;4.- UTILIZAR EL COMANDO "RCALL" PARA EJECUTAR LA DIFERENTES SUBRUTINAS DE CONTROL
;    Y ESCRITURA DISPONIBLES EN ESTE ARCHIVO
;
;
;5.- NO ES NECESARIO CONFIGURAR EL PUERTO DDR, YA QUE LA CONFIGURACION DE ENTRADAS Y SALIDAS
;    PARA EL DISPLAY SE ENCUENTRA INCLUIDA EN ESTA SUBRUTINA.
;
;
;EJEMPLO DE IMPLEMENTACION:
;---------------------------------------------------------------------
;
;  .EQU FRECUENCIA_MHZ = 4 ;FRECUENCIA DEL MICROCONTROLADOR (MHZ)
;  .EQU REFERENCIA_CERO = 0 ;NO CAMBIAR
;  .EQU DDRX_DISPLAY = DDRB ;DDRX  (SELECCIONAR PUERTO DE SALIDA DEL AVR)
;  .EQU PORTX_DISPLAY = PORTB ;PORTX  (SELECCIONAR PUERTO DE SALIDA DEL AVR)
;  .EQU DATA_BIT4         = 0 ;PX0  (PIN DE SALIDA)
;  .EQU DATA_BIT5         = 1 ;PX1  (PIN DE SALIDA)
;  .EQU DATA_BIT6         = 2 ;PX2  (PIN DE SALIDA)
;  .EQU DATA_BIT7         = 3 ;PX3  (PIN DE SALIDA)
;  .EQU REGISTER_SELECT = 4 ;PX4  (PIN DE SALIDA)
;  .EQU ENABLE_PIN         = 5 ;PX5  (PIN DE SALIDA)
;
;  RCALL INICIAR_SUBRUTINA_LCD16X2_4HILOS ;CONFIGURACION INICIAL
;  RCALL ENCIENDE_DISPLAY ;ENCIENDE DISPLAY, CURSOR EN PRIMERA LINEA
;  RCALL H ;TEXTO EN PRIMER RENGLON "HOLA"
;  RCALL O
;  RCALL L
;  RCALL A
;  RCALL CURSOR_A_LINEA2 ;CURSOR EN 2DA LINEA
;  RCALL M ;TEXTO EN SEGUNDO RENGLON "MUNDO"
;  RCALL U
;  RCALL N
;  RCALL D
;  RCALL O
;
;  FIN: ;FIN
;  RJMP FIN
;
;  .INCLUDE "SUBRUTINA_LCD_16X2_4HILOS.INC"
;---------------------------------------------------------------------
;
;ESTA  SUBRUTINA  SOBREESCRIBE  EL  REGISTRO  (R16) DURANTE  LAS 
;OPERACIONES QUE REALIZA
;
;NOTA: CON EL FIN DE DISMINUIR EL TAMAÑO DE MEMORIA UTILIZADO, LAS SUBRUTINAS DE LAS 
;LETRAS Y SIMBOLOS QUE NO SE UTILICEN PUEDEN SER BORRADAS DE ESTE ARCHIVO (OPCIONAL).
;
;***************************************************************************
;LISTA DE SUBRUTINAS DISPONIBLES EN ESTE ARCHIVO
;***************************************************************************
;
;SUBRUTINA FUNCION
;
;RCALL INICIAR_SUBRUTINA_LCD16X2_4HILOS - - - - CONFIGURA LOS PUERTOS DEL MICROCONTROLADOR
;  Y LOS AJUSTES GENERALES DEL DISPLAY, SE EJECUTA
; UNA SOLA VEZ AL ENCENDER EL DISPLAY
;RCALL APAGA_DISPLAY - - - - - - - - - - - - -  APAGA EL DISPLAY 
; (LOS DATOS DEL DISPLAY NO SE BORRAN)
;RCALL BORRA_MEMORIA_DISPLAY - - - - - - - - -  BORRA LOS DATOS DEL DISPLAY
;RCALL ENCIENDE_DISPLAY - - - - - - - - - - - - ENCIENDE EL DISPLAY Y ACTIVA EL CURSOR
;RCALL ENCIENDE_DISPLAY_SIN_CURSOR - - - - - -  ENCIENDE EL DISPLAY SIN CURSOR
;RCALL CURSOR_A_HOME - - - - - - - - - - - - -  COLOCA EL CURSOR EN EL INICIO (IZQUIERDA)
; DEL PRIMER RENGLON DEL DISPLAY
;RCALL CURSOR_A_LINEA2 - - - - - - - - - - - -  COLOCA EL CURSOR EN EL INICIO (IZQUIERDA)
; DEL SEGUNDO SENGLON
;RCALL CURSOR_A_LA_DERECHA - - - - - - - - - -  MUEVE EL CURSOR UNA POSICION A LA DERECHA SIN
; MODIFICAR NINGUN TEXTO EN EL DISPLAY
;RCALL CURSOR_A_LA_IZQUIERDA - - - - - - - - -  MUEVE EL CURSOR UNA POSICION A LA IZQUIERDA SIN
; MODIFICAR NINGUN TEXTO EN EL DISPLAY
;RCALL DISPLAY_A_LA_DERECHA - - - - - - - - - - MUEVE TODO EL TEXTO DEL DISPLAY UN ESPACIO A LA DERECHA
; (LA COLUMNA 16 VUELVE A APARECER EN LA COLUMNA 1
; DESPUES DE HABERSE DESPLAZADO 24 ESPACIOS A LA DERECHA)
;RCALL DISPLAY_A_LA_IZQUIERDA - - - - - - - - - MUEVE TODO EL TEXTO DEL DISPLAY UN ESPACIO A LA IZQUIERDA
; (LA COLUMNA 1 VUELVE A APARECER EN LA COLUMNA 16
; DESPUES DE HABERSE DESPLAZADO 24 ESPACIOS A LA IZQUIERDA)
;
;SUBRUTINA        FUNCION
;
;RCALL A ;ESCRIBE "A" EN EL DISPLAY
;RCALL B ;ESCRIBE "B" EN EL DISPLAY
;RCALL C ;ESCRIBE "C" EN EL DISPLAY
;RCALL D ;ESCRIBE "D" EN EL DISPLAY
;RCALL E ;ESCRIBE "E" EN EL DISPLAY
; . .
; . .
; . .
;RCALL U ;ESCRIBE "U" EN EL DISPLAY
;RCALL V ;ESCRIBE "V" EN EL DISPLAY
;RCALL W ;ESCRIBE "W" EN EL DISPLAY
;RCALL XX ;ESCRIBE "X" EN EL DISPLAY
;RCALL YY ;ESCRIBE "Y" EN EL DISPLAY
;RCALL ZZ ;ESCRIBE "Z" EN EL DISPLAY
;RCALL CERO ;ESCRIBE "0" EN EL DISPLAY
;RCALL UNO ;ESCRIBE "1" EN EL DISPLAY
;RCALL DOS ;ESCRIBE "2" EN EL DISPLAY
; . .
; . .
; . .
;RCALL OCHO ;ESCRIBE "8" EN EL DISPLAY
;RCALL NUEVE ;ESCRIBE "9" EN EL DISPLAY
;RCALL ADMIRACION ;ESCRIBE "!" EN EL DISPLAY
;RCALL COMILLAS ;ESCRIBE " " " EN EL DISPLAY
;RCALL GATO ;ESCRIBE "#" EN EL DISPLAY
;RCALL MONEDA ;ESCRIBE "$" EN EL DISPLAY
;RCALL PORCENTAJE ;ESCRIBE "%" EN EL DISPLAY
;RCALL ABRE_PARENTESIS ;ESCRIBE "(" EN EL DISPLAY
;RCALL CIERRA_PARENTESIS ;ESCRIBE ")" EN EL DISPLAY
;RCALL MAS ;ESCRIBE "+" EN EL DISPLAY
;RCALL COMA ;ESCRIBE "," EN EL DISPLAY
;RCALL MENOS ;ESCRIBE "-" EN EL DISPLAY
;RCALL PUNTO ;ESCRIBE "." EN EL DISPLAY
;RCALL DIAGONAL ;ESCRIBE "/" EN EL DISPLAY
;RCALL DOS_PUNTOS ;ESCRIBE ":" EN EL DISPLAY
;RCALL PUNTO_Y_COMA ;ESCRIBE ";" EN EL DISPLAY
;RCALL MENOR_QUE ;ESCRIBE "<" EN EL DISPLAY
;RCALL IGUAL ;ESCRIBE "=" EN EL DISPLAY
;RCALL MAYOR_QUE ;ESCRIBE ">" EN EL DISPLAY
;RCALL INTERROGACION ;ESCRIBE "?" EN EL DISPLAY
;RCALL POTENCIA ;ESCRIBE SIMBOLO DE POTENCIA DE UN NUMERO
;RCALL GUION_BAJO ;ESCRIBE "_" EN EL DISPLAY
;RCALL FLECHA_DERECHA ;DIBUJA UNA FLECHA APUNTANDO A LA DERECHA
;RCALL FLECHA_IZQUIERDA ;DIBUJA UNA FLECHA APUNTANDO A LA IZQUIERDA
;RCALL GRADOS ;ESCRIBE "°" EN EL DISPLAY
;RCALL MIU ;ESCRIBE LA LETRA GRIEGA "MU", SUFIJO DE "MICRO-"
;RCALL RAIZ_CUADRADA ;ESCRIBE SIMBOLO DE "RAIZ CUADRADA"
;RCALL ENHE ;ESCRIBE "ñ" EN EL DISPLAY
;RCALL INFINITO ;ESCRIBE SIMBOLO DE "INFINITO"
;RCALL OHM ;ESCRIBE EL SIMBOLO DE "OHMS"
;RCALL PI         ;ESCRIBE EL SIMBOLO "PI" EN EL DISPLAY
;RCALL ENTRE ;ESCRIBE EL SIMBOLO DE DIVISION EN EL DISPLAY
;RCALL ESPACIO ;DEJA UN ESPACIO VACIO Y AVANZA EL CURSOR
;RCALL RELLENO ;RELLENA UN ESPACIO Y AVANZA EL CURSOR
;***************************************************************************


LINK DE DESCARGA DEL CÓDIGO DE LA SUBRUTINA, EN LENGUAJE ENSAMBLADOR

Tamaño: 5KB
Tipo: Archivo comprimido en WinRar




SR-20-0103 Protección para bocinas

SR-20-0103 Protección para bocinas
(con integrado uPC1237)

Alimentación: ajustable
Potencia máxima: 500W
Incluye Red Zobel.
NOTA: Para obtener los valores de R2, R4, R6 y R8, siga las instrucciones que se muestran al final de este post.

DIAGRAMA

PCB

MASCARA DE COMPONENTES
(Medidas en milímetros)


AJUSTES:

CALCULAR R8:

Para determinar el valor de R8 utilice la siguiente gráfica. Primero localice en el eje horizontal el valor del voltaje de alimentación (VCC) que desea utilizar, a continuación dibuje una linea vertical que cruce la linea gruesa, finalmente dibuje una linea horizontal saliendo de la intersección antes mencionada hasta llegar al eje vertical izquierdo el cual indica el valor de R8 en kilo-ohms. Por ejemplo para un voltaje de alimentación (VCC) de 48V corresponde una resistencia de 16 Kohms, del cual el valor comercial mas cercano es 15Kohms. 


CALCULAR R4:

El procedimiento para obtener el valor de R4 es el mismo que el explicado para obtener el valor de R8, pero en este caso utilizando la gráfica siguiente y en este caso de utiliza el valor del voltaje de corriente alterna (VAC) proveniente del transformador del amplificador previo a su paso por el puente de diodos. Por ejemplo, para un voltaje de corriente alterna de 35VCA corresponde un valor de R4 = 22.5 Kohms, del cual el valor comercial mas cercano es 22Kohms.


CALCULAR R6:

Para obtener el valor de R6 solo deben colocarse los valores correspondientes en la siguiente formula:


Por ejemplo, suponiendo que tenemos los siguientes valores:

Voltaje de alimentación: 45VCD (Voltaje de alimentación del circuito).
Resistencia del relé: 450 ohms (resistencia de su bobina obtenida con un multímetro).
Voltaje del relé: 12VCD (voltaje de operación del relé).

Al sustituir en la formula obtenemos  R6 = 1237 ohms, del cual el valor comercial mas cercano es de 1.2Kohms



CALCULAR R2:

Para obtener el valor de R2 solo deben colocarse los valores correspondientes en la siguiente formula


Por ejemplo, utilizando los mismos valores que en ejemplo anterior, tenemos:
Voltaje de alimentación: 45VCD (Voltaje de alimentación del circuito).
Resistencia del relé: 450 ohms (resistencia de su bobina obtenida con un multímetro).
R6: 1.2Kohms.
Corriente del LED: 15mA (Corriente típica de un led rojo común)

Al sustituir en la formula obtenemos  R2 = 1350 ohms, del cual el valor comercial mas cercano es de 1.5Kohm.



COMO HACER LA RED ZOBEL:

Se realiza una bobina enrollando aproximadamente 12 vueltas de alambre barnizado calibre #16 sobre una broca o algún otro objeto cilíndrico del tamaño adecuado para que en su interior quepa una resistencia de 10 ohms 5 watts (si cuentas con inductómetro, puedes verificar que la bobina tenga un valor de entre 0.5 y 0.8 miliHenrys), como se observa en la siguiente imagen:















++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Palabras clave: electrónica, DIY, casero, PCB, probado, electronic, diagrama, schematic, amplificador de audio, ampificador transistorisado, transistorizado, transistores, protección bocinas, protección parlantes, protección altavoz, altavoces, bafles, protección CD, protección corriente directa, protección corriente continua, protección contra corto circuito, protección DC