اطلاعیه

Collapse
No announcement yet.

ماشین حساب

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

    ماشین حساب

    سلام
    من می خوام کی پد 4*4 را وصل کنم به میکرو و خروجی اش را روی lcd نمایش بدم
    بعوان مثال وقتی کلید 1 زدم 1 نمایش داده شودو اگر پشت سرش 2 زدم بعد یک دو نمایش داده بشه یعنی 12 و...
    وقتی c رو زدم عداد را یکی یکی پاک کند مثل ماشین حساب
    میخوام عمل جمع ضرب هم انجام بدم
    برنامه kypad بصورت زیر نوشتم ولی مشکلی که داره نمیدونم چطور یکبار 1 میزنمیم نمایش داده میشه دوباره 2 رو که میزنم یک پاک میشه دونمایش داده میشه
    حتی میخوام جاروب kypad به صورت زیر با شد
    کد:
    #include <mega32.h>
    #include <delay.h>
    
    unsigned char key; 
    
    void main(void)
    {
    while(1)
       { 
       do{
       
       DDRA = 0x0f;
        PORTA = 0xf0; 
        delay_us(100);
        key = PINA;
        
       
        DDRA = 0xf0;
        PORTA = 0x0f; 
        delay_us(100);
        key = key | PINA;
       
       }while(key==0xff);
      
       
        
        
         switch(key)
      {
        case 0b11101110:  
        key=1;
        break;
        case 0b11011110:  
        key=2;
        break;
        case 0b10111110:  
        key=3;
        break;
        case 0b01111110:  
        key=4;
        break;
        case 0b11101101:  
        key=5;
        break;
        case 0b11011101:  
        key=6;
        break;
        case 0b10111101:  
        key=7;
        break;
        case 0b01111101:  
        key=8;
        break;
        case 0b11101011:  
        key=9;
        break;
        case 0b11011011:  
        key=10;
        break;
        case 0b10111011:  
        key=11;
        break;
        case 0b01111011:  
        key=12;
        break;
        case 0b11100111:  
        key=13;
        break;
        case 0b11010111:  
        key=14;
        break;
        case 0b10110111:  
        key=15;
        break;
        case 0b01110111:  
        key=16;
        
      }
    }
    }

    #2
    پاسخ : ماشین حساب

    کسی از دوستان راحل شو پیدا نکرد؟؟؟
    من فقط می خوام عداد را بصورت رشته روی lcd نمایش بدم

    دیدگاه


      #3
      پاسخ : ماشین حساب

      من تو کامپایلر های همچون stdio ,BASIC که در کامپیوتر استفاده میشه
      برای این که دوتا عدد یا بیشتر در کنار هم قرارگیرند انان را بصورت کارکتر جمع یا اند میکنیم ولی تو کدویژن این دو عدد بجای این که در کنار هم قرار بگیره جمع میشه
      کسی هست دلیلشو بدونه و راحل ش چیه؟؟؟؟؟

      دیدگاه


        #4
        پاسخ : ماشین حساب

        سلام
        من چند روزی درگیر این پروژه ماشین حسابم نمیدونم چرا جواب نمیده
        اگه کسی نمونه پروژه ای در این ضمیمه داره بزاره
        مشکل اول قرار دادن کارکتر ها در کنار هم بدو که به نتیجه نرسید
        ولی اسکن key pad جور دیگه انجام داد مشکلش حل شد
        ولی از اینجا به بعدش نمیدونم چه کار کنم؟؟؟؟
        کد:
        #include <mega32.h>
        #include <alcd.h>
        #include <delay.h> 
        flash char layout[16]={ '7','8','9','/',
                    '4','5','6','*',
                    '1','2','3','+',
                    'C','0','=','-',
                             };
        
        flash char shift[16]={0XFE,0XFD,0XFB,0xF7};
                //0x11111110,0x11111101,0x11111011,0x11110111
        int r=0,column=-1,position=0;
        void main(void)
        {                         
        PORTD=0Xf0;   //11110000
        DDRD=0X0f;    //00001111
        lcd_init(16);
        
        while (1)     
           { 
           //shift dadan portd
           for(r=0; r<4; r++ ){
           PORTD=shift[r];
           // khondane meghdare PIND.4,PIND.5,PIND.6,PIND.7 
           if(PIND.4==0){column=0;}// manzor az column hamon stone 
           if(PIND.5==0){column=1;}
           if(PIND.6==0){column=2;}
           if(PIND.7==0){column=3;}
           //frmole mohasebeh position keypad
           // p=r*4+c
           //6=1*4+2
           if(column != -1){position=r*4+column; 
           lcd_putchar(layout[position]);
           if(position==12)lcd_clear();
           column = -1;
           } 
           delay_ms(50);
           }
           
           }
        }

        دیدگاه

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