LCD Daten auf anderm MC auswerten?

dg2ygq

Neues Mitglied
23. Juli 2007
239
0
0
Bielefeld
Sprachen
Ich habe eine fertige Schaltung (Frequenzzähler), an der ein LCD sitzt.
Nun möchte ich aber das Ergebnis "umrechnen" (die ZF von 10,7Mhz einbeziehen) und auf 7Segmentanzeigen (Mutiplex) ausgeben.
Ich kann aber den Code vom Frequenzzähler nicht beeinflussen.
Nun dachte ich mir, wenn ich statt dem LCD einen Mega8 an die Leitungen vom LCD anschließe, müßte ich doch die Daten im Mega8 verarbeiten können?

Aber wie bekomme ich Softwaremäßig die Daten lesbar ?
Anzeigen tut das Display zb "123.123.12 Mhz" also 10Hz Auflösung und die Buchstaben MHZ. Angeschlossen ist das Display über 4Datenleitungen.

Hat von Euch jemand eine Idee wie ich die Frequenz auslesen kann (Bascom wär mir am liebsten) ?
 
Hi,

prinzipiell sollte das möglich sein. Ist allerdings jetzt schwer, etwas dazu zu sagen, ohne zu wissen, um welches Display es sich handelt.

Wenn das nicht aus der Schaltung hervorgeht, vielleicht erkennst du es hier wieder :
http://www.avr-praxis.de/forum/showthread.php?t=488

Gruß
Pirx
 
Aber wie bekomme ich Softwaremäßig die Daten lesbar ?
Anzeigen tut das Display zb "123.123.12 Mhz" also 10Hz Auflösung und die Buchstaben MHZ. Angeschlossen ist das Display über 4Datenleitungen.
Das mit den 4 Datenleitungen hört sich nach I2C-Bus an.
+5V , GND , SCL , SDA ==> das sind 4 Leitungen.
Selbst bei 4Bit-Betrieb bräuchte man bei nem LCD mehr Leitungen.
Aber ohne Typ und Datenblatt des eingebauten LCDs kommt man da
nicht weiter.

Gruß
Dino
 
Morgähhn

Beim Display handelt es sich um ein typisches mit HDD44780 Controler (1 X 16)
Mit den 4 Datenleitung meinte ich 4Bit Übertragung, Natürlich sind die restlichen Leitungen auch benutzt.

Rein Theoretisch könnte man das Display ja auf "Ausgabe" (pin 5 R/W) umstellen ?!
Aber da das Display bei meinem Vorhaben unnötig wird, wär das ein blöder Weg *lach
 
Hallo dg2ygq,
ich fand deine Aufgabe interessant und habe mal eine Routine geschrieben, die die Daten ausgibt, die da so kommen. Allerdings habe ich ein anderes Display und weiss daher nicht, ob es bei dir so passt. Musst du halt noch ein wenig anpassen.

Dies ist mein Code, der die Daten generiert (also bei dir der Frequenzzähler):

Code:
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 64
$swstack = 64
$framesize = 64
Config Lcd = 16 * 1
Config Lcdpin = Pin , Db4 = Portd.1 , Db5 = Portd.5 , Db6 = Portd.3 , Db7 = Portd.4 , E = Portd.2 , Rs = Portd.6
Dim I As Byte , ___lcdno As Byte
Cursor Off
Cls
Do
   For I = 0 To 100
      Locate 1 , 1
      Lcd "123.456." ; I ; " MHz"
      Waitms 1000
   Next I
Loop
End

Und dies der Code, der ausliest:

Code:
$regfile = "m32def.dat"
$crystal = 8000000
$hwstack = 64
$swstack = 64
$framesize = 64
$baud = 57600
Config Int0 = Rising
Dim Arr_0 As Byte , Arr(201) As Byte , I As Byte , Flag As Byte , Lsbyte As Byte , Msbyte As Byte , Tpe As String * 1 , Both As Byte
On Int0 Int0_isr                                            'Nosave
Enable Int0
Enable Interrupts
Portd = 255
'Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.7   'so ist es angeschlossen
Do
   If Flag = 1 Then
      Disable Interrupts
      For I = 0 To 201
         If I.0 = 0 Then
            Msbyte = Arr(i)
            Tpe = "D"
            If Msbyte.7 = 0 Then Tpe = "C"
            Shift Msbyte , Left
            Msbyte = Msbyte And &B11110000
         Else
            Lsbyte = Arr(i)
            Shift Lsbyte , Right , 3
            Lsbyte = Lsbyte And &B00001111
            Both = Msbyte + Lsbyte
            Print Tpe ; " " ; Bin(both);
            If Tpe = "D" Then Print " " ; Chr(both);
            Print ""
         End If
      Next I
      Flag = 0
   End If
Loop
End

Int0_isr:
  Incr I
  If I = 201 Then
     Flag = 1
  Else
     Arr(i) = Pind
  End If
Return

Prinzip ist so:
Mit der steigenden Flanke der E(nable) Leitung werden die Daten und Befehle ins Display übernommen. Damit darauf sofort reagiert wird, habe ich E an INT0 angeschlossen. In der ISR wird nur der Wert in einem Array abgespeichert. Wenn 200 Werte eingegangen sind, ist die Aufzeichnung beendet und die Ausgabe beginnt. In der Ausgabe habe ich schon MSB und LSB zusammengefasst.
Schau mal, ob bei dir da was kommt. Bei mir sieht die Ausgabe dann so aus:

Code:
C	00000001	Initialisierung des Displays
C	00110011	
C	00110010	
C	00101000	
C	00001110	
C	00000110	
C	00001100	
C	00000001	
C	10000000	
C	10000000	'Ausgabe Position
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110110	6
D	00101110	.
D	00110000	0
D	00100000	 
D	01001101	M
D	01001000	H
D	01111010	z
C	10000000	'Ausgabe Position
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110110	6
D	00101110	.
D	00110001	1
D	00100000	 
D	01001101	M
D	01001000	H
D	01111010	z
C	10000000	'Ausgabe Position
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110110	6
D	00101110	.
D	00110010	2
D	00100000	 
D	01001101	M
D	01001000	H
D	01111010	z
C	10000000	
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110110	6
D	00101110	.
D	00110011	3
D	00100000	 
D	01001101	M
D	01001000	H
D	01111010	z
C	10000000	
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110110	6
D	00101110	.
D	00110100	4
D	00100000	 
D	01001101	M
D	01001000	H
D	01111010	z
C	10000000	
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110110	6
D	00101110	.
D	00110101	5
D	00100000	 
D	01001101	M
D	01001000	H
D	01111010	z
C	10000000	
D	00110001	1
D	00110010	2
D	00110011	3
D	00101110	.
D	00110100	4
D	00110101	5
D	00110000	0

Schau mal, ob es dir hilft.

HBA
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)