Moduł LED i klawiszy do systemów mikroprocesorowych

Moduł LED i klawiszy do systemów mikroprocesorowych

Zastosowanie z Arduino Uno R3.

Zastosowanie z moduł uruchomieniowy Atmega32.

Moduł do kupienia:

 

Przykład wykorzystania modułu diod LED oraz modułu klawiszowego.
Do podłączenia modułu diod LED do mikrokontrolera służy 7 pinów. Pin zero jest wspólny dla wszystkich diod możemy do niego podpiąć zasilanie lub masę w zależności czy chcemy by nasze diody świeciły gdy na na pinach 1 – 6 pojawi się stan niski lub wysoki. My zaprezentujemy przykład podłączenia modułów do Atmega32A. Listing kodu programu prezentujemy poniżej. Na początku należy skonfigurować piny jako wyjściowe. Dokonamy tego wykonując operację OR z rejestrem DDRx (rejestr kierunku danych). W naszym przykładzie moduł diod LED został podpięty do Portu A, pinów 1 – 7. Aby zapalić poszczególną diodę należy wykonać operację OR rejestru PORTA z wektore,m który składa się z samych zer, oraz jednej jedynki przesuniętej a daną ilość bitów. Na przykład można tego dokonać przez wykonanie instrukcji:

 PORTA |=(1<<LED1);

Natomiast by zgasić diodę należy wykonać operację AND, by ustawić stan niski na wybranym bicie rejestru PORTA. Na przykład można tego dokonać przez wykonanie instrukcji:

 PORTA &=!(0<<LED1);

Gotowy listing do sterowania świeceniem diod LED.

#include <avr/io.h>
#include <util/delay.h>

#define LED1 PA2
#define LED2 PA3
#define LED3 PA4
#define LED4 PA5
#define LED5 PA6
#define LED6 PA7

#define MASA PA1
#define MASAP PD1

#define K1 PD2
#define K2 PD3
#define K3 PD4
#define K4 PD5

void main(void) {
 //Ustawienie pinów jako wyjścia
 DDRA |= (1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<LED4)|(1<<LED5)|(1<<LED6)|(1<<MASA);
 DDRD |= (1<<MASAP);
 PORTA = PORTA &(1<<1);
 //Ustawienie stanu początkowego diod
 PORTA |=(1<<LED1);
 PORTA |=(1<<LED2);
 PORTA |=(1<<LED3);
 PORTA |=(1<<LED4);
 PORTA |=(1<<LED5);
 PORTA |=(1<<LED6);
 DDRD &= ~(1<<K1)|(1<<K2)|(1<<K3)|(1<<K4);
 PORTD |=(1<<K1)|(1<<K2)|(1<<K3)|(1<<K4);

 while (1) {
 if (!(PIND & (1<<K1))) {
 PORTA &=!(0<<LED1);
 PORTA &=!(0<<LED2);
 PORTA &=!(0<<LED3);
 PORTA &=!(0<<LED4);
 PORTA &=!(0<<LED5);
 PORTA &=!(0<<LED6);
 _delay_ms(10000);
 }
 if (!(PIND &(1<<K2))) {
 PORTA |=(1<<LED1);
 PORTA |=(1<<LED2);
 PORTA |=(1<<LED3);
 PORTA |=(1<<LED4);
 PORTA |=(1<<LED5);
 PORTA |=(1<<LED6);
 _delay_ms(10000);
 }
 }
}

Wykorzystanie z płytkami stykowymi.

Dodaj komentarz