毕业论文-基于单片机的电器遥控器设计 下载本文

皖西学院2014届本科毕业设计(论文)

SHI EQU 42H GEE EQU 43H

ORG 0000H LJMP MAIN ORG 0003H LJMP IR ORG 0030H MAIN:SETB EA SETB EX0 SETB IT0 SJMP RUNDS1302 runds1302: MOV SP,#0dfH mov a,#00h mov r1,#0FFh mov r0,#0FDh LOOP1302: mov @r1,a DEC r1

djnz r0,loop1302 mov KEY_CNT,#80h mov p0,#0ffh

LCALL INITIAL;液晶初始化子程序 ;CLR KEY_BUSY ;开关忙标志清零 LOOP0: SETB ALARM

LCALL RUN1 ;显示第一屏 ,字符 MOV COM,#01H

LCALL LCD_W_CMD ;清屏 LCALL SET1302 LCALL RUN2 ;显示第二屏 ,时间 RUN2:LCALL GET1302

LCALL DISPLAY2 ;第二屏初显示 LCALL DELAY /* M02:LCALL CHK_KEY JB KEY_BUSY,M02 ;开关标志忙么?如忙 忙则显示时间 */

MD1: JNB HWX_FLG, MD0 SETB ALARM CLR HWX_FLG

23

则一直检测开关状态,不

基于单片机的电器遥控器设计

LCALL HWX_SCAN MD0:JB HWX_BUSY, MD1 SJMP run2 RET

RUN18B20: MOV SP,#0DFH

MOV DPTR,#TAB1820

MOV A,#00H MOV R1,#0FFH MOV R0,#0FDH LOOP1820: MOV @R1,A DEC R1

DJNZ R0,LOOP1820;内寄存器清零 MOV P0,#0FFH LCALL INITIAL

LOOP1: LCALL GET_TEM LCALL TEM_COV LCALL DISPLAY1820

MT1: LCALL HWX_SCAN SETB ALARM SJMP LOOP1

run1:lcall display1 ;字符显示 ret

SCAN_KEY: SETB P3.4 SETB P3.5 SETB P3.6 SETB P3.7

MOV A, KEY_PORT CPL A

ANL A, #0F0H RET ;读取开关值

CHK_KEY: LCALL SCAN_KEY JZ NO_KEY1

LCALL DELAY100US LCALL SCAN_KEY

皖西学院2014届本科毕业设计(论文)

JZ NO_KEY1

MOV R2, A;保护键值 WAIT1: LCALL SCAN_KEY LCALL DELAY100US

JNZ WAIT1;等待释放 MOV A, R2 KEYACC: NOP

LX: JB ACC.4, SHIFT ;P3.4控制转移 JB ACC.5, ADD_ONE ;p3.5控制加1 JNB ACC.6, LX1 ;p3.6控制减1 LJMP SUB_ONE

LX1: JNB ACC.7,NO_KEY1

LJMP SETUP ; 距离太长,跳转不到 p3.7控制确定按键 NO_KEY1: RET

SHIFT: NOP

SETB KEY_BUSY SFT1: MOV A, KEY_CNT ; 开关状态,根据此状态,确定修改相应值 RL A MOV KEY_CNT,A MOV A, KEY_CNT JB ACC.0, TO_YX1 JB ACC.1, TO_MX1 JB ACC.2, TO_DX1 JB ACC.3, TO_WX1 JB ACC.4, TO_HX1 JB ACC.5, TO_MNX1 JB ACC.6, TO_SX1 JB ACC.7, X0 X0: mov key_cnt, #80h RET

TO_YX1:MOV COM,#83H

LCALL LCD_W_CMD;光标根据开关状态跟踪地址 RET

TO_MX1:MOV COM,#86H

LCALL LCD_W_CMD RET

TO_DX1:MOV COM,#89H

LCALL LCD_W_CMD

25

基于单片机的电器遥控器设计

RET

TO_WX1:MOV COM,#0CFH LCALL LCD_W_CMD RET

TO_HX1:MOV COM,#0C3H

LCALL LCD_W_CMD RET

TO_MNX1:MOV COM,#0C6H LCALL LCD_W_CMD RET

TO_SX1:MOV COM,#0C9H

LCALL LCD_W_CMD RET

ADD_ONE:MOV A, KEY_CNT

JB ACC.0, TO_YR1 JB ACC.1, TO_MO1 JB ACC.2, TO_DA1 JB ACC.3, TO_WK1 JB ACC.4, TO_H1 JB ACC.5, TO_M1 JB ACC.6, TO_S1 JB ACC.7, X1 X1: mov key_cnt, #80h RET

TO_YR1: MOV A, YEAR ADD A, #01H DA A

MOV YEAR, A LCALL DISPLAY2 RET

TO_MO1: MOV A, MONTH ADD A, #01H DA A

MOV MONTH, A

CJNE A, #13H, TO_MO11

;根据开关状态去去对应操作