Zadání 5
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu DOC.
Zadání č. 5:
Navrhněte zapojení modulu čtyřmístného displeje s LED sedmisegmentovkami. Data budou na displej přenášena postupně sériově po jednotlivých číslicích v kódu sedmisegmentovky (převod BCD čísla na kód bude realizován programově).
Nakreslete vývojový diagram a napište program (včetně komentáře), který bude opakovaně číst čtyřmístné BCD číslo uložené v DPTR a zobrazovat je na displeji.
Schéma zapojení:
Popis zapojení:
Ve schématu je k mikrořadičí 8051 připojen krystal 12MHz. Na vstup EA je připojena log. 1, aby byl program čten z vnitřní paměti. Jako převodník sériové informace na paralelní (pro 4 sedmisegmentovky) jsme použili inteligentní řadič, který má v sobě posuvný registr. Tyto řadiče vyrábí řada firem, s použitím pro 34, 35, 14 a 15 segmentů. Zvláštností tohoto zapojení, je že se segmenty rozsvítí při log. 1. Pokud bychom v budoucnu použili, třeba jiný typ řadiče (u kterého by se segmenty rozsvěcovali log. 0), pak by nám stačilo změnit tabulku znaků.
Použité součástky:
Krystal X 12MHz
Mikrořadič 8051
Řadič M5451 35 segmentů
Kondenzátor C1 50uF
Kondenzátor C2 1nF
Kondenzátory C3, C4 30pF
Rezistor R1 10k
Rezistor R2 12k
Zdrojový kód:
org 0
zac:
mov r7,dph
mov r6,dpl ;uložení obsahu dptr
mov dptr,#tab
mov a,r6 ;přesun nižších 8b do a
anl a,#00001111b ;nulování horních čtyřech bitů -> získání indexu ;do tabulky
movc a,@a+dptr ;získání znaku
mov r0,a ;přesun znaku do r0
mov a,r6 ;přesun nižších 8b do a
anl a,#11110000b ;nulování dolních čtyřech bitů
swap a ;výměna čtveřice bitů v a -> získání indexu
movc a,@a+dptr ;získání znaku
mov r1,a ;přesun znaku na r1
;stejné operace akorát s dph a výsledky na r2 r3
mov a,r7 ;přesun vyšších 8b do a
anl a,#00001111b ;nulování dolních čtyřech bitů -> získání indexu
movc a,@a+dptr ;získání znaku
mov r2,a ;přesun znaku do r2
mov a,r7 ;přesun vyšších 8b do a
anl a,#11110000b ;nulování dolních čtyřech bitů
swap a ;výměna čtveřice bitů v a -> získání indexu
movc a,@a+dptr ;získání znaku
mov r3,a ;přesun znaku na r1
mov dph,r7
mov dpl,r6 ;vložení opětovné hodnoty co byla v dptr
mov r4,#3 ;první tři nevyužité vývody
nevyuz: setb p2.1 ;generování clk
clr p2.0
clr p2.1 ;generování clk
djnz r4,nevyuz
mov a,r0 ;uložení hodnoty do a pro sedmisegmentovku
acall vysli ;vysílání hodnoty do obvodu
mov a,r1
acall vysli
mov a,r2
acall vysli
mov a,r3
acall vysli
sjmp zac
vysli: mov r5,#8
cykl: rlc a ;rotování přes cy - do leva
setb p2.1 ;generování clk
mov p2.0,c ;vysílání hodnoty do obvodu
clr p2.1 ;generování clk
djnz r5,cykl
ret
tab: db 00111111b ;"0"
db 00000110b ;"1"
db 01011011b ;"2"
db 01001111b ;"3"
db 01100110b ;"4"
db 01101101b ;"5"
db 01111101b ;"6"
db 00000111b ;"7"
db 01111111b ;"8"
db 01101111b ;"9"