嵌入式单片机基础篇(四十)之NEC通讯以及51单片机程序

本文详细介绍了51单片机实现NEC通讯的过程,包括38KHz载波的生成、NEC协议解析、遥控器电路设计及解码核心程序。内容涵盖了引导码、地址码、数据码的结构,以及中断服务函数的编写。

NEC通讯以及51单片机程序

一、实现38KHz载波:

(1)频率为38KHz,则载波周期为1/38KHz,约为26.3us
(2)发射红外光的占空比一般为1/3,也就是说高电平约8.77us,低电平约为17.53us
(3)高电平约8.77us+低电平约为17.53us=发射一个 红外光载波信号
(4)低电平26.3us=不发射红外光载波信号

二、NEC协议:

在这里插入图片描述如上图,一帧的数据的组成分别是:引导码、地址码、地址码的反码、数据码和数据码的反码。
(1)引导码:9ms的红外光载波信号+4.5ms的不发射红外光载波信号
(2)逻辑0:0.56ms的红外光载波信号+0.56ms的不发射红外光载波信号
逻辑1:0.56ms的红外光载波信号+1.68ms的不发射红外光载波信号
在这里插入图片描述(3)结束码:也就是逻辑0,0.56ms的红外光载波信号+0.56ms的不发射红外光载波信号

三、遥控器电路图及部分程序:

(1)模拟电路图:
在这里插入图片描述
(2)程序思路:
–NEC协议程序:

IR=P3^2     //第一步定义IR引脚
void delay8_77us()  //第二步,编写延时函数,51单片机12MHz晶振,延时8.77us
{
   
   
unsigned char i;
i=2;
while(--i);

}
void sendIR(unsigned int i)//第三步,编写发送红外光载波信号函数
{
   
   
while(i--)
{
   
   
IR=1;
 delay8_77us();
IR=0;
 delay8_77us();
 delay8_77us();
}
}
void nosendIR(unsigned int i)//第四步,编写不发送红外光载波信号函数
{
   
   
while(i--)
{
   
   
IR=0;
 delay8_77us();
 delay8_77us();
 delay8_77us();
}
}
void send0()       //第五步,编写发送逻辑0的函数
{
   
   
sendIR<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值