www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 7-segement anzeige


Autor: noob (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe ein problem ich hab eine 7-Segement anzeige. Ich habe sie 
aus einen analog reciver ausgebaut und würde sie gerne am pc betreiben 
aber ich bin noch ein noob und habe nich so viel erfahrung in elektronik


schonmal Dank wür die Antworten

MFG noob

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und der 7-segement triber ist MC14499P

Datenblatt: 
http://www.datasheetcatalog.org/datasheet/motorola...

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> und der 7-segement triber ist MC14499P

Perfekt, da musst du dich um nichts kümmern.

Du musst die Anzeige nur an den PC anschliessen,
Masse und 5V (von einem Floppy-Stromkabel oder so)
verbinden,
und CLK und DATA und ENABLE auf der Platine finden
und z.B. an D0, D1, D2 von einem Parallelport legen.

(auf der Platine ist noch mehr drauf, z.B. ein
Infrarotempfänger, den du nicht benutzt).

Dann kannst du ein Programm schreiben, welches die
Datenbits D0, D1, D2 des Parallelports so bedient,
wie es auf Seite 3 im Datenblatt steht (alle 16 bit
nacheinander), und du siehst deine Anzeige.

Keine zusätzliche Hardware, kein zeitkritisches
Programm.

Es ist eine ziemlich ideale Platinen für den
Verwendungszweck.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> und würde sie gerne am pc betreiben

LOL?! Was willste denn damit machen?

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein paar zahlen ausgeben oder ne uhr

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ MaWin

Danke


kann mir jemand mir helfen ein program dafür zu schreiben ich kann 
einbischen
in visual basic programieren aber nicht viel

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> aber ich bin noch ein noob und habe nich so viel erfahrung in elektronik

Dann wirst Du sie erstmal für einige Monate beiseite legen müssen.

Du brauchst nämlich Grundlangen in HW und SW.


Peter

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich muss jetzt nur noch ein programm schreiben für die 7-segement 
anzeige

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann den keiner helfen ?

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> kann den keiner helfen ?

Ja wobei denn? Du fragst, ob dir einer bei nem Programm helfen 
kann...aber mach doch erstmal einen Ansatz.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Visual Basic kann nicht direkt auf die Anschlüsse von parallelen LPT 
Druckerports zugreifen.
Du brauchst Hilfe bei deiner Spielzeugsprache.

http://www.aaroncake.net/electronics/vblpt.htm
http://www.codeproject.com/KB/vb/PortAccess.aspx

Lesen musst du schon selber.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das programm sol so aussehen das da Buttons sint und wen ich da 
raufklich soll dan die zahl erscheinen und ich habe keine ahnung wie das 
geht -.-'

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und welchen Sinn macht das?

Autor: olibert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> das programm sol so aussehen das da Buttons sint und wen ich da
> raufklich soll dan die zahl erscheinen und ich habe keine ahnung wie das
> geht -.-'


Keine Lust sich einzulesen, hoffnungsloser Fall oder Troll

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keine ahnung

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich kann nicht so gut englisch

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und nicht so gut visual basic

Autor: Max D. (Firma: No RISC, no fun.) (metalfan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und da steht ich muss eine dll runter laden geht aber nicht

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe doch schon gesagt ich habe nicht viel ahnung in visual basic

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls Du ernsthaft interessiert bist, hier eine Schritt für Schritt 
Anleitung:
http://www.activevb.de/tutorials/tut_parallel/parallel.html
Erst mal eine LED am Druckerport zum leuchten bringen. Dann gehts 
(vielleicht) weiter ;)

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe schon eine led zum leuchten gebracht mit FREEBASIC

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch schon mal was! Zeig mal das Programm.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LED AUS :


DIM lpt(1 to 8) AS INTEGER, i AS INTEGER, lptbyte AS INTEGER

lpt(1) = 0
lpt(2) = 0
lpt(3) = 0
lpt(4) = 1 'Anschalten
lpt(5) = 0
lpt(6) = 0
lpt(7) = 0
lpt(8) = 1 'Anschalten

lptbyte = 0

FOR i = 1 to 8
  lptbyte = lptbyte + (2 ^ (i - 1)) * lpt(i)
NEXT i

OUT 888, lptbyte 'LPT schalten


LED AN


DIM lpt(1 to 8) AS INTEGER, i AS INTEGER, lptbyte AS INTEGER

lpt(1) = 0
lpt(2) = 0
lpt(3) = 0
lpt(4) = 1 'Anschalten
lpt(5) = 0
lpt(6) = 0
lpt(7) = 0
lpt(8) = 1 'Anschalten

lptbyte = 1

FOR i = 1 to 8
  lptbyte = lptbyte + (2 ^ (i - 1)) * lpt(i)
NEXT i

OUT 888, lptbyte 'LPT schalten

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut.
Dann musst Du jetzt nur nacheinander die Bytes mit:
 OUT 888,
an den Port ausgeben.
Zuerst solltest Du eien Zuordnung der Portausgänge zu den 3 Daten Pins 
des IC festlegen und dann eine Tabelle der zu sendenden Bytes erstellen.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dder code ist von mosfetkiller

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an data, clk oder enb senden ?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An alle!
Z.B.:
Ausgang0 an ENB
Ausgang1 an CLK
Ausgang2 an DATA

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das waren jetzt erst einmal die Verbindungen. Stromversorgung und 
Masseverbindung zum Druckerport nicht vergessen.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
an welchem muss ich den die codes senden z.b für 0000 = 0

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe es geschaft eine led mit visual basic zum leuchten zu bringen

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiß immer noch nicht an welchem ich was senden muss

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun mal nicht so hektisch...

Im Datenblatt des IC auf Seite 4 wirds erklärt.
Wenn Du die 3 Pins des IC so wie in meinem Vorschlag angeschlossen hast, 
sieh dir das Diagramm auf der Seite an:

DATA  CLK  ENB
 X     1    1         OUT 888,3       IC nicht angewählt
 D1    1    0         OUT 888,2(+4)   IC aktiv, D1=0 oder 1
 D1    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt 
Datenbit
 D2    1    0         OUT 888,2(+4)   CLK auf high
 D2    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt 
Datenbit
usw. bis D16 dann
 D16   1    1         OUT 888,3        IC nicht angewählt

Du musst die Bytes in ein Array packen und in einer Schleife ausgeben.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kannst du mir vieleicht ein beispiel schreiben   z.b das er die 1 
anzeigt plz?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann schon, will aber das Du es versteht/machst.
Mach dir die Zuordnung der Stellen zu den Datenbits D1..D16 klar. Dann 
geht es ganz von allein....

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke du gehst von falschen Vorstellungen aus.
Du musst gar nichts an den IC schicken, in dem Sinne, dass du deine 
gewünschte Anzeige einfach an den Parallelport gibst und die Anzeige 
machst das dann.

Der Parallelport ist für dich einfach nur eine Möglichkeit, wie du ein 
paar Leitungen nach draussen bekommst, die du gezielt auf 0 oder 1 
setzen kannst. Das ist alles. Mehr hast du nicht zur Verfügung.

Jetzt kommt das Datenblatt ins Spiel. Das verrät dir, das der IC mit 3 
Leitungen angesprochen wird. Und es verrät dir auch in welcher 
Reihenfolge welche Leitung auf 0 oder 1 gehen muss. Oder um bei dem zu 
bleiben was du schon kennst: Wenn an den Leitungen jeweils 1 LED wäre, 
in welcher Reihenfolge welche LED aufleuchten und wieder verlöschen 
muss.

KUrz gesagt: die ENB Leitung schaltet 'den IC als ganzes ein'. Solange 
die ENB Leitung auf 1 ist, kümmert sich der IC nicht darum, was auf den 
anderen beiden Leitungen passiert. Damit der IC darauf hört, muss ENB 
auf 0.

Und die anderen beiden Leitungen sind einfach:
An DATA legst du 1 Bit an, entweder 0 oder 1, je nachdem
Damit dieses 1 Bit in den IC übernommen wird, muss man an der CLK 
Leitung einen Puls erzeugen. Die Leitung muss also wechseln von 0 auf 1 
und wieder zurück auf 0. Mit dem letzten Teil 'zurück auf 0' wird dann 
das an der DATA Leitung anliegende Bit in den IC übernommen.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kapiere es nicht :(

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok ich klaube ich kapiere es lagsam

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein kopf raucht

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das macht nichts. Das gehört dazu.
Auch Rom ist nicht an einem Tag erbaut worden.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:(

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kann mir einer ein gazen code schreiben weil ich es nicht kapiere weil 
ich ein noob bin

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du frustriert und müde bist, dann mach eine Pause.
Du packst das schon. Nur Mut.

Die Programmierstunde kostet Dich hier wahrscheinlich so um die 60 Euro.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Womit ich nicht unbedingt sagen will, das man eine Stunde braucht. Aber 
ich persönlich würde wenigstens eine Stunde abrechnen.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich kapiere es nicht!

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier, genau an dieser Stelle, entscheidet sich, ob das Dein Hobby (oder 
Dein Beruf) wird (oder welche Note Du bekommst). Die meisten von uns 
haben sich mühsam durch Buecher, Datenblätter und fremde (ganz abgesehen 
von den eigenen ;-) ) Programme gekämpft und lernen immer noch dazu.
Diesen Kampfgeist musst Du auch Dir  angewöhnen.

Wir helfen Dir gerne kostenlos, zu lernen und zu verstehen, aber umsonst 
arbeiten tun wir nicht.

Aus dem Code von Karl-Heinz und der Erklärung von HP-Freund kannst Du, 
mit ein wenig Mühe, was funktionierendes machen. Auf Deinem Niveau ist 
das schon ein beachtlicher Erfolg. Also, ran an den Speck.

Wenn Du was nicht verstehst, dann beschreibe genau, was Du gelesen hast, 
was Du davon verstehst und was nicht. Mit "ich verstehe es nicht" können 
wir nichts anfangen um Dir weiter zu helfen.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DATA  CLK  ENB
 X     1    1         OUT 888,3       IC nicht angewählt
 D1    1    0         OUT 888,2(+4)   IC aktiv, D1=0 oder 1
 D1    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt
Datenbit
 D2    1    0         OUT 888,2(+4)   CLK auf high
 D2    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt
Datenbit
D3     1     0
D3     0     0
usw. bis D16 dann
 D16   1    1         OUT 888,3        IC nicht angewählt
so?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> DATA  CLK  ENB
>  X     1    1         OUT 888,3       IC nicht angewählt
>  D1    1    0         OUT 888,2(+4)   IC aktiv, D1=0 oder 1
>  D1    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt
> Datenbit
>  D2    1    0         OUT 888,2(+4)   CLK auf high
>  D2    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt
> Datenbit
> D3     1     0
> D3     0     0
> usw. bis D16 dann
>  D16   1    1         OUT 888,3        IC nicht angewählt
> so?

abschreiben kann jeder :-)

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe d3 hinzu gefügt ist databit d3 richtig ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> ich habe d3 hinzu gefügt ist databit d3 richtig ?

Ja, klar. Du musst in Summe 16 Bits ausgeben! (eigentlich 20, wenn wir 
die Position des Dezimalpunktes auch noch mit dazu nehmen).

Das Datenbit wir an die DATA Leitung angelegt und dann macht CLK zuerst 
auf 1 und dann wieder auf 0.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
immer so weiter z.b 1  0
                    0  0 ?

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Richtig. Die Bits werden durchgezählt.

Wenn Du plus 4 addierst, wird das Datenbit 1, wenn Du es nicht tust, 
dann wird es 0.

So wird es Null.
>  DX    1    0         OUT 888,2   CLK auf high
>  DX    0    0         OUT 888,0   fallende CLK Flanke übernimmt

So wird es Eins.

>  D2    1    0         OUT 888,2+4   CLK auf high
>  D2    0    0         OUT 888,0+4   fallende CLK Flanke übernimmt

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber vielleicht solltest du erst mal wieder deine LED an den 
Parallelport höngen und noch ein bischen weiter damit experimentieren. 
Im Idealfall hast du 3 LED am Port hängen und du kannst in BASIC so 
programmierern, dass du jede einzelne LED unabhängig von den anderen ein 
und wieder ausschalten kannst. Egal welchen Zustand LED1 und LED2 haben 
musst du LED3 ein und auch wieder ausschalten können. Selbiges natürlich 
auch für die anderen beiden LED.

Das erscheint mir als Vorstufe eine vernünftige Übung für dich zu sein. 
Denn Hand aufs Herz. Was mit

  OUT 888, 2(+4)

gemacht wird ... ich glaub nicht das du das verstanden hast.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiß was mit out 888 2 (+ 4 )gemacht wird
in visual basic muss ich das so schreiben out 888 (2+4)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum die 3 LED?
Weil du 3 Leitungen von dieser Platine bedinen musst.
Wenn du die LED da drann hast (und auch schon ein wenig Übung im 
Ansteurn dieser LED), kannst du ja auch mal die Zusatzplatine mit ihren 
3 Leitungen mit dazu anhängen (und die LED drann lassen). Das müsste 
eigentlich funktionieren. Der Vorteil: Deine LED zeigen dir dann an, was 
dein Programm macht und du kannst (überhaupt wenn dein Programm die 
Leitungen gaanz langsam bedient) an, welche Leitung wann was macht.

Und das ist allemal besser, als wenn man im Dunkeln stochert und nicht 
weiß, warum die externe Schaltung nicht reagiert.


Ich hätte dir ja gerne vorgeschlagen, mit dem Modul ohne steuernden 
Computer zu spielen. Modul an die Versorgung anschliessen und dann die 
Steuerleitungen einfach mal an + bzw. - halten, wie es laut Datenblatt 
erfoderlich ist. Aber das scheiter daran, dass man so das 
unvermeindliche Prellen nicht los wird und so keine sauberen Pulse 
erzeugen kann.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiß immer noch nicht wie das program weiter geht :(


DATA  CLK  ENB
 X     1    1         OUT 888,3       IC nicht angewählt
 D1    1    0         OUT 888,2(+4)   IC aktiv, D1=0 oder 1
 D1    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt
Datenbit
 D2    1    0         OUT 888,2(+4)   CLK auf high
 D2    0    0         OUT 888,0(+4)   fallende CLK Flanke übernimmt
Datenbit
usw. bis D16 dann
 D16   1    1         OUT 888,3        IC nicht angewählt

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> ich weiß immer noch nicht wie das program weiter geht :(


Das was du da hast, ist erst mal gar kein Programm.
Da ist links die Spalte, in der aufgeschlüsselt ist, welche Leitung wann 
auf 0 bzw. 1 bzw. uninteressant (X) gehen soll, bzw das gewünschte 
Datenbit annehmen muss.

Die mittlere Spalte ist der Programmtext, der am Parallelport die in der 
ersten Spalte aufgeschlüsselten Bits tatsächlich herstellt  und die 
rechte Spalte ist die Kommentierung was da passiert


Du solltest allen Ernstes mit was einfacherem anfangen, so hat das wenig 
Sinn, wenn du uns diese "Skizze" als "das Programm" verkaufen willst.

Autor: Armin S. (nimra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Was soll die Anzeige denn anzeigen?
Hat dein PC noch einen Parallel Port?
Hast du schon Programmiererfahrungen?

NIMRA

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mein pc hat einen parallelport
ist es so richtig

 Out(888, 3)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 3)

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich das mache kommt ...7 und wenn ich noch mal mach ....

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> mein pc hat einen parallelport
> ist es so richtig

Gehs in einzelnen Schritten durch.

Welche Leitung nimmt welchen Zustand an? (Wie hast du die Leitungen 
eigentlich angeschlossen?)

Nahmen wir mal an
  Enable  ENB ist am Parallelport an Pin D0
  Daten                           an Pin D1
  und CLK                         an Pin D2


dort seien jetzt auch noch Leds drann. In der folgenden Aufstellung sei 
# eine LED die leuchtet (der Ausgang ist auf 1), bzw sei o eine LED die 
nicht leuchtet (der Ausgang ist auf 0)

                                    D2      D1      D0
                                   (CLK)   (DATA)  (ENB)
>
>  Out(888, 3)
3 ist binär 00000011, also           o       #       #

laut unserer Zuordnung von D2, D1 und D0 zu den Leitungen heisst das:
Enable ist auf 1, Daten auf 0, CLK auf 0.
Da Enable auf 1 ist, interessiert sich der IC für die anderen Leitungen 
nicht

>         Out(888, 2 + 4)

2+4 = 6, binär 00000110              #       #        0

Enable hat offenbar auf 0 gewechselt, d.h. der IC horcht auf die 
Leitungen. Aber auch CLK ist auf 1 gegangen. Aus dem Datenblatt wissen 
wir: Das darf er, der IC reagiert erst, wenn CLK wieder auf 0 geht

>         Out(888, 0 + 4)

0+4 = 4,  binär 00000100             o       #        o


Holla, genau das hat CLK jetzt gemacht: Von 1 auf 0 zu wechseln. D.h. 
der IC hat das was an DATA ansteht (nämlich eine 1) übernommen.

Von den 20 SChiegeregisterbits im IC

     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     | 1 | X | X | X | X | X | X | X | X | X | X | X | X | X | ...
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+

hat das erste einen definierten Wert zugewiesen bekommen. VOn den 
anderen wissen wir nichts, daher hab ich ein X reingemalt

>         Out(888, 2 + 4)

2+4 = 6,  binär 00000110            #        #        o

gegenüber vorher ist CLK wieder auf 1 gegangen. Aus dem Datenblatt: das 
ist dem IC egal, da passiert nichts

>         Out(888, 0 + 4)

4,  binär 00000100                  o         #       o

wieder ist an CLK eine fallende Flanke aufgetreten, ein Übergang 1->0
Und wieder bedeutet er für das IC, dass es den an DATA anliegenden 
Zustand (eine 1) in das Schieberegister übernehmen soll.
Die 20 BIts im IC werden um 1 Stelle nach rechts geschoben, und die 1 
aus dem DATA Eingang kommt ganz links rein

Damit haben wir
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     | 1 | 1 | X | X | X | X | X | X | X | X | X | X | X | X | ...
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+

und so gehts weiter und weiter, bis alle 20 Bits im Schieberegister 
gelandet sind.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> wenn ich das mache kommt ...7 und wenn ich noch mal mach ....

Das Problem ist, dass du zwar ein 'Programm geschrieben hast' aber nicht 
weißt
* wie es funktioniert.
* was eigentlich an den 7-Seg rauskommen müsste.


Mein Rat steht immer noch:
Sieh zu, dass du

* dein Programm extrem langsam ablaufen lassen kannst
  Am besten wäre es, wenn du in Einzelschritten druchgehen kannst
  so dass du von einem OUT zum nächsten genau untersuchen kannst,
  was sich am Port tut und auch überlegen kannst, was das jetzt
  für das IC bedeutet.

* ein paar LED zusätzlich an den Ausgang bekommst, die dir anzeigen
  wie die betreffende Ausgangsleitung steht: leuchten für 1, nicht
  leuchten für 0

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok aber wo her wei? ich welche bits ich machen soll

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> ok aber wo her wei? ich welche bits ich machen soll

Du weisst ja, was du ausgeben willst.

Im Datenblatt ist eine Tabelle

   0000   0
   0001   1
   0010   2
   0011   3
   ....


d.h. mit jeweils 4 Bit steuert man eine Anzeige an

Wenn die erste Stelle links eine 3 anzeigen soll,

   0011   3

dann muss ins Schieberegister

     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     | 0 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | ...
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+

     | 4 Bits für    | 4 Bits für    |  4 Bits für   |  4 Bits ...
     | die 1.te 7Seg | die 2.te 7Seg | die 3.te 7Seg |  die 4.te ..


die 4 Bits, die für diese Stelle zuständig sind, sind auf 0011, genau 
wie es die Tabelle vorschreibt. (und praktischerweise ist das dann auch 
die interne Darstellung einer 3 im PC)


Steht alles im Datenblatt. Zum Teil auch mit Zeichnungen, damit es die 
des Englischen nicht mächtigen Japaner auch begreifen.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und die anderen stellen sind für die anderenn segemente ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> und die anderen stellen sind für die anderenn segemente ?

Spätestens jetzt ist es hoch an der Zeit wieder einen Blick ins 
Datenblatt zu werfen.
Da sind Zeichnungen und Tabellen drinn, für diejenigen die nur Japanisch 
oder Kisuaheli lesen können. Nur mit den Zeichnungen/Tabellen alleine 
kann man verstehen (wenn man ein wenig darüber nachdenkt) wie das 
funktioniert.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe es geschaff eine drei zumachen
        Out(888, 3)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alter Schwede...............................

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> ich habe es geschaff eine drei zumachen

Möglich.

>         Out(888, 3)
>         Out(888, 2 + 4)
>         Out(888, 0 + 4)
>         Out(888, 2 + 4)
>         Out(888, 0 + 4)

Aber sicher nicht mit dem hier angegebenen Programm. Bzw. Wenn diese 5 
Zeilen zu einer 3 an den 7-Seg führen, dann höchstens zufällig. Vor 
allen Dingen deshalb weil

* du nur 2 Bits ausgibst
* die eigentliche 7-Segment Anzeige erst dann auf die neue Bitsituation
  im Schieberegister reagiert, wenn Enable wieder auf 1 gezogen wird.
  Und auch davon ist in dem 5-Zeiler nichts zu sehen

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das solte ne 1 sein ist aber ne sieben ...
    Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 3)
        Out(888, 2 + 4)
        Out(888, 0 + 4)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> das solte ne 1 sein ist aber ne sieben ...
     Out(888, 2 + 4)            // 1. Bit ausgeben
         Out(888, 0 + 4)
         Out(888, 2 + 4)        // 2. Bit ausgeben
         Out(888, 0 + 4)
         Out(888, 2 + 4)        // 3. Bit ausgeben
         Out(888, 0 + 4)
         Out(888, 3)            // zur Anzeige duchschalten
         Out(888, 2 + 4)
         Out(888, 0 + 4)

4 Bits!
Du brauchst 4 Bits für eine Stelle! Nicht 3

> ne 1 sein

Für eine 1 musst du die Bits  0001  an das IC übergeben. Wo genau machst 
du das? Du schiebst 3 mal ein 1-Bit raus!

bei 0001

ist die Reihenfolge   ein 1 Bit rausgeben. Dazu muss DATA auf 1 sein!
                      ein 0 Bit rausgeben. Dazu muss DATA auf 0 sein!
                      ein 0 Bit rausgeben. Dazu muss DATA auf 0 sein!
                      ein 0 Bit rausgeben. Dazu muss DATA auf 0 sein!


Diese beiden Anweisungen zusammen
         Out(888, 2 + 4)
         Out(888, 0 + 4)
schieben ein 1 Bit in das Schieberegister.
Diese beiden Anweisungen zusammen
         Out(888, 2 + 0)
         Out(888, 0 + 0)
schieben eine 0 in das Schieberegister.

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist das 11   Out(888, 3)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 0)
        Out(888, 0 + 0)
        Out(888, 2 + 0)
        Out(888, 0 + 0)

        Out(888, 3)

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist das so richtig
 Out(888, 3)
        Out(888, 2 + 0)
        Out(888, 0 + 0)
        Out(888, 2 + 0)
        Out(888, 0 + 0)
        Out(888, 2 + 4)
        Out(888, 0 + 4)
        Out(888, 2 + 0)
        Out(888, 0 + 0)
        Out(888, 3)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Diese beiden Anweisungen zusammen
         Out(888, 2 + 4)
         Out(888, 0 + 4)
schieben ein 1 Bit in das Schieberegister.

Diese beiden Anweisungen zusammen
         Out(888, 2 + 0)
         Out(888, 0 + 0)
schieben eine 0 in das Schieberegister.

Noch einfacher kann ich es dir jetzt wirklich nicht mehr machen. Jetzt 
mutiert das alles zu 'Malen nach Zahlen'. Du brauchst nur noch 
Codebausteine zusammenzusetzen

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiß aber ist das das oben richtig ?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> ist das so richtig
mal sehen

>  Out(888, 3)
>         Out(888, 2 + 0)      eine 0
>         Out(888, 0 + 0)
>         Out(888, 2 + 0)      noch eine 0
>         Out(888, 0 + 0)
>         Out(888, 2 + 4)      eine 1
>         Out(888, 0 + 4)
>         Out(888, 2 + 0)      und eine 0
>         Out(888, 0 + 0)
>         Out(888, 3)


wenn ich die in der Reihenfolge in der sie eingeschoben werde aufmale

zuerst die 0                       0
dann eine 0 nachegschoben          00
dann kommt eine 1                  100
dann wieder eine 0                 0100

das ist dann wohl nicht ganz 11 :-)

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das war die 2

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> das war die 2

Ja.
Das stimmt auch mit der Figure 1 aus dem Datenblatt überein, nach der 
das LSB bei den jeweiligen 4 Bits links steht.
Ist mir bisher entgangen. Aber eigentlich bist ja du der Datenblattleser


 Also

 Im Schieberegister muss

     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+
     | 1 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | ...
     +---+---+---+---+---+---+---+---+---+---+---+---+---+---+

eingeschoben werden, damit das als

   0011 (oder '3') angesehen wird.

Die rechte Stelle der 4-er Gruppe wird als letztes eingeschoben.

Deine Sequenz schiebt

    0010

ins Schieberegister und das ist laut Tabelle tatsächlich eine 2

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DANKE AN ALLE ICH HABE ES KAPIERT !!!!!

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hehe freut mich - war ja ne schwere Geburt =)
Viel Spaß :-D

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lehrmann Michael schrieb:
> Hehe freut mich - war ja ne schwere Geburt =)

Warten wirs ab :-)

Geht ja noch weiter.
Ich kann die nächste Frage schon förmlich riechen :-)


 als Beispiel:  32

    32 / 10        -> 3
                      |
           +----------+
           v
    32 - ( 3*10 )  -> 2            ==>  2 ausgeben, 3 ausgeben

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lehrmann Michael schrieb:
> war ja ne schwere Geburt

ich wuste das das jemand sagt

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die segement anzeige gint beim booten zahlen 2000,3000,4000 und beim 
anmelde biltschirm 72

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> die segement anzeige gint beim booten zahlen 2000,3000,4000 und beim
> anmelde biltschirm 72


Was ist los?!

Autor: noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nix nur das meine segement anzeige beim pc start zahlen aus gibt und ich 
wollt wissen warum

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noob schrieb:
> nix nur das meine segement anzeige beim pc start zahlen aus gibt und ich
> wollt wissen warum

Warum fragst du das dann nicht gleich so?

Die Antwort:
Weil sich da wohl der BIOS Hersteller eine Debug Möglichkeit eingebaut 
hat, wie er den Service Technikern ein Instrument in die Hand geben 
kann, damit die beim Booten verfolgen können, welche Teile noch 
durchlaufen, welche nicht, und welche fehlerhaft arbeiten.

Und das ganze indem man ein Gerät an den LPT ansteckt auf dem diese 
Codes erscheinen.

Also wohl eine Variante hiervon
http://www.pchell.com/hardware/beepcodes.shtml

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist normal, einfach ignorieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.