|
5線4項(xiàng)步進(jìn)電機(jī)做的云臺(tái),仿真可以運(yùn)行,實(shí)物連接不轉(zhuǎn)。求大神指點(diǎn)原因��!愁啊....
以下是 單片機(jī)代碼:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit P10=P1^0;
- sbit P11=P1^1;
- sbit P12=P1^2;
- sbit P13=P1^3;
- uchar i,a,flag,u;
- code tabup[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//豎直電機(jī)正轉(zhuǎn) 1~2 相勵(lì)磁
- code tabdown[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//豎直電機(jī)反轉(zhuǎn) 1~2 相勵(lì)磁
- code tableft[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//水平電機(jī)正轉(zhuǎn) 1~2 相勵(lì)磁
- code tabright[]={0x60,0x20,0x30,0x10,0x90,0x80,0xc0,0x40};//水平電機(jī)反轉(zhuǎn) 1~2 相勵(lì)磁
- void control(uchar);
- void moveauto();
- void moveup();
- void movedown();
- void moveleft();
- void moveright();
- void delay(uchar);
- void init()//初始化
- {
- TMOD=0x20;//設(shè)置定時(shí)器 1 為工作方式 2
- TH1=0xFA;
- TL1=0xFA;
- TR1=1;//開定時(shí)器
- PCON=0x80;
- SCON=0x50;//9600, n, 8,1
- EA=1;//開總中斷
- ES=1;//開串口中斷
- }
- void serial() interrupt 4//串口中斷
- {
- RI=0;
- a=SBUF;
- control(a);
- delay(1);
- }
- void control(uchar l)//中斷控制電機(jī)動(dòng)作
- {
- switch(l)
- {
- case 'A':moveup();break;
- case 'B':movedown();break;
- case 'C':moveleft();break;
- case 'D':moveright();break;
- case 'Z':flag=1;break;
- default:break;
- }
- }
- void delay(uint z)//延時(shí)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void moveup()//豎直方向向上
- {
- flag=0;
- if(P10!=1)
- {
- for(i=0;i<8;i++)
- {
- P2=tabup[i];
- delay(50);
- }
- }
- }
- void movedown()//豎直方向向下
- {
- flag=0;
- if(P11!=1)
- {
- for(i=0;i<8;i++)
- {
- P2=tabdown[i];
- delay(50);
- }
- }
- }
- void moveleft()//水平方向向左
- {
- flag=0;
- if(P12!=1)
- {
- for(i=0;i<8;i++)
- {
- P2=tableft[i];
- delay(50);
- }
- }
- }
- void moveright()//水平方向向右
- {
- flag=0;
- if(P13!=1)
- {
- for(i=0;i<8;i++)
- {
- P2=tabright[i];
- delay(50);
- }
- }
- }
- void moveauto()//自動(dòng)運(yùn)行
- {
- P1=0;
- while(!P10)
- {
- for(i=0;i<8;i++)
- {
- P2=tabup[i];
- delay(50);
- }
- }
- while(!P11)
- {
- for(i=0;i<8;i++)
- {
- P2=tableft[i];
- delay(50);
- }
- }
- while(!P12)
- {
- for(i=0;i<8;i++)
- {
- P2=tabdown[i];
- delay(50);
- }
- }
- while(!P13)
- {
- for(i=0;i<8;i++)
- {
- P2=tabright[i];
- delay(50);
- }
- }
- }
- void controlkey(uchar i)//按鍵控制電機(jī)動(dòng)作
- {
- switch(i)
- {
- case 1:moveup();break;
- case 2:movedown();break;
- case 4:moveleft();break;
- case 8:moveright();break;
- case 16:flag=1;break;
- default:break;
- }
- }
- void main()
- {
- P1=0;
- flag=0;
- init();
- while(1)
- {
- if(flag==1)
- {
- moveauto();//自動(dòng)運(yùn)行
- }
- P0=0xff
- u=P0;
- controlkey(u);
- }
- }
復(fù)制代碼
仿真連接
實(shí)物連接是按照仿真連接的 ,并且單片機(jī)和2003驅(qū)動(dòng)板都加電源的 ,而且實(shí)物連線都 檢查很多遍,確認(rèn)實(shí)物連接沒(méi)問(wèn)題
|
|