نمایش نتایج 1 تا 6 از 6

نام تاپیک: اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت

  1. #1

    Question اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت

    با سلام
    برنامه زیر صفحه کلید 4*4 همراه با سون سگمت هست که بخش هایی که به رنگ قرمز هست رو خودم به برنامه اضافه کردم البته طبق گفته های استاد برای کار کردن سون سگمنت برنامه
    که البته کار هم نمیکنه
    میشه اشکال برنامه رو بگیرید
    ممنون از همکاریتون
    #include<mega16.h>
    #include<delay.h>
    #define maxkeys 16
    unsigned char key,butnum;
    flash unsigned char keytb1[16]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xb d,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};
    void main(void)
    {
    DDRB=0xFF;
    PORTB=0xFF;

    while(1)
    {
    DDRC=0x0F;
    PORTC=0xF0;
    delay_us(5);
    key=PINC;
    DDRC=0xF0;
    PORTC=0x0F;
    delay_us(5);
    key=key|PINC;

    if(PINC.0==1&&PINC.4==1)
    {
    butnum=1;
    }
    if(PINC.0==1&&PINC.5==1)
    {
    butnum=1;
    }
    if(PINC.0==1&&PINC.6==1)
    {
    butnum=1;
    }
    if(PINC.0==1&&PINC.7==1)
    {
    butnum=1;
    }
    if(PINC.1==1&&PINC.4==1)
    {
    butnum=1;
    }
    if(PINC.1==1&&PINC.5==1)
    {
    butnum=1;
    }
    if(PINC.1==1&&PINC.6==1)
    {
    butnum=1;
    }
    if(PINC.1==1&&PINC.7==1)
    {
    butnum=1;
    }
    if(PINC.2==1&&PINC.4==1)
    {
    butnum=1;
    }
    if(PINC.2==1&&PINC.5==1)
    {
    butnum=1;
    }
    if(PINC.2==1&&PINC.6==1)
    {
    butnum=1;
    }
    if(PINC.2==1&&PINC.7==1)
    {
    butnum=1;
    }
    if(PINC.3==1&&PINC.4==1)
    {
    butnum=1;
    }
    if(PINC.3==1&&PINC.5==1)
    {
    butnum=1;
    }
    if(PINC.3==1&&PINC.6==1)
    {
    butnum=1;
    }
    if(PINC.3==1&&PINC.7==1)
    {
    butnum=1;
    }

    if(key|=0xFF)
    {
    for(butnum=0;butnum<maxkeys;butnum++)
    {
    if(keytb1[butnum]==key)

    break;
    }
    if(butnum==maxkeys) butnum=0;
    else butnum++;
    }
    else butnum=0;
    PORTB=~butnum;

    }
    }


  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1392
    پست
    41

    نقل قول: اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت

    من از برنامتون خیلی سر در نیاوردم اما شما همه جا متغیر butnum رو 1 کردین که ظاهرا اشتباهه.

    موفق باشید.

  3. #3

    نقل قول: اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت

    نقل قول نوشته شده توسط amir_mhdi مشاهده تاپیک
    من از برنامتون خیلی سر در نیاوردم اما شما همه جا متغیر butnum رو 1 کردین که ظاهرا اشتباهه.

    موفق باشید.
    بله
    خودم در دقیقه نود فهمیدم اشکال کارم چیه
    باید یه متغیر دیگه در نظر میگرفتم و اون رو در حلقه هایی که ایجاد کردم قرار میدادم و در اخر اون رو به پورت B میفرستادم
    در حلقه ها هم با توجه به اینکه حلقه مال کدوم کلید بود مقدار اون کلید رو میفرستادم براش

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

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1392
    محل زندگی
    تهران
    پست
    94

    نقل قول: اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت

    به نظرم خیلی سخت نوشتید برنامتونو
    راه های خیلی راحت تری هم برای پیمایش کی پد هست
    من خودم از این روش اعداد رو سون سگمنت نمایش میدم


    k=4;
    for(i=0;i<4;i++)
    {
    PORTB=row[i];
    if(i==3)
    {
    if(PINB.4==0)
    {
    while(PINB.4==0)
    {
    }
    count=1;
    k=0;
    }
    else
    {
    while(PINB.5==0)
    {
    num=0;
    k=0;
    }
    }
    }
    else
    {
    while(PINB.4==0)
    {
    k=1;
    num=i*3+k;
    PORTA=table[num];
    }
    while(PINB.5==0)
    {
    k=2;
    num=i*3+k;
    PORTA=table[num];
    }
    while(PINB.6==0)
    {
    k=3;
    num=i*3+k;
    PORTA=table[num];
    }
    }


  5. #5

    نقل قول: اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت میشه لطفا همین برنام رو به زبان بیسیک د

    نقل قول نوشته شده توسط god of war مشاهده تاپیک
    به نظرم خیلی سخت نوشتید برنامتونو
    راه های خیلی راحت تری هم برای پیمایش کی پد هست
    من خودم از این روش اعداد رو سون سگمنت نمایش میدم


    k=4;
    for(i=0;i<4;i++)
    {
    PORTB=row[i];
    if(i==3)
    {
    if(PINB.4==0)
    {
    while(PINB.4==0)
    {
    }
    count=1;
    k=0;
    }
    else
    {
    while(PINB.5==0)
    {
    num=0;
    k=0;
    }
    }
    }
    else
    {
    while(PINB.4==0)
    {
    k=1;
    num=i*3+k;
    PORTA=table[num];
    }
    while(PINB.5==0)
    {
    k=2;
    num=i*3+k;
    PORTA=table[num];
    }
    while(PINB.6==0)
    {
    k=3;
    num=i*3+k;
    PORTA=table[num];
    }
    }

    میشه لطفا همین برنامه اسکن کی پد روی سون سگمنت رو به زبان بیسیک بنویسید

  6. #6

    نقل قول: اسکن صفحه کلید ماتریسی و نمایش روی سون سگمنت

    سلام یه برنامه تو بسکام میخوام ماشین حساب با کی پد ۴*۴ با دریافت عدد دو رقمی

تاپیک های مشابه

  1. ایجا د صفحه کلید مجازی با کلیک روی تکس باکس
    نوشته شده توسط goldpower در بخش VB.NET
    پاسخ: 3
    آخرین پست: دوشنبه 24 تیر 1392, 08:38 صبح
  2. فارسی کردن صفحه کلید در یا نمایش کیبورد فارسی جهت تایپ
    نوشته شده توسط hamed_bostan در بخش ASP.NET Web Forms
    پاسخ: 12
    آخرین پست: سه شنبه 23 فروردین 1390, 11:41 صبح
  3. پاسخ: 2
    آخرین پست: جمعه 22 خرداد 1388, 13:32 عصر
  4. صفحه کلید مجازی بر روی صفحه نمایش
    نوشته شده توسط RealDream در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: شنبه 07 بهمن 1385, 10:31 صبح
  5. نمایش وضعیت صفحه کلید (زبان)
    نوشته شده توسط Payam Moradi در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: چهارشنبه 11 خرداد 1384, 08:30 صبح

قوانین ایجاد تاپیک در تالار

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