久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于MC9S12X128的直流電機與步進電機源代碼
[打印本頁]
作者:
cgdragon
時間:
2018-5-26 00:54
標題:
基于MC9S12X128的直流電機與步進電機源代碼
基于MC9S12X128的直流電機與步進電機單片機源程序如下:
/********************************************
龍邱MC9S12XS128函數庫
Designed by Cherish
E-mail:chiusir@yahoo.cn
軟件版本:V1.0
最后更新:2015年12月28日
------------------------------------
Code Warrior 5.1
下載器:BDM2.3
Target : MC9S12XS128
備注;基于庫版本程序編寫
**********************************************/
#include "include.h"
unsigned char data[20],data1[7]={0x7F,0x3F,0x1F,0xF,0x7,0x3,0x1};
unsigned int falg=1,falg1=3,falg2=3,falg3=0,falg4=14,kkk;
void delayms(int ms) //延時函數
{
int ii,jj;
if (ms<1) ms=1;
for(ii=0;ii<ms;ii++)
for(jj=0;jj<3338;jj++); //40MHz--1ms
}
void bu1()//步進電機第一步
{PWM_Change_Duty(PWM2,0);//B_
PWM_Change_Duty(PWM3,100);//A
PWM_Change_Duty(PWM4,0);//B
PWM_Change_Duty(PWM5,0);//A_// A-AB-B-BA_-A_-A_B_-B_-B_A-A
}
void bu2()//2步
{PWM_Change_Duty(PWM2,0);
PWM_Change_Duty(PWM3,100);
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
void bu3()
{PWM_Change_Duty(PWM2,0);
PWM_Change_Duty(PWM3,0);
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
void bu4()
{PWM_Change_Duty(PWM2,0);
PWM_Change_Duty(PWM3,0);
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,100);
}
void bu5()
{PWM_Change_Duty(PWM2,0);
PWM_Change_Duty(PWM3,0);
PWM_Change_Duty(PWM4,0);
PWM_Change_Duty(PWM5,100);
}
void bu6()
{PWM_Change_Duty(PWM2,100);
PWM_Change_Duty(PWM3,0);
PWM_Change_Duty(PWM4,0);
PWM_Change_Duty(PWM5,100);
}
void bu7()
{PWM_Change_Duty(PWM2,100);
PWM_Change_Duty(PWM3,0);
PWM_Change_Duty(PWM4,0);
PWM_Change_Duty(PWM5,0);
}
void bu8()
{PWM_Change_Duty(PWM2,100);
PWM_Change_Duty(PWM3,100);
PWM_Change_Duty(PWM4,0);
PWM_Change_Duty(PWM5,0);
}
void bu()//步進電機整體程序
{
int i;
int kkk;//速度標志
kkk=falg4;
//步進電機順轉
if(falg3==0)
{
for(i=0;i<200;i++)
{
//按鍵減速選擇
if(PORTE_PE5==0)
{
while(PORTE_PE5==0);
falg4++;
if(falg4>17)
{
falg4=17;
}
delayms(20);//防抖動
break;
}
//按鍵加速選擇
if(PORTE_PE3==0)
{
while(PORTE_PE3==0);
falg4--;
if(falg4==10)
{
falg4=11;
}
delayms(20);
break;
}
//切換直流和步進
if(PORTE_PE2==0)
{
while(PORTE_PE2==0);
delayms(20);
if(falg==0)
{
falg=1;//直流步進標志
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
else
{ falg=0;
}
// PORTB_PB1=0;
break;
}
PWM_Change_Duty(PWM0,100);
PWM_Change_Duty(PWM1,100);
DDRB=~data1[17-falg4];//指示燈
bu1();
delayms(kkk);
bu2();
delayms(kkk);
bu3();
delayms(kkk);
bu4();
delayms(kkk);
bu5();
delayms(kkk);
bu6();
delayms(kkk);
bu7();
delayms(kkk);
bu8();
delayms(kkk);
//切換逆轉
if(PORTE_PE7==0)
{
while(PORTE_PE7==0);
falg3=1;//步進狀態標志
delayms(20);
break;
}
//切換停止
if(PORTB_PB0==0)
{
while(PORTB_PB0==0);
falg3=2;
delayms(20);
break;
}
}
}
//步進電機逆轉
else if(falg3==1)
{
for(i=0;i<200;i++)
{
if(PORTE_PE5==0)
{
while(PORTE_PE5==0);
falg4++;
if(falg4>17)
{
falg4=17;
}
delayms(20);
break;
}
if(PORTE_PE3==0)
{
while(PORTE_PE3==0);
falg4--;
if(falg4==10)
{
falg4=11;
}
delayms(20);
break;
}
if(PORTE_PE2==0)
{
while(PORTE_PE2==0);
delayms(20);
if(falg==0)
{
falg=1;
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
else
{ falg=0;
}
// PORTB_PB1=0;
break;
}
PWM_Change_Duty(PWM0,100);
PWM_Change_Duty(PWM1,100);
DDRB=~data1[17-falg4];
bu8();
delayms(kkk);
bu7();
delayms(kkk);
bu6();
delayms(kkk);
bu5();
delayms(kkk);
bu4();
delayms(kkk);
bu3();
delayms(kkk);
bu2();
delayms(kkk);
bu1();
delayms(kkk);
//切換順轉
if(PORTE_PE6==0)
{
while(PORTE_PE6==0);
falg3=0;
delayms(20);
break;
}
if(PORTB_PB0==0)
{
while(PORTB_PB0==0);
falg3=2;
delayms(20);
break;
}
}
}
//停止步進電機
else
{
if(PORTE_PE2==0)
{
while(PORTE_PE2==0);
delayms(20);
if(falg==0)
{
falg=1;
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
else
{ falg=0;
}
}
if(PORTE_PE6==0)
{
while(PORTE_PE6==0);
falg3=0;
delayms(20);
}
if(PORTE_PE7==0)
{
while(PORTE_PE7==0);
falg3=1;
delayms(20);
}
PWM_Change_Duty(PWM0,0);
PWM_Change_Duty(PWM1,0);
}
}
void main(void)
{
unsigned char LedCnt=0;
DDRB = 0x00;
/* put your own code here */
PLL_Init(PLL160);
EnableInterrupts;
PWM_Init(PWM0,100,100);
PWM_Init(PWM1,100,100);
PWM_Init(PWM2,100,100);
PWM_Init(PWM3,100,0);
PWM_Init(PWM4,100,100);
PWM_Init(PWM5,100,0);
while(1)
{
//下面直流和步進差不多
if(PORTE_PE2==0)
{
while(PORTE_PE2==0);
delayms(20);
if(falg==0)
{
falg=1;
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
else
{ falg=0;
}
}
if(falg==1)
{
if(PORTE_PE6==0)
{ ;
while(PORTE_PE6==0);
PWM_Change_Duty(PWM4,100);
PWM_Change_Duty(PWM5,0);
}
if(PORTE_PE7==0)
{
while(PORTE_PE7==0);
PWM_Change_Duty(PWM4,0);
PWM_Change_Duty(PWM5,100);
}
if(PORTE_PE3==0)
{
while(PORTE_PE3==0);
if(falg1==10)
{falg1=3;
}
falg1++;
if(falg1>7)
{
falg1=7;
}
}
if(PORTE_PE5==0)
{
while(PORTE_PE5==0);
if(falg1==10)
{falg1=3;
}
falg1--;
if(falg1==0)
{
falg1=1;
}
}
if(falg1!=10)
{
PWM_Change_Duty(PWM1,35+falg1*2);
DDRB=~data1[falg1-1];
}
if(PORTB_PB0==0)
{
PWM_Change_Duty(PWM1,0);
falg1=10;
while(PORTB_PB0==0);
}
delayms(20);
}
else
{
bu();
}
}
}
復制代碼
main.docx
2018-5-26 00:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
15.22 KB, 下載次數: 5, 下載積分: 黑幣 -5
作者:
admin
時間:
2018-5-26 02:26
需要補充原理圖和完整源碼才能獲得100積分
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
综合色久
|
激情五月综合网
|
一级毛片在线视频
|
国产欧美精品一区二区
|
羞羞免费网站
|
爱爱小视频
|
亚洲第一网站
|
久一久
|
国产91精品久久久久久久网曝门
|
国产免费一区二区三区免费视频
|
成人影视网
|
我想看一级黄色毛片
|
精品国产一区探花在线观看
|
精品久久久久久国产
|
久视频在线
|
亚洲欧洲精品在线
|
国产1区
|
91在线资源
|
精品国产欧美一区二区
|
欧美性视频在线播放
|
91在线精品视频
|
国产黄色av电影
|
亚洲精彩视频在线观看
|
天天插天天操
|
综合精品久久久
|
国产福利在线播放
|
日本粉嫩一区二区三区视频
|
国产精品福利在线观看
|
国产成人精品一区
|
欧美偷偷操
|
av喷水
|
欧美一区二区网站
|
亚洲成人一区
|
美女一级毛片
|
午夜视频在线
|
国产精品免费一区二区三区四区
|
中文字幕99
|
日日操夜夜摸
|
夜夜爽99久久国产综合精品女不卡
|
亚洲精彩视频在线观看
|
成人欧美一区二区三区在线播放
|