步進機加速轉,LED提示燈
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (55.54 KB, 下載次數: 74)
下載附件
2021-5-19 04:54 上傳
51hei.png (34.62 KB, 下載次數: 79)
下載附件
2021-5-19 04:55 上傳
單片機源程序如下:
- #include <reg51.h> //包含單片機頭文件
- //宏定義方便使用
- #define uint unsigned int
- #define uchar unsigned char
- uchar code FFW[]= //8拍編碼
- {
- 0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
- };
- sbit K1 = P3^0;//定義用符號k1來表示P3.0引腳
- sbit K2 = P3^1;
- sbit K3 = P3^2;
- sbit K4 = P3^3;
- sbit K5 = P3^4;
- uchar Pos_N=1; //定義正轉圈數變量
- uchar Inv_N=2; //定義反轉圈數變量
- uchar Run_flag=0; //電機運行的標志
- uint speed=20;
- /*-----------------------------------
- 延時函數
- ------------------------------------*/
- void DelayMS(uint ms)
- {
- uchar i;
- while(ms--)
- {
- for(i=0;i<20;i++);
- }
- }
- /*-----------------------------------
- 正轉函數
- ------------------------------------*/
- void SETP_MOTOR_FFW()
- {
- static uint i=0,j=0;
- if(++i>speed*10) //延時
- {
- i=0;
- P1=FFW[j]; //送8拍
- if(++j>7)j=0;
- }
-
- }
- /*-----------------------------------
- 反轉函數
- ------------------------------------*/
- void SETP_MOTOR_REV()
- {
- static uint i=0,j=0;
- if(++i>speed*10) //延時
- {
- i=0;
- P1=FFW[7-j]; //倒序送八拍編碼
- if(++j>7)j=0;
- }
- }
- //*********************************
- //按鍵掃描程序
- //mode:0,不支持連續按;1,支持連續按;
- //*********************************
- uchar KEY_Scan()
- {
- static uchar key_up=1;//按鍵按松開標志
- if(key_up&&(K1==0||K2==0||K3==0||K4==0||K5==0))
- {
- DelayMS(5);//去抖動
- if(K1==0||K2==0||K3==0||K4==0||K5==0)
- {
- key_up=0;
- if(K1==0)return 1;
- else if(K2==0)return 2;
- else if(K3==0)return 3;
- else if(K4==0)return 4;
- else if(K5==0)return 5;
- }
- else
- {
- return 0;
- }
- }else if(K1==1&&K2==1&&K3==1&&K4==1&&K5==1)key_up=1;
- return 0;// 無按鍵按下
- }
- /*-----------------------------------
- 主函數
- ------------------------------------*/
- void main()
- {
- uchar key_num=0;
- P1=0x01; //電機初始位置
- P2=0xfb; //停止指示燈
- while(1)
- {
- key_num=KEY_Scan(); //掃面按鍵
- if(key_num==1) //正轉
- {
- P2=0xfe; //正轉指示燈
- Run_flag=1;//正轉標志
- }
- else if(key_num==2)//反轉
- {
- P2=0xfd; //反轉指示燈
- Run_flag=2;//反轉標志
- }
- else if(key_num==3)//停止
- {
- P2=0xfb; //停止指示燈
- P1=0x01; //回到初始位置
- Run_flag=0;//停止標志
- }
- else if(key_num==4)//加速
- {
- if(speed!=0)
- {
- speed-=1;
- }
- }
- else if(key_num==5)//減速
- {
- speed+=1;
- if(speed>100) //限定調速范圍0-100
- {
- speed=100;
- }
- }
- if(Run_flag==1)//正轉標志
- {
- SETP_MOTOR_FFW();
- }
- else if(Run_flag==2)//反轉標志
- {
- SETP_MOTOR_REV();
- }
- else
- {
- P2=0xfb; //停止指示燈
- }
-
- }
- }
復制代碼
所有資料51hei提供下載:
步進機.rar
(60.76 KB, 下載次數: 93)
2021-5-17 18:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|