红外线发射和接收C51用C语言解决方案.pdfVIP

红外线发射和接收C51用C语言解决方案.pdf

  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文档。上传文档
查看更多
红外线发射与接收C51 单片机解决案 ——包含C 语言源程序以及仿真电路图 作者:sunny Email:sunaun_man@163.com 日期:2011-10-5 目前红外线遥控器控制技术已应用非常广泛,其技术日趋成熟,利用单片机,用简单的几句 C 语言命令便能实现对目标设备精准控制。 虽然此技术已经很成熟,但对于初学单片机技术的学员来看还是有一定难度的,我呢在网上 也查找了有关红外线遥控相关的资料,让我很失望,资料很多都是有头没尾,或者就是程序写的 晦涩难懂,而且很多都是用汇编语言编写,对只学习了C 语言而又不喜欢汇编的同学来说容易晕 头转向不知道从哪里下手,这里我呢正好有一个很好的红外线遥控的列子,拿来和大家分享一下, 若有不足之处,还请大家多多指教,文章前面有我的邮箱地址,大家若是有问题或是更好的方案, 不防拿出来大家一起分享。 首先,我先把我的思路和大家说说,红外线遥控包括发射和接受两个部分,这两个部分我都 是用Keil uVision2 和Proteus 7 Professional 仿真软件来实现的,也就是所有的过程都是在电脑上 实现的,不需要任何硬件或是外接设备,主要的是用C 语言写出发射和接受的程序来,并在理想 的仿真环境下实现其功能,当然若要在硬件上实现还需要调整一些程序上的函数值来实现了。 废话少说,现在就开始我的第一步,设计原理图: 先上一张发射部分的仿真的原理图 图1: 图 1 注意:单片机的时钟频率为12.289MHz 如上图所示,发射部分的电路其实很简单,单片机我选的是AT89C2051 ,相信大家都很熟悉 还有就是四个按键A,B,C,D ,AT89C2051 的P1^6 端口是发射信号的输出端,就等同于红外接受头 的输出脚(一般是第3 个脚,大家可以查资料)。 上面的电路是起什么作用呢,我解释一下,作用就是仿真红外线发射部分向接受部分发出的 信号,具体的就是,如果我按下了A 键,那么电路就会发出一个固定的编码,按下不同的键其编 码是不同的。下面有个表格,四个按键的编码就一目了然了: 表 一 键 项目 用户码 用户反码 数据码 数据反码 A 0x00 0xFF 0x0F 0xF0 B 0x00 0xFF 0x39 0xC6 C 0x00 0xFF 0x75 0x8A D 0x00 0xFF 0xF9 0x06 现在大家已经知道了每个键的编码,在写程序之前,先要说一下有关红外线发射的知识,我 想大家对这些知识应该是很了解的了,在这里补充说一下是为了在下一步写程序是大家能明白我 的思路是对还是错? 再不考虑发射芯片的型号,就用大家常用的编码方式: 首先先来说说引导区,如下图: 图 二 每个按键在被按下之后首先会有像上图所的信号发出,称为引导区,实际生活中,用遥控器 发出的信号与上面的信号是相反的,经过红外线接收头解码以后就和上图一样了,值得大家注意 的是发射模块的芯片不同,引导区的时间和数据都有所不同,但解决的方法都是一样的。 在写程序是就按照上面的图来写: P1^6=0 ; Delay(); //延时9mS P1^6=1 ; Delay(); //延时4.5mS 下面就是数据“0 ”和“1”的信号波形了,如下图: 图 三 写程序“0 ”的代码: P1^6=0 ; Delay(); //延时0.56mS P1^6=1 ; Delay(); //延时0.56mS 写程序“1”的代码: P1^6=0 ; Delay(); //延时0

文档评论(0)

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

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

1亿VIP精品文档

相关文档