PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dezimal in Hex oder Bin?



CapSob
29.07.2004, 19:10
Bin gerade dabei (Mein LCD tut ja jetzt...!) eine Funkuhr aufzubauen.

Jetzt ist bloß mein Prob, dass die Uhr-Variablen (minute,second,...) Dezimal sind. Jetzt müsste ich irgendwie die Dezimalzahlen in Hex oder Bin wandeln, wie mache ich das Programmtechnisch?

LLiinnuuxx
29.07.2004, 22:27
Womit programmierst du??

Wenn ich das noch wüsste!!
Moment bin müsste gehen,( eine Moment);

LLiinnuuxx
29.07.2004, 22:29
Must du mal googlen!!!!

Ich finde es nicht mehr auf meiner Festplatte!
Hatte es aber auch bei Google gefunden!!!

:cry:

CapSob
29.07.2004, 22:47
ich programmier mit der basic software.

mein problem ist ist halt auch, dass wenn ich 15dec habe, es in 00000001bin und 00000101bin umwandeln muss, da ich nur ascii-zeichen auf mein lcd schicken kann. vielleicht hat jemand auch eine bessere idee?!?

recycle
30.07.2004, 03:41
Guck mal in der Bascom-Hilfe unter: HEXVAL , VAL , STR , BIN

CapSob
30.07.2004, 07:12
nix gegen dich... aber ich habe eine ccontrol... wie man aus der kategorie raus lesen kann..

naja. wird eh nix. die ccontrol ist dafür zu lahm.. auf jedenfall, wenn man es mi 51 IF-Abfragen machen möchte... [-X

projekt beendet. thx @ all!

BirdOfDestiny
30.07.2004, 12:29
ist doch im prinzip agnz einfach. mit c zum beispiel...

wenn du 15 % 10 rechnest bekommst du 5 raus.
und wenn du 15 / 10 rechnest hast du bei ganzen zahlen 1 raus.

musst du es überhaupt umwandeln. er gibt es doch sowieso als binraus oder etwa nciht?

Gruß BoD

/edit: ups. hatte übersehen, dass es mit basic implementiert wird...

Matthias
30.07.2004, 12:41
define a 97
define b 98
define c 99
define d 100
define e 101
define f 102
define g 103
define h 104
define i 105
define j 106
define k 107
define l 108
define m 109
define n 110
define o 111
define p 112
define q 113
define r 114
define s 115
define t 116
define u 117
define v 118
define w 119
define x 120
define y 121
define z 122
define lcd byteport[2]
define rw port[13]
define rs port[14]
define enable port[15]
define buffer byte
define parameter byte

define zahl word
define ziffer byte

gosub initialisierung
pause 10

#sync
if year<97 then beep 150,50,0 else goto sync
beep 150,25,25

#loop
gosub lcd_out
goto loop

#lcd_out
parameter=1
gosub whichline
parameter=e-32
gosub writeletter
parameter=s
gosub writeletter
parameter=32
gosub writeletter
parameter=i
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=32
gosub writeletter
zahl=hour
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
parameter=58
gosub writeletter
zahl=minute
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
parameter=58
gosub writeletter
zahl=second
ziffer=zahl/10
parameter=ziffer+48
gosub writeletter
zahl=zahl-ziffer*10
ziffer=zahl
parameter=ziffer+48
gosub writeletter
return


#initialisierung
lcd=off
parameter=&h38:gosub command
lcd=&b00000010
tog enable
tog enable
parameter=&h28:gosub command
parameter=&h0c:gosub command

#clear
parameter=&h02:gosub command
parameter=&h02:gosub command
return

#whichline
if parameter=1 then parameter=&h80
if parameter=2 then parameter=&hc0
goto command

#command
buffer=off
goto write_

#writeletter
buffer=&b00100000

#write_
lcd=buffer or (parameter shr 4)
tog enable
tog enable
lcd=buffer or (parameter and &h0f)
tog enable
tog enable
return

Matthias
30.07.2004, 12:47
Das Teil sagt sogar bescheid, wenn's synchronisiert hat. Wenn du kein DCF-Modul hast, muss du folgendes Löschen:

#sync
if year<97 then beep 150,50,0 else goto sync
beep 150,25,25

Ausserdem kannst du auch:

parameter=e-32
gosub writeletter
parameter=s
gosub writeletter
parameter=32
gosub writeletter
parameter=i
gosub writeletter
parameter=s
gosub writeletter
parameter=t
gosub writeletter
parameter=32
gosub writeletter

wenn du nicht möchtest, dass da "Es ist xx:xx:xx" steht.

Vorhin hab ich ne version mit Datum und meinem Geburtstag Gepostet, die ich aber wegedititert hab, weil sie für 2x40er LCDs war.

CapSob
30.07.2004, 21:30
Danke!

Mit dem Syntax kann ich nun endlich meine Funkuhr betreiben! Mein jetziges Problem ist halt noch, dass ich bei meinem 16x1 Display bloß die linke Hälfte angezeigt bekomme. Die rechte fällt leider weg... Naja, morgen müsste mein 16x2 LCD von Reichelt kommen... Sonst hätte ich ja noch mein 40x4 =P~ .

Weiß trotzdem jemand, wie ich die rechte Hälfte bei meinem 16x1 "aktiviere"?

thx 4 @.

cu Cap.

Matthias
30.07.2004, 22:35
Hast du das irgendwo ausgebaut? Dann könnte es sein, dass man nur die linke Hälfte angespricht kriegt...

Hast du einfach so viel Reingeschriben wie Möglich oder wie hast du's herausgefunden.

Ich hab nur nen 2x40 :-(

Michael
30.07.2004, 23:05
Hallo CapSob,
16x1 Displays sind meistens 8x2. Du musst dann in der 2. Zeile weiterschreiben.
Gruss, Michael

CapSob
30.07.2004, 23:24
das lcd hab ich aus nem alten embedded printserver ausgebaut.

das mit dem 8x2 muss ich mal testen... gn8 @ all!

cu Cap.

Matthias
31.07.2004, 18:39
Wenn man aus der Ersten Zeile rausschreibt, kommt man in die2 (ganz automatisch).

warscheinlich ist auf der Rchten Hälfte keine Matrix drauf, weil sie nicht benötigt wurde.

CapSob
31.07.2004, 20:33
So.

Der Code von Matze tut ja wie gesagt.
Es muss eine rechte matrix geben, wei durch irgend einen dummen zufall hat das lcd mal auf die ganze breite sonderzeichen ausgegeben. die idee mit dem 8x2 werde ich jetzt mal testen.

cu Cap.