Вы находитесь на странице: 1из 26

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 Lquido (LCD).
Objetivo
Identificar las instrucciones en un cdigo ASM para el
manejo de salidas a una LCD.
Situaci n
Para diferenciar el tipo de producto que llega a la empresa (distribucin y venta), se requiere que la llegada de
camiones sea anunciada con una seal luminosa que parpadee y en una LCD aparezca el tipo de producto que
acaba de llegar, segn se haya activado el sensor de presencia instalado. Las posibilidades de productos son
NATURAL, LIMN y BAR BQ. Se ha adquirido un sistema automatizado con microcontroladores y usted debe
revisar si el cdigo cumple con las caractersticas solicitadas.
Procedimiento:

1. Revise los contenidos del curso asociados al Manejo de salidas a una LCD.
2. Consulte informacin para profundizar sobre el funcionamiento y programacin de las LCD.

Temas asociados

Configuracin de un Display de Cristal Lquido (LCD)


Lenguaje ASM

Entregas
Para este anlisis, puede utilizar la gua que aparece a continuacin para desarrollar los siguientes
productos:
1. Comentarios de las lneas de programacin del cdigo suministrado por el proveedor de
servicios.
2. Descripcin de los pines de entrada y salida utilizados para el sistema automatizado
3. Diagrama de flujo del programa de automatizacin.
Una vez finalizada, comprima el archivo en formato .zip o .rar, dando clic derecho al archivo, Enviar a,
Carpeta comprimida. Luego envela a su facilitador a travs del medio utilizado para
tal fin en el curso.

DOCUMENTO GU A
Dise o de productos electr nicos con microcontroladores
Comentarios de lneas de cdigo. Escriba los comentarios relacionados con cada bloque de cdigo.
INCLUDE
<P16F628A.INC>; Definicion del microprocesador a utilizar
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 2H; Contador del programa


EQU 1H; Selecciona datos e instrucciones del LCD
ORG
0X00; aqu comienza el micro
GOTO INICIO ;salta a inicio

RETARDO
CLRWDT pone a
cero el watchdog

MOVLW D'15';tiempo
de permanencia en milsegundos
MOVWF loops ;subrutina
de retardos en lilisegundos
top2_1,pregunta si
termino retardo
MOVLW D'25' tiempo de permanencia de encendido 25 ms
MOVWF loops2 top_1
CLRWDT NOP NOP
NOP NOP NOP NOP
DECFSZ
loops2,1
GOTO top_1 DECFSZ
loops,1 GOTO
top2_1
RETARDO_1
CLRWDT MOVLW D'100',tiempo de permanencia de encendido
MOVWF loops top2_2
MOVLW D'200',tiempo de permanencia de encendido 200 ms

MOVWF loops2
CLRW
DT
NOP;ci
clo de
maqui
na de
un
micros
egund
o
NOP
ciclo
de
maqui
na de
un
micros
egund
o
NOP
ciclo
de
maqui
na de
un
micros
egund
o
NOP
ciclo
de
maqui
na de
un
micros
egund
o
NOP
ciclo
de
maqui
na de
un
micros
egund
o

NOP
ciclo
de
maqui
na de
un
micros
egund
o
DECFSZ
loops2,1
;pregunta si
termino ya un
milisegundo
GOTO top_2
;llamamos a la
subrutina
DECFSZ;decre
menta en 1 si
esta en loops
loops,1
GOTO
top2_2;salta a
la subrutina
top2 si esta en
dos
RETLW 0,pone el registro w en 0
CONTROL
CLRWDT,pone
en cero el
registro
watchdog
BCF
PORTB,RS
,pone el LCD
en modo
escritura
GOTO

DATO2; salta al dato 2DATO

DATO2 CLRWDT,pone en cero el watchdog


BSF PORTB,RS;pone el Lcd en modo escritura
BSF PORTB,E
pone en 2h el
puerto B del pic
MOVWF
R0E
Rutina para
configurar un
dato en el lcd
MOVLW
0FH
Carga w con el
dato ofh
ANDWF
PORTB,1
Suma el
contenido de w
con el registro f
MOVF

R0E,W

A
N
D
L
W
0
F
0
H
S
e
c
a
r
g
a

el registro w
con Oh
IORWF PORTB,
1
Operacion
logica or entre
el acumulador
w y el registro f
del puerto B.
CALL RETARDO
Llama retardo
BCF
PORTB,E
Pone en cero el bit
E del puerto B
CALL RETARDO
Llama a retardo
BSF
PORTB,E
Pone en uno el bit E del puerto B
MOVLW
0FH
Mueve el dato
0fh al
acumulador
ANDWFPORTB,1
Operacion
logica and entre
el acumulador y
el registro f y
pone el puerto
B en 1
SWAPF R0E,W
Intercambio de
niveles mas
significativo y
menos
significativo.
ANDLW 0F0H
Operacion
IORWF
PORTB,1
Operacion
logica or entre
el acumulador
w y el registro f
del puerto B.
CALL RETARDO

L
l
a
m
a
a
r
e
t
a
r
d
o
B
C
F
P
O
R
T
B
,
E
P
o
n
e
e
n
c
e
r
o
e
l
b
i
t

E del B
CALL RETARDO

lama a retardo
L

RETLW ,0;regresa de una subrutina con el numero 0 cumulado

INICIO

BSF
STATUS,5
Pone en 1 el bit 5 del
registro status
CLRF
TRISB,blanquea el
puerto B
MOVLW
.255,mueve el valor .255 al acumulador
MOVWF
TRISA,mueve el registro f al acumulador
BCF
STATUS,5

Pone en 0 el bit 5 de status


CONFI_LCD
MOVLW
02H
,mueve el valor
02h al
acumulador
CALL CONTROL
Llama a control
MOVLW
28H
Mueve el valor
28H al
acumulador
CALL CONTROL
Llama a control
MOVLW
0CH
Mueve el valor
0ch al
acumulador
CALL CONTROL
Llama a control
MOVLW
06H
Mueve el valor
06h al
acumulador
CALL CONTROL
Llama a control

ENTRADAS
BTFSC
PORTA,0
Prueba el bit 0
del puerto A, si
es cero salta a
mensaje 1
GOTO
MENSAJE_1
Salta al mensaje
1
BTFSC
PORTA,1
Prueba el bit 1
del puerto A si
es uno salta al
mensaje 2
GOTO
MENSAJE_2
Salta al mensaje
2
BTFSC
PORTA,2
Prueba el bit 2
del Puerto A si
es dos salta al
mensaje 3
GOTO
MENSAJE_3
Salta al mensaje
3
GOTO
BORRA_LCD
Salta y borra La
LCD
MENSAJE_1
MOVLW

01H
Carga el valor
01h en el
acumulador
CALL CONTROL
Llama a control
CALL RETARDO
Llama a retardo
MOVLW
""
Carga el valor
01h en el
acumulador
CALL DATO
Llama a dato
MOVLW
""
Carga el valor
01h en el
acumulador
CALL DATO
Salta a la
subrutina dato

MOVLW
""
Carga el valor
01h en el
acumulador
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el valor
01h en el
acumulador
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el valor
01h en el
acumulador
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el valor
01h en el
acumulador
CALL DATO
Salta a la

subrutina dato
MOVLW
"N"
Carga el valor N
en el
acumulador
CALL DATO
Salta a la
subrutina dato
4

MOVLW
"A
"
Carga el valor
"A" en el
acumulador
CALL DATO
Salta a la
subrutina dato
MOVLW
"

"T

Carga el
acumulador con
la letra T
CALL DATO
Salta a la
subrutina dato
MOVLW
"

"U

Carga el
acumulador con
la letra U
CALL DATO
Llama a la
subrutina dato
MOVLW
"

"R

Carga el
acumulador con
la letra R
CALL DATO
Salta a la
subrutina dato
MOVLW
"

"A

Carga el
acumulador con
la letra A
CALL DATO
Salta a la
subrutina dato
MOVLW

"L"

Carga el
acumulador con

la letra L
CALL DATO
Salta a la
subrutina 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
Pone en cero el
puerto B
CALL RETARDO_1
BCF
Salta a retardo y
pone 0
PORTB,0
CALL RETARDO_1
Salta a la subrutina
1 del retardo
GOTO ENTRADAS
Salta a las entradas
MENSAJE_2
MOVLW
01H
Carga el
acumulador con
el dato 01h
CALL CONTROL
Salta a la
subrutina
control
CALL RETARDO
Salta alretardo

MOVLW
" "
Carga el dato
en el
acumulador
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el dato
en el
acumulador
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
el dato
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
5

Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW

"L"

Carga el
acumulador con
el dato L
CALL DATO
Salta a la
subrutina dato
MOVLW

"I"

Carga el
acumulador con
el dato I
CALL DATO
Salta a la
subrutina dato
MOVLW
"

"M

Carga el
acumulador con
el dato M
CALL DATO
Salta a la

subrutina dato
MOVLW

"O"

Carga el
acumulador con
el dato O
CALL DATO
Salta a la
subrutina dato
MOVLW

"N"

Carga el
acumulador con
el dato N
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra

CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a
la subrutina
dato
LED INTERMITENTE
BSF
PORTB,0
Pone en el
PUERTOB
CALL RETARDO_1
BCF; genera un
retardo de 1 ms
PORTB,0
CALL RETARDO_1
GOTO
ENTRADAS; salta a
las entradas
MENSAJE_3
MOVLW
01H
Carga el
acumulador con
la cifra 01H
CALL CONTROL
Salta a la
subrutina
control

CALL RETARDO
Salta a la
subrutina
retardo
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
6

Salta a la
subrutina
retardo
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina sato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la

subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
"B
"
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
"B
"
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
"Q
"
Carga el
acumulador con
la cifra Q
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato

MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra
CALL DATO
Salta a la
subrutina dato
MOVLW
""
Carga el
acumulador con
la cifra

CALL DATO
;LED INTERMITENTE
BSF
PORTB,0
Coloca en cero el
puerto B
CALL RETARDO_1
BCF
PORTB,0
Llama a retardo y
pone 1 en el puerto
b
CALL RETARDO_1
Salta al retardo de a
ms
GOTO ENTRADAS;
salta a las entradas

BORRA_LCD; borra el lcd


MOVLW
01H ;carga el
acumulador con la cifra
01HCALL
CONTROL ;
Llama a control
CALL RETARDO
Llama a retardo
GOTO ENTRADAS
Salta a entradas
END; fin del programa

Descripcin de pines de entrada y salida


ESQUEMA DEL PIC

PINES DE ENTRADA

PINES DE SALIDA

2. RA0/AN0
2. RA0/AN0
3. RA1/AN1
3. RA1/AN1
4. RA2/AN2 Vref 4. RA2/AN2 Vref 5. RA3/AN3 Vref +
5. RA3/AN3 Vref +
6. RA4/TOCK1 entrada
7. RA5/SS/AN5, Entrada salida
de Reloj.
digital.
7.RA5/SS/AN5, Entrada salida 10. OSC2/CLKOUT, Salida
digital.
oscilador cristal. Oscilador
8 Ref de voltaje GND.
RC.
9. OSC1/CLKIN,Entrada
11. RCO/T10S0/TICK1, E/S
oscilador cristal/ entrada
digital. Salida del oscilador
fuente de reloj externa.
taimer 1.
11. RCO/T10S0/TICK1, E/S
13. E/S digital; entrad
digital. Salida del oscilador captura1;salida
taimer 1.
compara1;salida pwm 1.
12. RC1/T1OSI/CCP2, E/S
14. RC3/SCK/SCL; E/S Digital.
digital, entrada del oscilador Lnea de reloj serial asncrono
taimer1. Entrada captura2; en el modo SPI y el modo IC.
Salida compara 2;Salida
15. RC4/SDI/SDA; E/S Digital.
PWM.
Lnea de datos en el modo SPI
13 . E/S digital; entrad
o en el modo IC.
captura1;salida
16. RC5/SDO; E/S Digital.
compara1;salida pwm 1.
17. RC6/TX/CK; E/S Digital.
14. RC3/SCK/SCL; E/S Digital.
Transmisin asncrona
Lnea de reloj serial asncrono
(USART) o reloj sncrono
en el modo SPI y el modo IC.
(SSP).
15. RC4/SDI/SDA; E/S Digital.
Lnea de datos en el modo SPI o 18. RC7/RX/DT; E/S Digital.
Recepcin asncrona (USART)
en el modo IC.
16. RC5/SDO; E/S Digital.
o lnea de datos (SSP).
17. RC6/TX/CK; E/S Digital.
21. . RB0/INT; Bit 0 del puerto B
Transmisin asncrona (USART) o (E/S bidireccional). Buffer E/S:
reloj sncrono (SSP).
TTL/ST. Tambin se usa como
entrada de interrupcin externa
18. RC7/RX/DT; E/S Digital.
Recepcin asncrona (USART) (INT).
22. RB1; Bit 1 del puerto B
o lnea de datos (SSP).
21. RB0/INT; Bit 0 del puerto B

2
4

(E/S bidireccional). Buffer E/S:

3. Diagrama de flujo del programa de automatizacin (cdigo .asm del punto 1)

2
5

Вам также может понравиться