广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com PT2262 PT2272 和 P87LPC764 单片机的接口设计 PT2262 和 PT2272 是一对专用的集成编解码器 当采用 4 位数据通信的时候可以有 6561 组码 A0--A7 为三态地址编码 即接正电源 接地和悬空 当采用 PT2262 和 P87LPC764 组成的遥控系统中可以把解码 的部分都可以省略掉但相对的解码的速度会慢一点 如果用 PT2272 来解码 要耗费的单片机资源 一 下面以红外遥控为例 可以加快解码的速度减小需 简要的说一下 发射部分 电路图如下 其中这里采用了 4 位数据码 8 位地址码的通信方式 地址编码端口为 A0~A7 图中 A0..A7 的编码 为悬空 TE 为编码输出控制端 当接低电平时 PT2262 就通过第 17 脚不断地串行输出其编码串 对于每 传送一组编码都自动连发四次 振荡频率 编码器用不同的占空比及组合表示不同的状态 f 1000x16/Rosc(K ) 图中 Rosc 采用了 1.5M 的电阻 KHz 振荡频率约为 22KHz PT2262 的发送格式如下 当按键有效时 PT2262 发送四次编码 每发送一次编码都有 5ms 宽度的低电平分开 而 16ms 的编码 是有 A0~A11 十二个码组成 PT2262 有三种编码 A0 在前 悬空 A11 在后 我们现在把 A8~A11 用来当作数据发送了 1和0 悬空时发送的码位如下 接高电平时发送的码位如下 -1- 广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com 接低电平时发送的码位如下 二 用 P87LPC764 单片机来解码 接收到的信号为发送信号的反码 利用这一特点来解码 因为每检测到按键有效一次 PT2262 都发送四次编码 我们可以 先检测有没有接收到信息 当有的时候我们就去掉第一次编码的信号 检测 5ms 的 高电平来检测编码的开始信号 接收到 5ms 的高电平后 才开始解码 我们可以发现每个码的长度都是 1.3ms 左右 每一个编码都是由低电平开始 的宽度可以把 1 码区分出来 然后到高电平 又到低电平 又回到高电平 我们从第一个高电平 剩下的悬空码和 0 码可以从第二个高电平的宽度区分出来 具体的单片机译码方法如下 由高电平开始 检测到下降沿时就延时 300us 读取接收的状态记为 A0 然后再检测下一个下降沿 下降沿后又延时 300us A0 A1 和悬空 读取接收的状态记为 A1 1码 这样就把一个编码给译出来了 0 码的关系如下 A0 A1 代码 0 0 1码 0 1 错误 1 0 悬空 1 1 0码 接收部分的电路图如下 具体的程序如下 REM EQU P1.7 P0M1 EQU 84H P0M2 EQU 85H P1M1 EQU 91H P1M2 EQU 92H P2M1 EQU 0A4H P2M2 EQU 0A5H ;接收正确位 RECEIVE BIT 20H.0 -2- 广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com ;因为当按住 PT2262 的按键不放的时候 PT2262 会把编码不断的送出 ;设置 ENABLE 位用来检测按键有没有放开过 ENABLE BIT 如果没有放开则不再响应 20H.1 ;30H 32H:接收的 8 位地址编码 ;31H 33H:接收的 4 位数据编码 ;36H 37H:设定的 8 位地址密码 ;其中以 30H.0 和 32.0 为例 ;悬空 : 30H.0=1 32H.0=0 ;1: 30H.0=0 32H.0=0 ;0: 30H.0=1 32H.0=1 ;38H:输出控制 ORG 0000H LJMP BEGIN ORG 0100H MOV SP MOV P1M1 #0FFH MOV P1M2 #00H MOV P0M1 #00H MOV P0M2 #0FFH MOV P0 #00H MOV P1 #0FFH BEGIN: #60H ;设定 P1 口为斯密特输入状态 ;设定 P0 口为上拉输出配置 ;编码设定为:A0~A7 为悬空 MOV 36H #0FFH MOV 37H #00H LCALL REMOTE ;接收遥控码 LCALL WORK ;控制输出 JMP LOOP LOOP: REMOTE: ;检测 50ms 内有没有编码接收 MOV 40H #50 41H #250 REMOTEA: MOV REMOTEB: JNB REM DJNZ 41H REMOTEB DJNZ 40H REMOTEA CLR ENABLE REMOTE0 ;有码发送 REMOTE_END: -3- 则跳转 广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com RET REMOTE0: JB ENABLE REMOTE_END ;按键没有放开则返回 ;清除上次解码内容 ;接收 12 位编码 MOV 34H #12 ;解码 ;先找出接收码的开头 即 5ms 左右的高电平 ;设置高电平时间为 4~6ms ;检测和等待 4ms 的高电平 REMOTE1: MOV 40H #40 41H #25 REMOTE2: MOV REMOTE3: JNB REM DJNZ 41H REMOTE3 DJNZ 40H REMOTE2 REMOTE1 ;等待在 2ms 内接收到的低电平 MOV 40H #20 41H #25 REMOTE4: MOV REMOTE5: ;4ms 到 6ms 内接收到下降沿 则跳去解码 JNB REM DJNZ 41H REMOTE5 DJNZ 40H REMOTE4 接收错误 ;超出 6ms 否则返回 REMOTE6 返回 CLR ENABLE JMP REMOTE_END REMOTE6: ;等待 300us 后 采集接收信号 MOV 40H #150 DJNZ 40H $ 并记录 ;采集接收信号 MOV C MOV A 31H REM RLC A MOV 31H MOV A 30H RLC A MOV 30H A A ;等待第二个下降沿 JNB REM $ -4- 广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com JB $ REM ;等待 300us 后采集接收信号 MOV 40H #150 DJNZ 40H $ MOV C MOV A 33H RLC A REM MOV 33H MOV A 32H RLC A MOV 32H A A ;等待第二个码值的下降沿 JNB REM $ JB REM $ DJNZ 34H ;把接收的编码左移 4 位 MOV 40H REMOTE6 将 8 位密码放在同一字节上 #4 REMOTE7: CLR C MOV A 31H RLC A MOV 31H MOV A 30H RLC A MOV 30H CLR C MOV A 33H A A RLC A MOV 33H MOV A 32H RLC A MOV 32H A DJNZ 40H REMOTE7 A ;把 4 位数据编码由高 4 位移到低 4 位上 MOV A 31H SWAP A MOV 31H MOV A 33H SWAP A MOV 33H MOV A 30H XRL A 36H JNZ REMOTE8 A A ;比较密码 ;密码不正确则跳转 -5- 广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com MOV A 32H XRL A 37H JNZ REMOTE8 ;密码不正确则跳转 ;置接收正确位 SETB RECEIVE ;置 ENABLE 用于检测按键有没有放开 SETB ENABLE RET REMOTE8: CLR ENABLE CLR RECEIVE RET ;把选中的 LED 取反 WORK: JNB RECEIVE WORK_END ;每次按键都一次响应 CLR RECEIVE MOV A 33H CPL A ANL A #0FH MOV 33H MOV A 38H XRL A 33H ANL A #0FH MOV 38H MOV P0 A A 38H NOP WORK_END: RET END -6- 广州周立功单片机发展有限公司 Tel: (020) 8730976 38730977 Fax: 38730925 http://www.zlgmcu.com 三 用 PT2272 接收解码和 P87LPC764 接口 电路图如下 图中的接线方法当 PT2272 接收发射过来的信号时 VT 脚输出一个正脉冲 经过 9014 的取反后 向 单片机 P87LPC764 产生一个中断请求 CPU 接到中断信号后读取 PT2272 芯片的内容 然后控制发光二极 管 -7-