新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于51單片機設計的電話遙控器

基于51單片機設計的電話遙控器

作者: 時間:2013-02-21 來源:網絡 收藏

提示音發(fā)生是使用有限循環(huán),反復使單片機的RXD口的電平反轉,從而形成方波信號。 子程序代碼:

ORG 1100H
RING10:MOV R6,#20 ;input password
RING11:MOV R7,#20 ;800Hz
RING12:LCALL DL10 ;sound=1
CPL P3.0 ;delay=0.5s
DJNZ R7,RING12
DJNZ R6,RING11
CLR P3.0
RET

ORG 1150H
RING20:MOV R3,#03
RING21:MOV R6,#20 ;password wrong
RING22:MOV R7,#20 ;1600Hz
RING23:LCALL DL20 ;sound=3
CPL P3.0 ;delay=0.25s
DJNZ R7,RING23
DJNZ R6,RING22
CLR P3.0
MOV R7,#200
RING24:LCALL DL10
DJNZ R7,RING24
DJNZ R3,RING21
CLR P3.0
RET

ORG 1200H
RING30:MOV R3,#02
RING31:MOV R6,#20 ;select
RING32:MOV R7,#20 ;800Hz
RING33:LCALL DL10 ;sound=2
CPL P3.0 ;delay=0.5s
DJNZ R7,RING33
DJNZ R6,RING32
CLR P3.0
MOV R7,#200
RING34:LCALL DL10
DJNZ R7,RING34
DJNZ R3,RING31
CLR P3.0
RET

ORG 1250H
RING40:MOV R3,#03
RING41:MOV R6,#20 ;control
RING42:MOV R7,#20 ;800Hz
RING43:LCALL DL10 ;sound=3
CPL P3.0 ;delay=0.5s
DJNZ R7,RING43
DJNZ R6,RING42
CLR P3.0
MOV R7,#100
RING44:LCALL DL10
DJNZ R7,RING44
DJNZ R3,RING41
CLR P3.0
RET

ORG 1300H
RING50:MOV R6,#40 ;finish
RING51:MOV R7,#20 ;1600Hz
RING52:LCALL DL20 ;sound=1
CPL P3.0 ;delay=0.15s
DJNZ R7,RING52
DJNZ R6,RING51
CLR P3.0
RET

ORG 1500H
DL10:MOV R5,#25 ;delay1.25ms,f=800HZ,fosc=12MHz,
DL12:MOV R4,#25
DL11:DJNZ R4,DL11
DJNZ R5,DL12
RET

ORG 1600H
DL20:MOV R5,#12 ;delay0.625ms,f=1600HZ,fosc=12MHz,
DL22:MOV R4,#25
DL21:DJNZ R4,DL21
DJNZ R5,DL22
RET

ORG 1650H
DL30:MOV R5,#50 ;delay20ms
DL32:MOV R4,#200
DL31:DJNZ R4,DL31
DJNZ R5,DL32
RET

4.2 密碼檢測部分

本系統(tǒng)密碼校驗的基本原理是:在系統(tǒng)初始化的時候把原始密碼寫入地址為30H開始的存儲空間內,密碼的位數“5”賦給R7。當系統(tǒng)摘機時,要求輸入密碼,單片機把解碼后的數據(使用者輸入的密碼)存儲在38H開始的存儲空間內。然后單片機對進行兩個存儲地址的內容逐位進行比較,直到完全相等才能轉到下一進程,有一位不同,程序就轉到出錯程序。

子程序代碼:
ORG 0150H
HOKE: CLR 7DH
SETB P3.1 ;open telephone
CLR TR0 ;close T0
MOV R2,#03H ;password wrong 3
LCALL RING10 ;input password
IN: CLR 7EH ;7EH=0
DTMF: MOV R7,#5H ;PASSWORD:5 R7
MOV R1,#38H ;sign
SETB P1.4
SETB P1.5
SETB P1.6
SETB P1.7
WAIT: JBC 7EH,CC ;wait INT0
LJMP WAIT
CC: MOV R7,#5H ;password 5***
MOV R0,#30H ;password top
MOV R1,#38H ;sign
CMP: MOV A,@R1
MOV R4,A
CLR C
MOV A,@R1
SUBB A,@R0 ;test
INC R0
INC R1
JZ AAA ;OK,pass one
LJMP QQ
AAA: DJNZ R7,CMP ;R7-1!=0
LJMP LL ;pass
QQ: DJNZ R2,IN1 ;password wrongR2!=0
LCALL RING20
LJMP STOP
IN1:LCALL RING20 ;password wrong,try!
LJMP IN

4.3 密碼修改部分

本系統(tǒng)是通過在線輸入密碼而改變特定存儲器中的密碼值的。
程序代碼:
ORG 1700H
KEYIN: SETB RS1 ;當前工作寄存器第二工作區(qū)
CLR RS0
ANL A,#00H ;清零A寄存器
MOV B,#05H
LCALL RING10 ;發(fā)提示音:輸入密碼***
MOV R7,#5H
MOV R1,#38H
WPIN: JBC 7EH,READ ;等待INT0中斷
LJMP WPIN
READ: MOV R1,#38H
MOV R0,#40H
MOV R7,#05H
READ1: MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,READ1 ;判斷輸入密碼是否為5位,否跳轉READ1
LCALL RING10 ;滿5位,發(fā)提示音:再輸入新密碼
MOV R7,#5H
MOV R1,#38H
WRE: JBC 7EH,KEYCMP ;等待中斷INT1
LJMP WRE
KEYCMP:MOV R6,#05H
MOV R0,#40H
MOV R1,#38H
KEYCP:MOV A,@R0
CLR C
SUBB A,@R1 ;A減((R1))
INC R1
INC R0
JZ BBB ;A的內容如果為0,則跳轉BBB
LJMP LL
BBB: DJNZ R6,KEYCP ;R6減1不為0,則跳轉KEYCP,即循環(huán)比較密碼的五位
MOV R1,#38H
MOV R0,#30H
MOV R6,#5H
KEYREIN:MOV A,@R1
MOV @R0,A
INC R1
INC R0
DJNZ R6,KEYREIN ;R6減1不為0,則跳轉,即循環(huán)比較密碼的五位
LCALL RING50 ;發(fā)提示音:新密碼已經設置
LJMP STOP
RET

4.4 控制電器部分

本系統(tǒng)首先通過外圍雙音頻解碼電路解碼的信息(選擇電器)判斷所選擇的電器,然后跳轉到每一個子程序,通過單片機向P1口的低四位發(fā)送數據,這些控制信息表示對不同的電器進行控制的控制字。為了簡單表示,在這里只寫出了電器“一”的控制子程序,其它子程序很相似,詳見附錄。

程序代碼:
LL: LCALL RING30 ;sound:input control
MOV R7,#1H ;***
MOV R1,#38H
CLR 7EH
WAIT0: JBC 7EH,DD ;wait INT0
LJMP WAIT0
DD: MOV R1,#38H
MOV A,@R1
RR A
RR A
RR A
RR A
MOV R4,A
RL A
ADD A,R4
MOV DPTR,#TAB
JMP @A+DPTR
TAB: LJMP ZERO
LJMP EIGHT;8
LJMP FOUR ;4
LJMP STOP ;#
LJMP TWO ;2
LJMP ZERO ;0
LJMP SIX ;6
LJMP LL ;**
LJMP ONE ;1
LJMP LL ;9,**
LJMP FIVE ;5
LJMP LL ;A,**
LJMP THREE;3
LJMP LL ;*,**
LJMP SEVEN;7
LJMP LL ;C,**

ORG 0250H
ZERO: LJMP LL

ONE: LCALL RING40 ;發(fā)提示音:請操作電器
OO1: MOV R7,#01H
CLR 7EH
WAIT1: JBC 7EH,WW1 ;wait INT0
LJMP WAIT1
WW1:MOV R1,#38H ;檢查信號首位
MOV A,@R1
CJNE A,#50H,BB1 ;(38)不等于0AH(0),則跳轉BB1
LJMP ZZ1 ;(38)等于0AH(0),則跳轉ZZ1
BB1: CJNE A,#80H,QUIT1 ;(38)不等于01H(1),則跳轉QUIT1
SETB P1.3 ;open 1
CLR P1.2
CLR P1.1
CLR P1.0
LJMP QUIT1
ZZ1: CLR P1.3 ;close all
CLR P1.2
CLR P1.1
CLR P1.0
LCALL RING50 ;finsh
QUIT1: LJMP LL

4.5 振鈴計數部分

本單元是通過計數器T0的外部中斷方式來計數的,程序代碼:

ORG 0090H
TT0: SETB 7DH
RETI


第五章 系統(tǒng)調試

5.1 整體調試

整體調試所使用的測試儀器儀表和工具:

1、IBM-PC/XT兼容機一臺,主頻:50Hz,有軟驅和25針串行接口;
2、ME-5103單片機仿真機一個;
3、MF116萬用表一個;
4、計算機5V穩(wěn)壓電源一個;
5、SR8雙蹤示波器;
6、Manley In-Circuit Emulator Debugger(MBUG)開發(fā)軟件;

本裝置的調試主要分為硬件調試、軟件調試和聯(lián)機調試等三大部分。
經過初步的分析設計后,在制作硬件電路的同時,調試也在穿插進行。這樣有利于問題的分析和解決,不會造成問題的積累,而且不會因為一個小問題而進行整體電路的檢查,從而可以節(jié)約大量的調試時間。軟件編程中,我是首先完成單元功能模塊的調試,然后進行系統(tǒng)調試,整體上與硬件調試的方法差不多。聯(lián)機調試是最重要的一部分,同時也是本裝置成功的關鍵。有許多新問題都不是很容易解決的。

調試的步驟

5.2 硬件單元電路 5.2.1 5V穩(wěn)壓電源

本裝置使用單5V穩(wěn)壓電源供電,要求交流成分小。經過示波器測量5V穩(wěn)壓電源輸出端,其交流部分電壓的峰-峰值為6mV,符合本裝置的電源要求,穩(wěn)壓電源調試完畢。

紅外遙控器相關文章:紅外遙控器原理


評論


相關推薦

技術專區(qū)

關閉