- Dział: arts -
elektronika/wyswietlacz_segmentowy_avr_asm
Wyświetlacz Segmentowy 8 znaków kod w Asemblerze z attiny3113
cel
Dziś napisałem bibliotekę do obsługi wyświetlaczy segmentowych led. Przyznam się że była to dość prosta praca.
Wyświetlacz Segmentowy - Model
Kolor i rozmiar według uznania warto jednak zwróc uwagę na jego typ
Są 2 typy: ze wspólną anodą (+) oraz ze wspólną katodą(-)
Mój zestaw
Do mojej pracy użyłem,
LEDTECH 42977
LA5641-11
Jest to wyświetlacz segmentowy ze wspólną anodą.
Zadanie nie jest wymagające - potrzebujesz 8portów I/O. Połączony z attiny2313, własciwie może to być dowolny mikroprocesor firmy Atmel mający min 8partów I/O
oznaczenia
W dokumentacji ekranów segmentowych urzywa się następujących oznaczeń do opisania elementów:
a - górna
b - górna prawa
c - dolna prawa
d - dolna
e - lewa dolna
f - lewa górna
g - środkowa
DP - kropka
Oznaczenia te zdaja się być uniwersalne i takie też ede stosował w swojej biblotece.
w moim przypadku oznacza to:
czyli dokładnie:
Bibloteka
definiowanie zmiennych, pinow do ktorych bedziesz mial podlaczaony ekran
.equ EKRAN_a_PORT = PORTA
.equ EKRAN_a_PIN = 0
.equ EKRAN_b_PORT = PORTD
.equ EKRAN_b_PIN = 0
.equ EKRAN_c_PORT = PORTD
.equ EKRAN_c_PIN = 1
.equ EKRAN_d_PORT = PORTD
.equ EKRAN_d_PIN = 2
.equ EKRAN_e_PORT = PORTD
.equ EKRAN_e_PIN = 3
.equ EKRAN_f_PORT = PORTD
.equ EKRAN_f_PIN = 5
.equ EKRAN_g_PORT = PORTD
.equ EKRAN_g_PIN = 4
.equ EKRAN_PD_PORT = PORTA
.equ EKRAN_PD_PIN = 1
dołączanie bibloteki
.INCLUDE "screen.asm"
inicjacja ekranu
rcall EKRAN_INIT;
zapalanie segmentu 'a'
cbi EKRAN_a_PORT,EKRAN_a_PIN
wyswietlenie znaku '1'
rcall EKRAN_DIS_0
mrugniecie segmenu
BLINK EKRAN_a_PORT,EKRAN_a_PIN
Przyklad
Oto prosty programu
.NOLIST ; wyłączenie z raportu z kompilacji
.INCLUDE "tn2313def.inc" ; dołączonego pliku AT90S2313def.inc
.list
;-----------------------------------------------------------------------------
.cseg
.org 0
rcall Main;
;-----------------------------------------------------------------------------
.INCLUDE "screen.asm"
;-----------------------------------------------------------------------------
Main:
rcall EKRAN_INIT;
cbi EKRAN_a_PORT,EKRAN_a_PIN
rjmp Main