Sari la conținut
ELFORUM - Forumul electronistilor

Afisare text mare pe un lcd graphic cod bascom si numarator!


Cilibiu

Postări Recomandate

Nu cred ca merge asa

Lcdtext Volt , 20 , 30 , 1 , 0 , 0
.Ai putea incerca asta
'Locate 1 , 1Lcdtext "8X8 font=" , 10 , 32 , 2 , 0 , 0Locate 5 , 17Lcd Fusing(volt , "#.##")
Da' de ce nu
Lcdtext Fusing(volt , "#.##"), 10, 50, 2, 0, 0
?Eventual varianta mai "detaliata":
Dim TextToLcd as StringTextToLcd = Fusing(volt, "#.##")  'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0
.
Link spre comentariu
  • Răspunsuri 73
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Cilibiu

    36

  • iulian2010

    17

  • Liviu M

    16

  • francezu

    2

Top autori în acest subiect

Imagini postate

Ma refeream strict la acea linie. Nu am avut prea mult timp sa testez codul lui Cilibiu.Am obervat ca varianta aleasa de tine este buna. Variabila poti sa o declari Dim Texttolcd As String * 6.

Link spre comentariu

Asa am presupus si eu ca merge dar nu merge, si nici acum numi dau seama de ce!

Da' de ce nu

Lcdtext Fusing(volt , "#.##"), 10, 50, 2, 0, 0
?

Eroare bascom 130

 

Eventual varianta mai "detaliata":

Cod:Dim TextToLcd as StringTextToLcd = Fusing(volt, "#.##")  'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0

Eroare bascom 223,46,124

Prin manualul de la bascom gasit pe intrenet scrie ca
STR

Action

Returns a string representation of a number.

Syntax

var = STR( x)

Poti sa-l incerci in locul lui Fusing, sa vezi daca reuseti sa convertesti rezultatul in string; am inteles ca pe astea le poti afisa.

Habar nu am cum sa integrez comanda asta, daca ai da un exemplu sa ma orientez ar fi bine!

Link spre comentariu
$regfile = "m128def.DAT"$crystal = 8000000$baud = 19200$hwstack = 100$swstack = 120$framesize = 100Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6Cursor OffClsDeclare Sub Lcdtext(byval S As String , Byval Xoffset As Byte , Byval Yoffset As Byte , Byval Fontset As Byte , Byval Inverse As Byte , Byval Rotation As Byte)Dim Adcv As Word , Volt As SingleConst Dif = 5 / 1024Const Volt_div = 0.01Config Adc = Single , Prescaler = Auto , Reference = AvccStart AdcClsDoAdcv = Getadc(0)                                            ' 0 = ADC0   Waitms 50   'Calcul   Volt = Adcv * Dif   Volt = Volt / Volt_div'Lcdtext Volt , 20 , 30 , 1 , 0 , 0'locate 1,1'lcd voltDim Texttolcd As String * 6TextToLcd = Fusing(volt, "#.##")  'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0LoopEnd'=== Sub Routines ===Sub Lcdtext(byval S As String , Xoffset As Byte , Yoffset As Byte , Fontset As Byte , Inverse As Byte , Rotation As Byte)Local Tempstring As String * 1 , Temp As Byte               'Dim local the variablesLocal A As Byte , Pixels As Byte , Count As Byte , Carcount As Byte , Lus As ByteLocal Row As Byte , Byteseach As Byte , Blocksize As Byte , Dummy As ByteLocal Colums As Byte , Columcount As Byte , Rowcount As Byte , Stringsize As ByteLocal Xpos As Byte , Ypos As Byte , Pixel As Byte , Pixelcount As ByteStringsize = Len(s) - 1                                     'Size of the text string -1 because we must start with 0For Carcount = 0 To Stringsize                              'Loop for the numbers of caracters that must be displayedIf Fontset = 1 Then Restore Font16x16                      'Add or remove here fontset's that you need or not,If Fontset = 2 Then Restore Font16x16                       'this is the name that you gave to the font, NOT the filename'If Fontset = 3 Then Restore Font16x16                      'If you dont know the name, open the font file in wordpad, and there it is,'If Fontset = 4 Then Restore Font16x16                      'right on top.Temp = Carcount + 1                                        'Cut the text string in seperate caractersTempstring = Mid(s , Temp , 1)Read Row : Read Byteseach : Read Blocksize : Read Dummy     'Read the first 4 bytes from the font fileTemp = Asc(tempstring) - 32                                 'Font files start with caracter 32For Lus = 1 To Temp                                         'Do dummie read to point to the correct line in the fontfile   For Count = 1 To Blocksize    Read Pixels   Next CountNext LusColums = Blocksize / Row                                    'Calculate the numbers of columsRow = Row * 8                                               'Row is always 8 pixels high = 1 byte, so working with row in steps of 8.Row = Row - 1                                               'Want to start with row=0 instead of 1Colums = Colums - 1                                         'Same for the columsSelect Case Rotation    Case 0                                                  '0 degrees rotation            For Rowcount = 0 To Row Step 8                  'Loop for numbers of rows                  A = Rowcount + Yoffset                  For Columcount = 0 To Colums              'Loop for numbers of Colums                      Read Pixels : If Inverse = 1 Then Toggle Pixels       'Read the byte from the file and if inverse = true then invert de byte                      Xpos = Columcount                     'Do some calculation to get the caracter on the correct Xposition                      Temp = Carcount * Byteseach                      Xpos = Xpos + Temp                      Xpos = Xpos + Xoffset                          For Pixelcount = 0 To 7           'Loop for 8 pixels to be set or not                             Ypos = A + Pixelcount          'Each pixel on his own spot                             Pixel = Pixels.0               'Set the pixel (or not)                             Pset Xpos , Ypos , Pixel       'Finaly we can set the pixel                             Shift Pixels , Right           'Shift the byte 1 bit to the right so the next pixel comes availible                          Next Pixel                  Next Columcount            Next RowcountEnd SelectNext CarcountEnd Sub                                                     'End of this amazing subroutine'=== Includes ===$include "Font16x16.font"                                   'Includes here your font files$include "font8x8.font"
Link spre comentariu

Mersi ....... Functioneaza :101 :101 :101

Eu reusisem ceva, nu mai dea erori cu urmatorul cod: dar nu afisa ce trebuia!

 Volt As SingleDim S As String * 10Lcdtext S , 10 , 32 , 1 , 0 , 0S = Str(volt)
Umplea randul cu patratele, in fine am reusit cu ajutorul tau, acum pot sa ma apuc sa creez codul final al proiectului, mersi mult inca o data, esti tare si le ai :da
Link spre comentariu

Bravo!Eu am incercat doar sa te ajut cu ceva linii de cod pe care si eu le-am descarcat de pe diverse site-uri.Toti avem de invatat din aceste erori. Acesta este si rolul forumului, de a ajuta si de a ne perfectiona. Eu cred ca meritul este al tuturor celor care vin cu idei si inclusiv al tau!

Link spre comentariu

Felicitari pentru reusita!

Eventual varianta mai "detaliata":

Cod:Dim TextToLcd as StringTextToLcd = Fusing(volt, "#.##")  'asta presupun ca mergeLcdtext TextToLcd , 10, 50, 2, 0, 0
Eroare bascom 223,46,124
Eu nu stiu nici basic, nici bascom, asa ca ma asteptam ca in cazul unei erori de sintaxa sa te prinzi si sa o corectezi singur.Cred ca problemele vin de la definirea lui TextToLcd; asa cum zicea iulian2010 mai sus, probabil trebuia data dimensiunea stringului (*6):
Cod:Dim TextToLcd as String * 6
Link spre comentariu

Multumesc inca o data de ajutor, eu stau cam prost la aceste definiri, inca nu am inteles treaba cu biti, de ex: byte inseamna 8 biti, bit = 1 bit, word parca 16 biti, dar nu stiu la ce se refera biti respectivi, de unde vin biti si cum sunt generati, de exemplu string parca este 1024 dar *6= 6144 biti, de ce merge pe 6144 de biti si nu pe 10240 biti, asta daca era *10? Astea trebuie sa le mai studiez si sa le invat , ca sa stiu ce trebuie folosit in comanda!In rest ma ajuta help-ul, dar cum am zis si mai sus , nu ma ajuta in proportie de 100%, restul trebuie sa caut,sa invat si sa cer ajutor cand nu reusesc, cea ce am facut.Inca o data multe multumiri!

Link spre comentariu

Bitii sunt unitati de memorie. Un bit poate avea doua valori: 0 sau 1, deci reprezinta o stare logica: fals sau adevarat.Pentru o grupare de 2 biti, ai deja 4 valori posibile (2^2) (00, 01, 10, 11).Un byte este alcatuit din 8 biti (de aici si denumirea romaneasca : octet) deci poate avea, la un moment dat, o valoare din 256 (2^8).Un word este alcatuit din 2 octeti sau 16 biti. Rezulta o plaja mai mare de valori - 65536 in total.Stringul, este o grupare de caractere. In functie de encondingul (ASCII, Unicode, UTF, etc.) folosit de compilator, difera si dimensiunea efectiva din memorie. Banuiesc ca bascomul tine un caracter in 8 biti de memorie (adica un byte) deci un string de 10 caractere ocupa 10 octeti de memorie (80 de biti).

Link spre comentariu

Completare la spusele godFather89 (bine formulate altminteri :aplauze ), cand vrei sa folosesti o variabila string, e bine sa-i spui compilatorului cate caractere are cel mai lung text pe care vrei sa-l memorezi in acea variabila, ca sa stie cata memorie sa rezerve. De aici acel *6 (banuiesc, dupa cum ziceam, basicul nu e punctul meu forte).

Link spre comentariu

Multumesc de ajutor si de indrumare, am inceput sa prind ideea cum functioneaza, deci sa inteleg daca eu definesc "S" ca word, eu ma pot baza pe vloarea de 16 biti, daca incerc sa depasesc valoarea de 16 biti apare eroare bascom si trebuie redefinit "S", deci sa inteleg ca la mine TEXTTOLOAD trebuia definit asa mare deoarece find un display grafic , necesita multi biti pentru afisarea acelui cuvant, iar aici SPATIUL necesar lui "TEXTTOLOAD" logic ca trebuie mare care este definit prin numarul de biti, iar ca sa ajung la un numar mare folosesc variabila (daca am zis bine) STRING care este 255 biti (valoare luata din help-ul bascomului "Since a string is terminated by a 0 byte, you can't use 0 for n.Using 0 for m will result in a string of 255 bytes, because there is no check on a length assign of 0." asta daca am inteles eu bine) iar valoarea inmultita cu 6 rezulta 1530 de biti , adik spatiul necesar stocari lui TEXTTOLOAD.Am inteles bine? :nas: Eu sper ca da! :da Multumesc tuturor! :dans:

Link spre comentariu

Nu-mi dau seama daca chiar ai inteles, asa ca incerc inca o data.Ca sa pastrezi un text oarecare in memorie si sa-l folosesti in diverse locuri, iti trebuie o variabila care pentru fiecare litera din text sa aloce un byte in memorie (si la unele compilatoare un caracter special, de" sfarsit de text"). In cazul lui volt al tau, presupunand ca e de forma ##.##, (doua cifre inainte si doua dupa punct), iti trebuie minim 5 bytes - 4 bytes pentru cifre si unul pentru punct. 6 ala din exemplul meu e "acoperitor" (nu stiu daca trebuie si caracter "terminatie" sau nu).Numele variabilei n-are nici o legatura cu lungimea textului memorat in ea.

Link spre comentariu

Inca o data revin cu o problema, vreau sa afisez o imagine, mam documentat si am invatat si inteles cum functioneaza, dar problema mea este ca nu afiseaza ce trebuie, despre btm nu zice nimik, dar ma gandesc ca nu trebuie sa fie mai mare decat rezolutia ecranului,cea ce am tinut cont, am incercat variantele, 24 bit, 256 color, 16 color, monocrome, si tot nimik.

Mai jos codul precum si poze cu ce trebuie sa afiseze si ce afiseaza.

Va multumesc inca o data de ajutorul acordat, despre afisarea imagini nu zice prea multe in help, iar pe net nu am gasit nimik despre bgf, de facut imaginea in fisier bgf stiu sa fac.

Cea ce numi iese mie este afisarea! :nas:

$regfile = "m128def.DAT"$crystal = 8000000$baud = 19200$hwstack = 100$swstack = 120$framesize = 100Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8Dim X As Byte , Y As ByteCursor OffClsShowpic 1 , 1 , YopEndYop:$bgf "yo.bgf"
Am pus imaginea bgf in folderul care este .bas.

In bascom numi da eroare.

post-15533-139829292035_thumb.jpg

post-15533-139829292035_thumb.jpg

Link spre comentariu

Vad ca la tine poza e .jpg. Tot asa era si cand ai convertit-o in bgf, sau ai convertit un bitmap (bmp)?Ca din cate am gasit eu pe internet, poza de convertit trebuie sa fie a/n in format .bmp.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări