سلام.من یه برنامه avrدارم که lcd,keypad,step motor &microرو بهم مرتبط میکنه.اگه ممکنه لطف کنید برای این برنامه یه توضیح کلی بنویسید.ممنون میشم
اگه تو این صفحه امکانش نیست لطفا برام میل بزنید. [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برنامه به زبان c:
#include <mega16.h>
#include <stdio.h>
#include <delay.h>
#asm
.equ __lcd_port=0x1B ;PORTA
#endasm
#include <lcd.h>
int i,j,x,y,z,key,k,b,a[16]={0xee, 0xed, 0xeb, 0xe7,0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb, 0xb7, 0x7e,0x7d, 0x7b, 0x77};
char str[20];
ali();
hamid();
void main(void)
{
PORTA=0x00;
DDRA=0xFF;
PORTB=0xFF;
DDRB=0x00;
DDRD=0x0F;
PORTD=0x00;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
while (1)
{
ali();
//adade dahgan-------------------------------------------------------------
if(j==1){
x=b;
lcd_clear();
lcd_gotoxy(0,0);
sprintf(str,"number a= %u",x);
lcd_puts(str);
delay_ms(2000);
}
//adade yekan-------------------------------------------------------------
else if(j==2){
y=b;
lcd_clear();
lcd_gotoxy(0,0);
sprintf(str,"number b= %u",y);
lcd_puts(str);
delay_ms(2000);
j=0;


}
};
}
//================================================== ==============
ali(){
lcd_clear();
lcd_putsf("press key=");
delay_ms(90);
DDRB=0x0f;
PORTB=0xf0;
delay_ms(4);
k=PINB;
DDRB=0xf0;
PORTB=0x0f;
delay_ms(4);
key=k|PINB;
for(i=0;i<16;i++){
if(key==a[i]){
b=i;
j++;
}

if(key==0xff)ali();
else if(key==0x77) hamid();
}

}
    • hamid(){


      lcd_clear();
      lcd_gotoxy(0,0);
      z = x*10+y ;
      sprintf(str,"adade voridi= %u",z);
      lcd_puts(str);
      // sprintf(str,"adade voridi= %u",x*10+y);
      // lcd_puts(str);
      delay_ms(4000);
      while(1)
      {
      PORTD=z;
      z=z>>1;
      delay_ms(50);
      if(z==1)
      delay_ms(4000);
      }
      ali();


}