Vizitator Danco Postat Aprilie 16, 2012 Partajează Postat Aprilie 16, 2012 (in manualul digitilor sunt numai dimensiunile fizice si ce reprezinta pinii)Fisierul pdf de pe acest SITE este "KW4-301.pdf" si in el gasesti marimile de tensiune si curent pentru alimentarea LED-urilor din segmenteAtasez un extras din acest pdf Link spre comentariu
vasile eugen Postat Aprilie 16, 2012 Partajează Postat Aprilie 16, 2012 Buna seara .Am facut urmatoarea schema si este functionala usor de facut si reglat.Eu am facut mai mult pentru ca il pot folosi ca ceas desteptator. http://www.kaligraf.narod.ru/kaligraf_narod_002.html si un video clip Link spre comentariu
briobit Postat Aprilie 18, 2012 Autor Partajează Postat Aprilie 18, 2012 sunt cu montajul cam 90 % gata o intrebare mai am si anume cum fac sa modific ASM-ul ala ?pur si simplu il deschid cu notepad modific si salvez?cum il fac iar hex? Link spre comentariu
briobit Postat Aprilie 18, 2012 Autor Partajează Postat Aprilie 18, 2012 am reusit sa termin placa am modificat asm-ul cu MPLAB ide am salvat, am facut hex am pus hex in pic, pic pe placa si nu face nimic .... e totul stins... am masurat la iesirea stabilizatorului am 5 volti la fel am tensiunea asta pe pinii de la PIC.... pentru segmente am rezistente de 250 ohmi iar in baza la tranzistoare am de 1 k iar aia intre pinul 14 si 4 e de 10k ( asa e si in schema mea asa e si la bogdi)... ceva idei? ... primul meu montaj cu PIC se pare ca a fost/este o mare buleala....acum mai da si softul de programare eroare Fail to install wp800io.sys ...ahhhhhh ma pun cu ciocanu pe ele.... Link spre comentariu
briobit Postat Aprilie 18, 2012 Autor Partajează Postat Aprilie 18, 2012 ...am reusit sa fac Winpic sa mearga iar fara erori ... am sters picu am incarcat un hex pentru 16f84A de pe pagina lui bogdi si vad ca se aprind niste segmente cam aiurea da se aprind la fel cand apas pe butoane se aprind alte segmente... deci picu nu e troznit (parerea mea de incepator) si buleala e undeva in soft/ eventual placa ... Rog frumos persoanele care se pricep la PIC-uri sa ma ajute si pe mine cu minunea asta de ceas.cam asa sunt cu montajul pana acum Link spre comentariu
awy1917 Postat Aprilie 19, 2012 Partajează Postat Aprilie 19, 2012 Ar trebui sa verifici mai intai ca partea de afisare merge OK.Pentru asta ar trebui sa scrii,compilezi, incarci un program simplu care sa aprinda 1 segment pe un digit.Dupa aia programel care sa aprinda toate cifrele pe acelasi digit.Din pacate nu am experienta in asm ca sa iti dau exact instructiunile, ceva de genul : MOVLW B'00000001' ;SEGMENT 01MOVWF PORTAMOVLW B'10000001' ;0MOVWF PORTBCauta pe net orice tutorial de PIC si asm toate vor avea aprinsul unui led pe pin, aici trebuie sa "aprinzi" simultan un tranzistor care sa-ti activeze digitul PORTA + segmentele necesare afisarii cifrei pe PORTB.PS. Inainte de soft poti face un debug al electronicii in sensul ca :1. scoti pic-ul din soclu si i-l pui deoparte, vei folosi doar montajul, fara PIC2. pe soclu pui +5V pe pinul 2 -> activeaza digit 13. pe soclu pui pinul 13 la masa-> activeaza Segmentul G2 si 3 simultan iti vor aprinde pinul G al digitului 1.Si tot asa pentru toti cei 4 digiti (pini 2,1,18,17) si toate segmentele (pini 7->13) Link spre comentariu
briobit Postat Aprilie 19, 2012 Autor Partajează Postat Aprilie 19, 2012 am facut treaba asta cum spunea colegul mai sus se aprind toate segmentele de la toti 4 digitii, deci nu cred ca e eroare de placa... fara un ajutor exact pe problema nu cred ca mai pot avansa... plus ca de maine sunt plecat 3 zile la o lucrare in tara ...Multumesc inca o data celor care ma ajuta sau ma vor ajuta. Link spre comentariu
briobit Postat Aprilie 19, 2012 Autor Partajează Postat Aprilie 19, 2012 am gasit pe un site ca asa ar fi cifrele (pentru anod comun) :Nr. Segments Hex0 1100 0000 $C01 1111 1001 $F92 1010 0100 $A43 1011 0000 $B04 1001 1001 $995 1001 0010 $926 1000 0010 $827 1111 1000 $F88 1000 0000 $809 1001 1000 $98vad ca difera un pic de ce zicea colegul ( sa schim unde gasesc 0 sa pun 1)iar initial arata asa (pentru catod comun)RETLW B'10000001' ;0 RETLW B'11110011' ;1RETLW B'01001001' ;2RETLW B'01100001' ;3RETLW B'00110011' ;4RETLW B'00100101' ;5RETLW B'00000101' ;6RETLW B'11110001' ;7RETLW B'00000001' ;8RETLW B'00100001' ;9orice sfat e binevenitam modificat in asm original doar treaba de mai ss si acum am pe digiti 4 litera G intoarge care stau aprinse nu palpaie nimic Link spre comentariu
MatyC Postat Aprilie 19, 2012 Partajează Postat Aprilie 19, 2012 Si eu care eram curios daca merge hex-ul de mai jos. )12 HOUR CLOCK_AC.hex.txtDar parca vad ca a folosit ciocanul de 250g. Link spre comentariu
briobit Postat Aprilie 19, 2012 Autor Partajează Postat Aprilie 19, 2012 ooo ajutor ms ms plecasem dupa ciocan da am dat de mancare si a scapat montajul acum torn hexul in pic si revin cu informatii cautand am dat de un ceas (un francez parca da si ala a testat numai cu catod comun da cica a facut si soft si pentru anod da zice sa comentez pentru anod) nu ma pricep fratilor ce sa fac in soft asta e softul poate ajuta cu ceva: ****************************************************************************** ' PIC16F84A ALARM CLOCK '****************************************************************************** ' ' feel free to use this code at your own risks ' ' target : PIC16F84A, 16 Mhz crystal ' HS clock, no watchdog. ' ' Author : Bruno Gavand, September 2007 ' see more details on http://www.micro-examples.com/ ' '****************************************************************************** program alarmClock ' ' if you are using COMMON CATHODE LED display, uncomment this definition. ' if you are using COMMON ANODE LED display, comment this definition. ' '#define CATHODE_COMMUNE symbol LUNDI = 0 ' monday symbol MARDI = 1 ' thuesday symbol MERCREDI = 2 ' wednesday symbol JEUDI = 3 ' thursday symbol VENDREDI = 4 ' friday symbol SAMEDI = 5 ' saturday symbol DIMANCHE = 6 ' sunday symbol LMMJV = 7 ' from monday to friday included ' ' alarm definitions, to be changed on your needs ' symbol NBALARM = 16 ' number of programmed alarms const alarmTable as byte[NBALARM * 4] = ( ' JOUR HEURE MINUTE DUREE (secondes, 59 maxi) ' DAY HOUR MINUTE DURATION (in seconds, max is 59) LUNDI, 8, 30, 10, LUNDI, 12, 30, 10, LUNDI, 14, 00, 10, LUNDI, 16, 30, 10, MARDI, 8, 30, 10, MARDI, 12, 30, 10, MARDI, 14, 00, 10, MARDI, 16, 30, 10, JEUDI, 8, 30, 10, JEUDI, 12, 30, 10, JEUDI, 14, 00, 10, JEUDI, 16, 30, 10, VENDREDI, 8, 30, 10, VENDREDI, 12, 30, 10, VENDREDI, 14, 00, 10, VENDREDI, 16, 30, 10 ) dim maxcount as word ' number of TMR0 overflow per second dim scaler as word ' RTC scaler dim jj as byte ' day of week, 0 is monday dim hh as byte ' hour dim mn as byte ' min dim ss as byte ' sec dim digiled as byte[4] ' 4 x 7 segment table dim digit as byte ' number of current digit to be displayed dim dp as byte ' decimal point dim key as byte ' key code dim alarm as byte ' alarm flag ' ' the ISR works as real time clock ' sub procedure interrupt dim i as byte ' ' count time ' scaler = scaler + 1 if scaler > maxcount then scaler = 0 inc(ss) if ss = 60 then ss = 0 inc(mn) if mn = 60 then mn = 0 inc(hh) if hh = 24 then hh = 0 inc(jj) if jj = 8 then jj = 1 end if end if end if end if end if ' ' LED display ' #ifdef CATHODE_COMMUNE PORTA = PORTA and $f0 TRISA = $0f key = PORTA TRISA = 0 PORTB = 0 #else PORTA = PORTA or $0f TRISA = $0f key = PORTA key = not(key) TRISA = 0 PORTB = $ff #endif key = key and $07 digit = digit + 1 if digit > 3 then digit = 0 i = $01 else i = $01 << digit end if #ifdef CATHODE_COMMUNE PORTB = digiled[digit] PORTA = PORTA or i #else PORTB = digiled[digit] PORTB = not(PORTB) PORTA = PORTA and not(i) #endif INTCON.T0IF = 0 end sub ' ' converts digit to 7 segment ' sub function intTo7seg(dim n as byte) as byte select case n case 0 result = $3F case 1 result = $06 case 2 result = $5B case 3 result = $4F case 4 result = $66 case 5 result = $6D case 6 result = $7D case 7 result = $07 case 8 result = $7F case 9 result = $6F end select end sub ' ' select a value with keys ' value is pointed to by v, display char s as header, maximum value is max ' sub procedure setValue(dim v as ^byte, dim s as byte, dim max as byte) digiled[0] = s digiled[1] = 0 while 1 if key.0 then inc(v^) if(v^ > max) then v^ = 0 end if end if if key.1 then if(v^ = 0) then v^ = max else dec(v^) end if end if if key.2 then Delay_ms(50) while key.2 wend Delay_ms(50) scaler = 0 ss = 0 return end if digiled[2] = intTo7seg(v^ / 10) digiled[3] = intTo7seg(v^ mod 10) delay_ms(300) wend end sub ' ' program entry ' main: dim i as byte ' ' init variables ' dp = 0 hh = 0 mn = 0 ss = 0 jj = 0 maxcount = 15625 ' ' init I/O ' PORTA = %00010000 TRISA = %00000000 PORTB = 0 TRISB = $00 ' ' init interrupts ' INTCON = %10100000 OPTION_REG = %11011000 Delay_ms(50) ' ' clock adjustment ' setValue(@hh, 116, 23) setValue(@mn, 55, 59) setValue(@jj, 14, 6) ' ' forever loop ' while true if key then ' ' display day and seconds (what for ? don't remember !) ' digiled[0] = intTo7seg(jj) digiled[1] = 0 digiled[2] = intTo7seg(ss / 10) digiled[3] = intTo7seg(ss mod 10) else ' ' display hours and minutes ' if hh < 10 then digiled[0] = 0 digiled[1] = intTo7seg(hh) else digiled[0] = intTo7seg(hh / 10) digiled[1] = intTo7seg(hh mod 10) end if digiled[2] = intTo7seg(mn / 10) digiled[3] = intTo7seg(mn mod 10) end if ' ' blinks semicolon (or decimal point) ' if scaler > maxcount / 2 then dp.1 = 1 else dp.1 = 0 end if ' ' set decimal points ' digiled[0].7 = dp.0 digiled[1].7 = dp.1 digiled[2].7 = dp.2 digiled[3].7 = dp.3 ' ' check for alarm condition ' alarm = 0 for i = 0 to (NBALARM - 1) * 4 if ((alarmTable = jj) or ((alarmTable = LMMJV) and (jj < SAMEDI))) and (alarmTable[i + 1] = hh) and (alarmTable[i + 2] = mn) and (alarmTable[i + 3] > ss) then inc(alarm) end if next i if alarm then ' ' set alarm ' dp.3 = 1 PORTA.4 = 0 else ' ' clear alarm ' dp.3 = 0 PORTA.4 = 1 end if wend end. Link spre comentariu
MatyC Postat Aprilie 19, 2012 Partajează Postat Aprilie 19, 2012 Cunosc ceasul acesta. L-am despicat si pe asta aici: http://elforum.info/viewtopic.php?f=11&t=71822 Din pacate au fost sterse fisierele atasate la topic (cu vreo juma de an in urma). Din cate imi aduc aminte nu am rezolvat problema alarmei dar in rest a fost un ceas bun. L-am verificat vreo 2 zile. Link spre comentariu
briobit Postat Aprilie 19, 2012 Autor Partajează Postat Aprilie 19, 2012 deci am pus hex si acum am ceva activitate si anume- la pornire apar 0000- ledul care trebuia sa fie cu secundele sta aprins permanent- cand apas pe butonul de reset se stinge tot si vine la 0000 - pot sa setez minutele doar pana la 09 dupa care se face 00- minutele le setez printr-o apasare simpla de buton pe cand la ore trebuie sa tin lung apasatla fel cand ajunge la 09 la urmatoarea apasare se face 00- am lasat de la 0000 sa mearga singur si vad ca a schimbat in 0001 dupa 1 minut cu ochii pe ceas deci ceva face el acoloLE: am 3 minute si vad ca merge dupa ceasul real pana acum am 0003daca nu se reseta dupa 09 pffff Link spre comentariu
MatyC Postat Aprilie 19, 2012 Partajează Postat Aprilie 19, 2012 Sa inteleg ca logica afisari digitilor este in regula. Sa continuii analiza ca au fost ceva bube in program. Daca a afisat o schimbare dupa un minut sa inteleg ca functioneaza ceasul de timp real.Revin mai tarziu. Link spre comentariu
briobit Postat Aprilie 19, 2012 Autor Partajează Postat Aprilie 19, 2012 Va multumesc inca o data, da a ajuns singur la 0009 si a venit iar la 0000LE: a ajuns acum la 0010 si trecut iar in 0000 Link spre comentariu
pop_ady44 Postat Aprilie 19, 2012 Partajează Postat Aprilie 19, 2012 Va multumesc inca o data, da a ajuns singur la 0009 si a venit iar la 0000LE: a ajuns acum la 0010 si trecut iar in 0000tu vrei sa faci un ceas cu alarma?sau sa faci un ceas care sa afiseze ora ? 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