我用P3^4连了一个红外热释传感器,用P1^7连接了一个LED灯观察效果,我想达到的效果是,有人来高亮,无人来微亮,老师能看看我的程序吗,请问你说的占空比频率和占空比大小控制是在哪部分改动呢/*设置一个定时器,控制P20口输出PWM,频率为100HZ,占空比可调,热释检测有无人控制占空比*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit PWM=P1^7;
sbit LED1=P1^3;//LED1常亮作为跟PWM输出时的亮度对比
sbit reshi=P3^4;//控制占空比
uchar time;
uint num;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
num=0;
TMOD=0x01;//定时器0工作方式1
TH0=(65536-100)/256;
TL0=(65536-100)%256;//赋值定时0.1ms
EA=1;
ET0=1;
TR0=1;
while(1)
{
LED1=0;
while(reshi==0)//无人高亮
{
delay(5);
while(reshi==0)
{
num=20;
}
}
while(reshi==1)//有人微亮
{
delay(5);
while(reshi==1)
{
num=0;
}
}
}
}
void timer0() interrupt 1
{
TR0=0;//赋值时先关闭定时器
TH0=(65536-100)/256;
TL0=(65536-100)%256;//赋值定时0.1ms
TR0=1;//再从新打开定时器
time++;
if(time>=100) time=0;//0.1ms*100=10ms,即100HZ;
if(time<=num) PWM=0;
else PWM=1;
} |