本帖最后由 新乡家电维修 于 2019-5-29 21:48 编辑
最近研究315M解码最下面增加了发送遥控码功能,记忆功能
超外差模块驱动能力很强,可以直接联接单片机I口,
集成晶振模块驱动能力有限,无法驱动单片机IO口,需要加驱动三极管组成射集跟随器驱动
同步头是一个高电平脉冲和一个长的低电平组成,图片是9.3ms左右的同步头,要连续检测到
两个同步头(绕开中间24个脉冲)相同才能确认是正确的信号。解码成功后,蜂鸣器响一声
第一排显示同步头时间:XX.Xms
第二排显示密码和数据:F1000010 1001
常见密码大家都熟悉:00=0、01=F、11=1,还有遥控有10,开始以为我解码错误
后来电脑分析波形才知道,特增加了10=D,扩大解码范围,这种波形出现在电动车遥控比较多。
电脑采集信号分析如图所示:
如果多人跟帖,有兴趣,我会继续更新贴新加入了发射接收到的315M遥控信号功能,并保存到24C02中
下次开机直接读取24C02数据作为比较信号和接收的信号比较,控制SSR输出
按下K1发射存储在24C02中的信号(最少发送5遍信号)
按下S1手动控制SSR输出
按下S0记忆当前接收到的信号到24C02中
下图是新程序,增加的功能显示
SPK EQU P3.7 ;蜂鸣器
RS bit P2.7 ;引脚定义
RW bit P2.6
E bit P2.5
LCD EQU P0
IRIN BIT P3.2 ;315M信号输入端
FAST BIT P3.5 ;315M信号发射端
K1 BIT P1.0 ;开关控制发射
S0 BIT P1.1 ;学习按键(解码正确后,按键按下就学习成功)
S1 BIT P3.3 ;手动开关,控制输出
sda BIT p3.4 ;5脚
scl BIT p3.3 ;6脚
address equ 40h ;256字节地址数
cdate equ 2Ah ;数据暂时存放单元
SSR BIT P3.0 ;输出端
ORG 00H
LJMP MAIN
ORG 03H ;外部中断INT0入口地址
LJMP INT_0
ORG 40H
;====================================主程序==================================
MAIN:
CLR FAST
SETB IRIN
LCALL COPY ;读取24C02中的数据作为遥控开关比较数据
MOV 3AH,#20 ;控制蜂鸣器时间
LCALL FS_SPK ;蜂鸣器响一声(没有检测到24C02,蜂鸣器开机不响)
WU2402:
MOV LCD,#00000001B ;清屏并复位光标
LCALL WR_COMM ;调用写指令子程序
LCALL INIT_LCD ;调用初始化子程序
MOV SP,#60H
LCALL DISP ;显示
SETB EA ;打开CPU总中断请求
MOV TMOD,#00010001B ;模式1定时模式
MOV TH0,#00H
MOV TL0,#00H
SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
SETB EX0
UUUU:
JNB S1,A2
JB K1,UUUU ;有按键就发送遥控码
CLR EA ;关闭中断,让遥控码发送完成不受干扰
MOV A,2CH
CPL A
MOV 2CH,A
LCALL TTTT
SETB EA
JMP UUUU
;============================按键程序====================================
A2: LCALL DELAY_10MS
JB S1,A2_EN
CPL SSR ;开关动作一次
A2_EN:
RET
DELAY_10MS:
MOV R6,#25
XX0: MOV R7,#20
XX1: DJNZ R7,$
DJNZ R6,XX0
RET
;=========================读出24C02数据==================
copy:
mov r0,#2Ah ;r0作为间接寻址
mov address,#00h;地址清零
; mov 2Ah,#0 ;清零准备装入上次24C02存储的数据
; mov 2Bh,#0 ;读出的数据放在2AH/2BH/2CH中
; mov 2Ch,#0
; mov 2Dh,#0
mov r5,#4
s: mov r2,#10100000b ;写存储器1010(为24c系列统一识别码)001(为芯片地址码A2/A1/A0)最后一位是读写位
mov r4,#10100001b ;读存储器
MOV R3,#50
Lcall read ;调用读存储器程序
inc address ;地址加1
inc r0
djnz r5,s ;减1后不为0继续返回S
ret
;----------------------------------
read: lcall start ;启动总线
mov a,r2
lcall send
lcall ack
jc read ;
mov a,address
lcall send
lcall ack
read_a:
lcall start
mov a,r4
lcall send
lcall ack
jc read_a
rece:
lcall receive
mov @r0,a ;读到数据存储到@R0指定地址
lcall ack
lcall stop
ret
部分程序
下面的烧写文件,晶振选4M,单片机STC89C52RC接线按照主程序上面的引脚定义接线就行,保证成功
为了防止不法人员利用程序偷盗别人遥控器码,程序我做了修改,只能解码一次就需要从新启动
发送数据也是发送一次就不能再发送信号了,需要重启,
2262解码测试51记忆2402.zip
(1.29 KB, 下载次数: 108)
|