AC/DrieC
Den Dries www.hulens.be
Hallo iedereen ,ik zit met een probleem ik zou een binaire getal dat maximum de waarde 255 kan aannemen, op drie 7 segmentdisplays willen krijgen ik heb al zitten zoeken naar decorders maar ik vind niets da mij zou kunnen helpen
even een voorbeeltje voor wie het niet snapt
mijn controller geeft op zijn uitgang:10000011 en op mijn 3 X 7segmentdisplays moet dan opkomen 131
alvast bedankt
Ununoctium
I don't know how fast I'm going, but I know exactly where I am
Neem een microcontroller waar je acht pinnen van gebruikt om de binaire waarde te ontvangen. En dan neem je 3 keer 4 uitgangen gekoppeld aan een BCD-7segment.
Je µC zal dan de honderdtallen en tientallen wel van elkaar onderscheiden en deze in binair terug uit sturen.
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Op 28 april 2006 18:15:49 schreef Ununoctium:
Neem een microcontroller waar je acht pinnen van gebruikt om de binaire waarde te ontvangen. En dan neem je 3 keer 4 uitgangen gekoppeld aan een BCD-7segment.
Je µC zal dan de honderdtallen en tientallen wel van elkaar onderscheiden en deze in binair terug uit sturen.
nou... dat dacht ik ook...
En daar hoef ik niet eens veel text voor te posten.
MAW... Te laat...
Echt snel de getallen laten verspringen kun je wel vergeten. Daarvoor neemt het rekenwerk nogal wat tijd.
Ik heb hetzelfde gedaan met 2 displays waarbij de linker niet boven de 3 uitkwam.
[Bericht gewijzigd door Fantomaz op ]
AC/DrieC
Den Dries www.hulens.be
ik zal het eens proberen maar het is niet de bedoeling dat het getal om de 5sec veranderd maar maximum op de paar u dus geen probleem dus rechtstreekse decorders bestaan er niet of toch ? want met een decorder werken is toch iets gemakkelijker dan met een µC ?
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Op 28 april 2006 18:33:31 schreef AC/DrieC:
ik zal het eens proberen maar het is niet de bedoeling dat het getal om de 5sec veranderd maar maximum op de paar u dus geen probleem dus rechtstreekse decorders bestaan er niet of toch ? want met een decorder werken is toch iets gemakkelijker dan met een µC ?
Oef... het eerste deel van je reactie is volledige crypto (lees=> wartaal) voor me.
Graag even de nodige punten en hoofdletters gebruiken anders is het niet te begrijpen
Ik doelde met het snel wisselen van waarde op een "frequentie" van 10 hz.
Andersgezegd: Bij mij liep de waarde (in de uC) terug met een snelheid van 10x per seconde.
Dat trok het geheel niet waardoor de segmentjes onregematig branden en je er geen cijfer in zag.
1 of 2 x per seconde gaat al een stuk beter.
[edit]
decoders die dit doen ben ik nog niet tegengekomen.
Ik heb wel eens gehoord dat je een poort van de BCD-7seg kunt koppelen of zoiets, maar ondanks lang zoeken heb ik daar nooit een schema of datasheet van gezien.
[/edit]
[Bericht gewijzigd door Fantomaz op ]
elmowww
PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
Fantomaz:
Het is echt wel mogelijk om die 7 segmentsdingen goed snel te sturen... Ik gok dat je een andere fout in je code/schema had waardoor dat niet lekker ging...
Stynus
Met vriendelijke groet, Stynus ||| http://www.elektronicastynus.be ||| http://e-stynus.com ||| --> Automatische trapverlichting <--
Op 28 april 2006 18:39:19 schreef Fantomaz:
...
[edit]
decoders die dit doen ben ik nog niet tegengekomen.
Ik heb wel eens gehoord dat je een poort van de BCD-7seg kunt koppelen of zoiets, maar ondanks lang zoeken heb ik daar nooit een schema of datasheet van gezien.
[/edit]
HEF4511
gradtje
Ja... en toen ?
PIC:
Deze routine maakt één byte naar drie bcd getallen.
Het is overigens snel genoeg om dit ettelijke 10000 keren per seconde te doen.
convert ; byte naar 3 digits BCD
clrf hundreds ; hundreds
clrf tens
clrf ones
hundred MOVLW 64h
SUBWF lo,W
BTFSS STATUS,C
GOTO ten ; er zit geen 100 meer in naar de tien...
incf hundreds,f
MOVWF lo
goto hundred
ten movlw 0Ah
subwf lo,w
btfss STATUS,C
goto one ; er zit geen 100 meer in, naar de eentjes....
incf tens,f
movwf lo
goto ten ; nog een keer
one movf lo,W ; lo naar w
movwf ones ; de rest is voor de eentjes
return
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Op 29 april 2006 13:32:15 schreef elmowww:
Fantomaz:
Het is echt wel mogelijk om die 7 segmentsdingen goed snel te sturen... Ik gok dat je een andere fout in je code/schema had waardoor dat niet lekker ging...
Waar ga ik fout dan?
------------------------------------------------------------------
voorraad10 = 0 AND voorraad1 = 0
voorraad1 = voorraad ;tijdelijke copy gemaakt tbv rekenwerk voor display
While voorraad1 >= 10
voorraad1 = voorraad1 - 10 ;Trek er tien vanaf
inc voorraad10 ;Verhoog de tientallen
WEND
disp = (voorraad1 &15) + ((voorraad10 << 4) &48) ;weergave voorraad1 op eerste 4 bits weergave voorraad10 op bit 4 en 5
-------------------------------------------------------------------
Dit komt 10 x per seconde voorbij.
Alleen trok de display (2x 7seg) dit niet.
[edit]Meteen al een foutje ontdekt die ik eerder niet had gezien
Nee was toch goed
[/edit]
Variabele voorraad heeft de waarde die uiteindelijk weergegeven wordt.
elmowww
PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
Gebruik iets als dit:
Quote uit picbasic help topics(staat ook in het boekje dat je bij je compiler kreeg)
Syntax
Variable = DIG Value , Digit number
Overview
Returns the value of a decimal digit.
Operators
Value - a constant, variable, or expression, from which the digit number is to be extracted.
Digit number - a constant, variable, or expression, that represents the digit to extract from value. (0 - 9 with 0 being the rightmost digit).
ExampleDIM VAR1 as BYTE
DIM VAR2 as BYTE
VAR1 = 124
VAR2 = DIG VAR1 , 1 ' Extract the second digit's value
PRINT Dec VAR2 ' Display the value, which is 2Because this version of the Dig command is unique to the PROTON+ compiler, it also supports dword variables.
Code die hierbij in me opkomt:
dim digita as byte
dim digitb as byte
dim digitc as byte
dim data_in as byte
digita = dig data_in, 0
digitb = dig data_in, 1
digitc = dig data_in, 2
Eén digit neemt maar een halve byte (4 bit`s dus ), dus zou je de digits ook nog per nibble op kunnen slaan in een byte.
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Kijk... Dat had ik een half jaar geleden moeten weten.
Swel handig.
Waarom is die waarde van Var2 eigenlijk 124?
elmowww
PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
Om een voorbeeld te kunnen geven
Het probleem wat jij hebt is dat je denkik iets te weinig in de manual neust
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Op 30 april 2006 01:17:46 schreef elmowww:
Om een voorbeeld te kunnen gevenHet probleem wat jij hebt is dat je denkik iets te weinig in de manual neust
Of een kwestie van problemen met begrijpend lezen in technisch Engels. Welke facetten zijn relevant en welke niet?
Daar komt bij dat ik enigzins paranoia ben geworden wat lesstof betreft. Toen ik een VEV opleiding deed, begon de leraar elke les weer met de zin: "goed, de volgende passages mag je doorstrepen cq veranderen in ..."
Als ik nu iets lees waar ik aan twijfel, denk ik heel snel dat het een typfout of een verkeerde beredenering is.
En geloof me, dat leest/leert erg beroerd
Neem nou die waarde 124.
Is dat een standaard gegeven, een bekende variabele of wat anders...?
PS Houd je brievenbus even in de gaten.
Op 30 april 2006 15:17:27 schreef Fantomaz:
[...]
Neem nou die waarde 124.
Is dat een standaard gegeven, een bekende variabele of wat anders...?
[...]
Op 30 april 2006 01:17:46 schreef elmowww:
Om een voorbeeld te kunnen geven
[...]
De routine trekt de 2e digit uit een getal
Lees de Syntax van DIG nog eens goed
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Op 30 april 2006 19:49:48 schreef Henry S.:
[...]
[...]
De routine trekt de 2e digit uit een getalLees de Syntax van DIG nog eens goed
Wat is DIG, Henry?
En 124 heeft 3 digits. Bedoel je dat het cijfer 2 hieruit onttrokken wordt
Laat maar... Even doorgelezen en het is me nu duidelijk.
Het voorbeeld geeft aan hoe slechts het tweede digit onttrokken moet worden uit VAR1.
[Bericht gewijzigd door Fantomaz op ]
elmowww
PA0EJE - www.eje-electronics.nl - e.jongerius[aapje]eje-electronics.nl - EJE Electronics - Elektronica/firmware ontwikkeling
Op 30 april 2006 15:17:27 schreef Fantomaz:
[...]Of een kwestie van problemen met begrijpend lezen in technisch Engels. Welke facetten zijn relevant en welke niet?
Daar komt bij dat ik enigzins paranoia ben geworden wat lesstof betreft. Toen ik een VEV opleiding deed, begon de leraar elke les weer met de zin: "goed, de volgende passages mag je doorstrepen cq veranderen in ..."
Als ik nu iets lees waar ik aan twijfel, denk ik heel snel dat het een typfout of een verkeerde beredenering is.
En geloof me, dat leest/leert erg beroerdNeem nou die waarde 124.
Is dat een standaard gegeven, een bekende variabele of wat anders...?PS Houd je brievenbus even in de gaten.
Mmmm, lijkt me inderdaad heel erg vervelend. Succes en ik zal me brievenbus in de gaten houden