Hallo Leute! Ich experimentiere im Mom mit einem analogen Drucksensor und dem A/D-Wandler eines Atmega8. Ziel soll es sein, ein kleines Barometer zu bauen. Ich habe zu Testzwecken ein kleines LCD angeschlossen. Die eigentlichen Werte sollen auf Segmentanzeigen angezeigt werden, die mit einem Treiber IC angesteuert werden. Das Problem was ich habe. Die vom A/D gemessenen Werte werden in dem Word Messergebnis gespeichert. Jetzt wollte ich mit "makebcd" die einzelnen bits für den BCD Code erstellen. BCD-Code ist für das Treiber IC. Leider bekomme ich auf den Segmenten so wie auf dem LCD nur Schrott angezeigt. Das Word muss doch bestimmt auch noch in zwei Bytes geteilt werden, um dann den vier Bit breiten BCD-Code zu erstellen? Irgendwie steh ich etwas auf m Schlauch. Ich hab meinen Bascom-Code mal angehangen. Danke schon mal für jeden guten Vorschlag...
Also geht es weder um ein Barometer noch um einen A/D-Wandler, sondern um das Zerlegen eines 16-Bit-Wertes in BCD, und das in BASCOM. > Das Word muss doch bestimmt auch noch in zwei Bytes geteilt werden, um > dann den vier Bit breiten BCD-Code zu erstellen? Mit recht hoher Wahrscheinlichkeit liefert die Funktion "makebcd" etwas, was sich "packed BCD" nennt, in einem Byte werden zwei Stellen des BCD-Wertes abgelegt. Aus Dezimal 12 (hex 0x0c) wird folglich hex 0x12.
die Zeile "LCD Messergebnis" sollte Dir einen Wert zwischen 200 und 1223 anzeigen (weil Du 200 addierst). Wenn dass funktioniert, dann funktioniert schonmal die ADC-Messung. Für die Anzeige des Messwertes auf dem LCD muss man nicht mehr tun (maximal noch die erste Stelle mit einer "0" oder einem Leerzeichen auffüllen, damit die Zahl rechtsbündig immer an der gleichen Stelle steht). Für die Segmentanzeige vermute ich mal, dass Du diese 3-4 Ziffern auseinandernehmen und einzeln an den Treiber füttern musst - poste doch mal, wie diese Segmentanzeige aufgebaut ist / mit welchem Treiber.
Ja, genau. Es geht um das Zerlegen eines Wertes in einen BCD-Code. Die ADC Messung funktioniert. Richtig ich habe einen min. Wert von 200 und einen max. von 1223. Das sind NE587 Treiber, wo der BCD Code an den Pins 1,2,7,8 angeschlossen ist. Es gibt leider keinen Schaltplan, weil das alles nur auf nem Klemmbrett aufgebaut ist. Ja genau. Die Ziffern müssen auseinander genommen werden, dann nacheinander an das IC gesendet werden. Wie tu ich denn jetzt so ein Word auseinander nehmen, um daraus dann jeweils 4 Bit BCD Code zu erhalten?
eigentlich brauchst du ja auch gar kein makebcd, denn du willst ja dein Eregbnis sicher nicht als Hex-Ziffern ausgeben. Oder doch? Beobachtung. 378 / 10 -> 37 378 MOD 10 -> 8 37 / 10 -> 3 37 MOD 10 -> 7 3 / 10 -> 0 3 MOD 10 -> 3 wenn du die die Ergebnisse der MOD Zeilen ansiehst, dann sind das genau die Ziffern, die deine Zahl aufgebaut haben. Das ganze beruht einfach nur auf DIvision durch 10 bzw. auf dem Rest, der bei so einer Ganzzahl-Division bleibt
Natürlich kann man mit einer Division durch 10 die einzelnen Ziffern einer Variable ausfindig machen. Aber! Dann hab ich ja auch noch nicht so ganz das was ich brauche. Ich brauche einen 4 Bit breiten Bin-Code von jeder Ziffer, die ich dann nacheinander dem Treiber IC aufschalten kann.
Christian Betzen schrieb: > Natürlich kann man mit einer Division durch 10 die einzelnen Ziffern > einer Variable ausfindig machen. > > Aber! Dann hab ich ja auch noch nicht so ganz das was ich brauche. > Ich brauche einen 4 Bit breiten Bin-Code von jeder Ziffer, die ich dann > nacheinander dem Treiber IC aufschalten kann. Dann schau dir doch mal die Binärcodes der numerischen Ziffern von 1 bis 9 an. Es tut mir leid, aber wer mit µC arbeiten will, sollte zumindest binär zählen können und Begriffe wie 'Bits' sollten keine Fremdwörter sein.
Christian Betzen schrieb: > Ich brauche einen 4 Bit breiten Bin-Code von jeder Ziffer, die ich dann > nacheinander dem Treiber IC aufschalten kann. Wie Du auf die Ziffern kommst, (Divisionsrest durch 10) steht oben. jetzt brauchst Du etwas, was Du 4x nacheinander aufrufen kannst, und was aus einer Ziffer Deinen benötigten Code/Ausgabe macht. Entweder die fertigen BCD-Funktionen aus dem Bascom funktionieren dafür, oder Du schreibst Dir selbst dazu eine Funktion: function mein BCD wenn diese Ziffer gib das zurück.. wenn diese Ziffer gib das zurück.. wenn diese Ziffer gib das zurück.. end function
Ich denke, man sollte auch mal klären, was da eigentlich für eine Hardware drann hängt. Ich tippe mal auf einen 7447 .... .... und eine gewisse Parallelität in der Sache zu dem hier Beitrag "Re: Tastaturprogramm mit ATMega328"
Eine BCD Wandlung kann man sehr gut im Simulator debugen und nachvollziehen. Anmerkung. Weshalb muessen die Leute immer mit einem Mega8 arbeiten ... dem Magersten unter den Megas.
spess53 schrieb: > Hi > >>Ich tippe mal auf einen 7447 .... > > NE587 > > Beitrag "Re: Barometer mit A/D" Ah ok. Hab ich überlesen und dann nur noch im Eröffnungsposting gesucht. Ändert aber eigentlich am Prinzip nicht viel. Das ist ja auch nur ein 7447, diesmal halt mit Latch. Ich würd dem TO mal empfehlen, einfach nur den NE und die 7-Segment zu verkabeln und sich mal in Natura anzusehen, wie die Belegung der Datenleitungen sein muss, damit was an der Anzeige angezeigt wird. Kein Datenblatt kann das so schön vermitteln, wie ein realer Aufbau, dem man mit ein paar Drähten andere Pegel einspeist.
Hallo Leute! Danke schon mal für eure Arbeit und Lösungsvorschläge. Ich habe das Problem jetzt gelöst. Siehe angehangene Datei. Dieser Code bringt mir ein Ergebnis mit dem ich arbeiten kann. Wenn es noch was gibt was ihr anders machen würdet, weil weniger Quelltext, dann her damit. Wenn mir jetzt noch jemand sagen kann warum die Bits in der Variable verdreht gespeichert werden? Beispiel die Ziffer 5, muss ich auf dem LCD mit: Stelle1.3, stelle.1.2, stelle1.1, stelle1.0 auf dem LCD ausgeben. Also von hinten. S. auch Quelltext. LG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.