سلام به همگی
این برنامه رو ببینید:
این برنامه ای هست که برای اسکن کیپد 4 *4 بکار میرود. (( ترجیحا تو notepad کپی کنید تا بهتر مشاهده بشه )) .
این برنامه کیپد رو اسکن میکنه و با استفاده از اون آرایه هایی که در ابتدای برنامه نوشته شده یه عدد رو روی LCD نشون میده و هیچ مشکلی هم نداره.

اما من میخواستم این برنامه رو تغییر بدم . بدین صورت که بجای اینکه رو LCD یه عدد نشون بده کلا LCD حذف بشه و با فشردن هر دکمه این کیپد یک " تایع " اجرا بشه... ولی نمیدونم این تابع رو چطوری پیاده سازی کنم.
بفرض که اسم توابع هم F1 تا F16 باشه آیا میشه (( آرایه ای از توابع )) تعریف کرد..؟؟ خودم فکر نمیکنم امکانش باشه...
بمن بفرمایید چیکار باید بکنم تا با زدن هر دکمه یک تابع اجرا بشه.
بینهایت ممنونم
این برنامه رو ببینید:
کد:
#include <mega16.h> #include <stdio.h> #include <delay.h> #asm .equ __lcd_port=0x1B #endasm #include <lcd.h> 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; lcd_init(16); lcd_clear(); 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; }
این برنامه کیپد رو اسکن میکنه و با استفاده از اون آرایه هایی که در ابتدای برنامه نوشته شده یه عدد رو روی LCD نشون میده و هیچ مشکلی هم نداره.

اما من میخواستم این برنامه رو تغییر بدم . بدین صورت که بجای اینکه رو LCD یه عدد نشون بده کلا LCD حذف بشه و با فشردن هر دکمه این کیپد یک " تایع " اجرا بشه... ولی نمیدونم این تابع رو چطوری پیاده سازی کنم.
بفرض که اسم توابع هم F1 تا F16 باشه آیا میشه (( آرایه ای از توابع )) تعریف کرد..؟؟ خودم فکر نمیکنم امکانش باشه...
بمن بفرمایید چیکار باید بکنم تا با زدن هر دکمه یک تابع اجرا بشه.
بینهایت ممنونم
دیدگاه