اطلاعیه

Collapse
No announcement yet.

اسکن صفحه کلید ماتریسی در codevision

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

    اسکن صفحه کلید ماتریسی در codevision

    ســـلام
    اگه کسی از دوستان می تواند در باره برنامه ای که باعث اسکن صفحه کلید ماتریسی میشه یه برنامه ای برای من اینجا قرار بده و یه توضیحی درباره ش بده من چند تا برنامه تو اینترنت دیدم برام سوال که چرا بعد از اینه 4 تاپین رو ورودی و 4تایه دیگرو خروجی میکنیم مقدار خروجی رو low یا صفر می کنیم ؟؟ خب وقتی صفر بشه چه جوری کد اون کلید معلوم میشه ؟ :sad:
    اگه کسی یه لطف کنه یه توضیحی در رابطه با برنامه اسکن صفحه کلید بده؟
    یه سوال دیگه در باره اینه که چه جوری میشه وقتی مثلا یه کید رو از صفحه کلید نگه داری اون عدد به صورت تکراری شروع یه چاپ در lcd یا 7segment میشه لطفا در رابطه با این قسمت هم یه توضیحی بدین :read:
    :nice:[move][/move]

    #2
    پاسخ : اسکن صفحه کلید ماتریسی در codevision

    سلام
    در مورد اسکن صفحه کلید :
    ما چهار تا پین که سطر یا ستون هستند رو ورودی می کنیم با پول اپ و چهار پین بعدی رو خروجی با مقدار 1. خوب حالا اگه ما از چهار پین خروجی شده یکی رو 0 کنیم در صورت فشار دادن کلیدهای متصل شده به سطر یا ستون، پین متناظرش 0 میشه و با خوندن اون مقدار می فهمیم که کدوم کلید فشار داده شده.
    اگر توضیحات کافی نیست بفرمایید تا با عکس توضیح بدم.

    در مورد تکراری شدن: باید یه تابع تعریف کنی که هر بار که دستت به کلیدی خورد تا برداشتن دستت کاری نکنه مثل گذاشتن یه حلقه while.
    موفق باشید
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : اسکن صفحه کلید ماتریسی در codevision

      با سلام،

      اینجا رو هم ببین :
      http://www.eca.ir/forum2/index.php?topic=65087.0
      مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

      Sh_Nourbakhsh@Yahoo.com

      http://s2.picofile.com/file/7170362468/_Wall_e_.jp

      دیدگاه


        #4
        پاسخ : اسکن صفحه کلید ماتریسی در codevision

        نوشته اصلی توسط سوران آراسته
        سلام
        در مورد اسکن صفحه کلید :
        ما چهار تا پین که سطر یا ستون هستند رو ورودی می کنیم با پول اپ و چهار پین بعدی رو خروجی با مقدار 1. خوب حالا اگه ما از چهار پین خروجی شده یکی رو 0 کنیم در صورت فشار دادن کلیدهای متصل شده به سطر یا ستون، پین متناظرش 0 میشه و با خوندن اون مقدار می فهمیم که کدوم کلید فشار داده شده.
        اگر توضیحات کافی نیست بفرمایید تا با عکس توضیح بدم.

        در مورد تکراری شدن: باید یه تابع تعریف کنی که هر بار که دستت به کلیدی خورد تا برداشتن دستت کاری نکنه مثل گذاشتن یه حلقه while.
        موفق باشید
        ممنون
        ولی خیلی خلاصه توضیح دادی :sad:و من متوجه نشدم :cry2:
        4تا پین رو ورودی و 4 تا دیگه خروجی بعد pull up ورودی ها فعال میشه و خروجی رو یک میکنیم تا اینجا مشکلی نیست
        اما از اینجا به بعد رو بیشتر توضیح بده
        گفتی که یکی از خروجی ها رو صفر می کنیم خب کدم رو فرقی نمیکنه؟ اگه کلید فشار داده شده در اون سطر یا ستون نباشه که پین متناظرش یک میشه نه صفر؟؟
        در ضمن نباید دوباره جایه ستون ها و سطر ها رو به عنوان ورودی و خروجی با هم عوض کرد چون با یک بار که معلوم نمیشه اون کد ماله کدوم سطر یا ستون بوده؟؟
        برای تکراری شدن هم میشه یه مثالی بزنی که مثلا بعد فلان میلی ثانیه که کابر دستش رو رویه کلید فشار میده اون کلید شروع یه تکرار کنه

        دیدگاه


          #5
          پاسخ : اسکن صفحه کلید ماتریسی در codevision

          سلام
          این سخت افزار رو در نظر بگیر

          الگوریتم برنامه به صورت زیر میشه:
          portx0 تا portx3 رو به صورت خروجی تعریف میکنیم و در وضعیت high قرار میدیم
          portx4 تا portx7 رو به صورت ورودی تعریف میکنیم و مقاومت پول اپ داخلی رو هم فعال میکنیم
          و در تابع اسکن صفحه کلید به صورت زیر عمل میکنیم
          portx0 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx0 هست
          portx0 رو به وضعیت high بر میگردونیم
          portx1 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx1 هست
          portx1 رو به وضعیت high بر میگردونیم
          portx2 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx2 هست
          portx2 رو به وضعیت high بر میگردونیم
          portx3 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx3 هست
          portx3 رو به وضعیت high بر میگردونیم
          فکر نکنم دیگه گنگ باشه براتون
          با سپاس

          دیدگاه


            #6
            پاسخ : پاسخ : اسکن صفحه کلید ماتریسی در codevision

            نوشته اصلی توسط علی علی پور ریکنده
            سلام

            الگوریتم برنامه به صورت زیر میشه:
            portx0 تا portx3 رو به صورت خروجی تعریف میکنیم و در وضعیت high قرار میدیم
            portx4 تا portx7 رو به صورت ورودی تعریف میکنیم و مقاومت پول اپ داخلی رو هم فعال میکنیم
            و در تابع اسکن صفحه کلید به صورت زیر عمل میکنیم
            portx0 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx0 هست
            portx0 رو به وضعیت high بر میگردونیم
            portx1 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx1 هست
            portx1 رو به وضعیت high بر میگردونیم
            portx2 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx2 هست
            portx2 رو به وضعیت high بر میگردونیم
            portx3 رو در وضعیت low قرار میدیم و به وضعیت portx4 تا portx7 رو چک میکنیم و اگه پینی در وضعیت low بود کلید مورد کلید بین این پین و portx3 هست
            portx3 رو به وضعیت high بر میگردونیم
            فکر نکنم دیگه گنگ باشه براتون
            با سپاس
            ممنون الگوریتم کار کاملا روشن و واضح هست ولی احتمالا نباید خروجی رو اول صفر و بعد تک تک یک کنیم :surprised:
            وقتی 4تا پین رو ورودی و 4 تا دیگه رو خروجی کردیم نباید اول هر 4تا پین خروجی رو صفر یا low کنیم بعد اونارو تک تک یک یا high کنیم و ببینیم کدوم پین ورودی یک میشه .....طبق حالتی که شما میگین یعنی اول همه پین ها یک و بعد تک تک صفر یشن و مقایسه صورت بگیره که کدوم پین صفر شده بقیه پین ها هم که به صورت ورودی هستن هم مگه صفر نیستن چون حالت پیشفرض مگه صفر نیستش اگر هست که معلوم نمیشه کدومه؟؟؟؟؟؟؟؟؟؟؟
            لطفا توضیح بدیــــــــــــــن که ایا من درســــــــــــــت برداشت کردم یا نــــــــــــــــــــــه
            ممنون و سپاس :applause:

            دیدگاه


              #7
              پاسخ : اسکن صفحه کلید ماتریسی در codevision

              نوشته اصلی توسط impluse
              ممنون الگوریتم کار کاملا روشن و واضح هست ولی احتمالا نباید خروجی رو اول صفر و بعد تک تک یک کنیم :surprised:
              وقتی 4تا پین رو ورودی و 4 تا دیگه رو خروجی کردیم نباید اول هر 4تا پین خروجی رو صفر یا low کنیم بعد اونارو تک تک یک یا high کنیم و ببینیم کدوم پین ورودی یک میشه .....طبق حالتی که شما میگین یعنی اول همه پین ها یک و بعد تک تک صفر یشن و مقایسه صورت بگیره که کدوم پین صفر شده بقیه پین ها هم که به صورت ورودی هستن هم مگه صفر نیستن چون حالت پیشفرض مگه صفر نیستش اگر هست که معلوم نمیشه کدومه؟؟؟؟؟؟؟؟؟؟؟
              لطفا توضیح بدیــــــــــــــن که ایا من درســــــــــــــت برداشت کردم یا نــــــــــــــــــــــه
              ممنون و سپاس :applause:
              سلام
              واسه همین مقاومت پول اپ داخلی رو فعال میکنیم دیگه
              راستی اون قسمت خوندن رو هم به صورت ساده گفتم در عمل باید دی بانسینگ نرم افزاری انجام بدیم.
              با سپاس

              دیدگاه


                #8
                پاسخ : اسکن صفحه کلید ماتریسی در codevision

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

                دیدگاه


                  #9
                  پاسخ : اسکن صفحه کلید ماتریسی در codevision

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

                  دیدگاه


                    #10
                    پاسخ : اسکن صفحه کلید ماتریسی در codevision

                    نوشته اصلی توسط علی علی پور ریکنده
                    سلام
                    نه بابا سوالاتتو که کمه من خودمم عادت دارم رگباری سوال میپرسم
                    مقاومت پول اپ داخلی یه مقاومت 36 کیلو هست که مقدارش یکمی بالاست و من توصیه میکنم یه مقاومت پول اپ خارجی 10 کیلو بزاری
                    کلا مقاومت پول اپ یا پول دون باعث میشن وقتی ورودی به جایی متصل نیست در حالت شناور قرار نگیره و در اثر میدان های الکترومغناطیسی محیط تغییر وضعیت ندن
                    البته فقط جایی به این مقاومت ها نیاز هست که مقاومت خروجی چیزی که به این پین ها وصل میشه زیاد باشه
                    مثلا همین کلید که در حالت قطع مقاومت خروجیش در حد چند مگا اهم هست ...
                    با سپاس
                    :applause:
                    خب ببین تو این صفحه کلید وقتی ورودی به جایی وصل نیست وکلید مربوط به ردیف اون پین زده نشده رجیستر pin چی میشه
                    یه سوال دیگه :wow:
                    وقتی 4تا پین مربوط به یه پورت ورودی و 4 تا دیگه خروجی میشن 4 بیت متناظر با 4پین خروجی تو رجیستری PIN وضعیتشون چیه ؟؟؟ آیا صفر هست یا نه

                    دیدگاه


                      #11
                      پاسخ : اسکن صفحه کلید ماتریسی در codevision

                      نوشته اصلی توسط impluse
                      :applause:
                      خب ببین تو این صفحه کلید وقتی ورودی به جایی وصل نیست وکلید مربوط به ردیف اون پین زده نشده رجیستر pin چی میشه
                      یه سوال دیگه :wow:
                      وقتی 4تا پین مربوط به یه پورت ورودی و 4 تا دیگه خروجی میشن 4 بیت متناظر با 4پین خروجی تو رجیستری PIN وضعیتشون چیه ؟؟؟ آیا صفر هست یا نه
                      در مورد سوال اول اگه مقاومت پول اپ داخلی فعال باشه مقدار 1 در ریجیستر pin قرار خواهد داشت
                      در مورد سوال دوم اگه پینی به صورت خروجی تعریف بشه هم همانند دیگر پین ها وضعیت فعلیش در ریجیستر PIN قرار میگیره
                      با سپاس

                      دیدگاه


                        #12
                        پاسخ : پاسخ : اسکن صفحه کلید ماتریسی در codevision

                        نوشته اصلی توسط علی علی پور ریکنده
                        در مورد سوال اول اگه مقاومت پول اپ داخلی فعال باشه مقدار 1 در ریجیستر pin قرار خواهد داشت
                        در مورد سوال دوم اگه پینی به صورت خروجی تعریف بشه هم همانند دیگر پین ها وضعیت فعلیش در ریجیستر PIN قرار میگیره
                        با سپاس
                        این قسمت که میگی وضعیت فعلیش در PIN ریخته میشه یعنی تو حالت خروجی همانند PORT عمل میکنه
                        شرمنده :sad:یه سوال دیگه این دیگه آخریش
                        برنامه ای که بخوایم با زدن یک کلید و نگه داشتن او برای چند ثانیه عدد متناظر اون کلید بعد از چند میلی ثانیه به صورت پشت سر هم تکرار بشه چه داخل 7segment یا lcd چه جوری میشه نوشت با استفاده از حلقه باید نوشت

                        دیدگاه


                          #13
                          پاسخ : اسکن صفحه کلید ماتریسی در codevision

                          یعنی اگه مثلا پین b.3 رو به صورت خروجی تعریف کنی و مثلا برابر یک قرار بدی در بیت متناظرش توی ریجیستر PIN یک نوشته میشه
                          کلا ریجیستر PIN وضعیت فعلی پورت مورد نظر رو بهت میده حالا میخواد ورودی باشه یا خروجی ...
                          بعد از تشخیص فشار داده شدن کلید یک شمارنده رو فعال میکنی (مثلا یک تایمر یا یک حلقه ...)
                          و در مقادیر مشخصی از شمارنده وضعیت کلید مورد نظر رو چک میکنی(مثلا در روتین وقفه اور فلو تایمر یا در مقدایر خاصی از شمارنده حلقه ..) که اگه هنوز فعال بود یک بار دیگه عدد مورد نظر رو در lcd درج میکنی...
                          با سپاس

                          دیدگاه

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