江科大51单片机笔记【17】红外遥控(外部中断)

发布于:2025-03-18 ⋅ 阅读:(20) ⋅ 点赞:(0)

写在前言


  此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识

  在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识,主要是为下章节的代码部分打基础。

  我的单片机是24年12月在tb普中买的,型号是STC89C52,在原视频中引脚或接口不对应的我都会改正,保证在我的机子上能运行才发上来的,还有一些文字部分是我的理解,并非照搬,所以可能有理解不到位的现象。

  如有误或交流,敬请指点提问

红外遥控有一个小拨片把电池隔开,用的时候要拿出来

课程目标:

1.LCD显示遥控的地址码,遥控码和+-控制自定义数字

2.红外遥控电机调速

课程总览:

红外遥控介绍,硬件电路,发送和接收,NEC编码,遥控器键码,51单片机的外部中断,寄存器

一、红外遥控简介

  • 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出
  • 通信方式:单工、异步
  • 红外LED波长:940nm(人眼看不到)还有一种850nm可以看到
  • 通信协议标准:NEC标准

二、硬件电路 

我们的开发板上并没有发送部分,只能通过遥控器发送

我们主要是做接收部分

首先是发送部分,上面是两个串联的三极管开关,下面是一个红外LED和一个限流电阻,而两个三极管分别接入38KHz的方波以及我们给的波形,这个电路的功能是当高电平时灭,当低电平时红外以38KHz的频率亮,目的是抗干扰

第二个电路简单,如果给低电平就亮,高电平就灭,如果要输出波形就需要程序来实现,并且IO口要支持输出波形

接收部分,是一个一体化红外接收头,含有滤波抗干扰等功能,我们的代码就是解码这个波形,又因为按键按下的判断太慢了,不能像之前一样用if循环扫描按键,所以我们就把输出OUT放到外部中断上,这样实时性就很高

三、基本发送与接收

  • 空闲状态:红外LED不亮,接收头输出高电平
  • 发送低电平:红外LED以38KHz频率闪烁发光,接收头输出低电平
  • 发送高电平:红外LED不亮,接收头输出高电平

虽然空闲状态跟发送高电平看起来是一样的,但还是可以区分的,红外发送的时候是以第一个下降沿开始,往后都是发送来的波形,此时接收到高电平就是发送高电平状态,等波形结束,再接收到高电平就是空闲状态

顺带一提,这个38KHz是在实际的底层通信时出现的,但在编码时不会涉及,因为已经在底层功能给调制解调了 

 四、NEC编码

此时又需要一个标准,怎么表示高低电平,以及怎么组成0和1,这就是NEC编码的作用

这是时序波形,这个波形就是遥控器按键按下时接收头OUT输出的波形,

首先是高电平,然后是Start信号

接着是DATA数据区,data的格式如下,地址码+地址码反码(验证)+命令+命令反码

在这里不是平时那样高电平表示1,低电平表示0,而是像下面这样,高电平的时间比低电平的时间稍长一点

然后就是重复的波形,这个是连续按键的功能,如果你一直按着按键不动,就隔110ms就发送一个Repeat的波形

下面是示波器实际采样得到的图

五、遥控器键码

六、51单片机的外部中断

  • STC89C52只有4个外部中断,但实际上我们这给开发板只引出了两个外部中断,即0和1
  • 有两种触发方式:下降沿触发和低电平触发
  • 中断号:

七、外部中断寄存器

 

之前定时器也讲过这部分

我们在这里只讲外部中断0和1,直接接到P32和P33引脚,然后是触发方式ITO和IT1,当=1时是下降沿触发,=0是低电平触发,IE是中断标志位,EX0是使能中断,EA是所有中断,PX可以选优先级