最近項目關鍵技術測試,需要用到單片機控制步進電機驅動一個機械件,因此根據(jù)硬件配置編寫了一些代碼,供大家參考。
硬件配置:STC15F2K60S2單片機、28BYJ-48步進電機(5V、12V兼容)、驅動器為UN2003AN。
代碼在附件中。
- //此代碼比較抽象:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define MotorData P0
- uchar phasecw[8] ={0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9};//順時針
- void delay(uint a,b)
- {
- uint i,k,j;
- for(i=11;i>0;i--)
- {
- for(k=a;k>0;k--)
- {
- for(j=b;j>0;j--);
- }
- }
- }
- sbit P1_0=P1^0; //氣泵
- sbit stop=P1^1;
- main()
- {
- uint n,r,m;
- MotorData=0xf0;
- while(stop)
- {
- for(n=6;n>1;n--)
- {
- for(r=85;r>0;r--)
- {
- for(m=0;m<8;m++)
- {
- MotorData=phasecw[m];
- delay(100,1);
- }
-
- }
- if(!stop) delay(100,1); //關機時、電源低于10%時,電機恢復原位,可增加位置
- else
- {
- MotorData=0xf0;
- delay(2000,100); //insert power manage
- P1_0=0;
- delay(2000,100); //insert power manage
- P1_0=1;
- }
- }
- for(r=87;r>0;r--)
- {
- for(m=0;m<8;m++)
- {
- MotorData=phasecw[m];
- delay(100,1);
- }
-
- }
- MotorData=0xf0;
- if(!stop) delay(100,1); //關機時,電機恢復原位 ,可增加位置
- else
- {
- delay(2000,1000);
- n=6;
- }
- }
- }
復制代碼
上述源碼word:
STC15F2K60S2控制步進電機程序.docx
(12.68 KB, 下載次數(shù): 36)
2019-6-11 09:29 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|