单片机:STC89C52 电机驱动模块:ULN2803(输入端高电平时电机停转,输入端低电平时电机启动;输入端截单片机P1.7口)
红外探头:有遮挡时输出端输出低电平,无遮挡时输出端输出高电平。(输出端截单片机1.8口)
电路控制程序:(请问我这个程序正确吗?)
#include<reg52.h>
#define uint unsigned int
sbit dianji=P1^7;//电机控制端。
sbit kaiguan=P1^8;//红外开关控制端。
void delay(uint xms)//延迟函数
{
uint i,j;
for(i=xms;i<0;i--)
for(j=110;j<0;j--);
}
void main()
{
while(1)
{
if(kaiguan==0)//红外开关打开
{
delay(2000);//延迟两秒钟
while(!kaiguan)//调节电机占空比
{
dianji=0;//电机启动
delay(1);//延迟1ms
dianji=1;//电机关闭
delay(1);//延迟1ms
}
}
if(kaiguan==1)//红外开关关闭
{
delay(2000);//延迟两秒钟
dianji=1;//电机关闭
}
}
}
|