
LCD Göstergeli Saat Tarih Derece Devresinin tüm kaynak dosyaları var
Devre Şeması ve Bitmiş çalışır halinin resimleri

Pic Basic Yazılımı
'**************************************************************** '* Name : UNTITLED.BAS * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2008 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 18.05.2008 * '* Version : 1.0 * '* Notes : * '* : * '**************************************************************** @ DEVICE pic16F628 'işlemci 16F628 @ DEVICE pic16F628, WDT_ON 'Watch Dog timer açık @ DEVICE pic16F628, PWRT_ON 'Power on timer açık @ DEVICE pic16F628, PROTECT_OFF 'Kod Protek kapalı @ DEVICE pic16F628, MCLR_OFF 'MCLR pini kullanılıyor. @ DEVICE pic16F628, INTRC_OSC_NOCLKOUT 'Dahili osilatör kullanılacak Include "MODEDEFS.BAS" ON INTERRUPT GoTo Kesme OPTION_REG=%0000000 INTCON=%10010000 CMCON=7 OPTION_REG.7=1 '***********LCD Tanımlamaları*********** DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 1 DEFINE LCD_RWREG PORTB DEFINE LCD_RWBIT 2 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 3 DEFINE LCD_BITS 4 DEFINE LCD_LINES 2 '***********Saat İçin Gerekli Port Tanımlamaları*********** RTC_RST var PORTA.0 RTC_DTA var PORTA.7 RTC_CLK var PORTA.6 '***********Özel Karakter Tanımlamaları LCDOUT $FE,$40, 6, 9, 9, 6, 0, 0, 0, 0 'Derece İşareti '***********Port Ayarları*********** TrisA=%00011000 TrisB=%00000001 PortA=0 PortB=0 '***********RTC DS1302 DEĞİŞKENLERİ*********** SN VAR BYTE DAK VAR BYTE SAAT VAR BYTE GUN VAR BYTE AY VAR BYTE YIL VAR BYTE MEM var byte SAYI VAR BYTE DAY var byte ONLAR VAR BYTE BIRLER VAR BYTE '***********Değişken Tanımlamaları*********** Ayar_D var bit Sayac var byte B_Say var byte '***********Sensör Tanımlamaları*********** Comm_Pin VAR PortA.1 Busy VAR BIT HAM VAR WORD ISI VAR WORD SIGN VAR BYTE SIGN_BITI VAR HAM.Bit11 NEGAT_ISI CON 1 TEMP VAR BYTE Float VAR WORD '***********Buton Tanımlamaları*********** Buton1 var PortB.0 Buton2 var PortA.4 Buton3 var PortA.3 '***********LCD yi Kullanıma Hazır Hale Getir*********** LOW PORTB.2 lcdout $FE,1 PAUSE 200 lcdout $FE,1 '***********Değişken Değerleri*********** Ayar_D=0 Sayac=0 B_Say=0 '***********Program Başlangıcı*********** Basla: if Ayar_D=0 then gosub Zaman_Oku gosub SENSOROKU lcdout $FE,1,dec2 Saat,":",dec2 Dak,":",dec2 Sn," ",Sign,DEC ISI,".",DEC1 (Float),0,"C" lcdout $FE,$C0,dec2 Gun,"/",dec2 Ay,"/20",dec2 YIL," " gosub Gun_Yaz pause 500 else select case Sayac 'Cursor Ayarı case 1 lcdout $FE,$0E lcdout $FE,$80 case 2 lcdout $FE,$0E lcdout $FE,$83 case 3 lcdout $FE,$0E lcdout $FE,$86 case 4 lcdout $FE,$0E lcdout $FE,$C0 case 5 lcdout $FE,$0E lcdout $FE,$C3 case 6 lcdout $FE,$0E lcdout $FE,$C6 case 7 lcdout $FE,$0E lcdout $FE,$CC end select gosub Buton_Oku lcdout $FE,1,dec2 Saat,":",dec2 Dak,":",dec2 Sn lcdout $FE,$C0,dec2 Gun,"/",dec2 Ay,"/20",dec2 YIL," " gosub Gun_Yaz endif Goto Basla '***********Sensör Oku*********** SENSOROKU: OWOUT Comm_Pin, 1, [$CC, $44]' ISI değerini oku Bekle: OWIN Comm_Pin, 4, [Busy] ' Busy değerini oku IF Busy = 0 THEN Bekle ' hala meşgulmü? , evet ise goto Bekle..! OWOUT Comm_Pin, 1, [$CC, $BE]' scratchpad memory oku OWIN Comm_Pin, 2, [HAM.Lowbyte, HAM.Highbyte]' İki byte oku ve okumayı bitir. GOSUB Hesapla RETURN Hesapla: ' Ham değerden Santigrat derece hesabı Sign = "+" IF SIGN_BITI = NEGAT_ISI THEN Sign = "-" temp=($ffff-ham+1)*625 ISI = DIV32 10 GOTO GEC endif TEMP = 625 * (HAM+1) ' ISI = DIV32 10 ' Div32 hassas derece hesabı için 32 bit bölme yapıyoruz. GEC: FLOAT = (ISI //1000)/100 ISI=(ISI/1000)-1 '***********Buton Oku*********** Buton_Oku: select case Sayac case 1 if Buton3=0 then saat=saat+1 if Buton2=0 then saat=saat-1 pause 200 if saat>23 then saat=0 case 2 if Buton3=0 then dak=dak+1 if Buton2=0 then dak=dak-1 pause 200 if dak>59 then dak=0 case 3 if Buton3=0 then sn=sn+1 if Buton2=0 then sn=sn-1 pause 200 if sn>59 then sn=0 case 4 if Buton3=0 then Gun=gun+1 if Buton2=0 then gun=gun-1 pause 200 if gun>31 then gun=1 case 5 if Buton3=0 then ay=ay+1 if Buton2=0 then ay=ay-1 pause 200 if ay>12 then ay=1 case 6 if Buton3=0 then YIL=YIL+1 if Buton2=0 then YIL=YIL-1 pause 200 if YIL>99 then YIL=1 case 7 if Buton3=0 then day=day+1 if Buton2=0 then day=day-1 pause 200 if day>7 then day=1 end select gosub Ayar return '***********Saat Ayarı*********** Ayar: if sayac=8 then lcdout $FE,$0C lcdout $FE,1 lcdout,$FE,1,"***SAAT/TARiH***" lcdout $FE,$C0,"***AYARLANDI***" pause 1000 lcdout $FE,1 Sayac=0 Ayar_D=0 gosub Zaman_Yaz endif return '***********Zaman Oku*********** ZAMAN_OKU: high RTC_RST shiftout RTC_DTA, RTC_CLK, 0, [$BF] SHIFTIN RTC_DTA, RTC_CLK, 1, [SN, DAK, SAAT,GUN , AY, day, YIL, MEM] low RTC_RST MEM=SN:GOSUB CEVIR:SN=SAYI MEM=DAK:GOSUB CEVIR:DAK=SAYI MEM=SAAT:GOSUB CEVIR:SAAT=SAYI MEM=GUN:GOSUB CEVIR:GUN=SAYI MEM=AY:GOSUB CEVIR:AY=SAYI MEM=YIL:GOSUB CEVIR:YIL=SAYI MEM=day:GOSUB CEVIR:day=SAYI return '***********Zaman Yaz*********** ZAMAN_YAZ: MEM=SN:GOSUB TERSCEVIR:SN=SAYI MEM=DAK:GOSUB TERSCEVIR:DAK=SAYI MEM=SAAT:GOSUB TERSCEVIR:SAAT=SAYI MEM=GUN:GOSUB TERSCEVIR:GUN=SAYI MEM=AY:GOSUB TERSCEVIR:AY=SAYI MEM=YIL:GOSUB TERSCEVIR:YIL=SAYI high RTC_RST SHIFTOUT RTC_DTA, RTC_CLK, 0, [$8E, 0] low RTC_RST:PAUSE 1 high RTC_RST SHIFTOUT RTC_DTA, RTC_CLK, 0, [$BE, SN, DAK, SAAT,GUN , AY, day, YIL, 0] 'YAZ low RTC_RST PAUSE 10 return '***********Çevir*********** CEVIR: ONLAR=MEM & %01110000 ONLAR=ONLAR>>4 BIRLER=MEM & %00001111 SAYI=ONLAR*10+BIRLER RETURN '***********Ters Çevir*********** TERSCEVIR: ONLAR=MEM DIG 1 ONLAR=ONLAR<<4 BIRLER=MEM DIG 0 SAYI=ONLAR+BIRLER RETURN '***********Gün Yaz*********** GUN_YAZ: SELECT CASE DAY CASE 1 LCDOUT $FE,$CC,"PZTS" CASE 2 LCDOUT $FE,$CC,"SALI" CASE 3 LCDOUT $FE,$CC,"CRSB" CASE 4 LCDOUT $FE,$CC,"PERS" CASE 5 LCDOUT $FE,$CC,"CUMA" CASE 6 LCDOUT $FE,$CC,"CMTS" CASE 7 LCDOUT $FE,$CC,"PAZR" END SELECT return '***********Kesme*********** return DISABLE Kesme: if Ayar_D=0 then lcdout $FE,1,"SAAT/TARiH AYARI" lcdout $FE,$C0,"****************" pause 1000 lcdout $FE,1 endif pause 400 Ayar_D=1 Sayac=Sayac+1 INTCON.1=0 Resume Enable end
proteus simülasyon ve ares pcb picbasic .bas ve diğer yazılımlar .hex .asm;
pic16f628-saat-tarih-isi-derece-devresi-pic-basic ZIP Dosyası Şifre-Pass: 320volt.com