اطلاعیه

Collapse
No announcement yet.

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

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

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

    http://www.eca.ir/forum2/index.php?topic=104277.0

    اضافه شده در تاریخ :
    دوستان من 32 تا کلید دارم که باید اسکن بشن و بعضی از کلیدها ترکیبی استفاده میشن و اینکه من این کلیدهارو باید با سریال بفرستم به pc و اینکه هر 6 کلید داخل یه بایتی هست که این بایت دارای idو شماره بایت و دیتای کلیدها و یه بایت که همه کلیدها باهم xor شدن
    اینم عکس کلیدها و جدول
    http://s4.picofile.com/file/8163935434/21.JPG

    و اینکه بعلاوه یک شدن کلیدها صفر شدنشون هم نشون بدم زبان برنامه هم C هست لطفا راهنمایی کنید
    ویرایش

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

    سلام.
    دلیل اینکارتون رو نمیتونم متوجه بشم. چه ضرورتی داره همچین کار پیچیده ای رو انجام بدین؟ به هر حال....
    پیشنهادم استفاده از IC های لچ هست. که واسه هر سطر یه لچ بذارین. IDها رو هم مستقیم روی لچ ها مقدار بدین. Enable لچ رو بدین به میکرو و خیلی راحت کلیدها رو بخونین.
    حالا باز هم من نتونستم به کلیات ماجرا پی ببرم تا بتونم بهتر راهنمایی کنم.
    (ضمنا بابت تاخیر در جواب دادن ازتون عذر خواهی میکنم :redface: )

    دیدگاه


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

      سلام مهندس
      ممنون از وقتی که میزارید واقعا یه دنیا ارزش داره این کارتون
      از من خواسته شده که اطلاعات رو با همچین پروتکلی بفرستم و مدارات کامل اماده شده فقط مونده قسمت برنامه نویسی که باید اطلاعات به این صورت از کلیدها به pc منتقل بشن و من نمیدونم چطور باید این کارو انجام بدم ممنون میشم اگر شما و دوستان راهنمایی کنید و اگر جاییش مبهم هست بگید که بیشتر توضیح بدم

      اضافه شده در تاریخ :
      مهندس اینجا بیشتر توضیح دادم که منظورم چیه
      http://forum.electronics98.com/Threa...3%DB%8C-keypad

      دیدگاه


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

        امکانش هست یه شماتیک از مداری که مد نظرتون دارین، قرار بدین؟
        فرض میکنیم فقط 8 تا کلید داریم. مطابق این روشی که گفتین، شماتیک و دستور العمل به چه نحو هست؟

        دیدگاه


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

          سلام
          مهندس جز اسکن ماتریسی چکار میشه کرد؟

          اضافه شده در تاریخ :
          دوستان به این pdf توجه کنید
          http://s5.picofile.com/file/8166355000/Matrix_Keypad_interfacing_with_PIC_microcontroller .zip.html]s5.picofile.com/file/8166355000/Matrix_Keypad_interfacing_with_PIC_microcontroller .zip.html]http://s5.picofile.com/file/8166355000/Matrix_Keypad_interfacing_with_PIC_microcontroller .zip.html

          دیدگاه


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

            نوشته اصلی توسط asmira
            سلام
            مهندس جز اسکن ماتریسی چکار میشه کرد؟
            با سلام
            جز اسکن ماتریسی راهش اینه که یه میکرو با IO زیاد انتخاب کنین مثل 18F8720. کلیدها رو به ورودیهاش وصل کنین و بخونین.

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

            مشکل پروتکل چیه؟
            اونم که چیز خاصی نیست. وقتی کلیدها رو خوندین، بایتهاشو تشکیل میدین و ارسال میکنین. فقط نکته مبهم بنظرم ID بایتهاست که توی توضیح شما، برای همه صفره، ولی احتمالا باید مثلا مقادیر 0 و 1 و 2 داشته باشه تا شماره PACKET اطلاعاتی که ارسال میشه رو مشخص کنه.
            کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

            دیدگاه


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

              سلام
              من 6سطر و 6ستون دارم اما نمیتونم تو یه سطر جندتا کلید رو ترکیب کنم و اینکه هر byte یک id و شماره بایت داره

              دیدگاه


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

                نوشته اصلی توسط asmira
                من 6سطر و 6ستون دارم اما نمیتونم تو یه سطر جندتا کلید رو ترکیب کنم و اینکه هر byte یک id و شماره بایت داره
                برای تشکیل بایتها باید از دستور العملهای دسترسی بیتی استفاده کنین.
                مثلا برای PACKET اول که شامل 4 بایت هست میشه اینطوری:
                کد:
                BYTE0 = 0
                
                BYTE1.B0 = KEY6
                BYTE1.B1 = KEY5
                BYTE1.B2 = KEY4
                BYTE1.B3 = KEY3
                BYTE1.B4 = KEY2
                BYTE1.B5 = KEY1
                BYTE1.B6 = 1
                BYTE1.B7 = 0
                 
                
                BYTE2.B0 = KEY12
                BYTE2.B1 = KEY11
                BYTE2.B2 = KEY10
                BYTE2.B3 = KEY9
                BYTE2.B4 = KEY8
                BYTE2.B5 = KEY7
                BYTE2.B6 = 0
                BYTE2.B7 = 1
                
                
                BYTE3.B0 = KEY6 xor KEY12
                BYTE3.B1 = KEY5 xor KEY11
                BYTE3.B2 = KEY4 xor KEY10
                BYTE3.B3 = KEY3 xor KEY9
                BYTE3.B4 = KEY2 xor KEY8
                BYTE3.B5 = KEY1 xor KEY7
                BYTE3.B6 = 1
                BYTE3.B7 = 1
                توی مثال کد بالا، KEY ها همون ورودیهای هستن که از کلید ها خونده میشن. البته پیش از تشکیل بایتها، باید از صحت اطلاعات خونده شده مطمئن بشین که برای اینکار باید دوبار با یه تاخیر کم مثلا 30 میلی ثانیه کلیدها رو بخونین و اگه مقادیر با هم یکی بودن به عنوان یک قرائت صحیح در نظر بگیرینش، وگرنه دوباره اینکارو تکرار کنین.
                کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                دیدگاه


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

                  [توی مثال کد بالا، KEY ها همون ورودیهای هستن که از کلید ها خونده میشن. البته پیش از تشکیل بایتها، باید از صحت اطلاعات خونده شده مطمئن بشین که برای اینکار باید دوبار با یه تاخیر کم مثلا 30 میلی ثانیه کلیدها رو بخونین و اگه مقادیر با هم یکی بودن به عنوان یک قرائت صحیح در نظر بگیرینش، وگرنه دوباره اینکارو تکرار کنین.
                  [/quote]

                  این بایتهارو به صورت sturacture باید تعریف کنم دیگه؟

                  اضافه شده در تاریخ :
                  دوستان میشه در مورد UNION یا STURACTURE کمک کنید
                  من کد اقای نورسیده را میزنم ERROR
                  Expecting a structure/union میده


                  و اینجوری تعریف کردم
                  [code=c] typedef struct {
                  unsigned char BYTE0;
                  unsigned char BYTE1;
                  unsigned char BYTE2;
                  unsigned char BYTE3;
                  } A,B,C;[/code]

                  دیدگاه


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

                    مگه استراکچر یا یونیون بودنشون مهمه؟

                    شما از بایت میخواین استفاده کنین. بصورت بایت یا کاراکتر تعریفش کنین.
                    12 تا بایت دارین. مثلا از BYTE0 تا BYTE11.
                    بعدشم مقدار دهی و بقیه ماجرا.
                    کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                    دیدگاه


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

                      نوشته اصلی توسط نو رسیده
                      مگه استراکچر یا یونیون بودنشون مهمه؟

                      شما از بایت میخواین استفاده کنین. بصورت بایت یا کاراکتر تعریفش کنین.
                      12 تا بایت دارین. مثلا از BYTE0 تا BYTE11.
                      بعدشم مقدار دهی و بقیه ماجرا.
                      نهمهم نیست اما error میده که union یا sturacture تعریف کن و اینکه BYTE1.B.0 منظورم اینها هست که چطور تعریف کنم کلا متغیرهایی که شما تو دستورتون اوردید

                      دیدگاه


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

                        مثلا توی میکروسی :

                        [code=c]
                        char BYTE0,BYTE1,BYTE2,BYTE3,BYTE4,BYTE5,BYT6,BYTE7,BYT E8,BYTE9,BYTE10,BYTE11;

                        BYTE0 = 0;

                        BYTE1.B0 = KEY6;
                        BYTE1.B1 = KEY5;
                        BYTE1.B2 = KEY4;
                        BYTE1.B3 = KEY3;
                        BYTE1.B4 = KEY2;
                        BYTE1.B5 = KEY1;
                        BYTE1.B6 = 1;
                        BYTE1.B7 = 0;


                        BYTE2.B0 = KEY12;
                        BYTE2.B1 = KEY11;
                        BYTE2.B2 = KEY10;
                        BYTE2.B3 = KEY9;
                        BYTE2.B4 = KEY8;
                        BYTE2.B5 = KEY7;
                        BYTE2.B6 = 0;
                        BYTE2.B7 = 1;


                        BYTE3.B0 = KEY6 ^ KEY12;
                        BYTE3.B1 = KEY5 ^ KEY11;
                        BYTE3.B2 = KEY4 ^ KEY10;
                        BYTE3.B3 = KEY3 ^ KEY9;
                        BYTE3.B4 = KEY2 ^ KEY8;
                        BYTE3.B5 = KEY1 ^ KEY7;
                        BYTE3.B6 = 1;
                        BYTE3.B7 = 1;
                        .
                        .
                        .
                        [/code]
                        کمترین توقع از یک فرد تحصیلکرده، دانستن املای صحیح کلمات است.

                        دیدگاه


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

                          دوست عزیز وقتی از نوع CHAR تعریف میکنم ERRORمیده که از نوعUNIONتعریف کن.من اینجوری تعریف کردم EROR نمیده
                          [code=c]union B{

                          unsigned int B0;
                          unsigned int B1;
                          unsigned int B2;
                          unsigned int B3;
                          unsigned int B4;
                          unsigned int B5;
                          unsigned int B6;
                          unsigned int B7;

                          }BYTE0,BYTE1,BYTE2,BYTE3;[/code]

                          اضافه شده در تاریخ :
                          اما واسه قسمت PUTCHAR به مشکل خوردم
                          [code=c]putchar(BYTE0);
                          putchar(BYTE1.B);
                          putchar(BYTE2.B);
                          putchar(BYTE3.B);[/code]



                          ERROR میده که ELEMENT IS NOT A MEMBER

                          دیدگاه


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

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

                            دیدگاه


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

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

                              دیدگاه

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