使用AT89S51单片机制作红外遥控器源代码

发布者:丝语轻风最新更新时间:2023-05-06 来源: elecfans关键字:AT89S51  单片机  红外遥控器 手机看文章 扫描二维码
随时随地手机看文章

本文档的主要内容详细介绍的是使用AT89S51单片机制作红外遥控器的资料和源代码详细说明。


一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。


当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:

采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。


上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。


根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。

接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低电平处发送38kHz红外信号,高电平处则不发送红外信号。


C51程序代码:

#include 《AT89X51.h》

static bit OP; //红外发射管的亮灭

static unsigned int count; //延时计数器

static unsigned int endcount; //终止延时计数

static unsigned char flag; //红外发送标志

char iraddr1; //十六位地址的第一个字节

char iraddr2; //十六位地址的第二个字节

void SendIRdata(char p_irdata);

void delay();

void main(void)

{

count = 0;

flag = 0;

OP = 0;

P3_4 = 0;

EA = 1; //允许CPU中断

TMOD = 0x11; //设定时器0和1为16位模式1

ET0 = 1; //定时器0中断允许

TH0 = 0xFF;

TL0 = 0xE6; //设定时值0为38K 也就是每隔26us中断一次

TR0 = 1;//开始计数

iraddr1=3;

iraddr2=252;

do{

delay();

SendIRdata(12);

}while(1);

}

//定时器0中断处理

void timeint(void) interrupt 1

{

TH0=0xFF;

TL0=0xE6; //设定时值为38K 也就是每隔26us中断一次

count++;

if (flag==1)

{

OP=~OP;

}

else

{

OP = 0;

}

P3_4 = OP;

}

void SendIRdata(char p_irdata)

{

int i;

char irdata=p_irdata;

//发送9ms的起始码

endcount=223;

flag=1;

count=0;

do{}while(count《endcount);

//发送4.5ms的结果码

endcount=117

flag=0;

count=0;

do{}while(count《endcount);

//发送十六位地址的前八位

irdata=iraddr1;

for(i=0;i《8;i++)

{

//先发送0.56ms的38KHZ红外波(即编码中0.56ms的低电平)

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

//停止发送红外信号(即编码中的高电平)

if(irdata-(irdata/2)*2) //判断二进制数个位为1还是0

{

endcount=41; //1为宽的高电平

}

else

{

endcount=15; //0为窄的高电平

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

//发送十六位地址的后八位

irdata=iraddr2;

for(i=0;i《8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

//发送八位数据

irdata=p_irdata;

for(i=0;i《8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

//发送八位数据的反码

irdata=~p_irdata;

for(i=0;i《8;i++)

{

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

if(irdata-(irdata/2)*2)

{

endcount=41;

}

else

{

endcount=15;

}

flag=0;

count=0;

do{}while(count《endcount);

irdata=irdata》》1;

}

endcount=10;

flag=1;

count=0;

do{}while(count《endcount);

flag=0;

}

void delay()

{

int i,j;

for(i=0;i《400;i++)

{

for(j=0;j《100;j++)

{

}

}

}


关键字:AT89S51  单片机  红外遥控器 引用地址:使用AT89S51单片机制作红外遥控器源代码

上一篇:基于STC89C52单片机的液位远程监控器原理图
下一篇:89C51单片机的结构框图及原理解析

推荐阅读最新更新时间:2024-11-17 07:12

STC单片机程序下载失败问题总结
STC为宏晶公司推出的国产51单片机,其优点在于价格低廉,功能强大,使用方便,尤其是其串口ISP下载程序的方式方便了大量用户,免去了购买昂贵的编程器,非常适合单片机入门学习使用。 但是初学者常会遇到程序无法下载的情况,很多人甚至因此放弃了学习,实在可惜,在此给大家总结了常见的出错原因、判断方法和解决方法。 STC单片机下载程序需要的硬件主要分三部分: 单片机最小系统、下载电路、计算机端。 下载失败一般就从这三个方面来解决问题。 如果你有或者能向别人借到一套可以正常下载程序的电脑、单片机下载线、开发板,通过控制变量的方法,很快就能找到问题出在哪个环节。 1、你可以将自己的开发板连接在能正常下载的电脑上进行下载
[单片机]
STC<font color='red'>单片机</font>程序下载失败问题总结
如何控制51单片机的引脚
控制单片机的引脚,分为两个知识点,一个是怎么让引脚单片机输出高低电平,一个是怎么检测接入到引脚上的电平是高还是低。我们有时候会听到这样的话:“此单片机有几个IO口?”这里说的IO口,就是输入(input)输出(output)接口。一般情况下,单片机的引脚当中,除了电源引脚和晶振引脚,其它的都是IO口。当我们控制单片机的引脚高低时,我们把引脚当做输出引脚;当我们需要检测连接到单片机引脚上的电平时,我们把引脚当做输入引脚使用。 使引脚P1.5输出高电平,可以这样写: P1=0x20; 或者: sbit XXX=P1^5; XXX=1; 第一种写法,在20前面加0x,表示这是一个十六进制数,把这个十六进制数0x20写成二进制数就是001
[单片机]
英飞凌TRAVEO™ T2G-C系列微控制器和Altia CloudWare™软件平台亮相CES 2023
英飞凌TRAVEO™ T2G-C系列微控制器和Altia CloudWare™软件平台亮相CES 2023,简化显示器相关应用 【2023年01月12日,德国慕尼黑和美国内华达州拉斯维加斯讯】英飞凌科技股份公司与全球领先的图形用户界面(GUI)设计和开发工具提供商Altia近日宣布双方达成合作。2023年初,Altia CloudWare™软件平台开始支持英飞凌TRAVEO™ T2G-C系列微控制器(MCU),赋能显示器相关应用。 在近期举办的2023年国际消费电子展(CES 2023)上,全球电源系统和物联网领域的半导体领导者英飞凌和Alita分别展示了TRAVEO™ T2G-C系列微控制器和CloudWare™软件平台,
[工业控制]
英飞凌TRAVEO™ T2G-C系列<font color='red'>微控制器</font>和Altia CloudWare™软件平台亮相CES 2023
正确区分LJMP、AJMP、SJMP、JMP单片机跳转指令
MCS-51的控制转移类指令,共17条,分为无条件转移指令、条件转移指令、子程序调用和返回指令、空操作指令等四类。 无条件转移指令(共4条) LJMP addr16 ; PC〈—— addr16 AJMP addr11 ; PC〈—— PC+2 , PC10-0〈—— addr11 SJMP rel ; PC〈—— PC+2 , PC 〈—— PC+rel JMP @A+DPTR ; PC〈—— A+DPTR 第一条指令称为长转移指令(Long Jump); 第二条指令叫作绝对转移指令(Absolute Jump); 第三条指令称作短转移指令(Short Jump); 第四条指令是变址寻址转移指令(散转指令)
[单片机]
基于单片机的新型步进电机运动控制器
1 引言   数控技术是一种采用计算机对机械加工过程中各种控制信息进行数字化运算处理,并通过高性能的驱动单元对机械执行构件进行自动化控制的高新技术。现代机械加工业逐步向柔性化、集成化、智能化方向发展,因此新一代数控技术就必需强调具有开放式、智能化、网络化的特征 。本文采用新型微处理器、高性能集成电路,研究开发智能步进电机控制卡。 2 系统总体结构设计   通过对步进电机控制器关键技术进行分析、研究和比较,并综合国内外运动控制器产品智能化、集成化、开放化的发展趋势,我们提出的步进电机运动控制器总体结构如图1所示。 图1 系统总体结构 3 系统硬件电路设计   3.1 脉冲分频电路设计   本系统的主要控制对象为步
[单片机]
4.STC15W408AS单片机点亮第一个LED
STC15W408AS单片机有14个I/O口。其所有I/O口均可由软件配置成4种类型。4种类型分别为:准双向口/弱上拉(标准8051输出模式)、推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC15系列单片机的I/O口上电复位后为准双向口/弱上拉(传统8051的I/O口)模式。每个I/O口驱动能力均可达到20mA,但40-pin及40-pin以上单片机的整个芯片最大不要超过120mA,20-pin以上及32-pin以下(包括32-pin)单片机的整个芯片最大不要超过90mA。 在上一节3.STC15W408AS单片机GPIO中介绍了的GPIO的结构
[单片机]
4.STC15W408AS<font color='red'>单片机</font>点亮第一个LED
在温度变送器中PIC单片机有什么应用?
引言 在智能仪表设计中,经常用到 A/D 转换器。在常用的 A/D 转换中,7135 应用最为广泛, 它具有 41/2 位 A/D 转换精度,抗干扰能力强,价格低廉,主要用于检测参数的测量显示, 在智能仪器仪表中,常利用其 A/D 转换特性,与单片机串行连接,通过简单的人机界面实现对A/D 转换数据的智能控制。本文以 PIC 单片机与 ICL7135 的实际工程应用为例,介绍一款智能温度控制仪表在温度变送器中的应用。 1 PIC 单片机 PIC 系列 8 位 CMOS 单片机具有独特的 RISC 结构,数据总线和指令总线分离的哈佛总线(Harvard)结构,使指令具有单字长的特性,且允许指令码的位数可多于 8 位的数据位数,
[单片机]
在温度变送器中PIC<font color='red'>单片机</font>有什么应用?
基于P89C52RD2和FPGA的可调延时模块设计
   引言   基于P89C51RD2和FPGA的信号延时模块主要用在传输时钟信号、数字同步信号等对信号延迟有高要求的点对点传输系统中,它可对多路信号进行单独的适当延时调整。造成信号的延迟原因有:不同的传输线路、信号处理时间不同以及器件速度存在差异等。无论何种原因,延时模块可以对输入的已存在有延时积累的信号进行不同精度、不同范围的延时量调节,使信号到达终端后相对延迟时间符合要求。由于利用了可编程器件FPGA和增强型单片机,延时模块不仅能较好地实现其功能,而且实现了系统的模块化和微型化,利于模块在系统中的使用和模块的二次开发。    系统结构及硬件设计   系统结构框图如图1。其硬件结构比较简单,主要由单片机P89C51RD、
[工业控制]
基于P89C52RD2和FPGA的可调延时模块设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved