Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Freitag, 20. Januar 2006, 21:46

Programm 4: Die Analogeingänge

Und hallo wieder mal,

mit diesem Programm kann man die Analog-Ports testen. Dafür müssen die beiden Potis mit Port C.0 bzw. Port C.1 verbunden werden.
Geht am einfachsten, wenn ihr euch zwei kleine Verbindungskabel zaubert:
Ein Stückchen Litze, an jedem Ende ein eine einzelne Pfostenbuchse anlöten, und mit etwas Schrumpfschlauch isolieren.
Macht die Kabel ruhig so etwa 10cm lang, wir brauchen sie später noch für andere Schaltungen.

Ich hab grade kein Foto davon, ich hoffe mal, ihr bekommt das auch so hin.

Das Programm zaubert dann zwei Bargraph-Anzeigen in die untere Displayhälfte, die sich mit den Potis verändern lassen.

Die Analogports sind sehr empfindlich, damit die Anzeige richtig ruhig steht, müssen beide Potis angeschlossen sein.

Ich hoffe mal, der Code ist einigermaßen verständlich und nachvollziehbar. Wenn etwas unklar ist, fragt bitte nach!

Viele Grüße

Torsten

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
'******************************************************
'Projekt: Atmel-Programmierung für Einsteiger
'
'Prozessor: ATMega 8-16
'Bascom-Version: 1.11.8.1
'
'Programm 4: Analogwert-Verarbeitung
'
'Hardware:
'LCD-Display an Port B
'10k-Poti an C.0
'10k-Poti an C.1
'
'20.01.2006 T. Gietenbruch
'
'******************************************************

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

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

'Einbindung der LCD-Bibliothek für ein 2-Prozessor-Display
$lib "lcd4e2.lbx"

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

'Konfiguration der Analogeingänge
Config Adc = Single , Prescaler = Auto , Reference = Avcc

'======================================================
'Deklarationen
'======================================================
'Variable für Umschaltung der Displayhälfte - Namen so lassen!
Dim ___lcde As Byte

'Variablen für die Analogwerte
Dim Analogwert_0 As Word
Dim Balken_0 As Word
Dim Balken_0_alt As Word

Dim Analogwert_1 As Word
Dim Balken_1 As Word
Dim Balken_1_alt As Word

'Zählvariable
Dim N As Byte

'======================================================
'Initialisierungen
'======================================================
'Anschaltung der Analogwert-Verarbeitung
Start Adc


'======================================================
'Aufbau der LCD-Maske
'======================================================
'Umschaltung auf die obere Hälfte
___lcde = 0

'Das Display löschen
Cls
'Text der ersten Zeile (max. 27 Zeichen!)
Locate 1 , 1
Lcd "*** AVR EINSTEIGERKURS  ***"

'Text der zweiten Zeile
Locate 2 , 1
Lcd "****  ANALOGWERT-TEST  ****"

'Den Cursor ausschalten
Cursor Off

'Umschaltung auf die untere Hälfte
___lcde = 1

Cls

'Den Cursor ausschalten
Cursor Off

'======================================================
'Hauptprogramm-Schleife
'======================================================

Do

'Analogwerte von Port C.0 und C.1 lesen
Analogwert_0 = Getadc(0)
Analogwert_1 = Getadc(1)

'Berechnung der Balkenlängen
Balken_0 = Analogwert_0 / 37
Balken_1 = Analogwert_1 / 37

'Display wird nur aktualisiert, wenn der Wert sich
'geändert hat:
If Balken_0 <> Balken_0_alt Then
   Balken_0_alt = Balken_0
   Locate 1 , 1
   'Die Zeile mit 27 Leerzeichen löschen
   Lcd "                           "
   'Erforderliche Anzahl Zeichen drucken
   For N = 1 To Balken_0
      Locate 1 , N
      Lcd "="
   Next N

End If

If Balken_1 <> Balken_1_alt Then
   Balken_1_alt = Balken_1
   Locate 2 , 1
   'Die Zeile mit 27 Leerzeichen löschen
   Lcd "                           "
   'Erforderliche Anzahl Zeichen drucken
   For N = 1 To Balken_1
      Locate 2 , N
      Lcd "="
   Next N

End If

Loop



'Programmende (nur formal)
End


[SIZE=3]Topics:

- Die Werterfassung (Poti-Drehrichtung) rechnerisch umkehren

- Die Anzeige umkehren (Balken von rechts nach Links steigend)

- Warum wird der Analogwert durch 37 geteilt?

[/SIZE]
[SIZE=4]www.zuendapp.net - die grösste Zündapp-Community im Internet! :ok:[/SIZE]

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Torsten_G« (20. Januar 2006, 21:52)