红外无线通信仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
红外无线发射/接收器
灯光模拟:有光电阻小,无光电阻大
单片机源程序如下(发送程序):
- #include <REG51.h>
- #include <intrins.h>
- #include "hongwaifashe.h"
- void hongwaifashe(void)
- {
- TMOD = 0x01; //T0 16位工作方式
- IR=1; //发射端口常态为高电平
- ZZ(setdata[0]);
- ZZ(setdata[1]);
- }
- void ZZ(uchar x)
- {
- TT0(1,m9); //高电平9mS
- TT0(0,m4_5); //低电平4.5mS
- /*┈ 发送4帧数据 ┈*/
- Z0(SBM);
- Z0(~SBM);
- Z0(x);
- Z0(~x);
- /*┈┈ 结束码 ┈┈*/
- TT0(1,m_56);
- TT0(0,m40);
- }/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
- 函数功能:单帧发送程序
- 入口参数:1帧数据
- ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
- void Z0(uchar temp)
- {
- uchar v;
- for (v=0;v<8;v++) //循环8次移位
- {
- TT0(1,m_56); //高电平0.65mS
- if(temp&0x01) TT0(0,m1_68); //发送最低位
- else TT0(0,m_56);
- temp >>= 1; //右移一位
- }
- }
- /*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
- 函数功能:38KHz脉冲发射 + 延时程序
- 入口参数:(是否发射脉冲,延时约 x (uS))
- ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
- void TT0(bit BT,uint x)
- {
- TH0 = x>>8; //输入T0初始值
- TL0 = x;
- TF0=0; //清0
- TR0=1; //启动定时器0
- if(BT == 0) while(!TF0); //BT=0时不发射38KHz脉冲只延时;BT=1发射38KHz脉冲且延时;
- else while(1) //38KHz脉冲,占空比5:26
- {
- IR = 0;
- if(TF0)break;
- if(TF0)break;
- IR = 1;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- if(TF0)break;
- }
- TR0=0; //关闭定时器0
- TF0=0; //标志位溢出则清0
- IR =1; //脉冲停止后,发射端口常态为高电平
- }
复制代码
接受程序:
所有资料51hei提供下载:
红外无线通信.zip
(146.29 KB, 下载次数: 259)
|