POLITECHNIKA LUBELSKA
KATEDRA ELEKTRONIKI
LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
SPRAWOZDANIE DO ĆWICZENIA NR. 10
„Wyświetlacz 7-segmentowy.”
„Wyświetlacz LCD.”
Wykonali: Remigiusz Gwiazda ED 5.4
Paweł Luty ED 5.4
Zadanie 1 i 2
W zadaniu 1 zastosowano adresowanie pełne pamięci zewnętrznej (adres 16-bitowy) przez rejestr DPTR.
Instrukcje wykorzystujące ten sposób adresowania to MOVX A,@DPTR i
MOVX @DPTR,A
W zadaniu 2 użyto adresowania niepełnego, młodszy bajt adresu zawarty jest w rejestrze R0 lub R1 a starszy ( oznaczający stronę pamięci ) w rejestrze P2.
Adresy urządzeń :
bufor wyboru wskaźnika 0FF30H
bufor danych wskaźnika 0FF38H
Zadanie 4
SEG_ON P1.6
ONE EQU 006H
TWO EQU 05BH
THREE EQU 04FH
FOUR EQU 066H
FIVE EQU 06FH
SIX EQU 07DH
SEVEN EQU 007H
DISPLAY EQU 030H
LJMP START
ORG 100H
START:
MOV DISPLAY,#ONE
MOV DISPLAY+1,#TWO
MOV DISPLAY+2,#THREE
MOV DISPLAY+3,#FOUR
MOV DISPLAY+4,#FIVE
MOV DISPLAY+5,#SIX
MOV DISPLAY+6,#SEVEN
CLR SEG_ON
LOOP_DISP:
MOV R0,#DISPLAY
MOV R2,#7
MOV R3,#01B
LOOP:
MOV R1,#CSDS
MOV A,R3
MOV @R1,A
RL A
MOV R3,A
MOV R1,#CSDB
MOV A,@R0
MOVX @R1,A
INC R0
MOV A,#10
LCALL DELAY_100MS
DJNZ R2,LOOP
SJMP LOOP_DISP
Zadanie 5
Sterownik wyświetlacza LCD posiada bufor długości 40 znaków dla każdej linii tzn. 80 bajtów. Po zapełnieniu się bufora kolejne znaki będą nadpisywane zaczynając od początku bufora.
Zadanie 7
Schemat programu przesuwającego na wyświetlaczu napis
PTR EQU 30H
START:
{ czyszczenie wyświetlacza }
MOV DPTR,#TEXT-1
NOWA_PETLA:
MOV PTR,#0 ; wskaznik pierwszego znaku
PETLA:
PUSH PTR
INC_PETLA:
INC DPTR ; przesuniecie
DJNZ PTR,INC_PETLA
POP PTR
INC PTR ; zwiekszenie przesuniecia
MOV A,#16
MOVC A,@A+DPTR
JZ NOWA_PETLA ; zabezpieczenie przed koncem napisu
MOV B,#16 ; ilosc znakow w linii
PETLA_WEW:
CLR A
MOVC A,@A+DPTR ;pobranie znaku
DJNZ B,PISZ_TEXT
SJMP TEXT_END
PISZ_TEXT:
ACALL WRITE
INC DPTR
SJMP PETLA_WEW ; pisze 16 znakow
TEXT_END:
{ opoznienie }
{ przesuniecie kursora na pierwszy znak pierwszej linii }
SJMP PETLA
WRITE: { podprogram piszacy pojedynczy znak (z instrukcji) }
RET
TEXT:
DB ` ` ; 16 spacji
DB `Dlugi napis ...'
DB ` ` ; 16 spacji
DB 0 ; koniec napisu
Program przesuwa napisy maksymalnie o dlugości 224 znaki (256-2*16)