SR-200702 Temporizador (timer) con ATTiny2313.

 SR-200702 Temporizador (timer) con ATTiny2313.


En este post se muestra un temporizador de 99 minutos, con pantalla display LCD 8x2 y teclado de membrana 4x4. El microcontrolador encargado del funcionamiento de este circuito es un ATTiny2313.


Fotos del circuito terminado:

A continuación se muestra el diagrama del circuito:
IN-L: hacia la red eléctrica (fase)
IN-N: hacia la red eléctrica (neutro)
OUT-L: hacia el equipo que se desea temporizar (fase)
OUT-N: hacia el equipo que se desea temporizar (neutro)
5V: alimentación del circuito, 5 volts de corriente directa
GND: terminal negativa de la fuente de alimentación del circuito

NOTA: Este circuito es compatible con los display LCD de 8x2 y 16x2, siguiendo las conexiones que se muestran en el diagrama

A continuación de muestra el PCB del circuito

A continuación se muestra la distribución de componentes de montaje superficial que van montados del lado del cobre.

A continuación se muestra la distribución de componentes que van montados en la cara frontal.

El pin header marcado como "ISP", permite actualizar el programa del microcontrolador a través de un programador serial como USBASP o el ISP MKII. La distribucion de pines de este conector es la que se muestra en la siguiente imagen:


Los dos pines marcados como "BOTON-RST" permite activar el RESET del microcontrolador mediante un pulsador.

El pin header para el Teclado de membrana 4x4, se conecta de la siguiente forma:


El conector del display LCD 8x2, coincide con la distribución que se encuentra en el display, por lo que basta realizar la conexión mediante pines rectos como se aprecia en el video.


PROGRAMA

El programa fué realizado en lenguaje ensamblador, el código se encuentra disponible para su descarga en el enlace que se encuentra al final de este post.

También encontrarán el archivo Hexadecimal listo para ser grabado en el microcontrolador ATTiny2313 ó ATTiny2313A.

NOTA: La velocidad de operación del AVR para el correcto funcionamiento del programa que se proporciona en este post, debe configurarse a 4MHz con oscilador de cristal externo como se indica en el diagrama


LINK DE DESCARGA DEL PCB Y PROGRAMA DEL TEMPORIZADOR


Tamaño: 72KB
Tipo: Archivo WinRAR



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