|
#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
2016-7-5 21:39 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
24.12 KB, 下載次數: 20, 下載積分: 黑幣 -5
基于AT89C52通過按鍵控制直流電機轉速
|