|
步進(jìn)機(jī)加速轉(zhuǎn),LED提示燈
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機(jī)源程序如下:
- #include <reg51.h> //包含單片機(jī)頭文件
- //宏定義方便使用
- #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; //定義正轉(zhuǎn)圈數(shù)變量
- uchar Inv_N=2; //定義反轉(zhuǎn)圈數(shù)變量
- uchar Run_flag=0; //電機(jī)運行的標(biāo)志
- uint speed=20;
- /*-----------------------------------
- 延時函數(shù)
- ------------------------------------*/
- void DelayMS(uint ms)
- {
- uchar i;
- while(ms--)
- {
- for(i=0;i<20;i++);
- }
- }
- /*-----------------------------------
- 正轉(zhuǎn)函數(shù)
- ------------------------------------*/
- 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;
- }
-
- }
- /*-----------------------------------
- 反轉(zhuǎn)函數(shù)
- ------------------------------------*/
- 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,不支持連續(xù)按;1,支持連續(xù)按;
- //*********************************
- uchar KEY_Scan()
- {
- static uchar key_up=1;//按鍵按松開標(biāo)志
- 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;// 無按鍵按下
- }
- /*-----------------------------------
- 主函數(shù)
- ------------------------------------*/
- void main()
- {
- uchar key_num=0;
- P1=0x01; //電機(jī)初始位置
- P2=0xfb; //停止指示燈
- while(1)
- {
- key_num=KEY_Scan(); //掃面按鍵
- if(key_num==1) //正轉(zhuǎn)
- {
- P2=0xfe; //正轉(zhuǎn)指示燈
- Run_flag=1;//正轉(zhuǎn)標(biāo)志
- }
- else if(key_num==2)//反轉(zhuǎn)
- {
- P2=0xfd; //反轉(zhuǎn)指示燈
- Run_flag=2;//反轉(zhuǎn)標(biāo)志
- }
- else if(key_num==3)//停止
- {
- P2=0xfb; //停止指示燈
- P1=0x01; //回到初始位置
- Run_flag=0;//停止標(biāo)志
- }
- else if(key_num==4)//加速
- {
- if(speed!=0)
- {
- speed-=1;
- }
- }
- else if(key_num==5)//減速
- {
- speed+=1;
- if(speed>100) //限定調(diào)速范圍0-100
- {
- speed=100;
- }
- }
- if(Run_flag==1)//正轉(zhuǎn)標(biāo)志
- {
- SETP_MOTOR_FFW();
- }
- else if(Run_flag==2)//反轉(zhuǎn)標(biāo)志
- {
- SETP_MOTOR_REV();
- }
- else
- {
- P2=0xfb; //停止指示燈
- }
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
步進(jìn)機(jī).rar
(60.76 KB, 下載次數(shù): 93)
2021-5-17 18:54 上傳
點擊文件名下載附件
|
評分
-
查看全部評分
|