home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 April / CHIP4_98.ISO / software / ccconrad / basic.exe / CHIP / Programme.Bas / Utility / LCD_Baro_Höhe.bas < prev    next >
Encoding:
BASIC Source File  |  1997-11-20  |  4.7 KB  |  201 lines

  1. '************  Barometer und H÷henmesser  ***************************
  2. ' Systemvoraussetzungen:
  3. '
  4. ' - Application Board mit angeschlossenem Display
  5. '
  6. ' - H÷he bis 510  Meter: Mode = Hight_510   'J3 = Alt-Position,  J2 = off
  7. ' - H÷he bis 2041 Meter: Mode = Hight_2041  'J3 = Alt-Position, J2 = on
  8. ' - Barometer          : Mode = Barometer   'J3 = Baro-Position, J2 = on
  9. ' - Ausgabe des Luftdrucks in [hPa] auf dem LC-Display
  10. '
  11. '********************************************************************
  12.  
  13. ' ***  LCD_Write_Integer
  14. DEFINE value   word[1]
  15. DEFINE output  word[2]
  16. define Mode    word[3]
  17.  
  18. ' *** LCD-Daten ***
  19. define lcd_buf byte[7]
  20. define lcd_param byte[8]
  21.  
  22. ' *** LCD-Ports ***
  23. define lcd_port byteport[2]
  24. define lcd_rs port[14]
  25. define lcd_rw port[13]
  26. define lcd_e port[15]
  27.  
  28. ' ***  H÷henmesser  ***
  29. define Sample        AD[2]
  30. define Hight_510     0
  31. define Hight_2041    2
  32. define Barometer     3
  33.  
  34. '*** ASCII-Codes ***
  35. define c_0 &H30
  36. define c_C &H43
  37. define c_E &H45
  38. define c_M &H4D
  39. define c_P &H50
  40. define c_T &H54
  41. define c_m_ &H6D
  42. define c_h_ &H68
  43. define c_a_ &H61
  44. define c_s_ &H73
  45.  
  46. define esc         &H1B
  47. define c_Leer      &H20
  48. define c_Minus     &H2D
  49.  
  50. define c_Gleich    &H3D
  51. define c_Grad      &HDF
  52.  
  53.  
  54.  
  55. '***  Hauptprogramm  ***
  56.  
  57. 'Mode = Hight_510  'J3 = Alt-Position,  J2 = off
  58. 'Mode = Hight_2041  'J3 = Alt-Position, J2 = on
  59. Mode = Barometer  'J3 = Baro-Position, J2 = on
  60.  
  61. gosub LCD_INIT
  62. #Loop
  63.   lcd_param = 1 : gosub LCD_GOTOLINE        'Wechsel in die erste Zeile
  64.  
  65.   'aktuellen Abtastwert umrechnen
  66.   if Mode = Hight_510  then gosub hi510
  67.   if Mode = Hight_2041 then gosub hi2041
  68.   if Mode = Barometer  then gosub baro
  69.  
  70.   PAUSE 50
  71.   goto Loop
  72. END
  73.  
  74.  
  75. #hi510
  76.   LOOKTAB High510_Tab,sample,value : gosub LCD_Write_Integer
  77. #output_m
  78.   lcd_param = c_m_ : gosub LCD_WriteChar
  79.   goto output_2Leer
  80.  
  81. #hi2041
  82.   LOOKTAB High2041_Tab,sample,value : gosub LCD_Write_Integer
  83.   goto output_m
  84.  
  85. #baro
  86.   LOOKTAB Baro_Tab,sample,value
  87.   gosub LCD_Write_Integer
  88.   lcd_param = c_h_   : gosub LCD_WriteChar
  89.   lcd_param = c_P    : gosub LCD_WriteChar
  90.   lcd_param = c_a_   : gosub LCD_WriteChar
  91. #output_2Leer
  92.   lcd_param = c_leer : gosub LCD_WriteChar
  93.   lcd_param = c_leer : gosub LCD_WriteChar
  94. return
  95.  
  96.  
  97. '***  Output Integer to LCD ***
  98. #LCD_Write_Integer
  99.   output = abs(value)
  100.   'negatives Vorzeichen oder Leerzeichen
  101.   if value < 0 then gosub LCD_Minus 'else gosub LCD_Leerzeichen
  102.  
  103.   'Zehntausender-Dezimalstelle oder Leerzeichen
  104.   if abs(value) >= 10000 then gosub LCD_Zehntausend 'else gosub LCD_Leerzeichen
  105.   output = output mod 10000
  106.  
  107.   ' Tausender-Dezimalstelle oder Leerzeichen
  108.   if abs(value) >= 1000 then gosub LCD_Tausend 'else gosub LCD_Leerzeichen
  109.   output = output mod 1000
  110.  
  111.   ' Hunderter-Dezimalstelle oder Leerzeichen
  112.   if abs(value) >= 100 then gosub LCD_Hundert 'else gosub LCD_Leerzeichen
  113.   output = output mod 100
  114.  
  115.   ' Zehner-Dezimalstelle oder Leerzeichen
  116.   if abs(value) >= 10 then gosub LCD_Zehn 'else gosub LCD_Leerzeichen
  117.  
  118.   ' Einer Dezimalstelle
  119.   lcd_param = c_0 + output mod 10 : gosub LCD_WriteChar
  120. return
  121.  
  122. #LCD_Leerzeichen
  123.   lcd_param = c_Leer : gosub LCD_WriteChar
  124. return
  125.  
  126. #LCD_Minus
  127.   lcd_param = c_Minus : gosub LCD_WriteChar
  128. return
  129.  
  130. #LCD_Zehntausend
  131.   lcd_param = c_0 + output/10000 : gosub LCD_WriteChar
  132. return
  133.  
  134. #LCD_Tausend
  135.   lcd_param = c_0 + output/1000 : gosub LCD_WriteChar
  136. return
  137.  
  138. #LCD_Hundert
  139.   lcd_param = c_0 + output/100 : gosub LCD_WriteChar
  140. return
  141.  
  142. #LCD_Zehn
  143.   lcd_param = c_0 + output/10 : gosub LCD_WriteChar
  144. return
  145.  
  146. '*** LCD_Interface ***
  147. '( muss in jedes Programm mit LCD-Ausgabe eingefuegt werden)
  148.  
  149. #LCD_INIT
  150.  
  151. ' alle ports 0
  152.   lcd_port = OFF
  153.  
  154. ' 8-Bit-Modus aktivieren
  155.   lcd_param=&H38 : gosub LCD_WRITECMD
  156.  
  157. ' mit 8-Bit-Command in 4-Bit-Modus umschalten
  158.   lcd_port=&B00000010
  159.   tog lcd_e
  160.   tog lcd_e
  161.  
  162. ' ab jetzt 4-Bit-Modus
  163.   lcd_param = &H28 : gosub LCD_WRITECMD
  164.   lcd_param = &H0C : gosub LCD_WRITECMD
  165.  
  166. ' Display loeschen
  167. #LCD_CLS
  168.   lcd_param = &H02 : gosub LCD_WRITECMD
  169.   lcd_param = &H01 : gosub LCD_WRITECMD
  170. return
  171.  
  172. ' Zeilenwechsel
  173. #LCD_GOTOLINE
  174.   if lcd_param = 1 then lcd_param = &H80
  175.   if lcd_param = 2 then lcd_param = &HC0
  176.   goto LCD_WRITECMD
  177.  
  178. ' LCD-Kommando
  179. #LCD_WRITECMD
  180.   lcd_buf = OFF
  181.   goto LCD_WRITE
  182.  
  183. ' Zeichenausgabe
  184. #LCD_WRITECHAR
  185.   lcd_buf = &B00100000
  186.  
  187. ' Kommando oder Zeichen an Display senden
  188. #LCD_WRITE
  189.   lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
  190.   tog lcd_e
  191.   tog lcd_e
  192.   lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
  193.   tog lcd_e
  194.   tog lcd_e
  195. return
  196.  
  197. table Baro_Tab "Baro.tab"             'Tabelle mu▀ im Programmverzeichnis stehen)
  198. table High510_Tab "High510.tab"
  199. table High2041_Tab "High2041.tab"
  200.  
  201.