Soeni
31.10.2009, 08:46
Ich habe ein altes Display (von 1994) in einem alten Karton gefunden und wollte es für mein Bot benutzen. Ich möchte es mit meinem RN-Control (Atmega 32) betreiben. Habe das Display wie im Wiki beschrieben angeschlossen (4-Bit Modus). Nun das Display zeigt nicht das an was es soll. Display sollte ordnungsgemäß funktionieren, da es schon beim zusammenlöten einige male schwarze Kästen angezeigt hat. An allen Anschlüssen die vom AVR kommen liegt ein HIGH Pegel an...was es nicht soll. Kann jemand mein Programm überprüfen? Programm geht ansonsten da Töne ausgegeben werden.
'################################################# #########
'Initalisierung
'################################################# #########
'Declare
Declare Function Tastenabfrage() As Byte
'Initalisiere ATMEGA16
$regfile = "m32def.dat"
$crystal = 16000000
'Config
'Für Tastenabfrage
Config Adc = Single , Prescaler = Auto
'Für Tastenabfrage, Pullup Widerstand ein
Config Pina.7 = Input
Porta.7 = 1
'Display
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.5 , Db7 = Portc.4 , E = Portd.1 , Rs = Portd.0
Config Lcd = 20 * 4
Config Lcdbus = 4
'Dim
Dim Taste As Byte
'################################################# #########
'Tastenabfrage
'################################################# #########
Cursor Off
Cls
Lcd "Willkommen"
Sound Portd.7 , 400 , 450
Lowerline
Lcd "Test OK"
Sound Portd.7 , 400 , 450
Wait 2
Cls
Lcd "Programm Wählen"
Sound Portd.7 , 400 , 450
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Case 2
Case 3
Case 4
Case 5
End Select
End If
Waitms 100
Loop
End
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
If Ws < 420 Then
Select Case Ws
Case 373 To 413
Tastenabfrage = 1
Lcd "Taste 1 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 303 To 343
Tastenabfrage = 2
Lcd "Taste 2 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 230 To 270
Tastenabfrage = 3
Lcd "Taste 3 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 153 To 193
Tastenabfrage = 4
Lcd "Taste 4 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 70 To 110
Tastenabfrage = 5
Lcd "Taste 5 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
End Select
End If
End Function
'################################################# #########
'Initalisierung
'################################################# #########
'Declare
Declare Function Tastenabfrage() As Byte
'Initalisiere ATMEGA16
$regfile = "m32def.dat"
$crystal = 16000000
'Config
'Für Tastenabfrage
Config Adc = Single , Prescaler = Auto
'Für Tastenabfrage, Pullup Widerstand ein
Config Pina.7 = Input
Porta.7 = 1
'Display
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.5 , Db7 = Portc.4 , E = Portd.1 , Rs = Portd.0
Config Lcd = 20 * 4
Config Lcdbus = 4
'Dim
Dim Taste As Byte
'################################################# #########
'Tastenabfrage
'################################################# #########
Cursor Off
Cls
Lcd "Willkommen"
Sound Portd.7 , 400 , 450
Lowerline
Lcd "Test OK"
Sound Portd.7 , 400 , 450
Wait 2
Cls
Lcd "Programm Wählen"
Sound Portd.7 , 400 , 450
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Case 2
Case 3
Case 4
Case 5
End Select
End If
Waitms 100
Loop
End
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Start Adc
Ws = Getadc(7)
If Ws < 420 Then
Select Case Ws
Case 373 To 413
Tastenabfrage = 1
Lcd "Taste 1 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 303 To 343
Tastenabfrage = 2
Lcd "Taste 2 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 230 To 270
Tastenabfrage = 3
Lcd "Taste 3 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 153 To 193
Tastenabfrage = 4
Lcd "Taste 4 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
Case 70 To 110
Tastenabfrage = 5
Lcd "Taste 5 gedrückt"
Sound Portd.7 , 400 , 450
Waitms 500
End Select
End If
End Function