costyy86 Postat Martie 3, 2013 Partajează Postat Martie 3, 2013 Se pot cupla la acelasi LCD doua sau mai multe CIP-uri (Device-uri). Conditia este ca sa se cupleze terminalele de date si de comanda cu diode de comutatie rapida (1N4148) de la fiecare cip in parte spre LCD. deasemenea ca sa comute diodele trebuie sa fie "incarcate" pe sarcina de 1K la masa. Vezi foto.P.S. Dupa ce am postat am vazut ca te-ai documentat. Oricum las poza sa o vada cei interesati.Multumesc pentru ajutorul acordat atat aici cat si pe mail (in legatura cu SMT-ul), aceasta poza chiar e de mare ajutor... Link spre comentariu
costyy86 Postat Martie 27, 2013 Partajează Postat Martie 27, 2013 Salutare.Am o problema cu un releu...Am simulat in proteus o schema cu atmega8 care printr-un port trebuie sa activeze respectiv sa dezactiveze un releu de 12V care este legat printr-un tranzistor PNP la tensiunea pozitiva a unui stabilizator de 12v.....insa problema este ca acel releu sta cuplat si daca portul este 1 si daca portul este 0, deci releul este cuplat si cand ar trebui sa fie decuplat.....sa fie doar la simulare asa? momentan nu am inca piesele sa pot verifica, dar nici cand vin nu e usor de verificat deoarece am comandat atmega8SMD si nu vreu sa fac cablajulcu greseli...Multumesc.L.E. Problema rezolvata, se pare ca trebuia tranzistori NPN. Link spre comentariu
Buddy1 Postat Martie 28, 2013 Partajează Postat Martie 28, 2013 buna ziuace trebuie sa modific la cod ca sa merga cu cristal de 12 mhz? $regfile "m8def.dat" $crystal = 8000000$baud = 19200Declare Sub Lover_text()Config Pind.2 = InputConfig Pind.3 = InputConfig Pind.4 = InputConfig Pind.6 = OutputPortd.2 = 1Portd.3 = 1Portd.4 = 1Portd.6 = 0Dim A As IntegerDim Secounds As ByteDim Minutes As ByteDim Hours As ByteLet Secounds = 0Let Minutes = 0Let Hours = 0Let A = 0Config Lcd = 16 * 2Deflcdchar 0 , 32 , 21 , 14 , 4 , 4 , 10 , 17 , 17 ' replace ? with number (0-7)Deflcdchar 1 , 32 , 4 , 14 , 14 , 14 , 4 , 4 , 4 ' replace ? with number (0-7)Config Timer1 = Timer , Prescale = 1024On Ovf1 Tim1_isrLoad Timer1 , 7812Setclock:Disable InterruptsLet Secounds = 0ClsCursor On BlinkLcd "Time: "LowerlineLcd "Setati Ora!"Locate 1 , 9Lcd ":"Locate 1 , 12Lcd "."Do If Pind.3 = 0 Then Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Waitms 200 End If If Pind.2 = 0 Then Hours = Hours + 1 If Hours = 24 Then Hours = 0 Waitms 200 End If If Pind.4 = 0 Then Exit Do Locate 1 , 7 Lcd " " Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd " " Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Waitms 50LoopEnable Timer1Enable InterruptsCursor Off NoblinkCall Lover_text()Do Toggle Portd.6 Waitms 100 If Pind.4 = 0 Then Waitms 10 While Pind.4 = 0 Nop Wend Goto Setclock End IfLoopTim1_isr: Load Timer1 , 7812 If Secounds = 60 Then Secounds = 0 Minutes = Minutes + 1 If Minutes = 60 Then Minutes = 0 Locate 1 , 10 Lcd " " Hours = Hours + 1 If Hours = 24 Then Hours = 0 Locate 1 , 7 Lcd " " Call Lover_text() nop nop End If End If End If Locate 1 , 7 Lcd Hours Locate 1 , 10 Lcd Minutes Locate 1 , 13 Lcd " " Locate 1 , 13 Lcd Secounds Locate 1 , 16 If A = 0 Then Lcd Chr(0) A = 1 Elseif A = 1 Then Lcd Chr(1) A = 0 End If Secounds = Secounds + 1ReturnEndSub Lover_text() Locate 2 , 0 Lcd " Hello"End Sub Link spre comentariu
danzup Postat Martie 28, 2013 Partajează Postat Martie 28, 2013 buna ziuace trebuie sa modific la cod ca sa merga cu cristal de 12 mhz?$regfile "m8def.dat"$crystal = 8000000$baud = 19200............................................................Pai prima data trebuie sa-i spui compilerului ca ai cristal de 12Mhz :$crystal = 12000000dar nu e de ajuns trebuie sa scrii si fusebitii de cristal extern si sa ai si cristalul deja conectat la microcontroler conform cu schema din datasheet.Dar de ce vrei sa treci uC la 12 Mhz ???? Link spre comentariu
Buddy1 Postat Martie 28, 2013 Partajează Postat Martie 28, 2013 pentru ca nu gasesc 8Mhz daca il las pe oscilator intern, si sterg cristalul din cod, o secunda pe ceasul meu este echivalenta cu vreo 8-10 secunde pe un ceas normal :)mda, nu prea as avea curaj sa ma bag la fusebiti Link spre comentariu
danzup Postat Martie 28, 2013 Partajează Postat Martie 28, 2013 pentru ca nu gasesc 8Mhz daca il las pe oscilator intern, si sterg cristalul din cod, o secunda pe ceasul meu este echivalenta cu vreo 8-10 secunde pe un ceas normal :)mda, nu prea as avea curaj sa ma bag la fusebitiNu cred ! Gresesti ceva !Nu am timp acum sa ma uit dar nu cred ca ai setat bine timerul .de acolo cred ca e problema. Link spre comentariu
Buddy1 Postat Martie 28, 2013 Partajează Postat Martie 28, 2013 daca sterg cristalul, dau sa scriu codul in uC, porneste si mai mult sta il loc decat merge :Dtrebuie sa mai schimb ceva la cod daca il las pe oscilator intern? Link spre comentariu
Buddy1 Postat Martie 29, 2013 Partajează Postat Martie 29, 2013 pentru 4 mhz declarati in cod trebuie sa setez bitii asa? Link spre comentariu
puriu Postat Martie 29, 2013 Partajează Postat Martie 29, 2013 Pentru @costyy86. E normal ca un pmp legat la +12 V sa ramana deschis, are tot timpul un minus pe baza. Pune un npn legat la minusul comun si schimba logica iesirii. Se poate si cu pnp daca se pune plusul sursei Atmega la + 12 V (plusul comun). Link spre comentariu
Buddy1 Postat Martie 29, 2013 Partajează Postat Martie 29, 2013 orice setez la fusebiti cand dau citire imi pare tot LOW 0XE1 si High 0X D9indifrent de ce scriu nu stiu de ce nu ii ia Link spre comentariu
Buddy1 Postat Martie 30, 2013 Partajează Postat Martie 30, 2013 am reusit sa scriu fusebitii pentru 4mhzdar ceasul tot ramane putin in urmaadica 1 secunda de a lui acuma e chivalenta cu 2 secunde pe un ceas obisnuitce trebuie sa ii mai fac? Link spre comentariu
Buddy1 Postat Martie 30, 2013 Partajează Postat Martie 30, 2013 nu stie nimeni? :cry: Link spre comentariu
iulian2010 Postat Martie 30, 2013 Partajează Postat Martie 30, 2013 Poate te ajuta asta ca idee. Softul nu l-am testat hardware. Poti sa schimbi lcd-ul grafic cu unul alphanumeric. Trebuie sa folosesti intre TOSC1 si TOSC2 un quartz de 32.768 KHz. Bafta! $regfile = "m128def.DAT"$crystal = 8000000'$baud = 19200'$eepleave'$loadersize = 512$hwstack = 100$swstack = 75$framesize = 40Config Graphlcd = 240 * 128 , Dataport = Porta , Controlport = Portc , Ce = 3 , Cd = 0 , Wr = 2 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6Config Portb.0 = Input : Portb.0 = 1 ' EnterConfig Portb.1 = Input : Portb.1 = 1 ' SUS buttonConfig Portb.2 = Input : Portb.2 = 1 ' JOS buttonConfig Portb.3 = Input : Portb.3 = 1 ' Go to Select MenuConfig Clock = SoftEnable InterruptsDeclare Sub Seteaza_timpul()Declare Sub Ceas()Dim Hour As Byte , Minut As ByteDim Password As String * 5 , A As Byte , B As Byte , Pass1 As Word , Pass As Word , Menu_byte As Byte Menu_sel: Do' ******************** SELECTEAZA MENIUL Cls Locate 1 , 1 Lcd " START " Locate 3 , 1 Lcd " Intra in meniu (apasa butonul SUS) " Bitwait Pinb.1 , Reset Menu_byte = 1Do If Pinb.0 = 0 Then Exit Do If Pinb.1 = 0 Then Incr Menu_byte If Menu_byte > 2 Then Menu_byte = 1 Cls Locate 1 , 1 Lcd " ESTI IN MENIU (apasa butonul SUS pentru a selecta submeniurile) " Locate 4 , 1 If Menu_byte = 1 Then Lcd " 2. CEAS (apasa ENTER) " If Menu_byte = 2 Then Lcd " 1. SETEAZA TIMPUL (apasa ENTER) " Waitms 200 End IfLoop Bitwait Pinb.0 , Set Select Case Menu_byte Case 1 : Call Ceas() Case 2 : Call Seteaza_timpul() Case Else : Cls Lcd "ERROR" Wait 2 End SelectLoopDoIf Pinb.1 = 0 Then 'UP Incr A If A > 9 Then A = 0 Waitms 200 Locate 4 , B Lcd A Locate 4 , BEnd IfIf Pinb.2 = 0 Then 'DOWN Decr A If A > 9 Then A = 9 Waitms 200 Locate 4 , B Lcd A Locate 4 , BEnd IfIf Pinb.0 = 0 Then 'ENTER Incr B Password = Password + Str(a) If B < 5 Then 'Shiftcursor Right Waitms 300 End IfEnd IfLoop Until B = 5Cursor Off' ******************* SETEAZA TIMPULSub Seteaza_timpul()ClsLocate 1 , 1Lcd "SETEAZA TIMPUL, butonul SUS setezaza minutele si JOS seteaza ora, apoi apesi ENTER"Locate 4 , 1Time$ = "00:00:00"Lcd Time$Hour = _hourMinut = _minDoIf Pinb.1 = 0 Then 'UP for edit minute Incr Minut If Minut > 59 Then Minut = 0 Waitms 200 Locate 4 , 4 If Minut < 10 Then Lcd "0" Lcd MinutEnd IfIf Pinb.2 = 0 Then 'DOWN for edit hour Incr Hour If Hour > 23 Then Hour = 0 Waitms 200 Locate 4 , 1 If Hour < 10 Then Lcd "0" Lcd HourEnd IfIf Pinb.0 = 0 Then 'ENTER for exit and save time _hour = Hour _min = Minut 'Exit Do Goto Afiseaza_oraEnd If If Pinb.3 = 0 ThenClsLcd "EXIT TO MENU" Bitwait Pinb.3 , Set Goto Menu_sel End IfLoopEnd Sub' ******************* ClockAfiseaza_ora:Sub Ceas() Cls Do Locate 1 , 1 Lcd Time$ ; " (pentru revenire la START apesi EXIT) " If Pinb.3 = 0 ThenClsLcd "EXIT TO MENU" Bitwait Pinb.3 , Set Goto Menu_sel End IfLoopEnd Sub Link spre comentariu
Buddy1 Postat Martie 30, 2013 Partajează Postat Martie 30, 2013 Poate te ajuta asta ca idee. Softul nu l-am testat hardware. Poti sa schimbi lcd-ul grafic cu unul alphanumeric.Trebuie sa folosesti intre TOSC1 si TOSC2 un quartz de 32.768 KHz. $crystal = 8000000cristalul vad ca e de 8 mhz de ce 32.768KHz?? Link spre comentariu
iulian2010 Postat Martie 30, 2013 Partajează Postat Martie 30, 2013 Pentru Config Clock = Soft folosesti acest quartz de 32.768KHz intre TOSC1 si TOSC2 Quartzul de 8 MHz il folosesti intre XTAL1 SI XTAL2. Vezi aici si un alt exemplu: http://www.avrprojects.net/index.php/avr-project/avr-projects/73-real-time-clock-atmega16 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