Pracownia elektryczno-elektroniczna klasa IV Cwiczenie_3 Ćwiczenie nr 3 Temat: Obsługa wyświetlacza siedmiosegmentowego. Cel ćwiczenia: Celem ćwiczenia jest zapoznanie z obsługą wyświetlacza segmentowego w systemie DSM-51 oraz ze sposobem sterowaniem sekwencyjnego. Wiadomości wstępne: Wyświetlacz 7-segnentowy sterowany jest przez dwa bufory – porty wyjściowe podłączone do szyny systemowej: • bufor wyboru wskaźnika (adres 30H w zewnętrznej pamięci danych) – dane wpisywane do tego bufora określają, który wskaźnik w danym momencie ma być aktywny. • bufor danych wskaźnika (adres 38H w zewnętrznej pamięci danych)– bajt umieszczony w tym buforze określa, które segmenty wyświetlacza będą zapalone w wybranym wskaźniku. Jedynka umieszczona na konkretnym bicie powoduje świecenie odpowiedniego segmentu. Należy również wyzerować bit nr 6 rejestru P1 (P1.6), aby uruchomić działanie wyświetlaczy LED. Rys 1. Sposób podłączenia wyświetlacza 7-segmentowego w systemie DSM-51. Przykład_1 Program zapala jedynkę na pierwszych trzech wyświetlaczach siedmiosegmentowych (sterowanie statyczne). LJMP ORG START 100H MOV MOV MOV MOVX MOV MOVX CLR SJMP R0,#30H ;adres bufora wyboru wskaźnika R1,#38H ;adres bufora danych wskaźnika A,#00000111B @R0,A ;wpisz wybrane wskaźniki A,#00000110B @R1,A ;wpisz wybrane segmenty P1.6 ;włącz wyświetlacz 7-segm $ START: Zadanie_1 Napisz program, który wyświetla liczbę 5 na sześciu wyświetlaczach. Temat: Obsługa wyświetlacza siedmiosegmentowego. Opracował: mgr inż. Józef Wójcik 1 Pracownia elektryczno-elektroniczna klasa IV Cwiczenie_3 Przykład_2 Program wyświetla cyfrę jeden na sześciu wyświetlaczach, jeżeli zostanie wciśnięty klawisz „1” z klawiatury matrycowej. Wciśnięcie każdego innego klawisza powoduje zapalenie zera na wszystkich wyświetlaczach. LJMP ORG START 100H MOV MOV LCALL CJNE SETB MOV MOVX MOV MOVX CLR SJMP R0,#30H R1,#38H WAIT_KEY A,#1,NIE P1.6 A,#00111111B @R0,A A,#00000110B @R1,A P1.6 DALEJ SETB MOV MOVX MOV MOVX CLR P1.6 A,#00111111B @R0,A A,#00111111B @R1,A P1.6 SJMP START START: NIE: DALEJ: Zadanie_2 Napisz program, który w zależności od wciśniętego klawisza (od 0 - do 9) klawiatury matrycowej wyświetli jego numer na wszystkich sześciu wyświetlaczach LED. z Przykład_3 Program wczytuje do pamięci RAM mikrokontrolera od adresu 40H kody liczb od zera do dziewięciu następnie w pętli wyświetla je w kolejności rosnącej na wszystkich wyświetlaczach LED. LJMP ORG START 100H START: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV PETLA1: MOV MOV PETLA2: MOV MOV MOVX MOV MOV MOVX CLR INC MOV LCALL DJNZ 40H,#3FH 41H,#06H 42H,#5BH 43H,#4FH 44H,#66H 45H,#6DH 46H,#7DH 47H,#07H 48H,#7FH 49H,#6FH ;kod liczby zero ;kod liczby jeden ;kod liczby dziewięć R0,#40H R2,#10 R1,#30H A,#00111111B @R1,A R1,#38H A,@R0 @R1,A P1.6 R0 A,#10 DELAY_100MS R2,PETLA2 Temat: Obsługa wyświetlacza siedmiosegmentowego. Opracował: mgr inż. Józef Wójcik 2 Pracownia elektryczno-elektroniczna klasa IV SJMP Cwiczenie_3 PETLA1 Zadanie_3 Napisz program, który będzie w pętli odliczał liczby Kolejne liczby należy wyświetlić co drugim wyświetlaczu LED. od dziewięciu do zera. Zadanie_3a Napisz program, który w pętli równolegle będzie załączał poszczególne segmenty od a do g na wszystkich sześciu wyświetlaczach z odstępem jednej sekundy(tak jak procedura testująca system DSM-51). Użyj rozkazu RL A. Przykład_4 Program wyświetla na każdym wyświetlaczu inną liczbę. Na wyświetlaczu pierwszym wyświetlana jest liczba pięć na drugim liczba cztery, na szóstym liczba zero. (sterowanie sekwencyjne pracą kilku wyświetlaczy LED) LJMP ORG START 100H START: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV PETLA1: MOV MOV MOV PETLA2: SETB MOV MOV MOVX 40H,#3FH 41H,#06H 42H,#5BH 43H,#4FH 44H,#66H 45H,#6DH 46H,#7DH 47H,#07H 48H,#7FH 49H,#6FH ;kod liczby zero ;kod liczby jeden ;kod liczby dziewięć R0,#40H R2,#6 R3,#00000001B P1.6 R1,#30H A,R3 @R1,A RL MOV A R3,A MOV MOV MOVX CLR INC MOV LCALL DJNZ SJMP R1,#38H A,@R0 @R1,A P1.6 R0 A,#1 DELAY_MS R2,PETLA2 PETLA1 Zadanie_4 Napisz program, który wyświetla na każdym wyświetlaczu inną liczbę. Na wyświetlaczu pierwszym wyświetlana jest liczba jeden na drugim liczbę dwa, na szóstym liczba sześć. Kody liczb należy wpisać w tej samej kolejności do pamięci RAM, tak jak w przykładzie 3. Zadanie_5 Napisz program, który wyświetla kolejne cyfry od "0" do "5" na wyświetlaczu 7segmentowym. Wszystkie cyfry mają się zapalać i gasić jednocześnie co 1 sekundę. Zadanie_6 Temat: Obsługa wyświetlacza siedmiosegmentowego. Opracował: mgr inż. Józef Wójcik 3 Pracownia elektryczno-elektroniczna klasa IV Cwiczenie_3 Napisz program, który przewija napis OLA na wyświetlaczu 7-segmentowym od lewej do prawej strony. Temat: Obsługa wyświetlacza siedmiosegmentowego. Opracował: mgr inż. Józef Wójcik 4