PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Taster 1 auswählen und Taster 2 bestäti. " Menü aus



Luppi
06.04.2006, 00:00
Hallo

Hab heute ein 20*4 mit KS0076 Controller LCD zum laufen gebracht.

ich wollt mir nen Menü Basteln bei dem ich mit Taster 1 auswähle und mit taster 2 Bestätige.

Soweit bin ich gekommen.


'************************************************* *****
'Projekt: Auswahl Menü
'
'Prozessor: ATMega 8
'
'
'Hardware:
'LCD-Display an Port B 20*4 LCD Controller KS0076

'
'05.04.06 Thorsten
'
'************************************************* *****

'================================================= =====
'System-Einstellungen
'================================================= =====
'Definition für Mega 8
$regfile "m8def.dat"

'Angabe der Taktfrequenz (1Mhz)
$crystal = 1000000

'Pin Config
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0

'================================================= =====
'Konfigurationen
'================================================= =====
'Angabe der Display-Größe
Config Lcd = 20 * 4
Dim A As Byte

'================================================= =====
'Konfigurationen Eingang
'================================================= =====
Config Portd.0 = Input 'Taster 1
Config Portd.1 = Input 'Taster 2
Config Portd.7 = Output 'Led 8 an Port D
Config Portd.6 = Output 'Led 7 an Port D

'================================================= =====
'Initialisierungen
'================================================= =====
Portd.0 = 1
Portd.1 = 1
Portd.6 = 1
Portd.7 = 1

'================================================= =====
'Hauptprogramm
'================================================= =====
'Den Cursor ausschalten
Cursor Off

'Text der ersten Zeile
If Pind.0 = 0 Then
Waitms 250
Cls
Locate 1 , 1
Lcd "Led 7"
'Text der zweiten Zeile
Locate 2 , 1
Lcd "Led 8"
Wait 1

Else
Cls
Cursor Off
Locate 1 , 1
Lcd "Led 7"
'Text der zweiten Zeile
Locate 2 , 1
Lcd "Led 8"
'Text der vierten Zeile
Locate 4 , 1
Lcd "Auswahl treffen"
Wait 1

End If

End


Wenn ich es so lasse tut sich gar nichts wenn ich den schalter umlege. Schreib ich den Code mit " DO" vor If und "LOOP" nach End if funktioniert es zwar aber mein Display flaker im Sekundentakt.

Dann komme ich immer noch nicht weiter mit den 2 Tastern. Ich wollte es so haben das ich mit Taster 1 zwischen Led 7 und Led 8 auswählen kann ( vielleicht so das sich durch die auswahl der Text der Led inventiert)und mit Taster 2 dann die Auswahl bestätige und die jeweilige Led leuchtet. Ich komm da aber absolut nicht weiter.

Kann da einer helfen.?

enterprise30
06.04.2006, 23:58
Also ich würd so vorgehen daß Du erstmal eine Led aus und einschalten kannst.
Und erst wenn das funktioniert baust Du die nächste Funktion in Dein Programm ein.
Mit anderen Worten: Nicht alle Funktionen auf einmal proggen sondern Schritt für Schritt einbauen.

Ohne Do und Loop wird Dein Code nur einmal durchlaufen!
Drum geht auch nix wenn du es weg lässt....

Das flackern am LCD kriegste weg wenn Du Dein CLS nur dann sendest wenn sich auf dem Display was ändern soll.
Ich mach das mit zb. nem Merkerbit.
Im ersten Durchlauf isses noch 0, sowie einmal der Text gesendet wurde wird es gesetzt und und somit kein CLS mehr gesendet.
Wenn ein neuer Text erscheinen soll mußt Du das Merkerbit vorher zurücksetzen. Bei Deinem Aufbau zb. würd ich 2 Merkerbits nehmen: Eines in der IF Bedingung und Eines in der ELSE Bedingung.
Die IF Bedingung setzt das MB1 in der ELSE Bedingung zurück und die ELSE Bedingung das MB2 in der IF Bedingung.

Jürgen

rolfw20
07.04.2006, 22:07
Hallo Luppi,
wenn ich richtig verstanden habe, willst Du mit port d0 eine Auswahl treffen und mit d1 diese bestätigen. Ich habe das mal umgesetzt, was Du davon gebrauchen kannst mußt Du selbst wissen. Im Simulator läuft das Prog. wenn Du es aber auf den Chip brennst mußt Du wahrscheinlich die Abfragen von PortX.Y auf PinX.Y ändern, dieses Problem hatte ich auf jéden fall. O:)


'************************************************* *****
'Projekt: Auswahl Menü
'
'Prozessor: ATMega 8
'
'
'Hardware:
'LCD-Display an Port B 20*4 LCD Controller KS0076

'
'05.04.06 Thorsten **** geändert 06.04.06 Rolf *******
'
'************************************************* *****

'================================================= =====
'System-Einstellungen
'================================================= =====
'Definition für Mega 8
$regfile "m8def.dat"

'Angabe der Taktfrequenz (1Mhz)
$crystal = 1000000

'Pin Config
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , Rs = Portb.0

'================================================= =====
'Konfigurationen
'================================================= =====
'Angabe der Display-Größe
Config Lcd = 20 * 4
Dim A As Byte

'================================================= =====
'Konfigurationen Eingang
'================================================= =====
Config Portd.0 = Input 'Taster 1
Config Portd.1 = Input 'Taster 2
Config Portd.7 = Output 'Led 8 an Port D
Config Portd.6 = Output 'Led 7 an Port D

'================================================= =====
'Initialisierungen
'================================================= =====
Portd.0 = 1
Portd.1 = 1
Portd.6 = 0
Portd.7 = 0

'================================================= =====
'Hauptprogramm
'================================================= =====
'Den Cursor ausschalten
Cursor Off
Cls
Do
'Text der ersten Zeile
If Portd.0 = 0 Then
Locate 1 , 1
Lcd "Led 7"
Else
Cursor Off
Locate 1 , 1
Lcd "Led 8"
End If
'Text der dritten Zeile
Locate 3 , 1
Lcd "Schalter ein = Led 7"
'Text der vierten Zeile
Locate 4 , 1
Lcd "Schalter aus = led 8"
If Portd.1 = 0 And Portd.0 = 0 Then
Portd.6 = 1
Portd.7 = 0
End If
If Portd.1 = 0 And Portd.0 = 1 Then
Portd.6 = 0
Portd.7 = 1
End If
Loop

End




Gruß
Rolf