سلام به همگی
نماز و روزهاتون قبول
دوستان من میخوام واسه 2 استپ موتور تو codevision ی برنامه بنویسم (یکی از اسپت ها حرکت به جلو و عقب و دیگری بالا و پایین)
این برنامه به این صورته که کاربر از طریق ال سی دی و کیبورد 3 داده به میکرو میده و موتور از طریق این 3 داده باید 2 موتور شروع به چرخش کنند
در وقع من در این جا 6 ایستگاه دارم که (آب.خشک کن.محلول اول.محلول دوم.محلول سوم.محلول چهارم)...شروع کار از خشک کن صورت میگیره
اولین سوالی که از کاربر میشه: شماره ی ایستگاههایی که میخوای بری رو به ترتیب بزن؟.....(در اینجا کاربر مختاره که از 1 تا 4 را انتخاب کند،مثلا 1،4،3،2....این یعنی اول 1 بعد 4 بعد 3 و بعد 2 و در آخر هر مرحله خودکار باید به سمت آب و سپس خشک کن برود و بالای خشک کن انتهای برنامه میشود)
سوال دوم:چند بار در هر محلول بالا و پایین شود؟....(در اینجا از کاربر این سوال به این منظور پرسیده میشود که ممکنه کاربر بخواهد در یک ایستگاه تعداد بیشتری بالا و پایین رود...در اینجا اگر کاربر 0 را وارد کند اصلا وارد محلول نشود و از آن عبور کند)
سوال سوم:مدت زمان ایست در بالای هر ایستگاه چقدر باشد؟....(یعنی پس از اینکه بالا و پایین شدن در هر ایستگاه به اتمام رسید چقدر مکث داشته باشد و سپس ادامه دهد)
وقتی سوالات تموم شد حالا باید میکرو 32 این دو استپ را طبق اطلاعاتی که گرفته هدایت کند
حالا من میخوام با نوشتن ی تابع با سه ورودی بالا این دو استپ موتور شروع به هدایت کنند،چجوری بنویسم این تابع رو؟؟؟؟؟؟؟؟؟؟ لطفا کمک کنید
کدهایی که واسه 3 تا سوال نوشتم در پایین میذارمشون...
/************************************************** ***
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
Object moved
Project :
Version :
Date : 6/15/2015
Author : Diplomat
Company :
Comments:
Chip type : ATmega32A
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 512
************************************************** ***/
#include <mega32a.h>
#include <alcd.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
#define b1 PINB.4
#define b2 PINB.5
#define b3 PINB.6
#define b4 PINB.7
unsigned char scan[4]={0XFE,0XFD,0XFB,0XF7};
unsigned char arrkey[16]={
1,2,3,20,
4,5,6,30,
7,8,9,40,
70,0,80,90};
char key;
unsigned char keypad(void);
void Display_LCD_Start(void);
void Display_LCD_1(char ,char ,char ,char);
void Display_LCD_2(char ,char ,char ,char);
void Display_LCD_3(char ,char ,char ,char);
void main(void)
{
char key;
int a[12],b[12],c[12],i;
PORTA=0x00;
DDRA=0x00;
PORTB=0xff;
DDRB=0x0f;
PORTC=0x00;
DDRC=0xff;
PORTD=0x00;
DDRD=0xff;
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTA Bit 0
// RD - PORTA Bit 1
// EN - PORTA Bit 2
// D4 - PORTA Bit 4
// D5 - PORTA Bit 5
// D6 - PORTA Bit 6
// D7 - PORTA Bit 7
// Characters/line: 20
lcd_init(20);
while (1)
{
Display_LCD_Start();
key=keypad();
if(key==1) //start
{
lcd_clear();
lcd_putsf("Number Of Stations:");//tartibe stepha
for(i=0;i<4;i++)
{a[i]=keypad();}
Display_LCD_1(a[0],a[1],a[2],a[3]);
lcd_gotoxy(0,2);
lcd_putsf("CountSeesaw:");//tedad bala va paiin dar har step
for(i=4;i<8;i++)
{b[i]=keypad();}
Display_LCD_2(b[4],b[5],b[6],b[7]);
lcd_gotoxy(0,3);
lcd_putsf("Time Spent:");//zamane mandan dar balaye har step
for(i=8;i<12;i++)
{c[i]=keypad();}
Display_LCD_3(c[8],c[9],c[10],c[11]);
}//End Start
}//End While
}
//************************************************** ******
unsigned char keypad(void)
{
unsigned char r,b;
while(1)
{
for (r=0; r<4; r++)
{
b=4;
PORTB=scan[r];
if(b1==0) b=0;
if(b2==0) b=1;
if(b3==0) b=2;
if(b4==0) b=3;
if (!(b==4))
{
key=arrkey[(r*4)+b];
while(b1==0);
while(b2==0);
while(b3==0);
while(b4==0);
delay_ms(50);
return key;
}
}
}
}
//************************************************** ******
void Display_LCD_Start(void)
{
lcd_clear();
lcd_gotoxy(0,1);
lcd_putsf(" POLY STAINER ");
lcd_gotoxy(0,2);
lcd_putsf(" Prepare To Start ");
}
//************************************************** ******
void Display_LCD_1(char x1,char x2,char x3,char x4)
{
int j;
char buffer[20],x[12];
lcd_gotoxy(13,1);
for(j=1;j<5;j++)
{
itoa(x[j],buffer);
lcd_puts(buffer);
lcd_putsf(",");
}
}
//************************************************** ******
void Display_LCD_2(char y1,char y2,char y3,char y4)
{
int j;
char buffer[20],y[12];
lcd_gotoxy(13,2);
for(j=1;j<5;j++)
{
itoa(y[j],buffer);
lcd_puts(buffer);
lcd_putsf(",");
}
}
//************************************************** ******
void Display_LCD_3(char z1,char z2,char z3,char z4)
{
int j;
char buffer[20],z[12];
lcd_gotoxy(13,3);
for(j=1;j<5;j++)
{
itoa(z[j],buffer);
lcd_puts(buffer);
lcd_putsf(",");
}
}
//************************************************** ******