8717


LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH

Imię i Nazwisko: Piotr Jurek & Tadeusz Klukowski

Grupa: ED 5.1

Data wyk. ćwicz. 7.12.98

Numer ćwiczenia

10

Temat ćwiczenia:

Wyświetlacz 7-segmentowy.

Wyświetlacz alfanumeryczny LCD.

Ocena:

ZADANIE NR.1

Na wyświetlaczu została wyświetlona litera E.

;************************************************

; WYŚWIETLACZ 7-SEGMENTOWY

; ZAPIS DO PORTU - PEŁNY ADRES

;************************************************

SEG_ON EQUP 1.6 ;włączenie wyświetlacza 7-segm.

;Pełne adresy urządzeń we/wy systemu DSM-51

F_CSDS EQU 0FF30H ;bufor wyboru wskaźnika

F_CSDB EQU 0FF38H ;bufor danych wskaźnika

;Stałe używane w programie

DISPLAY EQU 00001001B ;wybrane wskaźniki - 1 i 4

COD EQU 01111001B ;wybrane segmenty (E)

LJMP START

OR 100H

START:

MOV MDPTR,#F_CSDS ;adres bufora

;wyboru wskaźnika

MOV A,#DISPLAY

MOVX @DPTR,A ;wpisz wybrane wskaźniki

MOV DPTR,#F_CSDB ;adres bufora

;danych wskaźnika

MOV A,#COD

MOVX @DPTR,A ;wpisz wybrane segmenty

CLR SEG_ON ;włącz wyświetlacz 7-segm

SJMP $

DPL

DPH

P2

P1

MOV

00

00

BC

FF

MOV

30

FF

BC

FF

MOVX

30

FF

BC

FF

MOV

30

FF

BC

FF

MOV

38

FF

BC

FF

MOVX

38

FF

BC

FF

CLR

38

FF

BC

FF

SJMP

38

FF

BC

BF

Na wyświetlaczu została wyświetlona litera F.

Program taki sam jak wyżej, tylko stała COD EQU wynosi 01110001B.

DPL

DPH

P2

P1

MOV

00

00

BC

FF

MOV

30

FF

BC

FF

MOVX

30

FF

BC

FF

MOV

30

FF

BC

FF

MOV

38

FF

BC

FF

MOVX

38

FF

BC

FF

CLR

38

FF

BC

FF

SJMP

38

FF

BC

BF

Na wyświetlaczu została wyświetlona litera H.

Program taki sam jak wyżej, tylko stała COD EQU wynosi 01110110B.

DPL

DPH

P2

P1

MOV

00

00

BC

FF

MOV

30

FF

BC

FF

MOVX

30

FF

BC

FF

MOV

30

FF

BC

FF

MOV

38

FF

BC

FF

MOVX

38

FF

BC

FF

CLR

38

FF

BC

FF

SJMP

38

FF

BC

BF

ZADANIE NR.2

Na wyświetlaczu została wyświetlona litera E.

;************************************************

; WYŚWIETLACZ 7-SEGMENTOWY

; ZAPIS DO PORTU - ADRES 8 BITOWY

;************************************************

SEG_ON EQUP 1.6 ;włączenie wyświetlacza 7-segm.

;Stałe używane w programie

DISPLAY EQU 00001001B ;wybrane wskaźniki - 1 i 4

COD EQU 01111001B ;wybrane segmenty (E)

LJMP START

OR 100H

START:

MOV R0,#CSDS ;adres bufora

;wyboru wskaźnika

MOV R1,#CSDB ;adres bufora

;dane wskaźnika

MOV A,#DISPLAY

MOVX @R0,A ;wpisz wybrane wskaźniki

MOV A,#COD

MOVX @R1,A ;wpisz wybrane segmenty

CLR SEG_ON ;włącz wyświetlacz 7-segm

SJMP $

DPL

DPH

P1

MOV

00

00

FF

MOV

00

00

FF

MOV

00

00

FF

MOVX

00

00

FF

MOV

00

00

FF

MOVX

00

00

FF

CLR

00

00

FF

SJMP

00

00

BF

Na wyświetlaczu została wyświetlona litera F.

Program taki sam jak wyżej, tylko stała COD EQU wynosi 01110001B.

DPL

DPH

P1

MOV

00

00

FF

MOV

00

00

FF

MOV

00

00

FF

MOVX

00

00

FF

MOV

00

00

FF

MOVX

00

00

FF

CLR

00

00

FF

SJMP

00

00

BF

Na wyświetlaczu została wyświetlona litera H.

Program taki sam jak wyżej, tylko stała COD EQU wynosi 01110110B.

DPL

DPH

P1

MOV

00

00

FF

MOV

00

00

FF

MOV

00

00

FF

MOVX

00

00

FF

MOV

00

00

FF

MOVX

00

00

FF

CLR

00

00

FF

SJMP

00

00

BF

ZADANIE NR.4

SEG_ON EQU P1.6 ;włączenie wyświetlacza 7-segm.

;Stałe używane w programie

ONE EQU 006H ;kod cyfry 1

TWO EQU 05BH ;kod cyfry 2

THREE EQU 04FH ;kod cyfry 3

FOUR EQU 066H ;kod cyfry 4

FIVE EQU 06DH ;kod cyfry 5

SIX EQU 07DH ;kod cyfry 6

SEVEN EQU 007H ;kod cyfry 7

;Pamięć wewnętrzna RAM

DISPLAY EQU 30H

LJMP START

ORG 100H

START:

MOV DISPLAY,#ONE ;wpisz kody cyfr

MOV DISPLAY+1,#TWO ;dla kolejnych

MOV DISPLAY+2,#THREE ;wskaźników

MOV DISPLAY+3,#FOUR

MOV DISPLAY+4,#FIVE

MOV DISPLAY+5,#SIX

MOV DISPLAY+6,#SEVEN

LOOP_DISP: ;ustawienie danych do

;wyświetlania na 1-szym

;wskaźniku

MOV R0,#DISPLAY ;adres pobierania kodów

MOV R2,#7 ;licznik-il. Wskaźników

MOV R3,#00000011B ;wybór wskaźnika

;-kod 1 z 8

MOV R4,#10

CLR SEG_ON

MOV R1,#CSDS

MOVX @R1,#00H

LOOP:

MOV R1,#CSDB ;adres danych wskaźnika

MOV A,@R0 ;kod aktualnego wskaźnika

MOVX @R1,A ;wpisz kod segmentów

INC R0 ;adres pobierania kodu

;dla następnego wskaźnika

MOV R1,#CSDS ;adres wyboru wskaźnika

MOV A,R3 ;aktualny wskaźnik (1z8)

MOVX @R1,A ;wpisz nr wskaźnika

RL A ;obrót w lewo - numer

MOV R3,A ;następnego wskaźnika

;(kod 1 z 8)

PETLA:

MOV A,#100 ;czas 1s - świecenia

LCALL DELAY_MS ;dwóch wskaźników

DJNZ R4,PETLA

MOVX @R1,#00H

DJNZ R2,LOOP ;kolejne świecenie

;siedmiu wskaźników

SJMP LOOP_DISP ;zacznij od wskaźnika 1

ZADANIE NR.5

;************************************************

; WYŚWIETLACZ ALFANUMERYCZNY LCD

; WYPISYWANIE ZNAKU

;************************************************

LJMP START

ORG 100H

START:

LCALL LCD_CLR

MOV R0,#LCDWD ;adres wpisywania danych

;na wyświetlacz LCD

MOV R1,#LCDRC ;adres odczytu stanu

;wyświetlacza LCD

LOOP:

LCALL WAIT_KEY ;pobierz klawisz

ADD A,#30H ;zamiana kodu klawisza

MOV R2,A ;na kod znaku LCD

BUSY:

MOVX A,@R1 ;odczyt stanu

JB ACC.7,BUSY ;oczekiwanie na BUSY=0

MOV A,R2 ;wysłanie kodu znaku

MOVX @R0,A ;do wyświetlacza LCD

SJMP LOOP

Po wprowadzeniu 16-tu znaków kursor znika z wyświetlacza. Natomiast po wprowadzeniu 40 znaków na wyświetlacz kursor pojawi się na dolnej linii wyświetlacza. Wynika to z tego, że wyświetlacz LCD wyposażony jest w sterownik , który pamięta 80 znaków (2 linie po 40 znaków). Tak więc wysłane na wyświetlacz znaki nie zginęły, a jedynie nie można było ich wszystkich wyświetlić na wyświetlaczu.



Wyszukiwarka

Podobne podstrony:
8717
8717
8717

więcej podobnych podstron