اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    من یه صفحه کلید 4*4 رو خواستم به پورت A میکرو وصل کنم، خواستم از رو یه برنامه اینو بنویسم که اون برنامه رو پورت C نوشته شده، اینطور واسه پورت A تصحیحش کردم اما کار نمیکنه!
    میشه کمکم کنین اشکالش رو پیدا کنم؟! :cry:

    کد:
    unsigned char scan_key(void);
    unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}};
    char buffer_lcd[10];
    
    void main(void)
    { 
    unsigned char key ;
    PORTC=0x00;
    DDRC=0xf0; 
    while(1)
    {
    key=scan_key(); 
    if(key!=0xff)
    {
    lcd_clear(); 
    lcd_gotoxy(0,0);
    sprintf(buffer_lcd,"key=%d",key);
    lcd_puts(buffer_lcd);
    
    } 
    unsigned char scan_key(void)
    {
    unsigned char i,data, num_key, temp;
    num_key=0xff;
    temp=0x70;
    for(i=0;i<4;i++)
    {
    PORTC=temp;
    delay_ms(5);
    data=PINC & 0x0f;
    if (data==0x07)
    num_key=code[0][i];
    if (data==0x0B)
    num_key=code[1][i];
    if (data==0x0D)
    num_key=code[2][i];
    if (data==0x0E)
    num_key=code[3][i]; 
    temp=((temp>>=1) | 0x80) & 0xF0;
    }
    return num_key;
    } }
    کد:
    unsigned char scan_key(void);
    unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}};
    char buffer_lcd[10];
    
    void main(void)
    { 
    unsigned char key ;
    PORTA=0x00;
    DDRA=0xf0; 
    while(1)
    {
    key=scan_key(); 
    if(key!=0xff)
    {
    lcd_clear(); 
    lcd_gotoxy(0,0);
    sprintf(buffer_lcd,"key=%d",key);
    lcd_puts(buffer_lcd);
    
    } 
    unsigned char scan_key(void)
    {
    unsigned char i,data, num_key, temp;
    num_key=0xff;
    temp=0x70;
    for(i=0;i<4;i++)
    {
    PORTA=temp;
    delay_ms(5);
    data=PINA & 0x0f;
    if (data==0x07)
    num_key=code[0][i];
    if (data==0x0B)
    num_key=code[1][i];
    if (data==0x0D)
    num_key=code[2][i];
    if (data==0x0E)
    num_key=code[3][i]; 
    temp=((temp>>=1) | 0x80) & 0xF0;
    }
    return num_key;
    } }

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

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

    دیدگاه


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

      سلام،
      اگه کد اول درست کار میکنه، تغییراتی که دادین درست هستن ولی کافی نیستن.
      با اینکه ننوشتین روی کدوم شماره میکرو کار میکنین ولی این قسمت رو هم به ابتدای کدتون اضافه کنید که پایه های پورت A فقط در مد I/O باشند و در رجیسترهای لازم بقیه Feature هاش رو غیر فعال کنید.
      از صفر و یک شدن پایه های 7 تا 4 که خروجی هستند مطمئن بشید و اگه قدرت درایوشون کمه با پول پ 10 کیلو اهمی کمی تقویتشون کنید.

      موفق باشید.
      اسمایل، تومورو ویل بی وُرس

      دیدگاه


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

        نوشته اصلی توسط leila_engineer1
        سلام متم این برنامه را دارم ولی جواب نمیده اگه شمابه جواب رسیدید لطفا به منم کمک کنین.
        سلام
        آره من نتیجه گرفتم
        اشکال از کدم نبود بلکه جای سطرها و ستونهارو اشتباه رو سخت افزار پیدا کرده بودم
        باید اینطوری ببندین که c4 به PortA.0 و c3 به A.1 و c2 به A.2 و C1 به A.3 و R4 به A.4 و R3 به A.5 و R2 به A.6 و R1 به A.7
        V هم به منبع 5 ولت وصل کنین
        در ضمن مقاومتهای Pull Up رو هم گذاشتین که؟! :question:
        بعد هر دکمه رو بزنین باید نشون بده روی LCD
        امتحان کنین ببینین چطور میشه اگه باز مشکلی بود بگین
        من که پروژه م رو جواب گرفتم تمامشو
        ابشالله ماله شما هم حل بشه :smile:

        دیدگاه

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