⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 红外线遥控器解码程序 汇编语言 经典说明.htm

📁 遥控器程序资料很多个
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                        onmouseover="if(this.alt) this.style.cursor='hand';" 
                        onclick="if(this.alt) window.open('http://www.xie-gang.com/hw/Image5.gif');" 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/Image5.gif" 
                        onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" 
                        border=0>   &nbsp;&nbsp;      <BR>②单发代码格式 <BR><BR><IMG 
                        onmouseover="if(this.alt) this.style.cursor='hand';" 
                        onclick="if(this.alt) window.open('http://www.xie-gang.com/hw/Image6.gif');" 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/Image6.gif" 
                        onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" 
                        border=0>        <BR>③连发代码格式 <BR><IMG 
                        onmouseover="if(this.alt) this.style.cursor='hand';" 
                        onclick="if(this.alt) window.open('http://www.xie-gang.com/hw/Image7.gif');" 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/Image7.gif" 
                        onload="if(this.width>screen.width-333) {this.width=screen.width-333;this.alt='Click Here to Open New Window';}" 
                        border=0><BR>注:代码宽度算法:<BR><BR>16位地址码的最短宽度:1.12×16=18ms 
                        16位地址码的最长宽度:2.24ms×16=36ms 
                        <BR><BR>易知8位数据代码及其8位反代码的宽度和不变:(1.12ms+2.24ms)×8=27ms<BR><BR>∴32位代码的宽度为(18ms+27ms)~(36ms+27ms)<BR><BR>1. 
                        解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。<BR><BR>2. 
                        根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。<BR><BR> <BR><BR>如果邮购我们开发的51单片机试验板和扩展元件的网友,可以获得如上图所示的红外遥控手柄,这种遥控器的编码格式符合上面的描述规律,而且价格低廉,有32个按键,按键外形比较统一,如果用于批量开发,可以把遥控器上贴膜换成你需要的字符,这为开发产品提供了便利。<BR><BR>接收器及解码<BR><BR>一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。<BR><BR>下面是一个对51实验板配套的红外线遥控器的解码程序,它可以把上图32键的红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。<BR><BR>这是站长最新用单片机AT89C51制作的30路红外遥控器,遥控器就是自家的VCD遥控器,接收板用了5片CD4069作为输出缓冲隔离,当按下遥控器30个按键中的一个,接收板对应的一个触点会变成高电平,松开按键,立即恢复成低电平,和TTL兼容。</TD></TR></TBODY></TABLE></TD></TR>
              <TR bgColor=#f8f8f8>
                <TD vAlign=center>
                  <TABLE class=smalltxt cellSpacing=0 cellPadding=0 width="100%" 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD><IMG src="红外线遥控器解码程序 汇编语言 经典说明.files/lastpost.gif" 
                        align=absMiddle> 2005-1-14 19:42</TD>
                      <TD align=right><SPAN class=bold 
                      align="right">#3</SPAN></TD></TR></TBODY></TABLE></TD>
                <TD vAlign=center>
                  <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
                    <TBODY>
                    <TR class=smalltxt>
                      <TD align=left><A 
                        href="http://freeweb.nyist.net/~xuyuan/luntan/viewpro.php?username=sina3228&amp;sid=5VUbJ06d"><IMG 
                        alt=查看资料 src="红外线遥控器解码程序 汇编语言 经典说明.files/profile.gif" 
                        border=0></A>&nbsp; <A 
                        href="mailto:sina3228@163.com"><IMG alt=发送邮件 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/email.gif" 
                        border=0></A>&nbsp; <A 
                        href="http://freeweb.nyist.net/~xuyuan/luntan/search.php?srchuname=sina3228&amp;srchfid=all&amp;srchfrom=0&amp;searchsubmit=yes&amp;sid=5VUbJ06d"><IMG 
                        alt=搜索该用户的全部帖子 src="红外线遥控器解码程序 汇编语言 经典说明.files/find.gif" 
                        border=0></A>&nbsp; <A 
                        href="http://freeweb.nyist.net/~xuyuan/luntan/pm.php?action=send&amp;username=sina3228&amp;sid=5VUbJ06d" 
                        target=_blank><IMG alt=发短消息 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/pm.gif" 
                        border=0></A>&nbsp; <A 
                        href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=15149327" 
                        target=_blank><IMG alt=OICQ 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/oicq.gif" 
                        border=0></A>&nbsp; </TD>
                      <TD align=right>&nbsp;<A 
                        href="http://freeweb.nyist.net/~xuyuan/luntan/post.php?action=edit&amp;fid=6&amp;tid=383&amp;pid=2053&amp;page=1&amp;sid=5VUbJ06d"><IMG 
                        alt=编辑帖子 src="红外线遥控器解码程序 汇编语言 经典说明.files/edit.gif" 
                        border=0></A> &nbsp;<A 
                        href="http://freeweb.nyist.net/~xuyuan/luntan/post.php?action=reply&amp;fid=6&amp;tid=383&amp;repquote=2053&amp;sid=5VUbJ06d"><IMG 
                        alt=引用回复 src="红外线遥控器解码程序 汇编语言 经典说明.files/quote.gif" 
                        border=0></A> 
        </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></A><A 
      name=pid2054>
      <TABLE cellSpacing=0 cellPadding=0 width="98%" align=center border=0>
        <TBODY>
        <TR>
          <TD bgColor=#000000>
            <TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" 
            cellSpacing=1 cellPadding=4 width="100%" border=0>
              <TBODY>
              <TR bgColor=#ffffff>
                <TD vAlign=top width="21%"><SPAN class=bold 
                  ?>sina3228</SPAN><BR><SPAN class=smalltxt>支柱会员<BR><IMG 
                  src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG 
                  src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG 
                  src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><IMG 
                  src="红外线遥控器解码程序 汇编语言 经典说明.files/star.gif"><BR><BR>
                  <TABLE style="TABLE-LAYOUT: fixed" cellSpacing=0 cellPadding=0 
                  width="95%" border=0>
                    <TBODY>
                    <TR>
                      <TD align=middle><IMG 
                        src="红外线遥控器解码程序 汇编语言 经典说明.files/06.gif" 
                    border=0></TD></TR></TBODY></TABLE><BR>积分 402<BR>发贴 
                  75<BR>性别&nbsp; 男 <BR>注册 2004-9-8<BR>来自 理工学院 电子02912班<BR>状态 离线 
                  </SPAN></TD>
                <TD height="100%">
                  <TABLE style="TABLE-LAYOUT: fixed; WORD-WRAP: break-word" 
                  height="100%" cellSpacing=0 cellPadding=0 width="100%" 
                  border=0>
                    <TBODY>
                    <TR>
                      <TD vAlign=top><SPAN class=bold><SPAN 
                        class=smalltxt></SPAN></SPAN>红外遥控器软件解码原理及程序 <BR>&nbsp; 
                        &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
                        &nbsp;<BR>红外一开始发送一段13.5ms的引导码,引导码由9ms的高电平和4.5ms的低电平组成,跟着引导码是系统码,系统反码,按键码,按键反码,如果按着键不放,则遥控器则发送一段重复码,重复码由9ms的高电平,2.25ms的低电平,跟着是一个短脉冲,本程序经过试用,能解大部分遥控器的编码!<BR><BR>#include 
                        "at89x52.h"<BR>#define NULL 0x00//数据无效<BR>#define RESET 
                        0X01//程序复位<BR>#define REQUEST 0X02//请求信号<BR>#define ACK 
                        0x03//应答信号,在接收数据后发送ACK信号表示数据接收正确,也位请求信号的应答信号<BR>#define 
                        NACK 0x04//应答信号,表示接收数据错误<BR>#define BUSY 
                        0x05//忙信号,表示正在忙<BR>#define FREE 
                        0x06//空闲信号,表示处于空闲状态<BR>#define READ_IR 
                        0x0b//读取红外<BR>#define STORE_IR 0x0c//保存数据<BR>#define 
                        READ_KEY 0x0d//读取键值<BR>#define RECEIVE 
                        0Xf400//接收缓冲开始地址<BR>#define SEND 
                        0xfa00//发送缓冲开始地址<BR>#define IR 
                        0x50//红外接收缓冲开始地址<BR>#define HEAD 0xaa//数据帧头<BR>#define 
                        TAIL 0x55//数据帧尾<BR>#define SDA P1_7<BR>#define SCL 
                        P1_6<BR><BR><BR><BR>unsigned char xdata *buf1; 
                        //接受数据缓冲<BR>unsigned int buf1_length; 
                        //接收到的数据实际长度<BR>unsigned char xdata *buf2; 
                        //发送数据缓冲<BR>unsigned int buf2_length; 
                        //要发送的数据实际长度<BR>bit buf1_flag; 
                        //接收标志,1表示接受到一个数据帧,0表示没有接受到数据帧或数据帧为空<BR>bit buf2_flag; 
                        //发送标志,1表示需要发送或没发送完毕,0表示没有要发送的数据或发送完毕<BR>unsigned char 
                        state1,state2; 
                        //用来标志接收字符的状态,state1用来表示接收状态,state2用来表示发送状态<BR>unsigned 
                        char data *ir;<BR>union{<BR>unsigned char 
                        a[2];<BR>unsigned int b;<BR>unsigned char data 
                        *p1[2];<BR>unsigned int data *p2[2];<BR>unsigned char 
                        xdata *p3; //红外缓冲的指针<BR>unsigned int xdata 
                        *p4;<BR>}p;<BR>//union{ //<BR>// unsigned char a[2]; 
                        //<BR>// unsigned int b;<BR>// unsigned char data 
                        *p1[2];<BR>// unsigned int data *p2[2];<BR>// unsigned 
                        char xdata *p3;<BR>// unsigned int xdata *p4; 
                        //地址指针<BR>//}q; //<BR><BR>union{<BR>unsigned char 
                        a[2];<BR>unsigned int 
                        b;<BR>}count;<BR>union{<BR>unsigned char 
                        a[2];<BR>unsigned int b;<BR>}temp;<BR>union{<BR>unsigned 
                        char a[4];<BR>unsigned int b[2];<BR>unsigned long 
                        c;<BR>}ir_code;<BR><BR>union{<BR>unsigned char 
                        a[4];<BR>unsigned int b[2];<BR>unsigned long 
                        c;<BR>unsigned char data *p1[4];<BR>unsigned int data 
                        *p2[4];<BR>unsigned char xdata *p3[2];<BR>unsigned int 
                        xdata *p4[2];<BR>}i;<BR>unsigned char ir_key;<BR>bit 
                        ir_flag; //红外接收标志,0为缓冲区空,1为接收成功,2为缓冲溢出<BR>void 
                        sub(void);<BR>void delay(void);<BR>void 
                        ie_0(void);<BR>void tf_0(void);<BR>void 
                        ie_1(void);<BR>void tf_1(void);<BR>void 
                        tf_2(void);<BR>void read_ir(void);<BR>void 
                        ir_jiema(void);<BR>void ir_init(void);<BR>void 
                        ir_exit(void);<BR>void store_ir(void);<BR>void 
                        read_key(void);<BR>void reset_iic(void);<BR>unsigned 
                        char read_byte_ack_iic(void);<BR>unsigned char 
                        read_byte_nack_iic(void);<BR>bit write_byte_iic(unsigned 
                        char a);<BR>void send_ack_iic(void);<BR>void 
                        send_nack_iic(void);<BR>bit 
                        receive_ack_iic(void);<BR>void start_iic(void);<BR>void 
                        stop_iic(void);<BR>void write_key_data(unsigned char 
                        a);<BR>unsigned int read_key_data(unsigned char 
                        a);<BR>void ie0(void) interrupt 0{ie_0();}<BR>void 
                        tf0(void) interrupt 1{tf_0();}<BR>void ie1(void) 
                        interrupt 2{ie_1();}<BR>void tf1(void) interrupt 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -