数码之家

 找回密码
 立即注册
搜索
查看: 3001|回复: 6

[C51] 分享一个STC单片机的红外解码程序 NEC与小米同时解码 STC自动下载

[复制链接]
发表于 2022-6-19 21:48:33 | 显示全部楼层 |阅读模式
老规矩先放上共享连接
链接:https://pan.baidu.com/s/1CTc_xyyqYh2HYzQz29XImw
提取码:0000

先说下硬件资源,单片机用的STC8F,红外收发模块用的淘宝现成的,但是写了自己的程序。
定时器用完了。
定时器0用于NEC编码发射,以76.8kHz频率产生中断翻转红外发射口,实现38.4kHz的红外载波。因为这模块把红外发射配了一个最普通的IO,没有任何外设可用,只能靠电平翻转了。
定时器1用于生成50uS中断作为基本计时单元用于红外解码,因为51单片机时钟系统简陋定时器没有丰富的时钟资源不好设置原始分辨率,只能用中断产生合适的时基。
定时器2用于串口波特率。
外部中断1设置上升沿与下降沿中断,通过计算红外接收头的高电平脉冲时间来解析红外协议。上升沿中断清零定时器1生成的计时变量,下降沿中断读取计时变量值然后做红外解码。
NEC与小米的编码通过引导码长度识别。NEC编码有重复码,小米红外直接无脑无线循环发送。所以在软件里做了屏蔽处理,遥控按下不放开的话算一次,自然屏蔽掉小米后面的无限循环发。

程序的主要功能:
串口回环测试字符串,以回车换行识别。并且在发送完串口数据后发送一帧NEC编码,然后自己解码并通过串口把解码结果送到电脑。
串口实现自定义下载命令识别,无需其他硬件触发,STC软件设置好后MDK里F7一键编译完毕就自动下载。

NEC与小米的编码自动识别,解码结果通过串口发电脑。小米编码实际有三个字节,但是第一字节是一样的,不做显示了,后两字节以整形16进制方式显示。
串口显示变量的实现方式是用sprintf函数把变量转换成字符串,再调用字符串发送函数。但是要注意的是如果变量是char类型,格式必须是%bd,%bx这样的,%后面要加b。不然程序做整形处理给你后面加一个字节,这是编译器内部字节对齐的问题。

写稿子时上传了照片但是我这没看到,等通过审核后我再跟帖发图吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| 发表于 2022-6-19 21:53:58 | 显示全部楼层
你们要移植如果不成功的话可能是延时的问题,我临时回家没带什么工具之前搞了好久也是没成功,怀疑是延时问题,慢慢调出来的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-19 21:59:50 | 显示全部楼层
压缩包里都附了的照片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-19 22:03:56 | 显示全部楼层
小米红外的图太大了,直接看CSDN的链接吧CSDN地址
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-19 23:13:18 | 显示全部楼层
串口助手显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2022-6-20 00:09:35 | 显示全部楼层
这个局限性太大,那种不管是什么码都能复制的比较实用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-20 08:53:16 | 显示全部楼层
本帖最后由 ckvlhf 于 2022-6-20 09:10 编辑
40560335 发表于 2022-6-20 00:09
这个局限性太大,那种不管是什么码都能复制的比较实用。

各有各的用处,那种不能做自动转发。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-5 22:13 , Processed in 0.140401 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表