PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Screens wechseln mit 2 Taster (oder mit einem Taster)



tordy
14.07.2009, 08:37
Ich möchte Zwischen Screens welchseln können mit 2 Tasten (hoch / runter) oder nur mit einem Taster der durch die Screens wechselt.

Gibt es dazu irgendwo ein Beispiel ?

TomEdl
14.07.2009, 12:59
Hallo!

Etwas mehr Informationen wären schon hilfreich. Was meinst du mit Screen? Wie sieht deine Hardware aus? Wie sieht dein bisheriges Programm aus?

Grüße
Thomas

tordy
14.07.2009, 13:08
Ich habe den ATMEGA32
Mit Screen meine ich zb.

1 Screen

Hauptmenu mit 4 Sensoren auswertungen

2 Screen

- 1. Sensor in Großen Buchstaben

3 Screen

- 2. Sensor mit Balkenanzeige

usw. bis ich nach 4 Screens wieder beim ersten ankomme.

Bis jetzt sieht mein Programm so aus das ich 4 Einzelne Programme für die Sensoren habe.

Diese möchte ich in eins verpacken und auf einem Atmega laufen lassen.

TomEdl
14.07.2009, 13:16
Wo werden diese "Screens" ausgegeben? Auif einem Text-Display, Graphik-Display, Monitor, Fernseher, über RS232, etc.?

Bitte etwas mehr Infos!

Grüße
Thomas

tordy
14.07.2009, 13:27
Achso ja sorry .

das ganz soll einfach auf einem LCD 4*20 ausgegeben werden.

Ganz einfach gesagt ist es eine Anzeige für Tempratur / Druck Fühler.

Wie gesagt ich möchte zwischen den einzelnen Programmen Springen können.

Die ausgabe der Fühler funktioniert schon auf dem Display nur nicht zusammen sondern muss immer jedes mal den Atmega neu beschreiben.

TomEdl
14.07.2009, 13:29
Okay, jetzt wäre es noch vorteilhaft, wenn du deine Software posten würdest.

Sonst wird das mit dem Helfen leider nix.

Gruß
Thomas
;)

tordy
14.07.2009, 13:39
1. Code fürs Hauptmenü

'ATMEGA CONFIG'
'-------------'
$regfile = "m32def.dat"
'$lib "lcd.lib"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
$sim
'LCD CONFIG'
'----------'
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4




'---------------'
Ktemp = 0.488758553274682
Temp_word = Getadc(1)
For I = 1 To 19
Ad1 = Getadc(1)
Tempcalc = Tempcalc + Ad1
Next
Tempcalc = Tempcalc / 20 '
Tempout = Tempcalc * Ktemp
If Pinb.1 = 0 Then
Locate 3 , 1
Lcd "temp.:"
Locate 3 , 14
Lcd Fusing(tempout , "#.##") ; Chr(0)
End If


'---------------'
Druck = 0.004887585533
Druck_word = Getadc(2)
Waitms 50

'

Druckout = Druck_word * Druck
Druckout = Druckout - 1.808
Druckout = Druckout / 0.20


Home
Locate 4 , 1
Lcd "druck:"
Locate 4 , 13
Lcd Fusing(druckout , "#.##'")
Locate 4 , 18
Lcd "Bar"
'End If
Locate 4 , 17
Lcd Chr(1)


Loop
End

2. ´Code für Druck

'ATMEGA CONFIG'
'-------------'
$sim
$regfile = "m32def.dat"
'$lib "lcd.lib"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

'LCD CONFIG'
'----------'
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4

'Symbole'
'-------'
Deflcdchar 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 15
Deflcdchar 1 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
Deflcdchar 2 , 0 , 0 , 0 , 0 , 16 , 24 , 28 , 30
Deflcdchar 3 , 31 , 31 , 31 , 31 , 30 , 28 , 24 , 16
Deflcdchar 4 , 16 , 24 , 28 , 30 , 31 , 31 , 31 , 31
Deflcdchar 5 , 15 , 7 , 3 , 1 , 0 , 0 , 0 , 0
Deflcdchar 6 , 31 , 31 , 31 , 31 , 0 , 0 , 0 , 0
Deflcdchar 7 , 30 , 28 , 24 , 16 , 0 , 0 , 0 , 0

Declare Sub Lcdbig
Dim Lcdbigspalte As Byte , Lcdbigzahl As Byte
Dim Druck As Word
Dim Druck_str As String * 4 , Tmp As String * 1
Dim A As Byte , B As Byte
Do


Cls

Druck = Getadc(1)
Druck_str = Str(druck)
Locate 1 , 1
Lcd "Druck:"
Locate 2 , 1
Lcd "b"
Lcdbigspalte = 10
Lcdbigzahl = druck
If Druck < 10 Then B = 1
If Druck > 9 Then B = 2
If Druck > 99 Then B = 3
If Druck > 999 Then B = 4

For A = 1 To B
If A > 1 Then Lcdbigspalte = Lcdbigspalte + 3
Tmp = Mid(druck_str , A , 1)
Lcdbigzahl = Val(tmp)
Lcdbig
Next

Waitms 50 ' wait 1
Loop

Sub Lcdbig

' Zeile 1
Locate 1 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 1 : Lcd Chr(0) ; Chr(1) ; Chr(32)
Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 3 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 4 : Lcd Chr(1) ; Chr(32) ; Chr(32)
Case 5 : Lcd Chr(1) ; Chr(1) ; Chr(1)
Case 6 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 7 : Lcd Chr(1) ; Chr(1) ; Chr(1)
Case 8 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 9 : Lcd Chr(0) ; Chr(1) ; Chr(2)
End Select

' Zeile 2
Locate 2 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(3)
Case 3 : Lcd Chr(32) ; Chr(0) ; Chr(3)
Case 4 : Lcd Chr(255) ; Chr(1) ; Chr(255)
Case 5 : Lcd Chr(255) ; Chr(1) ; Chr(2)
Case 6 : Lcd Chr(255) ; Chr(1) ; Chr(2)
Case 7 : Lcd Chr(32) ; Chr(0) ; Chr(3)
Case 8 : Lcd Chr(255) ; Chr(1) ; Chr(255)
Case 9 : Lcd Chr(255) ; Chr(1) ; Chr(255)
End Select

' Zeile 3
Locate 3 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
Case 2 : Lcd Chr(255) ; Chr(32) ; Chr(32)
Case 3 : Lcd Chr(32) ; Chr(5) ; Chr(4)
Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(255)
Case 5 : Lcd Chr(32) ; Chr(32) ; Chr(255)
Case 6 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 7 : Lcd Chr(32) ; Chr(255) ; Chr(32)
Case 8 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 9 : Lcd Chr(32) ; Chr(32) ; Chr(255)
End Select

' Zeile 4
Locate 4 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 1 : Lcd Chr(6) ; Chr(6) ; Chr(6)
Case 2 : Lcd Chr(6) ; Chr(6) ; Chr(6)
Case 3 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(6)
Case 5 : Lcd Chr(6) ; Chr(6) ; Chr(7)
Case 6 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 7 : Lcd Chr(32) ; Chr(6) ; Chr(32)
Case 8 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 9 : Lcd Chr(5) ; Chr(6) ; Chr(7)
End Select
End Sub



3.Code für TEMP

'ATMEGA CONFIG'
'-------------'
$sim
$regfile = "m32def.dat"
'$lib "lcd.lib"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

'LCD CONFIG'
'----------'
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4

'Symbole'
'-------'
Deflcdchar 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 15
Deflcdchar 1 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
Deflcdchar 2 , 0 , 0 , 0 , 0 , 16 , 24 , 28 , 30
Deflcdchar 3 , 31 , 31 , 31 , 31 , 30 , 28 , 24 , 16
Deflcdchar 4 , 16 , 24 , 28 , 30 , 31 , 31 , 31 , 31
Deflcdchar 5 , 15 , 7 , 3 , 1 , 0 , 0 , 0 , 0
Deflcdchar 6 , 31 , 31 , 31 , 31 , 0 , 0 , 0 , 0
Deflcdchar 7 , 30 , 28 , 24 , 16 , 0 , 0 , 0 , 0

Declare Sub Lcdbig
Dim Lcdbigspalte As Byte , Lcdbigzahl As Byte
Dim temp As Word
Dim temp_str As String * 4 , Tmp As String * 1
Dim A As Byte , B As Byte
Do


Cls

temp = Getadc(1)
temp_str = Str(druck)
Locate 1 , 1
Lcd "temp:"
Locate 2 , 1
Lcd "b"
Lcdbigspalte = 10
Lcdbigzahl = temp
If temp< 10 Then B = 1
If temp> 9 Then B = 2
If temp> 99 Then B = 3
If temp > 999 Then B = 4

For A = 1 To B
If A > 1 Then Lcdbigspalte = Lcdbigspalte + 3
Tmp = Mid(temp_str , A , 1)
Lcdbigzahl = Val(tmp)
Lcdbig
Next

Waitms 50 ' wait 1
Loop

Sub Lcdbig

' Zeile 1
Locate 1 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 1 : Lcd Chr(0) ; Chr(1) ; Chr(32)
Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 3 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 4 : Lcd Chr(1) ; Chr(32) ; Chr(32)
Case 5 : Lcd Chr(1) ; Chr(1) ; Chr(1)
Case 6 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 7 : Lcd Chr(1) ; Chr(1) ; Chr(1)
Case 8 : Lcd Chr(0) ; Chr(1) ; Chr(2)
Case 9 : Lcd Chr(0) ; Chr(1) ; Chr(2)
End Select

' Zeile 2
Locate 2 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(3)
Case 3 : Lcd Chr(32) ; Chr(0) ; Chr(3)
Case 4 : Lcd Chr(255) ; Chr(1) ; Chr(255)
Case 5 : Lcd Chr(255) ; Chr(1) ; Chr(2)
Case 6 : Lcd Chr(255) ; Chr(1) ; Chr(2)
Case 7 : Lcd Chr(32) ; Chr(0) ; Chr(3)
Case 8 : Lcd Chr(255) ; Chr(1) ; Chr(255)
Case 9 : Lcd Chr(255) ; Chr(1) ; Chr(255)
End Select

' Zeile 3
Locate 3 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
Case 2 : Lcd Chr(255) ; Chr(32) ; Chr(32)
Case 3 : Lcd Chr(32) ; Chr(5) ; Chr(4)
Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(255)
Case 5 : Lcd Chr(32) ; Chr(32) ; Chr(255)
Case 6 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 7 : Lcd Chr(32) ; Chr(255) ; Chr(32)
Case 8 : Lcd Chr(255) ; Chr(32) ; Chr(255)
Case 9 : Lcd Chr(32) ; Chr(32) ; Chr(255)
End Select

' Zeile 4
Locate 4 , Lcdbigspalte
Select Case Lcdbigzahl
Case 0 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 1 : Lcd Chr(6) ; Chr(6) ; Chr(6)
Case 2 : Lcd Chr(6) ; Chr(6) ; Chr(6)
Case 3 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(6)
Case 5 : Lcd Chr(6) ; Chr(6) ; Chr(7)
Case 6 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 7 : Lcd Chr(32) ; Chr(6) ; Chr(32)
Case 8 : Lcd Chr(5) ; Chr(6) ; Chr(7)
Case 9 : Lcd Chr(5) ; Chr(6) ; Chr(7)
End Select
End Sub

Kann sein das nun ein kleiner fehler im Programm ist aber das sollte ja nichts mit den Screens zu tun haben