NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3199 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 1 از 1

موضوع: راهنمایی در مورد کد برنامه تایمر و ساعت

  1. #1
    عضو جدید
    تاریخ عضویت
    Jun 2015
    نوشته ها
    7
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    Exclamation راهنمایی در مورد کد برنامه تایمر و ساعت

    با سلام بر اساتید
    من یک برنامه تایمر و ساعت دارم با ds1307 هست و این برنامه را قبلا خریده بودم !! تایمر اش به صورت روزانه هست یعنی هر روز سر ساعت خاصی رله فعال میشه !! من میخوام کاری کنم مه مثلا هر 3 روز یکبار رله فعال بشود!! هر کاری کردم نتونستم درست اش کنم !! تاریخ اش میلادی هست !! لطفا اگر می توانید راهنمایی کنید!

    کد:
    #include <mega8.h>
    #include <delay.h>
    #include <stdio.h>  
    #include <i2c.h>
    #include <ds1307.h>
    #include <alcd.h> 
    #define  b_down    PIND.1
    #define  b_up      PIND.2      
    #define  b_set     PIND.0
    #define  b_set_up     PIND.4
    #define  b_set_down     PIND.5
    #define  relay     PORTB.7  
    //____________________________________________________________
    void main(){ 
    char lcd_buffer1[16];
    //char lcd_buffer2[16]; 
    unsigned char hr,min,sec,status=0,value=0,roz=0;
    unsigned char week,year,month,day;
    unsigned char en_hr=0,en_min=0,en_sec=0;
    unsigned char st_hr=0,st_min=0,st_sec=0;
    unsigned char en_year=0,en_month=0,en_day=0;
    unsigned char st_year=0,st_month=0,st_day=0;
    unsigned int main_year;
    DDRB.7=0xFF; 
    PORTD=0XFF;
    i2c_init();
    lcd_init(16);
    rtc_init(0,0,0);
    
    if(b_set == 0)
    {
        rtc_set_time(0,0,0);
        rtc_set_date(0,8,7,15);
        lcd_putsf("Successfully!");
        while(1)
        {
        }
    }
      
    delay_ms(20);
    rtc_get_time(&en_hr,&en_min,&en_sec); 
    rtc_get_time(&st_hr,&st_min,&st_sec);
    rtc_get_date(&week,&en_day,&en_month,&en_year);
    rtc_get_date(&week,&st_day,&st_month,&st_year);
    delay_ms(20);
            
        while (1){   
    
            while(status == 0)
            {    
           
                rtc_get_time(&hr,&min,&sec);
                rtc_get_date(&week,&day,&month,&year); 
                main_year = year + 2000;
                
                if(b_up == 0)
                {
                    roz++;
                    if(roz == 2) roz = 0;
                    while(b_up == 0);  
                }   
                
                if(roz == 0)
                {
                    if(hr == en_hr & min == en_min & sec == en_sec & year == en_year & month == en_month & day == en_day)
                    {
                        value = 1;
                        relay = 1;
                    } 
    
                    if(hr == st_hr & min == st_min & sec == st_sec & year == en_year & month == en_month & day == en_day)
                    {
                        value = 0;
                        relay = 0;
                    } 
                }
                else
                {
                    if(hr == en_hr & min == en_min & sec == en_sec)
                    {
                        value = 1;
                        relay = 1;
                    } 
    
                    if(hr == st_hr & min == st_min & sec == st_sec)
                    {
                        value = 0;
                        relay = 0;
                    } 
                }            
    
                lcd_clear();
    
                sprintf(lcd_buffer1,"Time~ %02u:%02u:%02u",hr,min,sec);
                lcd_gotoxy(0,0);        
                lcd_puts(lcd_buffer1);
                sprintf(lcd_buffer1,"%u/%02u/%02u ",main_year,month,day);
                lcd_gotoxy(0,1);        
                lcd_puts(lcd_buffer1); 
                     
                if(value == 0)   
                    lcd_putsf("Off");
                else
                    lcd_putsf("On"); 
                    
                if(roz != 0)   
                    lcd_putsf(" R");               
    
                if(b_set == 0)
                {
                    status++;
                    if(status == 19) status = 0;
                    while(b_set == 0);  
                   
                   }
    سپاس

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

موضوعات مشابه

  1. پاسخ: 2
    آخرين نوشته: 30-06-2015, 13:31
  2. راهنمایی در مورد کد برنامه ساعت
    توسط lakers در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 27-06-2015, 17:20
  3. [درخواست] درخواست راهنمایی-میکروکنترلر-کریستال ساعت
    توسط omidta در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 06-10-2014, 14:55
  4. دکتر مرتضی موسی خانی : هدف نهایی صنعت رباتیک ، ساخت انسان هوشمند است
    توسط ROBOTICS در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 0
    آخرين نوشته: 05-04-2011, 21:31

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •