Forum: Mikrocontroller und Digitale Elektronik AVR: ADC-Wert auf intel. alphanumerischen Display (nicht LCD!)


von Rudi (Gast)


Lesenswert?

Hallo zusammen!
Möchte gerne einen ADC-Wert auf einem intelligenten alphan. Display
(HP HDSP-2531, wie HDSP-2112) anzeigen lassen.
Bei dem HDSP müssen hier die Adresse und Steuersignale
mitgeschickt werden, das Anzeigen von Klartext ist aber
kein Problem und funktioniert so weit einwandfrei.
Nur habe ich keine Ahnung wie ich nun einen Analog-Wert des ADCs
als z.B. "2.87V" im Display anzeigen lassen kann.
So sieht es zur Zeit aus (habt erbarmen, ich bin Anfänger! :-)
Bin für jeden Tipp dankbar!!!
/Rudi
1
'*** ADC - Messung
2
Sub Hdsp_befehl_messung(byval Cycles As Byte):
3
Local X_local As Word
4
5
Dim Ad As Word
6
Dim C As Word
7
Dim Ca As String * 1
8
Dim Cb As String * 1
9
10
11
Config ADC = Single , Prescaler = Auto , Reference = Avcc
12
Const D = 5 / 1023                                      '5V Avcc / 1023 ADC-Wert
13
Start ADC
14
15
 Do
16
  For X_local = 1 To Cycles
17
   Ad = Getadc(0)
18
   C = Ad * D
19
   Ca = Str(low(c))
20
   Cb = Str(high(c))
21
   Char_buffer(1) = " "
22
   Char_buffer(2) = " "
23
   Char_buffer(3) = " "
24
   Char_buffer(4) = " "
25
   Char_buffer(5) = Cb
26
   Char_buffer(6) = "."
27
   Char_buffer(7) = Ca
28
   Char_buffer(8) = "V"
29
   Call Hdsp_befehl_write_chars
30
  Next
31
 Loop
32
33
End Sub
34
35
'*** CHAR_BUFFER AUFS DISPLAY SCHREIBEN ****************************************
36
Sub Hdsp_befehl_write_chars:
37
38
Local X_local As Byte
39
Local Y_local As Byte
40
   Reset Hdsp_wr
41
42
   For X_local = 0 To 7
43
      Hdsp_a0 = X_local.0                                   'A0 - A2 geben die Position des zu schreibenden Zeichens an (0 bis 7)
44
      Hdsp_a1 = X_local.1                                   'Daher übernehmen wir einfach die Bits von X_local
45
      Hdsp_a2 = X_local.2
46
      Hdsp_a3 = 1                                           'BIT 3 muss 1 sein für CHARACTER RAM
47
      Hdsp_a4 = 1                                           'BIT 4 muss 1 sein für CHARACTER RAM
48
49
      Y_local = X_local + 1                                 'Da Arrays immer mit 1 anfangen noch y_local benutzen...
50
      If Asc(char_buffer(y_local)) < 144 Then               'Wir haben 128 + 16 Zeichen
51
         Hdsp_data = Asc(char_buffer(y_local))
52
         Reset Hdsp_ce                                      'Mit CE das Display zum Übernehmen von Adresse + Daten bringen
53
         Set Hdsp_ce
54
      End If
55
   Next
56
   Set Hdsp_wr
57
End Sub

von Torsten B. (torty)


Lesenswert?

Hab zwar keine Ahnung Basic, aber in ASM musst Du zur Anzeige erst die 
Zahlenwerte in einen String umwandeln. Den kannst Du dann einfach 
ausgeben.
Du musst eine Routine schreiben, die Dir berechnet, wieviel 100er , 
wieviel 10er und wieviel 1er Dein Messwert hat (Vergiss nicht ein Komma 
einzubauen).

Es gibt hier bestimmt zu dieser Wandlung einige Beiträge.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.