当前位置:文档之家› 红外NEC协议

红外NEC协议

红外协议之NEC协议

NEC协议载波:38khz

其逻辑1与逻辑0的表示如图所示:

逻辑1为2.25ms,脉冲时间560us;逻辑0为1.12ms,脉冲时间560us。所以我们根据脉冲时间长短来解码。推荐载波占空比为1/3至1/4。

NEC协议格式:

首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。

以上是一个正常的序列,但可能存在一种情况:你一直按着1个键,这样的话发送的是以110ms为周期的重复码,如下图:

就是说,发了一次命令码之后,不会再发送命令码,而是每隔110ms时间,发送一段重复码。

重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成。

需要注意的是:1838红外一体接收头为了提高接受灵敏度。输入高电平,其输出的是相反的低电平。

搞了一个下午和晚上,NEC解码出来还是有点细微差错。查了很久,也没有收获。心里有点小郁闷。今早起来,仔细地看了看他人的参考代码。突然被下面一个小小的细节折服了。

请注意这段代码:

1void hal_NEC_decode(uchar *addr,uchar *addrt,uchar *comm,uchar

*commt)

2 {

3 uchar i,j,k;

4 uchar tmp1=0;

5

6while(NECFinshFlag==0);

7 NECFinshFlag=0;

8

9for(i=0,k=1;i<4;i=i+1)

10 {

11for(j=1;j<=8;j++)

12 {

13if(NECTimerTable[k++] > 7)

14 {

15 tmp1 |=0x80;

16 }

17 tmp1 >>=1;

18 }

19switch(i)

20 {

21case0:*addr=tmp1;break;

22case1:*addrt=tmp1;break;

23case2:*comm=tmp1;break;

24case3:*commt=tmp1;break;

25 }

26 tmp1=0;

27 }

28 }

最后tmp1的值是被右移了1位。所以改为下代码

1void hal_NEC_decode(uchar *addr,uchar *addrt,uchar *comm,uchar

*commt)

2 {

3 uchar i,j,k;

4 uchar tmp1;

5

6while(NECFrameFlag==0);

7 NECFrameFlag=0;

8

9for(i=0,k=1;i<4;i=i+1)

10 {

11 tmp1=0;

12for(j=0;j<8;j++)

13 {

14 tmp1 >>=1;//事先右移一位,防止最后一次循环的出错

15if(NECTimerTable[k++] >8)

16 {

17 tmp1 |=0x80;

18 }

19 }

20switch(i)

21 {

22case0:*addr=tmp1;break;

23case1:*addrt=tmp1;break;

24case2:*comm=tmp1;break;

25case3:*commt=tmp1;break;

26 }

27 }

28 }

仅仅修改了这么一个代码顺序,程序就能比较完美的解析NEC协议来了。可见写程序,小小的细节也是非常重要,可能会牵扯到整个的成功。

总结:以后编写按1bit(不管是从LSB还是MSB开始)接收组成一个字节的程序,要格外的注意循环左移或者右移的情况。实现将临时变量移动一下,免得最后1位还需要移动而造成的错误。

最后附上NEC协议的命令码(市面上常见的遥控板)

NEC协议的遥控器参考代码

NEC协议的遥控器参考代码 /**************************************************************************** NEC_INF_S.h 用于NEC协议的遥控器与51单片机结合的驱动程序,可用任意IO口,不占用中断资源。用户码8位,分布于2-17个脉冲;按键码8位,分布于18-33个脉冲。 皆为前8原码,后8反码,并且接收数据时低位在前,高位在后。 主控器为51单片机,晶振频率为11.0592MHz。 注意:由于未用中断,所以信号的接收是靠查询方式的,可能会漏掉若干次红外信号。 *****************************************************************************/ #include #define uchar unsigned char #define uint unsigned int #define N 5000//用于在while()中循环时超时跳出的数的上限,可小刀 sbit nec_dat=P3^3;//任意IO口,用到哪个自己改哪个 uchar nec_id[2]={0};//遥控器的编码号,第一个为原码,第二个为反码 uchar nec_data[2]={0};//遥控器的命令号,第一个为原码,第二个为反码 uchar nec_status=0;//遥控器的按键状态信息。0:无按键;1:一次按键;2:连续按键uchar nec_actflag=0;//用于带到主函数里的按键响应标志。0:不动作;1:动作

英国NEC系列合同条件的特点

英国NEC系列合同条件的特点 NEC合同条件是由英国土木工程师协会编制的工程合同体系。包括六种主要选项条款(合同形式);九项核心条件;十五项次要选项条款;发包人可以从中选择适合自己项目的条款。 (1)NEC合同条件体系 NEC工程施工合同包含了六个主要选择条款即计价方式选择,不同的主要选项提供各种风险在雇主和承包商之间不同的基本分摊方案。由于风险分摊不一样,每个选项使用不同的向承包商付款的方式。 1)六种主要选项条款(合同形式)如下: ●总价合同;●单价合同;●目标总价合同;●目标单价合同; ●成本加酬金合同;●工程管理合同。 发包人可以从中做出选择。 2)九项核心条款。NEC的核心条款包括如下九部分 ●总则;●承包人的主要职责;●工期;●检验与缺陷;●支付;●补偿; ●权利;●风险与保险;●争端与终止。 关于支付,发包人可根据自己的需求,从上述六种合同形式中选择一种。NEC可以提供总价合同、单价合同、成本加酬金合同、

目标成本合同和工程管理合同。因此,NEC不是某种标准的合同条件,而是内涵广泛的系列合同条件。 3)次要选择 NEC含有十五项次要选择,它们包括: ●完工保证;●总公司担保;●工程预付款;●结算币种(多币种结算); ●部分完工;●设计责任;●价格波动;●保留(留置);●提前完工奖励; ●工期延误赔偿;●工程质量;●法律变更;●特殊条件;●责任赔偿; ●附加条款。 发包人可根据工程的特点、工程要求和计价方式做出选择。 (2)NEC的主要特征 与现有的其他标准合同条件相比,NEC合同条件具有如下特性: 1)适用范围广 NEC合同立足于工程实践,主要条款都用非技术语言编写,避免特殊的专业术语和法律术语;设计责任不是固定地由发包人或者承包人承担,可根据项目的具体情况由发包人或承包人按一定的比例承担责任;6种工程款支付方式和15种次要条款可以根据需要自行选择。在这个意义上讲,NEC的灵活性体现了自助餐式的合同条件,

NEC建筑工程施工合同编辑版(中英对照)

专业外语 教材:工程施工合同与使用指南。(The engineering and construction contract.) 课时:34学时。 1 The NEC engineering and construction contract 1.1Core clauses 1.1.1General(总则) New words: Employer 业主,contractor 承包商,project manager 项目经理,supervisor 监理工程师,adjudicator 裁决人,the contract date 合同生效日,works information 工程信息,site 工地现场,plant 设备,material 材料,the completion date 竣工日期,defect 缺陷,fee 间接费,ambiguity 歧义,inconsistency 矛盾。Actions 10 10.1 The Employer, the Contractor, the Project Manager and the Supervisor shall act as stated in this contract and in a spirit of mutual trust and co-operation. The Adjudicator shall act as stated in this contract and in a spirit of independence. 工作原则10 10.1 雇主、承包商、项目经理和监理工程师应按本合同的规定,在工作中相互信任、相互合作。裁决人应按本合同的规定独立工作。 本条要求雇主、承包商、项目经理和监理工程师应按本合同的规定进行工作。本条条文为唯一使用将来时的条文。 本条款是根据latham报告的建议而增加的。 Identified and defined 11 Terms 11.1 In these conditions of contract, terms identified in the Contract Data are in italics and defined terms have capital initials. 合同用词及其定义11 11.1 在本合同的条件中,合同资料所确认的用词以斜体字表示,另外专门定义的用词首字母大写。 本条给出了用于本合同主要用词的定义。在选项条款中给出专用于某一特定选项的用词的其他定义。以首字母大写表示的用词,为在工程施工合同条文中用以表示有专门定义,以区别于非专门定义的用词。在本使用指南中对斜体字和首字母大写采用与在工程施工合同条文中相同的约定。 11.2 (1)The Parties are the Employer and the Contractor. 11.2 (1)当事方为雇主和承包商。 (2)Others are people or organizations who are not the Employer, the Project Manager, the Supervisor, the Adjudicator, the Contractor, or any employee, Subcontractor or supplier of the Contractor. (2)其他方为雇主、项目经理、监理工程师、裁决人、承包商以及承包商的雇员、分包商或供应商以外的人员或机构。 专门定义的“其他方”习惯上指不直接参与本合同的人员和机构。然而,也有些例子,如第16.2条作为例外较为合适。在此中情景下,使用首字母不大的“其他方”可能产生打印错误的印象,而使用“其他人员”就可避免此种印象。 (3)The Contract Date is the date when this contract came into existence.

nec协议

竭诚为您提供优质文档/双击可除 nec协议 篇一:necprotocolnec协议 necprotocol tomyknowledgetheprotocolidescribeherewasdevelopedby nec.iveseenverysimilarprotocoldescriptionsontheinte rnet,andtheretheprotocoliscalledjapaneseFormat. idoadmitthatidontknowexactlywhodevelopedit.whatidok nowisthatitisusedinmylateVcRproducedbysanyoandwasma rketedunderthenameofFisher.necmanufacturedtheremote controlic. thisdescriptionwastakenfromtheVcRsservicemanual.tho sewerethedays,whenservicemanualswerefulledwithusefu linformation! Features

8bitaddressand8bitcommandlengthaddressandcommandare transmittedtwiceforreliabilitypulsedistancemodulati oncarrierfrequencyof38khzbittimeof1.125msor2.25ms modulation thenec protocoluses pulsedistance encoding pulseisofathebits.each 560μ slong38khzcarrierburst(about21cycles).alogical"1"ta kes2.25mstotransmit,whilealogical"0"isonlyhalfoftha t,being1.125ms.therecommendedcarrierduty-cycleis1/4 or1/3. protocol thepictureaboveshowsatypicalpulsetrainofthenecproto col.withthisprotocolthelsbistransmittedfirst.inthis

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

创作编号:BG7531400019813488897SX 创作者:别如克* 是不是觉得红外遥控+51单片机是绝妙组合?但是在编程时才发现超级纠结?其实也没那么纠结,自己摸索摸索,总能找出办法来的。 本程序占用了51单片机的定时器0以及中断1两个资源,为的是使单片机能接收到每一个红外脉冲信号,一个都不能少。如果舍不得用这两个资源,还有另一种查询的办法,就是不一定每个信号都能收到,可自己琢磨一下。

需要全套NEC协议红外遥控器资料的,到网上找,到处都有,而且很全。 另外,对着资料写程序如果实在写不出,可以找个示波器,把波形录下来好好研究研究。毕竟有些时候资料会过时,只要里面有一点东西变化了,程序就完全不一样了。这种弯路,尽量少走。 本程序只是头文件,具体到应用上还要各位自己动脑筋了,希望对大家有所帮助。共同学习,共同进步! /****************************************************************** INF_NEC.h 用于NEC协议的遥控器,主控器为51单片机。用户码8位,分布于2-17个脉冲;按键码8位,分布于18-33个脉冲。皆为前8原码,后8反码。 注意:本驱动占用51单片机的外部中断1以及定时器0两个资源,编程时注意 不要再乱动这两个资源。 *******************************************************************/ #include #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=(TMOD&0xf0)|0x02; //定时器0模式2,8位自动重装 TH0=0x19; TL0=0x19; //11.0592MHz晶振,计数230次,大概时间250us ET0=1;TR0=0; //定时器0使能,先关着 IT1=1;EX1=1; //外部中断1使能,用来接收红外信号

(完整word)红外遥控协议分析之:NEC协议

红外遥控编码传输协议 生产厂家对红外遥控的编码做了严格的规范,目前国内外主流的红外遥控编码传输协议有十多种,如NEC、Philips RC-5、Philips RC-6、Philips RC-MM、Philips RECS80、 RCA、X-Sat、ITT、JVC、Sharp、Nokia NRC17和Sony SIRC等。 国内最常用的规范有两种:NEC和Sony SIRC。这两种规范的调制方式分别为:PPM(脉冲间隔调制)和PWM(脉冲宽度调制)。谈到这两个概念,我需要具体讲解一下,因为我在网上查阅相关资料时甚是郁闷,好多说法相互矛盾。有说NEC属于PWM的因为它的脉宽不同,PPM的脉宽是固定的。而细心地朋友如果探究到NEC的典型芯片的芯片手册时,会发现上面这种说法是错误的。比如UPD6121这款红外远程控制芯片的调制方式为PPM。后来终于在一家国外的网站上找到了能够自圆其说的解释。个人认为比较正确,拿来和大家分享。 要想认清红外遥控编码传输协议的具体内容,我想还是先捡其重点来讲一下,编码规范中最重要的当属调制这部分了。而主流的调制方式有两种分别为PPM和PWM,当然其他还有好几种,这里先不讲解,免得糊涂了。本文就先介绍下PPM和PWM的区别。 PPM(Pulse Position Modulation),其实更加准确的说法应该是PDM(Pulse Distance Modulation)即脉冲间隔调制: 上图为典型编码规范NEC协议的调制图,为PPM调制。可以看出不管是“0”还是“1”,有高频调制波的地方(下文称其为脉冲)其宽度都是相同的位560us,而脉冲间的间隔则是不同的:“1”时为(2.25ms-560us),“0”时为(1.12ms-560us)。由此得来PPM的称号。 再来看下PWM的调制波形吧: 显然可以看出,“1”的脉冲宽度为1.2ms,“0”的为600us。而脉冲间隔不管是“0”还是“1”,均为600us。从而PPM和PWM的两个概念认识清楚!当然不同规范中PPM和PWM 这两种调制方式的脉宽及脉冲间隔可能不同,上面两个图只是示例而已。

NEC协议

一、NEC协议说明 NEC协议特点:8位地址和8位命令为提高可靠性,地址和命令都传输2次,脉冲间隔调制38kHz载波频率 (1)NEC的0和1的脉冲定义 在发送端: ①每一位时间为1.12mS(560us+560个低电平)或2.25ms(560us+16 80us),调制采用脉冲间隔时间长短调制每一位。 ②每一个脉冲都是由560uS长度的38kHz载波脉冲构成的,占空比为1 /4或1/3(约21个周期)。 逻辑1:2.25mS逻辑0:1.12mS 而在接收端:没有脉冲的时候为高电平,接收到脉冲的时候为低电平,故逻辑1为560us低+1680us高,逻辑0变为560us低+560us高。(因为560us是载波脉冲,故为低了,剩余的没有脉冲,故为高了,从而根据接收到的高电平的脉宽可以区分0与1);由这里我们可以得出在0与1之间,1高电平持续时间为1.68ms,0吃血的时间为0.56ms. (2)NEC协议

图片在附件中 上图是NEC协议的一个典型脉冲发送图。此协议LSB最低位先传送,所以接收的时候最先接收的是低位。 此图传送的地址是$59、命令是$16. 协议说明: ①一个信息发送是由9mS的AGC自动增益控制脉冲开头,在早期的IR红外接收器中用来设置增益。接着是4.5mS空闲,然后是地址、命令。 ②地址和命令都传送2次,第二次的地址和命令是反码,可以用来校验接收到的信息。 总的传输时间是固定的,因为每一位都有反码传送。 ③一个命令只发送一次,即使遥控器上的按键一直按着。但是会每1 10mS发送一次代码,此代码是重复码(在④中解释),直到遥控器按键释放。 ④重复码比较简单:一个9mS的AGC脉冲、2.25mS间隔、560uS 脉冲。 由以上可知:在接收端高电平持续最长的时间为4.5ms,表示为引导码。高电平时间持续为2.25ms为重复码。由此我们在一个5ms的时间内的脉冲的高电平持续时间,从而判断是引导码、重复码、还是1和0。

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

N E C协议的红外遥控器 驱动程序 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

是不是觉得红外遥控+51单片机是绝妙组合?但是在编程时才发现超级纠结?其实也没那么纠结,自己摸索摸索,总能找出办法来的。 本程序占用了51单片机的定时器0以及中断1两个资源,为的是使单片机能接收到每一个红外脉冲信号,一个都不能少。如果舍不得用这两个资源,还有另一种查询的办法,就是不一定每个信号都能收到,可自己琢磨一下。 需要全套NEC协议红外遥控器资料的,到网上找,到处都有,而且很全。 另外,对着资料写程序如果实在写不出,可以找个示波器,把波形录下来好好研究研究。毕竟有些时候资料会过时,只要里面有一点东西变化了,程序就完全不一样了。这种弯路,尽量少走。 本程序只是头文件,具体到应用上还要各位自己动脑筋了,希望对大家有所帮助。共同学习,共同进步! /************************************************************** **** INF_NEC.h 用于NEC协议的遥控器,主控器为51单片机。用户码8位,分布于2-17个脉冲; 按键码8位,分布于18-33个脉冲。皆为前8原码,后8反码。 注意:本驱动占用51单片机的外部中断1以及定时器0两个资源,编程时注意 不要再乱动这两个资源。

*************************************************************** ****/ #include #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=(TMOD&0xf0)|0x02; //定时器0模式2,8位自动重装 TH0=0x19;

NEC红外协议解码模块程序

//--------------------------------------------- // NEC红外协议解码模块 //--------------------------------------------- #include "Infrared_nec_decode.h" /*红外接收端口根据开发板重新设置*/ /*红外端口根据开发板重新设置*/ sbit INFRARED_RECV = P3^2;//红外接收头数据口连接的位置 //--------------------------------------------- //红外接收初始化 //设置定时器0工作方式1 16位定时器 //--------------------------------------------- void infrared_nec_decode_init() { TMOD &= 0x0f; TMOD |= 0x10; IT1 = 1; EX1 = 1; EA = 1; } //--------------------------------------------- // 获取高、低电平的计数值 // level为0时获取低电平,1时获取高电平 //--------------------------------------------- unsigned int infrared_nec_get_count(unsigned level) { TH1 = 0; TL1 = 0; TR1 = 1; if(level) while(INFRARED_RECV); else while(!INFRARED_RECV); TR1 = 0; return (TH1 * 256 + TL1); } //--------------------------------------------- // 解码NEC协议,将四字节解码结果存入缓冲区 // 返回值:0成功,1失败 //---------------------------------------------

(合同范本)NEC协议的红外遥控器驱动程序

NEC协议的红 外遥控器按 键对应数字 一览 (合同范本)NEC协议的红外遥控器驱动程序

是不是觉得红外遥控+51单片机是绝妙组合?但是在编程时才发现超级纠结?其实也没那么纠结,自己摸索摸索,总能找出办法来的。 本程序占用了51单片机的定时器0以及中断1两个资源,为的是使单片机能接收到每一个红外脉冲信号,一个都不能少。如果舍不得用这两个资源,还有另一种查询的办法,就是不一定每个信号都能收到,可自己琢磨一下。 需要全套NEC协议红外遥控器资料的,到网上找,到处都有,而且很全。 另外,对着资料写程序如果实在写不出,可以找个示波器,把波形录下来好好研究研 究。毕竟有些时候资料会过时,只要里面有一点东西变化了,程序就完全不一样了。这种弯路,尽量少走。 本程序只是头文件,具体到应用上还要各位自己动脑筋了,希望对大家有所帮助。共同学习,共同进步! 69

**************************************************************** INF_NEC.h 用于NEC 协议的遥控器,主控器为 51单片机。用户码8位,分布于2-17个脉冲; 按键码8位,分布于18-33个脉冲。皆为前8原码,后8反码。 注意:本驱动占用 51单片机的外部中断1以及定时器0两个资源,编程时注意 不要再乱动这两个资源。 ***************************************************************** #include #define uchar unsigned char #define uint unsigned int #ifndef __INF_NEC__ #define __INF_NEC__ extern void nec_init(); extern void nec_act(); #endif void nec_init() { TMOD=(TMOD&0xf0)|0x02; // 定时器0模式2, 8位自动重装 TH0=0x19; TL0=0x19; ET0=1;TR0=0; IT1=1;EX1=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; case 68:break; case 64:break; case 67:break; case 7:break; case 21:break; /** **/ uchar nec_flag=0;//nec_flag:遥控码的标志位。 uchar nec_num=0;//nec_num:红夕卜码的序号 uint nec_time=0;//nec_time:定时器的计时次数 0:无信号; 1、 nectime*250us 2:信号采集;3、可用信号 uchar nec_cod[2]={0,1};// uchar nec_dat[2]={0,1};// 遥控器的编号,编号 遥控器的数据,数据 0为原码,编号 0为原码,数据 1为反码 1为反码 〃外中断1及定时器0的初始化函数 //11.0592MHz 晶振,计数 230次,大概时间 250us 〃定时器0使能,先关着 〃外部中断1使能,用来接收红外信号 〃开总中断

NEC3合同条件主要特点

NEC3合同条件主要特点 NEC(New Engineering Contract,新工程合同)发源于英国,是目前英国工程界运用最为广泛的合同范本之一,已被英国政府部门大量运用于机场、水务、环保、公路、铁路、电力等领域的土木工程以及医院、学校和居住保障等公共建设项目。尤其值得一提的是,2012年伦敦奥运会采购所用的合同范本就是NEC3(NEC第三版)。除了英国,NEC合同条件在南非、新西兰、澳大利亚、中东等其他国家和地区也被广泛运用于各类项目中,其作为合同范本在各国的影响力正在不断扩大,我国香港特区于2009年的一系列项目中开始尝试采用NEC合同条件。然而,和其他传统的合同范本相比,很多中国承包商可能对NEC3合同条件的具体内容仍不是很熟悉,由此本文将就其主要特点和不足加以概括性介绍。 实际上,NEC系指ICE(The Institution of Civil Engineers,英国土木工程师学会)于1993年编制第一版、于1995年发行第二版的工程合同范本。最新版本为2005年第三版。与其他传统合同相比,NEC 的关键改革在于主张工程合同各方从“对立”转向“合作”以实现合同目标,其引入的早期警告(Early Warning)机制、并强调进度管理等旨在避免争议发生的创新举措在国际上有很大影响。此外,NEC合同条件适用范围极广。其以独特的组装式合同结构比较便于使用,并开创了以简洁语言撰写标准工程合同的先例。 首先,NEC合同对传统合同最为关键的挑战在于,其贯穿始终的指导思想是主张工程合同各方从传统的“对立”转向“合作”以实现合同目标。传统观点认为,工程合同各方利益必然是对立的。尤其在中国,工程合同条款及其履行历来以追求公平为目的,在实践中经常出现因为过分强调“公平”规则激化了矛盾冲突。然而,如今越来越多的业内人士深刻意识到,工程合同双方本质上存在共同利益,完全可以建立合作伙伴关系,协同工作、互信互惠,以达到共同目标。特别是2009年爆发的全球性经济危机使得工程各方不得不携手共渡难关,国际建筑工程领域内呈现出合同关系向“合作”发展的变化趋势。而NEC合同正因将工作原则建立在雇主、承包商、项目经理和监理工程师相互信任、相互合作基础之上,从而有利于工程的顺利进行,保证工程按期、保质并在合同价内完成。 NEC3引入“早期警告条款”即为强调“合作”的具体表现之一。根据该条款,承建商和工程管理人员在意识到任何事件可能导致合约总价格的增加,或完工时间的延续,或重要日期的延迟,或修复工作的产生,那么他们应出具一个早期报告,并且应要求参加早期警告会议。该早期警告会议的目的在于,为参加会议的各方提供一个合作的平台,以探讨如何避免或减少问题的发生。 除了“早期警告”机制,NEC3为了实现避免或减少争议的目的,对进度和报价进行修改以及赔偿事件的准备要求也较为严格,但是这在实践中将大大增加项目管理方面的工作量。此外,NEC3合同条件中亦明确规定,双方有义务进行合作。但是,该条款引起了很多律师和专家,包括FIDIC作者的反对,因为争议解决实践中针对“不合作”可能存在举证方面的障碍,需进一步补充细化构成“不合作”的具体表现。 其次,就适用范围而言,NEC合同文本尽管是为英国的工程与施工而设计制作的,但它的内容非常容易适应其他国家的不同情况,包括总包、分包、设计与建造合同的各类情况。NEC3合同系列包含了土木、机械、电气、化学工程的建造和流水线工厂的建造的所有要求,可根据各自适用范围分为:工程项目采购、服务采购、货物采购以及其他四大类。最主要的NEC合同范本包括:(1)工程施工合同(ECC),可作为发包人和总承包商之间的主合同,也被用于总包管理的一揽子合同;(2)工程施工分包合同(ECS),用于总承包商与分包商之间的合同;(3)专业服务合同(PSC),用于发包人与项目管理人、监理人、设计人、测量师、律师、社区关系咨询师等之间的合同;(4)裁判者合同(AC),用于指定裁判者解决任何

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

是不是觉得红外遥控 +51单片机是绝妙组合?但是在编程时才发现超级纠结?其实也 没那么纠结,自己摸索摸索,总能找出办法来的。 本程序占用了 51单片机的定时器 0以及中断1两个资源,为的是使单片机能接收到每 一个红外脉冲信号, 一个都不能少。如果舍不得用这两个资源,还有另一种查询的办法,就 是不一定每个信号都能收到,可自己琢磨一下。 需要全套NEC 协议红外遥控器资料的,到网上找,到处都有,而且很全。 另外,对着资料写程序如果实在写不出,可以找个示波器,把波形录下来好好研究研 究。毕竟有些时候资料会过时, 只要里面有一点东西变化了, 程序就完全不一样了。这种弯 路,尽量少走。 本程序只是头文件,具体到应用上还要各位自己动脑筋了,希望对大家有所帮助。共 同学习,共同进步! 69 70 71 68 64 67 07 21 09 22 25 13 12 24 94 08 28 90 66 82 74 NEC 协议的红 外遥控器按 键对应数字 一览

/****************************************************************** INF_NEC.h 用于NEC 协议的遥控器,主控器为 51单片机。用户码8位,分布于2-17个脉冲; 按键码8位,分布于18-33个脉冲。皆为前8原码,后8反码。 注意:本驱动占用 51单片机的外部中断1以及定时器0两个资源,编程时注意 不要再乱动这两个资源。 *******************************************************************/ #in clude #defi ne uchar un sig ned char #defi ne uint un sig ned int uchar nec_cod[2]={0,1};〃遥控器的编号,编号 uchar nec_dat[2]={0,1};〃遥控器的数据,数据 #ifndef __INF_NEC_ #defi ne __INF_NEC extern void n ec_i nit(); extern void n ec_act(); #en dif void nec_init() //外中断1及定时器0的初始化函数 { TMOD=(TMOD&0xf0)|0x02; // 定时器0模式2,8位自动重装 //11.0592MHz 晶振,计数 230次,大概时间 250us //定时器0使能,先关着 〃外部中断1使能,用来接收红外信号 〃开总中断 void nec_act()//按键功能程序 { if(( nec_dat[0]==~ nec_dat[1]) &&(n ec_flag==3)) { switch( nec_dat[0]) { case 69: break; case 70: break; case 71: break; case 68:break; case 64:break; uchar nec_flag=0;//nec_flag:遥控码的标志位。 uchar nec_num=0;//nec_num:红外码的序号 uint nec_time=0;//nec_time:定时器的计时次数 0:无信号;1、2:信号采集; 3、可用信号 n ec_time*250us 0为原码,编号1为反码 0为原码,数据1为反码 TH0=0x19; TL0=0x19; ET0=1;TR0=0; IT 1=1;EX 1=1; EA=1;

NEC合同条件

NEC合同条件 是由英国土木工程师协会(ICE,即The Institution of Civil En-gineers)编制的工程合同体系。1985年9月推出了NEC合同条件,对土木工程设计和施工的合同策略进行了基本回顾。1993年3月推出了新版NEC的第1版,1995年出版了第2版,采纳了符合现代合同原则的建议。由于IEC合同和FIDIC合同均隶属于传统的合同管理模式,故在运作中无法适应现代项目管理,产生了比较大的矛盾。如合同双方当事人出于各自的商业利益,在合同实施过程中. NEC合同简介和研究NEC合同的意义为了满足业主多样化的要求,便于对工程进行良好的管理,和各方共同协作并能有效地解决工程频繁的争议和造成的不利影响,1985年9月,英国土木工程师学会委员会(NEC)批准并开始编制新工程合同(NEC),工作小组由土木工程师学会成员、承包商、咨询工程师和雇主代表组成。新工程合同的征求意见版于1991年出版。随后通过征求广泛的意见和多次讨论,并在一些国家的不同类型的工程中进行试用,第一版于1993年3月正式出版。1995年通过对第一版进行大量的细微修改后出版了第二版。NEC合同在英国及英联邦国家得到了广泛使用,且其影响范围仍在不断扩大。因此,了解并研究NEC 合同具有重要意义:其一,随着我国国际承包商的国际竞争力不断增强,必将广泛地接触到NEC合同;其二,我国已加入WTO,建筑市场将对外开放,NEC合同及其管理模式作为一种国际惯例,将会随着投资商和国际承包商越来越多的进入中国的建筑市场;再次,了解和研究NEC合同及其管理模式对提高和完善我国的合同体制建设将有很大的帮助,并且可以指导从业人员的实际工作,而我国目前对NEC合同的研究尚少,许多建筑行业的人员对

NEC协议的红外遥控程序(任意IO口)

/**************************************************************************** NEC_INF_S.h 用于NEC协议的遥控器与51单片机结合的驱动程序,可用任意IO口,不占用中断资源。用户码8位,分布于2-17个脉冲;按键码8位,分布于18-33个脉冲。 皆为前8原码,后8反码,并且接收数据时低位在前,高位在后。 主控器为51单片机,晶振频率为11.0592MHz。 注意:由于未用中断,所以信号的接收是靠查询方式的,可能会漏掉若干次红外信号。 *****************************************************************************/ #include #define uchar unsigned char #define uint unsigned int #define N 5000//用于在while()中循环时超时跳出的数的上限,可小刀 sbit nec_dat=P3^3;//任意IO口,用到哪个自己改哪个 uchar nec_id[2]={0};//遥控器的编码号,第一个为原码,第二个为反码 uchar nec_data[2]={0};//遥控器的命令号,第一个为原码,第二个为反码 uchar nec_status=0;//遥控器的按键状态信息。0:无按键;1:一次按键;2:连续按键 uchar nec_actflag=0;//用于带到主函数里的按键响应标志。0:不动作;1:动作 #ifndef NEC_INF_S_h #define NEC_INF_S_h void nec_init();//初始化函数,注意一定要拉高,拉低就错误了 void nec_delay();//延时0.8ms左右,要求要非常精确,这是正确读数的关键 void nec_pulsedat();//读第2到第32个脉冲,第一个脉冲已判定 void nec_getdat();//扫描式读遥控器的数据,可能有时会扫描不到 #endif void nec_init()//初始化函数,注意一定要拉高,拉低就错误了 { nec_dat=1; } void nec_delay()//延时0.8ms左右,要求要非常精确,这是正确读数的关键 { uchar i; for(i=0;i<245;i++); }

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

是不是觉得 红外遥控+51单片机是绝妙组合?但是在编程时才发现超级纠结?其实也没那么纠结,自己摸索摸索,总能找出办法来的。 本程序占用了51单片机的定时器0以及中断1两个资源,为的是使单片机能接收到每一个红外脉冲信号,一个都不能少。如果舍不得用这两个资源,还有另一种查询的办法,就是不一定每个信号都能收到,可自己琢磨一下。 需要全套NEC协议红外遥控器资料的,到网上找,到处都有,而且很全。

另外,对着资料写程序如果实在写不出,可以找个示波器,把波形录下来好好研究研究。毕竟有些时候资料会过时,只要里面有一点东西变化了,程序就完全不一样了。这种弯路,尽量少走。 本程序只是头文件,具体到应用上还要各位自己动脑筋了,希望对大家有所帮助。共同学习,共同进步! /********************************************************** ******** INF_NEC.h 用于NEC协议的遥控器,主控器为51单片机。用户码8位,分布于2-17个脉冲; 按键码8位,分布于18-33个脉冲。皆为前8原码,后8反码。 注意:本驱动占用51单片机的外部中断1以及定时器0两个资源,编程时注意 不要再乱动这两个资源。 *********************************************************** ********/ #include #define uchar unsigned char #define uint unsigned int uchar nec_flag=0;//nec_flag:遥控码的标志位。0:无信号;1、2:信号采集;3、可用信号 uchar nec_num=0;//nec_num:红外码的序号

红外NEC协议

红外协议之NEC协议 NEC协议载波:38khz 其逻辑1与逻辑0的表示如图所示: 逻辑1为2.25ms,脉冲时间560us;逻辑0为1.12ms,脉冲时间560us。所以我们根据脉冲时间长短来解码。推荐载波占空比为1/3至1/4。 NEC协议格式: 首次发送的是9ms的高电平脉冲,其后是4.5ms的低电平,接下来就是8bit的地址码(从低有效位开始发),而后是8bit的地址码的反码(主要是用于校验是否出错)。然后是8bit 的命令码(也是从低有效位开始发),而后也是8bit 的命令码的反码。 以上是一个正常的序列,但可能存在一种情况:你一直按着1个键,这样的话发送的是以110ms为周期的重复码,如下图: 就是说,发了一次命令码之后,不会再发送命令码,而是每隔110ms时间,发送一段重复码。

重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成。 需要注意的是:1838红外一体接收头为了提高接受灵敏度。输入高电平,其输出的是相反的低电平。 搞了一个下午和晚上,NEC解码出来还是有点细微差错。查了很久,也没有收获。心里有点小郁闷。今早起来,仔细地看了看他人的参考代码。突然被下面一个小小的细节折服了。 请注意这段代码: 1void hal_NEC_decode(uchar *addr,uchar *addrt,uchar *comm,uchar *commt) 2 { 3 uchar i,j,k; 4 uchar tmp1=0; 5 6while(NECFinshFlag==0); 7 NECFinshFlag=0; 8 9for(i=0,k=1;i<4;i=i+1) 10 { 11for(j=1;j<=8;j++) 12 { 13if(NECTimerTable[k++] > 7) 14 { 15 tmp1 |=0x80; 16 } 17 tmp1 >>=1; 18 } 19switch(i) 20 { 21case0:*addr=tmp1;break; 22case1:*addrt=tmp1;break; 23case2:*comm=tmp1;break;

NEC Protocol NEC协议

NEC Protocol To my knowledge the protocol I describe here was developed by NEC. I've seen very similar protocol descriptions on the internet, and there the protocol is called Japanese Format. I do admit that I don't know exactly who developed it. What I do know is that it is used in my late VCR produced by Sanyo and was marketed under the name of Fisher. NEC manufactured the remote control IC. This description was taken from the VCR's service manual. Those were the days, when service manuals were fulled w ith useful information! Features ?8 bit address and 8 bit command length ?Address and command are transmitted twice for reliability ?Pulse distance modulation ?Carrier frequency of 38kHz ?Bit time of 1.125ms or 2.25ms Modulation The NEC protocol uses pulse distance encoding of the bits. Each pulse is a 560μs long 38kHz carrier burst (about 21 cycles). A logical "1" takes 2.25ms to transmit, while a logical "0" is only half of that, being 1.125ms. The recommended carrier duty-cycle is 1/4 or 1/3. Protocol

相关主题