基于stc89c52单片机的红外学习型遥控器

在智能电视、网络机顶盒(电视盒子)上,常见的主流遥控器无外乎“红外线”、“蓝牙”两种遥控方式。“蓝牙”遥控器因其“无需对准”、“可以绕弯控制”、“控制距离远”等特点近年来越来越受到厂商的重视以及消费者的青睐,然而尽管如此,仍然有大量用户坚持使用红外线遥控,原因就是现阶段很多蓝牙遥控器存在诸多缺陷及问题,影响用户日常使用操作。
很详细的红外学习型遥控器,储存在24c64中的汇编子程序,在你自己的设计中只要修改一下io调用它就可以了,是本人的工程验证能学习市面常用的绝大部分红外线遥控器
用的是stc89c52单片机,下面是汇编代码:
;**********************************
;---------------------at24c64 code-------------------------
;==========================================================
icstart: ;i2c 开始
setb sda
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
clr sda
nop
nop
nop
nop
clr sck
ret
;==========================================================
icstop: ;i2c 结束
clr sda
nop
nop
nop
nop
clr sck
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
setb sda
ret
;==========================================================
icack: ;i2c 应答
clr sda
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
clr sck
ret
;==========================================================
noack: ;i2c 无应答
setb sda
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
clr sck
ret
;==========================================================
icreadbit: ;i2c 读取一位
setb sda
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
mov c,sda
clr sck
ret
;----------------------------------------------------------
icreadack:
mov r7,#200
setb sda
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
readacks:
jnb sda,ackend
djnz r7,readacks
setb c
clr sck
ret
ackend:
clr c
clr sck
ret
;==========================================================
icreadbyte: ;i2c 读取一个字节
mov r7,#8
readloop:
lcall icreadbit
rlc a
djnz r7,readloop
mov r7,a
ret
;==========================================================
icwritebit: ;i2c 写一位
mov sda,c
nop
nop
nop
nop
setb sck
nop
nop
nop
nop
clr sck
ret
;==========================================================
icwritebyte: ;i2c 写一个字节
mov a,r7
mov r7,#8
writeloop:
rlc a
lcall icwritebit
djnz r7,writeloop
ret
;==========================================================
readat:
mov a,r7 ;计算i2c地址
mov b,#208 ;144
mul ab
mov r2,b
mov r3,a
lcall icstart ;i2c 数据读入缓冲区
mov r7,#0a0h ;r2r3 i2c地址
lcall icwritebyte ;r0 缓冲区地址
lcall icreadack ;r1 数据个数
jnc rackend
ret
;
rackend:
mov a,r2
mov r7,a
lcall icwritebyte
lcall icreadack
mov a,r3
mov r7,a
lcall icwritebyte
lcall icreadack
lcall icstart
mov r7,#0a1h
lcall icwritebyte
lcall icreadack
mov r0,#lrdbuf
mov r1,#208 ;144
readdatas:
lcall icreadbyte
lcall icack
mov @r0,a
inc r0
djnz r1,readdatas
lcall noack
lcall icstop
ret
;==========================================================
writeat: ;缓冲区数据写入 i2c
mov a,r7 ;计算i2c地址
mov b,#208 ;;144
mul ab
mov r2,b
mov r3,a
mov r5,#13 ;9 13*16=208
mov r0,#lrdbuf
icwritenext:
lcall icstart
mov r7,#0a0h
lcall icwritebyte
lcall icreadack
jnc wackend
;
;
wackend:
mov a,r2
mov r7,a
lcall icwritebyte
lcall icreadack
mov a,r3
mov r7,a
lcall icwritebyte
lcall icreadack
mov r1,#16
writedatas:
mov a,@r0
inc r0
mov r7,a
lcall icwritebyte
lcall icreadack
djnz r1,writedatas
lcall icstop
mov r7,#250
delay_d:
mov r6,#20
djnz r6,$
djnz r7,delay_d
mov a,r3
add a,#16
mov r3,a
mov a,r2
addc a,#0
mov r2,a
djnz r5,icwritenext
ret
;*****************************************************************
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
lrdread:
;红外代码读取
mov r0,#lrdbuf ;代码缓冲区清零
mov r1,#208 ;144
clr a
clrlrdbuf:
mov @r0,a
inc r0
djnz r1,clrlrdbuf
mov r0,#lrdbuf
setb lrdr
lrdtest:
setb tr2
setb es ;红外代码起始检测
jb ri,lloop ;这里是检测有键按下时。。。。。。
clr tr2
jnb lrdr,readstart
jb hwxx,lrdtest ;红外学习标志位
ljmp llloop
lloop: ;
clr ri
mov a,sbuf
mov r0,#250
mov r1,#250
lp4: jb ri,lp3
djnz r0,lp4
djnz r1,lp4
ljmp lrdtest
lp3: clr ri
clr es
mov a,sbuf
mov a,#00h
lp2:
clr hongwai ;红外按钮标志位
clr p3.3
clr hwxx
mov sbuf,#37h
jnb ti,$
clr ti
dec sp
dec sp
ljmp loop
llloop: ret
;--------------------------------------
readstart:
clr ea
;setb p0.6
mov th1,#0
mov tl1,#12
setb lrdr
;--------------------------------------
readloop_s:
setb tr1
clr tf1
test_lrdr:
mov a,th1
jb tf1,lrdover
jnb lrdr,test_lrdr
clr tr1 ;
[1] [2]

一个简单的延时断电控制电路
1G到5G:一部波澜壮阔的移动通信史
多费率电能表中基于单片机串行口红外通信的设计
常见的工业通讯协议有哪些
高通发布基于骁龙XR1平台的AR眼镜设计
基于stc89c52单片机的红外学习型遥控器
3.3亿!国巨再度出手收购
汽车零部件业的拆分趋势
北斗卫星组网发射倒计数开始 成功发射两颗北斗导航卫星
何谓EMC?什么是Electromagnetic Compatibility(电磁兼容性)?
光模块测试,你选对电源了吗?
海谱纳米光学完成A轮融资 领跑全球高光谱成像行业
办公楼路灯景观车库智能照明控制系统RS485解决方案
声音的新科技 | 拆解紫光展锐5G芯T820的音频技术
英特尔推新型封装材料,满足大模型时代应用
什么是s参数?s参数的含义?s参数定义解析
digilent E1 asterisk 数字卡介绍
电销机器人来了,人工电销的好帮手
墨影科技MCR作为“科技抗疫”代表 在全国双创周深圳会场成果展示
微软的一项专利暗示使用一根魔杖来控制虚拟世界