اطلاعیه

Collapse
No announcement yet.

کمک در برنامه نویسی c

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

    کمک در برنامه نویسی c

    سلام دوستان
    شاید برنامه به نظر ساده میاد اما چون من ابتدای کار هستم بلد نیستم ممنونم کمک کنید :sad:
    میخوام برنامه ای بنویسم که اعداد دریافتی از صفحه کلید ماشین حسابی را روی سون سگمنت نشان دهد که سون سگمنتش کاتد مشترک و نیاز به 7448نداشته باشد. :angry: :angry: :angry:

    #2
    پاسخ : کمک در برنامه نویسی c

    :angry:

    دیدگاه


      #3
      پاسخ : کمک در برنامه نویسی c

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

      دیدگاه


        #4
        پاسخ : کمک در برنامه نویسی c

        ممنون دوست عزیز
        گفتم خیلی پیش پا افتاده است سوالم. اما من تازه کارم
        ممنون اگه بیشتر راهنمایی کنید :rolleyes:

        دیدگاه


          #5
          پاسخ : کمک در برنامه نویسی c

          با میکرو می خوای این کارو بکنی،درسته؟

          دیدگاه


            #6
            پاسخ : کمک در برنامه نویسی c

            بلهATmega16 :cry2:

            دیدگاه


              #7
              پاسخ : کمک در برنامه نویسی c

              نوشته اصلی توسط ra1372
              سلام دوستان
              شاید برنامه به نظر ساده میاد اما چون من ابتدای کار هستم بلد نیستم ممنونم کمک کنید :sad:
              میخوام برنامه ای بنویسم که اعداد دریافتی از صفحه کلید ماشین حسابی را روی سون سگمنت نشان دهد که سون سگمنتش کاتد مشترک و نیاز به 7448نداشته باشد. :angry: :angry: :angry:
              نوشته اصلی توسط 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:

              دیدگاه

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