۰۴-اردیبهشت-۱۳۹۷, ۱۵:۲۱:۲۱
سلام
من این مدار پایین رو بستم که میخوام با فشار دادن هر کلید, عدد اون کلید روی اولین سون سگمنت نمایش بده.
تو پروتئوس درست کار میکنه ولی روی بردبورد که بستم, چه کلید رو فشار بدم چه ندم عدد 8 رو نشون میده.
لطفا راهنمایی کنید.
![[تصویر: %D9%85%D8%AF%D8%A7%D8%B1%D8%B4.png]](http://s9.picofile.com/file/8324486918/%D9%85%D8%AF%D8%A7%D8%B1%D8%B4.png)
من این مدار پایین رو بستم که میخوام با فشار دادن هر کلید, عدد اون کلید روی اولین سون سگمنت نمایش بده.
تو پروتئوس درست کار میکنه ولی روی بردبورد که بستم, چه کلید رو فشار بدم چه ندم عدد 8 رو نشون میده.
لطفا راهنمایی کنید.
![[تصویر: %D9%85%D8%AF%D8%A7%D8%B1%D8%B4.png]](http://s9.picofile.com/file/8324486918/%D9%85%D8%AF%D8%A7%D8%B1%D8%B4.png)
کد:
#include <mega32.h>
#include <delay.h>
unsigned char key=10;
void keypad(void){
PORTD.3=0;
delay_ms(2);
if(PIND.0==0) key=1;
if(PIND.1==0) key=2;
if(PIND.2==0) key=3;
PORTD.3=1;
PORTD.4=0;
delay_ms(2);
if(PIND.0==0) key=4;
if(PIND.1==0) key=5;
if(PIND.2==0) key=6;
PORTD.4=1;
PORTD.5=0;
delay_ms(2);
if(PIND.0==0) key=7;
if(PIND.1==0) key=8;
if(PIND.2==0) key=9;
PORTD.5=1;
PORTD.6=0;
delay_ms(2);
if(PIND.1==0) key=0;
PORTD.6=1;
}
void main(void)
{
unsigned char seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
DDRB.0=1;
PORTB.0=1;
DDRA=0xff;
DDRD=0x78;
while (1)
{
keypad();
PORTA=seg[key];
}
}