Hazırlayan: Tamer Tömekçe – PIC 16F84 Mikro denetleyici üzerine kurulu bir saat termometre devresi. Özellikle açıklamalı assembly kodları programlamaya yeni başlayan kişiler için faydalı olabilir. Emeği geçen hazırlayan kişilere teşekkürler.
Termometre Devresinin Çlışma Prensibi
Devrede asıl istenen 4 adet display ile yaklaşık 15 saniye aralıklarla zamanı ve sıcaklığı göstermesidir. Zaman yazılış formatı ‘ss.dd’ şeklinde olup sıcaklık formatı ise ‘XXοC’ şeklindedir. Devreye enerji verildikten sonra saat ve dakika göstergelerinde varsayılan değer olan 00.00 değeri yanıp sönecektir.
Dakika ayar ve saat ayar tuşlarına basılması durumunda saat ayarlanacak ve SET tuşuna basıldığında saat işlemeye ve 15 saniye içinde sıcaklık gösterilmeye başlanacaktır. Bu bir döngü şeklinde devam edecektir.
Devrede saatin çalışması ve sıcaklık ölçümü pic16F84 ile yapılmaktadır. Saatin çalışması pic içerisindeki TMR0 dahili komut sayacı kullanılarak programlanmıştır. Devrenin çalışmasında kullanılan program ek’te mevcuttur. 1 komut saykılının 1µs olduğu bilindiğinerek, TMR0 sayacının her döngüsünde oluşturulan kesme ile sayaç a ve sayaç b değerleri artırılmaktadır.
Sayaç a’nın istenen değere ulaşması ile sayaç b artırılır. Sayaç b’nin istenen değere ulaşması tam 1 dakikadır ve dakika değeri 1 arttırılır. Bunun bir döngü halinde gitmesi saatin çalışmasını sağlamaktadır.
Devrenin sıcaklık ölçen kısmında ise 1 adet NTC ve kondansatör seri olarak bağlanmış olup (devre şeması ek’te mevcuttur) kondansatör üzerinde oluşan gerilim ölçülmek üzere PIC’in portA 4. pinine bağlanmıştır.
Bu küçük devrenin çalışma prensibi ise sıcaklık ölçülmek istendiğinde kondansatörün PIC’e bağlı olduğu pinden lojik ‘0’ değeri (0V) verilir ve kondansatörün boşalmasına yetecek kadar bir sürelik gecikme sağlanır. Kondansatörün boşalması tamamlandıktan sonra PIC’in bu pini giriş olarak koşullanır, bu sırada kondansatör doluma geçecektir.
Koşullama yapıldıktan sonra bu pinden lojik ‘1’ değeri gelene kadar (bu kondansatörün dolduğu anlamına gelir) RCSAY sayacını arttıran bir döngü çalıştırılır. Kondansatörün dolum hızı direnç ve kondansatör değerinin çarpımına bağlı olduğundan bu dolum süresi farklı direnç değerlerinde değişecektir.
Kullandığımız direnç NTC olduğundan farklı sıcaklıklarda farklı değerler gösterecektir. Bu sayede RCSAY sayacından elde ettiğimiz değer her sıcaklıkta farklı olacaktır. Elde ettiğimiz bu değerlerin kaç dereceye denk geldiği ise NTC test programı (ek’te mevcuttur) kullanılarak farklı sıcaklıklarda yapılan ölçümler sonucunda belirlenmiştir.
Elimizde bulunan PIC modelinin toplam 13 adet giriş çıkış pinleri mevcuttur. Kullanılan displayler ise 7 segment olduğundan tüm displayler aynı anda çalıştırılamamaktadır. Bunun içinse tüm displaylerin a, b, c, d, e, f ve g olarak bilinen uçları paralel olarak bağlanmıştır. Ancak tüm displaylerin toprak uçları lojik kapılardan oluşan bir switcher devresi ile anahtarlama yapılmıştır.
Bu anahtarlama devresi için portA’nın 0. ve 1. bitleri kullanılmıştır. Anahtarlama devresi iki adet lojik değil kapısından ve 4 adet lojik vedeğil kapısından oluşmaktadır. Bu kapılar BC237 transistörler ve dirençler ile oluşturulmuştur.
Bu şekilde portA ya 00 değeri basıldığında 1. display, 01 değeri basıldığında 2.display, 10 değeri basıldığında 3. display ve 11 değeri basıldığında 4. display aktif olacaktır. Böylece elimizdeki PIC’in 9 adet pinini kullanarak 4 adet displayi çalıştırabilmiş olduk.
4 display hiçbir zaman aynı anda çalışmamaktadır, sırayla birinci, ikinci, üçüncü ve dördüncü displayler göstermeleri gerektiği değeri göstermektedir. Ancak bu işlem çok hızlı yapıldığından insan gözü bu anahtarlamayı farkedememektedir ve hepsini aynı anda yanıyormuş gibi görmektedir.
Diğer gerekli açıklamalar program üzerinde açıklamalar şeklinde detaylı olarak anlatılmıştır.
Devre malzeme listesi
- 1 Adet pic16F84
- 1 Adet kristal osilatör
- 2 Adet 22pF kondansatör
- 4 Adet 7 segment ortak katodlu display
- 1 Adet 10K NTC
- 4 Adet buton
- 10 Adet BC237 transistör
- 26 Adet 470ohm, 1 Adet 10K ve 1 adet 100ohm direnç
- 2 Adet 0.1uF kondansatör
Assembly yazılımları
;-------------------PROJE 3------------------------------------ ;------------------------------------------------------------- ;----------DİJİTAL SAAT VE TERMOMETRE----------24.01.2005---11.40----- ;------------------------------------------------------------------ ;------------------TAMER-TÖMEKÇE----000208001------------------------- ;--------------------------------------------------------------------- INCLUDE "P16F84A.INC" HOURA EQU H'0C' ;SAAT DEĞERİ ONLAR BASAMAĞI HOURB EQU H'0D' ;SAAT DEĞERİ BİRLER BASAMAĞI MINUTEA EQU H'0E' ;DAKİKA DEĞERİ ONLAR BASAMAĞI MINUTEB EQU H'0F' ;DAKİKA DEĞERİ BİRLER BASAMAĞI SAYACA EQU H'10' ;TMR0 DOLDUĞUNDA 1 ARTACAK OLAN SAYAÇ SAYACB EQU H'11' ;SAYAÇ A DOLDUĞUNDA 1 ARTACAK OLAN SAYAÇ FLSHON1 EQU H'12' ;SAAT AYARLANIRKEN DİSPLAYLERİN FLASH, FLSHOF1 EQU H'13' ;YAPMASINI SAĞLAYAN GECİKME DEĞERLERİ DLPCNTR EQU H'14' ;DİSPLAY LOOP COUNTER(1 DİSPLAYİN SWİTCHİNG SIRASINDA ; NE KADAR SÜRE YANACAĞI) GCKSAY1 EQU H'15' GCKSAY2 EQU H'16' ;KONDANSATÖR BOŞALMA SIRASINDAKİ GECİKMEYİ SAĞLARLAR RCSAY EQU H'17' ;KONDANSATÖRÜN DOLUMU SÜRESİNCE ARTAN SAYAÇ TEMPA EQU H'18' ;SICAKLIK DEĞERİ ONLAR BASAMAĞI TEMPB EQU H'19' ;SICAKLIK DEĞERİ BİRLER BASAMAĞI FLSHON2 EQU H'1A' FLSHOF2 EQU H'1B' KSMSKLA EQU H'1C' ;PROGRAM KESMEYE DALLANDIĞINDA W ;REGISTER DA BULUNAN SAYIYI SAKLAMAK İÇİN ;KULLANILIR ;------------------------------------------------------------ ORG H'00' ;PROGRAM BAŞLANGICI GOTO START ORG H'04' ;TMR0 SAYICISI İLE SAĞLANACAK KESME BAŞLANGICI GOTO KESME ;---------------------------------------------------------------------------------------------------- START BSF STATUS, 5 ;BANK 1'E GEÇ MOVLW B'00001100' MOVWF TRISA ;PORT A KOŞULLAMASI(RA0-RA1 SWİTCHİNG, RA2 DAKİKA AYAR, ; RA3 SAAT AYAR, RA4 SICAKLIK ÖLÇ) MOVLW B'10000000' MOVWF TRISB ;PORT B KOŞULLAMASI(RB7 SET DÜĞMESİ, RB0-RB6 DİSPLAY ÇIKIŞLARI) MOVLW B'00000111' MOVWF OPTION_REG ;OPTION REGISTER KOŞULLAMASI(B7 PORTB PULLUPLAR GEÇERSİZ, ;B5 DAHİLİ SAYKIL, B3 TMR0, B0-B2 1/256) BCF STATUS, 5 ;BANK 0'A GEÇ MOVLW B'10100000' MOVWF INTCON ;INTCON REGISTER KOŞULLAMASI(B7-GIE- TÜM KESMELER GEÇERLİ, ;B5-TOIE- TMR0 SAYICI KESMESİ GEÇERLİ) CLRF PORTA CLRF PORTB CLRF HOURA CLRF HOURB CLRF MINUTEA CLRF MINUTEB CLRF SAYACA CLRF SAYACB CLRF RCSAY CLRF TEMPA CLRF TEMPB ;------------------------------------------------------------ SETSTART ;PROGRAM BAŞLANGICINDA SAAT AYARLANMASI BEKLENİR MOVLW H'10' MOVWF FLSHON1 MOVLW H'FF' MOVWF FLSHOF1 ;FLASH GECİKME DEĞERLERİ AAAAA MOVLW H'FF' MOVWF FLSHON2 LOOPA CLRF TMR0 ;SAAT ÇALIŞMAYA BAŞLAMASIN DİYE CALL TIMEDISP ;SAATI YAZDIR BTFSS PORTA, 2 ;RA2(DAKİKA AYAR) BASILDI MI? CALL INCMINUTE ;DAKİKA ARTTIRAN ALT PROGRAMA GİT BTFSS PORTA, 3 ;RA3(SAAT AYAR) BASILDI MI? CALL INCHOUR ;SAAT ARTTIRAN ALT PROGRAMA GİT BTFSS PORTB, 7 ;RB7(SET TUŞU) BASILDI MI? GOTO TMR0SET ; MAINLOOP'A GİT DECFSZ FLSHON2, F GOTO LOOPA DECFSZ FLSHON1, F GOTO AAAAA BBBBB MOVLW H'FF' MOVWF FLSHOF2 LOOPB CLRF TMR0 ;SAAT ÇALIŞMAYA BAŞLAMASIN DİYE MOVLW B'10000000' ANDWF PORTB, F BTFSS PORTA, 2 ;RA2(DAKİKA AYAR) BASILDI MI? CALL INCMINUTE ;DAKİKA ARTTIRAN ALT PROGRAMA GİT BTFSS PORTA, 3 ;RA3(SAAT AYAR) BASILDI MI? CALL INCHOUR ;SAAT ARTTIRAN ALT PROGRAMA GİT BTFSS PORTB, 7 ;RB7(SET TUŞU) BASILDI MI? GOTO TMR0SET ;MAINLOOP'A GİT DECFSZ FLSHOF2, F GOTO LOOPB DECFSZ FLSHOF1, F GOTO BBBBB GOTO SETSTART ;------------------------------------------------------- TMR0SET MOVLW H'5D' MOVWF TMR0 ;TMR0 93 DEN SAYMAYA BAŞLATILIR(163'E KADAR SAYMASI İSTENMEKTEDİR) ;------------------------------------------------------- MAINLOOP BSF PORTA, 4 ;RA4 LOJİK "1" YAPILIR(SICAKLIK OKUNMADIĞI SÜRECE NTC'NİN ;AKIM ÇEKEREK SICAKLIĞININ DEĞİŞMEMESİ İÇİN) CALL TIMEDISP ;SAATİ DİSPLAYLERE YAZDIR BTFSC SAYACB, 2 CALL SICAKLIK ;SAYACB'NİN 2.BİTİNİN DEĞİŞMESİ YAKLAŞIK OLARAK 15 SANİYEDİR GOTO MAINLOOP ;---------------------------------------------------------- TIMEDISP BCF PORTA, 0 BCF PORTA, 1 ;DİSPLAY SWİTCHER '00'( DISPLAY 0) MOVF HOURA, W CALL CEV_TAB MOVWF PORTB ;HOURA DEĞERİNİ DİSPLAY 0'A BASAR CALL DISPDELAY ;DISPDELAY SÜRESİ KADAR SONRA SWİTCHİNG YAPAR INCF PORTA, F ;DİSPLAY SWİTCHER '01'( DİSPLAY 1) MOVF HOURB, W CALL CEV_TAB MOVWF PORTB ;HOURB DEĞERİNİ DİSPLAY 1'E BASAR CALL DISPDELAY ;SWİTCHİNG GECİKMESİ INCF PORTA, F ;DİSPLAY SWİTCHER '10'( DİSPLAY 2) MOVF MINUTEA, W CALL CEV_TAB MOVWF PORTB ;MINUTEA DEĞERİNİ DİSPLAY 2'YE BASAR CALL DISPDELAY ;SWİTCHİNG GECİKMESİ INCF PORTA, F ;DİSPLAY SWİTCHER '11'( DİSPLAY 3) MOVF MINUTEB, W CALL CEV_TAB MOVWF PORTB ;MINUTEB DEĞERİNİ DİSPLAY 3'E BASAR CALL DISPDELAY ;SWİTCHİNG GECİKMESİ RETURN DISPDELAY MOVLW H'30' ;48 KEZ GECİKME DÖNGÜSÜ MOVWF DLPCNTR LOOP1 DECFSZ DLPCNTR, F GOTO LOOP1 RETURN ;TOPLAM OLARAK YAKLAŞIK 70 SAYKIL SWİTCHİNG GECİKMESİ ;----------------------------------------------------------- SICAKLIK CLRF RCSAY MOVLW H'04' MOVWF TEMPA CLRF TEMPB ;TEMP DEFAULT DEĞER 40 DERECEDİR. CALL DESARJ ;KONDANSATÖRÜN BOŞALMASI İÇİN GEREKLİ BEKLEME BSF STATUS, 5 ;BANK 1 E GEÇ BSF TRISA, 4 ;RA 4 Ü GİRİŞ KOŞULLA(KONDANSATÖR DOLUMA GEÇER) BCF STATUS, 5 ;BANK 0 A GEÇ COUNT INCF RCSAY, F ;RCSAY SAYACINI 1 ARTTIR BTFSS PORTA, 4 ;KONDANSATÖR DOLDU MU? DOLDUYSA EĞER DOLUM SÜRESİ RCSAY'DA SAKLI GOTO COUNT CONVERT MOVLW H'07' SUBWF RCSAY, F ;RCSAY'DAN 7 ÇIKAR BTFSS STATUS, 0 ;CARRY FLAG '0' MI? '0' SA ÇIKARMA İŞLEMİ SONUCU NEGATİF DEMEKTİR GOTO TEMPDISP ;CARRY FLAG 0 SA, YANİ SONUÇ NEGATİFSE TEMPDISP'E GİT CALL TEMPBUL MOVLW H'06' SUBWF RCSAY, F ;RCSAY'DAN BU KEZ 6 ÇIKAR.(RCSAY 1 DERECEDE 6.65 DEĞİŞİYORDU. ;YAKLAŞIK DEĞER İÇİN) BTFSS STATUS, 0 ;CARRY FLAG '0' MI? '0' SA ÇIKARMA İŞLEMİ SONUCU NEGATİF DEMEKTİR GOTO TEMPDISP ;CARRY FLAG 0 SA, YANİ SONUÇ NEGATİFSE TEMPDISP'E GİT CALL TEMPBUL GOTO CONVERT TEMPBUL DECF TEMPB, F MOVLW H'FF' XORWF TEMPB, W BTFSS STATUS, 2 RETURN MOVLW H'09' MOVWF TEMPB DECF TEMPA, F RETURN TEMPDISP BCF PORTA, 0 BCF PORTA, 1 ;DİSPLAY SWİTCHER '00'( DISPLAY 0) MOVF TEMPA, W CALL CEV_TAB MOVWF PORTB ;TEMPA DEĞERİNİ DİSPLAY 0'A BASAR CALL DISPDELAY ;DISPDELAY SÜRESİ KADAR SONRA SWİTCHİNG YAPAR INCF PORTA, F ;DİSPLAY SWİTCHER '01'( DİSPLAY 1) MOVF TEMPB, W CALL CEV_TAB MOVWF PORTB ;TEMPB DEĞERİNİ DİSPLAY 1'E BASAR CALL DISPDELAY ;DISPDELAY SÜRESİ KADAR SONRA SWİTCHİNG YAPAR INCF PORTA, F ;DİSPLAY SWİTCHER '10'( DİSPLAY 2) MOVLW H'63' MOVWF PORTB ;DERECE İŞARETİNİ DİSPLAY 2'YE BASAR CALL DISPDELAY INCF PORTA, F ;DİSPLAY SWİTCHER '11'( DİSPLAY 3) MOVLW H'39' MOVWF PORTB ;C HARFİNİ DİSPLAY 3'E BASAR CALL DISPDELAY BTFSS SAYACB, 2 RETURN ;SAYACB'NİN 1.BİTİNİN DEĞİŞMESİ YAKLAŞIK OLARAK 5 SANİYEDİR GOTO TEMPDISP DESARJ BSF STATUS, 5 ;BANK 1 E GEÇ BCF TRISA, 4 ;RA 4 Ü ÇIKIŞ KOŞULLA BCF STATUS, 5 ;BANK 0 A GEÇ BCF PORTA, 4 ;RA 4 Ü LOJİK 0 YAP...BÖYLECE KONDANSATÖR BOŞALIMA GEÇECEKTİR MOVLW H'FF' MOVWF GCKSAY1 DONGU1 CALL TIMEDISP ;DEŞARJ SIRASINDA OLUŞAN GECİKME SIRASINDA ;DİSPLAYLER SÖNMESİN DİYE SAATİ BASAR MOVLW H'FF' MOVWF GCKSAY2 DONGU2 DECFSZ GCKSAY2, F GOTO DONGU2 DECFSZ GCKSAY1, F GOTO DONGU1 RETURN ;-------------------------------------------------------------------------------------------------- CEV_TAB ADDWF PCL, F RETLW H'3F' ;0 RETLW H'06' ;1 RETLW H'5B' ;2 RETLW H'4F' ;3 RETLW H'66' ;4 RETLW H'6D' ;5 RETLW H'7D' ;6 RETLW H'07' ;7 RETLW H'7F' ;8 RETLW H'6F' ;9 RETLW H'63' ;(DERECE İŞARETİ) RETLW H'39' ;C ;---------------------------------------------- INCMINUTE CALL DELAY INCF MINUTEB, F ;DAKİKAYI 1 ARTTIR MOVLW H'0A' XORWF MINUTEB, W BTFSS STATUS, 2 ;MINUTEB DEĞERİ H'0A' İSE 0 OLMASI GEREKİR VE ;MINUTEA'YI 1 ARTTIRMASI GEREKİR RETURN CLRF MINUTEB ;MINUTEB'Yİ SIFIRLA INCF MINUTEA, F ;MINUTEA'YI 1 ARTTIR MOVLW H'06' XORWF MINUTEA, W BTFSS STATUS, 2 ;MINUTEA DEĞERİ H'06' İSE 0 OLMASI GEREKİR RETURN CLRF MINUTEA ;MINUTEA'YI SIFIRLA RETURN INCHOUR CALL DELAY INCF HOURB, F ;SAATİ 1 ARTTIR MOVLW H'02' XORWF HOURA, W BTFSC STATUS, 2 ;HOURA 2 Mİ? 2 İSE HOURB 3 TEN SONRA SIFIRLANMALI, DEĞİLSE 9 DAN SONRA. GOTO SETSAAT24 MOVLW H'0A' XORWF HOURB, W BTFSS STATUS, 2 ;HOURB DEĞERİ H'0A' İSE 0 OLMASI GEREKİR VE HOURA'YI 1 ARTTIRMASI GEREKİR RETURN CLRF HOURB ;HOURB'Yİ SIFIRLA INCF HOURA, F ;HOURA'YI 1 ARTTIR RETURN SETSAAT24 MOVLW H'04' XORWF HOURB, W BTFSS STATUS, 2 ;HOURB DEĞERİ H'04' İSE BU DURUMDA SAAT 00 OLMUŞTUR. RETURN CLRF HOURB CLRF HOURA ;HOURA VE HOURB SIFIRLANIR RETURN ;---------------------------------------------------- DELAY MOVLW H'02' MOVWF GCKSAY1 DLYLOOP1 CLRF TMR0 MOVLW H'C8' MOVWF GCKSAY2 DLYLOOP2 CALL TIMEDISP DECFSZ GCKSAY2, F GOTO DLYLOOP2 DECFSZ GCKSAY1, F GOTO DLYLOOP1 RETURN ;-------------------------------------------------- KESME MOVWF KSMSKLA ;W DAKİ DEĞERİ SAKLAMAK İÇİN MOVLW H'5D' MOVWF TMR0 ;TMR0'A TEKRAR 163 DEĞERİNİ VER, SAYMAYA DEVAM ETSİN BCF INTCON, T0IF ;SONRAKİ KESMELERE HAZIRLAMAK İÇİN T0IF BAYRAĞI SIFIRA ÇEKİLİR INCF SAYACA, F ;SAYACA 1 ARTTIRILIR MOVLW H'50' XORWF SAYACA, W BTFSS STATUS, 2 ;SAYACA 80 Mİ? 80 İSE SIFIRLANMALI VE SAYACB 1 ARTTIRILMALI GOTO KESMESON CLRF SAYACA INCF SAYACB, F ;SAYACA'YI SIFIRLA, SAYACB'Yİ 1 ARTTIR MOVLW H'12' XORWF SAYACB, W BTFSS STATUS, 2 ;SAYACB 18 Mİ? 18 İSE SIFIRLANMALI VE DAKİKA(MINUTEB) 1 ARTTIRILMALI GOTO KESMESON CLRF SAYACB INCF MINUTEB, F ;DAKİKAYI 1 ARTTIR MOVLW H'0A' XORWF MINUTEB, W BTFSS STATUS, 2 ;MINUTEB DEĞERİ H'0A' İSE 0 OLMASI GEREKİR ;VE MINUTEA'YI 1 ARTTIRMASI GEREKİR GOTO KESMESON CLRF MINUTEB ;MINUTEB'Yİ SIFIRLA INCF MINUTEA, F ;MINUTEA'YI 1 ARTTIR MOVLW H'06' XORWF MINUTEA, W BTFSS STATUS, 2 ;MINUTEA DEĞERİ H'06' İSE 0 OLMASI GEREKİR VE HOURB'Yİ 1 ARTTIRMASI GEREKİR GOTO KESMESON CLRF MINUTEA ;MINUTEA'YI SIFIRLA INCF HOURB, F ;HOURB'Yİ 1 ARTTIR MOVLW H'02' XORWF HOURA, W BTFSC STATUS, 2 ;HOURA 2 Mİ? 2 İSE HOURB 3 TEN SONRA SIFIRLANMALI, DEĞİLSE 9 DAN SONRA. GOTO SAAT24 MOVLW H'0A' XORWF HOURB, W BTFSS STATUS, 2 ;HOURB DEĞERİ H'0A' İSE 0 OLMASI GEREKİR VE HOURA'YI 1 ARTTIRMASI GEREKİR GOTO KESMESON CLRF HOURB ;HOURB'Yİ SIFIRLA INCF HOURA, F ;HOURA'YI 1 ARTTIR GOTO KESMESON SAAT24 MOVLW H'04' XORWF HOURB, W BTFSS STATUS, 2 ;HOURB DEĞERİ H'04' İSE BU DURUMDA SAAT 00 OLMUŞTUR. GOTO KESMESON CLRF HOURB CLRF HOURA ;HOURA VE HOURB SIFIRLANIR GOTO KESMESON KESMESON MOVF KSMSKLA, W ;SAKLANAN W DEĞERİ GERİ YÜKLENİR RETFIE ;--------------------------- END
;----------------------------NTC TEST.ASM-------- ;-----SICAKLIK ÖLÇMEDE KULLANILACAK NTC WE KONDANSATÖR İKİLİSİNDE----- ;-----KONDANSATÖRÜN DOLUM SÜRESİNİ SAYARAK DİSPLAYLERDE GÖSTEREN--- ;------------------------------PROGRAM----------- W EQU H'00' F EQU H'01' PORTA EQU H'05' PORTB EQU H'06' TRISA EQU H'85' TRISB EQU H'86' STATUS EQU H'03' PCL EQU H'02' RCSAY1 EQU H'0C' RCSAY2 EQU H'0D' DGCKSAY EQU H'0E' GCKSAY1 EQU H'0F' GCKSAY2 EQU H'10' DSP0 EQU H'11' DSP1 EQU H'12' DSP2 EQU H'13' DSP3 EQU H'14' SAYAC EQU H'15' GCKSAY3 EQU H'16' ORG H'00' BASLA BSF STATUS, 5 ;BANK 1 E GEÇ CLRF TRISA CLRF TRISB BCF STATUS, 5 ;BANK 0 A GEÇ BSF PORTA, 4 ;RA 4 Ü LOJİK 1 YAP CLRF PORTB CLRF RCSAY1 CLRF RCSAY2 MOVLW H'FF' MOVWF SAYAC ;SAYAC'A FF WERİLİR.EKRANDA YAZILARIN KALMA SÜRESİ DESARJ BCF PORTA, 4 ;RA 4 Ü LOJİK 0 YAP CALL GECIK BSF STATUS, 5 ;BANK 1 E GEÇ BSF TRISA, 4 ;RA 4 Ü GİRİŞ KOŞULLA BCF STATUS, 5 ;BANK 0 A GEÇ SAY INCF RCSAY1, F BTFSC STATUS, 0 ;CARRY FLAG 1 Mİ? INCF RCSAY2, F BTFSS PORTA, 4 GOTO SAY SWAPF RCSAY2, W ;RCSAY2 NİN EN ANDLW H'0F' ;ANLAMLI 4 BİTİNİ MOVWF DSP0 ;DSP0 A YAZ MOVF RCSAY2, W ;RCSAY2 NİN EN AZ ANDLW H'0F' ;ANLAMLI 4 BİTİNİ MOVWF DSP1 ;DSP1 E YAZ SWAPF RCSAY1, W ;RCSAY1 İN EN ANDLW H'0F' ;ANLAMLI 4 BİTİNİ MOVWF DSP2 ;DSP2 YE YAZ MOVF RCSAY1, W ;RCSAY1 İN EN AZ ANDLW H'0F' ;ANLAMLI 4 BİTİNİ MOVWF DSP3 ;DSP3 E YAZ YAZDIR CLRF PORTA ;RA1 WE RA0 '00' YAPILIR(DISP0) MOVF DSP0, W CALL CEV_TAB MOVWF PORTB ;DISPLAY 0'A DEĞERİNİ BAS CALL DSPGCK INCF PORTA, F MOVF DSP1, W CALL CEV_TAB MOVWF PORTB ;DISPLAY 1'E DEĞERİNİ BAS CALL DSPGCK INCF PORTA, F MOVF DSP2, W CALL CEV_TAB MOVWF PORTB ;DISPLAY 2'YE DEĞERİNİ BAS CALL DSPGCK INCF PORTA, F MOVF DSP3, W CALL CEV_TAB MOVWF PORTB ;DISPLAY 3'E DEĞERİNİ BAS CALL DSPGCK DECFSZ SAYAC, F GOTO YAZDIR GOTO BASLA DSPGCK MOVLW H'28' ;DISPLAYLERIN REFRESH SIRASINDA GORUNTU WERECEĞİ SÜRE(40 SAYKIL) MOVWF DGCKSAY DONGU4 DECFSZ DGCKSAY, F GOTO DONGU4 RETURN GECIK MOVLW H'FF' MOVWF GCKSAY1 DONGU1 MOVLW H'FF' MOVWF GCKSAY2 DONGU2 MOVLW H'05' MOVWF GCKSAY3 DONGU3 DECFSZ GCKSAY3, F GOTO DONGU3 DECFSZ GCKSAY2, F GOTO DONGU2 DECFSZ GCKSAY1, F GOTO DONGU1 RETURN CEV_TAB ADDWF PCL, F RETLW H'3F' ;0 RETLW H'06' ;1 RETLW H'5B' ;2 RETLW H'4F' ;3 RETLW H'66' ;4 RETLW H'6D' ;5 RETLW H'7D' ;6 RETLW H'07' ;7 RETLW H'7F' ;8 RETLW H'6F' ;9 RETLW H'77' ;A RETLW H'7C' ;B RETLW H'39' ;C RETLW H'5E' ;D RETLW H'79' ;E RETLW H'71' ;F END
Güncelleme 16f84 16f628 termometre devreleri
Deli Bekir yorumuna yanıt olarak.
Merhaba,
2009 yılında paylaşmışım kodlar ve devre hakkında detaylı açıklama olduğu için faydalı olacağını düşünmüşümdür fakat yazıya şemanın okunaklı olmadığı hakkında not düşmemişim gerçi benzer devreler incelenerek çözülebilir ama biraz uğraşmak gerekecek..
proteus, eagle, asm, hex vb. tüm detayları ile yapılmış termometre projesi ekliyorum pic16f84 ve pic16f628 ile yapılabilir Calibration-details.doc dosyasında kaynak ve ayarlama hakkında detaylar verilmiş.
Şifre-Pass: 320volt.com
iyi çalışmalar.
Yayım tarihi: 2009/09/18 Etiketler: Assembly, dijital saat, microchip pic projeleri, PIC16F84 örnekleri, termometre devresi
hocam devrede atlama yok,hatlar üzerinde noktayla bağlantı belirleme yok, hangi transistörün bacağı hangisine bağlı belli değil amatör biri bu devreyi nasıl yapacak sizce
ibrahim kardeşim düşüncelerime tercüman olmuş bir an önce düzeltmenizi bekliyorum lütfen çok önemli
devreyi ben denedim ama hiç bir şekilde çalıştıramadım,
Bu devrenin proteus çizimi olan var mı? fotodan pek belli olmuyor. Anlayabildiğim kadarıyla çizdim ama çalıştıramadım. Eğer anlatabilecek varsa çok yardımcı olmuş olur..
transistörün sembolünden bacaklarını okuyamıyosanız bu işe hiç kalkışmayın bence, oklu olan emiter yukarısındaki kollektör düz çizgiye gelen ise beyzdir.ayrıca çizim de proteus dan çizilmiştir.
Teşekürler Admin Eline sağlık
Teşekkürler
ben ntc ile ölcülen sıya göre çıkış vermek istiyorum bunu nasıl yapabiliriz 2. kodu düzenlersek ?
hem displayden ısı derecesi yazıcak hemde 30 derece olursa porta nın boş ayaklarından birini 1 yapıcak ?
o kadar çok transistör almaktansa Display Sürücüsü İle Sürmek Daha İyi Degilmi?
selamun aleyküm okuldan ödev olarak verdiler bu devreyi ama pic programlama ile ilgili pek bilgim yok programa nasıl atabilirim yada elinde yazılmış halde olan varsa atabilrmi rica etsem durum acil biraz 1 hafta süresi varda ben yüklemesini yapabilirim pice
devrenin gerekli dosyalarını rica etsem [email protected] adresine yollarmısın hex şema pcb gibi şimdiden teşekkürler
biz yardım istiyoruz ama boşuna 🙁
bu site ile hiç ilgikenen yok galiba. devre laf olsun, ditede kalabalık yapıp dolu görünsün diye atılmış.. Şema okunmuyor, 470 ohn direnç için ise 26 adet yazılmış.
Merhaba,
2009 yılında paylaşmışım kodlar ve devre hakkında detaylı açıklama olduğu için faydalı olacağını düşünmüşümdür fakat yazıya şemanın okunaklı olmadığı hakkında not düşmemişim gerçi benzer devreler incelenerek çözülebilir ama biraz uğraşmak gerekecek..
proteus, eagle, asm, hex vb. tüm detayları ile yapılmış termometre projesi ekliyorum pic16f84 ve pic16f628 ile yapılabilir Calibration-details.doc dosyasında kaynak ve ayarlama hakkında detaylar verilmiş.
16f84-16f628-dijital-saat-termometre.rar
iyi çalışmalar