遥控器档.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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=2 sbit?YKIn?=?P3^2;?????//数据输入位 uchar?YKcount,?YKtype;????????????//遥控已接收位数,?一帧的各段标志 bit?YKend;?//接收结束标志 //延时?a?*?1ms void?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)

16588ww + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档