上传了普中资料到deepseek,不断的询问改进,下载验证,deepseek AI给出了优化版本,运行非常丝滑,人工智能还是杠杠的
复制代码
- /*************************************************************************************
- * 标题: 步进电机试验四(采用4细分) *
- * *
- * 通过本例程了解步进马达使用及驱动程序编写 *
- *; 单相四拍通电驱动时序: *
- *; 正转: A/ B A B/ *
- * 反转: B/ A B A/ *
- * *
- * UDN2916电流控制真值表: *
- * I0 I1 输出电流 *
- * L L 最大 *
- * H L 最大*2/3 *
- * L H 最大*1/3 *
- * H H 0 *
- * 请学员一定要消化掉本例程 *
- * 注意:J14短路冒需断开 *
- **************************************************************************************/
- #include "reg52.h"
-
- #define speed 38
- #define MICRO_DELAY 10
-
- sbit PH1 = P1^0;
- sbit PH2 = P1^1;
- sbit I01 = P1^2;
- sbit I11 = P1^3;
- sbit I02 = P1^4;
- sbit I12 = P1^5;
-
- unsigned char A_I0_I1;
- unsigned char B_I0_I1;
-
- typedef struct {
- unsigned char PH1;
- unsigned char PH2;
- unsigned char I0_I1;
- } SegStep;
-
- // 顺时针旋转细分表(4细分)
- SegStep SegTable[] = {
- {0, 0, 0x00 | (0x01 << 2)}, // A反向,B反向,A=100%, B=67%
- {0, 1, 0x01 | (0x02 << 2)}, // A反向,B正向,A=67%, B=33%
- {1, 1, 0x02 | (0x00 << 2)}, // A正向,B正向,A=33%, B=100%
- {1, 0, 0x00 | (0x01 << 2)} // A正向,B反向,A=100%, B=67%
- };
-
- void delay(int time) {
- int i, j;
- for (j = 0; j < time; j++)
- for (i = 0; i < 120; i++);
- }
-
- void Go() {
- int i;
- for (i = 0; i < sizeof(SegTable)/sizeof(SegStep); i++) {
- PH1 = SegTable[i].PH1;
- PH2 = SegTable[i].PH2;
-
- A_I0_I1 = SegTable[i].I0_I1 & 0x03;
- B_I0_I1 = (SegTable[i].I0_I1 >> 2) & 0x03;
-
- I01 = A_I0_I1 & 0x01;
- I11 = (A_I0_I1 >> 1) & 0x01;
- I02 = B_I0_I1 & 0x01;
- I12 = (B_I0_I1 >> 1) & 0x01;
-
- delay(MICRO_DELAY);
- }
- delay(speed);
- }
-
- void main() {
- while (1) {
- Go();
- }
- }
复制代码
|