📄 步进电机.lst
字号:
C51 COMPILER V8.05a 步絖电籣 10/23/2010 16:06:23 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 步絖电籣
OBJECT MODULE PLACED IN 步进电机.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 步进电机.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:上位机控制步进电机程序
5 使用芯片:AT89S52 或者 STC89C52
6 晶振:11.0592MHZ
7 编译环境:Keil
8 作者:zhangxinchunleo
9 网站:www.ourhc.cn
10 淘宝店:汇诚科技 http://shop36330473.taobao.com
11 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
12
13 *********************************************************************/
14
15 #include<reg52.h>
16 #define uchar unsigned char
17 #define uint unsigned int
18
19 //电机控制专用数据
20 /*****P1.0=A ;P1.1=B ;P1.2=B' ; P1.3=A'****/
21
22 /*******************************正转数组**************************************************/
23 code uchar runz[8]={
24 0x05,0x01,0x09,0x08,0x0a,0x02,0x06,0x04
25 };
26 //两相四线八拍工作方式
27 /*******************************反转数组**************************************************/
28 code uchar runf[8]={
29 0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05
30 };
31 //两相四线八拍工作方式
32 uchar keycan=0; //键值
33 uchar i,j,k,z;
34 unsigned char receive_count; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
35 uchar add_temp=0,rdu_temp=0;//定义加减速的控制值
36 uchar oper_temp=0;
37
38 int y=10;//定义转动速度,数值越大电机转速越慢反之则快
39
40 sbit P2_0=P2^0;//正转按键
41 sbit P2_1=P2^1;//反转按键
42 sbit P2_2=P2^2;//电机加圈
43 sbit P2_3=P2^3;//电机减圈
44
45 /***************************************************************************
46 函数声明
47 ***********************************************************************/
48 void delay(i) ;
49 void zrun();
50 void frun() ;
51 void Init_Com(void);
52
53 /********************************************************************
54 主程序
55 *********************************************************************/
C51 COMPILER V8.05a 步絖电籣 10/23/2010 16:06:23 PAGE 2
56 main()
57 {
58 1 Init_Com();
59 1 while(1)
60 1 {
61 2
62 2 if ( RI ) //扫描判断是否接收到数据,
63 2 {
64 3 receive_count = SBUF;
65 3 RI=0; //RI
66 3 //判断串口接收的字符类型
67 3 switch( receive_count)
68 3 {
69 4 case 'A': keycan=1;break; //接收到的字符为B 是keycan=1
70 4 case 'B': keycan=2;break; //接收到的字符为C 是keycan=1
71 4 case 'C': add_temp=1;break; //接收到的字符为D 是电机加速add_temp=1
72 4 case 'D': rdu_temp=1;break; //接收到的字符为E是 电机加减速rdu_temp=1
73 4 case 'E':
74 4 keycan=0;
75 4 rdu_temp=0;
76 4 add_temp=0;
77 4 break; //接收到的字符为F 是keycan=0
78 4 }
79 3 }
80 2 switch (keycan) //判断电机的工作状态
81 2 {
82 3 case 0: break;
83 3 case 1:
84 3 {
85 4 zrun();
86 4 }
87 3 break;
88 3 case 2:
89 3 {
90 4 frun();
91 4 }
92 3 break;
93 3 }
94 2 if(P2_0==0) //如果电机正转按键按下
95 2 {
96 3 keycan=1; //键值等于1
97 3 }
98 2 if(P2_1==0) //如果电机反转按键按下
99 2 {
100 3 keycan=2; //键值等于2
101 3 }
102 2
103 2 if((P2_2==0)||(rdu_temp==1)) // 电机加速
104 2 {
105 3 delay(200);
106 3 y=y+2;
107 3 rdu_temp=0;
108 3 }
109 2 if((P2_3==0)||(add_temp))
110 2 {
111 3 delay(200); // 电机减速
112 3 y=y-2;
113 3 add_temp=0;
114 3 }
115 2 }
116 1 }
117
C51 COMPILER V8.05a 步絖电籣 10/23/2010 16:06:23 PAGE 3
118 /***************************************************************************************
119 串口初始化函数
120 ***************************************************************************************/
121 void Init_Com(void)
122 {
123 1 TMOD = 0x20;
124 1 PCON = 0x00;
125 1 SCON = 0x50;
126 1 TH1 = 0xFd;
127 1 TL1 = 0xFd;
128 1 TR1 = 1;
129 1 }
130
131 /********************************************************************
132 延时程序
133 *********************************************************************/
134 void delay(i)//延时函数
135 {
136 1 for(j=0;j<i;j++)
137 1 for(k=0;k<150;k++);
138 1 }
139
140 /********************************************************************
141 步进电机正传程序
142 *********************************************************************/
143
144 void zrun()// 正转运行
145 {
146 1
147 1 for(z=0;z<8;z++)
148 1 {
149 2 P1=runz[z];
150 2 delay(y);
151 2 }
152 1 }
153 /********************************************************************
154 步进电机反转程序
155 *********************************************************************/
156 void frun()// 反转运行
157 {
158 1 for(z=0;z<8;z++)
159 1 {
160 2 P1=runf[z];
161 2 delay(y);
162 2 }
163 1 }
164
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 243 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 11 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -