红外线是波长在750nm~lmm的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75μm~25μm,目前无线电波和微波已被广泛地应用在长距离的无线通信之中。但由于红外线的波长较短,对障碍物的衍射能力差,所以更适合应用在需要短距离无线通信的场合,进行点对点的直线数据传输,从应用领域来看,红外通信主要应用于遥控和数据通信这两方面。红外通信口一般数据传输速率可达2400bit/s~115.2kbit/s,有些甚至可达4Mbit/s。

本设计实现单片机之间通过红外接口进行通信。通信双方约定发送方为甲机,接收方为乙机。甲机向乙机发送一组数据,如果乙机接收到的数据正确,就向甲机发送0x55;如果乙机接收到的数据不正确,就向甲机发送0xFF,甲收方收到0xFF后重传数据。

红外通信技术主要是利用红外发射器和红外接收器来完成信号的无线收发工作。在发射端,对发送的数字信号经过适当的调制后,送入电光变换电路、驱动红外发光二极管发射红外光脉冲;在接收端,红外接收器对收到的红外信号进行光电逆变换,并进行相应的解调后、恢复出原信号,如下图所示。

红外通信的硬件电路由发射电路和接收电路两个部分组成。如下图所示,图中的上半部分为发射部分电路,下半部分为接收部分电路。当然作为通信的另一方,也有类似的一组收发电路。

由于系统中采用的红外线接收模块TSOP1838的光响应频率为38kHz,为降低数据交换的误码率,红外线发射部分的载波频率也应调整为38kHz。该载波信号由单片机89C51的内部定时器产生,载波信号从Pl.0引脚输出经74HC08与门对发送数据输出端TXD调制后,经过三极管T1放大,由发射管TSAL6200发出脉动的红外光,其发射功率可通过调整其限流电阻R3来改变。

红外线接收电路为了改善接收信号的波形,将其输出信号经过两级反相整形。本接收电路用一个与门的目的是如果系统还有其他的通信接口,那么该通信接口的数据接收端也可通过该与门将数据送入RXD引脚。当然,用户也可以不用该与门电路,而直接将第二级非门的输出接RXD引脚。

红外通信与常规的有线通信相比,只是利用了不同的传输介质而已,因此通信的程序与前面描述的类似,不同的只是红外通信还存在着载波的问题,因此,程序只包括串口初始化、定时器初始化、定时中断服务程序、通信的收、发程序等。

1.串口初始化程序init()

串口初始化程序如下,串行口工作在方式1,波特率为9600bit/s。单片机的定时器T0定时中断产生38kHz的载波信号,Tl定时器作为波特率发生器。

程序利用定时器T0产生一定频率的中断,在中断服务程序里控制引脚输出高低电平,

以此来产生载波信号,定时器TO的中断服务程序代码如下:

说明:程序编写时,只有在发送时才打开产生载波频率的定时中断,当发送完毕后,关掉中断,置Pl.0为0。

2.甲机发送子程序voidsend()

甲机发送子程序send0完成甲机发送数据功能。计算校验和并发送数据,等待乙机响应,若乙机响应正确则从子程序中返回,否则再次发送数据并等待乙机响应,程序代码如下:

3.乙机接收程序voidrecv()

乙机接收程序根据制定的联络信号接收数据。接收数据并计算校验和,若校验正确则发送0x55表明数据正确,否则发送0xFF说明数据接收错误。程序代码如下:

在红外通信的设计、使用时,应注意如下几个问题。

·距离与功率问题:红外通信的距离主要取决于发射的强度(电流)。

·通信的速度问题:由于调制的载波频率为38kHz,为很好地接收到发射的信号,建议单片机设置的数据传输速率不要超过9600bit/s。

·在使用时,应考虑发射管与接收管的角度问题,角度越大,接收距离将越近,甚至接收不到。

·对于单工方式下,发送方只保留发送部分电路,而接收方只保留接收部分电路,如不需要返回信息的主动遥控器,只有发送电路,而被动接收的控制器,只有接收电路。

·载波频率也可由其他可产生振荡方波信号的电路获得,如555电路。

·目前市场上还有专用的收发一体的红外模块、只发不收的发射模块、只收不发的接收模块等,这些模块内部大都集成了调制、驱动、解调等电路,用户只需选好型号并掌握其接口关系即可。

单片机接收到红外对管的数据怎么用c语言程序传给led显示器,通过红外接口实现单片机之间的通信...相关推荐

  1. 单片机接收到红外对管的数据怎么用c语言程序传给led显示器,单片机实现遥控器-红外数据传输--红外编解码原理...

    一. 红外通信原理 红外遥控有发送和接收两个组成部分.发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号.红外接收完成对红外信号的接收.放大.检波.整形,并解 ...

  2. 数据包收发c语言程序,使用C在套接字编程中创建数据包以及发送和接收数据包的正确方法...

    指针pkt未在您的应用程序中定义.您有两种选择: 1)将pkt声明为正常变量 struct packet pkt; pkt.srcID = 01; .... send(sockfd, &pkt ...

  3. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

  4. 通讯数据指示灯的C语言程序6,这些关于PLC的经典问答,你必须知道

    原标题:这些关于PLC的经典问答,你必须知道 S7-200PLC 1.为什么要用PC/PPI接口? 因S7-200CPU使用的是RS485,而PC机的COM口采用的是RS232,两者的电气规范并不相容 ...

  5. 单片机实例30——四位数数字温度计(硬件电路图+C语言程序)

    30. 四位数数字温度计 1. 温度传感器AD590基本知识 AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温 ...

  6. 单片机实例35——DS18B20数字温度计使用(硬件电路图+C语言程序)

    35. DS18B20数字温度计使用 1.DS18B20基本知识 DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点.因此用它来组成一个测温系统,具 ...

  7. 59s计时器C语言程序步骤详解,51单片机00-59秒计时器 0-59s Timer

    51单片机00-59秒计时器 0-59s Timer 1.  实验任务 如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个 ...

  8. 24c512 c语言程序,24C32~24C512的51单片机读写程序

    24C32~24C512的51单片机读写程序 来源:-- 作者:-- 浏览:3875 时间:2016-08-10 14:18 标签: 摘要: AT89S52 晶振频率为11.0592MHz 指令周期: ...

  9. 单片机系统测试c语言程序,宏晶最新1T8051单片机内部EEPROM测试C语言程序

    /* --- STC International Limited ---------------- 一个完整的EEPROM 测试程序,用宏晶的下载板可以直接测试 STC12C5AxxAD 系列单片机 ...

最新文章

  1. Go 学习笔记(81)— Go 性能分析工具 pprof
  2. 不通过AppStore,在iOS设备上直接安装应用程序的原理
  3. 百度:2020年十大科技趋势
  4. redis中有key但是删不掉_一篇图文,搞定Redis事务
  5. vue过渡和animate.css结合使用
  6. background-size:cover IE8
  7. EChart.js 简单入门
  8. c语言灯塔案例求塔低数,C++:有一个8层灯塔,每层所点灯数都等于该层上一层的两倍,一共有765盏灯,求塔底的灯数...
  9. 关于WinForms的跨显示器DPI自适应
  10. 区域赛铜牌专题(一)
  11. java学习(148):三个参数的输入流
  12. 孩子学python用什么教材比较好-python大学里用哪本教材比较好?
  13. OpenGL ARB 看来终于想通了,OpenGL SDK终于要出来了。
  14. php5.5 反序列化利用工具_Yii框架反序列化RCE利用链2
  15. Windows 10 + anaconda3快速配置tensorflow-gpu开发环境
  16. Google Guice 一个轻量级的依赖注入框架
  17. AI 换脸冲上 GitHub TOP1,如何一键生成亲妈都不认识的自己?
  18. 为什么机器学习在嵌入式系统中会失败?
  19. 让Spring 3中jsp的数据对象使用懒加载(FetchType.LAZY)与Controller的JSR 303并存
  20. 三菱Q系列总线型项目程序全套,三菱PLC程序

热门文章

  1. 爽啊!写了一个网页:首字母索引的单词(十分垃圾,简单的不得了)
  2. Charmer--viv【并查集】【最小生成树】
  3. 【好记性不如烂笔头】synchronized是怎么做到同步的?使用场景是什么?简述下原理。
  4. 软件测试基础:黑盒测试,白盒测试及具体方法
  5. mysql 客户端SSL错误2026 (HY000)
  6. 联想小新Air14 指纹解锁突然失效
  7. python能干啥是什么意思_这年头不懂点Python都不好意思说是码农 神奇的Python都能干啥...
  8. 破窗效应(Break Pane Law)
  9. IP地址与二进制之间的转换
  10. char*data和char data[]