|
#include <reg52.h> //
#define uint unsigned int
#define uchar unsigned char
sbit s1=P3^5;//加速按键
sbit s2=P3^3;//减速按键
sbit fm=P3^6;//接蜂鸣器
uchar pwm,num;
void delay(uint ms) //
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void bee() //蜂鸣器函数
{
fm=0;
delay(100);
fm=1;
delay(100);
}
void keyscan() //按键扫描函数
{
if(s1==0)
{
delay(50);
if(s1==0)
{
if(pwm<32)
{
pwm++;
delay(100);
}
else
bee();
}
}
if(s2==0)
{
delay(50);
if(s2==0)
{
if(pwm>1)
{
pwm--;
delay(100);
}
else
bee();
}
}
}
void init1() //定时器1初始化
{
TMOD=0x11;
TH1=(65536-500)/256;
TL1=(65536-500)%256;
EA=1;
ET1=1;
TR1=1;
}
void t1() interrupt 3 //中断服务函数
{
TR1=0;
TH1=(65536-500)/256;
TL1=(65536-500)%256;
num++;
if(num>32)
{num=0;}
if(num<=pwm)
{
P1=0x00;
}
else
{
P1=0x0f;
}
TR1=1;
}
void main()
{
init1(); //
num=0;
pwm=16; // 初始PWM占空比设为50%
while(1)
{
keyscan();
}
}
|
-
-
按键PWM.rar
24.12 KB, 下载次数: 20, 下载积分: 黑币 -5
基于AT89C52通过按键控制直流电机转速
|