// سوال درمورد keypad - الکترونیکا

الکترونیکا پروژه های الکترونیک و مکانیک

سوال درمورد keypad

r
r
آفلاین
0
سلام میخواستم برای مدار زیر یه برنامه طراحی کنم
که با زدن هر کلید LED مربوطه روشن بشه
<blockquote>http://up.p30day.com/images3/2013/may/71080525934086239863.png</blockquote>

برنامه شم اینجوری نوشتم ولی خب مطمئنم یه چیزی لازم داره
میشه راهنمایی کنید.


#include <mega16.h>
#include <delay.h>
#define maxkeys 16

#define c1 PINC.4
#define c2 PINC.5
#define c3 PINC.6
#define c4 PINC.7

flash char row[]={0xfb,0xfd,0xfe,0xf7};
flash char data_key[]={0x06, 0x5b, 0x4f, 0xf6,
0x66, 0x6d, 0x7d, 0xf6,
0x07, 0x7f, 0x6f, 0xf6,
0xf6, 0x3f, 0xf6, 0xf6};


void main(void)
{

PORTA=0x00;
DDRA=0xFF;


PORTB=0x00;
DDRB=0xFF;

PORTC=0x00;
DDRC=0x00;

while (1)
{
PORTA=0;
if(PINC.0==0){
PORTA.0=1;
while(PINC.0==0);
}
if(PINC.1==0){
PORTA.1=1;
while(PINC.1==0);
}
if(PINC.2==0){
PORTA.2=1;
while(PINC.2==0);
}
if(PINC.3==0){
PORTA.3=1;
while(PINC.3==0);
}
if(PINC.4==0){
PORTA.4=1;
while(PINC.4==0);
}
if(PINC.5==0){
PORTA.5=1;
while(PINC.5==0);
}
if(PINC.6==0){
PORTA.6=1;
while(PINC.6==0);
}
if(PINC.7==0){
PORTA.7=1;
while(PINC.7==0);
}
}
}

پاسخ پذیرفته شده

دوشنبه, می 18 2015, 06:12 PM - #لینک دائمی
0
سلام شما باید از کیپد عدد بگیرید با برنامه ی کیپد الگوریتمی که بتونید از کیپد عدد بگیرید به شکل زیر هستش:
//#########################################################
int key(void){
char KEY = 1 ;
while(KEY){
delay_ms(200);
PORTA.0 = 0 ;
PORTA.1 = 1 ;
PORTA.2 = 1 ;
PORTA.3 = 1 ;
PORTA.4 = 1 ;
PORTA.5 = 1 ;
PORTA.6 = 1 ;
PORTA.7 = 1 ;
if(PINA.4 == 0){return 1 ; KEY = 0;}
if(PINA.5 == 0){return 2 ; KEY = 0;}
if(PINA.6 == 0){return 3 ; KEY = 0;}
if(PINA.7 == 0){return 10; KEY = 0;}
//==========================================
PORTA.0 = 1 ;
PORTA.1 = 0 ;
PORTA.2 = 1 ;
PORTA.3 = 1 ;
PORTA.4 = 1 ;
PORTA.5 = 1 ;
PORTA.6 = 1 ;
PORTA.7 = 1 ;
if(PINA.4 == 0){return 4 ; KEY = 0;}
if(PINA.5 == 0){return 5 ; KEY = 0;}
if(PINA.6 == 0){return 6 ; KEY = 0;}
if(PINA.7 == 0){return 11; KEY = 0;}
//==========================================
PORTA.0 = 1 ;
PORTA.1 = 1 ;
PORTA.2 = 0 ;
PORTA.3 = 1 ;
PORTA.4 = 1 ;
PORTA.5 = 1 ;
PORTA.6 = 1 ;
PORTA.7 = 1 ;
if(PINA.4 == 0){return 7 ; KEY = 0;}
if(PINA.5 == 0){return 8 ; KEY = 0;}
if(PINA.6 == 0){return 9 ; KEY = 0;}
if(PINA.7 == 0){return 12; KEY = 0;}
//==========================================
PORTA.0 = 1 ;
PORTA.1 = 1 ;
PORTA.2 = 1 ;
PORTA.3 = 0 ;
PORTA.4 = 1 ;
PORTA.5 = 1 ;
PORTA.6 = 1 ;
PORTA.7 = 1 ;
if(PINA.4 == 0){return 15; KEY = 0;}
if(PINA.5 == 0){return 0 ; KEY = 0;}
if(PINA.6 == 0){return 14; KEY = 0;}
if(PINA.7 == 0){return 13; KEY = 0;}

//=========================================

KEY = 1 ;
}
}
//############################################################


اگه بازم مشکلی دارید مطرح کنید
پاسخ به درستی کمینه شد نمایش
پاسخ ها (0)
  • هنوز به این بحث پاسخی داده نشده است
متاسقیم، بحث قفل شمده و شما هم اکنون نمی توانید پاسخی ثبت کنید