اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام من برنامه ی زیر رو با mega8 انجام میدم مثل ساعت سوییسی کار می کنه اما با mega32 چینی میزنه!!!! :NO:
    احتمال میدم از فرکانس باشه نظر شما؟؟؟؟؟
    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , _
    Db7 = Portb.7 , Rs = Portb.2 , E = Portb.3
    Config Portb = Output
    Config Porta = Input
    Config Kbd = Porta , Debounce = 50 , Delay = 10
    Dim A As Byte
    Do
    A = Getkbd()
    Waitms 10
    A = Lookup(a , Mb)
    If A < 16 Then
    Select Case A
    Case 0 To 9:
    Cls
    Lcd A
    Case 10:
    Cls
    Deflcdchar 0 , 32 , 4 , 32 , 31 , 32 , 4 , 32 , 32 ' replace ? with number (0-7)
    Locate 1 , 1
    Lcd Chr(0)
    Case 11:
    Cls
    Deflcdchar 1 , 17 , 10 , 4 , 10 , 17 , 32 , 32 , 32 ' replace ? with number (0-7)
    Home
    Lcd Chr(1)
    Case 12:
    Cls
    Lcd "_"
    Case 13:
    Cls
    Lcd ""
    Case 14:
    Cls
    Lcd "="
    Case 15:
    Cls
    Lcd "+"
    End Select
    End If
    A = 0
    Loop
    End

    Mb:

    Data 7 , 8 , 9 , 10 , 4 , 5 , 6 , 11 , 1 , 2 , 3 , 12 , 13 , 0 , 14 , 15

    البته اینم بگم هر ردیف رو فقط یه عدد میخونه!!!!
    اینم شماتیک:
    http://www.4shared.com/file/257528573/486e57d6/keypad.html
    بزرگترین گناه ترس است

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

    چرا خودتو گیج -و- میج می کنی.
    AVR زبانه ساده یی هست اگه این توری می خوای بنویسی برو Code vison کار کن.

    اطمینان داری این برنامت erorr نمیده :biggrin:
    case 11: cls
    cls باید روبرو باشه و erorr نمیده و هک هم میکنهprogram ولی گیر میکنه در عمل.

    اینو نگاه


    $regfile = "8515def.dat"
    $crystal = 12000000
    $sim
    Cls : Cursor Off
    '--------------------------------------Config-----------------------------------
    Config Kbd = Portc , Debounce = 50 , Delay = 15
    Config Lcdpin = Pin , Db7 = Porta.5 , Db6 = Porta.4 , Db5 = Porta.3 , Db4 = Porta.2 , E = Porta.1 , Rs = Porta.0
    Config Lcd = 16 * 2
    '---------------------------------------Dim-------------------------------------
    Dim A As Integer , B As Integer , C As Integer , D As Integer
    Dim E As Integer , F As Integer , G As Integer , H As Integer
    Dim I As Integer , J As Integer , K As Integer , Code As Integer
    Code = 0000 : B = 0 : C = 0 : D = 0 : E = 0 : F = 0 : G = 0 : H = 0 : K = 0
    '----------------------------------------FOR-------------------------------------
    Cls : Locate 1 , 16 : Lcd "Welcome"
    For A = 1 To 22
    Shiftlcd Left : Waitms 10
    Next A
    '---------------------------------------START-----------------------------------
    Start:
    Cls : Lcd "SET Pass F1" : Locate 2 , 1 : Lcd "CHG Pass F2"
    Startt:
    B = Getkbd()
    If B = 0 Then Goto Set
    If B = 1 Then Goto Chg
    Goto Startt


    Set:
    Cls : Lcd "Plz Insert Pass" : Locate 2 , 2 : Lcd "- _ _ _"
    Gosub Kbd
    E = B * 1000 : Locate 2 , 2 : Lcd "* - _ _"
    Gosub Kbd
    F = B * 100 : Locate 2 , 2 : Lcd "* * - _"
    Gosub Kbd
    G = B * 10 : Locate 2 , 2 : Lcd "* * * -"
    Gosub Kbd
    H = B * 1 : Locate 2 , 2 : Lcd "* * * *"
    K = E + F : J = G + H : K = J + K : Delay 'k

    If Code = K Then Goto Yes
    Goto No
    '------------------------------------YES NO------------------------------------
    Yes:
    Cls : Locate 2 , 3 : Lcd "Sock----Pass" : Waitms 170
    Goto Start

    No:
    Incr C : If C = 3 Then Goto Werning
    Cls : Locate 1 , 2 : Lcd "Mistake--Code" : Waitms 100
    Goto Set

    Werning:
    Cls : Locate 1 , 1 : Lcd "...System OFF..."
    Locate 2 , 1 : Lcd " - Not Enable -"
    '-------------------------------------CHG Pass----------------------------------
    Chg:
    Cls : Lcd "Insert Old Pass" : Locate 2 , 2 : Lcd "- _ _ _"
    Gosub Kbd
    E = B * 1000 : Locate 2 , 2 : Lcd "* - _ _"
    Gosub Kbd
    F = B * 100 : Locate 2 , 2 : Lcd "* * - _"
    Gosub Kbd
    G = B * 10 : Locate 2 , 2 : Lcd "* * * -"
    Gosub Kbd
    H = B * 1 : Locate 2 , 2 : Lcd "* * * *"
    K = E + F : J = G + H : K = J + K 'k

    If K = A Then Goto Chg2
    Cls : Locate 1 , 2 : Lcd "Mistake--Code" : Waitms 80 : Goto Start

    Chg2:

    Cls : Lcd "Insert New Pass" : Locate 2 , 2 : Lcd "- _ _ _"
    Gosub Kbd
    E = B * 1000 : Locate 2 , 2 : Lcd "* - _ _"
    Gosub Kbd
    F = B * 100 : Locate 2 , 2 : Lcd "* * - _"
    Gosub Kbd
    G = B * 10 : Locate 2 , 2 : Lcd "* * * -"
    Gosub Kbd
    H = B * 1 : Locate 2 , 2 : Lcd "* * * *"
    K = E + F : J = G + H : A = J + K 'k
    Cls : Locate 1 , 2 : Lcd "Cheng Password" : Waitms 80 : Goto Start
    '----------------------------------------KBD------------------------------------
    Kbd:
    B = Getkbd()
    Select Case B
    Case 0 : B = 1
    Case 1 : B = 2
    Case 2 : B = 3
    Case 4 : B = 4
    Case 5 : B = 5
    Case 6 : B = 6
    Case 8 : B = 7
    Case 9 : B = 8
    Case 10 : B = 9
    Case 13 : B = 0
    Case Else : Goto Kbd
    End Select : Return



    این سبک نوشتن برنامه هست تو بسکام. یه Codr pass ساده هستش و کار هم میکنه دایی

    عیب کار اینجاست که من آنچه هستم را با آنچه باید باشم اشتباه می کنم،خیال می کنم آنچه باید باشم هستم،در حالیکه آنچه هستم نباید باشم.

    دیدگاه


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

      می تونی اولش regfile = "8515def.dat" : $crystal = 12000000 : $sim بزاری تو شبیح ساز خوده بسکام تست کنی
      عیب کار اینجاست که من آنچه هستم را با آنچه باید باشم اشتباه می کنم،خیال می کنم آنچه باید باشم هستم،در حالیکه آنچه هستم نباید باشم.

      دیدگاه


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

        آهان ایول گرفتم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!
        فکر کنم ایراد از منه که سوالم نا مفهومه!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        بزرگترین گناه ترس است

        دیدگاه


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

          تشکر لازم نیست باید اعدام شوی :biggrin:
          عیب کار اینجاست که من آنچه هستم را با آنچه باید باشم اشتباه می کنم،خیال می کنم آنچه باید باشم هستم،در حالیکه آنچه هستم نباید باشم.

          دیدگاه


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

            سلام. من یک مشکلی با کیپد 4*4 پیدا کردم. برنامه ام تو شبیه ساز پروتئوس کار می کند. وقتی می بندمش هم همه اعداد کار میکنند به غیر از ستون اول! که اعداد رو جابجا نشون میده! مثلا کلید 1 رو میزنم 4 نشون میده!
            با تست دیود هم چک کردم و همه اتصالاتم درسته! به نظرتون مشکل از کجاست؟
            کد:
            #include <mega16.h>
            #include <delay.h>
            // Alphanumeric LCD Module functions
            #include <alcd.h>
            #include <stdio.h>
            char key=00;         
            char s_key[];
             char i=0;
             char a=0;
             char b=0;
             char c=0;
             int num=0;
            // Declare your global variables here
            
            void main(void)
            {
            // Declare your local variables here
            
            // Input/Output Ports initialization
            // Port A initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out 
            // State7=T State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 
            PORTA=0x00;
            DDRA=0xFF;
            
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTB=0x00;
            DDRB=0x00;
            
            // Port C initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTC=0x00;
            DDRC=0x00;
            
            // Port D initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTD=0x00;
            DDRD=0x00;
            
            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            // Mode: Normal top=0xFF
            // OC0 output: Disconnected
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=0x00;
            
            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: Timer1 Stopped
            // Mode: Normal top=0xFFFF
            // OC1A output: Discon.
            // OC1B output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer1 Overflow Interrupt: Off
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            TCCR1A=0x00;
            TCCR1B=0x00;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;
            
            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer2 Stopped
            // Mode: Normal top=0xFF
            // OC2 output: Disconnected
            ASSR=0x00;
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;
            
            // External Interrupt(s) initialization
            // INT0: Off
            // INT1: Off
            // INT2: Off
            MCUCR=0x00;
            MCUCSR=0x00;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;
            
            // USART initialization
            // USART disabled
            UCSRB=0x00;
            
            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;
            
            // ADC initialization
            // ADC disabled
            ADCSRA=0x00;
            
            // SPI initialization
            // SPI disabled
            SPCR=0x00;
            
            // TWI initialization
            // TWI disabled
            TWCR=0x00;
            
            // Alphanumeric LCD initialization
            // Connections specified in the
            // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
            // RS - PORTC Bit 5
            // RD - PORTC Bit 4
            // EN - PORTC Bit 3
            // D4 - PORTC Bit 2
            // D5 - PORTC Bit 1
            // D6 - PORTC Bit 0
            // D7 - PORTD Bit 7
            // Characters/line: 16
            lcd_init(16);
            
            while (1)
               {
             PORTB=0xff;
             PORTA=0b11111110;
             
             if(PINB.3==0){
             key=1;
             i++;}
             if(PINB.1==0){
             key=2;
             i++;}
             if(PINB.2==0){
             key=3;
             i++;} 
             delay_ms(5); 
            //*********************************
             
             PORTA=0b11111101;
             if(PINB.3==0){
             key=4;
             i++;}
             if(PINB.1==0){
             key=5;  
             i++;}
             if(PINB.2==0){
             key=6;
             i++;}  
              delay_ms(5);
             
            //*********************************
            
             PORTA=0b11111011;
             
             if(PINB.3==0){
             key=7;
             i++;}
             if(PINB.1==0){
             key=8;  
             i++;}
             if(PINB.2==0){
             key=9;   
             i++;}  
             delay_ms(5); 
            //*********************************
            
             PORTA=0b11110111;
             
             if(PINB.3==0){
             key=10;
             i++;}
             if(PINB.1==0){
             key=0; 
             i++;}
             if(PINB.2==0){
             key=11; 
             i++;} 
             delay_ms(5);
             //***********************************
             if(i>3){
              i=1; 
              b=0;
              c=0;}
                  
             if(i==1) {
             a=key; 
             num=a;}
             if(i==2){
             b=key; 
             num=a*10+b;}
             if(i==3){
             c=key;
             num=a*100+b*10+c;} 
             
             if(key==11){ 
             num=0;
             i=0; 
             a=0;
             b=0;
             c=0;}
            
            
                lcd_clear(); 
                sprintf(s_key,"key:%d,i=%d",num,i);
                lcd_puts(s_key);
                //delay_ms(100);  
               } 
               }

            دیدگاه


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

              کسی نیست کمک کنه؟ :cry:

              دیدگاه


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

                نوشته اصلی توسط AvrProgrammer
                کسی نیست کمک کنه؟ :cry:
                مهندس من یه پروژه کپی همین ا کد ویژن نوشتم و تو سایتمه خاستی بگو تا... عملیش رو هم کار کردم >>>به قول چیز مدارکش هم موجوده( :icon_razz تو پارات

                یه نکته مثلا اونجایی که کلید 1 میزنی و 4 نشون میده برو تو کد های پروژت و اون کدی که باهاش برنامه میفهمه رو کلید 1 کلیک شده >> به جای این که مقدار 1 رو بفرسته بیاد و مقدار 4 رو بفرسته (return 1 >>>>>>>>>>> return 4) و برعکس برو اونجایی که برنامه میفهمه رو کلید4 کلیک شده >> به جای این که مقدار 4 رو بفرسته بیاد و مقدار 1 رو بفرسته (return 4 >>>>>>>>>>> return 1) >> وهمینطوری برای سایر کلید ها>>>> افتاد دو هزاریت؟؟؟؟
                اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                اگه دوس دارید سریع به جواب برسید :
                1) قبل از پرسیدن سوال، بسرچید.
                2) سوالاتون رو با جزئیات کامل مطرح کنید.

                دیدگاه


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

                  نوشته اصلی توسط AvrProgrammer
                  کسی نیست کمک کنه؟ :cry:


                  پیشنهاد می کنم سرچتون رو قوی کنید!
                  :icon_razz: :icon_razz: :icon_razz: :icon_razz: :icon_razz:شوخی کردم>>> این پروژه تو اینترنت بود که رفیق من :redface:
                  اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                  اگه دوس دارید سریع به جواب برسید :
                  1) قبل از پرسیدن سوال، بسرچید.
                  2) سوالاتون رو با جزئیات کامل مطرح کنید.

                  دیدگاه


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

                    نوشته اصلی توسط md3848


                    :icon_razz: :icon_razz: :icon_razz: :icon_razz: :icon_razz:شوخی کردم>>> این پروژه تو اینترنت بود که رفیق من :redface:
                    منم از تو اینترنت برداشتم! مشکل اینجاست که تو عمل درست کار نمی کنه!

                    دیدگاه


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

                      نوشته اصلی توسط md3848
                      مهندس من یه پروژه کپی همین ا کد ویژن نوشتم و تو سایتمه خاستی بگو تا... عملیش رو هم کار کردم >>>به قول چیز مدارکش هم موجوده( :icon_razz تو پارات

                      یه نکته مثلا اونجایی که کلید 1 میزنی و 4 نشون میده برو تو کد های پروژت و اون کدی که باهاش برنامه میفهمه رو کلید 1 کلیک شده >> به جای این که مقدار 1 رو بفرسته بیاد و مقدار 4 رو بفرسته (return 1 >>>>>>>>>>> return 4) و برعکس برو اونجایی که برنامه میفهمه رو کلید4 کلیک شده >> به جای این که مقدار 4 رو بفرسته بیاد و مقدار 1 رو بفرسته (return 4 >>>>>>>>>>> return 1) >> وهمینطوری برای سایر کلید ها>>>> افتاد دو هزاریت؟؟؟؟
                      خب این که میشه پاک کردن صورت مسئله!!! oo:
                      من از اون برنامه ایی که return داره استفاده نکردم! یه نگاهی بی زحمت به کد بکنید.

                      دیدگاه


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

                        نوشته اصلی توسط AvrProgrammer
                        خب این که میشه پاک کردن صورت مسئله!!! oo:
                        من از اون برنامه ایی که return داره استفاده نکردم! یه نگاهی بی زحمت به کد بکنید.

                        گیر میدیا... :angry:
                        حالا یا RETURN یا key

                        معلومه مشکل از نحوه وصل کردن کیپد هستش...
                        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                        اگه دوس دارید سریع به جواب برسید :
                        1) قبل از پرسیدن سوال، بسرچید.
                        2) سوالاتون رو با جزئیات کامل مطرح کنید.

                        دیدگاه


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

                          نوشته اصلی توسط md3848

                          گیر میدیا... :angry:
                          حالا یا RETURN یا key

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

                          دیدگاه


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

                            نوشته اصلی توسط AvrProgrammer
                            عین پروتئوسش بستم. اتصالات رو چند بار چک کردم! حتی با تست دیود! کاملا روی پایه های مورد نظر بوق میزنه!
                            اگر مشکل اتصالات بود باید اعداد دیگه هم کار نمی کرد! خودشم خراب نیست چون با تست دیود جواب میده!
                            شما چیزی در مورد مقاومت پول پ و پول دان شنیدی؟
                            میگم خودم پروژش رو بستم.... oo:
                            مقاومت برا کیپد گزاشتی حتما دیگه...
                            اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

                            اگه دوس دارید سریع به جواب برسید :
                            1) قبل از پرسیدن سوال، بسرچید.
                            2) سوالاتون رو با جزئیات کامل مطرح کنید.

                            دیدگاه


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

                              نوشته اصلی توسط md3848
                              میگم خودم پروژش رو بستم.... oo:
                              مقاومت برا کیپد گزاشتی حتما دیگه...
                              میگم عین پروتئوسش بستم!!! نذاشتم دیگه! میگم نکنه باید بذاریم؟

                              دیدگاه

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