家用電器定時(shí)控制器設(shè)計(jì).docx
《家用電器定時(shí)控制器設(shè)計(jì).docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《家用電器定時(shí)控制器設(shè)計(jì).docx(22頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
家用電器定時(shí)控制器設(shè)計(jì) 目 錄 摘 要 2 1 引 言 2 1.1 設(shè)計(jì)要求 2 1.2 設(shè)計(jì)思路 2 1.3 硬件電路設(shè)計(jì)框圖 3 2 定時(shí)器的硬件設(shè)計(jì) 4 2.1 LED顯示電路的設(shè)計(jì) 4 2.2 發(fā)光二極管電路的設(shè)計(jì) 6 2.2 鍵盤電路的設(shè)計(jì) 6 3 定時(shí)器的軟件設(shè)計(jì) 7 3.1 初始化程序 7 3.2 全局使能程序 7 3.3 開機(jī)顯示“HELLO”并亮燈程序 7 3.4 清零程序 8 3.5 查詢式鍵盤程序 8 3.6 定時(shí)時(shí)間設(shè)置程序 9 3.7 定時(shí)中斷程序 10 3.8結(jié)束顯示“HELP”并亮燈程序 12 實(shí)習(xí)心得 13 參考文獻(xiàn) 13 附 錄 14 摘 要 本文詳細(xì)介紹了基于AT89C51單片機(jī)的家用定時(shí)器的設(shè)計(jì)。本文設(shè)計(jì)的定時(shí)器實(shí)現(xiàn)了通過撥動(dòng)開關(guān)開始和暫停定時(shí),通過查詢式鍵盤清零、設(shè)置定時(shí)時(shí)間和調(diào)整當(dāng)前時(shí)間,通過8位共陰極LED數(shù)碼管顯示當(dāng)前時(shí)間。開機(jī)時(shí)LED數(shù)碼管顯示“HELLO”,并使某只發(fā)光二極管閃亮。開始定時(shí)后,LED數(shù)碼管顯示倒計(jì)時(shí)。當(dāng)定時(shí)時(shí)間到時(shí),八只發(fā)光二極管間隔閃亮,LED數(shù)碼管顯示“HELP”。 關(guān)鍵字:AT89C51,定時(shí)器,鍵盤設(shè)置,LED數(shù)碼管顯示 1 引 言 日常生活中,經(jīng)常碰到一些需要定時(shí)的事情,例如,空調(diào)可以定時(shí)開啟與關(guān)閉,洗衣機(jī)洗滌衣物需要定時(shí)在幾分鐘到幾十分鐘的時(shí)間。完成定時(shí)的定時(shí)器多種多樣,以往在家用電器中采用的機(jī)械定時(shí)器就是根據(jù)一般上弦鐘表原理設(shè)計(jì)的,這種定時(shí)器雖然結(jié)構(gòu)簡單,成本低,維修也比較方便,但是它的觸頭頻繁接觸和斷開,大大縮減了使用壽命,也不利于進(jìn)一步全自動(dòng)化。在電子技術(shù)突飛猛進(jìn)的今天,電子定時(shí)器逐步取而代之。 在生活和生產(chǎn)的各個(gè)領(lǐng)域中,凡是有自動(dòng)控制要求的地方都會(huì)有單片機(jī)的身影出現(xiàn)。從簡單到復(fù)雜,從空中、地面到地下,凡是能想像到的地方幾乎都有使用單片的需求。單片機(jī)的應(yīng)用有利于產(chǎn)品的小型化、多功能化和智能化,有助于提高勞動(dòng)效率,減輕勞動(dòng)強(qiáng)度,提高產(chǎn)品質(zhì)量,改善勞動(dòng)環(huán)境,減少能源和材料消耗,保證安全等。 鑒此,本文設(shè)計(jì)了一款基于AT89C51單片機(jī)的家用定時(shí)器。 1.1 設(shè)計(jì)要求 設(shè)計(jì)一個(gè)家用電器的定時(shí)控制程序,要求顯示定時(shí)時(shí)間,并可用鍵盤對(duì)定時(shí)時(shí)間進(jìn)行設(shè)定。 程序功能: (1)開機(jī)時(shí)數(shù)碼管顯示“HELLO”,使某只發(fā)光二極管亮; (2)用鍵可使定時(shí)控制器清零,允許對(duì)定時(shí)時(shí)間設(shè)定; (3)用鍵可對(duì)分設(shè)定,用鍵可對(duì)秒設(shè)定; (4)按“運(yùn)行鍵”開始定時(shí),并且運(yùn)行過程中動(dòng)態(tài)顯示時(shí)間狀態(tài),時(shí)間到時(shí)八只發(fā)光二極管間隔亮。 附加程序功能: (1)在按“設(shè)定”鍵之前按任何鍵都無效; (2)在進(jìn)入倒計(jì)時(shí)狀態(tài)后, 仍可以對(duì)定時(shí)時(shí)間再次調(diào)節(jié),即重新設(shè)定; (3)運(yùn)行結(jié)束即時(shí)間到使八只發(fā)光二極管間隔亮,數(shù)碼管顯示“HELP”。 1.2 設(shè)計(jì)思路 根據(jù)設(shè)計(jì)要求,初步確定設(shè)計(jì)方案如下: (1)系統(tǒng)顯示采用8位共陰極LED數(shù)碼管。 LED數(shù)碼管的串行數(shù)據(jù)線DIN由P0.2產(chǎn)生,移位信號(hào)CLK由P0.3產(chǎn)生。8個(gè)串/并移位寄存器芯片74LS164首尾相連。每片的并行輸出作為LED數(shù)碼管的段碼。 (2)定時(shí)時(shí)間的設(shè)置與調(diào)整通過接入查詢式鍵盤實(shí)現(xiàn)。 設(shè)計(jì)10個(gè)按鍵,分別定義為: RT:Reset,清零鍵。其功能是當(dāng)該鍵按下時(shí),顯示清零。 EN:Enable,設(shè)定鍵。其功能是當(dāng)該鍵按下時(shí),其余按鍵才生效。 BN:Begin,開始鍵。其功能是當(dāng)該鍵按下時(shí),定時(shí)開始。 ST:Stop,暫停鍵。其功能是當(dāng)該鍵按下時(shí),定時(shí)停止。 HH:High Hour:時(shí)十位計(jì)數(shù)置數(shù)按鍵。 HL:Low Hour:時(shí)個(gè)位計(jì)數(shù)置數(shù)按鍵。 MH:High Minute:分十位計(jì)數(shù)置數(shù)按鍵。 ML:Low Minute:分個(gè)位計(jì)數(shù)置數(shù)按鍵。 SH:High Second:秒十位計(jì)數(shù)置數(shù)按鍵。 SL:Low Second:秒個(gè)位計(jì)數(shù)置數(shù)按鍵。 (3)按鍵的接入方式: RT鍵:通過P1口P1.0引腳接入,查詢工作方式。 EN鍵:通過P0口P0.0引腳接入,查詢工作方式。 BN鍵:通過P1口P1.1引腳接入,查詢工作方式。 HH鍵:通過P1口P1.2引腳接入,查詢工作方式。 HL鍵:通過P1口P1.3引腳接入,查詢工作方式。 MH鍵:通過P1口P1.4引腳接入,查詢工作方式。 ML鍵:通過P1口P1.5引腳接入,查詢工作方式。 SH鍵:通過P1口P1.6引腳接入,查詢工作方式。 SL鍵:通過P1口P1.7引腳接入,查詢工作方式。 (4)指示燈閃亮采用8個(gè)發(fā)光二極管,接入P2口。 1.3 硬件電路設(shè)計(jì)框圖 根據(jù)設(shè)計(jì)要求與設(shè)計(jì)思路,硬件電路設(shè)計(jì)框圖如圖1.1所示。硬件電路結(jié)構(gòu)由5個(gè)部分:按鍵輸入電路、發(fā)光二極管電路、LED顯示器及驅(qū)動(dòng)電路、時(shí)鐘與復(fù)位電路和電源電路組成。 按鍵電路 發(fā)光二極管 電路 時(shí)鐘電路 復(fù)位電路 AT89C51 單 片 機(jī) 驅(qū)動(dòng)電路 8位LED 顯示器 圖1.1 硬件電路設(shè)計(jì)框圖 2 定時(shí)器的硬件設(shè)計(jì) 2.1 LED顯示電路的設(shè)計(jì) 顯示器由8個(gè)共陰極LED數(shù)碼管組成。輸入只有兩個(gè)信號(hào),它們是串行數(shù)據(jù)線DIN和移位信號(hào)CLK。8個(gè)串/并移位寄存器芯片74LS164首尾相連。每片的并行輸出作為LED數(shù)碼管的段碼。 74LS164的引腳圖如圖2.1所示: 圖2.1 74LS164的引腳圖 74LS164為8位串入并出移位寄存器,1、2為 串行輸入端,QA~QH為并行輸出端,CLK為移位時(shí)鐘脈沖,上升沿移入一位;CLR為清零端,低電平時(shí)并行輸出為零。 圖2.2 LED顯示電路原理圖 2.2 發(fā)光二極管電路的設(shè)計(jì) 圖2.3 發(fā)光二極管電路原理圖 2.2 鍵盤電路的設(shè)計(jì) 本文采用了8個(gè)按鈕的獨(dú)立式鍵盤,接到單片機(jī)的并行口P1,如果有鍵按下,則相應(yīng)輸出為低,否則輸出為高。單片機(jī)通過識(shí)別,判斷按下什么鍵。有鍵按下后,加入一段延時(shí),防止由于鍵盤抖動(dòng)而引起的誤操作。 圖2.4 鍵盤電路原理圖 3 定時(shí)器的軟件設(shè)計(jì) 3.1 初始化程序 TICK EQU 5000 ;5000*2*100us = 1s T100us EQU 156 ;100us時(shí)間常數(shù)(12M) C100us EQU 05H ;100us記數(shù)單元 DBUF0 EQU 30H TEMP EQU 40H RT BIT P1.0 ;清零端 EN BIT P0.0 ;全局使能端 LED BIT P0.1 ;LED燈亮燈端 DIN BIT P0.2 ;數(shù)碼管靜態(tài)顯示端 CLK BIT P0.3 ;數(shù)碼管靜態(tài)顯示端 ST BIT P0.5 ;暫停端 ORG 0000H LJMP LOOP1 ORG 000BH LJMP T0INT ORG 0100H 3.2 全局使能程序 LOOP1: SETB EN MOV C,EN CPL C JC START ;判斷全局使能按鍵是否按下 LJMP LOOP1 3.3 開機(jī)顯示“HELLO”并亮燈程序 START: MOV 30H,#10H;\ MOV 31H,#15H;H MOV 32H,#16H;E MOV 33H,#17H;L MOV 34H,#17H;L MOV 35H,#00H;O MOV 36H,#10H;\ MOV 37H,#10H;\ CLR LED ;定時(shí)開始時(shí)點(diǎn)亮LED燈 3.4 清零程序 LOOP2: SETB RT MOV C,RT CPL C JC CLEAR ;判斷清零按鍵是否按下 LJMP LOOP2 ;若沒有按下則繼續(xù)判斷 CLEAR: MOV 30H,#00H;0 MOV 31H,#00H;0 MOV 32H,#14H;- MOV 33H,#00H;0 MOV 34H,#00H;0 MOV 35H,#14H;- MOV 36H,#00H;0 MOV 37H,#00H;0 3.5 查詢式鍵盤程序 KEYBOARD: MOV P1,#0FFH ;置P1口為輸入態(tài) MOV A,P1 ;讀入鍵值 LCALL DELAY MOV B,P1 CJNE A,B,KEYBOARD JNB ACC.0,CLEAR ;清零按鍵P1.0 JNB ACC.1,BEGIN ;開始定時(shí)按鍵P1.1 JNB ACC.2,HH ;時(shí)十位計(jì)數(shù)置數(shù)按鍵P1.2 JNB ACC.3,HL ;時(shí)個(gè)位計(jì)數(shù)置數(shù)按鍵P1.3 JNB ACC.4,MH ;分十位計(jì)數(shù)置數(shù)按鍵P1.4 JNB ACC.5,ML ;分個(gè)位計(jì)數(shù)置數(shù)按鍵P1.5 JNB ACC.6,SH ;秒十位計(jì)數(shù)置數(shù)按鍵P1.6 JNB ACC.7,SL ;秒個(gè)位計(jì)數(shù)置數(shù)按鍵P1.7 LJMP KEYBOARD ;若沒有按鍵按下則繼續(xù)判斷 3.6 定時(shí)時(shí)間設(shè)置程序 //設(shè)置時(shí)十位 HH: MOV A,30H INC A MOV 30H,A CJNE A,#06H,JUMP MOV 30H,#00H CALL DELAY LJMP DISP2 //設(shè)置時(shí)個(gè)位 HL: MOV A,31H INC A MOV 31H,A CJNE A,#0AH,JUMP MOV 31H,#00H CALL DELAY LJMP DISP2 //設(shè)置分十位 MH: MOV A,33H INC A MOV 33H,A CJNE A,#06H,JUMP MOV 33H,#00H CALL DELAY LJMP DISP2 //設(shè)置分個(gè)位 ML: MOV A,34H INC A MOV 34H,A CJNE A,#0AH,JUMP MOV 34H,#00H CALL DELAY LJMP DISP2 //設(shè)置秒十位 SH: MOV A,36H INC A MOV 36H,A CJNE A,#06H,JUMP MOV 36H,#00H CALL DELAY LJMP DISP2 //設(shè)置秒個(gè)位 SL: MOV A,37H INC A MOV 37H,A CJNE A,#0AH,JUMP MOV 37H,#00H CALL DELAY LJMP DISP2 3.7 定時(shí)中斷程序 //開啟中斷 BEGIN: MOV TMOD, #02H ;方式2, 定時(shí)器 MOV TH0, #T100us MOV TL0, #T100us MOV IE, #10000010B ;EA=1, IT0 = 1 SETB TR0 ;開始定時(shí) MOV C100us, #HIGH(TICK) MOV C100us+1, #LOW(TICK) //等待進(jìn)入中斷 WAIT: SJMP WAIT //中斷程序 T0INT: PUSH PSW MOV A, C100us+1 JNZ GOON DEC C100us GOON: DEC C100us+1 MOV A, C100us ORL A, C100us+1 JNZ JUMP4 ;100us 記數(shù)器不為0, 返回 MOV C100us, #HIGH(TICK) ;#HIGH(Tick) MOV C100us+1, #LOW(TICK) ;#LOW(Tick) ;100us 記數(shù)器為0, 重置記數(shù)器 //開始定時(shí) TIMING: SETB RT MOV C,RT CPL C JC JUMP2 ;判斷清零按鍵是否按下 SETB ST MOV C,ST CPL C JC JUMP3;判斷暫停按鍵是否按下 MOV A,37H DEC A MOV 37H,A CJNE A,#0FFH,DISP3 MOV 37H,#09H MOV A,36H DEC A MOV 36H,A CJNE A,#0FFH,DISP3 MOV 36H,#05H MOV A,34H DEC A MOV 34H,A CJNE A,#0FFH,DISP3 MOV 34H,#09H MOV A,33H DEC A MOV 33H,A CJNE A,#0FFH,DISP3 MOV 33H,#05H MOV A,31H DEC A MOV 31H,A CJNE A,#0FFH,DISP3 MOV 31H,#09H MOV A,30H DEC A MOV 30H,A CJNE A,#0FFH,DISP3 MOV 30H,#05H LJMP HELP …… EXIT: POP PSW RETI 3.8結(jié)束顯示“HELP”并亮燈程序 HELP: MOV 30H,#10H;\ MOV 31H,#10H;\ MOV 32H,#15H;H MOV 33H,#16H;E MOV 34H,#17H;L MOV 35H,#18H;P MOV 36H,#10H;\ MOV 37H,#10H;\ //定時(shí)結(jié)束后間隔閃燈 FLASH: SETB LED MOV A, #0FEH;11111110 MOV R5, #8 OUTPUT: MOV P2, A RL A LCALL DELAY DJNZ R5, OUTPUT SJMP FLASH 實(shí)習(xí)心得 一周的實(shí)習(xí)讓我看到了自身的不足,也收獲了寶貴的經(jīng)驗(yàn)教訓(xùn)。從設(shè)計(jì)一個(gè)小型系統(tǒng)時(shí)要考慮的方方面面到真正動(dòng)手搭接面包板時(shí)需要注意的各個(gè)細(xì)節(jié),電子設(shè)計(jì)的每一個(gè)環(huán)節(jié)都是整體中密不可分的一部分,必須經(jīng)過全局考慮和仔細(xì)思索,這里面還有很多知識(shí)值得虛心學(xué)習(xí)。除了知識(shí)方面啟發(fā),這次實(shí)習(xí)也讓我看到了自己的不足。我們的團(tuán)隊(duì)分工合作不夠明朗,導(dǎo)致我們浪費(fèi)了許多時(shí)間。這主要是因?yàn)殛?duì)員之間的交流不夠,造成彼此分工不明確,工作效率低下。這些都是我在后續(xù)學(xué)習(xí)中需要注重改進(jìn)提高的。最后,本次實(shí)習(xí)給我的啟發(fā)是:要想真正掌握電氣專業(yè)的知識(shí)技能,僅僅依靠現(xiàn)行的課堂學(xué)習(xí)是遠(yuǎn)遠(yuǎn)不夠的,不能僅僅滿足于掌握理論知識(shí),還應(yīng)該在課后學(xué)習(xí)一些專業(yè)軟件,用它們來做仿真測試,加深自己對(duì)于知識(shí)的理解;同時(shí)還要多動(dòng)手,多調(diào)試一些電路,熟悉各種元器件的特性,積累設(shè)計(jì)和分析電路時(shí)的經(jīng)驗(yàn)。 總而言之,非常感謝這次實(shí)習(xí)給我的反思與啟發(fā),讓我有機(jī)會(huì)提高自己的專業(yè)技能。略帶戲謔地說,實(shí)習(xí)就是這樣一個(gè)過程:誰不曾感覺過苦惱,誰不曾放棄過自己原先的設(shè)想,我們總是在檢線無果狠狠失望過一回,然后突然醒悟般地發(fā)現(xiàn)問題所在。我們終究還是做到了,做到了超越昨天的自我。 參考文獻(xiàn) [1] 黃建新.單片機(jī)原理、接口技術(shù)及應(yīng)用[M]. 北京:化學(xué)工業(yè)出版社, 2013 附 錄 整體程序 //**************************************************// // 家用電器定時(shí)控制器 // //**************************************************// // P0.0接使能開關(guān)K0 P0.1接LED燈 P0.2接數(shù)碼管DIN // // P0.3接數(shù)碼管CLK P0.4接電機(jī) p0.5接暫停開關(guān)K1 // // // // P1口接查詢式鍵盤: // // P1.0-清零按鍵 // // P1.1-開始定時(shí)按鍵 // // P1.2-時(shí)十位計(jì)數(shù)置數(shù)按鍵 // // P1.3-時(shí)個(gè)位計(jì)數(shù)置數(shù)按鍵 // // P1.4-分十位計(jì)數(shù)置數(shù)按鍵 // // P1.5-分個(gè)位計(jì)數(shù)置數(shù)按鍵 // // P1.6-秒十位計(jì)數(shù)置數(shù)按鍵 // // P1.7-秒個(gè)位計(jì)數(shù)置數(shù)按鍵 // // // // P2口接跑馬燈 // //**************************************************// TICK EQU 5000 ;5000*2*100us = 1s T100us EQU 156 ;100us時(shí)間常數(shù)(12M) C100us EQU 05H ;100us記數(shù)單元 DBUF0 EQU 30H TEMP EQU 40H RT BIT P1.0 ;清零端 EN BIT P0.0 ;全局使能端 LED BIT P0.1 ;LED燈亮燈端 DIN BIT P0.2 ;數(shù)碼管靜態(tài)顯示端 CLK BIT P0.3 ;數(shù)碼管靜態(tài)顯示端 ST BIT P0.5 ;暫停端 ORG 0000H LJMP LOOP1 ORG 000BH LJMP T0INT ORG 0100H //全局使能 LOOP1: SETB EN MOV C,EN CPL C JC START ;判斷全局使能按鍵是否按下 LJMP LOOP1 START: MOV 30H,#10H;\ MOV 31H,#15H;H MOV 32H,#16H;E MOV 33H,#17H;L MOV 34H,#17H;L MOV 35H,#00H;O MOV 36H,#10H;\ MOV 37H,#10H;\ CLR LED ;定時(shí)開始時(shí)點(diǎn)亮LED燈 //顯示定時(shí)開始前的 HELLO 界面 DISP: MOV R0, #DBUF0 MOV R1, #TEMP MOV R2, #8 DP10: MOV DPTR,#SEGTAB MOV A, @R0 MOVC A, @A+DPTR MOV @R1, A INC R0 INC R1 DJNZ R2, DP10 MOV R0, #TEMP MOV R1, #8 DP12: MOV R2, #8 MOV A, @R0 DP13: RLC A MOV DIN, C CLR CLK SETB CLK DJNZ R2, DP13 INC R0 DJNZ R1, DP12 //清零 LOOP2: SETB RT MOV C,RT CPL C JC CLEAR ;判斷清零按鍵是否按下 LJMP LOOP2 ;若沒有按下則繼續(xù)判斷 CLEAR: MOV 30H,#00H;0 MOV 31H,#00H;0 MOV 32H,#14H;- MOV 33H,#00H;0 MOV 34H,#00H;0 MOV 35H,#14H;- MOV 36H,#00H;0 MOV 37H,#00H;0 //顯示清零界面 DISP2: MOV R0, #DBUF0 MOV R1, #TEMP MOV R2, #8 DP20: MOV DPTR,#SEGTAB MOV A, @R0 MOVC A, @A+DPTR MOV @R1, A INC R0 INC R1 DJNZ R2, DP20 MOV R0, #TEMP MOV R1, #8 DP22: MOV R2, #8 MOV A, @R0 DP23: RLC A MOV DIN, C CLR CLK SETB CLK DJNZ R2, DP23 INC R0 DJNZ R1, DP22 //判斷哪個(gè)按鍵被按下 KEYBOARD: MOV P1,#0FFH ;置P1口為輸入態(tài) MOV A,P1 ;讀入鍵值 LCALL DELAY MOV B,P1 CJNE A,B,KEYBOARD JNB ACC.0,CLEAR ;清零按鍵P1.0 JNB ACC.1,BEGIN ;開始定時(shí)按鍵P1.1 //JNB ACC.2,HH ;時(shí)十位計(jì)數(shù)置數(shù)按鍵P1.2 //JNB ACC.3,HL ;時(shí)個(gè)位計(jì)數(shù)置數(shù)按鍵P1.3 JNB ACC.4,MH ;分十位計(jì)數(shù)置數(shù)按鍵P1.4 JNB ACC.5,ML ;分個(gè)位計(jì)數(shù)置數(shù)按鍵P1.5 JNB ACC.6,SH ;秒十位計(jì)數(shù)置數(shù)按鍵P1.6 JNB ACC.7,SL ;秒個(gè)位計(jì)數(shù)置數(shù)按鍵P1.7 LJMP KEYBOARD ;若沒有按鍵按下則繼續(xù)判斷 //置數(shù) //設(shè)置時(shí)十位 //HH: //MOV A,30H //INC A //MOV 30H,A //CJNE A,#06H,JUMP //MOV 30H,#00H //CALL DELAY //LJMP DISP2 //設(shè)置時(shí)個(gè)位 //HL: //MOV A,31H //INC A //MOV 31H,A //CJNE A,#0AH,JUMP //MOV 31H,#00H //CALL DELAY //LJMP DISP2 //設(shè)置分十位 MH: MOV A,33H INC A MOV 33H,A CJNE A,#06H,JUMP MOV 33H,#00H CALL DELAY LJMP DISP2 //設(shè)置分個(gè)位 ML: MOV A,34H INC A MOV 34H,A CJNE A,#0AH,JUMP MOV 34H,#00H CALL DELAY LJMP DISP2 //設(shè)置秒十位 SH: MOV A,36H INC A MOV 36H,A CJNE A,#06H,JUMP MOV 36H,#00H CALL DELAY LJMP DISP2 //設(shè)置秒個(gè)位 SL: MOV A,37H INC A MOV 37H,A CJNE A,#0AH,JUMP MOV 37H,#00H CALL DELAY LJMP DISP2 JUMP: LCALL DELAY LJMP DISP2 ;顯示當(dāng)前置數(shù)值 JUMP2: LJMP CLEAR ;定時(shí)過程中清零 JUMP3: LJMP KEYBOARD ;定時(shí)過程中暫停 JUMP4: LJMP EXIT //開啟中斷 BEGIN: MOV TMOD, #02H ;方式2, 定時(shí)器 MOV TH0, #T100us MOV TL0, #T100us MOV IE, #10000010B ;EA=1, IT0 = 1 SETB TR0 ;開始定時(shí) MOV C100us, #HIGH(TICK) MOV C100us+1, #LOW(TICK) //等待進(jìn)入中斷 WAIT: SJMP WAIT //中斷程序 T0INT: PUSH PSW MOV A, C100us+1 JNZ GOON DEC C100us GOON: DEC C100us+1 MOV A, C100us ORL A, C100us+1 JNZ JUMP4 ;100us 記數(shù)器不為0, 返回 MOV C100us, #HIGH(TICK) ;#HIGH(Tick) MOV C100us+1, #LOW(TICK) ;#LOW(Tick) ;100us 記數(shù)器為0, 重置記數(shù)器 //開始定時(shí) TIMING: SETB RT MOV C,RT CPL C JC JUMP2 ;判斷清零按鍵是否按下 SETB ST MOV C,ST CPL C JC JUMP3 ;判斷暫停按鍵是否按下 MOV A,37H DEC A MOV 37H,A CJNE A,#0FFH,DISP3 MOV 37H,#09H MOV A,36H DEC A MOV 36H,A CJNE A,#0FFH,DISP3 MOV 36H,#05H MOV A,34H DEC A MOV 34H,A CJNE A,#0FFH,DISP3 MOV 34H,#09H MOV A,33H DEC A MOV 33H,A CJNE A,#0FFH,DISP3 MOV 33H,#05H MOV A,31H DEC A MOV 31H,A CJNE A,#0FFH,DISP3 MOV 31H,#09H MOV A,30H DEC A MOV 30H,A CJNE A,#0FFH,DISP3 MOV 30H,#05H LJMP HELP //延時(shí)程序 DELAY: MOV R6, #0 MOV R7, #0 DELAYLOOP: DJNZ R7, DELAYLOOP DJNZ R6, DELAYLOOP RET //顯示定時(shí) DISP3: MOV R0, #DBUF0 MOV R1, #TEMP MOV R2, #8 DP30: MOV DPTR,#SEGTAB MOV A, @R0 MOVC A, @A+DPTR MOV @R1, A INC R0 INC R1 DJNZ R2, DP30 MOV R0, #TEMP MOV R1, #8 DP32: MOV R2, #8 MOV A, @R0 DP33: RLC A MOV DIN, C CLR CLK SETB CLK DJNZ R2, DP33 INC R0 DJNZ R1, DP32 EXIT: POP PSW RETI //顯示定時(shí)結(jié)束后的 HELP 界面 HELP: MOV 30H,#10H;\ MOV 31H,#10H;\ MOV 32H,#15H;H MOV 33H,#16H;E MOV 34H,#17H;L MOV 35H,#18H;P MOV 36H,#10H;\ MOV 37H,#10H;\ DISP4: MOV R0,#DBUF0 MOV R1,#TEMP MOV R2,#8 DP40: MOV DPTR,#SEGTAB MOV A,@R0 MOVC A,@A+DPTR MOV @R1,A INC R0 INC R1 DJNZ R2,DP40 MOV R0,#TEMP MOV R1,#8 DP42: MOV R2,#8 MOV A,@R0 DP43: RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R2,DP43 INC R0 DJNZ R1,DP42 //定時(shí)結(jié)束后間隔閃燈 FLASH: SETB LED MOV A, #0FEH;11111110 MOV R5, #8 OUTPUT: MOV P2, A RL A LCALL DELAY DJNZ R5, OUTPUT SJMP FLASH SEGTAB: DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 00H,00H,00H,00H ;\,\,\,\ DB 00H,00H,00H,00H,40H ;\,\,\,\,- DB 76H,79H,38H,73H,40H ;H,E,L,P,- END- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 家用電器 定時(shí) 控制器 設(shè)計(jì)
鏈接地址:http://m.kudomayuko.com/p-8831774.html