home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 April / CHIP4_98.ISO / software / ccconrad / basic.exe / CHIP / Programme.Bas / App-Board / lcd2.bas < prev    next >
Encoding:
BASIC Source File  |  1997-06-16  |  3.6 KB  |  172 lines

  1. '********************************************************************
  2. '
  3. ' C-Control/BASIC       LCD3.BAS
  4. '
  5. ' Systemvoraussetzungen:
  6. '
  7. ' - Application Board mit angeschlossenem Display
  8. '
  9. ' Schwerpunkt:
  10. '
  11. ' - Ausgeben von Zahlenwerten am Display
  12. '
  13. '********************************************************************
  14.  
  15. ' *** Daten-Definition ***
  16. define value word
  17. define output word
  18.  
  19. define lcd_buf byte
  20. define lcd_param byte
  21.  
  22. define i byte
  23.  
  24. ' *** Definition LCD-Ports ***
  25. define lcd_port byteport[2]
  26. define lcd_rs port[14]
  27. define lcd_rw port[13]
  28. define lcd_e port[15]
  29.  
  30. '*** ASCII-Codes ***
  31. define A_ &H41
  32. define B_ &H42
  33. define C_ &H43
  34. define D_ &H44
  35. define E_ &H45
  36. define F_ &H46
  37. define G_ &H47
  38. define H_ &H48
  39. define I_ &H49
  40. define J_ &H4A
  41. define K_ &H4B
  42. define L_ &H4C
  43. define M_ &H4D
  44. define N_ &H4E
  45. define O_ &H4F
  46. define P_ &H50
  47. define Q_ &H51
  48. define R_ &H52
  49. define S_ &H53
  50. define T_ &H54
  51. define U_ &H55
  52. define V_ &H56
  53. define W_ &H57
  54. define X_ &H58
  55. define Y_ &H59
  56. define Z_ &H5A
  57.  
  58. define LEERZ &H20
  59. define MINUS &H2D
  60. define NULL &H30
  61. define GLEICH &H3D
  62.  
  63. '*** Programmoperationen  ***
  64.  
  65.   gosub LCD_INIT
  66.   randomize timer
  67.  
  68.   ' Zufallszahlen ausgeben
  69.   for i = 1 to 100
  70.     pause 20
  71.  
  72.     lcd_param = 1 : gosub LCD_GOTOLINE
  73.  
  74.     lcd_param = W_ : gosub LCD_WRITECHAR       ' WERT =
  75.     lcd_param = E_ : gosub LCD_WRITECHAR
  76.     lcd_param = R_ : gosub LCD_WRITECHAR
  77.     lcd_param = T_ : gosub LCD_WRITECHAR
  78.     lcd_param = LEERZ : gosub LCD_WRITECHAR
  79.     lcd_param = GLEICH : gosub LCD_WRITECHAR
  80.     lcd_param = LEERZ : gosub LCD_WRITECHAR
  81.  
  82.     value = rand
  83.     gosub WRITEVALUE
  84.   next
  85.  
  86.   end
  87.  
  88.  
  89. #WRITEVALUE
  90.  
  91.   output = abs(value)
  92.  
  93.   ' negatives Vorzeichen oder Leerzeichen
  94.   if value < 0 then lcd_param = MINUS else lcd_param = LEERZ
  95.   gosub LCD_WRITECHAR
  96.  
  97.   ' Zehntausender-Dezimalstelle oder Leerzeichen (Ausblenden fuehrender Nullen)
  98.   if abs(value) >= 10000 then lcd_param = NULL + output/10000 else lcd_param = LEERZ
  99.   gosub LCD_WRITECHAR
  100.   output = output mod 10000
  101.  
  102.   ' Tausender-Dezimalstelle oder Leerzeichen
  103.   if abs(value) >= 1000 then lcd_param = NULL + output/1000 else lcd_param = LEERZ
  104.   gosub LCD_WRITECHAR
  105.   output = output mod 1000
  106.  
  107.   ' Hunderter-Dezimalstelle oder Leerzeichen
  108.   if abs(value) >= 100 then lcd_param = NULL + output/100 else lcd_param = LEERZ
  109.   gosub LCD_WRITECHAR
  110.   output = output mod 100
  111.  
  112.   ' Zehner-Dezimalstelle oder Leerzeichen
  113.   if abs(value) >= 10 then lcd_param = NULL + output/10 else lcd_param = LEERZ
  114.   gosub LCD_WRITECHAR
  115.  
  116.   ' einer Dezimalstelle oder Leerzeichen
  117.   lcd_param = NULL + output mod 10
  118.   gosub LCD_WRITECHAR
  119. return
  120.  
  121.  
  122. '*** LCD_Interface ***
  123. '( muss in jedes Programm mit LCD-Ausgabe eingefuegt werden)
  124.  
  125. #LCD_INIT
  126.  
  127. ' alle ports 0
  128.   lcd_port = OFF
  129.  
  130. ' 8-Bit-Modus aktivieren
  131.   lcd_param=&H38 : gosub LCD_WRITECMD
  132.  
  133. ' mit 8-Bit-Command in 4-Bit-Modus umschalten
  134.   lcd_port=&B00000010
  135.   tog lcd_e
  136.   tog lcd_e
  137.  
  138. ' ab jetzt 4-Bit-Modus
  139.   lcd_param = &H28 : gosub LCD_WRITECMD
  140.   lcd_param = &H0C : gosub LCD_WRITECMD
  141.  
  142. ' Display loeschen
  143. #LCD_CLS
  144.   lcd_param = &H02 : gosub LCD_WRITECMD
  145.   lcd_param = &H01 : gosub LCD_WRITECMD
  146. return
  147.  
  148. ' Zeilenwechsel
  149. #LCD_GOTOLINE
  150.   if lcd_param = 1 then lcd_param = &H80
  151.   if lcd_param = 2 then lcd_param = &HC0
  152.   goto LCD_WRITECMD
  153.  
  154. ' LCD-Kommando
  155. #LCD_WRITECMD
  156.   lcd_buf = OFF
  157.   goto LCD_WRITE
  158.  
  159. ' Zeichenausgabe
  160. #LCD_WRITECHAR
  161.   lcd_buf = &B00100000
  162.  
  163. ' Kommando oder Zeichen an Display senden
  164. #LCD_WRITE
  165.   lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
  166.   tog lcd_e
  167.   tog lcd_e
  168.   lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
  169.   tog lcd_e
  170.   tog lcd_e
  171. return
  172.