在项目开发时为了实现远程通信,需要用到无线通信,无线遥控方式可分为无线电波式、声控式、超声波式和红外线式。由于无线电式容易对其它电视机和无线电通讯设备造成干扰,而且,系统本身的抗干扰性能也很差,误动作多,所以未能大量使用。超声波式频带较窄,易受噪声干扰,系统抗干扰能力差以及声控式识别正确率低,难度大而未能大量采用。红外遥控方式是以红外线作为载体来传送控制信息的,同时随着电子技术的发展,单片机的出现,催生了数字编码方式的红外遥控系统的快速发展。另外,红外遥控具有很多的优点,例如红外线发射装置采用红外发光二极管,遥控发射器易于小型化且价格低廉;采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,增加遥控功能,提高信号传输的抗干扰性,减少误动作,而且功率消耗低;红外线不会向室外泄露,不会产生信号串扰;反应速度快、传输效率高、工作稳定可靠等。所以现在很多无线遥控方式都采用红外遥控方式。这里把红外发射和接收的程序分享给大家。

红外发射程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit key1=P3^3;

sbit key2=P3^4;

sbit key3=P3^5;

sbit LED=P1^0; //发射指示灯

sbit out=P3^7;

uchar i,a,num1;

void init()//初始化作用

{ key1=1;

key2=1;

key3=1; }

void delay(uchar aa)

{ uchar bb,cc;

for(bb=aa;bb>0;bb--)

for(cc=200;cc>0;cc--); }

void delayms(uchar aa)//延时程序

{

for(a=aa;a>0;a--)

{

_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); }

}

void khz(uchar aa)//是发射38KHZ的程序

{

for(a=aa;a>0;a--) //这个for语句可以得到准确的26.3波特率

{

out=0;

i=7; //低了17us

while(i>0)i--; // 38kHZ

out=1;

//高了9us 17+9=26us 比26.3快一点点

}

}

void fashu(uchar num)

{ khz(116);//发射3ms 38khz

delayms(125);

for(num1=8;num1>0;num1--)

{

khz(40);

if(num&0x01)

delayms(93);//delay 1.5ms

else

delayms(65);//delay 1ms

num=num>>1;

}

khz(20); }

void tishi()

{

LED=0;

delay(50);

LED=1;

delay(50);

LED=0;

delay(50);

LED=1; }

void keyscan()//按键扫描

{

if(key1==0)

{

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

if(key1==0)

{

while(!key1);

fashu(0xf3);

tishi();

}

}

if(key2==0)

{

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

if(key2==0)

{

while(!key2);

fashu(0x3f);

tishi();

} }

if(key3==0)

{

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

if(key3==0)

{

while(!key3);

fashu(0xf5);

tishi();

} } }

void main()

{

init();

while(1)

{

keyscan();

} }

红外接收程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit led1=P1^0;

sbit led2=P1^1;

sbit led3=P1^2;

sbit in=P3^2;

uchar i,a,num;

bit fleg;

void init()

{

fleg=1;

in=1;

EA=1;

EX0=1;

IT0=1; }

void delayms(uchar aa)

{

for(i=aa;i>0;i--)

{

_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

} }

void main()

{

init();

while(1); }

void sieasdf() interrupt 0

{

EX0=0;

for(a=5;a>0;a--)

{

delayms(35);//延时0.5ms 判断5次 5*0.5=2.5ms

if(in)fleg=0;

}

if(fleg)

{

delayms(72);//延时1ms 判断是不是高电平了

if(in)

{

delayms(115);//延时让它超过2ms; 2.5+1+1.623=5.123ms 开始读数据

delayms(118);//若偏移一位,可以去掉。

for(a=8;a>0;a--)

{

while(!in);

delayms(86);//延时1.188ms 判断IO高低,从而得0或1

num=num>>1;

if(in)

{

num=num|0x80;

delayms(31);//延时0.6ms 因为上面延时1.2ms+0.6 刚好跳过1.5ms

}

}

P2=num; } }

fleg=1;

EX0=1; }

红外测距模块 51单片机_基于51单片机的红外发射和接收程序。相关推荐

  1. p620光耦接单片机_基于51单片机的可控硅调压调光程序-带过零检测

    标签: 单片机 单片机(Microcontrollers,亦称MCU)包括了CPU.随机存储器RAM.只读存储器ROM.多种I/O口和中断系统.定时器/计数器等功能集成到一块硅片上构成的一个小而完善的 ...

  2. 红外测距模块工作原理_共享单车里的通讯模块,工作原理是啥呢?

    现在我们所看到了共享单车除了小黄车(OFO)没有配备GPS智能锁外,其他品牌的共享单车都有安装,那么这么高科技的东西具体是怎么工作的呢?下面由我给大家讲解下其中的奥秘. 其实这个东西也谈不上太多高科技 ...

  3. 智能手环功能模块设计_基于51单片机的智能手环蓝牙模块设计

    龙源期刊网 http://www.qikan.com.cn 基于 51 单片机的智能手环蓝牙模块设计 作者:王烈进 王游司 陈洪燕 孙超 卢宇 来源:<电脑知识与技术> 2018 年第 2 ...

  4. 智能窗帘研究制作_基于51单片机的智能窗帘的研究与设计.doc

    基于51单片机的智能窗帘的研究与设计 第 PAGE \* Arabic \* MERGEFORMAT 24 页第 PAGE \* Arabic \* MERGEFORMAT 24 页 目录 TOC \ ...

  5. 51单片机计算器_基于51单片机的倒计时温度检测报警器

    基于51单片机的倒计时温度检测报警器 学习单片机断断续续半年了,在学长学姐的教学帮助下,完成了51单片机的入门学习,开始实践做项目,在一周时间内设计和制作出个人项目.起初,我设计和选择的是12864显 ...

  6. stc89c51单片机音乐盒系统设计_基于51单片机音乐盒课程设计1.doc

    基于51单片机音乐盒课程设计1 课程名称: 微机原理课程设计 题 目: 基于单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉.听觉方面的享受提出了越来越高的要求.小小的音乐盒可以给人们带来美好 ...

  7. 基于arduino的校园灯光控制_基于51单片机智能灯光控制系统(人体感应)

    硬件组成: 由51单片机最小系统.红外热释电模块.光强度检测模块.继电器灯光控制模块和电源模块组成. 功能介绍: 1.单片机AT89S51.AT89S52.AT89C51.AT89C52.STC89C ...

  8. 单片机多功能电子琴课设_基于51单片机的多功能电子琴设计.doc

    基于51单片机的多功能电子琴设计 基于51单片机的多功能电子琴的设计 摘要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编 ...

  9. 基于单片机的超市储物柜设计_基于51单片机对电子储物柜系统的设计

    电路描述: 安全是我们日常的生活中最关心的问题. 每个人都觉得安全问题是非常至关重要的,在家里的门和安全,可以尽可能多的安全. 为了对于门访问安全 因此,我们打算通过引进一个电子密码锁系统,该系统包括 ...

  10. 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟

    今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...

最新文章

  1. 抢红包要当心!钱盾反诈平台专家揭秘3类假红包骗局
  2. python是大学必修课吗-好消息!今天,审计、会计、税务、财务主管彻底沸腾了……...
  3. 漫谈C++:良好的编程习惯与编程要点
  4. 【算法分析与设计】计数排序
  5. 依赖注入例子php,依赖注入小例子
  6. RN和React路由详解及对比
  7. LeetCode 题练习记录
  8. 2D转换之旋转rotate(CSS3)
  9. 12.软件架构设计:大型网站技术架构与业务架构融合之道 --- CAP理论
  10. 硅谷课堂 13_公众号点播课程和直播管理
  11. 如何批量PDF转换JPG
  12. 音频怎么转换mp3格式?
  13. 浅谈领导力理解和体会
  14. php file get contents 总是超时,file_get_contents超时问题及解决方案
  15. AARRR模型(模型数据指标详解)
  16. 推荐几个短网址赚钱站
  17. 斯坦福大学校工程学院计算机,加州大学洛杉矶分校:受大脑启发的计算机视觉的对象发现和检测...
  18. matlab求解外推法和黄金分割法
  19. EMC设计理论通俗非科班学习笔记(完结)
  20. Android 自定义计时器

热门文章

  1. orbslam2 流程图_一种基于ORBSLAM2的八叉树建图方法与流程
  2. php个人财务管理,PHP个人理财管理系统的设计与实现
  3. 金蝶KIS专业版本单据导入导出工具使用说明
  4. java gd库_[转]gd库的安装
  5. 【window】重启IIS服务
  6. 大学计算机基础知识点
  7. 怎样更改itunes备份位置_什么是iTunes备份文件?
  8. CAD 部分快捷键注释
  9. HashMap的底层简单理解
  10. 关于arp表的网络问题