home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 April / CHIP4_98.ISO / software / ccconrad / basic.exe / CHIP / Programme.Bas / Utility / LCD_Temperatur.bas < prev    next >
Encoding:
BASIC Source File  |  1997-11-19  |  3.6 KB  |  164 lines

  1. '***************  Temperatur-Anzeige auf LC_Display  ****************
  2. ' Systemvoraussetzungen:
  3. ' - Application Board mit angeschlossenem Display
  4. ' - KTY-Temperatur-Sensor (-27,5..100░C) an AD[1]
  5. ' - Ausgabe der Temperatur auf dem LC-Display
  6. '********************************************************************
  7.  
  8.  
  9. ' ***  kty-Sensor  ***
  10. DEFINE   sample  AD[1]
  11. DEFINE   temp    WORD
  12.  
  13. ' ***  LCD_Write_Integer
  14. DEFINE output WORD
  15. DEFINE value WORD
  16.  
  17. ' *** LCD-Daten ***
  18. define lcd_buf byte
  19. define lcd_param byte
  20.  
  21. ' *** LCD-Ports ***
  22. define lcd_port byteport[2]
  23. define lcd_rs port[14]
  24. define lcd_rw port[13]
  25. define lcd_e port[15]
  26.  
  27. '*** ASCII-Codes ***
  28. define c_0 &H30
  29. define c_C &H43
  30. define c_E &H45
  31. define c_M &H4D
  32. define c_P &H50
  33. define c_T &H54
  34.  
  35. define esc         &H1B
  36. define c_Leer      &H20
  37. define c_Minus     &H2D
  38.  
  39. define c_Gleich    &H3D
  40. define c_Grad      &HDF
  41.  
  42.  
  43.  
  44. '***  Hauptprogramm  ***
  45.  
  46. gosub LCD_INIT
  47. #Loop
  48.   'Wechsel in die erste Zeile
  49.   lcd_param = 1 : gosub LCD_GOTOLINE
  50.  
  51.   ' Wechsel in die zweite Zeile
  52.   'lcd_param = 2 : gosub LCD_GOTOLINE
  53.  
  54.   LOOKTAB TempTab, sample, value : gosub LCD_Write_Integer
  55.   lcd_param = c_Grad : gosub LCD_WriteChar
  56.   lcd_param = c_C    : gosub LCD_WriteChar
  57.  
  58.   PAUSE 50
  59.   goto Loop
  60. END
  61.  
  62. TABLE TempTab "kty.tab"             'Tabelle mu▀ im Programmverzeichnis stehen)
  63.  
  64.  
  65. '***  Output Integer to LCD ***
  66. #LCD_Write_Integer
  67.   output = abs(value)
  68.   'negatives Vorzeichen oder Leerzeichen
  69.   if value < 0 then gosub LCD_Minus 'else gosub LCD_Leerzeichen
  70.  
  71.   'Zehntausender-Dezimalstelle oder Leerzeichen
  72.   if abs(value) >= 10000 then gosub LCD_Zehntausend 'else gosub LCD_Leerzeichen
  73.   output = output mod 10000
  74.  
  75.   ' Tausender-Dezimalstelle oder Leerzeichen
  76.   if abs(value) >= 1000 then gosub LCD_Tausend 'else gosub LCD_Leerzeichen
  77.   output = output mod 1000
  78.  
  79.   ' Hunderter-Dezimalstelle oder Leerzeichen
  80.   if abs(value) >= 100 then gosub LCD_Hundert 'else gosub LCD_Leerzeichen
  81.   output = output mod 100
  82.  
  83.   ' Zehner-Dezimalstelle oder Leerzeichen
  84.   if abs(value) >= 10 then gosub LCD_Zehn 'else gosub LCD_Leerzeichen
  85.  
  86.   ' Einer Dezimalstelle
  87.   lcd_param = c_0 + output mod 10 : gosub LCD_WriteChar
  88. return
  89.  
  90. #LCD_Leerzeichen
  91.   lcd_param = c_Leer : gosub LCD_WriteChar
  92. return
  93.  
  94. #LCD_Minus
  95.   lcd_param = c_Minus : gosub LCD_WriteChar
  96. return
  97.  
  98. #LCD_Zehntausend
  99.   lcd_param = c_0 + output/10000 : gosub LCD_WriteChar
  100. return
  101.  
  102. #LCD_Tausend
  103.   lcd_param = c_0 + output/1000 : gosub LCD_WriteChar
  104. return
  105.  
  106. #LCD_Hundert
  107.   lcd_param = c_0 + output/100 : gosub LCD_WriteChar
  108. return
  109.  
  110. #LCD_Zehn
  111.   lcd_param = c_0 + output/10 : gosub LCD_WriteChar
  112. return
  113.  
  114. '*** LCD_Interface ***
  115. '( muss in jedes Programm mit LCD-Ausgabe eingefuegt werden)
  116.  
  117. #LCD_INIT
  118.  
  119. ' alle ports 0
  120.   lcd_port = OFF
  121.  
  122. ' 8-Bit-Modus aktivieren
  123.   lcd_param=&H38 : gosub LCD_WRITECMD
  124.  
  125. ' mit 8-Bit-Command in 4-Bit-Modus umschalten
  126.   lcd_port=&B00000010
  127.   tog lcd_e
  128.   tog lcd_e
  129.  
  130. ' ab jetzt 4-Bit-Modus
  131.   lcd_param = &H28 : gosub LCD_WRITECMD
  132.   lcd_param = &H0C : gosub LCD_WRITECMD
  133.  
  134. ' Display loeschen
  135. #LCD_CLS
  136.   lcd_param = &H02 : gosub LCD_WRITECMD
  137.   lcd_param = &H01 : gosub LCD_WRITECMD
  138. return
  139.  
  140. ' Zeilenwechsel
  141. #LCD_GOTOLINE
  142.   if lcd_param = 1 then lcd_param = &H80
  143.   if lcd_param = 2 then lcd_param = &HC0
  144.   goto LCD_WRITECMD
  145.  
  146. ' LCD-Kommando
  147. #LCD_WRITECMD
  148.   lcd_buf = OFF
  149.   goto LCD_WRITE
  150.  
  151. ' Zeichenausgabe
  152. #LCD_WRITECHAR
  153.   lcd_buf = &B00100000
  154.  
  155. ' Kommando oder Zeichen an Display senden
  156. #LCD_WRITE
  157.   lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
  158.   tog lcd_e
  159.   tog lcd_e
  160.   lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
  161.   tog lcd_e
  162.   tog lcd_e
  163. return
  164.