اطلاعیه

Collapse
No announcement yet.

کمک در برنامه نویسی

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

    کمک در برنامه نویسی

    با سلام خدمت همه دوستان
    برنامه من اینجوره که از یک lpc2132 و دوتا سون سگمنت و یک میکرو سوئیچ تشکیل شده که هر وقت میکرو سوئیچ فشار داده میشه یک رقم به شمارنده دو رقمی اضافه میشه و اما مشکل اینه که وقتی کلید فشار داده میشه یک لحظه سون سگمنت عدد و نشون میده و میره حالا باید چکار کنم که عدد روی سون سگمنت ثابت نشون داده بشه
    برنامه و پروتئوس برنامه هم از لینک زیر دانلود کنید لطفا
    http://uplod.ir/i3ko497e7pq9/lpc2132.rar.htm
    تشکر

    #2
    پاسخ : کمک در برنامه نویسی

    شما با دکمه tab رو کیبورد عقد اخوت بستی ؟
    کد ها رو میزارم همین جا بچه ها حوصله دانلود ندارن .

    کمک زیادی نمیتونم بکنم . خودم تازه شروع کردم .ولی یه عالمه سوال برام پیش اومد .
    تو پردازنده های 32 بیتی هم مثل 8 بیتی ها int معرف 16 بیته . وقتی تو یه متغییر 16 بیتی عدد 1 رو 16 بار شیفت بدی از اونور میافته بیرون :mrgreen:
    p_state چرا مقدار اولیه نداره ؟
    تو else خط 28 >> اون IOCLR0 ها چی کارن ؟ مگه برا صفر کردن بیت از این رجیسترها استفاده نمیشه ؟
    [code=c]#include <lpc21xx.h>
    unsigned char seg1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
    unsigned int seg2[]={0x3F00,0x0600,0x5B00,0x4F00,0x6600,0x6D00,0x7D00 ,0x0700,0x7F00,0x6F00};
    unsigned char i,j,p_state;
    unsigned int key;
    void delay(int x);
    void main () {
    IODIR0 =0x0000ffff;
    while(1){
    key=IOPIN0 & (1<<16);
    if(key==0){
    delay(10);
    key=IOPIN0& (1<<16);
    if(key==0){
    if(p_state==1){
    p_state=0;
    ++i;
    if(i==10){
    ++j;
    if(j==10)
    j=0;
    };
    IOSET0=seg1[j];
    IOSET0=seg2[i];
    };
    };
    }
    else{
    p_state=1;
    IOCLR0=seg1[j];
    IOCLR0=seg2[i];
    }
    };

    }
    void delay (int x){unsigned char r,k;
    for(k=x;k>0;--k)
    for(r=0;r<x;r++);
    }
    [/code]
    إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
    کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

    دیدگاه


      #3
      پاسخ : کمک در برنامه نویسی

      int که حواسم نبود حق با شماست
      اینم به جای key میزارم که مشکل int هم حل بشه
      if((IOPIN0 & (1<<16))==0)
      مقدار p_state هم که اتومات اول برنامه صفره
      چرا برای پاک کردن اسفاده میشه و ما چون مرتب کلید رو میزنیم باید عددا از رو پاک کنیم بعد ست کنیم
      مشکل برنامه اینه که سون سگمنت اعداد و ثابت نشون نمیده یه لحظه نشون میده و میره تا دوباره کلید زده بشه

      دیدگاه


        #4
        پاسخ : کمک در برنامه نویسی

        داخل else چه اتفاقی میافته ؟
        IOCLR0=seg1[j] چی کار میکنه ؟
        مگه پاک نمیکنه ؟
        إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
        کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

        دیدگاه


          #5
          پاسخ : کمک در برنامه نویسی

          فکر میکنم سون سگمنت عدد رو تا زمانی که کلید فشرده شده نشون میده .
          کلید که رها شد پاک میشه
          دوباره که فشرده شد یه واحد اضافه میشه و نشون میده و ...

          اگه درست گفتم با جابجا کردن 2 خط کد برنامه اصلاح میشه .
          إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
          کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

          دیدگاه


            #6
            پاسخ : کمک در برنامه نویسی

            درسته چجوری؟

            دیدگاه


              #7
              پاسخ : کمک در برنامه نویسی

              وقتی دکمه رو فشار دادی اول قبلی رو پاک کن بعد اطلاعات جدید رو نمایش بده .[code=c]#include <lpc21xx.h>
              unsigned char seg1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
              unsigned int seg2[]={0x3F00,0x0600,0x5B00,0x4F00,0x6600,0x6D00,0x7D00 ,0x0700,0x7F00,0x6F00};
              unsigned char i,j,p_state;
              unsigned int key;
              void delay(int x);
              void main () {
              IODIR0 =0x0000ffff;
              while(1){
              key=IOPIN0 & (1<<16);
              if(key==0){
              delay(10);
              key=IOPIN0& (1<<16);
              if(key==0){
              if(p_state==1){

              IOCLR0=seg1[j]; // < این کدها رو بیار اینجا
              IOCLR0=seg2[i];

              p_state=0;
              ++i;
              if(i==10){
              ++j;
              if(j==10)
              j=0;
              };
              IOSET0=seg1[j];
              IOSET0=seg2[i];
              };
              };
              }
              else{
              p_state=1;

              }
              };

              }
              void delay (int x){unsigned char r,k;
              for(k=x;k>0;--k)[/code]
              إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
              کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

              دیدگاه


                #8
                پاسخ : کمک در برنامه نویسی

                بخش کدها توضیح فارسی رو خوب نمایش نمیده .
                امیدوارم درست باشه . نتیجه رو اینجا بگو !
                إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
                کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

                دیدگاه


                  #9
                  پاسخ : کمک در برنامه نویسی

                  آقا دمت گرم درست شد
                  :applause:

                  دیدگاه

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