Strona 1 z 1

Wyświetlacz 1.8' ST7735

: 15 lis 2017, 10:32
autor: Karlos128@nos
Witam, próbuję uruchomić od jakiegoś czasu ten mały wyświetlacz i mam pewien problem.
Otóż wyświetlacz już działa, i mogę tylko wyświetlić np. tekst lub jakiś obrazek, ale mnie bardziej interesuje o wyświetlenie
zmiennej takiej która to będzie np. timerem, miernika napięcia czy temperatury.
Poniżej zamieszczam kod i bardzo bym prosił o pomoc w tej sprawie bo chciałbym uruchomić pierwszy swój jakiś projekcik
z wyświetlaczem kolorowym.
  1. '*******************************************************************************
  2. 'Programm for Display ST7735R 1.8Zoll 128x160
  3. '         and Display ILI9163 1.8Zoll 128x160
  4. 'Bascom IDE 2.0.7.7
  5. '
  6. 'Version:13012014
  7. 'By Hkipnik
  8. ' © Copyright by H.Kipnik 2012
  9. 'Date 13.01.2014
  10. '*******************************************************************************
  11. ' SD Card CS --> portb.0
  12. '       Miso --> portb.3
  13. 'Display
  14. '         CS --> portb.7
  15. '         DC --> portb.5
  16. '      reset --> portb.6
  17. '       Mosi --> portb.2
  18. '      Clock --> portb.1
  19. '       Lite --> +5V
  20. '
  21. '*******************************************************************************
  22.  
  23. $regfile = "m2560def.dat"
  24. $crystal = 16000000
  25. $hwstack = 250
  26. $swstack = 250
  27. $framesize = 300
  28.  
  29. $baud = 57600
  30. '*******************************************************************************
  31.  
  32. Const Sdcard = 1                                            'use SD Card = 1  no SD Card = 0
  33. Const Modus = 1                                             '0=Portrait  1=Landscape
  34. Const Driver = 1                                            '0=ST7735   1=ILI9163
  35.  
  36. 'only Display ST7735
  37. 'Display typ Red or black Tab have different RGB order
  38. 'color of the display plastic wrap
  39. Const Disp_typ = 1                                          'RGB order 0=Black Tab   1=Red Tab
  40. '*******************************************************************************
  41. Config Portk.7 = Output
  42. Config Portk.5 = Output
  43. Config Portk.6 = Output
  44. Lcd_cs Alias Portk.7
  45. Lcd_dc Alias Portk.5
  46. Lcd_reset Alias Portk.6
  47. Portk.7 = 1
  48. '*******************************************************************************
  49. 'Include Declaration
  50. $include "18Spi_declarations.inc"
  51. '*******************************************************************************
  52. ' Init Sd Card And Spi
  53. #if Sdcard = 1
  54.    $include "Config_MMCSD_HC.bas"
  55.    $include "Config_AVR-DOS.bas"
  56.    Call Init_sd_card()
  57. #endif
  58.  
  59. #if Sdcard = 0
  60.    Config Portb.0 = Output                                  'auch wenn nicht genutzt
  61.    Portb.0 = 1
  62.    Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4 , Noss = 1
  63.    Spsr.0 = 1
  64.    Spiinit
  65. #endif
  66.  
  67. Dim Timerek As Byte
  68. Dim Tekst As Integer
  69.  
  70. '*******************************************************************************
  71. 'Init the Dispaly
  72. Call Lcd_init()
  73. '*******************************************************************************
  74. Tim = 10
  75.  
  76. Call Lcd_clear(black)
  77.  
  78. #if Modus = 1
  79.    Call Lcd_set_window(0 , 0 , 159 , 127)
  80. #else
  81.    Call Lcd_set_window(0 , 0 , 127 , 159)
  82. #endif
  83. Wait 2
  84. Call Lcd_box(2 , 2 , 154 , 122 , 3 , Blue , Green)
  85. Waitms 100
  86. 'Modus = 1
  87.  
  88. Do
  89. '*******************************************************************************
  90. Rem  ********** TEKST NA WYŚWIETLACZ *******************************************
  91. ' ************* Wielkość tekstu wybieramy **************************************
  92. ' ************* If Fontset = 1 Then Restore Font8x8
  93.               ' If Fontset = 2 Then Restore Font12x16
  94.               ' If Fontset = 3 Then Restore Font8x12
  95. '             ' If Fontset = 4 Then Restore Font6x10
  96. '             ' If Fontset = 5 Then Restore Font10x16
  97.  
  98. '*******************************************************************************
  99.    #if Modus = 1
  100.  
  101.       'Call Lcd_clear(black)
  102.       'Call Lcd_text( "Font 6x10" , 15 , 20 , 1 , Red , Transparent)
  103.       'Call Lcd_text( "Font 8x8" , 5 , 40 , 4 , Yellow , Transparent)
  104.       'Call Lcd_text( "Font 8x12" , 5 , 60 , 3 , Green , Transparent)
  105.       'Call Lcd_text( "Font 12x16" , 5 , 80 , 2 , Blue , Transparent)
  106.       'Call Lcd_text( "TIMER" , 20 , 20 , 2 , Yellow , Transparent)
  107.       Call Lcd_text( "00:00" , 20 , 40 , 2 , Blue , Transparent)
  108.       Wait 1
  109.  
  110.    #endif
  111. ' ******************************************************************************
  112. '      #if Sdcard = 1
  113. '         Call Lcd_pic(0 , 0 , 160 , 128 , "a12.bin")
  114. '         Call Lcd_text( "Transparent" , 25 , 50 , 3 , Red , Transparent)
  115. '         Call Lcd_text( "Text" , 60 , 80 , 3 , Red , Transparent)
  116. '         Wait 2
  117. '         Call Lcd_pic(0 , 0 , 160 , 128 , "a13.bin")
  118. '         Call Lcd_text( "Holiday" , 40 , 50 , 3 , Yellow , Transparent)
  119. '         Wait 2
  120. '         Call Lcd_clear(black)
  121. '         Call Lcd_pic(5 , 5 , 150 , 113 , "1501.bin")
  122. '         Wait 2
  123. '         Call Lcd_pic(5 , 5 , 150 , 113 , "1502.bin")
  124. '         Wait 2
  125. '         Call Lcd_pic(5 , 5 , 150 , 113 , "1503.bin")
  126. '         Wait 2
  127. '      #endif
  128. '-------------------------------------------------------------------------------
  129. '      Call Lcd_clear(black)
  130. '      Call Lcd_text( "Pic from Flash" , 20 , 5 , 3 , Yellow , Black)
  131. '      Restore Pic1
  132. '      '                  X    Y  Breite Höhe
  133. '      Call Lcd_pic_rom(45 , 30 , 70 , 70)                   'Bin file
  134. '      Wait 2
  135. '-------------------------------------------------------------------------------
  136. '      Call Lcd_clear(black)
  137. '      Call Lcd_text( "Line" , 60 , 5 , 3 , Yellow , Black)
  138. '      Call Lcd_line(0 , 0 , 159 , 0 , 1 , White)
  139. '      Call Lcd_line(0 , 127 , 159 , 127 , 1 , White)
  140. '      Call Lcd_line(0 , 0 , 0 , 127 , 1 , White)
  141. '      Call Lcd_line(159 , 0 , 159 , 127 , 1 , White)
  142. '      Call Lcd_line(1 , 1 , 158 , 126 , 2 , Red)
  143. '      Call Lcd_line(1 , 126 , 158 , 1 , 2 , Yellow)
  144. '-------------------------------------------------------------------------------
  145. '      Wait 2
  146. '      Call Lcd_clear(black)
  147. '      Call Lcd_text( "Circle" , 55 , 1 , 3 , Yellow , Black)
  148. '      Call Lcd_circle(80 , 68 , 50 , Green)
  149. '      Call Lcd_circle(80 , 68 , 40 , Red)
  150. '      Call Lcd_circle(80 , 68 , 30 , Blue)
  151. '      Call Lcd_circle(80 , 68 , 20 , Yellow)
  152. '      Call Lcd_circle(80 , 68 , 10 , Magenta)
  153. '      Call Lcd_circle(80 , 68 , 5 , Brown)
  154. '      Wait 2
  155. '-------------------------------------------------------------------------------
  156. '      Call Lcd_clear(white)
  157. '      Call Lcd_fill_circle(22 , 30 , 15 , Green)
  158. '      Call Lcd_fill_circle(138 , 30 , 15 , Red)
  159. '      Call Lcd_fill_circle(80 , 30 , 15 , Blue)
  160.  
  161. '      Call Lcd_fill_circle(22 , 80 , 10 , Blue)
  162. '      Call Lcd_fill_circle(138 , 80 , 10 , Green)
  163. '      Call Lcd_fill_circle(80 , 80 , 10 , Red)
  164.  
  165. '      Call Lcd_fill_circle(22 , 110 , 5 , Red)
  166. '      Call Lcd_fill_circle(138 , 110 , 5 , Blue)
  167. '      Call Lcd_fill_circle(80 , 110 , 5 , Green)
  168. '      Call Lcd_text( "Circle Fill" , 40 , 50 , 3 , Black , Transparent)
  169. '      Wait 2
  170. '      Call Lcd_clear(black)
  171. '-------------------------------------------------------------------------------
  172. '      Call Lcd_text( "Box Fill" , 45 , 2 , 3 , Yellow , Black)
  173. '      Call Lcd_box(20 , 20 , 120 , 88 , 1 , Yellow , Red)
  174. '      Call Lcd_box(30 , 30 , 100 , 68 , 1 , Green , Red)
  175. '      Call Lcd_box(40 , 40 , 80 , 48 , 1 , Red , Red)
  176. '      Call Lcd_box(50 , 50 , 60 , 28 , 1 , Blue , Red)
  177.  
  178. '      Wait 2
  179. '      Call Lcd_clear(black)
  180. '      Call Lcd_text( "Box with Border" , 20 , 2 , 3 , Yellow , Black)
  181. '      Call Lcd_box(20 , 20 , 120 , 88 , 2 , Yellow , Red)
  182. '      Call Lcd_box(30 , 30 , 100 , 68 , 2 , Green , Blue)
  183. '      Call Lcd_box(40 , 40 , 80 , 48 , 2 , Red , Yellow)
  184. '      Call Lcd_box(50 , 50 , 60 , 28 , 2 , Blue , Green)
  185.  
  186. '      Wait 2
  187. '      Call Lcd_clear(black)
  188. '      Call Lcd_text( "Box" , 63 , 2 , 3 , Yellow , Black)
  189. '      Call Lcd_box(20 , 20 , 120 , 88 , 3 , Yellow , Red)
  190. '      Call Lcd_box(30 , 30 , 100 , 68 , 3 , Green , Blue)
  191. '      Call Lcd_box(40 , 40 , 80 , 48 , 3 , Red , Yellow)
  192. '      Call Lcd_box(50 , 50 , 60 , 28 , 3 , Blue , Green)
  193. '-------------------------------------------------------------------------------
  194. '      Wait 2
  195. '      Call Lcd_clear(yellow)
  196. '      Waitms 500
  197. '      Call Lcd_clear(red)
  198. '      Waitms 500
  199. '      Call Lcd_clear(green)
  200. '      Waitms 500
  201. '   #endif
  202. '*******************************************************************************
  203. 'test Portrait
  204. '*******************************************************************************
  205. '   #if Modus = 0
  206. '      Call Lcd_clear(black)
  207.  
  208. '      Call Lcd_clear(black)
  209. '      Call Lcd_text( "Font 6x10" , 5 , 20 , 4 , Red , Transparent)
  210. '      Call Lcd_text( "Font 8x8" , 5 , 40 , 1 , Yellow , Transparent)
  211. '      Call Lcd_text( "Font 8x12" , 5 , 60 , 3 , Green , Transparent)
  212. '      Call Lcd_text( "Font 12x16" , 1 , 80 , 2 , Blue , Transparent)
  213. '      Call Lcd_text( "Font 10x16" , 1 , 110 , 5 , Yellow , Transparent)
  214. '      Wait 2
  215. '-------------------------------------------------------------------------------
  216. '      Call Lcd_clear(black)
  217. '      Call Lcd_text( "Line" , 40 , 2 , 3 , Yellow , Black)
  218. '      Call Lcd_line(1 , 1 , 127 , 1 , 1 , Yellow)
  219. '      Call Lcd_line(1 , 1 , 1 , 159 , 1 , Yellow)
  220. '      Call Lcd_line(127 , 1 , 127 , 159 , 1 , Yellow)
  221. '      Call Lcd_line(1 , 159 , 127 , 159 , 1 , Yellow)
  222. '      Call Lcd_line(1 , 1 , 127 , 159 , 2 , Yellow)
  223. '      Call Lcd_line(127 , 1 , 1 , 159 , 2 , Yellow)
  224. '      Wait 2
  225. '-------------------------------------------------------------------------------
  226. '      Call Lcd_clear(black)
  227. '      Call Lcd_text( "Circle fill" , 18 , 2 , 3 , Yellow , Black)
  228. '      Call Lcd_fill_circle(64 , 80 , 40 , Yellow)
  229. '      Call Lcd_fill_circle(64 , 80 , 30 , Red)
  230. '      Call Lcd_fill_circle(64 , 80 , 20 , Green)
  231. '      Call Lcd_fill_circle(64 , 80 , 10 , Blue)
  232. '      Call Lcd_fill_circle(64 , 80 , 5 , Yellow)
  233. '      Wait 2
  234. '-------------------------------------------------------------------------------
  235. '      Call Lcd_clear(black)
  236. '      Call Lcd_text( "Circle" , 38 , 2 , 3 , Yellow , Black)
  237. '      Call Lcd_circle(64 , 80 , 40 , Red)
  238. '      Call Lcd_circle(64 , 80 , 30 , Yellow)
  239. '      Call Lcd_circle(64 , 80 , 20 , Green)
  240. '      Call Lcd_circle(64 , 80 , 10 , Blue)
  241. '      Call Lcd_circle(64 , 80 , 5 , Yellow)
  242. '      Wait 2
  243. '      Call Lcd_clear(black)
  244. '-------------------------------------------------------------------------------
  245. '      Call Lcd_text( "Box Fill" , 10 , 2 , 3 , Yellow , Black)
  246. '      Call Lcd_box(14 , 40 , 100 , 100 , 1 , Blue , Red)
  247. '      Call Lcd_box(24 , 50 , 80 , 80 , 1 , Red , Red)
  248. '      Call Lcd_box(34 , 60 , 60 , 60 , 1 , Yellow , Red)
  249. '      Call Lcd_box(44 , 70 , 40 , 40 , 1 , Green , Red)
  250. '      Call Lcd_box(54 , 80 , 20 , 20 , 1 , Brown , Red)
  251. '      Wait 2
  252. '      Call Lcd_clear(black)
  253.  
  254. '      Call Lcd_text( "Box with Border" , 5 , 2 , 3 , Yellow , Black)
  255. '      Call Lcd_box(14 , 40 , 100 , 100 , 2 , Blue , Red)
  256. '      Call Lcd_box(24 , 50 , 80 , 80 , 2 , Red , Green)
  257. '      Call Lcd_box(34 , 60 , 60 , 60 , 2 , Yellow , Blue)
  258. '      Call Lcd_box(44 , 70 , 40 , 40 , 2 , Green , Red)
  259. '      Call Lcd_box(54 , 80 , 20 , 20 , 2 , Brown , White)
  260. '      Wait 2
  261. '      Call Lcd_clear(black)
  262.  
  263. '      Call Lcd_text( "Box" , 10 , 2 , 3 , Yellow , Black)
  264. '      Call Lcd_box(14 , 40 , 100 , 100 , 3 , Blue , Red)
  265. '      Call Lcd_box(24 , 50 , 80 , 80 , 3 , Red , Green)
  266. '      Call Lcd_box(34 , 60 , 60 , 60 , 3 , Yellow , Blue)
  267. '      Call Lcd_box(44 , 70 , 40 , 40 , 3 , Green , Red)
  268. '      Call Lcd_box(54 , 80 , 20 , 20 , 3 , Brown , White)
  269. '      Wait 2
  270. '-------------------------------------------------------------------------------
  271. '      #if Sdcard = 1
  272. '         Call Lcd_clear(black)
  273. '         Call Lcd_pic(60 , 60 , 50 , 50 , "UHR1.bin")
  274. '         Wait 2
  275. '         Call Lcd_pic(0 , 0 , 128 , 160 , "h10.bin")
  276. '         Call Lcd_text( "Transparent" , 10 , 50 , 3 , Red , Transparent)
  277. '         Wait 2
  278. '         Call Lcd_pic(0 , 0 , 128 , 160 , "h11.bin")
  279. '         Wait 2
  280. '         Call Lcd_pic(0 , 0 , 128 , 160 , "h12.bin")
  281. '         Wait 2
  282. '      #endif
  283. '-------------------------------------------------------------------------------
  284. '      Call Lcd_clear(red)
  285. '      Restore Pic1
  286. '      '                  X    Y  Breite Höhe
  287. '      Call Lcd_pic_rom(20 , 20 , 70 , 70)                   'Bin file
  288. '      Wait 4
  289.  
  290.  
  291. '   #endif
  292.  
  293. Loop
  294. End
  295. '*******************************************************************************
  296. $include "18Spi_functions.inc"
  297. #if Sdcard = 1
  298.    $include "SD_card_init.inc"
  299. #endif
  300.  
  301. '$inc Pic1 , Nosize , "Bilder\204.bin"                       '70x70
  302.  
  303. $include "Font\Font12x16.font"
  304. $include "Font\Font8x8.font"
  305. $include "Font\font8x12.font"
  306. $include "Font\font6x10.font"
  307. $include "Font\font10x16.font"
  308. '*******************************************************************************

Re: Wyświetlacz 1.8' ST7735

: 15 lis 2017, 10:54
autor: niveasoft
To chyba nieskomplikowane. Deklarujesz sobie jakąś zmienną typu String i ją potem wstawasz zamiast tego stałego tekstu.
  1. Dim Helpstr As String * 20
  2. Dim Myword As Word
  3.  
  4. Helpstr = Str(Myword)
  5. Call Lcd_text( Helpstr , 20 , 40 , 2 , Blue , Transparent)

Re: Wyświetlacz 1.8' ST7735

: 15 lis 2017, 11:44
autor: Karlos128@nos
No i cacy, cztery linijki kodu zmieniły bieg historii.
Jeszcze jedna sprawa jak przed wyświetleniem nowego wordu wyczyścić nieaktualny tak aby nie czyścić całego ekranu.

A za pomoc bardzo ci dziękuję.

Re: Wyświetlacz 1.8' ST7735

: 15 lis 2017, 11:53
autor: niveasoft
Nie wiem jak się zachowują te procedury. Nie mam czasu podłączać.
Możesz na początek wyświetlić spacje w kolorze ekranu.
  1. Call Lcd_text( "     " , 20 , 40 , 2 , Transparent , Transparent)
  2. 'albo
  3. Call Lcd_text( "     "  , 20 , 40 , 2 , Kolor_ekranu , Transparent)

Re: Wyświetlacz 1.8' ST7735

: 15 lis 2017, 12:12
autor: Karlos128@nos
Niestety nie ma rezultatu, nad wieczorkiem wypróbuje funkcji boxfill w danym obszarze.
A czy ten str(xxx) wyświetli także np. taką składnię - 14.20 ?

Re: Wyświetlacz 1.8' ST7735

: 15 lis 2017, 12:17
autor: niveasoft
To zależy od zmiennej którą chcesz pokazać.
Jak Single to jest do tego funkcja Fusing() a jak chcesz tylko wstawić przecinek to używasz Format()
  1. Helpstr = Str(Myword)
  2. Helpstr = Format(Helpstr, "0.00") ' wstawi przecinek dwa miejsca od końca

Re: Wyświetlacz 1.8' ST7735

: 15 lis 2017, 17:51
autor: Karlos128@nos
Wielkie podziękowania za okazaną pomoc.
Co do czyszczenia zmiennej to użyłem takiej procedurki jak pisałem wcześniej typu :
  1.    Call Lcd_text( "TIMER-" , 8 , 23 , 2 , Yellow , Transparent)
  2.    Wait 1
  3.    Call Lcd_box(82 , 20 , 35 , 20 , 2 , Red , Yellow) ' tutaj następuje czyszczenie zmiennej
  4.    Helpstr = Str(myword)
  5.    Call Lcd_text(helpstr , 80 , 23 , 2 , Yellow , Transparent)
Może to i dziwaczny sposób ale jakoś przynajmniej się nie zamazuje.

Re: Wyświetlacz 1.8' ST7735

: 28 sty 2018, 14:16
autor: Karlos128@nos
Powracam jeszcze do tego wyświetlacza, chcę wyświetlić jakiś mały obrazek no i mam mały problem bo ładowane obrazy mogą być w formacie *bin.
Jak przerobić BMP lub jpeg na postać BIN ? Dodam że mam zainstalowane różne programy do obróbki zdjęć i żaden z nich nie konwertuje do postaci *bin.
  1. Restore Pic1
  2. Call Lcd_pic_rom(0 , 0 , 160 , 128)
Ten kod ładuje obraz i wyświetla na lcd, a poniżej obraz jest wgrywany do pamięci uC.
  1. $inc Pic1 , Nosize , "Bilder\solar.bin"

Re: Wyświetlacz 1.8' ST7735

: 28 sty 2018, 14:27
autor: Henryk
Karlos128@nos pisze: ↑
28 sty 2018, 14:16
chcę wyświetlić jakiś mały obrazek no i mam mały problem bo ładowane obrazy mogą być w formacie *bin.
Witam :D
Prościej to już chyba nie można tego zrobić ;) :arrow: Link
Pozdrowienia Henryk :D

Re: Wyświetlacz 1.8' ST7735

: 28 sty 2018, 19:15
autor: Karlos128@nos
A no niestety, ale to prościej nie działa.
Działa za to taki programik Image2 LCD v3.2.