Modul 8.LED diod



Konstrukce
Bipolární krokový motor
LCD displej
7.segmentový displej
Maticový displej
Maticová klávesnice

Připojení modulu LED diod k paralelnímu portu je nejjednodušší aplikací. Na schématu je znázorněno zapojení 8.LED s budičem 74HCT245. Uvažujeme, že modul je připojen k portu P1. Budič používáme z důvodu proudového zatížení portů. Použité odpory mají hodnotu 330 ohmů, dioda svítí při logické 0, při logické 1 je zhasnutá.



Asi nejjednodušším programem pro LED diody je běžící světlo, kdy svítí v daném okamžiku vždy jen jedna dioda. Posun provedeme pomocí rotace akumulátoru. Nesmíme zapomenout, že dioda musí svítit nějakou minimální dobu, což zajistíme pomocí zpožďovací smyčky. Zvolíme dobu cca 0,5 s, při frekvenci 12MHz.

;***program pro bezici svetlo, modul led ,port p1,zpozdeni cca 0,5 s***
;***autor: miloslav siroky, vytvoreno 25.10.2005***********************






start:




del:
sma:
smb:







org

mov

mov
call
rr
jmp

mov
mov
mov
djnz
djnz
djnz
ret

end

00h

a,#01111111b

p1,a
del
a
start

r7,#4
r6,#250
r5,#250
r5,$
r6,smb
r7,sma




;nastaveni pocatku

;zapis cisla do akumulatoru

;presun cisla z akumulatoru na port p1
;volani podprogramu zpozdeni
;rotace akumulatoru vpravo
;skok na start-vytvoreni cyklu

;zpozdovaci smycka-zapis cisla do r7
;zapis cisla do r6
;zapis cisla do r5
;decrementuje r5 az do vynulovani
;decrementuje r6 a neni-li roven 0, skoci
;decrementuje r7 a neni-li roven 0, skoci
;navrat z podprogramu

;konec programu


Jakékoli změny svítících diod můžeme také provést pomocí uložení tabulky direktivou DB a jejího postupného načítání:

;***program pro bezici svetlo, modul led ,port p1,zpozdeni cca 0,5 s***********
;***zmeny provedeny pomoci postupneho nacitani tabulky, ulozene direktivou DB**
;***autor: miloslav siroky, vytvoreno 25.10.2005*******************************





start:

blok:











tab:








include(del.inc)



org

mov

mov

mov
movc

mov
call
inc
cjne


jmp


db
db
db
db
db
db
db
db




end
00h

dptr,#tab

r0,#0

a,r0
a,@a+dptr

p1,a
del
r0
r0,#8,blok


start


01111111b
10111111b
11011111b
11101111b
11110111b
11111011b
11111101b
11111110b





;nastaveni pocatku

;nacteni adresy tabulky do dptr

;nulovani r0 pro offset

;presun hodnoty r0 do a
;nacteni konstanty z adresy pameti
;dane souctem a+dptr do a
;presunuti hodnoty z a na p1
;volani podprogramu zpozdeni
;incrementace r0
;porovna obsah r0 s primou hodnotou a
;nejsou-li shodne, skoci,
;prima hodnota = pocet radku tabulky
;skok na nulovani r0


;ulozeni konstant tabulky pomoci direktivy db
;do programove pameti







;vlozeni zpozdovaci smycky z externiho
;souboru pomoci directivy include

;konec programu

Vytvoření souboru del.inc je popsáno v kapitole Programování v assembleru

Dále můžeme použít operace rotací přes bit c v kombinaci s logickým součinem. Vytvoříme tak program, kdy ze zhasnutého stavu se postupně rozsvěcují diody od krajů proti sobě, až do rozsvícení všech osmi.

;***program pro postupne rozsviceni diod od kraju proti sobe***
;***modul led, port p1,***autor miloslav siroky***1.11.2005****



start:


blok:

















include(del.inc)


org

mov
mov

mov
anl

mov
call
jz


mov
clr
rrc
mov
mov
clr
rlc
mov
jmp



end
00h

r0,#255
r1,#255

a,r0
a,r1

p1,a
del
start


a,r0
c
a
r0,a
a,r1
c
a
r1,a
blok




;nastaveni pocatku

;naplneni registru r0
;naplneni registru r1

;presun r0 do a
;logicky soucin obsahu a s obsahem r1,
;vysledek v a
;presun vysledku z a na port p1
;volani zpozdeni
;skok pri nulovem akumulatoru,
;po rozsviceni vsech diod skoci
;na znovunaplneni registru r0 a r1
;nacteni hodnoty z r0 do a
;nulovani bitu c v registru psw
;rotace a doprava pres bit c
;presun rotovane hodnoty do r0
;nacteni hodnoty z r1 do a
;nulovani c
;rotace a doleva pres bit c
;presun rotovane hodnoty do r1
;cyklus bezi az do rozsviceni vsech diod

;vlozeni zpozdovaci smycky z externiho souboru

;konec programu


Samozřejmě, že tímto nejsou vyčerpány všechny možnosti použití modulu LED diod, kdokoliv si může vymyslet různé aplikace. Doufám, že tyto vzorové programy pomohou každému, kdo bude pro tento modul vytvářet vlastní programy.