|
51hei.png (49.23 KB, 下載次數(shù): 64)
下載附件
2020-5-29 15:35 上傳
普中 a2這是我的代碼(電機(jī)是一端連uln2003 5v電源 一端連的是OUT1)
/*直流電機(jī)控制*/
#include<reg52.h>
typedef char u8;
typedef int u16;
sbit up = P3^1; //加速按鍵
sbit down = P3^0; //減速按鍵
sbit start = P3^2; //開始按鍵
sbit in = P1^0;
u8 times = 0; //定時(shí)器T0計(jì)數(shù)
u8 pwm = 0; //初始pwm占空比為0
//延時(shí)函數(shù)
void delay(u16 num)
{
u16 x,y;
for(x = num;x > 0;x--)
for(y = 110;y > 0;y--);
}
//定時(shí)器T0初始化
void timer_T0()
{
TMOD = 0x01; //定時(shí)器T0模式1
TH0 = (65535 - 1000) / 256;
TL0 = (65535 - 1000) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
//加速
void key_up()
{
if(up == 0)
{
delay(2);
if(up == 0 && pwm <= 100)
{
pwm += 10;
if(pwm >= 100)
{
pwm = 100;
}
}while(!up);
}
}
//減速
void key_down()
{
if(down == 0)
{
delay(2);
if(down == 0 && pwm >=0)
{
pwm = pwm - 10;
if(pwm <= 0)
{
pwm = 0;
}
}while(!down);
}
}
/******主函數(shù):初始pwm占空比為0電機(jī)不轉(zhuǎn)動(dòng)*/
/******按下up鍵加速按下down鍵減速*********/
void main()
{
in = 0;
if(start == 0)
{
delay(2);
if(start == 0)
{
timer_T0();
while(1)
{
key_up();
key_down();
if(times <= pwm)
{
in = 1;
}
if(times >= pwm)
{
in = 0;
}
}
}while(!start);
}
}
//定時(shí)器T0產(chǎn)生pwm波 pwm波周期為100*1ms
void timer_pwm() interrupt 1
{
TH0 = (65535 - 1000) / 256;
TL0 = (65535 - 1000) % 256;
times++;
if(times == 100)
{
times = 0;
}
}
輸入為高輸出也為高
|
|