51单片机红外通信——直流电机
目标实现功能
51单片机解码红外遥控器的信号,控制直流电机的启停。
1.红外遥控器
2.红外接收设备
/*红外接收初始化*/
void ir_init()
{
EA=1;//总中断允许
EX0=1;//外部中断0允许
IT0=1;//下降沿触发
IR=1;//红外接收数据输出引脚初始化
}
/*读取红外接收数据*/
void ir_read() interrupt 0
{
uchar i,j;
uint error=1000;//定义变量error,用于超时退出
delay(942);//先延时8494us左右,再判断
if(IR==0)
{
while(IR==0)//低电平则等待
{
error=error-1;
if(error==0) return;//超时退出
}
delay(442);//先延时3994us左右,再判断
if(IR==0) return;//错误的信号
error=1000;
while(IR==1)//高电平则等待
{
error=error-1;
if(error==0) return;//超时退出
}
for(i=0;i<4;i++)//共计4组数据(用户码、用户反码、数据码、数据反码)
{
for(j=0;j<8;j++)//每组数据有8位
{
error=1000;
while(IR==0)//低电平则等待
{
error=error-1;
if(error==0) return;//超时退出
}
delay(76);//先延时700us左右,再判断
error=2000;
if(IR==0) Irdata[i]=Irdata[i]>>1;//位0
else//如果是位1
{
Irdata[i]=Irdata[i]>>1;
Irdata[i]=Irdata[i]|0X80;
while(IR==1)//等待高电平结束
{
error=error-1;
if(error==0) return;//超时退出
}
}
}
}
}
}
3.直流电机
4.演示结果
51单片机红外通信—直流电机
注:详细代码已经上传至资源,大家可以自行下载。祝大家天天开心!!!
原文地址:https://blog.csdn.net/weixin_45755708/article/details/142742152
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!