知道了红外遥控的编码(16位1101 0011 1001 0010)请问怎样在单片机里解码

知道了红外遥控的编码(16位1101 0011 1001 0010)请问怎样在单片机里解码,第1张

遥控器读码程序(晶振为11.0592),该程如猛序能读出遥控器的控制码中脊,并通过LED显示出来

OMEN 2005/1/16于TCL

***************************************************************

A_BIT EQU 20H 数码管个位数存放内存位置

B_BIT EQU 21H 数码管十位数存放内存位置

NO_OUT EQU 24H 最终控制号码存放单元

A_NO EQU 25H 数码管个位数对应代码存放内存位置

B_NO EQU 26H 数码管十位数对应代码存放内存位置

22H,23H为控制码及其反码的存放单元

*******************<<主程序>>***********************************

ORG 0000H

AJMP 0030H

ORG 0003H 外部中断P3.2脚INT0入口地址

AJMP INT 转入外部中断服务子程序(解码程序)

ORG 0030H

AJMP MAIN 转入主程序

***************************************************************

MAIN: MOV NO_OUT,#0H

SETB EA 打开CPU总中断请求

SETB IT0 设定INT0的触发方式为脉冲负边沿触发

SETB EX0 打开INT0中断请求

LOOP: MOV A,NO_OUT将按键的键值通过P1口的8个LED显示出来!

CPL A由于P1发光二极管显示的是电平的反状态,所以取反

MOV P1,A 发光二极管显示输出

LCALL DISPLAYLED数码管显示输出

AJMP LOOP循环

********************<<中断接受遥控程序>>************************

以下为进入P3.2脚外部中断子程序,也就是解码程序

INT:

PUSH ACC

PUSH PSW 将PSW和ACC推入堆栈保护

CLR EA 暂时关闭CPU的所有中断请求

MOV R6,#10

SB: LCALL DL865调用865微秒延时子程序

JB P3.2,EXIT延时865微秒后判断P3.2脚是否出现高电平如果有就退出解码程序

DJNZ R6, SB重复10次,卖橡渗目的是检测在8650微秒内如果出现高电平就退出解码程序

以上完成对遥控信号的9000微秒的初始低电平信号的识别。

JNB P3.2, $ 等待高电平避开9毫秒低电平引导脉冲

LCALL DL4737 延时4.74毫秒避开4.5毫秒的结果码

MOV R7,#16忽略前26位系统识别码

JJJJA:JNB P3.2,$等待地址码第一位的高电平信号

LCALL DL865高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态

MOV C,P3.2将P3.2引脚此时的电平状态0或1存入C中

JNC UUUA如果为0就跳转到UUUA

LCALL DL1000检测到高电平1的话延时1毫秒等待脉冲高电平结束

UUUA: DJNZ R7,JJJJA

MOV R1,#22H 设定22H为起始RAM区

MOV R2,#2接收从22H到23H的2个内存,用于存放 *** 作码和 *** 作反码

PP: MOV R3,#8每组数据为8位

JJJJ: JNB P3.2,$等待地址码第一位的高电平信号

LCALL DL865高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态

MOV C,P3.2将P3.2引脚此时的电平状态0或1存入C中

JNC UUU如果为0就跳转到UUU

LCALL DL1000检测到高电平1的话延时1毫秒等待脉冲高电平结束

UUU: MOV A,@R1将R1中地址的给A

RRC A将C中的值0或1移入A中的最低位

MOV @R1,A将A中的数暂时存放在R1数值的内存中

DJNZ R3,JJJJ接收满8位换一个内存

INC R1对R1中的值加1,换下一个RAM

DJNZ R2,PP 接收完8位数据码和8位数据反码,存放在22H/23H中

MOV A,22H

CPL A对22H取反后和23H比较

CJNE A,23H,EXIT如果不等表示接收数据发生错误,放弃

MOV A,22H

MOV NO_OUT,A

LCALL EEPROM_C 清除以前的保存的码

LCALL DL4737

LCALL EEPROM_W 把码存在单片机内部的EEPROM里

LCALL DL4737

CLR P3.6蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功

LCALL DL4737

LCALL DL4737

LCALL DL4737

SETB P3.6蜂鸣器停止

lcall DL4737

EXIT: SETB EA 允许中断

POP PSW

POP ACC 将PSW和ACC推入堆栈保护

RETI 退出解码子程序

*******************<<LED数码管显示子程序>>**********************

DISPLAY:

MOV A,NO_OUT 将NO_OUT分成个位和16位

ANL A,#0FH 取低四位放在a_bit

MOV A_BIT,A 个位

MOV A,NO_OUT

RR A

RR A

RR A

RR A 四次移动,把高四位移到低四位

ANL A,#0FH取高四位放在B_bit

MOV B_BIT,A 个位在b

MOV DPTR,#NUMTAB 指定查表启始地址

MOV A,A_BIT 取个位数

MOVC A,@A+DPTR 查个位数的7段代码

MOV A_NO,A

MOV A,B_BIT 取十位数

MOVC A,@A+DPTR 查十位数的7段代码

MOV B_NO,A

DPLOP:MOV A,A_NO

MOV P0,A 送出个位的7段代码

SETB P2.1关闭十位显示,防止鬼影

CLR P2.0 开个位显示

LCALL DL40 显示4737微秒

SETB P2.0关闭个位显示,防止鬼影

MOV A,B_NO

MOV P0,A 送出十位的7段代码

CLR P2.1 开十位显示

LCALL DL40 显示4737微秒

SETB P2.1关闭十位显示,防止鬼影

RET

**********************<<延时程序>>******************************

DL865: MOV R4,#12 1.09*(2R5+4)*R4+2延时子程序1,精确延时865微秒

D1: MOV R5,#31

DJNZ R5,$

DJNZ R4,D1

RET

DL4737: MOV R4,#12 延时子程序2,精确延时4737微秒

D2: MOV R5,#179

DJNZ R5,$

DJNZ R4,D2

RET

DL1000: MOV R4,#17延时程序3,精确延时1000微秒

D3: MOV R5,#25

DJNZ R5,$

DJNZ R4,D3

RET

DL40: MOV R4,#1延时程序4,精确延时40/17微秒

D4: MOV R5,#1

DJNZ R5,$

DJNZ R4,D4

RET

****************************************************************

如果是共阳数码管的显示代码 1-F 16个代码

NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH STC新板的

END

红外遥控电子密码锁程序

ORG0000H ;主程序

CLR P1.7 清零

MOVRO, #OOH

CLR P1.3 关报警

CLR P1.7 P1.7清零

CLR P1.4关报警

MOV RO,#OOH 串行口初始化

MOV 52H, #02H 将立即数02H送52H

MOV TMOD , #20H 设置T1工作方式2

MOV TL1,#OF4H 定时初始值送TL1

MOV TH1,#OF4H 定时初始值送TH1

SETBTR1 启动定时器T1

MOV SCON,#ODOH定义串行行工作方式3

MOV PCON , #OOH

KEY: JNB P1.5 , KEP1 选择密码57618

LJMP KEP2

*******************************************************密码57618程序

KEP1: MOV P2 ,#0FFH 关显示

MOV A , P0 判断是否有键按磨乱春下

CPL A 对P0口的数据取反

ANL A , #OFFH立即数OFF 与PO的数据相与

JNZ JP有陪氏键按下转至JP

MOV A , P1 判断是否有键盘按下

CPL A 将P1口的数据取反

ANL A ,#O7H 累加器数据为零转遥控接收程序

JZWAIT

ACALL D10MS 调用10秒延时瞎耐

MOV A , P1

CPL A

ANL A ,#O7H

JZWAIT

PP1:CJNE A , #01H ,JP1

MOV P2 , #89H 显示字符”H”

LJMP K0P1

PP2:CJNE A , #02H ,JP2

MOV P2 , #89H 显示字符”H”

LJMP KOP1

JP2:CJNE A , #04H,KY

MOV P2 ,#89H 显示字符”H”

JP3:MOV A , #O7H

CJNEA , #07H ,JP3

LJMPLP1

KOP1:MOV A ,P1

ANL A, #07H

CJNE A , #07H ,KOP1

LJMP KEP1

JP: LCALL D10MS

MOV A , PO

CPLA,

ANL A,#OFFH

JZ C6

CJZE A ,#01H ,KEY02

MOV P2, #89H

LJMPKEY1

KEY02: CJNE A ,#02H ,KEY03

MOV P2,#89H

LJMP KJP1

KEYO3: CJNE A , #04H, KEY04

MOV P2 ,#89

LJMP KJP1

KEY04: CJZE A , #08H, KEY05

MOV P2 ,#89H

LJMP KJP1

KEY05: CJZE A , #10H, KEY06

MOV P2 ,#89H

LJMP KJP1

KEY06: CJZE A , #08H, KEY07

MOV P2 ,#89H

LJMP KJP1

KEY07 CJZE A , #10HKEY08

MOV P2 ,#89H

LJMP KJP1

KEY08 CJZE A , #10H, C6

MOV P2 ,#89H

LJMP KJP1

KJP1: MOV A, P0

CJNE A , #OFFH ,KJP1

C6: LJMP WAIT

********************************************************************

KEY1: LCALL MP

CJNE A , #02H , KEY03

MOVP2 , #89H

KEY2 LCALL MP

CJNE A , #04 , KEY02

MOVP2 , #89H

KEY3 LCALL MP

CJNE A , #08 , KEY02

MOVP2 , #89H

KEY4 LCALL MP

CJNE A , #10H, KEY02

MOVP2 , #89H

KEY5 MOV A ,P0

CJNE A , #0FFH, KEY5

MOVP2 , #OFFH

MOVR5 ,#30H

KEY6: MOV A , PO

CPL A

ANL A , #OFFH

JNZ BB2

MOV A ,P1

CPL A

ANL A , #O7H

JZ BB1

LCALL D10MS

MOV A, P1

CPL A

ANLA ,#07H

JZ

CJNE A ,#04H ,B1

MOVP2 , #89H

LJMP LP2

B1: CJNE A, #01H ,BL1

MOV P2 ,#89H

LJMP KOP1

BL1: CJNEA , #02H ,BB1

MOV P2, #89H

LJMP KOP1

BB2: LCALLD10MS

MOV A , P0

CPL A

ANL A , #OFFH

JZ BB1

LJMP KEY02

BB1: MOV R7,#OC8H

BB4: MOV R6 ,#OF9H

NOP

NOP

BB5: JNZR6 ,BB5

DJNZ R7, BB4

DJNZ R5 , KEY6

LJMP WAIT

************************************************************密码81675程序

KEP2: MOV P2 ,#OFFH 关显示

MOV A ,PO

]CPLA

ANL A , #OFFH

JNZ HP

MOVA ,P1

CPL A

ANLA , #07H

JZ C9

LCALL D1OMS

MOV A ,P1

CPLA

ANL A ,#07H

JZ C9

BB: CJNE A , #O1H ,HP1

MOVP2 ,#89H

LJMP K1P1

HP1: CJNE A ,#02H ,HP2

MOV P2 ,#89H

LJMP K1P1

HP2: CJNE A ,#04H ,C9

MOVP2, #89H

HP3: MOVA ,P1

ANLA,#07H

CJNEA ,#07H ,HP3

MOV P2 ,#OFFH

LJMP LP1

K1P1 : MOV A ,P1

ANL A ,#O7H

CJNEA ,#07H,K1P1

C9:LJMP WAIT

HP:LCALL D1OMS

MOV A , PO

CPLA

ANL A ,#OFFH

JZ C9

CJNE A , #1OH,K0Y02

MOV P2 ,#89H

LJMP K0Y1

K0Y02: CJNE A,#01H ,K0Y03

MOV P2 ,#89H

LJMP KUP1

K0Y03 CJNE A,#02H ,K0Y04

MOV P2 ,#89H

LJMP KUP1

K0Y04 CJNE A,#04H ,K0Y05

MOV P2 ,#89H

LJMP KUP1

K0Y05 CJNE A,#08H ,K0Y06

MOV P2 ,#89H

LJMP KUP1

K0Y06CJNE A,#20,K0Y07

MOV P2 ,#89H

LJMP KUP1

K0Y07 CJNE A,#40,K0Y08

MOV P2 ,#89H

LJMP KUP1

K0Y08 CJNE A,#80,U2

MOV P2 ,#89H

LJMP KUP1

KUP1: MOVA ,PO

CJNE A ,#OFFH ,KUP1

U2: LJMP WAIT

K0Y1: LCALL MP

CJNE A #08H ,K0Y02

MOV P2 ,#89H

K0Y2 LCALL MP

CJNE A #04 ,K0Y02

MOV P2 ,#89H

K0Y3 LCALL MP

CJNE A #02 ,K0Y02

MOV P2 ,#89H

K0Y4 LCALL MP

CJNE A #01H ,K0Y02

MOV P2 ,#89H

K0Y6: MOV A ,PO

CPL A

ANL A,#OFFH

JNZ PP2

MOVA , P1

CPLA

ANLA ,#07H

JZPPL

LCALL D10MS

MOV A , P1

CPLA

ANL A ,#07H

JZ PP1

CJNE A ,#04H ,Y1

MOV P2 , 389H

LJMP LP2

Y1:CJNE A ,#01H ,Y11

MOV P2 ,#89H

LJMP K1P1

Y11:CJNE A , #02H ,PP1

MOV P2 ,#89H

LJMP K1P1

PP2:LCALL D10MS

MOV A,PO

CPLA

ANL A ,#OFFH

JZ PP1

LJMP K0Y02

PP1:MOVR7,#OC8H

PP4:MOV R6 , #OF9H

NOP

NOP

PP5: DJNZ R6 ,PP5

DJNZR7 ,PP4

DJNZ R5 ,K0Y6

LJMP WAIT

*****************************************************报警程序

LP1: SETBP1.4

INC RO

P019: MOV R3 ,#05H

P020:MOV R7 ,#0A0H

P018: SETB P1.3

LCALLP01A

CLR P1.3

LCALL P01A

DJNZ R7,P018

DJNZR3,P020

CLR P1.3

CJNER0 , #03H ,P017

LJMP P019

P017: CLRP1.4

LJMPWAIT

****************************************************开锁程序

LP2:SETB P1.7

LCALLT5S

CLR P1.7

MOV R0,#00H

LJMP WAIT

******************************************************判断键是否释放

MP: MOVA ,PO

CJNE A ,#OFFH ,MP

MOV P2,#OFFH

PM: MOV R5 ,#30H

LCALL TP

RET

******************************************************判断是否有键按下

TP: MOVA ,PO

CPLA

ANL A , #OFFH

JNZ AP

MOVA ,P1

CPL A

ANL A, #O7H

JZ TP3

LCALL D10MS

MOV A , P1

CPL A

ANL A , #07H

JZTP3

LCALLD10MS

MOV A ,P1

CPL A

ANL A,#07H

JZTP3K

CJNEA,#04H ,C1

MOV P2,#89H

C3: MOV A P1

ANL A , #07H

CJNE A #07H,C3

MOV P2,#0FFH

LJMP LP1

C1: CJNE A ,#01H ,C2

MOV P2 ,#OCOH

LJMP KCP1

C2: CJNE A ,#02 ,U11

MOV P2 ,#90HP

LJMP KCP1

KCP1: MOV A, P1

ANLA ,#07H

CJNE A ,#07H ,KCP1

U11: LJMP WAIT

AP: LCALL D10MS

MOVA ,P0

CPL A

ANL A , #0FFH

JZ TP3

RET

************************************************************400M延时程序

TP3: MOV R7 ,#OC8H

TP1: MOV R6, #OF9H

NOP

NOP

TP2:DJNZ R6 , TP2

DJNZ R7 ,TP1

DJNZ R5,TP 10S

LJMPWAIT

*********************************************************10延时程序]

D10MS : MOV R7,#05H

LOOP1: MOV R6,#OF9H

NOP

NOP

LOOP2: DJNZ R6 , LOOP2

DJNZR7 ,LOOP1

RET

*****************************************************延时程序

P01A: MOVR2 ,#06H

LCALL DELY

RET

DELY: PUSH 02H

DEL2 : PUSH 02H

DEL3 : PUSH 02H

DEL4: DJNZ R2, ,DEL4

POP O2H

DJNZ R2 ,DEL3

POP O2H

DJNZ R2 ,DEL2

POP O2H

DJNZ R2 ,DELY

RET

******************************************************5S 延时程序

T5S:MOV R4 ,#15H

TS1:MOV R3 ,#64H

TS2:MOV R2 ,#05H

TS3:MOV R1 , #OF9H

NOP

NOP

T5S4 DJNZ R1 ,TS4

DJNZ R2,TS3

DJNZ R3,TS2

DJNZ R4,TS1

RET

3、遥控发送程序

ORG 0000H

LOOPO: MOV SCON ,#0C0H 设定串行口工作方式3

MOVTMOD , #20H T1工作方式2

MOV PCON , #00H 波特率设置

MOV TL1 , #OF4H 定时初始值F4送TL1

MOV TH1, #OF4H定时初始值F4送TH1

*******************************************************************

CP:JB P1.0 ,CPK 判断遥控按键P1.0是否按下

LCALL PP 调用延时

JBP1.0 , CP

STEB TR1启动定时器T1

MOV50H,#5FH将立即数5FH 送50H 存储单元

MOV RO,#50H 将立即数50H 送RO寄存器

MOVR1,#05H 将立即数05H送R1寄存器

IND: MOV A,@R0 将50H中的5F送累加器A

MOV C, P

MOV TB8,C

MOVSBUF,A 将要发送数据5F送串行数据缓冲器

AAA : JNB P1.1,ON1 P1.1是”0”电平时转至调制程序

BBB”JB P1.1,CCC P1.1是”1”电平等待

AMP AAA

CCC :JBC TI ,CP判断发送中断标志位]

SETB P1.2 P1.2置1

AJMP BBB

ON1:ACALL ON

AJMP AAA

PP: MOV R6, #05H 延时子程序

100P3:MOV R5, #OF9H

NOP

NOP

100P4: DJNZ R5,100P4

DJNZ R6 ,100P3

RET

ON: CP1 P1.2 0电平调制程序

。。。。。。。。。。。。。。(共有82个CP1 P1.2)

RET

********************************************************************

4、遥控接收程序

WAIT: JBC R1 ,LOOP5 遥控接收程序

LJMP KEY

LOOP5: MOV R0 ,#51H 将立即数51H送R0

MOV R7 ,#03H 将立即数03H送R7

LOOP6: MOV A,SBUF 将串行缓冲器接收到的数据累加器A

JNBPSW.0 LOOP7标志位F0清零了吗?

JNBRB8 ,LOOP8 数据接收完了吗?

LOOP9 MOV@RO ,A 开锁处理程序

MOV R1 , 51H

CJNE R1 ,#1EH ,LP

DJNZ 52H , KP

CLR P1.7

MOV 52H ,# 02H

MOV R0 ,#OOH

LJMP WAIT

KP: SETB P1.7

MOVR0,#00H

LJMP WAIT

LP: DJNZ R7 ,WAIT

CLRPSW.5

LJMPWAIT

LOOP7: JB RB8 , LOOP8

LJMP LOOP9

LOOP8:SETB PSW.5 给标志位F0置1

LJMP WAIT ;继续接收数据

参考下!

方案一:采用频分橡物制多通道红外遥控发射和接收系统。频分制的频率编码一般采用频道编码开关,通过改变振荡电路的参数来改变振荡电路的振荡参数和频率。当按下不同的编码键时,振荡器就会输出不同频率的指令信号。这些指令信号经驱动级放大后对高频载波进行调制,并驱动红外发光管发出红外光脉冲信号。

红外接收控制电路的组成框图包括红外接收光电转换器、前置放大器、频率译码电路、驱动级和执行机件等。当红外光电检测器接收到发射器发来的红外编码指令后,光电检测管随即将其转换成相应的电信号,再经过前置电压放大器放大后,加至频率译码电路和选频电路,选出不同指令的频率信号,并加至相应的驱动级及执行机件。对应每一频率的指令信号,应有一个相应的选频电路。

在频分制红外遥控电路中,代表控制指令信号的频率一般为几百赫兹至几十千赫兹。发射电路中的频率编码开关的位号应与接收电路中的选频电路的位号相对应,以选出不同频率的指令信号。

红外接收、译码电路由族旁红外接收器、前置放大器、解调器、指令译码器、记忆和驱动级组成。红外光电二极管将接收到的红外光信号转变成相应的电脉冲信号,再经高倍数电压放大后加至解调器进行解调,然后由指令译码器解码出指令信号。指令译码器是与指令编码器相对应的译码器,用于脉冲指令信号译出。译出的指令信号加至相应的记忆和驱动级,驱动执行机件动作,实现红外光遥控。

方案二:采用码分制多通道红外遥控发射和接收系统。码分制的遥控指令信号是由编码脉冲发生器(一般由数字集成电路和少量外围元件组成)产生的。码分指令是用不同的脉冲数目或不同宽度的脉冲组合而成的。

指令编码器由基本脉冲发生电路和指令编码开关组成。当按下S1—Sn中的某个指令键时,指令编码器将产生不同编码的指令信号。该编码信号经调制器调制后变为编码脉冲调制信号,再经驱动电路功率放大后加至红外发射级,驱动红外发射管发出红外编码脉冲光信号。

方案一:采用频分制多通道红外遥控系统。主要用在单通道或者几通道的红外遥控系统中。能够形成一个无线的短距离的遥控系统。主要由发射和接收并执行两部分组成。先是发射部分,用户根据需要按下功能键,在经过编码后通过红外发光二极管发射出信号。经过无线传输后,接收部分接收到发射信号,然后经过芯片内部译码并执行对应遥控路上的发光二极管发光

方案二:采用码分制多通道红外遥控系统。主要用在多通道的红外遥控系统中,遥控系统抗干扰强。能够形成一个无线的中距离的遥控系统。主要由发射和接收并执行两部分组成。用户根据需要按下功能键,先是指令编码器进行编码,在进行信号调制,在由红外发光二极管发射出信号,经过无线传输后,接收部分梁穗液接收到发射信号,先经过信号处理,在通过单片机软件译码,查表控制对应遥控路上的发光二极管发光


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12359109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存