- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机练习-RC-5红外遥控器程序及简单制造DIY PC遥控器
本文短址:
本程序采用的芯片为SAA3010, 参考资料有:1. 常用红外遥控接收头引脚图解2. 红外遥控编码资料3. RC-5红外遥控程序 4. GIRDER中文教程与电脑遥控器制作资料 5. Girder网站 (一个需要钱买的遥控)6. 再度出击,20元打造经典PC遥控器!7. SAA3010 DataSheet这次主要是完成单片机接收红外摇控器发出的数据. 在此基础上, 我们可DIY出自己的PC摇控器, 也可自行发挥一些, 做出类似于很多Club里的点歌系统的硬件外红信号转换装置....本次实验依旧采用TX-1B实验板, 只需增加一个一体化红外接收头, 如下图:本程序中, DataOut引脚接到P3.2口. 在接收头的电源和地端接上滤波电容会使误码率更加低....SAA3010芯片:(图中位时间1.688ms, 而根据DataSheet里描述的位时间为1.788ms,? 但实际中我使用的时间为1.651ms )我使用的键盘编码如下:键盘外观:编码:一体化红外接收头的数据输出的判断思路: (手画, 太难看也别见怪:) )Tb = 1.778ms = 1.780ms (实际中测试为1.651ms)T1/4b = 445us (实际中413ms)T3/4b = 1.335ms (实际1.239ms)在等待第一次低电平到来后, 定时器开始第一次定时T1/4b时间, 然后到达第一次数据的T3/4b时刻, 读取该位电平状态;以后定时器每次定时Tb时间, 这样到达对应每位的T3/4时刻, 并可读取该位电平状态.具体逻辑请看代码中的详细注释:
?采用程序查询方式:
SAA3010_RC5//接收红外遥控器(Infrared?remote?control?transmitter)发出的数据//芯片型号:?SAA3010,?它采用RC-5协议//芯片资料:?/datasheet-pdf/pdf/18953/PHILIPS/SAA3010.html//利用与P1口相连的发光二极管输出接收到的按键对应码,?并将它输出到串口,?用于遥控//PC使用了Girder来触发自定义的功能#include?reg51.h#include??intrins.h?#define?uchar?unsigned?char/*********************IRC?RC-5****************************************/uchar?YKDatas[3];???//遥控码(一帧14位),YKDatas[0]:?0,1为start?bits,?2?为control?bit,?YKtype=0????????????????????//YKDatas[1]:?3~7为system?bits,?YKtype=1????????????????????//YKDatas[2]:?8~13为command?bits,?YKtype=2sbit?YKIn?=?P3^2;?????//数据输入位uchar?YKcount,?YKtype;????????????//遥控已接收位数,?一帧的各段标志bit?YKend;?//接收结束标志//延时?a?*?1msvoid?delayMs(unsigned?int?a){????unsigned?int?i,?j;????for(i?=?a;?i??0;?i--)????????for(j?=?100;?j??0;?j--);}void?YKInit()??????????????????//遥控接收初始化{????YKDatas[0]?=?YKDatas[1]?=?YKDatas[2]?=?0;????YKcount?=?0;????YKtype?=?0;????YKend?=?0;}void?time0()?interrupt?1?{????//第一次进入中断前,?定时1/4位的时间:445us,?以后则定时一位时间1.778ms????//即在3/4位时间时,?判断该位是1还是0????//实际测试中,?位时间只在1.651ms(+-?1ms),?定时1/4位的时间:413us????bit?in?=?~YKIn;?//一体化解码后,?有载频部分变为低电平,?即低电平实际为1,?高电平实际为0????//设置定时器初值????//模式1:?TH0?=?(2^16?-?(1651/1.085))?/?2^8?=?(65536?-?1651/1.085)?/?256
文档评论(0)