大学毕业设计---基于51单片机智能红外遥控器的 联系客服

发布时间 : 星期三 文章大学毕业设计---基于51单片机智能红外遥控器的更新完毕开始阅读54fb5b3530b765ce0508763231126edb6e1a7667

青岛农业大学机电工程学院本科毕业设计(论文)

ANL A,#0FH

CJNE A,#0FH,KEYH1;按键在第1行 SETB P3.5 CLR P3.6 MOV A,P3 ANL A,#0FH

CJNE A,#0FH,KEYH2;按键在第2行 SETB P3.6 CLR P3.7 MOV A,P3 ANL A,#0FH

CJNE A,#0FH,KEYH3;按键在第3行 ;LJMP Q1 LJMP KEYWORK

MOV R2,#00H;第0行行号初值为0

KEYH0:

LJMP KEYL;查列线值

MOV R2,#04H;第1行行号初值为4

KEYH1:

LJMP KEYL;查列线值

MOV R2,#08H;第2行行号初值为8

KEYH2:

LJMP KEYL;查列线值

MOV R2,#0CH;第3行行号初值为12

KEYH3:

LJMP KEYL;查列线值

KEYL: MOV DPTR,#TABL

MOV B,A CLR A MOV R0,A

MOV A,R0;查列号开始

KEYLL:

SUBB A,#04H;判断是不是4列检查完了 ;JNC Q1 JNC KEYWORK MOV A,R0

MOVC A,@A+DPTR

26

青岛农业大学机电工程学院本科毕业设计(论文)

INC R0 ;R0存列值

CJNE A,B,KEYLL ;实际列值B与假设在那一列的值不等,则不再那一列,去

查下一列

DEC R0

MOV A,R0;列值放入A ADD A,R2;求出键值 MOV B,A MOV P2,#00H

MOV DPTR,#TABDISP;用数码管显示 MOVC A,@A+DPTR MOV P0,A CLR C RET

TABL:DB 0EH,0DH,0BH,07H 2、发送子程序

‘1’用10 个t的低电平和10 个t 的脉冲表示,‘0’用20 个t 的低

电平和10 个t 的脉冲表示,占空比分别为1 :2 和1 :3 ,符合NEC 通用编码(NEC编码的一帧,通常按一下遥控器按钮所发送的数据,由引导码、地址码及数据码组成)带同步帧(20个脉冲的低电平,输开始) 和结束帧(传输结束10个脉冲的低电平)。下面是选择键‘E’对应的子程序。

FASE:

MOV A,B ORL A,#0E0H

MOV R4 ,#8 ;1us发送8 位

MOV R5 ,# 20 ;1us 传输开始(同步帧) ,发送20个脉冲 LCALL H;2us调用一次子程序L20,产生20个脉冲的电平

GO: RLC A ;1us

JC S1 ;2us判断是发送'0'还是'1'是\转到s1\LCALL FAS0;2us LJMP NEXT;2us

DJNZ R4 ,GO ;2us发送8 位未完,继续

27

S1 : LCALL FAS1;2us NEXT:

青岛农业大学机电工程学院本科毕业设计(论文)

LCALL L10 ;2us 发送完,发送10个脉冲的低电平,结束 ;MOV P2,#00H RET

;2us

;发送“1”的子程序 FAS1: l1:

CLR P3.3 ;1μs ; ************* MOV R6 , #124;1μs

10个脉冲的低电平

DJNZ R6 , $;248μs ; *************

MOV R5,#10;2us SETB P3.3 ;1μs MOV R6 , #5 ;1μs

DJNZ R6 , $ ;执行5 次×2μsP次= 10μs NOP ;1us CLR P3.3 ;1μs MOV R6 , # 4 ;1μs DJNZ R6 , $ ;8μs NOP ;1us DJNZ R5 ,FS1;2μs RET ;2us

FS1:

;发送“0”的子程序 FAS0: l0:

CLR P3.3;1us MOV R5,#30

;**************

;1us 20个脉冲宽度的低电平

MOV R6,#225;1us DJNZ R6,$;450

DJNZ R5,$;60us ;*****************

MOV R5,#10;1us SETB P3.3 ;1μs MOV R6 , #5 ;1μs

DJNZ R6 , $ ;执行5 次×2μsP次= 10μs

28

FS0:

青岛农业大学机电工程学院本科毕业设计(论文)

NOP ;1us CLR P3.3 ;1μs MOV R6 , #4 ;1μs DJNZ R6 , $ ;8μs NOP ;1us DJNZ R5 ,FS0;2μs RET ;2us

4.2.2 接收子程序

接收程序中要解决的问题是如何正确的解出码值,这是接收程序的主要任务。另外需要注意的是红外一体化接收头HS0038输出的时序与输入是相反的,理解好这一点,是设计好解码程序的关键。

1、解码子程序 EEX0: CLR EA

CLR EX0

MOV R5,#8 ;接收8 位 ;MOV P2,#02H

;JB P3.2 ,$ ;等待同步帧,同步帧为低电平

MOV R7,#15 ; 同步帧(低电平) 到来后,延时等待15 个脉冲的时间 LCALL DELAY1 ; 调用子程序DELAY1,产生26μs 的延时 JB P3.2,Z1;延时15 个脉冲后,若P1. 0= 1 ,转JIES 重新检测

JNB P3.2 ,$ ;延时15 个脉冲后,若P1. 0 还是0 ,传输开始,再等编码中的高电

J1: 平

GO:

MOV R7 , #15 ; 编码中的高电平到来后,延时15 个脉冲的时间 LCALL DELAY1

JNB P3.2, RE1 ;延时15个脉冲后,P1. 0 = 0转RE1 ,P1. 0 = 1 顺执行 CLR C ; P1. 0 = 1 时应解码为0 ,使标志C 清0 RLC A ;把标志C = 0 移入寄存器A中,经8 次移位到A 的高位 JB P3.2 , $ ;跳过后续高电平 JNB P3.2 , $ ;再跳过后续低电平 LJMP NEXT ;转接收下一位

29

RE1 : SETB C ;P1. 0 = 0 时应解码为1 ,使标志C 置1