描述

一、简介

红外发射模块:电源3.3V或5V,通过发射管发射38KHz的红外信号,高电平驱动

红外接收模块:电源3.3V或5V,可接收红外信号,并解调成逻辑电平,低电平有效

二、电路图

红外发射电路图

红外接收电路图

三、红外发射模块代码

#include

#include

#define uchar unsigned char

#define uint unsigned int

//管脚定义

sbit key = P2^0;

sbit out = P2^1;

//函数声明

void delayms(uchar aa); //红外发射延时

void khz(uchar aa); //发射38KHz

void IR_OUT(uchar num); //红外发射

void keyScan(); //读取键盘信息

//变量声明

uchar i, a, num1;

//-----------------------

//红外发射延时

//-----------------------

void delayms(uchar aa)

{

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

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

}

//-----------------------

//发射38KHz

//-----------------------

void khz(uchar aa)

{

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

{

out=0;

i=7;

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

out=1;

}

}

//-----------------------

//红外发射

//-----------------------

void IR_OUT(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 keyScan()

{

if(key==0)

{

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

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

if(key==0)

IR_OUT(0xC0);

key = 1;

}

}

//-----------------------

//主函数

//-----------------------

void main()

{

key = 1;

while(1)

{

keyScan();

}

}

四、红外接收模块代码

#include

#include

#define uchar unsigned char

#define uint unsigned int

//管脚定义

sbit in = P3^2; //红外中断接收

//P2接静态数码管

//函数声明

void init(); //初始化函数

void delayms(uchar j); //延时函数

//变量声明

uchar i, num, a;

bit fleg;

//-----------------------

//初始化函数

//-----------------------

void init()

{

fleg = 1; //标志位

in = 1; //红外接收

EA = 1; //中断设置

EX0 = 1;

IT0 = 1;

}

//-----------------------

//延时函数

//-----------------------

void delayms(uchar j)

{

for(i=j; 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;

}

打开APP精彩内容

点击阅读全文

51单片机红外线发射c语言,51单片机红外发射模块与红外接收模块的代码程序设计...相关推荐

  1. 51单片机红外线发射c语言,51单片机红外发射程序

    #include #define uchar unsigned char #define uint unsigned int sbit IR_OUT=P1^0 ; void delay_ms(uint ...

  2. 51单片机8255扩展c语言,51单片机8255A扩展IO口

    <51单片机8255A扩展IO口>由会员分享,可在线阅读,更多相关<51单片机8255A扩展IO口(23页珍藏版)>请在人人文库网上搜索. 1.一个芯片可扩展多个并行I/O口 ...

  3. 自学python单片机编程-用Python语言控制单片机

    早年,虽然Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼.本文引用地址:ht ...

  4. 自学python单片机编程-用Python语言控制单片机-可编程逻辑-与非网

    早年,虽然 Python 是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言.遗憾的是,它不能实现一些非常底层的操控,所以在硬件领域并不起眼. 然而今时不同 ...

  5. 单片机最小系统c语言报告,单片机最小系统实验报告.doc

    长沙学院 电子工艺实习报告 姓名: 潘舟 学号: 2009044211 系别: 电子与通信工程 时间: 2011.11.14-2011.11.25 专业: 电子信息工程 指导老师:龙英.刘辉.王新辉. ...

  6. 51单片机呼吸灯c语言,51单片机呼吸灯C语言版.doc

    基于单片机与PWM的呼吸灯设计 实训指导教师: 班 级: 设 计 人姓名: 设 计 日 期: 设 计 地 点: 完 成 时 间: 摘要 本设计是基于单片机的原理与接口设计,采用单片机I/O口,加以C语 ...

  7. 单片机cpu寄存器 c语言,51单片机共有21个特殊功能寄存器

    描述 在51单片机内部有一个CPU用来运算.控制,有四个并行I/O口,分别是P0.P1.P2.P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以 ...

  8. 51单片机波形发生器51c语言,51单片机实现波形发生器.doc

    word完美格式 精心整理 学习帮手 摘要 这个系统是基于AT89C51单片机的波形信号发生器.使用AT89C51单片机作为控制核心,该系统由数字/模拟转换电路(DAC0832).运放电路(OP07) ...

  9. 基于51单片机的霓虹灯c语言,基于单片机控制的霓虹灯控制器056

    基于单片机控制的霓虹灯控制器 摘要:本设计采用AT89S51单片机实现对霓虹灯的控制.系统由单片机控制部分和显示部分组成.显示部分的128个发光二极管成8行16列矩阵式分布.单片机I/O口输出的信号经 ...

  10. 单片机救护车声音 c语言,51单片机模拟救护车声音 喇叭滴答声 源程序

    /*----------------------------------------------- 名称:喇叭 修改:无 内容:模救护车发声 ----------------------------- ...

最新文章

  1. 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
  2. 严定贵:互联网金融的速度与激情
  3. Mysql数据库大表归档操作
  4. P2403 [SDOI2010]所驼门王的宝藏
  5. 已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和集合B的差集(近由在A中出现而不再B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
  6. 21川大计算机学硕缩招,重大变动!21考研学硕缩招?别着急,还有个好消息
  7. poj2586 Y2K Accounting Bug(贪心)
  8. LeetCode刷题——167. 两数之和 II - 输入有序数组
  9. iOS下拉刷新和上拉刷新
  10. 【车辆识别】基于matlab GUI小波和盒维数车型识别【含Matlab源码 727期】
  11. html自动加好友,WeTool微信自动加好友软件
  12. oss文件普通下载-断点下载
  13. osr matlab,DPD-Matlab-FPGA 好不容易找到的马岳林的 数字预失真 DPD仿真代码 包括 simulink 和 实现 275万源代码下载- www.pudn.com...
  14. excel表格如何转换成word表格_Excel表格转换为Word表格?99%的人想不到这样做最简单!...
  15. 1230k倍区间,关于cnt[0]赋值为1的解释
  16. python读取csv文件(一行一行的读取)
  17. React.createRef()的使用
  18. pdf转换成excel文件_将PDF文件转换为Excel
  19. WINCC V7.5入门实例教程,使用常数数组用FunctionTrendControl控件绘制趋势曲线(区别于7.0及以前的老版本,脚本更新)
  20. 《程序设计基础2021》题目集7 题解一

热门文章

  1. 黑苹果hidp显示不清楚_黑苹果开启缩放分辨率HiDPi以及字体模糊的调整方法总结...
  2. Guass Rank(深度学习数值特征归一化方法)
  3. java代码实现端口是否ping通
  4. 微信公众号授权登录重复登录不跳转
  5. 生信分析矫正P值_万字长文+诚意满满 | 单细胞转录组分析最佳思路综述
  6. PS图片的两种大小及修改,psd源码文件,图层概念
  7. Navicat连接不上远程服务器MySQL提示10038
  8. VUE 代码压缩优化
  9. 34. OP-TEE中system call的实现
  10. python-普通pdf的添加水印