IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -1- Ćwiczenie 7 Matryca RGB
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -2-1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z inną oprócz RS - 232 formą szeregowej transmisji danych. Podczas ćwiczenia obsługiwać będziemy rejestr przesuwny, który steruje matrycą diod LED RGB. 2. Wstęp Rejestr przesuwny (ang. shift register) jest rejestrem zbudowanym z przerzutników połączonych ze sobą w taki sposób, iż w takt impulsów zegarowych przechowywana informacja bitowa przemieszcza się (przesuwa) do kolejnych przerzutników. Rys. 1. 4-bitowy rejestr przesuwny. Dane z wejścia są wprowadzane do rejestru przy dodatnim zboczu sygnału zegarowego CLK. Jednocześnie dane z wyjść Q A do Q D zostają przesunięte o jeden bit w prawo. Na zwolnionym wyjściu Q A pojawią się dane wprowadzone z wejścia S. Wejście sterujące CLR umożliwia wyzerowanie rejestru. Układ scalony sterujący diodami RGB ma budowę przedstawioną na rys. 2. Rejestr przesuwny zamienia dane z postaci szeregowej na równoległą i przekazuje je do rejestru pamiętającego. Rejestr ten przekazuje dane do trójstanowego bufora wyjściowego, który steruje matrycą diod RGB. Rys. 2. Schemat blokowy wykorzystywanego rejestru. 4. Ramka danych Rejestr przesuwny jest jedną z prostszych form na zwielokrotnianie liczby wyjść mikrokontrolera. W naszym przypadku służy on do sterowania matrycy 5 7 diod LED RGB. Daje to w sumie konieczności sterowania 5 7 3 = 105 diodami. Aby zmniejszyć liczbę niezbędnych wyjść stosujemy multipleksowanie kolumn, co daje (7 3) + 5 = 26 linii. Dzięki takiemu rozwiązaniu uzyskanie stabilnego obrazu, wymaga wysłania 5 ramek (oddzielnie dla każdej kolumny) po 26 bitów. Przykładową transmisję danych niezbędnych do uzyskania stabilnego obrazu przedstawiono na rys. 3a, a pojedynczą ramkę - 3b. Do transmisji wykorzystujemy trzy linie mikrokontrolera:
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -3- RGB_DATA P6.4, to linia służąca do transmisji danych; RGB_CLK P6.5, służy do przesuwania danych przy zboczu narastającym; RGB_LATCH P1.3, przepisuje dane wpisane do rej. przesuwnego na jego wyjście, przy zboczu narastającym. a) b) Rys. 3. a). 5 ramek składających się na stabilny obraz wyświetlacza, b). oraz ramka danych. Do sterowania matrycy LED RGB użyto czterech 8-bitowych rejestrów przesuwnych (rys. 9, załącznik B), dlatego, zgodnie z rys. 4, należy wpisać 4 x 8 = 32 bity (a nie jak wcześniej pisano 26). Należy jednak pamiętać, że 6 pierwszych bitów nie ma znaczenia (fizycznie nie są nigdzie dołączone). Następnie wpisujemy 26 bitów ramki danych, zgodnie z rys.4. Bity COL5 COL1 służą do wyboru kolumny, natomiast: B X, R X, G X, służą do włączenia poszczególnych kolorów diod w kolumnie, przy czym X oznacza numer wiersza (1-7). MSB LSB MSB LSB MSB LSB MSB LSB Bajt 1 Bajt 2 Bajt 3 Bajt 4 kierunek przesuwu Rys. 4. Ramka danych sterujących. Bajt 1: MSB LSB x x x x X x COL5 COL4 Bajt 2: MSB LSB COL3 COL2 COL1 B 1 R 1 G 1 R 2 B 2 Bajt 3: MSB LSB G 2 B 3 R 3 G 3 B 4 R 4 G 4 B 5 Bajt 4: MSB LSB R 5 G 5 B 6 R 6 G 6 B 7 R 7 G 7 Rys. 5. Przeznaczenie poszczególnych bitów ramki danych. gdzie: COLx - nr. kolumny aktywne 1 ; R X - czerwona dioda LEDw wierszu X, aktywne 0 ; G X - zielona dioda LED w wierszu X, aktywne 0 ; B X - niebieska dioda LED w wierszu X, aktywne 0.
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -4- UWAGA Kolejność linii sterujących kolorami diod: B X, R X, w wierszu nr 2 została zamieniona na: R X, B X. Aby uzyskać prawidłowy obraz (bez przekłamań kolorów) należy przestawić kolejność bitów sterujących w wierszu 2 (tak jak na rys. 4). Sposób numerowania matrycy przedstawiono na rys. 5. wiersz - 1 kolumna - 1 wiersz - 1 kolumna - 5 wiersz - 7 kolumna - 1 Rys. 5. Widok matrycy LED RGB. wiersz - 7 kolumna - 5 6. Konfiguracja zestawu dydaktycznego EXTB-060/02 Na potrzeby niniejszego ćwiczenia należy zadbać, aby zwora JP6 była w położeniu takim, jak na rys. 6. JP6 założona Rys. 6. Konfiguracja płyty EXTB-060/02.
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -5-7. Program sterujący Przez rozpoczęciem pracy nad programem należy odpowiednio skonfigurować mikrokontroler, w tym celu należy dołączyć listing 1. Podstawową częścią programu sterującego matrycą LED RGB jest prosta procedura przepisująca zadaną liczbę bitów do rejestrów. Listing 1: LCD_LED equ P5.3 RGB_DATA equ P6.4 RGB_CLK equ P6.5 RGB_LATCH equ P1.3 mov WDTCN, #0DEh mov WDTCN, #0ADh mov SFRPAGE, #CONFIG_PAGE mov XBR2, #040h mov P5MDOUT, #0ffh clr LCD_LED mov P6MDOUT, #0ffh mov P1MDIN, #0F8H ;enable input mov P1MDOUT, #08h Przykładową procedura przepisująca z ACC (akumulatora) do rejestrów przesuwnych ilość bitów określoną w R2 zamieszczono na listingu 2. Listing 2: GO_RGB: clr c GO_RGB1: rrc a mov RGB_DATA,C ;wystawienie bitu danych setb RGB_CLK ;impuls zegara nop nop clr RGB_CLK djnz R2,GO_RGB1 ;pętla ret Aby dane wpisane do rejestrów przesuwnych pojawiły się na wyjściach tychże rejestrów należy załączyć listing 3. listing 3: setb RGB_LATCH ;przepisanie nop nop clr RGB_LATCH UWAGA Aby uzyskać stabilny obraz należy wysłać 5 ramek, każda to 4 bajty w kolejności: 6 bitów nieznaczących, 5 bitów wybór kolumny (aktywne 1 ) oraz 21 bitów wybory koloru w poszczególnych wierszach (aktywne 0 ). Do sterowania matrycą LED RGB służą 3 linie mikrokontrolera: - RGB_DATA - P6.4. wysyła dane do rejestrów (dane ważne podczas zbocza narastającego na linii RGB_CLK); - RGB_CLK - P6.5. przesuwa dane (aktywne zbocze narastające: 0 1); - RGB_LATCH - P1.3. przepisuje dane wysłane do rejestrów na ich wyjścia (aktywne zbocze narastające: 0 1).
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -6-8. Zadania do wykonania A. Sprawdzian wejściowy ( 2pkt ) Przed przystąpieniem do realizacji ćwiczenia przeprowadzony zostanie krótki (ok. 10 min.) sprawdzian wejściowy ze znajomości asemblera. Podczas pisania dopuszczalne jest korzystanie z listy instrukcji asemblera. B. Zadanie A (4pkt) Napisać prosty program, którego zadanie polega na uzyskaniu stabilnego obrazu na matrycy LED RGB. Obraz musi zawierać dowolną cyfrę w jednym kolorze na tle innego koloru, zgodnie z przykładami na rys. 7. Dane sterujące matrycą powinny znajdować się w tablicy danych. C. Zadanie B ( 6 pkt ) Napisać program łączący klawiaturę i matryce LED RGB. Za pomocą klawiatury można będzie wybierać 1 z 4 symboli uprzednio zdefiniowanych przez programistę. Obraz musi zawierać dowolną cyfrę w jednym kolorze na tle w innym kolorze, zgodnie z przykładami na rys. 7. D. Zadanie C ( 8 pkt ) Napisać program łączący klawiaturę z matrycą LED RGB. Za pomocą klawiatury możliwe będzie wyświetlenie 16 symboli (zgodnie z symbolami poszczególnych klawiszy). Dane sterujące matrycą LED RGB muszą być przygotowane w tablicy zgodnie z listingiem 4. Kolorom w jakich świecić będą poszczególne diody RGB odpowiadają liczby: 0 - piksel zgaszony 1 - B 2 - R 4 - G Przed ćwiczeniem należy przygotować odpowiednie tablice danych, zgodnie z przykładem listing 4. Rys. 7. i dane w tablicach TAB_1, TAB_2 i TAB_3 przedstawiają dane wejściowe i wynik działania programu. Listing 4: TAB_1: db '1121112' db '1211112' db '2222222' db '1111112' db '1111112' TAB_2: db '1211112' db '2111122' db '2111212' db '2112112' db '1221112' TAB_3: db '2444424' db '2444442' db '2424442' db '2242442' db '2444224'
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -7- Rys. 8. Wynik pracy programu.
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -8- Załącznik A Zestawienie definicji stron rejestrów specjalnych SFRPAGE, umieszczonych w pliku nagłówkowym: C8051F060.INC. CONFIG_PAGE EQU 0FH ; SYSTEM AND PORT CONFIGURATION PAGE LEGACY_PAGE EQU 00H ; LEGACY SFR PAGE TIMER01_PAGE EQU 00H ; TIMER 0 AND TIMER 1 CPT0_PAGE EQU 01H ; COMPARATOR 0 CPT1_PAGE EQU 02H ; COMPARATOR 1 CPT2_PAGE EQU 03H ; COMPARATOR 2 UART0_PAGE EQU 00H ; UART 0 UART1_PAGE EQU 01H ; UART 1 SPI0_PAGE EQU 00H ; SPI 0 EMI0_PAGE EQU 00H ; EXTERNAL MEMORY INTERFACE ADC0_PAGE EQU 00H ; ADC 0 ADC1_PAGE EQU 01H ; ADC 1 ADC2_PAGE EQU 02H ; ADC 2 SMB0_PAGE EQU 00H ; SMBUS 0 TMR2_PAGE EQU 00H ; TIMER 2 TMR3_PAGE EQU 01H ; TIMER 3 TMR4_PAGE EQU 02H ; TIMER 4 DAC0_PAGE EQU 00H ; DAC 0 DAC1_PAGE EQU 01H ; DAC 1 PCA0_PAGE EQU 00H ; PCA 0 DMA0_PAGE EQU 03H ; DMA 0 CAN0_PAGE EQU 01H ; CAN 0
IMiO PW, LPTM, Ćwiczenie 7, Matryca RGB -9- Załącznik B Rys. 9. Schemat matrycy RGB.