اطلاعیه

Collapse
No announcement yet.

اتصال صفحه کلید کامپیوتر به میکرو کنترلر atmega128

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

    اتصال صفحه کلید کامپیوتر به میکرو کنترلر atmega128

    سلام خدمت اساتید محترم
    من یک صفحه کلید PS/2 را به پورت سریال میکرو کنترلر atmega128 وصل کردم و از طریق UDR دارم دیتا را می خونم

    اما دیتا که باید کد اسکی باشد اشتباه است مثلا :
    باید کد اسکی A باشد C1
    من کدی که دریافت می کنم هست C

    برنامه گرفتن دیتا از پورت سریال :NO:
    کد:
    // USART0 Receiver interrupt service routine
    interrupt [USART1_RXC] void usart1_rx_isr(void)
    {
    unsigned char buffer;
    buffer=UDR1;
        switch(buffer)
        {
         case 0xF0:
           break;
         case 0xE0:     
           break;
         default:   
         Scan_Code=buffer;
        } 
    }

    قسمت برنامه نمایش برروی GLCD 240*64 :NO:

    lcd_setup_page(4);
    lcd_clear_text();
    CommandOut(GraphicsOff| TextOn | CursorOff | CursorBlinkOff);
    lcd_xy(0,4);
    sprintf(buffer_lcd,"key_press=%X",Scan_C ode);
    lcd_print(buffer_lcd);

    قسمت تنظیمات پورت سریال :NO:
    UCSR1A=0x00;
    UCSR1B=0x90;
    UCSR1C=0x06;
    UBRR1H=0x00;
    UBRR1L=0x33;

    // Global enable interrupts
    #asm("sei&quot
    به نظر شما کدام قسمت اشتباه کردم ؟؟؟ oo: که کد درست ا****** دریافت نمی کنم

    خداوندا
    از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
    فراموشش کن
    دکتر علی شریعتی

    #2
    پاسخ : اتصال صفحه کلید کامپیوتر به میکرو کنترلر atmega128

    من دو تا کی برد PS/2 دیگه زدم هرکدوم یک خروجی کد داره واقعا گیج شدم

    کسی نیست نظری داشته باشه ؟؟ :applause:
    خداوندا
    از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
    فراموشش کن
    دکتر علی شریعتی

    دیدگاه


      #3
      پاسخ : اتصال صفحه کلید کامپیوتر به میکرو کنترلر atmega128

      آقا بازم خودم :nice: دوستان کسی اصلا کمک نکرد :NO:
      اشکالی نداره :rolleyes:


      برنامه به این صورت شد

      اینتراپ 0 که داده را از ورودی میگیرم :NO:
      کد:
      [left]interrupt [EXT_INT0] void ext_int0_isr(void)
      {
      if((counter>0) && (counter<=8))
       { 
          counter--;
          help=0;
          help|=data_pin;
          help=(help<<counter);
          dataA|=help;
          counter++;
       } 
      counter++;
      if(counter==11) dis=1;  
      if(counter>=33) counter=0;
      }[/left]
      تنظیم اینتراپت 0 برای ATMEGA128 به صورت زیر :NO:
      کد:
      [left]EICRA=0x03;
      EICRB=0x00;
      EIMSK=0x01;
      EIFR=0x01;[/left]
      نمایش بر روی نمایشگر گرافیکی :NO:
      کد:
          lcd_xy(0,6); 
          sprintf(buffer_lcd,"key_press=%X",dataA); 
          lcd_print(buffer_lcd);
          delay_ms(150);
      کسی اگر سوال داشت من در خدمت هستم
      خداوندا
      از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
      فراموشش کن
      دکتر علی شریعتی

      دیدگاه

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