ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2018/07/10
    120
    32

    راهنمایی برای راه اندازی keypad با استفاده از ماشین حالت

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


    با تشکر.
  2. #2
    2013/09/23
    34
    2

    پاسخ : راهنمایی برای راه اندازی keypad با استفاده از ماشین حالت

    یه چیزی به ذهنم رسیده امتحان کن ببین به دردت میخوره یا نه البته زیاد وارد نیستم

    مثلا براش تعریف کن اگر کلید ۱ فشرده شد بره به زیر برنامه مخصوص کلید ۱ بعد براش شرط بزار که اگه کلید ۱ هنوز فشرده شده بود فلان عمل رو انجام بده در غیر اینصورت برگرده به برنامه اصلی اینطوری چون توی زیر برنامت حرفی از کلید های دیگه زده نشده حتی اگه یه کلید دیگه ای نویز بگیره هیچ کاری انجام نمیشه
  3. #3
    2018/07/10
    120
    32

    پاسخ : راهنمایی برای راه اندازی keypad با استفاده از ماشین حالت

    با سلام مجدد.
    ببخشید من برای صفحه کلیدی که چهار سطر (D4:0) و پنج ستون (C5:C0) دارد برنامه زیر را با استفاده از ماشین حالت نوشتم. الان مشکلی که دارم اینه که هرجور سعی کردم نتونستم شماره سطری که کلید فشرده شده است را به دست بیارم.
    اگر امکان داره راهنمایی کنید که چه طور این کار را انجام بدم.؟؟؟؟
    البته این رو هم بگم تابع scankey که تا وقتی کلید را نگه داشتیم هیچ واکنشی نشان نمیدهد. و وقتی کلید را رها میکنیم یک پالس به پهنای اون تابع delay ایجاد میکند.
    اون روتین وقفه هم هر 2.5 میلی ثانیه (اگر فرکانس کلاک 16 مگاهرتز باشد.) وقفه میدهد که میزان debounce timer را برای ما تنظیم میکند.

    باز هم ممنون از راهنمایی دوستان.
    /* * scan_keypad_2.c
    *
    * Created: 5/2/2019 9:15:49 PM
    * Author :
    */



    #include <avr/io.h>
    #include <avr/interrupt.h>
    #define F_CPU 16000000UL
    #include <util/delay.h>


    unsigned char debounce_timer;


    unsigned char scankey (void)
    {
    static unsigned char state=0; /* state = 0 ==> release
    state = 1 ==> debounce release2press
    state = 2 ==> press
    state = 3 ==> debounce press2release
    */
    static unsigned char output_keypd;
    unsigned char pin;
    pin = (PINC & 0x1F);

    switch (state)
    {
    case 0:
    if (pin != 0x1F) //pressed one key or noise
    {
    state=1;
    switch (pin)
    {
    case 0x1E:
    output_keypd= 0x01;
    break;
    case 0x1D:
    output_keypd= 0x02;
    break;
    case 0x1B:
    output_keypd= 0x04;
    break;
    case 0x17:
    output_keypd= 0x08;
    break;
    case 0x0F:
    output_keypd= 0x10;
    break;

    }
    debounce_timer=5;
    }
    break;
    case 1:
    if ((pin & 0x1F) == 0x1F)
    {
    state=0;
    }
    else if (debounce_timer == 0)
    {
    state=2;
    }
    break;
    case 2:
    if ((pin & 0x1F) == 0x1F)
    {
    state=3;
    debounce_timer=5;

    }
    break;
    case 3:
    if ((pin & 0x1F) != 0x1F)
    {
    state=2;
    }
    else if (debounce_timer == 0)
    {
    state=0;
    return output_keypd;
    }
    break;
    }
    _delay_us(1);
    return 0;
    }




    int main(void)
    {
    TCCR1A = 0;
    TCCR1B = 0;
    TCNT1 = -20000;
    sei ();
    TIMSK = (1<<TOIE1);
    TCCR1A= 0x00;
    TCCR1B= 0x01; //normal mode , no prescale
    DDRB=0xff;
    DDRD = 0xFF;
    PORTD=0x00;
    PORTB = 0xff;
    while (1)
    {


    }



    }


    ISR (TIMER1_OVF_vect)
    {
    TCCR1B= 0x00; //stop timer1

    if (debounce_timer != 0)
    {
    debounce_timer--;
    }

    TCNT1 = -20000;
    TCCR1B = 0x01; //run timer1 , normal mode , no prescale
    }


    ویرایش توسط saati.sms : 2019/05/03 در ساعت 09:23
  4. #4
    2016/06/21
    298
    84

    پاسخ : راهنمایی برای راه اندازی keypad با استفاده از ماشین حالت

    سلام.
    می تونی از برنامه برای پروژه ایده بگیرد.
    برنامه کیپد 4*4
    #include <mega16.h>  
    #include <delay.h>
    #asm
    .equ __lcd_port=0x1B ;// PORTA
    #endasm
    #include <lcd.h>
    #define c1 PINB.4
    #define c2 PINB.5
    #define c3 PINB.6
    #define c4 PINB.7
    flash char row[]={0xfe,0xfd,0xfb,0xf7};
    flash char data_key[]={
    '1','2','3','A',
    '4','5','6','B',
    '7','8','9','C',
    '*','0','#','D'};
    unsigned char ac,table;
    unsigned int r;
    //________________________________________
    void keypad(){
    lcd_gotoxy(0,1);
    lcd_putsf("~");
    while (1){
    for (r=0;r<4;r++){
    ac=4;
    PORTB=row[r];
    DDRB=0x0f;
    if (c1==0) ac=0;
    if (c2==0) ac=1;
    if (c3==0) ac=2;
    if (c4==0) ac=3;
    if (!(ac==4)){
    table=data_key[(r*4)+ac];
    lcd_putchar(table);
    while (c1==0){}
    while (c2==0){}
    while (c3==0){}
    while (c4==0){}
    delay_ms(50);
    }
    }
    }
    }
    //_________________________________________
    void main(){
    PORTB=0xff;
    DDRB=0x0f;
    lcd_init(16);
    lcd_gotoxy(0,0);
    lcd_putsf("test keypad");
    keypad();
    while(1){
    };
    }

نمایش نتایج: از 1 به 4 از 4

موضوعات مشابه

  1. راهنمایی برای تعمیرآمپلی ماشین
    توسط emparator در انجمن مدارات صوتي
    پاسخ: 47
    آخرين نوشته: 2017/09/02, 23:58
  2. راهنمایی برای مدار تایمر 555 در حالت Astable
    توسط aLimec در انجمن مدارهای آنالوگ و مدارهای مجتمع
    پاسخ: 0
    آخرين نوشته: 2016/04/11, 02:59
  3. راهنمایی برای ساخت آمپ ماشین
    توسط javadnadimi026 در انجمن مدارات صوتي
    پاسخ: 10
    آخرين نوشته: 2014/12/26, 22:00
  4. استفاده از Keypad برای تایپ
    توسط soodi در انجمن میکروکنترلرهای AVR
    پاسخ: 3
    آخرين نوشته: 2011/03/08, 10:26
  5. راهنمایی برای شمارنده میکروکنترولر - در حالت خاموش **فوری**
    توسط nice_bytes2001 در انجمن سایر مطالب مرتبط با ميکرو ها و پروسسورها
    پاسخ: 1
    آخرين نوشته: 2010/10/06, 22:59

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •