judyabott
09-06-2010, 10:55
سلام.من یه برنامه avrدارم که lcd,keypad,step motor µرو بهم مرتبط میکنه.اگه ممکنه لطف کنید برای این برنامه یه توضیح کلی بنویسید.ممنون میشم
اگه تو این صفحه امکانش نیست لطفا برام میل بزنید. judyabott_johnsmith@yahoo.com
برنامه به زبان 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();
}
اگه تو این صفحه امکانش نیست لطفا برام میل بزنید. judyabott_johnsmith@yahoo.com
برنامه به زبان 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();
}