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

موضوع: مقایسه دو داده برای روشن کردن ال ای دی

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

    پیش فرض مقایسه دو داده برای روشن کردن ال ای دی

    با سلام و خسته نباشید
    من می خوام دو داده رو با هم مقایسه کنم و بعد از مقایسه در صورت درست بودن شرط یک ال ای دی به مدت 3 ثانیه روشن بشه من برنامه ی زیر رو نوشتم
    if ((h==h1 && m==m1)){
    PORTC.2=1;
    delay_ms(3000);
    PORTC.2=0;
    delay_ms(57000); {
    که در اون h و m ساعت و دقیقه ای هستن که از ds1307 گرفته می شه و دو عدد دیگه ساعت و دقیقه ای هستن که ما تنظیم می کنیم برای روشن شدن ال ای دی اما جواب نمی ده یعنی ال ای دی روشن نمی شه اگه ممکنه راهنمایی کنید

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

  3. #2
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    سلام مهندس
    مطمئنی m و h عددن و از نوع رشته(آرایه) نیستن؟
    ممکنه کد اسکی اعداد را ذخیره میکنن مثلا به جای ذخیره عدد 1 معادل اسکی اون یعنی 49 را ذخیره میکنه.
    ویرایش توسط sadmonew : 30-03-2015 در ساعت 23:10
    _____________________________________
    _____________________________________

  4. #3
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    دو داده از نوع unsigned char تعریف شدن

  5. #4
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    البته منظورم از دو داده داده ای هست که تنظیم می شه و داده ای که مستقیما از rtc می گیرم
    لطفا راهنمایی کنید چون داده ای که از rtc می گیرم نمی تونه از نوع دیگه ای تعریف بشه

  6. #5
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mahsa1469 نمایش پست ها
    البته منظورم از دو داده داده ای هست که تنظیم می شه و داده ای که مستقیما از rtc می گیرم
    لطفا راهنمایی کنید چون داده ای که از rtc می گیرم نمی تونه از نوع دیگه ای تعریف بشه
    مهندس داده ای که مستقیم از ds1307 می گیری BCD هستش و باید به دهدهی تبدیل کنی بعد مقایسه اش کنی
    دو تابع زیر این کار رو برات می کنه یکی BCD به دهدهی و دیگری دهدهی به BCD
    کد:
    
    
    کد:
    unsigned char DEC_To_BCD(unsigned char DEC)
    {
      return ( (DEC/10*16) + (DEC%10) );
    }
    
    
    unsigned char BCD_To_DEC(unsigned char BCD)
    {
      return ( (BCD/16*10) + (BCD%16) );
    }


  7. تشکرها از این نوشته :


  8. #6
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ببخشید من الان متوجه نشدم الان برای داده های بالا چجوری باید اینکارو انجام بدم؟

  9. #7
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mahsa1469 نمایش پست ها
    ببخشید من الان متوجه نشدم الان برای داده های بالا چجوری باید اینکارو انجام بدم؟
    اول داده ای که از DS1307 می گیری با تابع BCD_To_DEC
    به مقدار دهدهی تبدیل کن بعد با همون کدت تو بالا مقایسه کن

  10. تشکرها از این نوشته :


  11. #8
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    return برای چی اومده؟

  12. #9
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  13. #10
    کاربر فعال pirozy آواتار ها
    تاریخ عضویت
    May 2010
    نوشته ها
    337
    تشکر
    147
    تشکر شده 192 بار در 84 پست

    پیش فرض

    خوب باید الگو هاشون رو هم تعریف کنی قبل از تابع main

  14. تشکرها از این نوشته :


  15. #11
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ببخشید اصلا متوجه نمی شم می شه یکمی بیشتر توضیح بدین من تا حالا از این توابع استفاده نکردم

  16. #12
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    هرچی دنبال این تابع تو اینترنت می گردم برای کدویژن و برنامه نویسی avr به زبان سی چیزی پیدا نمی کنم فقط همین قسمت از برنامم مونده و فرصت زیادی هم ندارم لطفا راهنمایی کنید
    مرسی

  17. #13
    کاربر فعال
    تاریخ عضویت
    Feb 2012
    نام
    مصطفی
    نوشته ها
    273
    تشکر
    195
    تشکر شده 128 بار در 93 پست

    پیش فرض

    این دو خط رو قبل از main بنویس
    کد:
    unsigned char DEC_To_BCD(unsigned char DEC);
    unsigned char BCD_To_DEC(unsigned char BCD);
    یا اینکه توابع رو قبل از main بنویس.

  18. #14
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    این بار ارور نمی ده ولی وارنینگ می ده و جواب هم نمی گیرم

  19. #15
    ناظم انجمن vahidasm آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    وحید
    نوشته ها
    754
    تشکر
    1,068
    تشکر شده 881 بار در 470 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mahsa1469 نمایش پست ها
    این بار ارور نمی ده ولی وارنینگ می ده و جواب هم نمی گیرم
    سلام برنامه ات رو کامل بذار
    تو این برنامه که گذاشتی فقط نشون دادی که میخوای مقایسه کنی
    خیلی داستانای دیگه میتونه موثر باشه که اصلا ربطی به مقایسه نداره
    اولین مرحله شناخت آفرینش همانا خرد است چشم و گوش و زبان سه نگهبان اویند که لاجرم هر چه نیکی و شر است از همین سه ریشه می گیرد .و افسوس که بدنبال کنندگان خرد اندکند باید که به سخن دانندگان راه جست و باید جهان را کاوش نمود و از هر کسی دانشی آموخت و یک دم را هم برای آموختن نباید از دست داد . فردوسی خردمند

  20. #16
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    با سلام این فایل برنامه من به زبان سی هستش:
    #include <mega8.h>
    #include <delay.h>
    #include <stdio.h>
    #include <lcd.h>
    #include <i2c.h>
    #include <bcd.h>
    #asm
    .equ __i2c_port=0x15
    .equ __sda_bit=0
    .equ __scl_bit=1
    #endasm

    #include <ds1307.h>
    #asm
    .equ __lcd_port=0x12
    #endasm
    unsigned char DEC_To_BCD(unsigned char DEC);
    unsigned char BCD_To_DEC(unsigned char BCD);

    void main(){
    unsigned char set=0, h1=0, h2=0, h3=0, h4=0, h5=0, h6=0, h7=0 ,h8=0;
    unsigned char m1=0, m2=0, m3=0, m4=0, m5=0, m6=0, m7=0 ,m8=0;
    unsigned char h,m,s;

    char b[16], time[];
    PORTB=0x00;
    DDRB=0x00;
    PORTC.2=0;
    DDRC.2=1;
    lcd_init(16);
    i2c_init();
    rtc_init(0,0,0);

    while(1){
    rtc_get_time(&h,&m,&s);
    sprintf(time,"%d:%d:%d ",h,m,s);
    lcd_gotoxy(0,0);
    lcd_puts(time);
    if (PINB.0==0){
    set++;
    if (set==17)set=0;
    while(PINB.0==0);
    }
    if (set==0){
    lcd_gotoxy(0,1);
    lcd_putsf("RTC with 8 alarm");
    }
    if (set==1) {
    sprintf(b,"A1=%d:%d ,dec ",h1,m1);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h1;
    if (h1==-1) h1=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m1;
    if (m1==-1) m1=59;
    while(PINB.2==0);
    }
    }

    if(set==2){
    sprintf(b,"A1=%d:%d ,inc ",h1,m1);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h1;
    if (h1==24) h1=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m1;
    if (m1==60) m1=0;
    while(PINB.2==0);
    }

    }
    if (set==3) {
    sprintf(b,"A2=%d:%d ,dec ",h2,m2);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h2;
    if (h2==-1) h2=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m2;
    if (m2==-1) m2=59;
    while(PINB.2==0);
    }
    }
    if(set==4){
    sprintf(b,"A2=%d:%d ,inc ",h2,m2);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h2;
    if (h2==24) h2=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m2;
    if (m2==60) m2=0;
    while(PINB.2==0);
    }

    }
    if (set==5) {
    sprintf(b,"A3=%d:%d ,dec ",h3,m3);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h3;
    if (h3==-1) h3=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m3;
    if (m3==-1) m3=59;
    while(PINB.2==0);
    }
    }
    if(set==6){
    sprintf(b,"A3=%d:%d ,inc ",h3,m3);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h3;
    if (h3==24) h3=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m3;
    if (m3==60) m3=0;
    while(PINB.2==0);
    }

    }
    if (set==7) {
    sprintf(b,"A4=%d:%d ,dec ",h4,m4);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h4;
    if (h4==-1) h4=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m4;
    if (m4==-1) m4=59;
    while(PINB.2==0);
    }
    }
    if(set==8){
    sprintf(b,"A1=%d:%d ,inc ",h4,m4);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h4;
    if (h4==24) h4=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m4;
    if (m4==60) m4=0;
    while(PINB.2==0);
    }

    }
    if (set==9) {
    sprintf(b,"A5=%d:%d ,dec ",h5,m5);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h5;
    if (h5==-1) h5=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m5;
    if (m5==-1) m5=59;
    while(PINB.2==0);
    }
    }
    if(set==10){
    sprintf(b,"A5=%d:%d ,inc ",h5,m5);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h5;
    if (h5==24) h5=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m5;
    if (m5==60) m5=0;
    while(PINB.2==0);
    }

    }
    if (set==11) {
    sprintf(b,"A6=%d:%d ,dec ",h6,m6);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h6;
    if (h6==-1) h6=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m6;
    if (m6==-1) m6=59;
    while(PINB.2==0);
    }
    }
    if(set==12){
    sprintf(b,"A6=%d:%d ,inc ",h6,m6);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h6;
    if (h6==24) h6=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m6;
    if (m6==60) m6=0;
    while(PINB.2==0);
    }

    }
    if (set==13) {
    sprintf(b,"A7=%d:%d ,dec ",h7,m7);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h7;
    if (h7==-1) h7=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m7;
    if (m7==-1) m7=59;
    while(PINB.2==0);
    }
    }
    if(set==14){
    sprintf(b,"A7=%d:%d ,inc ",h7,m7);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h7;
    if (h7==24) h7=0;
    while(PINB.1==0);
    }
    if (PINB.2==0){
    ++m7;
    if (m7==60) m7=0;
    while(PINB.2==0);
    }

    }

    if (set==15) {
    sprintf(b,"A8=%d:%d ,dec ",h8,m8);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    --h8;
    if (h8==-1) h8=23;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    --m8;
    if (m8==-1) m8=59;
    while(PINB.2==0);
    }
    }

    if(set==16){
    sprintf(b,"A8=%d:%d ,inc ",h8,m8);
    lcd_gotoxy(0,1);
    lcd_puts(b);
    if (PINB.1==0){
    ++h8;
    if (h8==24) h8=0;
    while(PINB.1==0);
    }

    if (PINB.2==0){
    ++m8;
    if (m8==60) m8=0;
    while(PINB.2==0);
    }
    if ((h==h1 && m==m1)){
    PORTC.2=1;
    delay_ms(3000);
    PORTC.2=0;
    delay_ms(57000);
    }

    }
    }
    }

  21. #17
    عضو جدید
    تاریخ عضویت
    Jan 2015
    نوشته ها
    19
    تشکر
    6
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ببخشید دوباره سوالمو تکرار می کنم
    من الان می تونم از دو داده که به صورت فوق تعریف شده رو مقایسه کنم یا نه ؟

  22. #18
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    خود مقایسه مشکلی نداره و کار میکنه
    ولی اگر اون تکه کد اجرا نمیشه باید دنبال چیزهای دیگه باشید
    مثلا اینکه set برابر 16 میشه چون دیبانس گیری کلید ها جالب نیست یا مثلا مقایسه unsigned با 1- درست نیست هر چند احتمالا کار میکنه و ...

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

  1. مقایسه دو ارایه دو بعدی
    توسط SAMIRR در انجمن برنامه نویسی کامپیوتر/کنترل با کامپیوتر
    پاسخ: 0
    آخرين نوشته: 25-02-2015, 15:44
  2. مقایسه کننده
    توسط moosavimaleki در انجمن الکترونیک
    پاسخ: 1
    آخرين نوشته: 04-03-2013, 21:24
  3. پاسخ: 7
    آخرين نوشته: 17-08-2012, 02:26
  4. مقایسه شکل موج با avr
    توسط fazel7 در انجمن AVR
    پاسخ: 11
    آخرين نوشته: 11-09-2010, 00:54
  5. مقایسه نرم افزارهای طراحی pcb
    توسط MRSTAR در انجمن آموزش نرم افزارهای برق و الکترونیک
    پاسخ: 1
    آخرين نوشته: 06-05-2010, 00:33

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

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