اطلاعیه

Collapse
No announcement yet.

مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

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

    مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

    با سلام و خسته نباشید.
    من یک پروژه کیپد و سون سگمنت دارم. تو این پروژه عدد سه رقمی توسط کاربر از کیپد وارد میشه و با زدن کلید تایید روی کیپد با شماره سه رقمی روی سون سگمنت نمایش بشه.
    تو مالتی پلکس کردن سون سگمنتها از عمل ریفرش یا روشن خاموش کردن سون سگمنتها استفاده میکنم.
    تو برنامم نوشتم که وقتی اعداد گرفته شد اونو تو متغیر number ذخیره کنه و بفرسته به تابع segment که قراره عملیات ریاضی انجام بده و اعداد رو به تفکیک رو سگمنتها نمایش بده و هر میلی ثانیه خاموش کنه
    الان مشکلم اینه که عدد رو فقط یه بار نشون میده و خاموش میشن. نمدونم چطور تو حلقه بذارمش که تا ابد ادامه پیدا نکنه نمایش. با زدن شماره جدید رو کیبد و زدن کلید تایید اون عدد هم عوض بشه.
    اللن فقط یه بار عدد رو نمایش میده خاموش میشه. میخام خاموش نشه و رو سون سگمنت بمونه و هم اینکه دیگه با زدن عدد بعدی عدد جدید رو نمایش نمیده.
    خواستین برنامه و کدهاشم بفرستم؟؟؟
    جدیدترین ویرایش توسط aashkanpasha; ۱۲:۱۵ ۱۳۹۸/۰۵/۱۵.

    #2
    پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

    سلام.اگه ممکنه برنامه رو اینجا بزارید تا بهتر بتونم کمکتون کنم اگه فایل پروژه باشه که چه بهتر.

    دیدگاه


      #3
      پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

      بله چشم.

      while(1){
      kp=keypad();
      t=kpd_scan(kp);

      if(t<16){

      if(t==14){state=3;}


      switch(state){
      case 0: number=t; alcd_gotoxy(0,0); alcd_puts(" Number:"); int2char(number); state++; break;
      case 1: number=(number*10)+t; alcd_clear(); alcd_gotoxy(0,0); alcd_puts(" Number:"); int2char(number); state++; break;
      case 2: number=(number*10)+t; alcd_clear(); alcd_gotoxy(0,0); alcd_puts(" Number:"); int2char(number); state++; break;
      case 3: state=0; alcd_clear(); alcd_gotoxy(0,0); alcd_puts(" Number:"); alcd_gotoxy(1,2); int2char(number); [COLOR=#ff0000]segment(number);[/COLOR] break;
      }
      }


      تابع segment برای نمایش عدد روی سون سگمنت که ملتی پلکس شده:(کلمات قرمز رنگ)
      [LEFT]
      oid segment([COLOR=#ff0000]number[/COLOR]){

      DDRA=0xff;
      DDRD=0xff;
      PORTA=0xff;
      PORTD=0x00;
      a=number/100;
      number=number%100;
      b=number/10;
      number=number%10;
      c=number;

      switch(a){
      case 0:PORTA=0xfe; PORTD=0X3F;break;
      case 1:PORTA=0xfe;PORTD=0X06;break;
      case 2:PORTA=0xfe;PORTD=0X5B;break;
      case 3:PORTA=0xfe;PORTD=0X4F;break;
      case 4:PORTA=0xfe;PORTD=0X66;break;
      case 5:PORTA=0xfe;PORTD=0X6D;break;
      case 6:PORTA=0xfe;PORTD=0X7D;break;
      case 7:PORTA=0xfe;PORTD=0X07;break;
      case 8:PORTA=0xfe;PORTD=0X7F;break;
      case 9:PORTA=0xfe;PORTD=0X6F;break;
      }
      _delay_ms(1000); PORTA=0xff; PORTD=0X00;
      [/LEFT]
      عدد اول رو یک میلی ثانیه رو سون سگمنت خودش نشون میده و خاموش میشه و میره پایین عدد دوم و سوم همچنین.
      [LEFT] switch(b){
      case 0:PORTA=0xfd;PORTD=0X3F;break;
      case 1:PORTA=0xfd;PORTD=0X06;break;
      case 2:PORTA=0xfd;PORTD=0X5B;break;
      case 3:PORTA=0xfd;PORTD=0X4F;break;
      case 4:PORTA=0xfd;PORTD=0X66;break;
      case 5:PORTA=0xfd;PORTD=0X6D;break;
      case 6:PORTA=0xfd;PORTD=0X7D;break;
      case 7:PORTA=0xfd;PORTD=0X07;break;
      case 8:PORTA=0xfd;PORTD=0X7F;break;
      case 9:PORTA=0xfd;PORTD=0X6F;break;
      }
      _delay_ms(1000); PORTA=0xff; PORTD=0X00;

      switch(c){
      case 0:PORTA=0xfb;PORTD=0X3F;break;
      case 1:PORTA=0xfb;PORTD=0X06;break;
      case 2:PORTA=0xfb;PORTD=0X5B;break;
      case 3:PORTA=0xfb;PORTD=0X4F;break;
      case 4:PORTA=0xfb;PORTD=0X66;break;
      case 5:PORTA=0xfb;PORTD=0X6D;break;
      case 6:PORTA=0xfb;PORTD=0X7D;break;
      case 7:PORTA=0xfb;PORTD=0X07;break;
      case 8:PORTA=0xfb;PORTD=0X7F;break;
      case 9:PORTA=0xfb;PORTD=0X6F;break;
      }
      _delay_ms(1000); PORTA=0xff; PORTD=0X00;

      }

      [/LEFT]
      مشکل من اینه که اولا: یک بار نشون میده و خاموش میشه و تموم.مخام تا زمانی که عدد جدید وارد و با کلید مربع فرستاده نشده همینو نشون بده.
      دوما وقتی میذارم تو حلقه while(1) یا do while تا ابد این نشون میده و نمتونم عدد جدید بگیرم از کیپدم.
      تو این موضوع موندم.
      نوشته اصلی توسط MM320 نمایش پست ها
      سلام.اگه ممکنه برنامه رو اینجا بزارید تا بهتر بتونم کمکتون کنم اگه فایل پروژه باشه که چه بهتر.
      جدیدترین ویرایش توسط aashkanpasha; ۱۳:۰۷ ۱۳۹۸/۰۵/۱۵.

      دیدگاه


        #4
        پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

        لصفا شماتیک و فایل کامل پروژه رو ارسال کنید.تا خودم برنامه چک کنم

        دیدگاه


          #5
          پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

          نوشته اصلی توسط MM320 نمایش پست ها
          لصفا شماتیک و فایل کامل پروژه رو ارسال کنید.تا خودم برنامه چک کنم

          دیدگاه


            #6
            پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

            دوست عزیز.منظورم فایل پروتئوس و کدویژون بود

            دیدگاه


              #7
              پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

              من تو اتمل برنامه نویسی میکنم .اتمل رو بفرستم؟ و پرتئوس من 8.6 هستش میتونین؟

              نوشته اصلی توسط MM320 نمایش پست ها
              دوست عزیز.منظورم فایل پروتئوس و کدویژون بود

              دیدگاه


                #8
                پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                ببینید.من من با کد یژون می نویسم. ولی یه نکته هست وقتی AVR اسکن سون سگمنت می کنید باید به این نکته توجه کنید برنامه نباید وقفه یا ایستی نداشته باشه در صورت اعداد روی نمایشکر بصورت تاخیری که چشم انسان اونو ببنه میشه یا روی یک رقم می ایسته .راه حل:یا از آیسی MAX7219 استفاده کنن که خودش سون سگمنت راه اندازی می کنه یا اینه از تایمر ها استفاده کن به این صورت که هر 1ms یک رقم نشان بده و وقتی کلید ها رو فشار می دی اسکن نمایشگر متوقف نمی شه چونکه برنامه هر جا که می خواد باشه اولویت برنامه با وقفه تایمر میشه.موفق باشید.

                دیدگاه


                  #9
                  پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                  من مشکل رو حل کردم تقریبا. الان داره هم اسکن مکنه هم نشون میده . با اینکه تاخیر رو 1 میلی ثانیه گذاشتم ولی اعداد روی سگمنت 1میلی ثانیه روشنه بعد 1 ثانیه خاموشه . نمدونم سرعت کامپیوتر پایینه اینطوری دیده میشه یا فرکانس کارمو اشتباه در نظر گرفتم.

                  نوشته اصلی توسط MM320 نمایش پست ها
                  ببینید.من من با کد یژون می نویسم. ولی یه نکته هست وقتی AVR اسکن سون سگمنت می کنید باید به این نکته توجه کنید برنامه نباید وقفه یا ایستی نداشته باشه در صورت اعداد روی نمایشکر بصورت تاخیری که چشم انسان اونو ببنه میشه یا روی یک رقم می ایسته .راه حل:یا از آیسی MAX7219 استفاده کنن که خودش سون سگمنت راه اندازی می کنه یا اینه از تایمر ها استفاده کن به این صورت که هر 1ms یک رقم نشان بده و وقتی کلید ها رو فشار می دی اسکن نمایشگر متوقف نمی شه چونکه برنامه هر جا که می خواد باشه اولویت برنامه با وقفه تایمر میشه.موفق باشید.

                  دیدگاه


                    #10
                    پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                    زیاد به پروتئوس اعتماد نکنید .گاهی پیش می یاد قطعه مشکل داره اجرا سیمولاتور با مشکل رو می کنه.شما یه کاری کن هر دستوری مثل اسکن صفحه کلید و غیره رو توی برنامه غیر فعال کن و فقط برنامه راه اندازی سون سگمنت بزار و تست کن ببین که مثلا ععد 123 روی سون سگمنت نمایش بده بین برنامه نمایشگر مشکلی داره یا نه؟این جوری بهتر مشکل پیدا می کنی

                    دیدگاه


                      #11
                      پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                      بله همینه- من بقیه المان ها رو غیرفعال کردم ولی بازم همونه. فقط سگمنت سه تایی رو راه انداختم با یه عدد همینه. البته زیر 10 میلی ثانیه که خیلی بد دیده شد ولی وقتی 10 میلی ثانیش کردم فکر کردم بدتر هم قراره بشه ولی بهتر شد. تو 10 میلی ثانیه بهتر شد ولی قابل قبول نبود. کمتر کردم که عالی شه ولی بدتر شد.
                      فرکانش کاریم 1 وگا هرتزه به اون ربط نداشته باشه؟ البته 8 مگا هم کردم همون بود مشکل.
                      نمدونم جریان چیه. تو فرکانسمه یا چی- وقفه ای هم تو هیج جای برنامم ندارم اصلا.

                      نوشته اصلی توسط MM320 نمایش پست ها
                      زیاد به پروتئوس اعتماد نکنید .گاهی پیش می یاد قطعه مشکل داره اجرا سیمولاتور با مشکل رو می کنه.شما یه کاری کن هر دستوری مثل اسکن صفحه کلید و غیره رو توی برنامه غیر فعال کن و فقط برنامه راه اندازی سون سگمنت بزار و تست کن ببین که مثلا ععد 123 روی سون سگمنت نمایش بده بین برنامه نمایشگر مشکلی داره یا نه؟این جوری بهتر مشکل پیدا می کنی

                      دیدگاه


                        #12
                        پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                        شما فایل پرتئوس و HEX برنامه رو بفرس من چک کنم.فقط برنامه که HEX رو می فرستی طوری باشه که سون سگمت عدد نمایش بده و بقیه کار رو تو برنامه غیر فعال کن.

                        دیدگاه


                          #13
                          پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                          چطوری اینجا بفرستم؟

                          نوشته اصلی توسط MM320 نمایش پست ها
                          شما فایل پرتئوس و HEX برنامه رو بفرس من چک کنم.فقط برنامه که HEX رو می فرستی طوری باشه که سون سگمت عدد نمایش بده و بقیه کار رو تو برنامه غیر فعال کن.

                          دیدگاه


                            #14
                            پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                            وارد این سایت شو http://uupload.ir/ بعد فایل خود تو از روی کامپیوتر انتخاب کن دکمه آپلود بزن یه صفحه می یاد شما کادر اول URL رو کپی و انجمن برام پست کن

                            دیدگاه


                              #15
                              پاسخ : مالتی پلکس کردن سون سگمنت ها- سون سگمنت سه رقمی با کیپد

                              آپلود عکس، فایل، آهنگ و فیلم رایگان و با لینک مستقیم و ماندگاری دائمی و سرعت بالا در آپلود سنتر عکس و فایل یو آپلود


                              درسته؟

                              نوشته اصلی توسط MM320 نمایش پست ها
                              وارد این سایت شو http://uupload.ir/ بعد فایل خود تو از روی کامپیوتر انتخاب کن دکمه آپلود بزن یه صفحه می یاد شما کادر اول URL رو کپی و انجمن برام پست کن

                              دیدگاه

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