Große Ziffern auf LCD Display

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Große Ziffern auf LCD Display

      Hatte hier nicht schon jemand ein Projekt mit größeren Ziffern? Ich habe folgendes zusammen "gemukst":

      Source Code

      1. $regfile = "m8def.dat"
      2. $crystal = 8000000
      3. $hwstack = $40
      4. $swstack = $40
      5. $framesize = $100
      6. $eepleave
      7. $baud = 9600
      8. $sim
      9. Config Base = 0
      10. '------------------------------------------------------------------ LCD
      11. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.4 , Db6 = Portd.7 , Db7 = Portb.1 , E = Portd.6 , Rs = Portd.5
      12. Config Lcd = 16 * 2 'Layout c
      13. Lcd_backlight Alias Portb.2 : Set Lcd_backlight
      14. Initlcd
      15. Cursor Off Noblink
      16. Dim Temp As Byte , Tempw As Word , Tempi As Integer
      17. Dim N As Byte , U As Byte , Ein As Byte , Neu As Byte , Ocal As Byte , L As Byte ' , Ok As Bit
      18. Dim A As Word , B As Word , C As Word 'Schleifenzähler
      19. Dim I As Byte , D As Byte , E As Byte
      20. Dim Aa As Byte At A Overlay
      21. Dim Ze(10 , 2 , 3) As Byte
      22. Do
      23. L = A * 2
      24. If Mcusr.a = 1 Then
      25. Readeeprom Tempw , L
      26. Incr Tempw
      27. Writeeeprom Tempw , L
      28. End If
      29. A = A + 1
      30. Loop Until A = 4
      31. Deflcdchar 0 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 'l
      32. Deflcdchar 1 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32 '-
      33. Deflcdchar 2 , 31 , 31 , 24 , 24 , 24 , 24 , 31 , 31 '[
      34. Deflcdchar 3 , 31 , 31 , 3 , 3 , 3 , 3 , 31 , 31 ']
      35. Deflcdchar 4 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 '_
      36. Deflcdchar 5 , 3 , 3 , 3 , 3 , 3 , 3 , 31 , 31 '_I
      37. Deflcdchar 6 , 24 , 24 , 24 , 24 , 24 , 24 , 31 , 31 'L
      38. Deflcdchar 7 , 31 , 31 , 3 , 3 , 3 , 3 , 3 , 3 '-i
      39. Ze(0 , 0 , 0) = 0 : Ze(0 , 0 , 1) = 7 : Ze(0 , 0 , 2) = 32 '0oben
      40. Ze(0 , 1 , 0) = 6 : Ze(0 , 1 , 1) = 5 : Ze(0 , 1 , 2) = 32 '0Unten
      41. Ze(1 , 0 , 0) = 32 : Ze(1 , 0 , 1) = 0 : Ze(1 , 0 , 2) = 32 '1oben
      42. Ze(1 , 1 , 0) = 32 : Ze(1 , 1 , 1) = 0 : Ze(1 , 1 , 2) = 32 '1Unten
      43. Ze(2 , 0 , 0) = 1 : Ze(2 , 0 , 1) = 3 : Ze(2 , 0 , 2) = 32 '2oben
      44. Ze(2 , 1 , 0) = 2 : Ze(2 , 1 , 1) = 4 : Ze(2 , 1 , 2) = 32 '2Unten
      45. Ze(3 , 0 , 0) = 1 : Ze(3 , 0 , 1) = 3 : Ze(3 , 0 , 2) = 32 '3oben
      46. Ze(3 , 1 , 0) = 4 : Ze(3 , 1 , 1) = 5 : Ze(3 , 1 , 2) = 32 '3Unten
      47. Ze(4 , 0 , 0) = 6 : Ze(4 , 0 , 1) = 5 : Ze(4 , 0 , 2) = 32 '4oben
      48. Ze(4 , 1 , 0) = 32 : Ze(4 , 1 , 1) = 0 : Ze(4 , 1 , 2) = 32 '4Unten
      49. Ze(5 , 0 , 0) = 2 : Ze(5 , 0 , 1) = 1 : Ze(5 , 0 , 2) = 32 '5oben
      50. Ze(5 , 1 , 0) = 4 : Ze(5 , 1 , 1) = 3 : Ze(5 , 1 , 2) = 32 '5Unten
      51. Ze(6 , 0 , 0) = 2 : Ze(6 , 0 , 1) = 1 : Ze(6 , 0 , 2) = 32 '6oben
      52. Ze(6 , 1 , 0) = 6 : Ze(6 , 1 , 1) = 3 : Ze(6 , 1 , 2) = 32 '6Unten
      53. Ze(7 , 0 , 0) = 1 : Ze(7 , 0 , 1) = 7 : Ze(7 , 0 , 2) = 32 '7oben
      54. Ze(7 , 1 , 0) = 32 : Ze(7 , 1 , 1) = 0 : Ze(7 , 1 , 2) = 32 '7Unten
      55. Ze(8 , 0 , 0) = 2 : Ze(8 , 0 , 1) = 3 : Ze(8 , 0 , 2) = 32 '8oben
      56. Ze(8 , 1 , 0) = 6 : Ze(8 , 1 , 1) = 5 : Ze(8 , 1 , 2) = 32 '8Unten
      57. Ze(9 , 0 , 0) = 2 : Ze(9 , 0 , 1) = 3 : Ze(9 , 0 , 2) = 32 '9oben
      58. Ze(9 , 1 , 0) = 4 : Ze(9 , 1 , 1) = 5 : Ze(9 , 1 , 2) = 32 '9Unten
      59. For A = 0 To 9999
      60. C = 10000
      61. Tempw = A
      62. D = 1
      63. E = 0
      64. Do
      65. C = C / 10
      66. B = Tempw / C
      67. If B = 0 And E = 0 Then
      68. Locate 1 , D
      69. Lcd " "
      70. Locate 2 , D
      71. Lcd " "
      72. Else
      73. E = 1
      74. Locate 1 , D
      75. For I = 0 To 2
      76. Lcd Chr(ze(b , 0 , I))
      77. Next
      78. Locate 2 , D
      79. For I = 0 To 2
      80. Lcd Chr(ze(b , 1 , I))
      81. Next
      82. End If
      83. D = D + 3
      84. B = B * C
      85. Tempw = Tempw - B
      86. Loop Until C = 1
      87. Waitms 200
      88. Next
      89. End
      Display All
      das geht doch bestimmt eleganter vor allem aber kleiner. Das soll später in einen Tiny der dann noch Platz für seine eigendliche Aufgabe haben soll. ;( Hat jemand eine Idee?
    • Steht in dem englischen BASCOM- Buch (hab den Titel grad nicht parat), da gibt es eine Ausgabe über zwei Zeilen eines Textdisplays. Wegen Copyright kann ich das nicht online stellen. Dir das heute Abend per PN zu schicken, damit hätte ich kein Problem. Es gibt zwei Zeichensätze, einen schmalen, einen fetten. Alle 8 individuellen Zeichen des Displays werden benötigt.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Das lookup braucht 112 byte mehr - was hab ich da falsch gemacht?

      Source Code

      1. hwstack = $40
      2. $swstack = $40
      3. $framesize = $100
      4. $eepleave
      5. $baud = 9600
      6. $sim
      7. Config Base = 0
      8. '------------------------------------------------------------------ LCD
      9. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.4 , Db6 = Portd.7 , Db7 = Portb.1 , E = Portd.6 , Rs = Portd.5
      10. Config Lcd = 16 * 2 'Layout c
      11. Lcd_backlight Alias Portb.2 : Set Lcd_backlight
      12. Initlcd
      13. Cursor Off Noblink
      14. Dim Temp As Byte , Tempw As Word , Tempi As Integer
      15. Dim A As Word , B As Word , C As Word
      16. Dim I As Byte , D As Byte , E As Byte , L As Byte , Z As Byte
      17. Dim Aa As Byte At A Overlay
      18. Dim Ze(10 , 2 , 2) As Byte
      19. Do
      20. L = A * 2
      21. If Mcusr.a = 1 Then
      22. Readeeprom Tempw , L
      23. Incr Tempw
      24. Writeeeprom Tempw , L
      25. End If
      26. A = A + 1
      27. Loop Until A = 4
      28. Deflcdchar 0 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 'l
      29. Deflcdchar 1 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32 '-
      30. Deflcdchar 2 , 31 , 31 , 24 , 24 , 24 , 24 , 31 , 31 '[
      31. Deflcdchar 3 , 31 , 31 , 3 , 3 , 3 , 3 , 31 , 31 ']
      32. Deflcdchar 4 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 '_
      33. Deflcdchar 5 , 3 , 3 , 3 , 3 , 3 , 3 , 31 , 31 '_I
      34. Deflcdchar 6 , 24 , 24 , 24 , 24 , 24 , 24 , 31 , 31 'L
      35. Deflcdchar 7 , 31 , 31 , 3 , 3 , 3 , 3 , 3 , 3 '-i
      36. For B = 0 To 9
      37. Z = B * 2
      38. Ze(b , 0 , 0) = Lookup(z , Dta0)
      39. Ze(b , 0 , 1) = Lookup(z , Dta1)
      40. Incr Z
      41. Ze(b , 1 , 0) = Lookup(z , Dta0)
      42. Ze(b , 1 , 1) = Lookup(z , Dta1)
      43. Next
      44. cls
      45. For A = 0 To 9999
      46. C = 10000
      47. Tempw = A
      48. D = 1
      49. E = 0
      50. Do
      51. C = C / 10
      52. B = Tempw / C
      53. If B = 0 And E = 0 Then
      54. Locate 1 , D
      55. Lcd " "
      56. Locate 2 , D
      57. Lcd " "
      58. Else
      59. E = 1
      60. Locate 1 , D
      61. For I = 0 To 1
      62. Lcd Chr(ze(b , 0 , I))
      63. Next
      64. Lcd Chr(32)
      65. Locate 2 , D
      66. For I = 0 To 1
      67. Lcd Chr(ze(b , 1 , I))
      68. Next
      69. Lcd Chr(32)
      70. End If
      71. D = D + 3
      72. B = B * C
      73. Tempw = Tempw - B
      74. Loop Until C = 1
      75. Waitms 200
      76. Next
      77. End
      78. Dta0:
      79. Data 0 , 6 , 8 , 8 , 1 , 2 , 1 , 4 , 6 , 8 , 2 , 4 , 2 , 6 , 1 , 8 , 2 , 6 , 2 , 4
      80. Dta1:
      81. Data 7 , 5 , 0 , 0 , 3 , 4 , 3 , 5 , 5 , 0 , 1 , 3 , 1 , 3 , 7 , 3 , 3 , 5 , 3 , 5
      Display All
    • im Flash mit Sram darf ich noch aasen (bleibt aber gleich)
      Read-Funktion? etwa so?

      Source Code

      1. Restore Dta0
      2. For B = 0 To 9
      3. Read Temp
      4. Ze(b , 0 , 0) = Temp
      5. Read Temp
      6. Ze(b , 1 , 0) = Temp
      7. Next
      8. Restore Dta1
      9. For B = 0 To 9
      10. Read Temp
      11. Ze(b , 0 , 1) = Temp
      12. Read Temp
      13. Ze(b , 1 , 1) = Temp
      14. Next
      Display All
      braucht noch 28 byte mehr als lookup a_446_12de8e52

      The post was edited 1 time, last by Pluto25 ().

    • Uhr mit großen Ziffern.ungetestet.Attiny 45

      BASCOM Source Code

      1. '$sim
      2. $regfile = "attiny45.dat"
      3. $crystal = 16000000
      4. $hwstack = 40
      5. $swstack = 16
      6. $framesize = 32
      7. Config Scl = Portb.3
      8. Config Sda = Portb.4
      9. 'Config Lcdpin = Pin , Db4 = Portd.6 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5 , E = Portd.1 , Rs = Portd.0
      10. Config Lcd = 20x4
      11. $lib "YwRobot_Lcd_i2c.lib" 'YwRobot Treiber für LCD
      12. Const Pcf8574_lcd = 126 'Adresse des I2C-LCDs
      13. 'Pcf8574_lcd = 78
      14. 'Pcf8574A_lcd = 126
      15. Dim Lcd_backlight As Byte '1 = an; 0 = aus. Wird erst durch einen LCD-Befehl umgesetzt!
      16. Config I2cdelay = 1 '1=1Mhz,5=200Khz,10=100Khz,15=66,66Khz
      17. 'Wenn in Lcd keine Anzeige muß der Delaywert erhöht werden.Mit Wert 15 beginnen und dann langsam verringern.
      18. Waitms 300 'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init!
      19. Cursor Off , Noblink
      20. Cls
      21. Dim Sekunde As Word
      22. Dim Minute As Word
      23. Dim Stunde As Word
      24. Dim Minuten As Word
      25. Dim Stundeneiner As Word
      26. Dim Stundenzehner As Word
      27. Dim Minuteneiner As Word
      28. Dim Minutenzehner As Word
      29. 'Minuten Einstellen
      30. Config Pinb.2 = Input
      31. Portb.2 = 1
      32. Taster0 Alias Pinb.2
      33. 'Stunden Einstellen
      34. Config Pinb.1 = Input
      35. Portb.1 = 1
      36. Taster1 Alias Pinb.1
      37. Config Pinb.0 = Input
      38. Portb.0 = 1
      39. Const Ds3231_write = &HD0 '208 = &HD0 I2C Adresse DS3231
      40. Const Ds3231_read = &HD1 '209 = &HD1 I2C Adresse DS3231
      41. I2cstart 'Start
      42. I2cwbyte Ds3231_write
      43. I2cwbyte &H0E 'Kontrollregister
      44. I2cwbyte &H40 '&B0100_0000 Sekundentakt Int/SQW ein
      45. I2cstop
      46. '------------ Uhr Voreinstellung ----------------------------------------------
      47. Sekunde = 0
      48. Minute = 0
      49. Stunde = 0
      50. Do
      51. Cls
      52. Debounce Pinb.0 , 0 , Rtc , Sub
      53. Deflcdchar 0 , 0 , 0 , 0 , 0 , 1 , 3 , 7 , 15
      54. Deflcdchar 1 , 0 , 0 , 0 , 0 , 31 , 31 , 31 , 31
      55. Deflcdchar 2 , 0 , 0 , 0 , 0 , 16 , 24 , 28 , 30
      56. Deflcdchar 3 , 31 , 31 , 31 , 31 , 30 , 28 , 24 , 16
      57. Deflcdchar 4 , 16 , 24 , 28 , 30 , 31 , 31 , 31 , 31
      58. Deflcdchar 5 , 15 , 7 , 3 , 1 , 0 , 0 , 0 , 0
      59. Deflcdchar 6 , 31 , 31 , 31 , 31 , 0 , 0 , 0 , 0
      60. Deflcdchar 7 , 30 , 28 , 24 , 16 , 0 , 0 , 0 , 0
      61. ' CLS nach dem DefLCDChar ist wichtig !! (LCD-Controller wird in den Datenmodus zurückgesetzt)
      62. Declare Sub Lcdbig ' Funktion zum Schreiben der großen Zahlen deklarieren
      63. Dim Lcdbigspalte As Byte , Lcdbigzahl As Byte ' Variablen für LCDBig (benötigt weniger Ressourcen wie eine Parameterübergabe an LCDBig)
      64. Lcdbigspalte = 2 : Lcdbigzahl = Stundenzehner : Lcdbig
      65. Lcdbigspalte = 6 : Lcdbigzahl = Stundeneiner : Lcdbig
      66. Lcdbigspalte = 12 : Lcdbigzahl = Minutenzehner : Lcdbig
      67. Lcdbigspalte = 16 : Lcdbigzahl = Minuteneiner : Lcdbig
      68. Locate 2 , 10 : Lcd Chr(111)
      69. Locate 3 , 10 : Lcd Chr(111)
      70. '----------------------------------------------------------
      71. ' Hauptschleife
      72. '----------------------------------------------------------
      73. '----------- Anzeige Stunden , Minuten, auf Display ------------------
      74. If Sekunde = 59 Then Minute = Minute + 1
      75. If Sekunde = 59 Then Minuteneiner = Minuteneiner + 1
      76. If Sekunde = 59 Then Sekunde = 0
      77. If Minuteneiner > 9 Then Minuteneiner = 0
      78. Minutenzehner = Minute / 10
      79. If Minutenzehner > 59 Then Minutenzehner = 0
      80. If Minute = 59 Then Stunde = Stunde + 1
      81. If Minute = 59 Then Stundeneiner = Stundeneiner + 1
      82. If Stundeneiner = 9 Then Stundeneiner = 0
      83. Stundenzehner = Stunde / 10
      84. If Stundenzehner = 2 And Stundeneiner = 3 Then Stundeneiner = 0
      85. If Stundenzehner = 2 And Stundeneiner = 3 Then Stundenzehner = 0
      86. If Minute = 59 Then Minute = 0
      87. If Stunde = 23 Then Stunde = 0
      88. '--------------Uhr einstellen Minute ------------------------------------------
      89. If Taster0 = 0 Then
      90. Waitms 50
      91. Incr Stunde
      92. End If
      93. '--------------Uhr einstellen Stunde -----------------------------------------
      94. If Taster1 = 0 Then
      95. Waitms 50
      96. Incr Minute
      97. End If
      98. '--------Uhr komplett auf Null stellen ----------------------------------------
      99. If Taster0 = 0 And Taster1 = 0 Then
      100. Sekunde = 0
      101. Minute = 0
      102. Stunde = 0
      103. Waitms 50
      104. End If
      105. Loop
      106. '------------------------------------------------------------------------------
      107. Rtc:
      108. Incr Sekunde
      109. Return
      110. '----------------------------------------------------------
      111. ' LCDBig: Funktion zum Schreiben der Zahlen zum LCD
      112. '----------------------------------------------------------
      113. Sub Lcdbig
      114. ' Zeile 1
      115. Locate 1 , Lcdbigspalte
      116. Select Case Lcdbigzahl
      117. Case 0 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      118. Case 1 : Lcd Chr(0) ; Chr(1) ; Chr(32)
      119. Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      120. Case 3 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      121. Case 4 : Lcd Chr(1) ; Chr(32) ; Chr(32)
      122. Case 5 : Lcd Chr(1) ; Chr(1) ; Chr(1)
      123. Case 6 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      124. Case 7 : Lcd Chr(1) ; Chr(1) ; Chr(1)
      125. Case 8 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      126. Case 9 : Lcd Chr(0) ; Chr(1) ; Chr(2)
      127. End Select
      128. ' Zeile 2
      129. Locate 2 , Lcdbigspalte
      130. Select Case Lcdbigzahl
      131. Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
      132. Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
      133. Case 2 : Lcd Chr(0) ; Chr(1) ; Chr(3)
      134. Case 3 : Lcd Chr(32) ; Chr(0) ; Chr(3)
      135. Case 4 : Lcd Chr(255) ; Chr(1) ; Chr(255)
      136. Case 5 : Lcd Chr(255) ; Chr(1) ; Chr(2)
      137. Case 6 : Lcd Chr(255) ; Chr(1) ; Chr(2)
      138. Case 7 : Lcd Chr(32) ; Chr(0) ; Chr(3)
      139. Case 8 : Lcd Chr(255) ; Chr(1) ; Chr(255)
      140. Case 9 : Lcd Chr(255) ; Chr(1) ; Chr(255)
      141. End Select
      142. ' Zeile 3
      143. Locate 3 , Lcdbigspalte
      144. Select Case Lcdbigzahl
      145. Case 0 : Lcd Chr(255) ; Chr(32) ; Chr(255)
      146. Case 1 : Lcd Chr(32) ; Chr(255) ; Chr(32)
      147. Case 2 : Lcd Chr(255) ; Chr(32) ; Chr(32)
      148. Case 3 : Lcd Chr(32) ; Chr(5) ; Chr(4)
      149. Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(255)
      150. Case 5 : Lcd Chr(32) ; Chr(32) ; Chr(255)
      151. Case 6 : Lcd Chr(255) ; Chr(32) ; Chr(255)
      152. Case 7 : Lcd Chr(32) ; Chr(255) ; Chr(32)
      153. Case 8 : Lcd Chr(255) ; Chr(32) ; Chr(255)
      154. Case 9 : Lcd Chr(32) ; Chr(32) ; Chr(255)
      155. End Select
      156. ' Zeile 4
      157. Locate 4 , Lcdbigspalte
      158. Select Case Lcdbigzahl
      159. Case 0 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      160. Case 1 : Lcd Chr(6) ; Chr(6) ; Chr(6)
      161. Case 2 : Lcd Chr(6) ; Chr(6) ; Chr(6)
      162. Case 3 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      163. Case 4 : Lcd Chr(32) ; Chr(32) ; Chr(6)
      164. Case 5 : Lcd Chr(6) ; Chr(6) ; Chr(7)
      165. Case 6 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      166. Case 7 : Lcd Chr(32) ; Chr(6) ; Chr(32)
      167. Case 8 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      168. Case 9 : Lcd Chr(5) ; Chr(6) ; Chr(7)
      169. End Select
      170. End Sub
      Display All
    • Noch ein Beispiel mit Lookup und zweizeilig.

      BASCOM Source Code

      1. $sim
      2. $regfile = "m644def.dat"
      3. $crystal = 8000000
      4. $hwstack = 40
      5. $swstack = 16
      6. $framesize = 32
      7. Config Lcd = 20 * 4
      8. Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portd.7 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portb.0 , Rs = Portb.2
      9. '------------------------
      10. Dim Pas As Byte 'bit location
      11. Dim S As String * 3 'formating string
      12. Dim D(4) As Byte
      13. Dim C As Word 'temporary variable counting in loop / next
      14. Dim B As Byte 'temporary variable counting in loop / next
      15. Dim Array(6) As Byte 'erstes element im Array ist der Digit counter !
      16. Dim X As Word 'länge des Strings
      17. Dim La As String * 3
      18. Dim L As Word
      19. Dim I As Byte
      20. Declare Sub Printing(byval V1 As String * 3)
      21. Declare Sub Send2lcd
      22. '-------------------------------------------------------------------------------
      23. Deflcdchar 0 , 15 , 31 , 31 , 31 , 31 , 31 , 31 , 15 '0 full left
      24. Deflcdchar 1 , 30 , 31 , 31 , 31 , 31 , 31 , 31 , 30 '1 full right
      25. Deflcdchar 2 , 31 , 31 , 32 , 32 , 32 , 32 , 32 , 32 '2 up
      26. Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 '3 down
      27. Deflcdchar 4 , 31 , 31 , 32 , 32 , 32 , 32 , 31 , 31 '4 up,down
      28. Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 14 , 14 , 14 '5 comma
      29. Deflcdchar 6 , 32 , 32 , 32 , 32 , 32 , 32 , 24 , 28 '6 rounded
      30. Deflcdchar 7 , 31 , 31 , 32 , 32 , 32 , 32 , 24 , 28 '7 rounded beak
      31. Cls
      32. Cursor Off
      33. Do
      34. For I = 9 To 0 Step -1
      35. L = I
      36. Waitms 100
      37. Locate 3 , 13
      38. Lcd "sec"
      39. La = Str(l)
      40. La = Format(la , "0")
      41. Printing La
      42. Next
      43. 'Locate 2 , 8 : Lcd Chr(6)
      44. Loop
      45. End
      46. '-----------------------------------------------------------------------------
      47. Sub Printing(v1 As String * 3)
      48. Str2digits V1 , Array(1)
      49. X = Array(1) + 1
      50. For C = X To 2 Step -1
      51. If C = X Then
      52. Pas = 9
      53. Else
      54. Pas = Pas + 4
      55. End If
      56. S = Lookupstr(array(c) , Table_up)
      57. Locate 3 , Pas
      58. Send2lcd
      59. S = Lookupstr(array(c) , Table_down)
      60. Locate 4 , Pas
      61. Send2lcd
      62. Next C
      63. End Sub
      64. '-----------------------------------------------------------------------------
      65. Sub Send2lcd
      66. Str2digits S , D(1)
      67. For B = 4 To 2 Step -1
      68. Lcd Chr(d(b))
      69. Next B
      70. End Sub
      71. '----------------------------------Data Table---------------------------------
      72. Table_up:
      73. Data "021" , "21A" , "241" , "441" , "0A3" , "047" , "046" , "221" , "041" , "041" , "041" , "02A" ' bildet die obere Hälfte der Zahl
      74. Table_down:
      75. Data "031" , "303" , "033" , "331" , "220" , "331" , "031" , "AA1" , "031" , "A31" , "AAA" , "03A" ' bildet die untere Hälfte der Zahl
      76. '------0-------1-------2-------3-------4-------5-------6-------7-------8-------9-------°-------C---
      Display All
    • Helimike0705 wrote:

      Ist das eigentlich so in Ordnung
      Nicht wirklich. (Copy und paste Fehler). Das $ vor dem variablenwert bezeichent ihn als Hex-Zahl.


      ftelektro wrote:

      Uhr mit großen Ziffern
      Die 3 sieht gut aus
      Zwischenablage01.jpg

      ftelektro wrote:

      Noch ein Beispiel mit Lookup und zweizeilig.
      Das ist bisher das kleinste - vielleicht auch wegen den genialen Lösung mit dem Str2digits

      Zwischenablage02.jpg

      Bella-Amica wrote:

      Hatte ich hier schon mal eingestellt.
      Das war das was ich in Erinnerung hatte aber nicht mehr fand.
      Eine schöne 7 und mehr Zeichen möglich durch den engeren Abstand.
      Zwischenablage03.jpg
      Ob es sinnvoll ist die 1 und 3 auf zwei Spalten zu reduzieren?
    • Schönen Dank für Eure Vorschläge.
      Nun hab ich mal ein Extrakt daraus gebastelt:

      Source Code

      1. $regfile = "m8def.dat" 'Chip festlegen
      2. $crystal = 8000000 '
      3. $hwstack = 64
      4. $swstack = 64
      5. $framesize = 100
      6. $sim
      7. Config Base = 0
      8. Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.4 , Db6 = Portd.7 , Db7 = Portb.1 , E = Portd.6 , Rs = Portd.5
      9. Config Lcd = 16 * 2 'Layout c
      10. Lcd_backlight Alias Portb.2 : Set Lcd_backlight
      11. Initlcd
      12. Cursor Off Noblink
      13. Deflcdchar 0 , 32 , 32 , 32 , 32 , 32 , 32 , 7 , 3 ' unterer Fuß
      14. Deflcdchar 1 , 28 , 24 , 32 , 32 , 32 , 32 , 24 , 28 'Rechte Ecke
      15. Deflcdchar 2 , 31 , 31 , 31 , 32 , 32 , 32 , 32 , 32 'Oberster Strich
      16. Deflcdchar 3 , 32 , 32 , 32 , 32 , 32 , 32 , 31 , 31 'Unterer Strich
      17. Deflcdchar 4 , 31 , 31 , 31 , 32 , 32 , 32 , 31 , 31 'Strich Oben und Mitte
      18. Deflcdchar 5 , 24 , 28 , 28 , 28 , 28 , 28 , 28 , 24 'Rechter Strich
      19. Deflcdchar 6 , 3 , 7 , 7 , 7 , 7 , 7 , 7 , 3 ' 'Linker Strich
      20. Deflcdchar 7 , 1 , 3 , 7 , 32 , 32 , 32 , 32 , 32 'Nase für 1
      21. Dim X As Byte , B As Byte , C As Byte , D As Byte
      22. Dim A As Word
      23. Dim Array(7) As Byte
      24. Dim Da(6) As Byte
      25. Dim Bs As Byte
      26. Dim Temp As Byte , Tempw As Word , Tempstr As String * 8
      27. Dim S As String * 3
      28. Declare Sub Send2lcd
      29. Cls
      30. Do
      31. For A = 19999 To 0 Step -1
      32. Tempstr = Str(a)
      33. Str2digits Tempstr , Array(1)
      34. C = 0
      35. D = 2
      36. For B = 13 To 1 Step -3
      37. Locate 1 , B
      38. If C < Array(1) Then
      39. 'S = Linia_g(array(d))
      40. S = Lookupstr(array(d) , Table_up)
      41. Send2lcd
      42. Else
      43. Lcd " "
      44. End If
      45. Locate 2 , B
      46. If C < Array(1) Then
      47. 'S = Linia_d(array(d))
      48. S = Lookupstr(array(d) , Table_down)
      49. Send2lcd
      50. Else
      51. Lcd " "
      52. End If
      53. Incr C
      54. Incr D
      55. Next
      56. Next
      57. Loop
      58. Sub Send2lcd
      59. Str2digits S , Da(1)
      60. For Bs = 4 To 2 Step -1
      61. Lcd Chr(da(bs))
      62. Next Bs
      63. End Sub
      64. Table_up:
      65. Data "625" , "875" , "745" , "745" , "635" , "641" , "641" , "625" , "645" , "645" ' bildet die obere Hälfte der Zahl
      66. Table_down:
      67. Data "635" , "885" , "638" , "035" , "885" , "035" , "635" , "885" , "635" , "035" ' bildet die untere Hälfte der Zahl
      68. '------0-------1-------2-------3-------4-------5-------6-------7-------8-------9----
      Display All
      Zwischenablage04.jpg

      Sieht jemand noch Optimierungsmöglichkeiten? Flashgröße / Design?