STM32驱动OLED,并接收红外遥控的码值(内含代码)

1.硬件原理

本实验通过STM32驱动OLED液晶屏和红外接收头,将红外接收头接收到的遥控器按键信息在OLED屏幕上显示出来,当遥控器有按键按下去时,LED闪烁提示已接收到按键按下信息。

OLED用的是0.96寸的SPI接口液晶,液晶分辨率是128 x 64,能显示像素数是128x64个,跟传统12864液晶相比,体积更小,接口简洁,便于单片机驱动。

OLED液晶

红外接收头用的是VS1838B,红外接收头内部内置接收管,将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。

红外通信用的是NEC协议,详细原理以前的文章已有介绍了。

STM32用的是F103RCT6最小系统模块,OLED,红外接收头与主控板的连接用杜邦线,原理图如下图:

硬件原理图

2.程序解读

算法描述:

OLED的驱动代码和红外接收头的代码网上挺多的,这里就不多做介绍了。

OLED主要是用IO口模拟SPI时序,通过写字节函数,构建OLED的显示功能函数,关闭显示功能函数,画点函数,显示字节函数,显示数字函数和显示字符串函数等,若需要显示图片,可以用画点函数构建显示图片的函数,不过需要用专门的软件去对图片取模。

红外接收头的驱动原理是通过STM32的定时器,对上升沿和下降沿捕获计数,计数值和NEC协议规定的脉冲长度比较,进而识别传送的0和1。

LED的闪烁用的是高电平延时一段时间,低电平延时一段时间的方法。

单片机运行的主函数内的循环算法是,不断扫描红外按键码,当有按键码按下时,对比码值识别,闪烁到了之后LED闪烁提示。这个算法是标准的按键扫描处理任务的思路,有按键按下,去处理相应的任务。

代码解读:

主控代码

3.实物效果

我们可以看到,代码烧录进去之后,当遥控器按键按下时,红外接收头接收到的码值,会在OLED屏幕上显示出来,PCB上的LED会在识别码值的同时闪烁,证明遥控器按键按下并接收到了遥控器的信息。

实物效果图如下

朋友们想要这个实验的驱动代码的可以关注后私信“OLED”。

欢迎点赞和转发,关注头条号:奔跑的晶体管 可以学到更多的电子知识哦。

举报
评论 0