اطلاعیه

Collapse
No announcement yet.

ds1307+keypad+ccs

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ds1307+keypad+ccs

    من با ds1307 با کامپایلر ccs یه ساعت درست کردم و یه کی پد 4*4 به میکرو متصل کردم از هر راهی میرم تا بتونم با کی پد ساعت تنظیم کنم نمیشه ممنون میشم کسی بتونه راهی جلوی پام بذاره :angry: :angry:

    #2
    پاسخ : ds1307+keypad+ccs

    سلام.
    لطفا سورس برنامه + شماتیک رو بذارین تا ببینیم چی به چیه؟

    دیدگاه


      #3
      پاسخ : ds1307+keypad+ccs

      دوست خوبم مشکل کجاست؟

      ds درست کار نمیکنه؟
      از کیپد درست اطلاعات رو نمیگیری؟
      یا اینکه بعد از اینکه اطلاعات رو گرفتی درست به ds ارسال نمیشه؟
      یا ...
      دوست خوبمون درست میگن شما یه چیزی بگو "تا ببینیم چی به چیه؟"

      دیدگاه


        #4
        پاسخ : ds1307+keypad+ccs

        مشکل اولم اینه که وقتی از کتابخاه کی پد استفاده میکنم همراه با ds سرعت اسکن کی پد خیلی میاد پایین،مشکل دومم اینه که اصلا نمیدونم چه طور باد با کی پد به متغییر های ds مقدار بدم،

        کد:
        #include <main1.h>
        #include <DS1307.c>
        #include <lcd.c>
        #include <kbd44.c>
        #use fast_io(b)
        int8 sec;
        int8 min;
        int8 hrs;
        int8 day;
        int8 month;
        int8 yr;
        int8 dow;
        int k;
        void main()
        {
        kbd_init();
        ds1307_init();
        lcd_init();
        kbd_buffer_init(); 
        output_b(0);
        ds1307_set_date_time(23,03,14,7,17,54,55);
        
        while(1){
         k=kbd_getc();
           
         delay_ms(300);
          ds1307_get_date(day,month,yr,dow);
        ds1307_get_time(hrs,min,sec);
           
          printf(lcd_putc,"\f\%02d/\%02d/\%02d \n",yr,month,day);
          printf(lcd_putc,"\%02d \%02d", hrs,min);
         
          if(sec%2){
          lcd_gotoxy(3,2);
          lcd_putc(":");}
          if(dow==1){
         lcd_gotoxy(8,2);
         lcd_putc("monday");}
          if(dow==2){
         lcd_gotoxy(8,2);
         lcd_putc("tuesday");}
          if(dow==3){
         lcd_gotoxy(8,2);
         lcd_putc("wendsday");}
          if(dow==4){
         lcd_gotoxy(8,2);
         lcd_putc("trusday");}
          if(dow==5){
         lcd_gotoxy(8,2);
         lcd_putc("friday");}
          if(dow==6){
         lcd_gotoxy(8,2);
         lcd_putc("satday");}
         if(dow==7){
         lcd_gotoxy(8,2);
         lcd_putc("sunday");}}

        دیدگاه


          #5
          پاسخ : ds1307+keypad+ccs

          دوست عزیز قبل از هر چیزی؛ مواقعی که میخواین سورس برنامه ای رو قرار بدین، از گزینه " قرار دادن کد" یا علامت # که بالای شکلک ها هست، استفاده کنین تا برنامه واضح باشه. (با اجازه تون اینکار رو برای ارسال شما انجام دادم)

          شما اون تأخیر 300 میلی ثانیه ای رو برای چی گذاشتین؟ اون رو بردارین.
          برای ویرایش زمان هم راه های مختلفی وجود داره؛ مثلا یه ورودی از میکرو رو اسکن بکنین، اگه بیشتر ار 2 ثانیه فعال بود، بره تو مد ویرایش ساعت و اونجا مقادیر رو به ترتیب از کی پد اسکن کنین و بعد از گرفتن تمام اطلاعات مربوط به تنظیمات DS1307، اطلاعات رو پدیت کنین و برگردین به حلقه ی اصلی که زمان رو داخلش نمایش میدین.

          دیدگاه


            #6
            پاسخ : ds1307+keypad+ccs

            ممنون ،تاخیر300 میلی ثانیه هم اگر بردارم هنگ مینه یه مثال توی خود سایت ccs دیدم یه تاخیر 1000 میلی ثانیه گذاشته بود

            دیدگاه


              #7
              پاسخ : ds1307+keypad+ccs

              نوشته اصلی توسط ali fard
              ممنون ،تاخیر300 میلی ثانیه هم اگر بردارم هنگ مینه یه مثال توی خود سایت ccs دیدم یه تاخیر 1000 میلی ثانیه گذاشته بود
              احتمالا به خاطر زیادی دستورات if هست.از switch...case استفاده کنین و نتیجه رو بگین.

              دیدگاه


                #8
                پاسخ : ds1307+keypad+ccs

                برنامه شما اصلاً کامپایل میشه بدون ارور؟ برای آخر تابع main اکولاد "{" نذاشتی.
                شایدم گذاشته بودی ولی موقع ارسال پست نیومده. به هر حال...

                من نتونستم کامپایل کنم و تست کنم چون شما محتویات main1.h رو ندادید. در ضمن kbd44 و ds1307 رو هم نداشتم.

                دستور use fast_io رو حذف کن. چون اونجوری به کامپایلر میگی که TRISB رو خودت کنترل میکنی. که نمیکنی. پس حذفش کن.

                تاخیر 300 رو ببر اول تابع main. بکنش 500 بهتره.

                برای ویرایش زمان هم:
                نوشته اصلی توسط شاهرخ مستقیمی
                برای ویرایش زمان هم راه های مختلفی وجود داره؛ مثلا یه ورودی از میکرو رو اسکن بکنین، اگه بیشتر ار 2 ثانیه فعال بود، بره تو مد ویرایش ساعت و اونجا مقادیر رو به ترتیب از کی پد اسکن کنین و بعد از گرفتن تمام اطلاعات مربوط به تنظیمات DS1307، اطلاعات رو پدیت کنین و برگردین به حلقه ی اصلی که زمان رو داخلش نمایش میدین.

                دیدگاه

                لطفا صبر کنید...
                X