Multiplexné ovládanie LED displeja.

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

Multiplexné ovládanie LED displeja.

#1 Příspěvek od relatko »

Zdravím všetkých.
Učím sa programovať PIC-ká potrebujem poradiť pri návrhu multiplexného ovládania troch 7-segmentoviek picom 16f627 ktorý pracuje ako počítadlo impulzov na vstupe RA4.Použil som TMR0 ako čítač
a chcem jeho "obsah" dostať na segmenty.Zatiaľ som sfunkčnil len jeden segment no neviem ako previesť číslo 0-255 na tri segmentovky zapojené zo spoločnou anódou.Anódy jednotlivých segmentoviek sa zapoja na výstupy RA0/2.Výstupy RB0/6 sú paralelne prepojené z jednotlivými segmentmi displejov.Vstup RA4 som zatiaľ zámerne neošetril proti zákmitom kvôli jednoduchosti.
Dudem vďačný za každú radu ,prípadne za hotový zdroják na ktorom sa dá pochopiť tento problém.
Zatiaľ vďaka .Relays
Přílohy
čítač.txt
(1.99 KiB) Staženo 161 x
Uživatelský avatar
Pawalo
Příspěvky: 87
Registrován: 06 říj 2005, 00:00
Bydliště: Tábor
Kontaktovat uživatele:

#2 Příspěvek od Pawalo »

Zdravim,,

toto sem řešil tak že sem si vyhranil tři volné registry stovky, desitky, jednotky (nazval sem si je takto XOO,OXO,OOX) a to číslo sem si do nich rozložil. takže například: 154 bylo rozloženo > XOO=1, OXO=5, OOX=4. pak sem použil tabulku čísel jak maš vytvořenou pro zobrazení jednotlivých čísel.

průběh programu vypadal asi takto:

XOO na portB
zapni segnem XOO
počekj chvilku
zhasni segnent XOO

OXO na portB
zapni segmet OXO
počkej chvilku
zhasni segnent OXO

OOX na portB
zapni segnent OOX
počkej chvilku
zhasni segnent OOX
Uživatelský avatar
BOBOBO
Příspěvky: 20880
Registrován: 25 úno 2008, 00:00
Bydliště: Rychnovsko

#3 Příspěvek od BOBOBO »

Uživatelský avatar
Chenzee
Příspěvky: 464
Registrován: 26 čer 2007, 00:00
Bydliště: Vysočina

#4 Příspěvek od Chenzee »

Možná ti pomůže toto: číslo z registru rozlož na BCD kód a ten zobraz. Selským rozumem se zamysli a přijdeš na to, že číslo FEhex tedy 254dec (pro jednoduchost) musíš 2x ponížit o 100, 5x o 10 a 4x o 1 abys dosáhl nulu. tedy 254-100 poznamenám 1, zkontroluju podtečení není, znovu odečtu a poznamenám;;;pokud je podtečení, přičtu poslední 100 a opakuju cyklus, ale s řádem desítek ... a jednotek ... a máš číslo rozsekané pro zobrazení. Pak uděláš v programu tabulku, kde k tomuto číslu přičteš výchozí stav ukazatele, a tedy přímo skočíš na novou adresu programu, kde bude kód odpovídající té číslici. (tedy ve W číslo pro zobrazení, instrukce CALL tabulka, PCL + W => skok na řádek s hodnotou odpovídající číslu, RETLW a na následující instrukci po call tabulky máš ve W hodnotu čísla pro zobrazení). Prozatím ber jako pravidlo, že tabulka musí být v prvních 256b programu (tedy na začátku). (teď koukám, že víš, co je tabulka :wink: , micméňe mazat to již nebudu)

Hodně štěstí.
Uživatelský avatar
Atlan
Příspěvky: 4514
Registrován: 10 kvě 2004, 00:00
Bydliště: Košice

#5 Příspěvek od Atlan »

napr takto :)
Přílohy
Nový objekt - Textový dokument.txt
(459 bajtů) Staženo 198 x
Uživatelský avatar
relatko
Příspěvky: 85
Registrován: 08 úno 2009, 00:00

#6 Příspěvek od relatko »

Zdravím.
Všetkým ďakujem,mám vo veci jasnejšie.Relatko.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“