سلام
من می خوام کی پد 4*4 را وصل کنم به میکرو و خروجی اش را روی lcd نمایش بدم
بعوان مثال وقتی کلید 1 زدم 1 نمایش داده شودو اگر پشت سرش 2 زدم بعد یک دو نمایش داده بشه یعنی 12 و...
وقتی c رو زدم عداد را یکی یکی پاک کند مثل ماشین حساب
میخوام عمل جمع ضرب هم انجام بدم
برنامه kypad بصورت زیر نوشتم ولی مشکلی که داره نمیدونم چطور یکبار 1 میزنمیم نمایش داده میشه دوباره 2 رو که میزنم یک پاک میشه دونمایش داده میشه
حتی میخوام جاروب kypad به صورت زیر با شد
پیشنهاد دوستان در این رابطه:
ساده ترین راه اش این باشه که عدد اول که زده شد، در متغیر a ذخیره بشه، عدددوم که زده شد، در متغیر b قرار بگیره و a*=10 بشه و a+=b بشه و رو lcd نمایش داده بشه.
با زدن دکمه ی بعدی باز در b قرار بگیرهه و a*=10 بشه و a+=b بشه و رو lcd نمایش داده بشه.
و ... به همین ترتیب برای ورودی های بعدی. درواقع اینطوری 10 گان و 100 گان و ... رو به ترتیب ایجاد می کنید و عددتون رو بزرگ می کنید.
درسته با دو متغیر a,b میشه این کارو کرد
ولی چطور تشخیص بدم عددی که زده شد عدد دوم.
کد HTML:#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; } } }