|
設(shè)計(jì)包含PROTEUS仿真電路圖和程序代碼。設(shè)計(jì)能實(shí)現(xiàn)步進(jìn)電機(jī)的啟停控制,加減檔調(diào)速并顯示當(dāng)前檔位和速度。
- /***步進(jìn)電機(jī)調(diào)速實(shí)驗(yàn)***/
- /***實(shí)驗(yàn)內(nèi)容:通過(guò)程序能夠?qū)崿F(xiàn)電機(jī)的啟停,正反轉(zhuǎn),加減速。同時(shí)顯示電機(jī)當(dāng)前檔位和速度。***/
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- void Delay_ms(uint x);//延時(shí)函數(shù)
- void Key_pros(); //聲明按鍵函數(shù)
- void MotorControl_fwd();//聲明電機(jī)控制函數(shù)
- void MotorControl_bwd();
- void Dig_display();//4位數(shù)碼管顯示函數(shù)
- void Data_pros(uint temp);//速度處理顯示
- uchar code Motor_fwd[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //正轉(zhuǎn)動(dòng)數(shù)組
- uchar code Motor_bwd[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //反轉(zhuǎn)動(dòng)數(shù)組
- uchar code segcode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共陰顯示段碼,用于共陽(yáng)數(shù)碼管取反。
- uchar V_pros[4];
- uchar count=5; //初始擋位5檔
- uint loop=50,j; //初始速度50ms一步,通過(guò)改變loop調(diào)整調(diào)整脈沖頻率達(dá)到調(diào)速的目的
- uchar flag=1; //正反轉(zhuǎn)標(biāo)志位 1正0反
- uchar state=1; //啟停標(biāo)志位 1啟動(dòng)0關(guān)閉
- sbit Motor_Dcl=P1^2; //電機(jī)減速
- sbit Motor_Acl=P1^1; //電機(jī)加速
- sbit Motor_Bwd=P1^4; //電機(jī)反轉(zhuǎn)
- sbit Motor_Fwd=P1^3; //電機(jī)正轉(zhuǎn)
- sbit Motor_Control=P1^0; //電機(jī)啟停
- sbit LSA=P2^0;
- sbit LSB=P2^1;
- sbit LSC=P2^2;
- void main()
- {
- while(1)
- {
- uint speed;
- Key_pros();
- while(state==1)
- {
- if(flag==1)
- {
- MotorControl_fwd();
- P2=~segcode[count];
- Key_pros();
- }
- if(flag==0)
- {
- MotorControl_bwd();
- Key_pros();
- P2=~segcode[count];
- }
- switch(loop)
- {
- case 10:speed=1900;break;
- case 20:speed=1800;break;
- case 30:speed=1700;break;
- case 40:speed=1600;break;
- case 50:speed=1500;break;
- case 60:speed=1400;break;
- case 70:speed=1300;break;
- case 80:speed=1200;break;
- case 90:speed=1100;break;
- default:break;
- }
- Data_pros(speed);
- Dig_display();
- }
- }
- }
- /***
- 函數(shù)名: Delay()
- 函數(shù)功能:延時(shí)函數(shù)
- 輸入:j
- 輸出:無(wú)
- ***/
- void Delay_ms(uint x)
- {
-
- uint i,j;
- for(i=0;i<x;i++)
- for(j=0;j<112;j++);
- }
- /*******************************************************************************
- * 函 數(shù) 名 : delay
- * 函數(shù)功能 : 延時(shí)函數(shù),i=1時(shí),大約延時(shí)10us
- *******************************************************************************/
- void delay(uint i)
- {
- while(i--);
- }
- /***
- 函數(shù)名: MotorControl_fwd()
- 函數(shù)功能: 電機(jī)正轉(zhuǎn)函數(shù)
- 輸入:無(wú)
- 輸出:無(wú)
- ***/
- void MotorControl_fwd()
- {
- uchar z;
- for(z=0;z<8;z++)
- {
- P3=Motor_fwd[z];
- Delay_ms(loop);
- }
- }
- /***
- 函數(shù)名: MotorControl_bwd()
- 函數(shù)功能: 電機(jī)反轉(zhuǎn)函數(shù)
- 輸入:無(wú)
- 輸出:無(wú)
- ***/
- void MotorControl_bwd()
- {
- uchar z;
- for(z=0;z<8;z++)
- {
- P3=Motor_bwd[z];
- Delay_ms(loop);
- }
- }
- /***
- 函數(shù)名:void Key_pros()
- 函數(shù)功能: 電機(jī)反轉(zhuǎn)函數(shù)
- 輸入:
- 輸出:
- ***/
- void Key_pros()
- {
- P1=0xff;
- if(P1!=0xff)
- Delay_ms(10);
- if(P1!=0xff)
- {
- switch(P1)
- {
- case 0xfe:state=~state;break;
- case 0xfd:loop-=10;count++;break;
- case 0xfb:loop+=10;count--;break;
- case 0xf7:flag=1;break;
- case 0xef:flag=0;break;
- }
- if(loop<10) //超速保護(hù),最快10ms一步
- {
- count=9;loop=10;
- }
- else if(loop>90) //最低轉(zhuǎn)速限制90ms一步
- {
- count=1;loop=90;
- }
- }
- while(P1!=0xff); //等待按鍵釋放
- }
- /***
- 函數(shù)名: VDisplay_pros();
- 函數(shù)功能: 速度處理顯示
- 輸入:speed
- 輸出:無(wú)
- ***/
- void Data_pros(uint temp)
- {
- V_pros[0]=segcode[temp/1000];
- V_pros[1]=segcode[temp%1000/100];
- V_pros[2]=segcode[temp%100/10];
- V_pros[3]=segcode[temp%10];
- }
- /***
- 函數(shù)名:void Dig_display()
- 函數(shù)功能: 4位數(shù)碼管顯示函數(shù)
- 輸入:無(wú)
- 輸出:無(wú)
- ***/
- void Dig_display()
- {
- uint i;
- for(i=0;i<4;i++)
- {
- switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
- {
- case(0):
- LSA=0;LSB=0;LSC=0; break;//顯示第0位
- case(1):
- LSA=1;LSB=0;LSC=0; break;//顯示第1位
- case(2):
- LSA=0;LSB=1;LSC=0; break;//顯示第2位
- case(3):
- LSA=0;LSB=1;LSC=1; break;//顯示第3位
- }
- P0=~V_pros[i];//發(fā)送段碼
- delay(100); //間隔一段時(shí)間掃描
- P0=0x00;//消隱
- }
- }
復(fù)制代碼
|
-
-
-
-
stepmotor.rar
2020-8-7 12:31 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
33.92 KB, 下載次數(shù): 34, 下載積分: 黑幣 -5
|