协议的红外遥控器驱动程序.pdf

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
是不是觉得红外遥控 +51 单片机是绝妙组合?但是在编程时才发现超级纠结?其实也 没那么纠结,自己摸索摸索,总能找出办法来的。 本程序占用了 51 单片机的定时器 0 以及中断 1 两个资源,为的是使单片机能接收到每 一个红外脉冲信号, 一个都不能少。 如果舍不得用这两个资源,还有另一种查询的办法,就 是不一定每个信号都能收到,可自己琢磨一下。 需要全套 NEC 协议红外遥控器资料的,到网上找,到处都有,而且很全。 另外,对着资料写程序如果实在写不出,可以找个示波器,把波形录下来好好研究研 究。毕竟有些时候资料会过时, 只要里面有一点东西变化了, 程序就完全不一样了。这种弯 路,尽量少走。 本程序只是头文件,具体到应用上还要各位自己动脑筋了,希望对大家有所帮助。共 同学习,共同进步! /****************************************************************** INF_NEC.h 用于 NEC 协议的遥控器,主控器为 51 单片机。用户码 8 位,分布于 2-17 个脉冲; 按键码 8 位,分布于 18-33 个脉冲。皆为前 8 原码,后 8 反码。 注意:本驱动占用 51 单片机的外部中断 1 以及定时器 0 两个资源,编程时注意 不要再乱动这两个资源。 *******************************************************************/ #includereg52.h #define uchar unsigned char #define uint unsigned int uchar nec_flag=0;//nec_flag: 遥控码的标志位。 0:无信号; 1、2:信号采集 ;3、可用信号 uchar nec_num=0;//nec_num: 红外码的序号 uint nec_time=0;//nec_time: 定时器的计时次数 nec_time*250us uchar nec_cod[2]={0,1};// 遥控器的编号,编号 0 为原码,编号 1 为反码 uchar nec_dat[2]={0,1};// 遥控器的数据,数据 0 为原码,数据 1 为反码 #ifndef __INF_NEC__ #define __INF_NEC__ extern void nec_init(); extern void nec_act(); #endif void nec_init() // 外中断 1 及定时器 0 的初始化函数 { TMOD=(TMOD0xf0)|0x02; // 定时器 0 模式 2,8 位自动重装 TH0=0x19; TL0=0x19; //11.0592MHz 晶振,计数 230 次,大概时间 250us ET0=1;TR0=0; // 定时器 0 使能,先关着 IT1=1;EX1=1; //外部中断 1 使能,用来接收红外信号 EA=1; //开总中断 } void nec_act()// 按键功能程序 { if((nec_dat[0]==~nec_dat[1])(nec_flag==3)) { switch(nec_dat[0]) { case 69: break; case 70: break; case 71: break; ca

文档评论(0)

kxg2020 + 关注
实名认证
内容提供者

至若春和景明,波澜不惊,上下天光,一碧万顷,沙鸥翔集,锦鳞游泳,岸芷汀兰,郁郁青青。

1亿VIP精品文档

相关文档