步进电机加减速运行程C程序
- 格式:doc
- 大小:44.50 KB
- 文档页数:4
1./******************************************************************/
2./*****************************************************************/
3./*
4./* 步进电机加减速运行程
序
5./* 步进电机启动时,转速由慢到快逐步加
速。
6./* 步进电机匀速运
行
7./* 步进电机由快到慢逐步减速到停止
8./*
9./******************************************************************/
10.
11.#include
12.#include
13.
14.#define uchar unsigned char
15.#define uint unsigned int
16.
17.sbit addr0 = P1^4;
18.sbit addr1 = P1^5;
19.sbit addr2 = P1^6;
20.sbit addr3 = P1^7;
21.
22.uchar code FFW[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//正转数组
23.uchar code REV[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//反转数组
24.uchar rate ;
25./********************************************************/
26./*
27./* 延时
28./* 11.0592MHz时钟,
29./*
30./********************************************************/
31.void delay()
32. {
33. uchar k;
34. uint s;
36.do
37. {
38.for(s = 0 ; s <100 ; s++) ;
39. }while(--k);
40. }
41.
42.
43.void delay2(uchar k)
44. {
45.
46. uchar s;
47.for(s = 0 ; s 48. 49. } 50. 51./********************************************************/ 52./* 53./*步进电机正转 54./* 55./********************************************************/ 56.void motor_ffw() 57.{ 58. uchar i; 59. 60.for (i=0; i<8; i++) //一个周期转30度 61. { 62. P0 = FFW[i];//取数据 63. addr0 = 1; 64. addr1 = 0; 65. addr2 = 1; 66. addr3 = 1; 67. addr3 = 0; 68. delay(); //调节转速 69. } 70.} 71. 72./********************************************************/ 73./* 74./*步进电机反转 75./* 76./********************************************************/ 77.void motor_rev() 78.{ 80. 81.for (i=0; i<8; i++) //一个周期转30度 82. { 83. P0 = REV[i]; //取数据 84. addr0 = 1; 85. addr1 = 0; 86. addr2 = 1; 87. addr3 = 1; 88. addr3 = 0; 89. delay(); //调节转速 90. } 91.} 92. 93./******************************************************** 94.* 95.*步进电机运行 96.* 97.*********************************************************/ 98.void motor_turn() 99.{ 100. uchar x; 101. rate=0x30; 102. x=0xf0; 103.do 104. { 105. motor_ffw(); //正转加速 106. rate--; 107. }while(rate!=0x0a); 108. 109.do 110. { 111. motor_ffw(); //正转匀速 112. x--; 113. }while(x!=0x01); 114. 115.do 116. { 117. motor_ffw(); //正转减速 118. rate++; 119. }while(rate!=0x30); 120.do 121. { 122. motor_rev(); //反转加速