欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機步進電機控制器
[打印本頁]
作者:
softdesign
時間:
2021-5-17 18:59
標題:
51單片機步進電機控制器
1 #include <reg51.h> //包含單片機頭文件
2 //宏定義方便使用
3 #define uint unsigned int
4 #define uchar unsigned char
5
6 uchar code FFW[]= //8拍編碼
7 {
8 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
9 };
10 sbit K1 = P3^0;
11 sbit K2 = P3^1;
12 sbit K3 = P3^2;
13 sbit K4 = P3^3;
14 sbit K5 = P3^4;
15 uchar Pos_N=1; //定義正轉圈數變量
16 uchar Inv_N=2; //定義反轉圈數變量
17 uchar Run_flag=0; //電機運行的標志
18 uint speed=20;
19 /*-----------------------------------
20 延時函數
21 ------------------------------------*/
22 void DelayMS(uint ms)
23 {
24 1 uchar i;
25 1 while(ms--)
26 1 {
27 2 for(i=0;i<20;i++);
28 2 }
29 1 }
30 /*-----------------------------------
31 正轉函數
32 ------------------------------------*/
33 void SETP_MOTOR_FFW()
34 {
35 1 static uint i=0,j=0;
36 1 if(++i>speed*10) //延時
37 1 {
38 2 i=0;
39 2 P1=FFW[j]; //送8拍
40 2 if(++j>7)j=0;
41 2 }
42 1
43 1 }
44 /*-----------------------------------
45 反轉函數
46 ------------------------------------*/
47 void SETP_MOTOR_REV()
48 {
49 1 static uint i=0,j=0;
50 1
51 1 if(++i>speed*10) //延時
52 1 {
53 2 i=0;
54 2 P1=FFW[7-j]; //倒序送八拍編碼
55 2 if(++j>7)j=0;
C51 COMPILER V8.02 MAIN 01/27/2021 19:00:20 PAGE 2
56 2 }
57 1 }
58 //*********************************
59 //按鍵掃描程序
60 //mode:0,不支持連續按;1,支持連續按;
61 //*********************************
62 uchar KEY_Scan()
63 {
64 1 static uchar key_up=1;//按鍵按松開標志
65 1 if(key_up&&(K1==0||K2==0||K3==0||K4==0||K5==0))
66 1 {
67 2 DelayMS(5);//去抖動
68 2 if(K1==0||K2==0||K3==0||K4==0||K5==0)
69 2 {
70 3 key_up=0;
71 3 if(K1==0)return 1;
72 3 else if(K2==0)return 2;
73 3 else if(K3==0)return 3;
74 3 else if(K4==0)return 4;
75 3 else if(K5==0)return 5;
76 3 }
77 2 else
78 2 {
79 3 return 0;
80 3 }
81 2 }else if(K1==1&&K2==1&&K3==1&&K4==1&&K5==1)key_up=1;
82 1 return 0;// 無按鍵按下
83 1 }
84 /*-----------------------------------
85 主函數
86 ------------------------------------*/
87
88 void main()
89 {
90 1 uchar key_num=0;
91 1 P1=0x01; //電機初始位置
92 1 P2=0xfb; //停止指示燈
93 1 while(1)
94 1 {
95 2 key_num=KEY_Scan(); //掃面按鍵
96 2 if(key_num==1) //正轉
97 2 {
98 3 P2=0xfe; //正轉指示燈
99 3 Run_flag=1;//正轉標志
100 3 }
101 2 else if(key_num==2)//反轉
102 2 {
103 3 P2=0xfd; //反轉指示燈
104 3 Run_flag=2;//反轉標志
105 3 }
106 2 else if(key_num==3)//停止
107 2 {
108 3 P2=0xfb; //停止指示燈
109 3 P1=0x01; //回到初始位置
110 3 Run_flag=0;//停止標志
111 3 }
112 2 else if(key_num==4)//加速
113 2 {
114 3 if(speed!=0)
115 3 {
116 4 speed-=1;
117 4 }
C51 COMPILER V8.02 MAIN 01/27/2021 19:00:20 PAGE 3
118 3 }
119 2 else if(key_num==5)//減速
120 2 {
121 3 speed+=1;
122 3 if(speed>100) //限定調速范圍0-100
123 3 {
124 4 speed=100;
125 4 }
126 3 }
127 2
128 2 if(Run_flag==1)//正轉標志
129 2 {
130 3 SETP_MOTOR_FFW();
131 3 }
132 2 else if(Run_flag==2)//反轉標志
133 2 {
134 3 SETP_MOTOR_REV();
135 3 }
136 2 else
137 2 {
138 3 P2=0xfb; //停止指示燈
139 3 }
140 2
141 2
142 2 }
143 1 }
復制代碼
加減速轉+提示燈
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1