LCD - Text via Taster ändern

OP #1315410
Lesenswert?

Hi,

ich habe ein LCD an einem Atmega8 hägen auf dem ich den Text via Taster 
ändern möchte.

Hab mir mal ein Demo-Programm geschrieben:
1
$regfile = "m8def.dat"
2
$crystal = 4000000
3

4
Ddrd = &B00111111
5
Portd = &B11000000
6

7
Config Lcd = 16 * 2
8
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
9
Config Lcdbus = 4
10

11
Config Debounce = 100
12

13
Taster1 Alias Portd.6
14
Taster2 Alias Portd.7
15

16

17
Initlcd
18
Cursor Off Noblink
19

20
Cls
21
Locate 1 , 3
22
Lcd "Demo-Screen"
23
Locate 2 , 4
24
Lcd "TMPC1-LCD"
25

26
Do
27

28
Debounce Taster1 , 0 , Taster_1 , Sub
29
Debounce Taster2 , 0 , Taster_2 , Sub
30

31
Loop
32

33
End
34

35
Taster_1:
36
   Cls
37
   Locate 1 , 1
38
   Lcd "Taster 1 wurde"
39
   Locate 2 , 1
40
   Lcd "gedrueckt"
41
Return
42

43
Taster_2:
44
   Cls
45
   Locate 1 , 1
46
   Lcd "Taster 2 wurde"
47
   Locate 2 , 1
48
   Lcd "gedrueckt"
49
Return

Der 1. "Schriftzug" wird auch angezeigt ohne Probleme, allerdings wenn 
ich einen der Beiden Taster drücke passiert nichts.

Kann mir wer helfen?

Gruß Michi2626
Gast #1315616
Lesenswert?

Hi,

Mit dem Debounce-Befehl würde ich nicht arbeiten, damit habe ich mich 
schon tagelang rumgeärgert. Mein Codevorschlag wäre folgendermassen:
1
$regfile = "m8def.dat"
2
$crystal = 4000000
3

4
Config PORTD = Output
5

6
Config Lcd = 16 * 2
7
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4
8
Config Lcdbus = 4
9

10

11
Config PIND.6 = Input
12
Config PIND.7 = Input
13

14
portd.6 = 1  'Pullups einschalten
15
portd.7 = 1 
16

17
Taster1 Alias Pind.6
18
Taster2 Alias Pind.7
19

20

21
Initlcd
22
Cursor Off Noblink
23

24
Cls
25
Locate 1 , 3
26
Lcd "Demo-Screen"
27
Locate 2 , 4
28
Lcd "TMPC1-LCD"
29

30
Do
31

32
if taster1 = 0 then
33
   goto Taster1
34
end if
35

36
if taster2 = 0 then
37
   goto Taster2
38
end if
39

40
Loop
41

42
End
43

44
Taster_1:
45
   Cls
46
   Locate 1 , 1
47
   Lcd "Taster 1 wurde"
48
   Locate 2 , 1
49
   Lcd "gedrueckt"
50
   while taster1 = 0
51
       waitms 10    'Entprellen
52
   wend
53
Return
54

55
Taster_2:
56
   Cls
57
   Locate 1 , 1
58
   Lcd "Taster 2 wurde"
59
   Locate 2 , 1
60
   Lcd "gedrueckt"
61
   while taster2 = 0
62
       waitms 10    'Entprellen
63
   wend
64
Return

Hoffe, ich konnte helfen!
mfg,
Cyberlink

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren