Programa lcd en avr

Solo disponible en BuenasTareas
  • Páginas : 7 (1655 palabras )
  • Descarga(s) : 0
  • Publicado : 30 de agosto de 2012
Leer documento completo
Vista previa del texto
MANEJO DE DISPLAY DE CRISTAL LÍQUIDO
Objetivo
                Familiarizar al estudiante con el manejo de los displays de cristal líquido (LCD).
Trabajo Preparatorio
 2.      Crear las subrutinas para el manejo del LCD (Asembler)
Estas subrutinas se utilizaron en el programa en Assembler.
 3.      Elaborar un programa (en Asembler y otro en BASIC) que cumpla las siguientes condiciones:        Pantalla de presentación: (Presentar un despliegue de: El nombre de la Institución y la materia y luego de 5 segundos  los nombres de los integrantes del grupo)
        Pantalla de trabajo:
 LINEA1 del LCD:
Se deberá escribir:               MENSAJE (Línea 1)    
Donde MENSAJE :
"DESCENDENTE"     si se presionó P1
"ASCENDENTE"      si se presionó P2
"DECREMENTA"        si se presiono P3""INCREMENTA       si se presionó P4
 LINEA2 del LCD:
Se escribirá:                  DATO = yyy  (Línea 2)
PROGRAMACION EN ASSEMBLER:

;PRACTICA Nº 3
;MANEJO DE DISPLAY DE CRISTAL LIQUIDO
.include "m164Pdef.inc"
.def temp0=r16
.def temp1=r17
.def temp2=r18
.def temp3=r19
.def temp4=r20
.def cont=r21
.def unidad=r22
.def decena=r23
.def centena=r24

.cseg
.org 0x00rjmp inicio

.org 0x02
Rjmp EXT_INT0
reti

inicio:
ldi temp0,high(ramend)
out sph,temp0
ldi temp0,low(ramend)
out spl,temp0
ser temp0;salidas
out ddra,temp0
out ddrb,temp0
clr temp0;entradas
out ddrc,temp0
out ddrd,temp0

ldi temp0,0x0A;interrupciones
out mcucr,temp0
LDI TEMP0,0B00000001
OUT EIMSK,TEMP0
ldi temp0,0b00000010sts eicra,temp0
sei

lcd:
rcall ini_lcd
ldi temp0,0x80
rcall dir_1
ldi temp0,0xC0 rcall dir_2
ldi temp0,0x80
rcall ver_n1;NOMBRE1

ldi temp1,1
rcall retar_500m

ldi temp0,0xC0
rcall ver_n2;NOMBRE2

ldi temp1,4
rcall retar_500m

clr cont
clr temp4

loop: ldi temp1,6
rcall retar_500m

ldi temp0,0x80
rcall ver_op

lditemp0,0xC0
rcall ver_p12

ldi temp1,6
rcall retar_500m

ldi temp0,0xC0
rcall ver_p34

cpi temp4,0
brne accion

rjmp loop
end: rjmp end

accion:;PARA SABER CUAL SE PULSO
cpi temp4,1
breq descend
cpi temp4,2
breq ascend
cpi temp4,4
breq decrement
cpi temp4,8
breq increment
rjmp accion

descend:
ldi temp0,0xC0
rcall ver_nadarcall dECREMENTAR
rjmp accion
ascend:
ldi temp0,0xC0
rcall ver_nada
rcall incrementar
rjmp accion
decrement:
ldi temp0,0xC0
rcall ver_nada
rcall descender
rjmp accion
increment:
ldi temp0,0xC0
rcall ver_nada
rcall ASCENDER
rjmp accion

incrementar:;ASCENDENTE
ldi temp0,0x80
rcall ver_asc
ldi temp0,0xC0
rcall ver_dat

cpi cont,255
breqv255 inc cont

v255: rcall poner
ldi temp1,1
rcall retar_500m

f_inc: ret

decrementar:
ldi temp0,0x80
rcall ver_des

ldi temp0,0xC0
rcall ver_dat

cpi cont,0
breq v0
dec cont

v0: rcall poner
ldi temp1,1
rcall retar_500m

f_dec: ret

descender:
ldi temp0,0x80
rcall ver_dec
ldi temp0,0xC0
rcall ver_dat
rcallponer
ret
ascender: ldi temp0,0x80
rcall ver_inc
ldi temp0,0xC0
rcall ver_dat
rcall poner
ret

poner: rcall bin_bcd
ldi temp0,0xCB
ldi temp1,3;54us
rcall secuencia
mov temp0,centena
rcall ver_num

ldi temp0,0xCC
ldi temp1,3 ;54us
rcall secuencia
mov temp0,decena
rcall ver_num

ldi temp0,0xCD
ldi temp1,3 ;54us
rcall secuenciamov temp0,unidad
rcall ver_num
ret
dir_1:
ldi temp1,3;54us
rcall secuencia
ldi zh,high(texto1*2)
ldi zl,low(texto1*2)
ldi temp1,0
rcall dat_carg
ret
dir_2:
ldi temp1,3 ;54us
rcall secuencia
ldi zh,high(texto2*2)
ldi zl,low(texto2*2)
ldi temp1,0
rcall dat_carg
ret
ver_n1:
ldi temp1,3 ;54us
rcall secuencia
ldi zh,high(nombre1*2)
ldi...
tracking img