boboBOBO Postat Iulie 28, 2011 Partajează Postat Iulie 28, 2011 De curand mi-am cumparat un lcd grafic 160x80 si vreau sa fac un proiect pe el, mai precis vreau sa fac ceva viewtopic.php?f=11&t=68602 insa nu pe lcd 2x16 ci pe acest lcd 160x80. Marea mea problema este ca sunt varza la capitolul programare. Cu exceptia unor sintaxe C++ care le-am invatat la scoala nu stiu nimic, asa ca momentan proiectul are sanse minime spre spre zero de reusita. Acum vin intrebarea mea , defapt intrebarile, cu ce sa incep ? Cum as putea sa fac conversia de la un lcd 2x16 la unul grafic ? Lcd-ul meu are controller LC7981. Ce sugerati sa merg tot pe pic sau sa merg pe atmega ? As merge pe atmega deoarece parca acolo mai stiu cum un pic de programare de la Arduino. Deci.. cu ce sa incep ? Link spre comentariu
ratza Postat Iulie 28, 2011 Partajează Postat Iulie 28, 2011 Ai nevoie de foaia de catalog a LCD-ului. Fără aia nu poţi face nimic. Link spre comentariu
boboBOBO Postat Iulie 28, 2011 Autor Partajează Postat Iulie 28, 2011 Cam asta e tot ce stiu despre el : http://www.ectrade.com/Auction/FreeSamp ... odule.html Link spre comentariu
ratza Postat Iulie 31, 2011 Partajează Postat Iulie 31, 2011 Nu poţi face conversie de la 2x16, trebuie să-ţi faci singur propriile rutine de text. Îţi trebuie neapărat foaia de catalog a LCD-ului. E cumva ăsta? www.vishay.com/docs/37356/160h080a.pdf Link spre comentariu
boboBOBO Postat August 1, 2011 Autor Partajează Postat August 1, 2011 Salut ratza, da pare sa fie lcd-ul acela , ca dimensiuni e ala . Multumesc mult, acum vine partea mai grea : cu ce sa incep ? Am gasit proiectul original al acelui multimetru, codul e in MikroC deci va trebui sa folosesc tot un pic, intrebarea e daca sa folosesc tot PIC16F877 sau trebuie un PIC "mai dotat " ? Multumesc .. Link spre comentariu
ratza Postat August 1, 2011 Partajează Postat August 1, 2011 Ai nevoie de un controller cu un ADC care să te mulţumească şi destui pini ca să conectezi LCD-ul la el. Codul original nu te va ajuta prea mult Link spre comentariu
boboBOBO Postat August 1, 2011 Autor Partajează Postat August 1, 2011 Multumesc ratza, cam asta este lcd-ul, cred ca am sa folosesc un PIC18F452 cum a folosit si @Rabulea Sergiu in proiectul asta http://www.elforum.info/viewtopic.php?f=11&t=60082 . Link spre comentariu
Cilibiu Postat August 7, 2011 Partajează Postat August 7, 2011 Daca vrei sa folosesti atmel, iti dau eu schema tot ce vrei , hex si il pui in functiune, de modificat din 2x16 in grafic totul este in program.Pentru ce vrei tu sa faci iti trebuie un pic ce sa stie ADC, da detali pana in ce tensiuni vrei sa masori!Vrei doar voltmetru sau doar ampermetru?Sau ambele?Cum vrei sa fie afisat, mare,mic, mediu, un tip de font? Link spre comentariu
ratza Postat August 7, 2011 Partajează Postat August 7, 2011 Cilibiu, tu nici nu te-ai obosit să te uiţi pe linkuri ca să vezi ce vrea şi dai sfaturi. Fă schema de care ziceai, dar cu PIC. Link spre comentariu
boboBOBO Postat August 8, 2011 Autor Partajează Postat August 8, 2011 Daca vrei sa folosesti atmel, iti dau eu schema tot ce vrei , hex si il pui in functiune, de modificat din 2x16 in grafic totul este in program.Pentru ce vrei tu sa faci iti trebuie un pic ce sa stie ADC, da detali pana in ce tensiuni vrei sa masori!Vrei doar voltmetru sau doar ampermetru?Sau ambele?Cum vrei sa fie afisat, mare,mic, mediu, un tip de font?Salut Cilibiu, vreau sa masor maxim 35V si maxim 20A, vreau sa imi afiseze tensiunea, curentul, rezistena, puterea si temperatura pe radiator. Mai concret tot ce face si proiectul din link-ul de mai sus, dezvoltat de Geomar ( sa aiba si protectie la scurt etc ). Caracterele nu stiu , iti dai seama ca lcd-ul e 160x80 deci nu am sa pun niste caractere mici si restul sa ramana neocupat, daca tot am spatiu pe ecran sa fie cat mai multa informatie. Multumesc ratza pentru ajutor Link spre comentariu
boboBOBO Postat August 16, 2011 Autor Partajează Postat August 16, 2011 Dupa indelugi lupte seculare am reusit impreuna cu @Cilibiu sau facem softul pentru proiectul meu ( mai mult el a lucrat eu am venit doar cu ideile ). Ca MCU am ales Atmega324. Schema de principiu ar fi urmatoarea : Cand sursa e pornita apare urmatoare imagine : Imaginea de afisare : Imaginea cand se detecteaza scrust pe iesire : Cand se detecteaza scurt pe iesire ( defapt cand consumul este mai mare de 20A se considera scurt ) se decupleaza un releu astfel sa nu mai am tensiune la bornele de iesire. Releul se va declansa automat cand se va apasa butonul Reset. Pe langa asta mai am si un buzzer care ma avertizeaza in caz de scurt circuit sau in cazul in care temperatura pe radiator depaseste 70*C.Buzzerul l-am luat dintr-un ups cred si are driver incorporat, trebuie doar alimentat la 3.3-5v banuiesc si piuie de te dor urechile Ventilatoarele sunt alimentate in 2 faze : 1. Cand temperatura este de 40*C sunt alimentate la 5V iar cand temperatura depaseste 55*C sunt alimentate la 12V. La urmatorul Upgrade de soft voi folosi alimentare proportionala in functie de temperatura radiatorului. Cam asta e proiectul la care Cilibiu a lucrat ieri toata ziua ( pe aceasta cale ii multumesc enorm, nu credeam ca va fi gata intr-o zi ). Asteptam sugestii.. critici.. opinii Link spre comentariu
yo9hnf Postat August 16, 2011 Partajează Postat August 16, 2011 Cilibiu sau boboBOBO, postati va rog si codul sursa daca nu-i secret. Link spre comentariu
Cilibiu Postat August 16, 2011 Partajează Postat August 16, 2011 Decizia ii apartine lui bobo, eu lam ajutat pe el in privat, nu pe forum, daca este deacord sa divulge codul , il postez, sau il posteaza!Codul este scris in BASCOM! Link spre comentariu
boboBOBO Postat August 16, 2011 Autor Partajează Postat August 16, 2011 Asta este doar versiunea preliminara a softului, pe viitor vor fi si altele mai avansate ( vedem ce bug-uri are softul asta si le corectam ) . Asteptam opinii.. $regfile = "m324pdef.DAT"$crystal = 8000000$baud = 19200$hwstack = 100$swstack = 120$framesize = 100Config Graphlcd = 128 * 64 , Dataport = Portb , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8Declare 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 SingleDim Volt1 As SingleDim Volt2 As SingleDim Volt3 As SingleDim S As IntegerConfig Porta.3 = OutputConfig Porta.4 = InputConfig Porta.5 = OutputConfig Porta.6 = OutputConfig Porta.7 = OutputConst Dif = 5 / 1023Const Volt_div = 0.1Config Adc = Single , Prescaler = Auto , Reference = AvccStart AdcCursor Off NoblinkClsBoxfill(0 , 0) -(127 , 63) , 1Lcdtext "Sursa Reglabila" , 3 , 3 , 2 , 1 , 0Lcdtext "0-30V" , 0 , 15 , 1 , 1 , 0Lcdtext "0-20A" , 0 , 32 , 1 , 1 , 0Lcdtext "Brinzei Bogdan @2011" , 5 , 55 , 4 , 1 , 0Showpic 87 , 10 , VoltageWaitms 500ClsDoPorta.5 = 0DoBox(0 , 0) -(127 , 63) , 1Boxfill(0 , 0) -(127 , 13) , 1Lcdtext "Sursa Reglabila" , 4 , 3 , 2 , 1 , 0Locate 4 , 1Lcd "U="Adcv = Getadc(0)Waitms 10 Volt = Adcv * Dif Volt = Volt / Volt_div Volt1 = VoltLocate 4 , 3Lcd Fusing(volt1 , "#.##") ; "V"Adcv = Getadc(1)Porta.3 = 1Waitms 10 Volt = Adcv * Dif Volt = Volt / Volt_div Volt2 = VoltLocate 5 , 1Lcd "I="Lcd Fusing(volt2 , "#.##") ; "A"Volt3 = Volt1 * Volt2Locate 6 , 3Lcd Fusing(volt3 , "#.##") ; "W"Locate 6 , 1Lcd "P="Adcv = Getadc(2)Waitms 10 Volt = Adcv * Dif Volt = Volt / Volt_div Volt = Volt / 0.1Locate 7 , 1Lcd "Temp="Locate 7 , 6Lcd Fusing(volt , "#.#") ; "'C"If Volt > 40 ThenPorta.6 = 1ElsePorta.6 = 0End IfIf Volt > 55 ThenPorta.7 = 1Porta.6 = 0ElsePorta.7 = 0End IfIf Volt > 70 ThenPorta.5 = 1ElsePorta.5 = 0End IfClsLoop Until Volt2 > 20ClsBoxfill(0 , 0) -(127 , 13) , 1DoPorta.3 = 0Box(0 , 0) -(127 , 63) , 1Lcdtext "Sursa Reglabila" , 4 , 3 , 2 , 1 , 0Lcdtext "SCURT CIRCUIT" , 12 , 25 , 2 , 0 , 0Lcdtext "RESET in asteptare" , 8 , 37 , 4 , 0 , 0Porta.5 = 1Wait 1Porta.5 = 0Waitms 500Loop Until Pina.4 = 1ClsLoopEnd'=== 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 displayed If Fontset = 1 Then Restore Font16x16 'Add or remove here fontset's that you need or not, If Fontset = 2 Then Restore Font8x8 'this is the name that you gave to the font, NOT the filename If Fontset = 3 Then Restore Font32x32 'If you dont know the name, open the font file in wordpad, and there it is, If Fontset = 4 Then Restore Font6x8 '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'=== Includes ===$include "Font16x16.font" 'Includes here your font files$include "font8x8.font"$include "font32x32.font"$include "font6x8.font"Voltage:$bgf "voltage.bgf" Link spre comentariu
Cilibiu Postat August 16, 2011 Partajează Postat August 16, 2011 Buguri nu sunt , din cate stiu eu! Adik nu vad unde ar putea fi!Dar daca vede cineva vreunul , il rog sa zica! Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum