ACTIVIDAD CENTRAL UNIDAD 4 Diseño de productos electrónicos con microcontroladores
Nombre de la actividad: Manejo de salidas en
un microcontrolador: Display de Cristal Líquido (LCD). Objetivo
Identificar las instrucciones en un código ASM para el manejo de salidas a una LCD. Situación
Para diferenciar el tipo de producto que llega a la empresa (distribución y venta), se
requiere que la llegada de camiones sea anunciada con una señal luminosa que parpadee y en una LCD aparezca el tipo de producto que acaba de llegar, según se haya activado activado el sensor de presencia presencia instalado. instalado. Las posibilidades de de productos son NATURAL, LIMÓN y BAR BQ.
Se ha adquirido un un sistema automatizado automatizado con
microcontroladores y usted debe revisar si el código cumple con las características solicitadas. Procedimiento:
1. Revise los contenidos del curso asociados al Manejo de salidas a una LCD . 2. Consulte
información para profundizar sobre el funcionamiento y programación de las LCD.
Temas asociados
Configuración de un Display de Cristal Líquido (LCD)
Lenguaje ASM
1
Entregas
Para este análisis, puede utilizar la guía que aparece a continuación para desarrollar los siguientes productos: 1. Comentarios de las líneas de programación del código suministrado por el proveedor de servicios. 2. Descripción de los pines de entrada y salida utilizados para el sistema automatizado 3. Diagrama de flujo del programa de automatización. Una vez finalizada, comprima el archivo en formato .zip o .rar, dando clic derecho al archivo, Enviar a, Carpeta comprimida. Luego envíela a su facilitador a través del
medio utilizado para tal fin en el curso.
2
DOCUMENTO GUÍA Diseño de productos electrónicos con microcontroladores
Comentarios de líneas de código. Escriba los comentarios relacionados con cada bloque de código. INCLUDE
CBLOCK0X20 R0C,R0D,R0E,R13,loops,loops2,REG_RX,CONTE,MEMORIA,RX_COMP,RX_ID1,RX_ID2,RX_PRO1,M ENS_CONT,CON_USER,DATA_IN,CONT_USER, CONT_INTS,MEM_STATUS,DATA_RUP,DATA_COMP,ID1_SAVE,ID2_SAVE,ID3_SAVE ENDC E RS
EQU EQU ORG GOTO
2H 1H 0X00 INICIO
;constante E ;constante RS ;origen de programa ;salto a inicio
; Bloque de código de configuración inicial del microcontrolador
; bloque que genera una pausa muy pequeña de tiempo. Para la utilización de espera de configuacion de la lcd. RETARDO CLRWDT D'15' loops
; limpia el watchdog timer ;mueve 15 a w ;mueve w a loops
MOVLW MOVWF top2_1 MOVLW D'25' ; mueve 25 a w MOVWF loops2 ;mueve w a loops2 top_1 CLRWDT ;limpia watchdog timer NOP ;ejecucion nula NOP NOP NOP NOP NOP DECFSZ loops2,1 ; decrementa en 1 loops2 y pregunta si es cero y salta, sino continua GOTO top_1 ;salta a top_1
3
DECFSZ loops,1 GOTO top2_1 RETLW 0
; decrementa en 1 loops y pregunta si es cero y salta, sino continua ; salta top2_1 ; retorna con w = 0
; bloque que genera una pausa de tiempo mayor que la anterior. Para la utilización de espera de configuración y escritura de la lcd. RETARDO_1 CLRWDT D'100' loops
MOVLW MOVWF top2_2 MOVLW D'200' MOVWF loops2 top_2 CLRWDT NOP NOP NOP NOP NOP NOP DECFSZ loops2,1 GOTO top_2 DECFSZ loops,1 GOTO top2_2 RETLW 0
; bloque que ejecuta las instrucciones para el control de la lcd, en congfiguraciones y escritura de datos. CONTROL CLRWDT BCF PORTB,RS GOTO DATO2 DATO CLRWDT BSF PORTB,RS DATO2 BSF PORTB,E MOVWF R0E MOVLW 0FH
;limpia el watchdog timer ;coloca el bit rs del portb en cero para configuracion ;salto a dato 2
;coloca el bit rs del portb en 1 para escritura en la lcd ; coloca el bit E del portb en 1 para habilitar la lcd ;mueve el registro w a R0E ;mueve el nuemro 0x0F a w
4
ANDWFPORTB,1 MOVF R0E,W ANDLW 0F0H IORWF PORTB,1 CALL RETARDO BCF PORTB,E CALL RETARDO BSF PORTB,E MOVLW 0FH ANDWFPORTB,1 SWAPF R0E,W ANDLW 0F0H IORWF PORTB,1 CALL RETARDO BCF PORTB,E CALL RETARDO RETLW 0
;realiza la operación AND w con el puerto b y guarda en ; portb ;mueve ROE a w ;realiza la operación AND de w con 0xF0 ;realiza la operación OR de w con portb y guarda en ; portb ; realiza una pausa o retardo en el ejecucion ; desabilita la lcd colocando creo en el bit E del portb ; realiza una pausa o retardo en el ejecucion ; habilita la lcd colocando creo en el bit E del portb ; mueve 0xF0 a w ;realiza la operación AND w con el puerto b y guarda en ; portb ; realiza el cabio de bit o nibble de la variable R0E y ;guarda en w ; realiza la operación AND 0x0F con w ;realiza la operación OR de w con portb y guarda en ; portb ; genera una pausa ; deshabilita la lcd ; llama retardo ; retorna con w en 0
; bloque de configuraciones iniciales de trabajo del micro, entradas, salidas y configuaracion inicial de la lcd INICIO BSF CLRF TRISB MOVLW MOVWF BCF
STATUS,5 .255 TRISA STATUS,5
; cambia de banco ;configura TRISB todo como salida ;mover 255 a w ;mover w a trisa ;cambiar de banco
CONFI_LCD MOVLW 02H CALL CONTROL MOVLW 28H CALL CONTROL MOVLW 0CH CALL CONTROL MOVLW 06H CALL CONTROL
;mueve 0x02 a W ;envia el dato a la lcd en modo de configuracion
5
ENTRADAS BTFSC GOTO BTFSC GOTO BTFSC GOTO GOTO
PORTA,0 MENSAJE_1 PORTA,1 MENSAJE_2 PORTA,2 MENSAJE_3 BORRA_LCD
; pregunta si el bit 0 del puerto a esta en 0 y salta ; pregunta si el bit 1 del puerto a esta en 0 y salta ; pregunta si el bit 2 del puerto a esta en 0 y salta ; borra lcd;
;bloque que escribe el mensaje 1 a visualizar en la lcd MENSAJE_1 MOVLW 01H CALL CONTROL CALL RETARDO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "N" CALL DATO MOVLW "A" CALL DATO MOVLW "T" CALL DATO MOVLW "U" CALL DATO MOVLW "R" CALL DATO MOVLW "A" CALL DATO MOVLW "L" CALL DATO MOVLW ""
6
CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO ;LED INTERMITENTE BSF PORTB,0 CALL RETARDO_1 BCF PORTB,0 CALL RETARDO_1 GOTO ENTRADAS ;bloque que escribe el mensaje 1 a visualizar en la lcd MENSAJE_2 MOVLW 01H CALL CONTROL CALL RETARDO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "L" CALL DATO MOVLW "I" CALL DATO
7
MOVLW "M" CALL DATO MOVLW "O" CALL DATO MOVLW "N" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO ;LED INTERMITENTE BSF PORTB,0 CALL RETARDO_1 BCF PORTB,0 CALL RETARDO_1 GOTO ENTRADAS ;bloque que escribe el mensaje 1 a visualizar en la lcd MENSAJE_3 MOVLW 01H CALL CONTROL CALL RETARDO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW ""
8
CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "B" CALL DATO MOVLW "B" CALL DATO MOVLW "Q" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO MOVLW "" CALL DATO ;LED INTERMITENTE BSF PORTB,0 CALL RETARDO_1 BCF PORTB,0 CALL RETARDO_1 GOTO ENTRADAS ;Bloque que limpia, es decir borra la lcd BORRA_LCD MOVLW 01H CALL CONTROL CALL RETARDO GOTO ENTRADAS
9
END
Descripción de pines de entrada y salida ESQUEMA DEL PIC
PINES DE ENTRADA
PINES DE SALIDA
Entrada es el puerto A
Salida el puerto B
PORTA0 sensor 1
PORTB2-7 LCD
PORTA1 sensor 2
PORTB0 LED
PORTA2 sensor 3
3. Diagrama de flujo del programa de automatización (código .asm del punto 1) En la siguiente pagina
10
Inicio Configurar lcd Configuración inicial
“CONTROL”
Configuración puertos y lcd
Escribe dato y nibble
Escrbir DATO no
Bit 0 DE PORTA = 0 ? retardos si Salto a Mensaje 1 return
Bit 1 DE PORTA = 0?
Salto a Mensaje 2
no
Bit 2 DE PORTA = 0 ? si Salto a Mensaje 3
Salto a borrar lcd
fin
11
12