历史上的今天
今天是:2025年04月22日(星期二)
2020年04月22日 | 51单片机实验14:红外通信模块应用
2020-04-22 来源:eefocus
目的:利用遥控器与单片机通信,并将遥控器按键所对应的编码在数码管上以十六进制的形式显示出来。
开发板红外传感器数据输出引脚对应的IO口为P3^2,该IO口同时为外部中断引脚,因此程序中采用下降沿触发的外部中断来判断是否接收到起始码。
51单片机中断系统的相关内容:https://blog.csdn.net/cax1165/article/details/86633086
数码管的相关内容:https://blog.csdn.net/cax1165/article/details/86557551
开发板红外模块电路图如下:

说明:程序中大量使用了如下代码片段:
err=***;
while((irin==*)&&(err>0))
{
delay(*);
err--;
}
该代码段起到延时作用(在位定义的时序图中,需要比较严格地控制高/低电平的持续时间,该代码段可以利用延时渡过某一电平持续时间,非常准确的停留在下一个电平来临的时候),并通过err递减的方式避免出现错误导致while语句死循环。
#include #define uc unsigned char #define ui unsigned int sbit LSA=P2^2; sbit LSB=P2^3; sbit LSC=P2^4; sbit irin=P3^2; uc code x[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0X76};//0x76表示H,为十六进制的标志符号 uc dig[8],irve[4]; uc t; void delay(ui i)//延时i*10微秒 { while(i--); } void digdisplay() { uc i; for(i=1;i<=3;i++) { switch(i) { case(1): LSA=0;LSB=0;LSC=0;break; case(2): LSA=1;LSB=0;LSC=0;break; case(3): LSA=0;LSB=1;LSC=0;break; } P0=dig[i]; delay(100); P0=0x00; } } void irinit() { IT0=1; EX0=1; EA=1; irin=1; } void Ir () interrupt 0 { uc i,j;ui err;t=0; delay(700); if(irin==0) { err=1000; while((irin==0)&&(err>0)) { delay(1); err--; } if(irin==1) { err=500; while((irin==1)&&(err>0)) { delay(1); err--; } for(i=1;i<=4;i++) { for(j=1;j<=8;j++) { err=60; while((irin==0)&&(err>0)) { delay(1); err--; } err=500; while((irin==1)&&(err>0)) { delay(10); t++;err--; if(t>30) { return; } } irve[i]>>=1; if(t>8) { irve[i]|=0x80; } t=0; } } } if(irve[3]!=irve[4]) return; } } void main() { irinit(); while(1) { dig[1]=x[16]; dig[2]=x[irve[3]%16]; dig[3]=x[irve[3]/16]; digdisplay(); } }
史海拾趣
|
也许不能移动大山,但可以运作自我;也许不能左右天气,但可以调整心情;也许不能选择容颜,但可以展现笑容;也许不能号令他人,但可以指挥自己;也许不能预知将来,但可以开发现在;也许不能样样如意,但可以事事尽力;也许不能主宰生命的始终,但 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 我们大量ROHM BU72435库存价格好,有需求请和我联系。 陈庭松 13138889236 … 查看全部问答> |
|
请想象一下,当您乔迁新居,要将电器的电源插头插进墙上插座里去,结果却发现根本不能匹配时是什么感受。应该感谢几十年之前设立的电气标准,发生这种事情的可能性已经很少了。其他还有一些标准也在为我们服务,比如我们可以跟与不同网络服务商打交 ...… 查看全部问答> |
|
TTL触发器芯片的主要参数 集成触发器的参数也可以分为直流参数和开关参数两大类。 下面以TTL集成JK触发器为例来简单介绍。 开关参数 1.最高时钟频率fmax fmax就是触 ...… 查看全部问答> |
|
各位同道中人,欢迎各位谈谈自己入门的经验以及推荐一些好的资料,作为LZ,先为大家献上一点啦! 现面有几个不错的网站 ,仅供参考 http://162.105.146.27/cgi-bin/ftp_search?BeginWith=208&FType=255&word=Linux http://linux.ubuntu.org. ...… 查看全部问答> |
|
我在安装skyeye是总是出现这个问题,重新安装了libxpm-dev,还是有同样的问题 make[2]: *** [skyeye] 错误 1 make[2]:正在离开目录 `/home/chonghui1001/skyeye/skyeye-1.3.0_rc1\' make[1]: *** [all-recursive] 错误 1 make[1]:正在离开目录 ...… 查看全部问答> |
|
我已经安装了EVT3.0,现想将其中的EVC升级到4.0,我从网上下载了EVC4.0安装程序安装后运行不了提示no CE platform SDK 于是我从网上去下载wince 5.0 SDK 可是无法安装,不是程序错误,像是缺少了什么东西 请问怎么才能安装EVC4.0 谢谢!… 查看全部问答> |
|
1、为什么我用NdisAllocateMemoryWithTag申请内存后,在NdisFreeMemory释放!有时候会蓝屏 我用 NdisAllocateMemoryWithTag(&pPacketContent,TotalPacketLength,TAG); 申请后 在释放的时候用 if(pPacketContent) NdisFreeMemory(pPacketConte ...… 查看全部问答> |




