程序接線圖.JPG (92.72 KB, 下載次數: 51)
下載附件
2019-10-4 16:11 上傳
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Y=1; //初始化速度
/********************************************************
控制位定義
********************************************************/
sbit shi_neng=P1^0; // 使能控制位
sbit fang_shi=P1^1; // 工作方式控制位
sbit fang_xiang=P1^2;// 旋轉方向控制位
sbit mai_chong=P1^3; // 脈沖控制位
sbit zheng_zhuan=P2^0; // 正轉
sbit fan_zhuan=P2^1; // 反轉
sbit jia_su=P2^2; // 加速
sbit jian_su=P2^3; // 減速
/********************************************************
延時函數
********************************************************/
void delay(uchar i)//延時函數
{
uchar m,n,s;
for(m=i;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************
加速函數
********************************************************/
void jia()
{
Y=Y-1;
if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不變
}
/********************************************************
減速函數
********************************************************/
void jian()
{
Y=Y+1;
if(Y>=100){Y=100;}
}
/********************************************************
主函數
********************************************************/
main()
{
shi_neng=1; // 使能控制位
fang_shi=1; // 工作方式控制位
fang_xiang=1;// 旋轉方向控制位
mai_chong=1; // 脈沖控制位
while(1)
{
if(zheng_zhuan==0){fang_xiang=1;}
if(fan_zhuan==0){fang_xiang=0;}
if(jia_su==0){delay(10);while(!jia_su);jia();}
if(jian_su==0){delay(10);while(!jian_su);jian();}
mai_chong=~mai_chong; //輸出時鐘脈沖
delay(Y); //延時(括號內數值越小,電機轉動速度越快)
}
}
|