PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل در برنامه اتصال صفحه کلید به lcd به زبان سی++



mahdieh721
04-11-2015, 10:39
سلام دوستان من این کد رو از یه سایت برداشتم و یه تغییراتی توش دادم ولی بازم اعداد رو درست نشون نمیده و اینکه از هر عدد چند بار چاپ میکنه
#include <mega16.h>
#include <delay.h>
#include <lcd.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm


int Feshode_SHodane_Kelid(void)
{
PORTA.0=0; PORTA.1=1; PORTA.2=1; PORTA.3=1;
delay_ms(50);
if(!PINA.4) {return 1;}
if(!PINA.5) {return 2;}
if(!PINA.6) {return 3;}
if(!PINA.7) {return 10;}

PORTA.0=1; PORTA.1=0; PORTA.2=1; PORTA.3=1;
delay_ms(50);
if(!PINA.4) {return 4;}
if(!PINA.5) {return 5;}
if(!PINA.6) {return 6;}
if(!PINA.7) {return 11;}

PORTA.0=1; PORTA.1=1; PORTA.2=0; PORTA.3=1;
delay_ms(50);
if(!PINA.4) {return 7;}
if(!PINA.5) {return 8;}
if(!PINA.6) {return 9;}
if(!PINA.7) {return 12;}

PORTA.0=1; PORTA.1=1; PORTA.2=1; PORTA.3=0;
delay_ms(50);
if(!PINA.4) {return 15;}
if(!PINA.5) {return 0;}
if(!PINA.6) {return 14;}
if(!PINA.7) {return 13;}

return 16;
}


void Namayesh_Kelid_Feshorde_SHode(int key)
{
if(key==0) lcd_puts("0");
if(key==1) lcd_puts("1");
if(key==2) lcd_puts("2");
if(key==3) lcd_puts("3");
if(key==4) lcd_puts("4");
if(key==5) lcd_puts("5");
if(key==6) lcd_puts("6");
if(key==7) lcd_puts("7");
if(key==8) lcd_puts("8");
if(key==9) lcd_puts("9");
if(key==10) lcd_puts("/");
if(key==11) lcd_puts("*");
if(key==12) lcd_puts("+");
if(key==13) lcd_puts("-");
if(key==14) lcd_puts("=");
if(key==15) lcd_clear();
}


void main(void)
{
int key;

DDRA=0X0F; PORTA=0XF0;

lcd_init(16);

while (1)
{
do
key = Feshode_SHodane_Kelid();
while(key==16);

Namayesh_Kelid_Feshorde_SHode(key);

delay_ms(350);
};
}
کسی میتونه بگه اشکال کجاست ؟؟؟