Omvandla tangentbordssiffror till binära tal ?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Letar just nu efter en lösning på följande problem:

Jag har ett telefon tangent bord, 0-9,* och # som knappar.

Om jag knappar in 123 så har jag redan lösningen på att varje knapptryck
ger en binär kod ut
1 => 0001
2 => 0010
3 => 0011

Nu vill jag att det här ska omvandlas till ett 8-bits binärt tal = 01111011 som är
binära motsvarigheten till decimala talet 123.

På något sätt måste jag mellanlagra varje knapptryck och sedan slå ihop de binära
delresultaten för att få rätta talet.

Jag vill inte använda en mikrocontroller.

Att multiplicera 1 med 100, 2 med 10 och sedan addera de tre talen vore en lösning
men det ger förmodligen en ganska komplex logikfunktion med många logikgrindar.

En annan idé jag har är att låta varje knapptryck räkna upp en räknare.
1 räknar upp 100 steg, 2 räknar upp 20 steg och 3 räknar upp 1 steg.
Kanske också det blir ganska mycket logik även om jag tror det blir enklare.

Jag undrar nu om det finns fler goda idéer på möjliga lösningar?
ie
EF Sponsor
Inlägg: 1381
Blev medlem: 23 oktober 2006, 13:12:57
Ort: Tyresö

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av ie »

Du kan latch'a in första siffran i ett fyrabitsregister (A) och andra sifran i register (B). Sen låter du de fyra bitarna från A, fyra från B och de fyra sista från knappsatsen ge ett 12-bitarsord. Dessa 12 bitar lägger du på adresspinnarna på ett EPROM. Med lämplig programmering av EPROM'et så har du din 8 önskade databitar på EPROM'ets datalinjer som får agera utgång.
Nerre
Inlägg: 27281
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av Nerre »

Alla lösningar utom mikrocontroller kommer att ge en väldig massa kretsar.

Du behöver ju i princip en sekvensmaskin, och du behöver kunna hantera såna saker som att någon trycker på bara TVÅ knappar och sen tre knappar efter en lång tids väntan.

Själva omvanligen är nog inte det svåra, det är ju i princip en omvandlig från 3 siffrors BCD till binär och det BORDE nån ha gjort förr.

Sen måste du kunna hantera tal upp till 999, du behöver alltså minst 10 bitar ut.
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Det var ett bra tips!
Det blir dessutom en kompakt lösning.
Jag saknar en EPROM programmerare men det får jag ta att ordna i så fall.

Jag hade tänkt att en sekvens om tre siffror avslutar med # och då kan
jag låta den ge klarsignal till epromet att läsa adressen.
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Det mest universella är förstås en lösning med att kunna knappa in
vilka tal som helst, ex 9999. Men i mitt fall kommer jag klara mig med
255 som maxtal.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av sodjan »

> Jag vill inte använda en mikrocontroller.

Varför inte ? Det ger sannolikt den enklaste lösningen.
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Om jag kan programmera så är det en smidig lösning.
Nu blir ett EPROM med några latchar också väldigt enkelt.
Jag behöver inte lägga in data på mer än 256 adresser och
det kanske går att bygga en väldigt enkel programmerare med
ett antal switchar och en pulsgenerator.

Jag funderade en gång på att ha en mikrokontroller som blixt
till kameran. Man kopplar in ett 12 bilbatteri som matning! :)
Mikrokontrollers kan lösa det mesta!
Nerre
Inlägg: 27281
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av Nerre »

4kTRB skrev:Det mest universella är förstås en lösning med att kunna knappa in
vilka tal som helst, ex 9999. Men i mitt fall kommer jag klara mig med
255 som maxtal.
Hur hanterar du om användaren trycker 999 då? Du kommer ju att få 0 ut (eller möjligen 255, beroende på vad du lagt på de oprogrammerade adresserna).

Och användaren måste alltså slå inledande nolla på alla tal under 100 och två inledande nollor på alla tal under 10?

Eller hur har du annars tänkt lösa det med att veta hur många siffror talet är på?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av sodjan »

> Du kan latch'a in första siffran....

Hur vet du/man vilken som är "första siffran" ?
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Jag kommer att ersätta tangentbordet med en DTMF dekoder.
Den ger en 1:a ut för aktuell ton. 1 av 12 utgångar går hög
och dom kopplar jag till en priority encoder som ger ett 4-bits
tal ut.

Ett sätt som blir mer "i rätt ordning" fungerar på följande sätt:

Jag börjar med nollställda register. 1:a knapptrycket lagras i register 1
Ett 2:a knapptryck skiftar bitarna 4 steg in i register 2 och placerar
knapptryck 2 i register 1. Tredje knapptrycket skiftar upp de 8 bitarna
i register 3 och 2 och lagrar knapptryck 3 i register 1.

Nu avslutas det hela med #.

Enklare blir att lagra knapptryck 1 i register 1, knapptryck 2 i register 2 osv.
Det ger en adress där rätt tal finns lagrat.
Efter # så nollställs registren.
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Om jag kör variant ett med att skifta in i registren så kommer det fungera med
BCD till binäromvandlare. Alltså 12 bitar i 3 grupper om 4 bitar ska göras om
till binär motsvarighet. Borde fungera i fall 2 också om jag bara ser till att
"vända" på utdatat.
Användarvisningsbild
Icecap
Inlägg: 26677
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av Icecap »

Varför är det så viktigt att INTE använda en µC när det är OK med EPROM?
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1355
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av baron3d »

En mikrocontroller är ju enklare att programmera än ett EPROM.
Nerre
Inlägg: 27281
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av Nerre »

För att inte tala om att med mikrokontrollern slipper man de där latcharna och logiken kring dem som ser till att talen latchas in på rätt ställe. Det blir alltså EN krets istället för 5-6 kretsar plus ett EPROM...

Eventuell kan mikrocontrollern t.o.m. sköta DTMF-avkodningen.
Användarvisningsbild
4kTRB
Inlägg: 20987
Blev medlem: 16 augusti 2009, 19:04:48

Re: Omvandla tangentbordssiffror till binära tal ?

Inlägg av 4kTRB »

Och ELFA, Farnell, RS och alla dom andra kunde ha mycket tunnare
kataloger. En diod går simulera med en uController. Varför ha 500MHz
PLL kretsar när det går lika bra med en uController. Dessutom
blir det säkert enklare att få att fungera och anpassa efter applikationen... :)
Att forumen redan nu till stor del handlar om problem relaterade till
uControllers verkar egentligen lite konstigt när det faktiskt är så
enkelt.

Nej jag gillar uControllers men undviker dom gärna om det går lösa med en dedikerad kretslösning.
Det tar också en hel del tid att komma igång med en ny uController. Program tar också tid att få till.
Sedan gillar jag diskret logik och olika lösningar som går att få till.
Skriv svar