Omvandla tangentbordssiffror till binära tal ?
Omvandla tangentbordssiffror till binära tal ?
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?
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?
Re: Omvandla tangentbordssiffror till binära tal ?
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.
Re: Omvandla tangentbordssiffror till binära tal ?
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.
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.
Re: Omvandla tangentbordssiffror till binära tal ?
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.
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.
Re: Omvandla tangentbordssiffror till binära tal ?
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.
vilka tal som helst, ex 9999. Men i mitt fall kommer jag klara mig med
255 som maxtal.
Re: Omvandla tangentbordssiffror till binära tal ?
> Jag vill inte använda en mikrocontroller.
Varför inte ? Det ger sannolikt den enklaste lösningen.
Varför inte ? Det ger sannolikt den enklaste lösningen.
Re: Omvandla tangentbordssiffror till binära tal ?
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!
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!
Re: Omvandla tangentbordssiffror till binära tal ?
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).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.
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å?
Re: Omvandla tangentbordssiffror till binära tal ?
> Du kan latch'a in första siffran....
Hur vet du/man vilken som är "första siffran" ?
Hur vet du/man vilken som är "första siffran" ?
Re: Omvandla tangentbordssiffror till binära tal ?
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.
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.
Re: Omvandla tangentbordssiffror till binära tal ?
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.
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.
Re: Omvandla tangentbordssiffror till binära tal ?
Varför är det så viktigt att INTE använda en µC när det är OK med EPROM?
Re: Omvandla tangentbordssiffror till binära tal ?
En mikrocontroller är ju enklare att programmera än ett EPROM.
Re: Omvandla tangentbordssiffror till binära tal ?
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.
Eventuell kan mikrocontrollern t.o.m. sköta DTMF-avkodningen.
Re: Omvandla tangentbordssiffror till binära tal ?
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.
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.