|
老规矩先放上共享连接
链接: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
|