-
大小: 71KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-12-21
- 語(yǔ)言: 其他
- 標(biāo)簽: 步進(jìn)電機(jī)??控制程序??PROTEUS??
資源簡(jiǎn)介
本文介紹了單片機(jī)控制步進(jìn)電機(jī)的系統(tǒng)。在電氣時(shí)代的今天,電動(dòng)機(jī)一直在現(xiàn)代化的生產(chǎn)和生活中起著十分重要的作用。步進(jìn)電機(jī)是機(jī)電控制中一種常用的執(zhí)行機(jī)構(gòu), 其原理是通過(guò)對(duì)它每相線圈中的電流和順序切換來(lái)使電機(jī)作步進(jìn)式旋轉(zhuǎn)。本系統(tǒng)的硬件組成主要有:51系列單片機(jī)、L298N驅(qū)動(dòng)電路、直流電壓源等。同時(shí)對(duì)系統(tǒng)設(shè)計(jì)中所用到的一些軟件都進(jìn)行了介紹。本系統(tǒng)用51系列單片機(jī)和L298N電機(jī)驅(qū)動(dòng)芯片并加入了鍵盤(pán)來(lái)控制步進(jìn)電機(jī)實(shí)現(xiàn)轉(zhuǎn)向、轉(zhuǎn)速等。系統(tǒng)中使用的是永磁式二相步進(jìn)電機(jī),相應(yīng)的驅(qū)動(dòng)和控制電路對(duì)于其整體性能起著非常重要的作用。
經(jīng)系統(tǒng)調(diào)試,能夠很好的控制步進(jìn)電機(jī)的正反轉(zhuǎn)、加減速、急停,從而達(dá)到預(yù)期目的。整個(gè)系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、可靠性高、成本低和實(shí)用性強(qiáng)等特點(diǎn),具有較高的通用性和應(yīng)用推廣價(jià)值。

代碼片段和文件信息
#include“reg51.h“
#include“intrins.h“
#include“math.h“
#include“absacc.h“
#define??PORTA??XBYTE[0x8500]
#define??PORTB??XBYTE[0x8502]
#define??PORTC??XBYTE[0x8504]
#define??PORTC0?XBYTE[0x8506]
#define?nop?_nop_()
#define?Right_RUN??1
#define?Left_RUN??0
unsigned?long?RunSpeed=76;
unsigned??char??RUNState=1;
sbit??RS=P2^0;
sbit??RW=P2^1;
sbit??E=P2^2;
sbit?P17=P1^7;
bit???flag=0;
unsigned?char?xx[]=“speed(n/min):“;
unsigned?char?SD[]=“76“;
char??state[2][14]={“direction:cw““direction:ccw“};
unsigned?char??FLGINMA=0;
unsigned??char??ts=0x01;
unsigned??int???a;
main()
{
??void??OPJIAN();
??unsigned?char?JIAN();
??unsigned?char?JIANZHI();
???void??speed();
?void??SHOW_LCD();
?void??show_state();
?void??write1();
?void??writ2(unsigned?char?i);
?void??delay();
?void?time();
?void??busy();
?unsigned??char??i;
??i=0x90;
??PORTC0=i;
??i=0x01;
??TMOD=i;
??t=0x10;
??a=0x0f;
??TH0=0x10;
??TL0=0x0f;
??FLG=INMA;??
??SHOW_LCD();
??show_state();
??EA=1;
??ET0=1;
??TR0=1;
while(1)
{
?i=JIAN();
?????if(i!=0)
{
??time();
??time();
?}
i=JIAN();
if(i!=0)
{
INMA=JIANZHI();
???OPJIAN();
?time();
}
??if(FLG!=INMA||flag==1)
???{??FLG=INMA;
SHOW_LCD();
??????show_state();
flag=0;
}
??}
??}
?void?SHOW_LCD()/*lcd設(shè)置程序*/
?{
??P1=0x38;
??write1();
??delay();
??P1=0x38;
??write1();
??delay();?
??P1=0x38;
??write1();
??delay();
??P1=0x01;
??write1();
?delay();
??P1=0x0f;
??write1();
?delay();
??P1=0x06;
??write1();
??delay();
??P1=0x0c;
??write1();
??
?}
void??show_state()/*狀態(tài)顯示程序*/
??{
???unsigned?char?i=0;
???P1=0x80;
write1();
?while(xx[i]!=‘\0‘)
??{
????writ2(xx[i]);
?i++;
?delay();
?}
???i=0;
??while(SD[i]!=‘\0‘)
????{
??writ2(SD[i]);
??delay();
??i++;
?
??}
??P1=0xc0;
??write1();
??i=0;
??if(RUNState==Right_RUN)
?while(state[0][i]!=‘\0‘)
???{
??writ2(state[0][i]);
??i++;
?}
else
??if(RUNState==Left_RUN)
??while(state[1][i]!=‘\0‘)
???{
??writ2(state[1][i]);
???i++;
?}
???}
void??write1()/*lcd寫(xiě)控制字*/
?{
???RS=0;
RW=0;
E=0;
busy();
E=1;
??}
void??writ2(?unsigned?char?i)/*lcd寫(xiě)數(shù)據(jù)*/
?{?P1=i;
???RS=1;
RW=0;
E=0;
???busy();
E=1;
}
?
?void?delay()/*延時(shí)程序*/
{
??unsigned?char??i;
??for(i=0;i<100;i++)
????{
????i=i;
?}
?
}
void?time()
{?unsigned?char?ij;
for(i=0;i<100;i++)
?{?
for(j=0;j<30;j++)
?{
???j=j;
??}
??}
}
void?busy()?????????//判斷LCD是否忙
{????
?do
?{
?P1=0xff;
??RS=0;
?????RW=1;
?????E=0;
??nop;
??E=1;
??}while(P17==1);
??
?}
?unsigned?char?JIAN()/*判斷是否有鍵按下*/
?{
??unsigned?char??ij;
?????i=0xff;
?????PORTA=i;
?????time();
?????i=0x00;
?????PORTB=i;
?????j=PORTA;
?????j=~j;
?????j=j&(0x0f);
?????return??j;
?}
unsigned?char?JIANZHI()/*讀鍵值程序*/
?{
???unsigned?ijdkm=1;
?i=0xfe;
?k=0x01;
?do
?{
?PORTB=i;
?j=PORTA;
?m=j&(0x01);
????if(m==0)
???d=k/2;
?else
? ???{
?m=j&(0x02);
?????if(m
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????181508??2007-08-18?20:16??C語(yǔ)言驅(qū)動(dòng)程序\步進(jìn)電機(jī).DSN
?????文件?????181508??2007-08-18?20:16??C語(yǔ)言驅(qū)動(dòng)程序\Last?Loaded?步進(jìn)電機(jī).DBK
?????文件????????814??2007-09-19?21:54??C語(yǔ)言驅(qū)動(dòng)程序\步進(jìn)電機(jī).PWI
?????文件????????807??2007-09-16?22:50??C語(yǔ)言驅(qū)動(dòng)程序\d.Opt
????.......??????1658??2007-08-17?16:47??C語(yǔ)言驅(qū)動(dòng)程序\d_Uv2.Bak
?????文件???????4103??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d.c
?????文件??????????0??2007-09-16?22:02??C語(yǔ)言驅(qū)動(dòng)程序\d.plg
?????文件??????10370??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d.LST
?????文件??????15057??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d.OBJ
?????文件?????????19??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d.lnp
?????文件??????16616??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d.M51
?????文件??????13292??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d
?????文件???????3696??2007-08-18?20:13??C語(yǔ)言驅(qū)動(dòng)程序\d.hex
????.......???????807??2007-08-18?20:14??C語(yǔ)言驅(qū)動(dòng)程序\d_Opt.Bak
?????文件???????1662??2007-08-18?20:05??C語(yǔ)言驅(qū)動(dòng)程序\d.Uv2
?????目錄??????????0??2007-08-16?15:02??C語(yǔ)言驅(qū)動(dòng)程序
-----------?---------??----------?-----??----
???????????????432135????????????????????17
評(píng)論
共有 條評(píng)論