控制步進電機速度,轉角,方向,加了12864和按鍵的人機交互
0.png (67.62 KB, 下載次數: 54)
下載附件
2016-12-4 00:24 上傳
完整代碼下載:
步進電機控制.zip
(73.91 KB, 下載次數: 60)
2016-11-29 19:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
部分代碼預覽:
- #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;
- }
- }
復制代碼
|