控制步进电机速度,转角,方向,加了12864和按键的人机交互
完整代码下载:
步进电机控制.zip
(73.91 KB, 下载次数: 60)
部分代码预览:
- #include <reg51.h>
- #include <stdio.h>
- #include "LCD_12864.h"
- #include "Menu_Key_Scan.h"
- #include "Init.h"
- #include "Control.h"
- extern unsigned char Start_Flag; //开始启动标志
- unsigned int Timer0_i=0;
- unsigned char Flag_100ms=0; //100ms计时标志位
- unsigned char Flag_s=0; //1s计时标志位
- extern unsigned int angle_set;
- extern unsigned int angle_measure;
- void main()
- {
- Delay(100); //等待复位
- LcmInit();
- Init();
- /***********************************初始化*******************************/
- PutStr(1,0,"转向: 顺时针");
- PutStr(1,0,"转向: 顺时针");
- PutStr(2,0,"角度: 00°00'00'\0");
- PutStr(2,0,"角度: 00°00'00'\0");
- PutStr(0,0,"电机转速:00r/min\0");
- /***********************************初始化*******************************/
- while(1)
- {
-
-
- while(!Start_Flag)
- {
- Key_Scan (); //键盘扫描,在未开始启动电机的时候
- }
- EA=1; //开总中断
- TR0=1; //开定时器T0
- TR1=1; //开计数器T1
- Motor_Control(); //1ms执行一次
- if(Flag_100ms)
- {
- Code_Measure(); //编码器100ms读一次数
- Flag_s++;
-
- if(angle_set>=angle_measure)
- {
- Motor_Stop();
- }
- }
-
-
- }
-
- }
- void Timer0(void) interrupt 1 using 3
- {
- Timer0_i++;
- if(Timer0_i==100)
- {
- Flag_100ms=1;
- Timer0_i=0;
- }
- }
复制代码
|