Plaketi SMD ve Çift taraflı olarak tasarladığınız halde neden bukadar büyük tuttunuzki? Yani Biraz israf olmuş.![]()
MikroC ile yaptığım ilk çift taraflı plaket çalışmam. Devrede 5 tane button ve buzzer var. Şimdilik yok ama ileride alarm v.b. özellikler ekleyeceğim.
Dosyaları ekleyemedim. 1.2GB dolsu diyor! Bunun nedenini bilen varmı?
ds1307.c
ds18b20.cKod:sbit Soft_I2C_Scl at RC3_bit; sbit Soft_I2C_Sda at RC4_bit; sbit Soft_I2C_Scl_Direction at TRISC3_bit; sbit Soft_I2C_Sda_Direction at TRISC4_bit; char okunan1,okunan2,okunan3; void Init_I2C() { Soft_I2C_Init(); } void ds1307_read_time() { Soft_I2C_Start(); Soft_I2C_Write(0xD0); Soft_I2C_Write(0x00); Soft_I2C_Start(); Soft_I2C_Write(0xD1); okunan3=Soft_I2C_Read(1); okunan2=Soft_I2C_Read(1); okunan1=Soft_I2C_Read(0); Soft_I2C_Stop(); } void ds1307_read_date() { Soft_I2C_Start(); Soft_I2C_Write(0xD0); Soft_I2C_Write(0x04); Soft_I2C_Start(); Soft_I2C_Write(0xD1); okunan1=Soft_I2C_Read(1); okunan2=Soft_I2C_Read(1); okunan3=Soft_I2C_Read(0); Soft_I2C_Stop(); } void first_set() { Soft_I2C_Start(); Soft_I2C_Write(0xD0); Soft_I2C_Write(0x00); Soft_I2C_Write(0x00); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x00); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x00); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x00); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x01); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x01); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x12); // Address PCF8583 for reading R/W=1 Soft_I2C_Write(0x90); // Address PCF8583 for reading R/W=1 Soft_I2C_Stop(); } void ds1307_write(char adress,char deger) { Soft_I2C_Start(); Soft_I2C_Write(0xD0); Soft_I2C_Write(adress); Soft_I2C_Write(deger); // Soft_I2C_Stop(); }
max7219.cKod:char eksi; //0 hayır 1 evet char isi; //tam kısmı char ondalik; //noktadan sonraki bölüm short ds18b20bDQ; void ds18b20_isi_oku() { char ds18b20Lsb; char ds18b20Msb; unsigned int sonuc; ds18b20bDQ=1; Ow_Reset(&PORTB, ds18b20bDQ); // Onewire reset signal Ow_Write(&PORTB, ds18b20bDQ, 0xCC); // Issue command SKIP_ROM Ow_Write(&PORTB, ds18b20bDQ, 0x44); // Issue command CONVERT_T Delay_us(150); Ow_Reset(&PORTB, ds18b20bDQ); Ow_Write(&PORTB, ds18b20bDQ, 0xCC); // Issue command SKIP_ROM Ow_Write(&PORTB, ds18b20bDQ, 0xBE); // Issue command READ_SCRATCHPAD eksi=0; ds18b20Lsb =Ow_Read(&PORTB, ds18b20bDQ); ds18b20Msb =Ow_Read(&PORTB, ds18b20bDQ); sonuc =ds18b20Msb; sonuc=(sonuc << 8); sonuc=sonuc | ds18b20Lsb; if(ds18b20Msb.B7==1) { sonuc=(~sonuc)+1; ds18b20Lsb=sonuc & 0x00FF; ds18b20Msb=(sonuc & 0xFF00)>>8; eksi=1; } isi=ds18b20Lsb>>4 | ds18b20Msb<<4; ondalik=ds18b20Lsb & 0x0F; switch(ondalik) { case 0: case 1: ondalik=0; break; case 2: case 3: ondalik=1; break; case 4: ondalik=2; break; case 5: case 6: ondalik=3; break; case 7: ondalik=4; break; case 8: case 9: ondalik=5; break; case 10: case 11: ondalik=6; break; case 12: ondalik=7; break; case 13: case 14: ondalik=8; break; case 15: ondalik=9; break; } }
Kod:sbit max7219_CLOCK at RC0_bit; sbit max7219_DATA at RC1_bit; sbit max7219_LOAD at RC2_bit; sbit max7219_CLOCK_direction at TRISC0_bit; sbit max7219_DATA_direction at TRISC1_bit; sbit max7219_LOAD_direction at TRISC2_bit; void send_byte(char byte) { char sayac; char deger; deger=0x80; max7219_CLOCK=0; for(sayac=0;sayac<8;sayac++) { if(byte & deger) max7219_DATA=1; else max7219_DATA=0; max7219_CLOCK=1; Delay_us(2); max7219_CLOCK=0; deger=deger>>1; } } void show() { max7219_LOAD=1; Delay_us(100); max7219_LOAD=0; } void max7219_send(char adress,char byte) { max7219_LOAD=0; send_byte(adress); send_byte(byte); show(); } void Init_max7219() { max7219_CLOCK_direction=0; max7219_DATA_direction=0; max7219_LOAD_direction=0; Delay_ms(800); //komutlar max7219_send(0x0B,0x05); // Scan Limit = 6 digit Delay_ms(2); max7219_send(0x0A,0x0F); //Intensity = 1/32 Delay_ms(2); max7219_send(0x09,0x00); //decode mode = No decode for digits 7–0 Delay_ms(2); max7219_send(0x0C,0x01); //Shutdown = Normal Operation Delay_ms(2); max7219_send(0x0F,0x00); //Display test= normal operation Delay_ms(2); }Kod:#include "ds1307.c" #include "ds18b20.c" #include "max7219.c" sbit AYAR at RA0_bit; sbit ARTTIR at RA1_bit; sbit AYAR_Direction at TRISA0_bit; sbit ARTTIR_Direction at TRISA1_bit; sbit LED1 at RB2_bit; sbit LED2 at RB3_bit; sbit LED3 at RB4_bit; sbit LED4 at RB5_bit; sbit LED1_direction at TRISB2_bit; sbit LED2_direction at TRISB3_bit; sbit LED3_direction at TRISB4_bit; sbit LED4_direction at TRISB5_bit; char displays[6]; char seven_segments[]={0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B, 0x00, //sönük 10 0x63, //derece işareti 11 0x01, //- işareti 12 0x77, //A 13 0x0E, //L 14 0b01000111 //F }; //1 saat 2 dakika 3 saniye 4 gün 5 ay 6 yıl 7 bitiş char adresslist[]={2,1,0,4,5,6};//ds1307 adres listesi char oku; char okumaisareti; char saattarihderece; //0 saat 1 tarih 2 derece void Interrupt() { if(INTCON.INTF==1) { if(saattarihderece==0) { LED1=~LED1; LED2=LED1; LED3=LED1; LED4=LED1; } oku=1; INTCON.INTF=0; okumaisareti++; if(okumaisareti==15 && saattarihderece==0) { okumaisareti=0; saattarihderece=1; //tarih LED1=0; LED2=1; LED3=0; LED4=1; } else if(okumaisareti==5 && saattarihderece==1) { okumaisareti=0; saattarihderece=2; //derece LED1=0; LED2=0; LED3=0; LED4=1; } else if(okumaisareti==5 && saattarihderece==2) { okumaisareti=0; saattarihderece=0; //saat } } } void isi_oku() { displays[0]=10; ds18b20_isi_oku(); if(eksi==1) displays[1]=12; else displays[1]=10; displays[2]=isi / 10; if(displays[2]==0) displays[2]=10; displays[3]=isi % 10; displays[4]=ondalik; displays[5]=11; } void ayarla() { if(EEPROM_Read(0)!=0x17) { first_set(); EEPROM_Write(0,0x17); } else { ds1307_write(0x07,0x90); } } void esitle() { displays[0]=(okunan1 & 0xF0)>>4; displays[1]=okunan1 & 0x0F; displays[2]=(okunan2 & 0xF0)>>4; displays[3]=okunan2 & 0x0F; displays[4]=(okunan3 & 0xF0)>>4; displays[5]=okunan3 & 0x0F; } void saatoku() { ds1307_read_time(); esitle(); } void tarihoku() { ds1307_read_date(); esitle(); } void send_six_byte() { char konum; char sayac; for(sayac=0;sayac<1;sayac++) { for(konum=0;konum<6;konum++) { max7219_send(konum+1,seven_segments[displays[konum]]); } } } void Intterrupt_enable() { OPTION_REG.INTEDG=1; INTCON.INTE=1; INTCON.GIE=1; } void Init() { ADCON1=0x06; displays[0]=0; displays[1]=0; displays[2]=0; displays[3]=0; displays[4]=0; displays[5]=0; } void InitPorts() { PORTA=0; AYAR_direction=1; ARTTIR_direction=1; PORTB=0; TRISB.B0=1; LED1_direction=0; LED2_direction=0; LED3_direction=0; LED4_direction=0; PORTC=0; } void display12kapat() { displays[0]=10; displays[1]=10; } void display34kapat() { displays[2]=10; displays[3]=10; } void display56kapat() { displays[4]=10; displays[5]=10; } void display3456kapat() { display34kapat(); display56kapat(); send_six_byte(); } void display1256kapat() { display12kapat(); display56kapat(); send_six_byte(); } void display1234kapat() { display12kapat(); display34kapat(); send_six_byte(); } char arttirvemaxkontrol(char *display0,char *display1,char maximum,char minimum) { char deger; *display1=*display1+1; if(*display1==10) { *display0=*display0+1; *display1=0; } deger=(*display0 * 10) + *display1; if(deger==maximum) { *display0=minimum / 10; *display1=minimum % 10; } deger=(*display0 <<4) | *display1; return deger; } void deger_arttir(char ayardurumu) { char sonuc; if(ayardurumu==2) { sonuc=arttirvemaxkontrol(&displays[2],&displays[3],60,0); } else if(ayardurumu==3 ) { sonuc=arttirvemaxkontrol(&displays[4],&displays[5],60,0); } else if(ayardurumu==1) { sonuc=arttirvemaxkontrol(&displays[0],&displays[1],24,0); } else if(ayardurumu==4) { sonuc=arttirvemaxkontrol(&displays[0],&displays[1],32,1); } else if(ayardurumu==5) { sonuc=arttirvemaxkontrol(&displays[2],&displays[3],13,1); } else if(ayardurumu==6) { sonuc=arttirvemaxkontrol(&displays[4],&displays[5],100,0); } ds1307_write(adresslist[ayardurumu-1],sonuc); send_six_byte(); } void altledleracik() { LED1=0; LED3=0; LED2=1; LED4=1; } void butunledleracik() { altledleracik(); LED1=1; LED3=1; } void Tus_kontrol() { char ayardurumu;//1 saat 2 dakika 3 saniye 4 gün 5 ay 6 yıl 7 bitiş ayardurumu=0; for(;;) { if(AYAR==0) { Delay_ms(300); ayardurumu+=1; if(ayardurumu==7) return; if(ayardurumu==1) { saatoku(); display3456kapat(); butunledleracik(); } else if(ayardurumu==2) { saatoku(); display1256kapat(); butunledleracik(); } else if(ayardurumu==3) { saatoku(); display1234kapat(); butunledleracik(); } else if(ayardurumu==4) { tarihoku(); display3456kapat(); altledleracik(); } else if(ayardurumu==5) { tarihoku(); display1256kapat(); altledleracik(); } else if(ayardurumu==6) { tarihoku(); display1234kapat(); altledleracik(); } } if(ARTTIR==0) { Delay_ms(300); deger_arttir(ayardurumu); } if(AYAR==1 && ayardurumu==0) { Delay_ms(50); return; } } } void main() { isi_oku(); Init(); InitPorts(); Init_max7219(); Init_I2C(); ayarla(); okumaisareti=0; saattarihderece=0; Intterrupt_enable(); for(;;) { INTCON.GIE=0; Tus_kontrol(); INTCON.GIE=1; if(oku==1 && saattarihderece==0) { saatoku(); oku=0; send_six_byte(); } else if(oku==1 && saattarihderece==2) { isi_oku(); oku=0; send_six_byte(); } else if(oku==1 && saattarihderece==1) { tarihoku(); oku=0; send_six_byte(); } } }
Plaketi SMD ve Çift taraflı olarak tasarladığınız halde neden bukadar büyük tuttunuzki? Yani Biraz israf olmuş.![]()
Bir ulusu yok etmenin en iyi yolu o ulusun dilini yok etmektir
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır



selam
güzel calışma kardeş eline saglık
kardeş önce buraya yükle FileServe - Upload - Free Online Storage & File Upload sonra foruma likkini at
AB ELEKTRONK-GVENLK-OTOMASYON
Arkadaşlar dosyalar aşağıdaki linktedir. Plaketi bir kutuya koyacağım için boyutlarını büyük yaptım. Birde ilk çift taraflı plaket çalışmam. Fazla zorlamak istemedim.
Free Online Storage & File Upload with FileServe



Arkadaşlar devrenin isis ve ares dosyalarını 7.0 versiyonu olarak kaydedip tekrar yükleyebilirmisiniz.
Aşağıdaki linkte 7.0 dosyalarıda mevcuttur.
File name: saaat_.rar File size: 139.62 KB
güzel çalışma eline saglık başarıların devamını dilerim.
Özel mesaj yoluyla yardım istemek Kesinlikle yasaktır. www.elektrobilim.org
ellerinize sağlık gerçekten güzel bir çalışma, müsadenizle bir sorum olacak, ilk olarak displayler ortak anot mu
Sağolasın. Display ler ortak katot. Max7219 ortak katotu sürebiliyor.
Teşekkürler. Displayler ortak katot. Max7219 ortak katodu sürebiliyor. Kolay gelsin.
Şu anda 1 kullanıcı bu konuyu görüntülüyor. (0 kayıtlı ve 1 misafir)