Podstawy Systemów Mikroprocesorowych

Imię i Nazwisko :

Duda Grzegorz, Szub Krzysztof

Symbol grupy

ED 5.4

Data wyk. Ćwiczenia 1997-12-01

Symbol ćwiczenia:

10

Temat zadania: : Wyświetlacz siedmio-segmentowy, wyświetlacz alfanumeryczny LCD.

ZALICZENIE

Ocena

Data

Podpis

Celem ćwiczenia jest zapoznanie się ze sposobem działania oraz komunikacją między

mikrokontrolerem a wyświetlaczem: siedmio-segmentowym oraz alfanumerycznym LCD

1. Przykład przedstawia statyczne sterowanie wyświetlaczem 7 - segmentowym,

Tabela wykonywania programu nr1.

DPL

DPH

P2

na wyświetlaczu

stan początkowy

00H

00H

0BCH

30H

0FFH

0BCH

EEEEEE

38H

0FFH

0BCH

ER ; F1; F4

Dokładny adres urządzenia w DPTR - 0FF30H oraz 0FF38H

Modyfikacja programu1 polegająca na adresowaniu rejestrowym bufora wyboru wskaźnika oraz bufora danych wskaźnika.

Sposób wpisywania kodu wskaźnika oraz kodu wybranych segmentów pozostaje nie zmieniony a więc dokonuje się przez adresowanie pośrednie rejestrów banku aktywnego.

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

;LEKCJA 6 - WYŚWIETLACZ 7-SEGMENTOWY

;PRZYKŁAD 1 - ZAPIS DO PORTU - PEŁNY ADRES

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

SEG_ON EQU P1.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 - 1i4

COD EQU 01011011B ;wybrane segmenty

LJMP START

ORG 100H

START:

MOV DPTR,#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 $

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

Tabela wykonywania programu nr1 (po zmodyfikowaniu).

DPL

DPH

P2

na wyświetlaczu

stan początkowy

00H

00H

0BCH

30H

0FFH

0BCH

38H

0FFH

0BCH

FFF

Dokładny adres urządzenia DPTR - FF 38H ; BC30H i BC38H ;

Przykład ten przedstawia sekwencyjny sposób wyświetlania liczb na wyświetlaczach 7 - segmentowym.

Zastosowanie pętli LOOP oraz LOOP_ DISP z czasem przetrzymania 1s, powoduje, że na wyświetlaczu świecą się kolejno wskaźniki od 1 do 7 .

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

;LEKCJA 6 - WYŚWIETLACZ 7-SEGMENTOWY

;PRZYKŁAD 3 - PRZEGLĄDANIE WYŚWIETLACZA

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

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,#00000001B ;wybór wskaźnika

;-kod 1 z 8

LOOP:

SETB SEG_ON ;wyłącz poprzedni

;wskaźnik

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)

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

CLR SEG_ON ;włączenie wskaźnika

MOV A,#10 ;czas 1s - świecenie

LCALL DELAY_100MS ;jednego wskaźnika

DJNZ R2,LOOP ;kolejne świecenie

;siedmiu wskaźników

SJMP LOOP_DISP ;zacznij od wskaźnika 1

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

Program nr 5

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

;LEKCJA 9 - WYŚWIETLACZ ALFANUMERYCZNY LCD

;PRZYKŁAD 1 - 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

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

Na wyświetlaczu LCD ukazują się maksymalnie w jednej linii tylko 16 znaków widocznych oraz dodatkowo 24 znaki, których nie widać z powodu ograniczonych możliwości wyświetlacza. Znaki niewidoczne na ekranie są dostępne poprzez przesuwanie kursora po ekranie. Wpisanie 41 znaku powoduje automatyczne przejście kursora do linii następnej wyświetlacza i podobnie jak w przypadku pierwszej linii widoczne jest 16 początkowych znaków. Wynika to z tego, że wyświetlacz jest obsługiwany przez sterownik HD 44780, który obsługuje 2 linie po 40 znaków.