Sari la conținut
ELFORUM - Forumul electronistilor

pic 16f84a - termometru


dorelb

Postări Recomandate

Da, este ceva de lucru. Se potriveste pentru ce a propus GeoMar. Doar ca este pus doar hex-ul. Ds1307 am, 16f876 am, urmeaza sa ma apuc de treaba. Mersi fratello. Iar in pagina cautam (Universal termometru digital).

 

http://translate.google.ro/translate?hl ... rmd%3Divns

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

 

Agassi Andre

Link spre comentariu
  • Răspunsuri 859
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • dorelb

    246

  • marik2500

    97

  • GeoMar

    84

  • fratello

    69

Top autori în acest subiect

Imagini postate

Vad ca toate link-urile puse s-au transformat in altceva :( ... Site-ul este http://radiokot.ru/ ; folositi Google Translate !

In ultimul link (despre softuri "combinate") este vorba despre acest montaj ; sunt prezentate schema, softul, cablajul. Denumirile sunt in rusa (!) dar sugerez contactarea autorului ! Succes !

Link spre comentariu
Vizitator banomix

Nu o sa comentez pana la functionarea corecta. Parerea mea este ca ai legaturi incorecte la conexiuni placa-afisaj. Am patit-o si eu cu un ceas.

-

Lui - banomix - . Pun schema de alimentare pentru LCD mai jos.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

 

Agassi Andre

 

Multumesc dorelb, contrastul era de vina. Am pus din lipsa un semireglabil de 50k in loc de 4,7k, rasuceam de el si nimic trebuia sa dau la cap de tot semireglabilul. Imi cer scuze pentru raspunsul intarzia. Stima

Link spre comentariu

Asta ar fi placa de baza, la care se conecteaza LCD-ul. Am gasit si un LCD, atat ca este 4x20.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

Link spre comentariu

Vad ca toate link-urile puse s-au transformat in altceva :( ... Site-ul este http://radiokot.ru/ ; folositi Google Translate !In ultimul link (despre softuri "combinate") este vorba despre acest montaj ; sunt prezentate schema, softul, cablajul. Denumirile sunt in rusa (!) dar sugerez contactarea autorului ! Succes !

Mie nu mi se pare prea grozava abordarea:1. Ce cauta DS1307 acolo? Poate face PIC-ul foarte bine treaba. Doar daca e un proiect didactic pentru comunicarea seriala PIC-DS, altfel e risipa de materiale.2. Deseii aia sunt pusi pe doua linii separate, deci 2 pini. Pai am trecut in clasa a doua, ii punem pe acelasi fir,nu?3. Un PIC16F628(A) este suficient pentru proiectul asta, de ce sa punem un cip care costa de 3 ori mai mult?
Link spre comentariu

Mie nu mi se pare prea grozava abordarea:1. Ce cauta DS1307 acolo? Poate face PIC-ul foarte bine treaba. Doar daca e un proiect didactic pentru comunicarea seriala PIC-DS, altfel e risipa de materiale.2. Deseii aia sunt pusi pe doua linii separate, deci 2 pini. Pai am trecut in clasa a doua, ii punem pe acelasi fir,nu?3. Un PIC16F628(A) este suficient pentru proiectul asta, de ce sa punem un cip care costa de 3 ori mai mult?

Pai daca poti,te pricepi si vrei sa combini cele 3 softuri in 1 singur, e ok, ar fi super toate 3 intr-un PIC 16F628A si un LCD 2x16.
Link spre comentariu

De ce sa mearga numai cu 16F648A? Ce-l face mai potrivit decat 628 pentru aplicatia noastra?Cum "nu merge" in simulare? Ce zice? Asta oricum e chestie de soft si se rezolva pana la urma.

Link spre comentariu

Am mai spus-o : cunostintele mele de programare sunt (foarte) mici, de-abia reusesc sa scriu cateva programele, si asta doar in PicBasic Pro. Din aceasta cauza incercarile mele de combinare a celor doua softuri nu au dat rezultate. Un cod scris de cineva priceput e posibil sa mearga, chiar si pe un 16F628. Eu -spre rusinea mea- nu am reusit sa "optimizez" codul, nici macar pentru un 16F648A (care are spatiu pentru Program Memory dublu).

Link spre comentariu

Am mai spus-o : cunostintele mele de programare sunt (foarte) mici, de-abia reusesc sa scriu cateva programele, si asta doar in PicBasic Pro. Din aceasta cauza incercarile mele de combinare a celor doua softuri nu au dat rezultate. Un cod scris de cineva priceput e posibil sa mearga, chiar si pe un 16F628. Eu -spre rusinea mea- nu am reusit sa "optimizez" codul, nici macar pentru un 16F648A (care are spatiu pentru Program Memory dublu).

Va rog sa ma credeti ca aplicatia se poate face pe 628. Eu am facut toate combinatiile de cate doua din astea trei plus alte rutine si functioneaza. Atat cu afisaj LCD cat si cu LED (astea din urma sunt mai "mancatoare de pini").Picul 648 are mai mult ROM, EEPROM si memorie program, este adevarat, dar si 628 face fata cu brio.Bineinteles ca e vorba si de o optimizare a softului. E drept ca aplicatiile le-am facut ASM, in limbaj de nivel inalt (care ocupa mai multa memorie) nu am incercat.Oricum este mai dificil de "adaptat" un soft facut de altcineva fara sa stii modul de abordare.
Link spre comentariu

Ce zici de o demonstratie? Pana una alta am facut asm-ul de pe (Universal termometru digital). Trebuie modificate caracterele chirilice. Nu ete greu, dar nu ma apuc pana nu vine LCD-ul.

 

 

Ceea ce face un lucru valoros, este nu ceea ce ai tu de castigat facandu-l, ci ceea ce pierzi daca nu-l faci.

Link spre comentariu

...se pare ca programul are un bug : ceasul ramane mult in urma ! Intre afisarea si non-afisarea ":" am la dispozitie 65 ms pentru a face "altceva". Citirea si "interpretarea" temperaturii de la 2 senzori se pare ca depaseste acest interval...Mai sap.

Pun aici sursa, sa va faceti o idee si, eventual, sa o imbunatatiti !

'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *'* Ceas cu data si termometru cu 2 zone  , cu PIC 16F628A                  *'* by Niculescu Dan, ianuarie 2011                                         *   '* Oscillator XP (4 MHz.)                                                  * '* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *@ DEVICE pic16F628A, XT_osc, WDT_OFF, PWRT_OFF, BOD_OFF, MCLR_ON, LVP_OFF, CPD_OFF, PROTECT_OFF     ' for PBP 2.4INCLUDE "AllDigital.pbp"TRISA= %11111000                       ' RA0..3=Outputs RA4=InputTRISB= %00001111 			         ' RB0..RB2=Inputs, RB3..RB7=OutputsCMCON=7                                ' Disable comparatorsOPTION_REG=%00000111INTCON=0DEFINE LCD_DREG PORTB                  ' LCD on port BDEFINE LCD_DBIT 4                      ' Data bits B4..B7DEFINE LCD_RSREG PORTA                 ' RS on PORTADEFINE LCD_RSBIT 1                     ' RS on A1 DEFINE LCD_EREG PORTA                  ' E on PORTADEFINE LCD_EBIT 0                      ' E on A0DEFINE LCD_BITS 4                      ' LCD 4 bit modeDEFINE LCD_LINES 2                     ' 2 line LCD displayHzTimer         Var     WordHH              Var     Byte        MM              Var     Byte        SS              Var     ByteZIUA            VAR     BYTELUNA            VAR     BYTE		X       	    Var     Byte	col             Var     BitTempC           Var     WordFloat           Var     WordSign		    Var	BIT		   ' +/- signDQ		    Var     PORTA.4	   ' One-wire data pinTempC2          Var     WordFloat2          Var     WordSign2		    Var	BIT		   ' +/- signDQ2		    Var     PORTA.3	   ' One-wire data pinDelay           var     byteMode            VAR     BYTEsemn		    var wordsemn2           var wordDS18B20_1_12bit CON %01111111 ; 750ms,   0.0625°C  (default)DS18B20_2_12bit CON %01111111 ; 750ms,   0.0625°C  (default)HzTimer = $7A12HH=00 : MM=00 : SS=00 : ZIUA=01 : LUNA=01 : col=0  : Mode=0Pause 500LCDOUT $FE, 1, $FE, $0C                 ' Clear display, cursor offPause 100' Init Sensor 1 OWOUT DQ, 1, [$CC, $4E, 0, 0, DS18B20_1_12bit] OWOut DQ, 1, [$CC, $48]       		    ' Start temperature conversion OWOut DQ, 1, [$CC, $B8]  OWOut DQ, 1, [$CC, $BE]  Pause 50 OWIn DQ, 2, [TempC.byte0, TempC.byte1] Pause 50 ' Init Sensor 2 OWOUT DQ2, 1, [$CC, $4E, 0, 0, DS18B20_2_12bit] OWOut DQ2, 1, [$CC, $48]       		    ' Start temperature conversion OWOut DQ2, 1, [$CC, $B8]  OWOut DQ2, 1, [$CC, $BE]  Pause 50 OWIn DQ2, 2, [TempC2.byte0, TempC2.byte1] Pause 50 OPTION_REG.7=1TMR0=0INTCON.2=0Pause 500LCDOUT $FE, 1, $FE, $0C                 ' Clear display, cursor offPause 250LCDOUT $FE, $80,  "  TERMO-CLOCK   "LcdOut $FE, $C0,  "By NICULESCU DAN" PAUSE 3000LCDOUT $FE, 1, $FE, $0C    MainLoop:  If PORTB.0=0 then                      ' Mode switch pressed  Pause 50                              ' Debounce LcdOut $FE, 1 LcdOut $FE, $C0, "         SETTING"    ' Show that command is accepted PAUSE 500 LcdOut $FE, 1If PORTB.0=0 then MainLoop              ' Wait until button is released    Mode=Mode+1                           ' Increment modeENDIFIf Mode=1 then                          ' SET HOURLcdOut $FE, $80, dec2 HHLcdOut $FE, $C0, "HOUR     SETTING"	if portb.1=0 then      HH=HH+1        IF HH=24 then          HH=0        ENDIF      Gosub Debounce	endif	if portb.2=0 then        IF HH = 0 then          HH=24        ENDIF      HH=HH-1      Gosub Debounce	endifEndIfIf Mode=2 then                          ' SET MINUTESLcdOut $FE, $80, dec2 HH,":",dec2 MMLcdOut $FE, $C0, "MINUTES  SETTING"        	if portb.1=0 then      SS=0                              MM=MM+1        IF MM=60 THEN          MM=0        ENDIF      Gosub Debounce	endif	if portb.2=0 then      SS=0                                IF MM =<0 THEN          MM=60        ENDIF      MM=MM-1	Gosub Debounce	endifEndIfIf Mode=3 then                          ' SET DAYLcdOut $FE, $80, dec2 HH,":",dec2 MM,":",dec2 ss,"   ",DEC2 ZIUA,"/"LcdOut $FE, $C0, "DAY      SETTING"	if portb.1=0 then      ziua=ziua+1            IF LUNA=2 THEN                   IF ZIUA > 28 THEN                  ZIUA=1                  ENDIF            ENDIF            IF LUNA=4 OR LUNA=6 OR LUNA=9 OR LUNA=11 THEN                    IF ZIUA > 30 THEN ZIUA=1                  ELSE                  IF ZIUA > 31 THEN ZIUA=1                  ENDIF       Gosub Debounce	endif	if portb.2=0 then      ZIUA=ZIUA-1            IF ZIUA = 0 THEN ZIUA=31      Gosub Debounce	endifEndIfIf Mode=4 then                           ' SET MONTH LcdOut $FE, $80, dec2 HH,":",dec2 MM,":",dec2 ss,"   ",DEC2 ZIUA,"/",DEC2 LUNALcdOut $FE, $C0, "MONTH    SETTING"	if portb.1=0 then      luna=luna+1            if luna>12 then            luna=1            endif      Gosub Debounce	endif	if portb.2=0 then      luna=luna-1            if luna<1 then            luna=12            endif      Gosub Debounce	endifEndIfIf Mode > 4 then 	LCDOUT $FE, $C0, "END      SETTING"	PAUSE 1000    LCDOUT $FE, 1, $FE, $0C 	mode=0EndIfIf Mode > 0 then Mainloop               Main :ClockLoop : IF INTCON.2=0 THEN ClockLoopINTCON.2=0Gosub ReadTempif portb.0=0 then Gosub MainLoop   HzTimer = HzTimer - $1000  'decrement timerIF HzTimer<$1000  THEN    IF Col=1 THEN 'update time'        SS=SS+1        IF SS=60 THEN            SS=0             MM=MM+1            IF MM=60 THEN                MM=0                HH=HH+1                IF HH=24 THEN                    HH=0                    ZIUA=ZIUA+1                         IF LUNA=2 THEN                              IF ZIUA > 28 THEN                             ZIUA=1                             LUNA=3                             ENDIF                         ENDIF                         IF LUNA=4 OR LUNA=6 OR LUNA=9 OR LUNA=11 THEN                                  IF ZIUA > 30 THEN                                 ZIUA=1                                LUNA=LUNA+1                                                              ENDIF                         ENDIF                         IF LUNA=1 OR LUNA=3 OR LUNA=5 OR LUNA=7 OR LUNA=8 OR LUNA=10  THEN                                IF ZIUA > 31 THEN                                 ZIUA=1                                LUNA=LUNA+1                                 ENDIF                                                       ENDIF            				 IF LUNA=12 THEN                                IF ZIUA > 31 THEN                                 ZIUA=1                                LUNA=1                                ENDIF                         ENDIF                           ENDIF            else	      LcdOut $FE, $80, dec2 HH,":",dec2 MM,":",dec2 ss,"   ",DEC2 ZIUA,"/",DEC2 LUNA		ENDIF	else      LcdOut $FE, $80, dec2 HH,":",dec2 MM," ",dec2 ss,"   ",DEC2 ZIUA,"/",DEC2 LUNA      ENDIF    ENDIF    Col=Col+1    HzTimer=HzTimer+$7A12elseLCDOUT $FE, $C0, semn,DEC ABS TempC/100,".", DEC1 ABS TempC/10, 223,"C", "  " ,semn2,DEC ABS TempC2/100,".", DEC1 ABS TempC2/10, 223,"C" ,13,10ENDIF    Goto Main' SUBROUTINES:'----------------------------------------ReadTemp:    OWOut DQ, 1, [$CC, $44]     OWOut DQ, 1, [$CC, $BE]    OWIn  DQ, 2, [TempC.byte0, TempC.byte1]             Sign = TempC.15    TempC = ABS(TempC)    TempC = ((TempC >> 4)*100) + ((TempC & $F)*100 >> 4)    IF Sign THEN TempC = -TempCIF TempC.15 THEN Semn="-" elseSemn="+"endif    OWOut DQ2, 1, [$CC, $44]     OWOut DQ2, 1, [$CC, $BE]    OWIn  DQ2, 2, [TempC2.byte0, TempC2.byte1]             Sign2 = TempC2.15    TempC2 = ABS(TempC2)    TempC2 = ((TempC2 >> 4)*100) + ((TempC2 & $F)*100 >> 4)    IF Sign2 THEN TempC2 = -TempC2IF TempC2.15 THEN Semn2="-"elseSemn2="+"endifReturn'----------------------------------------Debounce :For Delay= 1 to 200Pause 1next DelayReturn   END       					     ' Of program
Link spre comentariu

Eu nu ma pricep la programare, insa urmaresc cu mult interes acest subiect si tin sa aduc multa admiratie celor ce se muncesc sa dea viata acestui proiect foarte practic, el putand fi folosit cu succes atat in casa cat si in autoturism(de exemplu). Multe felicitari si succes baieti!!! :aplauze :aplauze :aplauze

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