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