اطلاعیه

Collapse
No announcement yet.

اتصال KEYPAD 4*4 به میکرو با یه سیم

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

    #16
    پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

    اینم مدار کامل:



    مقدار مقاومتها رو هم بگین.
    ممنون.
    اگر چیزی را می دانید در اختیار کسی که نمی داند و می پرسد قرار بدهید.نترسید که اگر به او بگویید بیشتر از شما خواهد دانست.چراکه دیر یا زود از کس دیگری خواهد پرسید.پس نام نیکوی یاد دهنده دانش به او را از آن خود کنید.

    پارسی را پاس داریم

    دیدگاه


      #17
      پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

      نوشته اصلی توسط مجید نصراله زاده


      به چه زبانی ؟
      فقط بیسکام :redface: :nice:

      دیدگاه


        #18
        پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

        یه برنامه نصفه کاره هست تو اون تایپیک قبلیتون گذاشتم ببینید جواب میده یا نه

        شما Interval هاتون رو خیلی نزدیک به هم انتخاب کردید و از اونجاییکه تلورانس مقاومت ها در شرایطی تغییر میکنه؛ این اتفاق میوفته یعنی تداخل Interval ها ..

        به نظر شما مقاومتا رو چه رنجایی انتخاب کنم . هر رنجی انتخاب میکنم نزدیکه هم میشه....

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

        دیدگاه


          #19
          پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

          سلام ....................

          برنامه ی این مدار و نوشتم .. شما خودتون کاملش کنید .. توضیحاتش هم توی فابل هست .. در مور انتخاب مقاومت ها هم همونطور که جناب majid.4206 فرمودن دست خودتونه .. من با این مدار هیچوقت کار نکردن چرا که از نظر فنی زیاد نمیتونم بهش اعتماد کنم ..! برای همین در انتخاب نوع مقاومت ها نمیتونم نظر بدم .. فقط میشه برای مقادیر دیجیتال وزن در نظر گرفت و اونهارو در ضرایبی ضرب کرد که اختلاف interval ها زیاد بشه .. مثل کاری که توی بسط های سیگنال انجام میشه .. به هرحال .. برنامه رو با سخت افزار چک کنید ببینید جواب چطور میشه؟ (با پروتئوس کسی جواب گرفته؟) موفق باشید ..
          فایل های پیوست شده
          دوستان! مدتی کمتر به سایت میام ..

          دیدگاه


            #20
            پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

            :redface: :sad: :sad:

            بلد نیستم خوب!!!

            همون فایلی رو که دادین تو کد ویژن کامپایل کردم Hex کردم تو پروتئوس خروجی نمیده. :sad:
            اگر چیزی را می دانید در اختیار کسی که نمی داند و می پرسد قرار بدهید.نترسید که اگر به او بگویید بیشتر از شما خواهد دانست.چراکه دیر یا زود از کس دیگری خواهد پرسید.پس نام نیکوی یاد دهنده دانش به او را از آن خود کنید.

            پارسی را پاس داریم

            دیدگاه


              #21
              پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

              همون فایلی رو که دادین تو کد ویژن کامپایل کردم Hex کردم تو پروتئوس خروجی نمیده.
              ببین دوست عزیز منم تو پروتئوس چک کردم جواب نمیده باید مدارو عملی ببندی

              در ضمن شما باید 8 تا مقاومت با رنجای مختلف به سطرو ستون وصل کنی هر جوری که خواستی 1k ,2.2k 4.7k10.... دسته خودتونه ولی همون جور که قبلا هم گفتم حتما باید محاسبه بشن
              موفق باشید
              ذکات علم یاد دادنه ....

              دیدگاه


                #22
                پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

                خوب دوستان

                بالاخره جواب داد !!!

                نکته مهم اینه که Keypad پروتئوس برای این منظور جواب نمیده !!! باید کلید بچینید . اینطوری



                مقاومتها هم همونطوری که میبینید انتخاب کردم ( مقاومت 10 کیلو که زمین شده فراموش نشود )



                بعد با این برنامه مقادیر ADC برای هر کلید را خواندم

                $regfile = "M16def.dat"
                $crystal = 8000000

                $hwstack = 32 ' default use 32 for the hardware stack

                $swstack = 10 ' default use 10 for the SW stack

                $framesize = 40 ' default use 40 for the frame space


                Config Lcd = 16 * 2
                Config Lcdpin = Pin , Db4 = Portd.2 , Db5 = Portd.5 , Db6 = Portd.6 , Db7_
                = Portd.7 , E = Portd.3 , Rs = Portd.1

                Config Lcdbus = 4
                Config Adc = Single , Prescaler = Auto , Reference = Avcc

                Dim Adcval As Word

                Do
                Start Adc
                Waitms 50
                Adcval = Getadc(0)
                Stop Adc

                Cls
                Lcd Adcval
                Loop

                نتیجه این شد



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



                و برنامه را تغییر می دهیم

                $regfile = "M16def.dat"
                $crystal = 8000000

                $hwstack = 32 ' default use 32 for the hardware stack

                $swstack = 10 ' default use 10 for the SW stack

                $framesize = 40 ' default use 40 for the frame space


                Config Lcd = 16 * 2
                Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7_
                = Portd.7 , E = Portd.3 , Rs = Portd.1
                Config Lcdbus = 4
                Config Adc = Single , Prescaler = Auto , Reference = Avcc

                Dim Adcval As Word

                Do
                Start Adc
                Waitms 50
                Adcval = Getadc(0)
                Stop Adc
                Select Case Adcval

                Case Is < 294 : Cls
                Case 662 To 704 : Lcd "1"
                Case 621 To 661 : Lcd "4"
                Case 570 To 620 : Lcd "7"
                Case 525 To 569 : Lcd "*"

                Case 500 To 524 : Lcd "2"
                Case 477 To 499 : Lcd "5"
                Case 446 To 476 : Lcd "8"
                Case 408 To 445 : Lcd "0"

                Case 336 To 347 : Lcd "3"
                Case 325 To 335 : Lcd "6"
                Case 310 To 324 : Lcd "9"
                Case 294 To 309 : Lcd "#"

                End Select


                Loop





                دوستان توجه داشته باشید که باتوجه به مقاومت Keypad و مقاومتهایی که انتخاب میکنید ، قطعا مقادیر ADC شما با بنده متفاوت خواهد بود و همانطور که جناب حسام الدین فرمودند ، ممکن است در بعضی از موارد ، قابل اعتماد نباشد ( گرچه با روش میانگین گیری این مسئله تا حدود خیلی زیادی بر طرف می شود)

                در ضمن در عمل لازم است یک تاخیر 15 میلی ثانیه ای برای حذف اثر لرزش کلید ها ( Debounce ) برای خواندن ADC در نظر بگیریم.

                سوالی داشتید در خدمتم.

                این هم کل پروژه به همراه برنامه پروتئوس ، بیسیک و عکسها



                فایل های پیوست شده

                دیدگاه


                  #23
                  پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

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

                  پارسی را پاس داریم

                  دیدگاه


                    #24
                    پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

                    میشه به C تو کد ویژن بنویسین؟! :redface:
                    اگر چیزی را می دانید در اختیار کسی که نمی داند و می پرسد قرار بدهید.نترسید که اگر به او بگویید بیشتر از شما خواهد دانست.چراکه دیر یا زود از کس دیگری خواهد پرسید.پس نام نیکوی یاد دهنده دانش به او را از آن خود کنید.

                    پارسی را پاس داریم

                    دیدگاه


                      #25
                      پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

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

                      #include <mega16.h>

                      // Alphanumeric LCD Module functions
                      #asm
                      .equ __lcd_port=0x15 ;PORTC
                      #endasm
                      #include <lcd.h>

                      #define ADC_VREF_TYPE 0x40

                      // Read the AD conversion result
                      unsigned int read_adc(unsigned char adc_input)
                      {
                      ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
                      // Start the AD conversion
                      ADCSRA|=0x40;
                      // Wait for the AD conversion to complete
                      while ((ADCSRA & 0x10)==0);
                      ADCSRA|=0x10;
                      return ADCW;
                      }

                      // Declare your global variables here
                      int key;
                      void main (void)
                      {


                      // ADC initialization
                      // ADC Clock frequency: 125.000 kHz
                      // ADC Voltage Reference: AVCC pin
                      // ADC Auto Trigger Source: None
                      ADMUX=ADC_VREF_TYPE & 0xff;
                      ADCSRA=0x87;
                      // LCD module initialization
                      lcd_init(16);

                      while (1)
                      {
                      // Place your code here

                      key=read_adc(0);
                      key=key*5/1024;

                      if ((key>0.80) && (key<0.99))
                      {
                      lcd_clear();
                      lcd_putsf("0"
                      }

                      else if (key>1.10 && key<1.24)
                      {
                      lcd_clear();
                      lcd_putsf("1"
                      }

                      else if (key>1.85 && key<2.18)
                      {
                      lcd_clear();
                      lcd_putsf("2"
                      }

                      ذکات علم یاد دادنه ....

                      دیدگاه


                        #26
                        پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

                        سلام.
                        برنامه ایشون هیچ مشکلی نداره کاملا کارمو راه انداخت دستشونم درد نکنه.
                        اما هدفم آشنایی با C و کدویژن هست که اگه برنامه کاملو داشته باشم روش مطالعه می کنم.
                        دست شما هم درد نکنه من دارم مطالعه می کنم کد شما و ایشون رو.
                        اگر چیزی را می دانید در اختیار کسی که نمی داند و می پرسد قرار بدهید.نترسید که اگر به او بگویید بیشتر از شما خواهد دانست.چراکه دیر یا زود از کس دیگری خواهد پرسید.پس نام نیکوی یاد دهنده دانش به او را از آن خود کنید.

                        پارسی را پاس داریم

                        دیدگاه


                          #27
                          پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

                          دست شما هم درد نکنه من دارم مطالعه می کنم کد شما و ایشون رو
                          خواهش میکنم خوشحا ل میشم بتونم کمکتون کنم
                          یا علی
                          ذکات علم یاد دادنه ....

                          دیدگاه


                            #28
                            پاسخ : اتصال KEYPAD 4*4 به میکرو با یه سیم

                            اعدادی که این مقاومت ها می دن خیلی نزدیک به همه

                            مثلا 0.03 ولت رو می تونی بدون خطا اندازه گیری کنی



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

                            دیدگاه

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