اطلاعیه

Collapse
No announcement yet.

مشکل با مدار تست کیبورد

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

    مشکل با مدار تست کیبورد

    با سلام

    سر این موضوع خیلی سرچ کردم اما جوابی پیدا نکردم مزاحم اینجا شدم ...

    یک مدار تست کیبورد ساختم با AVR ATMEG16 به این صورت کار مینکنه :

    بعد از اتصال کیبورد به پورت PS/2 شش پین با تایپ رو کیبورد حروف رو ال سی دی کاراکتری 2*16 نمایش داده میشه ... همین.

    حالا مشکلم اینجاست وقتی که مدار به باطری 9V وصل میکنم همه چی درسته و ال سی دیم روشن میشه ، اما زمانی که کیبورد و به پورت PS2 وصل میکنم ال سی دی خاموش میشه و جریان مدار به 1.5 و باطری به 2.5 افت میکنه ...

    حالا مشکل چیه؟؟ خواهشا راهنماییم کنین زودتر این پروژرو باید تحویل بدم ...

    اگر هر عکسی کدی چیزی لازم هست بفرمایید تا قرار بدم ...

    اینم شماتیک مدارم هست ... و پورت PS2 هم طبق همین وصل کردم ...


    #2
    پاسخ : مشکل با مدار تست کیبورد

    اتصال ps2 رو درست برقرار نکردی یعنی پین های ps2 رو چپه وصل کردی برای همین جای vcc و gnd عوض شده و باعث میشه افت ولتاژ پیدا کنی
    کل پین هایی که وصل کردی رو برعکس کن yesterday ?????
    :applause: :job:

    دیدگاه


      #3
      پاسخ : مشکل با مدار تست کیبورد

      با توجه به گفته شما یک سیم داخل پینهای PS2 Female قرار دادم و ولتاژ هارو اندازه گرفتم انگار برعکس هست ... اما حالا پایه های درستو از کجا بفهمم ؟؟

      من طبق این دیتا شیت بستمش ...
      http://pdf1.alldatasheet.com/datashe.../datasheet.pdf
      بازم ممنون از راهنماییاتون.

      دیدگاه


        #4
        پاسخ : مشکل با مدار تست کیبورد

        این مشکل ps2 حل شد الان درسته اتصالش ... ولتاژای 6 تا پینشم میگیرم درسته ... و ال سی دیم روشن میمونه موقع اتصال ...

        اما هنوز مدار کار نمیکنه هرچی سعی میکنم نمیفهمم ایرادش کجاست ... آخه سادس هیچیم نداره ... منم بی تجربم دفعه اولمه با AVR کار میکنم ...
        خواهشا کمکم کنین فوری فوتیه مطلب ...

        یه سوالیم که دارم اینه AVR ATMEG16 پایه 10 VCC هست و پایه 9 هم GND که متصل شده آیا پایه های 30 و 31 هم باید وصل کنم؟؟

        تو ال سی دیم پایه های 1 و 16 زمینن و پایه های 2 و 15 هم VCC زدم ...

        (بقیه پایه هام طبق شماتیکمه)

        الان به نظرتون مشکل از کجای کارمه؟؟ اتصالاتم مشکل داره یا برنامم؟؟

        دیدگاه


          #5
          پاسخ : مشکل با مدار تست کیبورد

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

          نوشته اصلی توسط a1i

          یه سوالیم که دارم اینه AVR ATMEG16 پایه 10 VCC هست و پایه 9 هم GND که متصل شده آیا پایه های 30 و 31 هم باید وصل کنم؟؟

          تو ال سی دیم پایه های 1 و 16 زمینن و پایه های 2 و 15 هم VCC زدم ...
          شرمندم اینقدر هی پست میدم دارم گذارش لحظه به لحظه میدم :biggrin:

          الان مدارم کار میکنه اما 3 تا مشکل داره :
          1 - کاراکترا با تاخیر چند ثانیه رو ال سی دی نمایش داده میشن .
          2 - کاراکترا به صورت درست نمایش داده نمیشن مثلا f و میزنم z نشون میده ...
          (کدای اسکیشم درست تعریف کردم)
          3 - بیشتر از 5 6 تا کاراکترو رو ال سی دی نشون نمیده ..

          اینم کدمه:
          کد:
          #include <mega16.h>
          #include <stdio.h>
          #include <delay.h>
          #include <stdlib.h>
          #include <string.h>
          #asm
          .equ __lcd_port=0x18
          #endasm
          #include <lcd.h>
          bit h2=0,y=0;
          unsigned int count=0;
          unsigned char a,x,h1=0,out=0,bitcount=11,data;
          unsigned char str[20];
          char str2[20];
          flash unsigned char s0[]="ESC",s1[]="F1",s2[]="F2",s3[]="F3",s4[]="F4";
          flash unsigned char s5[]="F5",s6[]="F6",s7[]="F7",s8[]="F8",s9[]="F9";
          flash unsigned char s10[]="F10",s11[]="F11",s12[]="F12",s13[]="~",s14[]="!";
          flash unsigned char s15[]="@",s16[]="#",s17[]="$",s18[]="%",s19[]="^";
          flash unsigned char s20[]="&",s21[]="*",s22[]="(",s23[]=")",s24[]="_";
          flash unsigned char s25[]="+",s26[]="/",s27[]="",s28[]="Q",s29[]="W";
          flash unsigned char s30[]="E",s31[]="R",s32[]="T",s33[]="Y",s34[]="U";
          flash unsigned char s35[]="I",s36[]="O",s37[]="P",s38[]="{",s39[]="}";
          flash unsigned char s40[]="A",s41[]="S",s42[]="D",s43[]="F",s44[]="G";
          flash unsigned char s45[]="H",s46[]="J",s47[]="K",s48[]="L",s49[]=";";
          flash unsigned char s50[]="'",s51[]="",s52[]="SHI",s53[]="Z",s54[]="X";
          flash unsigned char s55[]="C",s56[]="V",s57[]="B",s58[]="N",s59[]="M";
          flash unsigned char s60[]="<",s61[]=">",s62[]="?",s63[]="shi",s64[]="ctr";
          flash unsigned char s65[]="Win",s66[]="Alt",s67[]=" ",s68[]="Win",s69[]="0";
          flash unsigned char s70[]=".",s71[]="1",s72[]="2",s73[]="3",s74[]="4";
          flash unsigned char s75[]="5",s76[]="6",s77[]="7",s78[]="8",s79[]="9";
          flash unsigned char s80[]="+",s81[]="-",s82[]="*";
          interrupt [EXT_INT0] void ext_int0_isr(void){
          count++;
          if (h2==0)
          {
          if(bitcount < 11 && bitcount > 2)
          {
          data=(data >> 1);
          if(PIND.7==1)data=(data|0b10000000);
          }
          MCUCR=3;
          h2=1;
          }
          if(h2==1){
          MCUCR=2;
          h2=0;
          if(--bitcount==0)
          {
          out=data;
          bitcount=11;
          }
          }
          }
          //**************************************
          void key(unsigned char in){
          switch (in)
          {
          case 0x76:
          strcatf(str,s0);
          break;
          case 0x05:
          strcatf(str,s1);
          break;
          case 0x06:
          strcatf(str,s2);
          break;
          case 0x04:
          strcatf(str,s3);
          break;
          case 0x0c:
          strcatf(str,s4);
          break;
          case 0x03:
          strcatf(str,s5);
          break;
          case 0x0b:
          strcatf(str,s6);
          break;
          case 0x83:
          strcatf(str,s7);
          break;
          case 0x0a:
          strcatf(str,s8);
          break;
          case 0x01:
          strcatf(str,s9);
          break;
          case 0x09:
          strcatf(str,s10);
          break;
          case 0x78:
          strcatf(str,s11);
          break;
          case 0x07:
          strcatf(str,s12);
          break;
          case 0x0e:
          strcatf(str,s13);
          break;
          case 0x16:
          strcatf(str,s14);
          break;
          case 0x1e:
          strcatf(str,s15);
          break;
          case 0x26:
          strcatf(str,s16);
          break;
          case 0x25:
          strcatf(str,s17);
          break;
          case 0x2e:
          strcatf(str,s18);
          break;
          case 0x36:
          strcatf(str,s19);
          break;
          case 0x3d:
          strcatf(str,s20);
          break;
          case 0x3e:
          strcatf(str,s21);
          break;
          case 0x46:
          strcatf(str,s22);
          break;
          case 0x45:
          strcatf(str,s23);
          break;
          case 0x4e:
          strcatf(str,s24);
          break;
          case 0x55:
          strcatf(str,s25);
          break;
          case 0x5d:
          strcatf(str,s26);
          break;
          case 0x0d:
          lcd_clear();
          strcpy(str,str2);
          break;
          case 0x15:
          strcatf(str,s28);
          break;
          case 0x1d:
          strcatf(str,s29);
          break;
          case 0x24:
          strcatf(str,s30);
          break;
          case 0x2d:
          strcatf(str,s31);
          break;
          case 0x2c:
          strcatf(str,s32);
          break;
          case 0x35:
          strcatf(str,s33);
          break;
          case 0x3c:
          strcatf(str,s34);
          break;
          case 0x43:
          strcatf(str,s35);
          break;
          case 0x44:
          strcatf(str,s36);
          break;
          case 0x4d:
          strcatf(str,s37);
          break;
          case 0x54:
          strcatf(str,s38);
          break;
          case 0x5b:
          strcatf(str,s39);
          break;
          case 0x1c:
          strcatf(str,s40);
          break;
          case 0x1b:
          strcatf(str,s41);
          break;
          case 0x23:
          strcatf(str,s42);
          break;
          case 0x2b:
          strcatf(str,s43);
          break;
          case 0x34:
          strcatf(str,s44);
          break;
          case 0x33:
          strcatf(str,s45);
          break;
          case 0x3b:
          strcatf(str,s46);
          break;
          case 0x42:
          strcatf(str,s47);
          break;
          case 0x4b:
          strcatf(str,s48);
          break;
          case 0x4c:
          strcatf(str,s49);
          break;
          case 0x52:
          strcatf(str,s50);
          break;
          case 0x5a:
          y=~y;
          strcpy(str,str2);
          break;
          case 0x12:
          x--;
          break;
          case 0x1a:
          strcatf(str,s53);
          break;
          case 0x22:
          strcatf(str,s54);
          break;
          case 0x21:
          strcatf(str,s55);
          break;
          case 0x2a:
          strcatf(str,s56);
          break;
          case 0x32:
          strcatf(str,s57);
          break;
          case 0x31:
          strcatf(str,s58);
          break;
          case 0x3a:
          strcatf(str,s59);
          break;
          case 0x41:
          strcatf(str,s60);
          break;
          case 0x49:
          strcatf(str,s61);
          break;
          case 0x4a:
          strcatf(str,s62);
          break;
          case 0x59:
          x++;
          break;
          case 0x14:
          strcatf(str,s64);
          break;
          case 0x27:
          strcatf(str,s65);
          break;
          case 0x11:
          strcatf(str,s66);
          break;
          case 0x29:
          strcatf(str,s67);
          break;
          case 0x1f:
          strcatf(str,s68);
          break;
          case 0x70:
          strcatf(str,s69);
          break;
          case 0x71:
          strcatf(str,s70);
          break;
          case 0x69:
          strcatf(str,s71);
          break;
          case 0x72:
          strcatf(str,s72);
          break;
          case 0x7a:
          strcatf(str,s73);
          break;
          case 0x6b:
          strcatf(str,s74);
          break;
          case 0x73:
          strcatf(str,s75);
          break;
          case 0x74:
          strcatf(str,s76);
          break;
          case 0x6c:
          strcatf(str,s77);
          break;
          case 0x75:
          strcatf(str,s78);
          break;
          case 0x7d:
          strcatf(str,s79);
          break;
          case 0x79:
          strcatf(str,s80);
          break;
          case 0x7b:
          strcatf(str,s81);
          break;
          case 0x7c:
          strcatf(str,s82);
          break;
          case 0x66:
          a=strlen(str);
          str[a-1]=0;
          break;
          }
          if(out!=0)h1++;
          out=0;
          }
          void main(void)
          {
          GICR|=0x40;
          MCUCR=0x02;
          MCUCSR=0x00;
          GIFR=0x40;
          ACSR=0x80;
          DDRD.7=0;
          lcd_init(16);
          #asm("sei")
          while(1)
          {
          key(out);
          lcd_clear();
          lcd_gotoxy(x,y);
          lcd_puts(str);
          delay_ms(500);
          };
          }

          دیدگاه


            #6
            پاسخ : مشکل با مدار تست کیبورد

            :angry: :angry: :angry: همچنان منتظر یاریتان هستم من یه راهنمایی کوچیکم کنین خودم میرم دنبالش پیداش میکنم :cry: :cry: :cry:

            دیدگاه


              #7
              پاسخ : مشکل با مدار تست کیبورد

              علی اقا من کدتو نخوندم ولی چند تا کار میگم بکنی بد نیست!
              1. کیبورد رو دوباره با pc تست کن ببین سالمه یا نه! چون کیبورد مدار حفاظت ولتاژ معکوس نداره!
              2.بدون اینکه توجهی به اصل بکاری که می خوای بکنی ببین اصلا میتونی یه نوشته ساهد روی ال سی دی نمایش بدی؟! کار های بزرگ رو پله پله انجام بده!
              3. تمامی gnd ها و تمامی vcc ها بایستی وصل بشن به تغذیه . اگرم مدار بدون اتصال اینها جواب بده کار خوبی نکردی که وصل نکردی چون توزیع گراند داخل تراشه رو میریزی بهم! اما طبق گفته اتمل میتونی پایه avcc رو به جایی وصل نکنی ! اما برای کاهش توان مصرفی اگه از ADC استفاده نمی کنی بهتره این پایه زمین بشه!
              فعلا همینا رو انجام بده !

              دیدگاه


                #8
                پاسخ : مشکل با مدار تست کیبورد

                پایه های 30 و 31 میکرو رو حتما باید به vcc و gnd وصل کنی
                مشکل کارت تو اتصالات مدارته
                یه بار رو برد بورد امتحان کن بعد pcb شو بزن
                در ضمن تمام اون مقاومتهایی که به lcd و ps2 زدی رو بردار نیازی به اونها نیست ...

                دیدگاه

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