51单片机红外通信——直流电机

目标实现功能

51单片机解码红外遥控器的信号,控制直流电机的启停。

1.红外遥控器

红外遥控器是由键盘电路、红外编码电 路、电源电路和红外发射电路组成。按下遥控键值时,红外遥控器先将按键键值按相应的编码方式形成二进制脉冲编码,再将编码调制在一定频率的载波上,最终在发射端经红外发光二极管发射出去,完成电信号到光信号的转变。
本次设计用到的红外遥控器发送端采用的载频频率是38KHz,该频率是由发射端使用的455KHz的晶振经过12分频而来。
红外遥控器每次先发送一个起始码,起始码由9ms左右的高电平、和4.5ms左右的低电平组成。紧跟在起始码后是32位的数据:用户码、用户反码、数据码、数据反码,其中用户码是可以防止其它类型的红外遥控器的干扰,用户反码用于接收端对用户码正确性的校验。数据码是我们常用的功能码,数据反码和用户反码的功能类似。
特别注意:32位数据的每一位都是由高低电平组成的脉冲码。例如二进制数0,用0.565ms左右的高电平和0.565ms左右的低电平表示;例如二进制数1,用0.565ms左右的高电平和1.695ms左右的低电平表示。

2.红外接收设备

红外接收设备是由红外接收电路、红外解码、电源和应用电路组成。当收到红外遥控信号时,接收设备先将光信好转换成电信号,经过放大、限幅、检波、整形,形成遥控指令脉冲,输出至遥控微处理器。
本次设计采用一体化的红外接收头作为接收设备。红外接收头对外引出3个引脚:电源正( VDD)、电源负(GND)和数据输出(VOUT),其中数据输出连接单片机的I/O口,需要编写代码对遥控指令脉冲识别、解码。需要注意的是,数据输出引脚输出的是发射码的反码。例如:输出的起始码由9ms左右的低电平、和4.5ms左右的高电平组成,正好与发射的起始码相反。为加强红外遥控的实时性,采用外部中断的方式,执行对红外信号的解码。代码如下:
/*红外接收初始化*/
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.直流电机

直流电机的结构由定子和转子两大部分组成。在直流电机两端加上直流电就能工作。特别注意单片机引脚不能直接驱动电机。
在本次设计中,将直流电机的一个引脚接5V电压,另一个引脚由单片机引脚连接驱动芯片ULN2003间接控制。

4.演示结果

51单片机红外通信—直流电机

 注:详细代码已经上传至资源,大家可以自行下载。祝大家天天开心!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值