水泵定時(shí)控制實(shí)驗(yàn)
現(xiàn)代自動(dòng)控制設(shè)備中,都存在一個(gè)電子電路與電氣電路的互相連接問(wèn)題,一方面要使電子電路的控制信號(hào)能夠控制電氣電路的執(zhí)行元件(電動(dòng)機(jī),電磁鐵,電燈等),另一方面又要為電子線路的電氣電路提供良好的電隔離,以保護(hù)電子電路和人身的安全。電子繼電器便能完成這一橋梁作用。
特別提醒:
實(shí)驗(yàn)時(shí)請(qǐng)盡量不要去控制220V及以上電壓級(jí)別的設(shè)備,因這個(gè)學(xué)習(xí)套件是面向?qū)W習(xí),而不是面向工業(yè)控制的.如果您一定要接220V及以上電壓的設(shè)備請(qǐng)?jiān)趯?shí)驗(yàn)過(guò)程中注意安全,繼電輸出部份采用了光電隔離,如果正確接線,不會(huì)損壞套件的主板。
程序功能:
運(yùn)行時(shí),繼電器閉合十秒,斷開(kāi)十秒,間斷的運(yùn)行.數(shù)碼管顯示倒計(jì)時(shí)的時(shí)間.計(jì)時(shí)時(shí)間可通過(guò)按鍵設(shè)定.
引腳說(shuō)明:
p3.5啟動(dòng),p3.4加一,p3.3退出設(shè)置,p3.2設(shè)置
p1.0為電源指示燈
p1.1,jk1指示燈,p1.2,jk2指示燈
p1.4,調(diào)整記數(shù)指示燈,p1.5,延時(shí)調(diào)整指示燈
p2.7輸出控制水泵電機(jī)
水泵定時(shí)控制實(shí)驗(yàn)程序如下:
org 00h
ljmp main ;主程序入口
org 03h
ljmp int00 ;中斷0入口
org 0bh
ljmp disp ;定時(shí)中斷0入口
org 13h
reti
org 1bh
org 23h
reti
org 30h
main: mov 30h,#10h ; 顯示緩沖區(qū)
mov 31h,#10h ;(buf)
mov 32h,#10h ; 備份
mov 34h,#50 ; 記時(shí)
mov p2,#0ffh
mov p3,#0ffh
mov p1,#0feh ; 指示燈亮
mov sp,#68h
mov tmod,#01h ;定時(shí)器0,方式1
setb it0 ;下降沿有效
mov ie,#83h ;允許定時(shí)器0,中斷0
mov th0,#0f8h
mov tl0,#0d0h
setb tr0
jb p3.5,$ ;未按下,則等待
jnb p3.5,$ ;未松開(kāi),則等待
mov p1,#0fch ;jk1指示燈亮
clr p2.6 ;p2.6啟動(dòng)
setb p2.7 ;p2.7斷開(kāi)
loop: nop
lcall sub ;減一操作
cjne r2,#00h,loop1
cpl p1.1
cpl p1.2 ;指示燈取反
cpl p2.6 ;繼電器取反操作
cpl p2.7
mov 31h,32h ;從32h中讀初值
loop1:mov r3,34h ;從34h中讀入延時(shí)初值
lcall delay ;調(diào)延時(shí)子程序
ljmp loop
; 減一子程序
sub: clr c
mov a,#9ah
subb a,#1
add a,31h
da a
mov 31h,a
mov 30h,a ;放顯示緩沖區(qū)
mov r2,31h
ret
; 延時(shí)10ms子程序
delay:mov r4,#20
del_a:mov r5,#248
djnz r5,$
djnz r4,del_a
djnz r3,delay
ret
;==========================
; 中斷0服務(wù)
int00: clr ex0 ;關(guān)外中斷
clr tr0
push aCC
push psw
jnb p3.3,$ ;未松開(kāi),等待
lcall int_lay
int00_loop:
jnb p3.3,int_dect ;p3.1按下,則到延時(shí)處理
clr p1.4 ;p3.1未按下,記數(shù)指示燈亮
setb p1.5 ;關(guān)延時(shí)初值指示燈
mov 30h,32h ;備份值放顯示緩沖區(qū)
lcall int00_dis
int00_datadd:
jb p3.4,int00_dp ;p3.4未按下,跳顯示處理
lcall int_lay
jnb p3.4,$ ;未松開(kāi),等待
mov a,32h
add a,#1
da a
mov 32h,a
mov 30h,a
lcall int00_dis
ljmp int00_loop
int00_dp:
mov 30h,32h
lcall int00_dis
ljmp int00_loop
int_dect:
lcall int_lay
jnb p3.3,$
int_del:setb p1.4 ;關(guān)記數(shù)指示燈
clr p1.5 ;開(kāi)延時(shí)指示燈
mov 30h,34h
lcall int00_dis
jb p3.4,int_out
lcall int_lay
jnb p3.4,$
mov a,34h
add a,#05h
da a
mov 34h,a
mov 30h,a
lcall int00_dis
ljmp int_del
int_out:
jb p3.3,int_del
lcall int_lay
jnb p3.3,$
pop psw
pop acc
setb ex0
setb tr0
setb p1.4
setb p1.5
reti
;========================
; 中斷顯示,顯示緩沖區(qū)30h
int00_dis:
setb p2.0 ;關(guān)顯示,
setb p2.1
mov a,30h
anl a,#0fh
mov 28h,a
mov a,30h
swap a
anl a,#0fh
mov 29h,a
mov dptr,#tab
mov a,28h
movc a,@a+dptr
mov p0,a
clr p2.0
call delay_1ms
setb p2.0
setb p2.1 ;關(guān)顯示
mov a,29h
movc a,@a+dptr
mov p0,a
clr p2.1
call delay_1ms
setb p2.0
setb p2.1 ;關(guān)顯示
ret
;=====================
; 定時(shí)中斷子程序
disp:push acc
push psw
mov th0,#0f8h
mov tl0,#0d0h
setb p2.0 ;關(guān)顯示,
setb p2.1
mov a,30h
anl a,#0fh
mov 28h,a
mov a,30h
swap a
anl a,#0fh
mov 29h,a
mov dptr,#tab
mov a,28h
movc a,@a+dptr
mov p0,a
clr p2.0
call delay_1ms
setb p2.0
setb p2.1 ;關(guān)顯示
mov a,29h
movc a,@a+dptr
mov p0,a
clr p2.1
call delay_1ms
setb p2.0
setb p2.1 ;關(guān)顯示
pop psw
pop acc
reti
tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h
db 00h
;************************
; 顯示延時(shí)子程序
;************************
delay_1ms:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
ret
int_lay:
mov r7,#60 ;消除抖動(dòng) 30m秒
int_e1:
mov r6,#248
djnz r6,$
djnz r7,int_e1
ret
end