اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه کی پد در بیسیک

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

    مشکل در برنامه کی پد در بیسیک

    یا سلام
    میخواستم با کی پد برنامه ای بنویسم که اگر یکی از دکمه های کی پد رو فشار دادیم شمارنده نزولی وبا یکی دیگه از کلید ها شمارنده صعوودی باشه که روی سون سگمنت نمایش بده ولی تو پروتوس امتحان کردم کار نمیکنه اگه میشه راهنمایی کنید
    اینم برنامه:
    کد:
    $regfile = "m16def.dat"
    $crystal = 1000000
    
    Config Portd = Output
    Config Kbd = Porta , Debounce = 50 , Delay = 100
    
    Dim B As Byte
    Dim I As Byte
    Dim A As Byte
    Do
    B = Getkbd()
    B = Lookup(i , Gall)
    If B = 3 Then Goto Reza
    If B = 5 Then Goto Sal
    loop
    Reza:
    
      For I = 0 To 8
      A = Lookup(i , Table)
    
      Portd = A
      Waitms 600
    
      Next I
    
    Sal:
      For I = 8 To 0
      A = Lookup(i , Table)
    
      Portd = A
      Waitms 600
    
      Next I
    
    End
    
    Table:
    
    Data &B00111111 , &B00000110 , &B01011011 , &B01001111 , &B01100110 , &B01101101 , &B01111101 , &B00000111 , &B01111111 , &B01101111
    
    
    
    Gall:
    Data 1 , 2 , 3 , 13 , 4 , 5 , 6 , 14 , 7 , 8 , 9 , 15 , 11 , 0 , 12 , 16
    مردی که کوه را از میان برداشت کسی بود که شروع به برداشتن سنگ ریزه ها کرد

    #2
    پاسخ : مشکل در برنامه کی پد در بیسیک

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

    دیدگاه


      #3
      پاسخ : مشکل در برنامه کی پد در بیسیک

      فایل پرتیوسو میذارم فقط با پروتیوس 8.1 هستش نمیشه از رو برنامه مشکلشو تشخیص داد
      <a href="http://www.4shared.com/file/V0sNEQ9Gba/7Seg_Asc.html" target=_blank>7Seg Asc.pdsprj</a>
      مردی که کوه را از میان برداشت کسی بود که شروع به برداشتن سنگ ریزه ها کرد

      دیدگاه


        #4
        پاسخ : مشکل در برنامه کی پد در بیسیک

        این چه فایلیه دیگه ؟!! دانلود کردم اما نمیدونم چی هست . فایل رو که ندیدم اما حدس میزنم بین پایه های میکرو و کی پد مقاومت سری نگذاشتین . اگه نذارین کی پد کار نخواهد کرد .
        [glow=blue,2,300]آنقدر به تاریکی لعنت نفرستید ، یک شمع روشن کنید. [/glow]

        دیدگاه


          #5
          پاسخ : مشکل در برنامه کی پد در بیسیک

          نوشته اصلی توسط farnad
          سلام دوستان
          دنبال یه برنامه کد ویژن برای استفاده صفحه کلید 4*4 و ال سی دی 16*2 میگشتم که تست شده باشه و در عمل کار داده باشه... :smile:
          ولی چیزه درست حسابی پیدا نکردم :cry:
          کسی میتونه کمک کنه؟ :redface:
          از این برنامه استفاده کن
          کد:
          void init_key(){
            DDRC=0xf0;
            PORTC=0x0f;
            SFIOR=0x00;
            }
          char ikp(){
            PORTC=0x0f;
            delay_us(100);
            if(PINC==0x0f) return(0);
            return(1);
            }
          char scankey(){
            char key=0,cont=0b11101111,i,j,temp;
            for(i=0;i<4;++i){
              PORTC=cont;
              cont=(cont<<1) | 0x01;
              temp=PINA;
              for(j=0;j<4;++j){
                ++key;
                if((temp&0x01)==0) return(key);
                temp=temp>>1;
                }
              }
            }
          char getkey(){
            char key;
            do {
              while (ikp()==0)
              delay_ms(20);
              } while (ikp()==0);
              key=scankey();
            do {
              while (ikp()==1);
              delay_ms(20);
              } while (ikp()==1);
              return(key);
          }

          تو این برنامه یه تابع به اسم ikp هست که مخفف همون is key pressed
          تا وقتی کلیدی زده نشه خروجی این تابع 0 هست. ولی به محض اینکه یه کلید زدی خروجی این تابع 1 میشه
          تو برنامه اصلیت اول چک کن که ikp کی 1 میشه
          هر وقت 1 شد بعدش با استفاده از تابه getkey شماره کلید رو بخون
          این شماره ای که تابع getkey بت میده، توی عکس همون شماره هایی هست که با قرمز نوشتم
          مثل همین عکس سطر و ستون کیبوردتو ببند به پورت A
          مثلا تو توی پروتئوس کلیدی که روش 0 نوشته رو میزنی
          ولی خروجی تابع getkey برات 5 رو میفرسته (یعنی اون عدد قرمزه)
          اگه بخوای خروجی که میگیری مطابق کیبورد پروتئوس تو عکس باشه
          میتونی یه تابع تعریف کنی و هر مقداری از getkey میگیری تبدیلش کنی به شماره ای که میخوای
          کیبوردهای تو بازار هم جای عدداش با اینی که تو عکس هست فرق میکنه!!!
          با استفاده از این تابع عددی که میزنی رو دریافت کن
          کد:
          void func(){
            char key;
            key=getkey();
            //-------------key 0----------------
            if(key==5) k=0;
            //-------------key 1----------------
            if(key==2) k=1;
            //-------------key 2----------------
            if(key==6) k=2;
            //-------------key 3----------------
            if(key==10) k=3;
            //-------------key 4----------------
            if(key==3) k=4;
            //-------------key 5----------------
            if(key==7) k=5;
            //-------------key 6----------------
            if(key==11) k=6;
            //-------------key 7----------------
            if(key==4) k=7;
            //-------------key 8----------------
            if(key==8) k=8;
            //-------------key 9----------------
            if(key==12) k=9;
            //-------------key + --------
            if(key==13) k=13;
            //-------------key - ------
            if(key==14) k=14;
            //-------------key X ------
            if(key==15) k=15;
            //-------------key / ---------------
            if(key==16) k=16;
            //-------------key = ---------------
            if(key==9) k=19;
            //-------------key ON/C ---------------
            if(key==1) k=1;
            }
          در کل تو برنامه اصلیت با استفاده از این دو خط یه مقداری توی k میریزی و این مقدار رو مثلا تو lcd نمایش میدی یا هر کاری خواستی باش میکنی
          کد:
             while(ikp()==0);
             func();
          امیدوارم خوب گفته باشم متوجه شده باشی :biggrin:

          دیدگاه


            #6
            پاسخ : مشکل در برنامه کی پد در بیسیک

            سلام رفیق ..
            اینم برنامه صحیح+پروتیوس:

            http://s5.picofile.com/file/81204700...ttttt.zip.html
            تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
            علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

            دیدگاه

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