[i]16F628A ile rtc saat tarih lcd[/i]

Başlatan cettoceviz, 30 Nisan 2016, 13:52:03

cettoceviz

arkadaşlar merhaba,
16f628a ile rtc saat tarih lcd yapmayı istiyorum, fakat lcd ye yazı getiremiyorum bir türlü.
Kodlar ve devre aşağıdadır.

Program
#include "C:\Users\cet\Desktop\sonnnn\last.h"
#include <flex_lcd.c>

#define adc_bits 10

#fuses intrc_io
#use delay (internal=4MHz)
#FUSES XT
#include <DS1302.C>

#define use_portb_lcd TRUE

#use fast_io(a)
#use fast_io(b)

int8 saniye,dakika,saat=1,gun=1,ay=1,yil=1,haftanin_gunu=1,durum=0,x=0;

void lcd(){
   lcd_gotoxy(1,1);
   printf(lcd_putc,"%02u/%02u/%02u",gun,ay,yil);  
   lcd_gotoxy(9,1);
   lcd_send_byte(0x08,0x7e);
   lcd_gotoxy(1,2);
   printf(lcd_putc,"%02u:%02u:%02u",saat,dakika,saniye);
   
   lcd_gotoxy(10,2);
   printf(lcd_putc,"Furkan");
}
void haftagunu(){
   lcd_gotoxy(10,1);
    switch(haftanin_gunu)  
      {                     
         case 1: printf(lcd_putc,"PAZAR     "); break; // Eğer "1" ise LCD'ye PAZAR yaz
         case 2: printf(lcd_putc,"P.TESI    "); break; // Eğer "2" ise LCD'ye P.TESI yaz
         case 3: printf(lcd_putc,"SALI      "); break; // Eğer "3" ise LCD'ye SALI yaz
         case 4: printf(lcd_putc,"CARS      "); break; // Eğer "4" ise LCD'ye CARS yaz
         case 5: printf(lcd_putc,"PERS      "); break; // Eğer "5" ise LCD'ye PERS yaz
         case 6: printf(lcd_putc,"CUMA      "); break; // Eğer "6" ise LCD'ye CUMA yaz
         case 7: printf(lcd_putc,"C.TESI    "); break; // Eğer "7" ise LCD'ye C.TESI yaz
      }
}

void ayar(){
   if(input(pin_a1)){
      durum++;
      while(input(pin_a1));}
   if(durum==1){
   lcd_gotoxy(4,1);
   lcd_send_byte(0x03,0x0d);
   lcd_gotoxy(5,1);
   lcd_send_byte(0x04,0x0d);}
   if(input(pin_a6)&&durum==1){
      ay++;
      while(input(pin_a6));}
   if(input(pin_a7)&&durum==1){
      ay--;
      while(input(pin_a7));}
   
   if(durum==2){
   lcd_gotoxy(1,1);
   lcd_send_byte(0x01,0x0d);
   lcd_gotoxy(2,1);
   lcd_send_byte(0x01,0x0d);}
   if(input(pin_a6)&&durum==2){
      gun++;
      while(input(pin_a6));}
   if(input(pin_a7)&&durum==2){
      gun--;
      while(input(pin_a7));}
   
   if(durum==3){
   lcd_gotoxy(7,1);
   lcd_send_byte(0x06,0x0d);
   lcd_gotoxy(8,1);
   lcd_send_byte(0x07,0x0d);}
   if(input(pin_a6)&&durum==3){
      yil++;
      while(input(pin_a6));}
   if(input(pin_a7)&&durum==3){
      yil--;
      while(input(pin_a7));}
   
   if(durum==4){
   lcd_gotoxy(9,1);
   lcd_send_byte(0x08,0x0d);}
   if(input(pin_a6)&&durum==4){
      haftanin_gunu++;
      while(input(pin_a6));}
   if(input(pin_a7)&&durum==4){
      haftanin_gunu--;
      while(input(pin_a7));}
   
   if(durum==5){
   lcd_gotoxy(1,2);
   lcd_send_byte(0x40,0x0d);
   lcd_gotoxy(2,2);
   lcd_send_byte(0x41,0x0d);}
   if(input(pin_a6)&&durum==5){
      saat++;
      while(input(pin_a6));}
   if(input(pin_a7)&&durum==5){
      saat--;
      while(input(pin_a7));}
   
   if(durum==6){
   lcd_gotoxy(4,2);
   lcd_send_byte(0x43,0x0d);
   lcd_gotoxy(5,2);
   lcd_send_byte(0x44,0x0d);}
   if(input(pin_a6)&&durum==6){
      dakika++;
      while(input(pin_a6));}
   if(input(pin_a7)&&durum==6){
      dakika--;
      while(input(pin_a7));}
   
   if(durum==8){
   durum=0;
   printf(lcd_putc,"\f");}
      
   
   
}






void main()
{
   lcd_init();

   
   
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   rtc_set_datetime(10,10,10,10,10,10);
   delay_ms(10);
   set_tris_a(0b11111110);
   set_tris_b(0b00000000);
   lcd_init();
   rtc_init();
   delay_ms(10);
   
while(1){
      lcd();
      ayar();
      haftagunu();
      
      output_high(pin_a0);
      if(durum==7){
      rtc_set_datetime(gun,ay,yil,haftanin_gunu,saat,dakika);
      delay_ms(10);
      printf(lcd_putc,"\f    AYARLAR\n   YUKLENIYOR");
      delay_ms(1000);
      durum=8;}
      if(durum==0){
      rtc_get_time(saat,dakika,saniye);
      rtc_get_date(gun,ay,yil,haftanin_gunu);}
      
      if(saat==24)saat=0;
      if(saat==255)saat=23;      
      if(dakika==60)dakika=0;
      if(dakika==255)dakika=59;
      if(ay==13)ay=1;
      if(ay==0)ay=12;
      if(yil==0)yil=0;
      if(haftanin_gunu==8)haftanin_gunu=1;
      if(haftanin_gunu==0)haftanin_gunu=7;
      if(ay==4||ay==6||ay==9||ay==11){
         if(gun==31)gun=1;
         if(gun==0)gun=30;}
      if(ay==1||ay==3||ay==5|ay==7||ay==8||ay==10||ay==12){
         if(gun==32)gun=1;
         if(gun==0)gun=31;}
         x=yil/4;
      if((x==1||x==2||x==3||x==4||x==5||x==6||x==7||x==8||x==9||x==10)&&ay==2){
         if(gun==30)gun=1;
         if(gun==0)gun=29;}
      
      
   }
}


Flex lcd
// flex_lcd.c yazan:PCM Programmer
// Aşağıdaki pinleri istediğiniz
// gibi devrenize göre değiştirebilirsiniz
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
 
#define LCD_E PIN_B0
#define LCD_RS PIN_B1
#define LCD_RW PIN_B2
//LCDyi sadece 6 pin ile kullanacaksanız
// R/W pinini şaseye bağlayınız ve
// aşağıdaki satırı siliniz yada devre dışına alınız
#define USE_LCD_RW 1
 
//========================================
 
#define lcd_type 2 // 0=5x7, 1=5x10, 2=2 satır bildirimleri
#define lcd_line_two 0x40 // 2. satırın LCD RAM adresi
int8 const LCD_INIT_STRING[4] =
{
 0x20 | (lcd_type << 2), // LCD fonksiyonları: 4-bit, 2 satır, 5x8 nokta
 0xc, // Display on
 1, // Ekran temizle
 6 // kursorü artır
 };
 
//-------------------------------------
void lcd_send_nibble(int8 nibble)
{
//onluk sayıyı ikilik sayı sistemine çevirme
 output_bit(LCD_DB4, !!(nibble & 1));
 output_bit(LCD_DB5, !!(nibble & 2));
 output_bit(LCD_DB6, !!(nibble & 4));
 output_bit(LCD_DB7, !!(nibble & 8));
 
delay_cycles(1);
 output_high(LCD_E);
 delay_us(2);
 output_low(LCD_E);
}
#ifdef USE_LCD_RW
int8 lcd_read_nibble(void)
{
int8 retval;
#bit retval_0 = retval.0
#bit retval_1 = retval.1
#bit retval_2 = retval.2
#bit retval_3 = retval.3
 
retval = 0;
 
output_high(LCD_E);
delay_cycles(1);
 
retval_0 = input(LCD_DB4);
retval_1 = input(LCD_DB5);
retval_2 = input(LCD_DB6);
retval_3 = input(LCD_DB7);
 
output_low(LCD_E);
 
return(retval);
}
#endif
 
//---------------------------------------
//LCD'den byte bilgi okunur.
 
#ifdef USE_LCD_RW
int8 lcd_read_byte(void)
{
int8 low;
int8 high;
 
output_high(LCD_RW);
delay_cycles(1);
 
high = lcd_read_nibble();
 
low = lcd_read_nibble();
 
return( (high<<4) | low);
}
#endif
 
//----------------------------------------
//LCD'ye byte bilgi gönderilir.
void lcd_send_byte(int8 address, int8 n)
{
output_low(LCD_RS);
 
#ifdef USE_LCD_RW
while(bit_test(lcd_read_byte(),7)) ;
#else
delay_us(60);
#endif
 
if(address)
 output_high(LCD_RS);
else
 output_low(LCD_RS);
 
 delay_cycles(1);
 
#ifdef USE_LCD_RW
output_low(LCD_RW);
delay_cycles(1);
#endif
 
output_low(LCD_E);
 
lcd_send_nibble(n >> 4);
lcd_send_nibble(n & 0xf);
}
 
//----------------------------
void lcd_init(void)
{
int8 i;
 
output_low(LCD_RS);
 
#ifdef USE_LCD_RW
output_low(LCD_RW);
#endif
 
output_low(LCD_E);
 
delay_ms(15);
 
for(i=0 ;i < 3; i++)
 {
 lcd_send_nibble(0x03);
 delay_ms(5);
 }
 
lcd_send_nibble(0x02);
 
for(i=0; i < sizeof(LCD_INIT_STRING); i++)
 {
 lcd_send_byte(0, LCD_INIT_STRING[i]);
 
#ifndef USE_LCD_RW
 delay_ms(5);
 #endif
 }
 
}
 
//----------------------------
 
void lcd_gotoxy(int8 x, int8 y)
{
int8 address;
 
if(y != 1)
 address = lcd_line_two;
else
 address=0;
 
address += x-1;
lcd_send_byte(0, 0x80 | address);
}
 
//-----------------------------
void lcd_putc(char c)
{
 switch(c)
 {
 case '\f':
 lcd_send_byte(0,1);
 delay_ms(2);
 break;
 
 case '\n':
 lcd_gotoxy(1,2);
 break;
 
 case '\b':
 lcd_send_byte(0,0x10);
 break;
 
 default:
 lcd_send_byte(1,c);
 break;
 }
}
 
//------------------------------
#ifdef USE_LCD_RW
char lcd_getc(int8 x, int8 y)
{
char value;
 
lcd_gotoxy(x,y);
 
while(bit_test(lcd_read_byte(),7));
 
output_high(LCD_RS);
value = lcd_read_byte();
output_low(lcd_RS);
 
return(value);
}
#endif



DS1302
#ifndef RTC_SCLK

#define RTC_SCLK PIN_A2
#define RTC_IO   PIN_A3
#define RTC_RST  PIN_A4

#endif

void write_ds1302_byte(BYTE cmd) {
   BYTE i;

   for(i=0;i<=7;++i) {
      output_bit(RTC_IO, shift_right(&cmd,1,0) );
      output_high(RTC_SCLK);
      output_low(RTC_SCLK);
   }
}

void write_ds1302(BYTE cmd, BYTE data) {

   output_high(RTC_RST);
   write_ds1302_byte(cmd);
   write_ds1302_byte(data);
   output_low(RTC_RST);
}

BYTE read_ds1302(BYTE cmd) {
   BYTE i,data;

   output_high(RTC_RST);
   write_ds1302_byte(cmd);

   for(i=0;i<=7;++i) {
      shift_right(&data,1,input(RTC_IO));
      output_high(RTC_SCLK);
      delay_us(2);
      output_low(RTC_SCLK);
      delay_us(2);
   }
   output_low(RTC_RST);

   return(data);
}

void rtc_init() {
   BYTE x;
   output_low(RTC_RST);
   delay_us(2);
   output_low(RTC_SCLK);
   write_ds1302(0x8e,0);
   write_ds1302(0x90,0xa4);
   x=read_ds1302(0x81);
   if((x & 0x80)!=0)
     write_ds1302(0x80,0);
}

int get_bcd(BYTE data)
{
   int nibh;
   int nibl;

   nibh=data/10;
   nibl=data-(nibh*10);

   return((nibh<<4)|nibl);
}

int rm_bcd(BYTE data)
{
   int i;

   i=data;
   data=(i>>4)*10;
   data=data+(i<<4>>4);

   return data;
}

void rtc_set_datetime(BYTE day, BYTE mth, BYTE year, BYTE dow, BYTE hr, BYTE min) {

   write_ds1302(0x86,get_bcd(day));
   write_ds1302(0x88,get_bcd(mth));
   write_ds1302(0x8c,get_bcd(year));
   write_ds1302(0x8a,get_bcd(dow));
   write_ds1302(0x84,get_bcd(hr));
   write_ds1302(0x82,get_bcd(min));
   write_ds1302(0x80,get_bcd(0));
}

void rtc_get_date(BYTE& day, BYTE& mth, BYTE& year, BYTE& dow) {
   day = rm_bcd(read_ds1302(0x87));
   mth = rm_bcd(read_ds1302(0x89));
   year = rm_bcd(read_ds1302(0x8d));
   dow = rm_bcd(read_ds1302(0x8b));
}

void rtc_get_time(BYTE& hr, BYTE& min, BYTE& sec) {
   hr = rm_bcd(read_ds1302(0x85));
   min = rm_bcd(read_ds1302(0x83));
   sec = rm_bcd(read_ds1302(0x81));
}

void rtc_write_nvr(BYTE address, BYTE data) {
   write_ds1302(address|0xc0,data);
}

BYTE rtc_read_nvr(BYTE address) {
    return(read_ds1302(address|0xc1));
}


pic kit 3 - 16F628A



Proteus


Sonuç



cettoceviz

Şimdi başka bir boarda kurdum da yine aynı görüntü ???



kareli

hocam kolay gelsin ilk önce flexy lcd saten kendı port yonlendırmesını kendı yapıyor define use portb lcd true gerek varmıdır bılmıyorum ayrıca osc xt yapmıssın ama fuses ınternal dahılı osc kullanmıssın bı karar ver :) ayrıca bu mavı lcd  yerıne varsa bırde yesil de denermısın e rs rw belırtılen pınlere yerlestır şase ye koyma. bırde 10 k pot ile dogru kontrol ederek contrası degıstır. ayrıca dıger kısımlarda da lcd ınıt yerlestırmelısın
'Bırakın bugün onların olsun: ama uğrunda çok uğraştığım gelecek, benimdir' Nikola Tesla.

overlok

Hex kodunu da koyar mısın, devreyi deneyeceğim ama kodları derleyemiyorum şu anda.
Hanımların dikkatine, overlok makinesi ayağınıza geldi!

cettoceviz

Alıntı yapılan: overlok - 01 Mayıs 2016, 13:14:49
Hex kodunu da koyar mısın, devreyi deneyeceğim ama kodları derleyemiyorum şu anda.

kodlar yukarıda var, hex'i nasıl ekleyeceğim buraya?

cettoceviz

#5
devreyi yeni boarda kurdum yine ekran böyle, ayrıca ra0 a koydugum led de yanmadı:S :S :S S:S
nedir sorun?




overlok

Hex kodunu sağ tıklayıp "birlikte aç" ile  not defteri uygulamasında açıp, içeriği kopyalayın. Buraya diğer kodları eklediğiniz gibi yapıştırıp ekleyin.
Hanımların dikkatine, overlok makinesi ayağınıza geldi!

hkalaycioglu

#7
sanki sıkıntı lcd nin karakter parlaklığı için kullanılan potansiyometrede gibime geliyor. Ama lcd çalışmalarınızda önce lcd ye merhaba gibi denemeler yapıp lcd nin çalıştığını gördükten sonra devam ederseniz daha verimli olacağını düşünüyorum. kolay gelsin.

http://www.imgim.com/lcd_pic_basic_proje3a.png

cettoceviz

#8
Alıntı yapılan: overlok - 02 Mayıs 2016, 00:32:24
Hex kodunu sağ tıklayıp "birlikte aç" ile  not defteri uygulamasında açıp, içeriği kopyalayın. Buraya diğer kodları eklediğiniz gibi yapıştırıp ekleyin.


:1000000000308A00C12C00000A108A100A118207F1
:1000100028340C34013406340A108A100A1182077D
:100020004634753472346B3461346E3400340A10E3
:100030008A100A118207503441345A344134523400
:100040002034203420342034203400340A108A1024
:100050000A11820750342E34543445345334493411
:10006000203420342034203400340A108A100A113D
:100070008207533441344C34493420342034203402
:1000800020342034203400340A108A100A118207E8
:100090004334413452345334203420342034203417
:1000A0002034203400340A108A100A118207503498
:1000B0004534523453342034203420342034203416
:1000C000203400340A108A100A1182074334553450
:1000D0004D34413420342034203420342034203432
:1000E00000340A108A100A11820743342E34543423
:1000F00045345334493420342034203420340034FF
:100100000A108A100A1182070C342034203420345B
:10011000203441345934413452344C344134523413
:100120000A34203420342034593455344B344C3480
:1001300045344E34493459344F34523400342C3021
:100140008400831300080319B3280130F800F70175
:10015000F70BA828F80BA7284A30F700F70BAE28B2
:10016000B128800BA52800343318B8280612B92806
:100170000616831606128312B318C0288612C128E9
:1001800086168316861283123319C8280613C928C7
:100190000617831606138312B319D0288613D128A5
:1001A0008617831686130000061083120614D828BB
:1001B00083160610831206100034B401831606104D
:1001C0008312061400008316061683123410061AD2
:1001D0003414831686168312B410861AB414831648
:1001E000061783123411061B3415831686178312E3
:1001F000B411861BB415831606108312061034083A
:10020000F8000034831686108312861083160611B8
:10021000831206150000DD207808B300DD20780881
:10022000B200330EF700F030F70577083204F8001B
:100230007808B200B21B0629B008031924298316D6
:10024000861083128614282983168610831286103E
:100250000000831606118312061100008316061093
:1002600083120610310EB2000F30B2053208B3000F
:10027000B42031080F39B200B300B4200034831623
:1002800086108312861083160611831206118316B8
:100290000610831206100F30AC009F20A901290818
:1002A000023C031C5B290330B300B4200530AC00D2
:1002B0009F20A90A4F290230B300B420A9012908C0
:1002C000033C031C6C2929080420AA00B0012A0859
:1002D000B1000221A90A5F2900343308F801320273
:1002E000031875293208F7008129F7010830B40096
:1002F000B20DF70D330877020318F700F80DB40BB1
:1003000078290034F701F801320803103318F70791
:10031000F70CF80CB318F707F70CF80C3319F707BC
:10032000F70CF80CB319F707F70CF80C331AF707AA
:10033000F70CF80CB31AF707F70CF80C331BF70798
:10034000F70CF80CB31BF707F70CF80C00342F0868
:10035000B2000A30B3006D217808B0003008B20056
:100360000A30B300822178082F02B100300EF70066
:10037000F030F70577083104F8000034B301330892
:10038000073C031CD5290310B20C0318C929851199
:10039000CA29851583168511051183120515831643
:1003A000051183120511B30ABF2900348316051203
:1003B000831205163008B200BE213108B200BE21FA
:1003C000831605128312051200342908AF00A721F5
:1003D0007808AF008630B0007808B100D6212A082E
:1003E000AF00A7217808AF008830B0007808B100CE
:1003F000D6212B08AF00A7217808AF008C30B000C1
:100400007808B100D6212C08AF00A7217808AF00EA
:100410008A30B0007808B100D6212D08AF00A7219E
:100420007808AF008430B0007808B100D6212E08DB
:10043000AF00A7217808AF008230B0007808B10083
:10044000D621AF01A7217808AF008030B00078082E
:10045000B100D62100342A30840083130008031928
:100460003F2A0130F800F701F70B342AF80B332A42
:100470004A30F700F70B3A2A3D2A800B312A003424
:1004800083160512831205162D08B200BE21AE0197
:100490002E08073C031C612A8316851583128519D3
:1004A000532A0310542A0314AF0C83160511831228
:1004B00005155A2A83160511831205115F2AAE0A03
:1004C000482A83160512831205122F08F8000034FB
:1004D00083160512831205126D2A831605118312E5
:1004E00005118E30B000B101D6219030B000A4309B
:1004F000B100D6218130AD0040227808A90029083A
:1005000080390319872A8030B000B101D621012D2E
:100510002D0B8B2A8E2A4030AE008F2AAE0101307F
:100520002C02AE072E088038AF00B0012F08B100B2
:10053000022100342B080C3A0319A52A063A0319A4
:10054000AD2A023A0319B32AB82AB0010130B1002A
:1005500002210230AC009F20BE2A0130AC000230E4
:10056000AD008822BE2AB0011030B1000221BE2A9F
:100570000130B0002B08B1000221BE2A00347808F7
:100580002908B2006430B3006D217708A90078080B
:100590003030031DD22AAA1CD92AAA19D92A2A1A0C
:1005A0002030D52AAA112A122A14F8077808AB009D
:1005B0009A222908B2000A30B3006D217708A900F9
:1005C00078083030031DEA2AAA19EE2A2A1CEE2ADE
:1005D0002A1A2030F8077808AB009A223030A90791
:1005E0002908AB009A2200340130AC00AD0088220B
:1005F0002308A9000130AA00BF222F30AB009A22A5
:100600002408A9000130AA00BF222F30AB009A2293
:100610002508A9000130AA00BF220930AC00013032
:10062000AD0088220830B0007E30B10002210130D8
:10063000AC000230AD0088222208A9000130AA00D7
:10064000BF223A30AB009A222108A9000130AA004B
:10065000BF223A30AB009A222008A9000130AA003C
:10066000BF220A30AC000230AD008822A90129085F
:100670000C20A90AF700AB009A2206302902031DBC
:10068000372B052D851C472BA70A8518452B270BD3
:100690005D2B0430AC000130AD0088220330B00087
:1006A0000D30B10002210530AC000130AD008822D0
:1006B0000430B0000D30B1000221051F642B270B60
:1006C000642BA40A051B622B851F6B2B270B6B2B3E
:1006D000A403851B692B2708023C031D822B0130D4
:1006E000AC00AD0088220130B0000D30B100022115
:1006F0000230AC000130AD0088220130B0000D3076
:10070000B1000221051F8B2B2708023C031D8B2BF8
:10071000A30A051B892B851F942B2708023C031D68
:10072000942BA303851B922B2708033C031DAC2BA2
:100730000730AC000130AD0088220630B0000D302B
:10074000B10002210830AC000130AD008822073032
:10075000B0000D30B1000221051FB52B2708033C66
:10076000031DB52BA50A051BB32B851FBE2B270820
:10077000033C031DBE2BA503851BBC2B2708043C93
:10078000031DCC2B0930AC000130AD0088220830AD
:10079000B0000D30B1000221051FD52B2708043C05
:1007A000031DD52BA60A051BD32B851FDE2B27087F
:1007B000043C031DDE2BA603851BDC2B2708053C10
:1007C000031DF52B0130AC000230AD008822403013
:1007D000B0000D30B10002210230AC00AD00882223
:1007E0004130B0000D30B1000221051FFE2B27085B
:1007F000053C031DFE2BA20A051BFC2B851F072CA5
:100800002708053C031D072CA203851B052C270880
:10081000063C031D1F2C0430AC000230AD008822C2
:100820004330B0000D30B10002210530AC00023081
:10083000AD0088224430B0000D30B1000221051F08
:10084000282C2708063C031D282CA10A051B262C52
:10085000851F312C2708063C031D312CA103851B65
:100860002F2C2708083C031D392CA7010C30AB00A6
:100870009A22062D0A30AC000130AD0088220130EA
:100880002602F93E03189A2C073E9B2CA901290841
:100890001720A90AF700AB009A220A302902031D8B
:1008A000472C9A2CA90129082620A90AF700AB0099
:1008B0009A220A302902031D532C9A2CA9012908D7
:1008C0003520A90AF700AB009A220A302902031D3D
:1008D0005F2C9A2CA90129084420A90AF700AB0033
:1008E0009A220A302902031D6B2C9A2CA90129088F
:1008F0005320A90AF700AB009A220A302902031DEF
:10090000772C9A2CA90129086220A90AF700AB00CC
:100910009A220A302902031D832C9A2CA901290846
:100920007120A90AF700AB009A220A302902031DA0
:100930008F2C9A2C072D0A108A100A158207462C34
:10094000522C5E2C6A2C762C822C8E2C2E08AF001A
:100950002F0EF7000F30F7057708B100B2000A300C
:10096000B30082217808AE002F0EF700F030F705B3
:100970007708F70E0F30F7057708AE072E08F80056
:100980000034840183131F3083058316851183127D
:10099000851507309F000130A200A300A400A50028
:1009A000A600A701A8013F2183160108C73908380E
:1009B0008100831290010030F8009200003083160D
:1009C0009200073083129F00831605080330F7005A
:1009D000F70BE82C83121F080C1383169F010A30B3
:1009E0008312A900AA00AB00AC00AD00AE00E52167
:1009F0000A30AA002B22FE306500003066003F213D
:100A0000682A0A30AA002B22F42A422B3A2C051419
:100A10002708073C031D302D2308A9002408AA003D
:100A20002508AB002608AC002208AD002108AE0066
:100A3000E5210A30AA002B22A90129088020A90A51
:100A4000F700AB009A221A302902031D1D2D043035
:100A5000A900FA30AA002B22A90B292D0830A700E3
:100A6000A708031D722D8530AD0040227808A9002B
:100A7000AE00A6247808A2008330AD00402278089A
:100A8000A900AE00A6247808A1008130AD00402264
:100A90007808A900AE00A6247808A0008730AD0031
:100AA00040227808A900AE00A6247808A300893067
:100AB000AD0040227808A900AE00A6247808A40062
:100AC0008D30AD0040227808A900AE00A624780839
:100AD000A5008B30AD0040227808A900AE00A62406
:100AE0007808A6002208183C0319A201220F7A2DCB
:100AF0001730A20021083C3C0319A101210F822DCF
:100B00003B30A10024080D3C031D882D0130A400BA
:100B1000A408031D8D2D0C30A400A5080319A50100
:100B20002608083C031D962D0130A600A608031DCB
:100B30009B2D0730A6002408043C0319AB2D240884
:100B4000063C0319AB2D2408093C0319AB2D2408DE
:100B50000B3C031DB62D23081F3C031DB12D013096
:100B6000A300A308031DB62D1E30A300240BB92D2E
:100B7000DB2D2408033C0319DB2D2408053C031955
:100B8000C32D0030C42D0130A9002408073C0319EF
:100B9000CB2D0030CC2D01302904031DDB2D240882
:100BA000083C0319DB2D24080A3C0319DB2D24081B
:100BB0000C3C031DE62D2308203C031DE12D0130D4
:100BC000A300A308031DE62D1F30A300250CA800D9
:100BD000A80C3F30A805280BEE2D122E2808023C49
:100BE0000319122E2808033C0319122E2808043C6E
:100BF0000319122E2808053C0319122E2808063C5A
:100C00000319122E2808073C0319122E2808083C45
:100C10000319122E2808093C0319122E28080A3C31
:100C2000031D212E2408023C031D212E23081E3CF7
:100C3000031D1C2E0130A300A308031D212E1D300F
:060C4000A300042D630077
:02400E00093F68
:00000001FF
;PIC16F628A


mesaj birleştirme:: 02 Mayıs 2016, 19:22:33

Alıntı yapılan: hkalaycioglu - 02 Mayıs 2016, 19:10:32
sanki sıkıntı lcd nin karakter parlaklığı için kullanılan potansiyometrede gibime geliyor. Ama lcd çalışmalarınızda önce lcd ye merhaba gibi denemeler yapıp lcd nin çalıştığını gördükten sonra devam ederseniz daha verimli olacağını düşünüyorum. kolay gelsin.

http://www.imgim.com/lcd_pic_basic_proje3a.png

5k potansiyometre vardı devrede. 50k ile ve 1k ile denedim şimdi. sonuc aynı sadece skala degişiyor. ekran aynı.

overlok

Devreyi denedim;
İlk olarak ikinci mesajda @kareli arkadaşımızın dediği gibi sigorta ayarları yanlış. Hem dahili osilatör hem de harici kristal osilatör sigorta ayarı yapılmış.
Görüntü gelmemesinin nedeni de ,osilatör ayarlarına bağlı olarak, hex'i pic'e yüklerken sigorta ayarlarında XT, yani harici osilatör seçeneğinin aktif olması. Yani devrenin şemasına bakarak söylüyorum; hex i pic'e yüklemeden önce internal rc seçeneğini seçmen lazım. XT değil!
Ama kodlarda iki kere osilatör ayarı yapılmış. görüntü alırsın ama sağlıklı çalışır mı o kısmını bilmiyorum.
Hanımların dikkatine, overlok makinesi ayağınıza geldi!

cettoceviz

Alıntı yapılan: overlok - 02 Mayıs 2016, 23:43:38
Devreyi denedim;
İlk olarak ikinci mesajda @kareli arkadaşımızın dediği gibi sigorta ayarları yanlış. Hem dahili osilatör hem de harici kristal osilatör sigorta ayarı yapılmış.
Görüntü gelmemesinin nedeni de ,osilatör ayarlarına bağlı olarak, hex'i pic'e yüklerken sigorta ayarlarında XT, yani harici osilatör seçeneğinin aktif olması. Yani devrenin şemasına bakarak söylüyorum; hex i pic'e yüklemeden önce internal rc seçeneğini seçmen lazım. XT değil!
Ama kodlarda iki kere osilatör ayarı yapılmış. görüntü alırsın ama sağlıklı çalışır mı o kısmını bilmiyorum.

Teşekkür ederim zahmet oldu,
Ayarları yapmayı bilmediğimden bir karışıklık olmuş orada. Dahili osilatörü kullanmak daha mantıklı sanırım. Nasıl düzelecek?

İkinci olarak, hex'i pic'e yüklerken internal rc seçmen gerekir demişsin ama pic kit 3 ün arayüzünde öyle bir seçenek göremedim.

overlok

Pickit3 kullanmadım, bilmiyorum ayarlarını. Ama arama kısmında forumda aratabilirsin. Daha önce açılmış konular var. Yardımı olacaktır.

İkinci olarak zaten dahili osilatör kullanman gerekiyor, zira osilatör pinlerin giriş olarak kullanılmış devrede. Yani buton bağlanmış.
Hanımların dikkatine, overlok makinesi ayağınıza geldi!

sadogan

Alıntı yapılan: cettoceviz - 01 Mayıs 2016, 23:24:05
devreyi yeni boarda kurdum yine ekran böyle, ayrıca ra0 a koydugum led de yanmadı:S :S :S S:S
nedir sorun?




Bu işlere yeni başlayanlar için oldukça karmaşık bir devre ile uğrasıyorsun.
Tavsiyem devreyi aşama aşama gerçekleştirmen.
1. aşama:
           pic devresi yanlızca 1 adet led bağlayarak ledi yak söndür.
            Böylece pic devresinden emin olursun pic sigortalarını vs tanırsın.
2. aşama:
     Lcd yi pic dikkatlice (hatta avo metre ile bağlantıları tek tek kontrol edip) bağlayıp lcd de ad soyad yazdırman.
     Böylece az çok lcd yi de kullanmış olursun.
3. aşama :
    Butonları test eden bir program yazıp lcd de onları göstermen
    butuna basıldı vs yazarak.
4. Aşama:
    Artık RTC ,le ilgilenebilirsin.




cettoceviz

Alıntı yapılan: sadogan - 03 Mayıs 2016, 11:09:56
Bu işlere yeni başlayanlar için oldukça karmaşık bir devre ile uğrasıyorsun.
Tavsiyem devreyi aşama aşama gerçekleştirmen.
1. aşama:
           pic devresi yanlızca 1 adet led bağlayarak ledi yak söndür.
            Böylece pic devresinden emin olursun pic sigortalarını vs tanırsın.
2. aşama:
     Lcd yi pic dikkatlice (hatta avo metre ile bağlantıları tek tek kontrol edip) bağlayıp lcd de ad soyad yazdırman.
     Böylece az çok lcd yi de kullanmış olursun.
3. aşama :
    Butonları test eden bir program yazıp lcd de onları göstermen
    butuna basıldı vs yazarak.
4. Aşama:
    Artık RTC ,le ilgilenebilirsin.


tavsiyende haklısın.
1. aşamayı şuan uyguladım.
pic wizard penceresinden 16f628a, oscilator frequency 4.000.000 hz ve fuses başlığı altından crystal osc yi seçip tamam dedim.
c dosyasına şu kodları yazdım.
#include "C:\Users\cet\Desktop\led\led.h"
#include <16F628A.h>

void main()
{
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1););
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

set_tris_a(0x00000000);
set_tris_b(0x00000000);
int y;

while(1)
{
asdf:
output_high(PIN_B0); 
delay_ms(500);
output_low(PIN_B0);
delay_ms(500);
goto asdf;
}

}


ve build all yaptığımda, hata veriyor ve hex dosyasını oluşturmuyor. neden?

kareli

pickıt3 ben kullanıorum. pıkkıt3 un yan kısmında 3 adet soket var kartın arkasında nerelerı nereye takacagını soyluyor oraya bakarak 16f628a gore ayarlaman lazım sonra pıcı yıne kartın uste belırtıgı gıbı yerlestır
'Bırakın bugün onların olsun: ama uğrunda çok uğraştığım gelecek, benimdir' Nikola Tesla.