电子制作天地网站欢迎您的光临,欢迎提出宝贵意见或建议。本站信息产业部备案: 粤ICP备05114582号
用单片机制作红外线多路遥控器
Infra-red remote controller

时间:2008-1-17 22:37:49 来源:网络 作者:未知 编辑: 【关闭


用单片机制作红外线多路遥控器,Infra-red remote controller

关键字:单片机制作红外线多路遥控器

红外线发射/接收控制电路均采用AT89C2051单片机来实现,电路简单,输出控制方式可选择,实用性强。
工作原理:图1为红外线发射电路原理图,K0至K7为遥控按钮,单片机P3.4端口控制红外线的发射。T1作为发射时间控制器,T0作为红外线发射频率控制器。当有按键按下时,控制软件启动定时器T0、T1, T0定时溢出,中断程序使P3.4端口状态反转一次,写入定时器的初值不同,在输出端口就可得到不同的发射频率。T1定时溢出,中断程序关闭T0定时器,停止红外线发射。程序见清单(一)。软件设计参数为:T1定时时间为100ms,K0至K7按钮所对应的红外线发射频率分别为300、600、900、1200、1500、1800、2100、2400 Hz。
图2为红外线接收及控制电路原理图,SW为控制方式选择开关:SW闭合时,单片机输出为“互锁”控制方式;非闭合时,输出控制为单路控制方式。T0为红外线脉冲计数器,T1作为计数时间控制器。接收电路中Q1接收到第一个红外线脉冲时,中断INT1被触发,启动计数器T0和定时器T1。定时溢出,中断程序关闭计数器T0,读入计数值并进行判断,确定操作对象(P1.0至P1.7),对其进行反转操作,控制电路对所控制的负载进行开或关;若SW为闭合,则同时关闭其它所有输出端口,实现了“互锁”功能。程序见清单(二)。
本文中的程序在仿真器中运行通过。利用此原理,可对控制路数进行扩展。控制路数比较多时,为缩小发射器体积,可利用组合键方法来实现,具体方法在此就不详细说明了。

一、
k0 BIT P1.0
k1 BIT P1.1
k2 BIT P1.2
k3 BIT P1.3
k4 BIT P1.4
k5 BIT P1.5
k6 BIT P1.6
k7 BIT P1.7
bz bit 00h
k0h equ #0f1h
k0l equ #0c8h ;k0键输出频率300Hz833
k1h equ #0f8h
k1l equ #0ech ;k1键输出频率600Hz417
k2h equ #0feh
k2l equ #0eah ;k2键输出频率900Hz278
k3h equ #0ffh
k3l equ #030h ;k3键输出频率1200Hz208
k4h equ #0ffh
k4l equ #059h ;k4键输出频率1500Hz167
k5h equ #0ffh
k5l equ #075h ;k5键输出频率1800Hz139
k6h equ #0ffh
k6l equ #089h ;k6键输出频率2100Hz119
k7h equ #0ffh
k7l equ #098h ;k7键输出频率2400Hz104
ORG 0000H
aJMP START
ORG 000BH ;定时器T0入口
aJMP intt0
ORG 001bH ;定时器T1入口
aJMP intt1
org 0030h
intt0: cpl p3.4
mov a,r1
mov th0,a
mov a,r2
mov tl0,r2
reti
intt1: clr tr0
clr et0
clr tr1
clr et1
setb bz
setb p3.4
reti
start: MOV P1,#0FFH
mov p3,#0ffh
MOV TMOD,#11H ;计数器T0、T1工作在方式1
setb ea ;开所有中断
xh: jb k0,d01
acall ys
Jb k0,d01 ;k0
jnb k0,$
acall sett1
mov r1,k0h
mov r2,k0l
acall sett0
jnb bz,$
d01: jb k0,d02
acall ys
Jb k0,d02 ;k1
jnb k0,$
acall sett1
mov r1,k1h
mov r2,k1l
acall sett0
jnb bz,$
D02: jb k0,d03
acall ys
Jb k0,d03 ;k2
jnb k0,$
acall sett1
mov r1,k2h
mov r2,k2l
acall sett0
jnb bz,$
D03: jb k0,d04
acall ys
Jb k0,d04 ;k3
jnb k0,$
acall sett1
mov r1,k3h
mov r2,k3l
acall sett0
jnb bz,$
D04: jb k0,d05
acall ys
Jb k0,d05 ;k4
jnb k0,$
acall sett1
mov r1,k4h
mov r2,k4l
acall sett0
jnb bz,$
D05: jb k0,d06
acall ys
Jb k0,d06 ;k5
jnb k0,$
acall sett1
mov r1,k5h
mov r2,k5l
acall sett0
jnb bz,$
D06: jb k0,d07
acall ys
Jb k0,d07 ;k6
jnb k0,$
acall sett1
mov r1,k6h
mov r2,k6l
acall sett0
jnb bz,$
D07: jb k0,d08
acall ys
Jb k0,d08 ;k7
jnb k0,$
acall sett1
mov r1,k7h
mov r2,k7l
acall sett0
jnb bz,$
d08: ajmp xh
ys: mov r5,#80h
ys1: djnz r5,ys1
ret
sett1: MOV TH1,#3ch ;定时时间约为100ms
MOV TL1,#0b0h
setb tr1 ;启动T1计时
setb et1 ;允许T1中断
clr bz
ret
sett0: MOV TH0,r1
MOV TL0,r2
setb tr0
setb et0
ret
end

接收部分-----见下一页面


◆相关文章◆
◆ 编辑推荐 ◆
用户:
更多评论
您要为您所发的言论的后果负责,故请各位遵纪守法并注意语言文明。60个字以内
留言:
验证码:

免责声明:
●本站所有内容均来自网络,以学习为目的,如果侵犯了您的利益,请来信告知,立即删除,站长邮件为"diy+dzdiy.com",请将"+"变更为"@"
●电子制作存在风险,请注意人身安全,如果您在根据本站电路进行制作过程中发生伤害,本站不负任何责任。

版权所有:www.dzdiy.com ? 2001-2019 本站信息产业部备案: 粤ICP备05114582号