新聞中心

        EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 電腦數(shù)字鐘硬件原理圖

        電腦數(shù)字鐘硬件原理圖

        作者: 時(shí)間:2016-11-08 來源:網(wǎng)絡(luò) 收藏

        為了節(jié)約制作硬件的開支,我們利用單片機(jī)開發(fā)機(jī)上的硬件資源,開發(fā)了數(shù)字鐘的軟件。該數(shù)字鐘由8031單片機(jī)控制,采用24小時(shí)制計(jì)時(shí),利用開發(fā)機(jī)上的六個(gè)LED顯示器來顯示時(shí)、分和秒,使用P1端口中的P1.0端口線實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)功能;使用P3端口的P3.0實(shí)現(xiàn)鬧鐘功能。其硬件如圖一所示。

        圖中按鍵K1,K2,K3及開關(guān)K5,K6的定義如下表所示

        圖中的開關(guān)K4用于鬧鐘控制,當(dāng)K4=1時(shí)(開關(guān)處于ON的位置),打開鬧鐘,使之在預(yù)定時(shí)間起鬧;當(dāng)K1=0時(shí)(開關(guān)處于OFF的位置),則關(guān)閉鬧鐘,使之不鬧。另外,在鬧鐘響起時(shí),K4也可作為止鬧開關(guān)使用,若不止鬧,則鬧一分鐘。鬧鐘信號(hào)用發(fā)光二極管來模擬。
        整點(diǎn)報(bào)時(shí)信號(hào)也是用發(fā)光二極管來模擬的。當(dāng)整點(diǎn)時(shí),P1.0口所接的發(fā)光二極管點(diǎn)亮一分鐘。
        數(shù)字鐘的秒信號(hào)是利用8031單片機(jī)定時(shí)器T0產(chǎn)生的。由于開發(fā)機(jī)的晶振頻率為6MHz,使得T0的最大定時(shí)時(shí)間遠(yuǎn)遠(yuǎn)小于1秒,因此,在設(shè)計(jì)時(shí)采用了硬件計(jì)數(shù)與軟件計(jì)數(shù)相結(jié)合的方式,即通過T0產(chǎn)生一定的定時(shí)時(shí)間,然后再利用軟件進(jìn)行計(jì)數(shù),從而產(chǎn)生1秒鐘的時(shí)間信號(hào)。在設(shè)計(jì)中,定時(shí)器T0采用了中斷方式。當(dāng)定時(shí)時(shí)間到時(shí),單片機(jī)產(chǎn)生中斷,在T0的中斷服務(wù)程序中實(shí)現(xiàn)時(shí)、分、秒的累加。并且,該中斷的優(yōu)先級(jí)別高于其它中斷,因此,保證了電子鐘走時(shí)準(zhǔn)確。在設(shè)計(jì)中,利用外部中斷0和外部中斷1分別作為校時(shí)和鬧鐘校時(shí)按鍵的觸發(fā)輸入。當(dāng)需要校時(shí)時(shí),撥動(dòng)K5或K6開關(guān),便產(chǎn)生外部中斷,進(jìn)入相應(yīng)的中斷服務(wù)程序。在外部中斷0和外部中斷1的中斷服務(wù)程序中,都只有一條"表示有按鍵"的標(biāo)志位置1的指令,然后在主程序中用查詢標(biāo)志位的方式判斷是否有鍵按下。若查得標(biāo)志位為1則進(jìn)入校時(shí)子程序進(jìn)行校時(shí)的相應(yīng)處理;若為0則照常進(jìn)行時(shí)間顯示。當(dāng)撥動(dòng)K5開關(guān)時(shí),進(jìn)入校時(shí)狀態(tài),用戶可以方便地校準(zhǔn)時(shí)間。當(dāng)撥動(dòng)K6開關(guān)時(shí),便進(jìn)入鬧鐘校時(shí)狀態(tài),這時(shí),可根據(jù)需要設(shè)置起鬧時(shí)間。在鬧鐘校時(shí)期間,時(shí)鐘繼續(xù)計(jì)數(shù),即鬧鐘校時(shí)不影響時(shí)鐘走時(shí)。


        摘 要:介紹了用8031單片機(jī)控制的電腦數(shù)字鐘的硬件結(jié)構(gòu)與軟件設(shè)計(jì)。給出了匯編
        語言源程序。
        關(guān)鍵詞:?jiǎn)纹瑱C(jī),實(shí)時(shí)控制,數(shù)字鐘,中斷
        數(shù)字電子鐘的設(shè)計(jì)方法有多種,例如,可用中小規(guī)模集成電路組成電子鐘;也可以利用專用的電子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘;還可以利用單片機(jī)來實(shí)現(xiàn)電子鐘等等。這些方法都各有特點(diǎn),其中,利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,便于電子鐘功能的擴(kuò)充,即可用該電子鐘發(fā)出各種控制信號(hào),精確度高等特點(diǎn)。
        所設(shè)計(jì)的電子鐘有以下功能:
        1. 24小時(shí)制時(shí)間顯示。
        2. 可隨時(shí)進(jìn)行時(shí)間校對(duì)。
        3. 整點(diǎn)報(bào)時(shí)。
        4. 鬧鐘功能。
        為了節(jié)約制作硬件的開支,我們利用單片機(jī)開發(fā)機(jī)上的硬件資源,開發(fā)了電腦數(shù)字鐘的軟件。該數(shù)字鐘由8031單片機(jī)控制,采用24小時(shí)制計(jì)時(shí),利用開發(fā)機(jī)上的六個(gè)LED顯示器來顯示時(shí)、分和秒,使用P1端口中的P1.0端口線實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)功能;使用P3端口的P3.0實(shí)現(xiàn)鬧鐘功能。其硬件如圖一所示。


        圖一 電腦原理圖

        圖中按鍵K1,K2,K3及開關(guān)K5,K6的定義如下表所示

        圖中的開關(guān)K4用于鬧鐘控制,當(dāng)K4=1時(shí)(開關(guān)處于ON的位置),打開鬧鐘,使之在預(yù)定時(shí)間起鬧;當(dāng)K1=0時(shí)(開關(guān)處于OFF的位置),則關(guān)閉鬧鐘,使之不鬧。另外,在鬧鐘響起時(shí),K4也可作為止鬧開關(guān)使用,若不止鬧,則鬧一分鐘。鬧鐘信號(hào)用發(fā)光二極管來模擬。
        整點(diǎn)報(bào)時(shí)信號(hào)也是用發(fā)光二極管來模擬的。當(dāng)整點(diǎn)時(shí),P1.0口所接的發(fā)光二極管點(diǎn)亮一分鐘。
        電腦數(shù)字鐘的秒信號(hào)是利用8031單片機(jī)定時(shí)器T0產(chǎn)生的。由于開發(fā)機(jī)的晶振頻率為6MHz,使得T0的最大定時(shí)時(shí)間遠(yuǎn)遠(yuǎn)小于1秒,因此,在設(shè)計(jì)時(shí)采用了硬件計(jì)數(shù)與軟件計(jì)數(shù)相結(jié)合的方式,即通過T0產(chǎn)生一定的定時(shí)時(shí)間,然后再利用軟件進(jìn)行計(jì)數(shù),從而產(chǎn)生1秒鐘的時(shí)間信號(hào)。在設(shè)計(jì)中,定時(shí)器T0采用了中斷方式。當(dāng)定時(shí)時(shí)間到時(shí),單片機(jī)產(chǎn)生中斷,在T0的中斷服務(wù)程序中實(shí)現(xiàn)時(shí)、分、秒的累加。并且,該中斷的優(yōu)先級(jí)別高于其它中斷,因此,保證了電子鐘走時(shí)準(zhǔn)確。在設(shè)計(jì)中,利用外部中斷0和外部中斷1分別作為校時(shí)和鬧鐘校時(shí)按鍵的觸發(fā)輸入。當(dāng)需要校時(shí)時(shí),撥動(dòng)K5或K6開關(guān),便產(chǎn)生外部中斷,進(jìn)入相應(yīng)的中斷服務(wù)程序。在外部中斷0和外部中斷1的中斷服務(wù)程序中,都只有一條"表示有按鍵"的標(biāo)志位置1的指令,然后在主程序中用查詢標(biāo)志位的方式判斷是否有鍵按下。若查得標(biāo)志位為1則進(jìn)入校時(shí)子程序進(jìn)行校時(shí)的相應(yīng)處理;若為0則照常進(jìn)行時(shí)間顯示。當(dāng)撥動(dòng)K5開關(guān)時(shí),進(jìn)入校時(shí)狀態(tài),用戶可以方便地校準(zhǔn)時(shí)間。當(dāng)撥動(dòng)K6開關(guān)時(shí),便進(jìn)入鬧鐘校時(shí)狀態(tài),這時(shí),可根據(jù)需要設(shè)置起鬧時(shí)間。在鬧鐘校時(shí)期間,時(shí)鐘繼續(xù)計(jì)數(shù),即鬧鐘校時(shí)不影響時(shí)鐘走時(shí)。
        程序中的一些存儲(chǔ)單元的定義如下:
          20H~22H:時(shí)、分、秒單元
          40H~42H:校時(shí)或鬧鐘校時(shí)期間的時(shí)、分、秒單元
          50H~51H:起鬧時(shí)間的時(shí)、分單元
         ?。罚梗取罚牛龋猴@示緩沖區(qū)
        用戶標(biāo)志位F0:校時(shí)標(biāo)志,當(dāng)F0=1時(shí),表示校時(shí)
            位7FH:鬧鐘校時(shí)標(biāo)志,當(dāng)7FH=1時(shí),表示鬧鐘校時(shí)
            以上的總體設(shè)計(jì)使得電腦數(shù)字鐘的精確度較高,因?yàn)樵诔绦虻膱?zhí)行過程中,任何指令都不影響定時(shí)器的正常計(jì)數(shù)。從而,使數(shù)字鐘的精度僅僅取決于單片機(jī)的產(chǎn)生機(jī)器周期電路和定時(shí)器T0硬件電路的精確度。另外,程序較為簡(jiǎn)潔,具有可靠性和較好的可讀性。
        我們?cè)O(shè)計(jì)電腦數(shù)字鐘的目的并不在于電腦數(shù)字鐘本身,而是想將它的設(shè)計(jì)應(yīng)用于實(shí)時(shí)控制之中。只要對(duì)上述程序和硬件電路稍加修改,便可以得到實(shí)時(shí)控制的實(shí)用系統(tǒng),從而應(yīng)用到實(shí)際工作與生產(chǎn)中去。
        電腦數(shù)字鐘的匯編語言源程序如下所示:
        ORG 0000H
        LJMP MAIN
        ORG 0003H
        SETB PSW.5
        RETI
        ORG 000BH
        LJMP CLOCK
        ORG 0013H
        SETB 7FH
        RETI
        ORG 0030H
        MAIN: MOV SP,#60H
        MOV TMOD,#01H
        MOV IE,#87H
        SETB PT0
        MOV TL0,#0B7H
        MOV TH0,#3CH
        MOV 20H,#00H
        MOV 21H,#00H
        MOV 22H,#00H
        MOV 23H,#00H
        MOV 50H,#06H
        MOV 51H,#28H
        MOV 52H,#00H
        CLR PSW.5
        CLR 7FH
        SETB TR0
        SETB IT0
        SETB IT1
        CLR P3.0
        SS: LCALL CUTIN0
        LCALL SSCAN
        JNB PSW.5,LK
        LCALL KEY0
        LK: JNB 7FH,SS
        LCALL KEY1
        SJMP SS
        CUTIN0: PUSH PSW
        PUSH ACC
        MOV 25H,R0
        MOV R0,#79H
        MOV A,22H
        ACALL BCD
        MOV A,21H
        ACALL BCD
        MOV A,20H
        ACALL BCD
        MOV R0,25H
        POP ACC
        POP PSW
        RET
        CUTIN1: PUSH PSW
        PUSH ACC
        MOV 25H,R0
        MOV R0,#79H
        MOV A,42H
        ACALL BCD
        MOV A,41H
        ACALL BCD
        MOV A,40H
        ACALL BCD
        MOV R0,25H
        POP ACC
        POP PSW
        RET
        BCD: MOV B,#0AH
        DIV AB
        MOV @R0,B
        INC R0
        MOV @R0,A
        INC R0
        RET
        CLOCK: JNB PSW.5,ZC
        LJMP FH
        ZC: MOV TL0,#0B7H
        MOV TH0,#3CH
        PUSH PSW
        PUSH ACC
        INC 23H
        MOV A,23H
        CJNE A,#0AH,RET0
        MOV 23H,#00H
        INC 22H
        MOV A,22H
        CJNE A,#3CH,RET0
        MOV 22H,#00H
        SETB P1.0
        CLR P3.0
        INC 21H
        MOV A,21H
        CJNE A,#3CH,RET0
        MOV 21H,#00H
        CLR P1.0
        INC 20H
        MOV A,20H
        CJNE A,#18H,RET0
        MOV 20H,#00H
        AJMP RET0
        RET0: MOV A,21H
        CJNE A,51H,B0
        MOV A,20H
        CJNE A,50H,B0
        SETB P3.0
        B0: POP ACC
        POP PSW
        FH: RETI
        SSCAN: MOV R6,#05H
        SS2: MOV 30H,#20H
        MOV 31H,#7EH
        MOV R7,#06H
        SS1: MOV R1,#21H
        MOV A,30H
        MOVX @R1,A
        MOV R0,31H
        MOV A,@R0
        MOV DPTR,#SC
        MOVC A,@A+DPTR
        MOV R1,#22H
        MOVX @R1,A
        LCALL D1
        MOV A,30H
        RR A
        MOV 30H,A
        DEC 31H
        DJNZ R7,SS1
        DJNZ R6,SS2
        RET
        SC: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
        KEY: MOV 42H,#00H
        A0: MOV P1,#0FFH
        MOV A,P1
        ANL A,#38H
        MOV R3,A
        LCALL DELAY
        MOV P1,#0FFH
        MOV A,P1
        ANL A,#38H
        CLR C
        SUBB A,R3
        JNZ A0
        MOV A,R3
        CJNE A,#38H,A00
        SJMP A0
        A00: CJNE A,#30H,TOK2
        INC 41H
        MOV R2,41H
        CJNE R2,#3CH,A1
        MOV 41H,#00H
        A1: MOV P1,#0FFH
        MOV A,P1
        ANL A,#08H
        JNZ A0
        LCALL DELAY
        SJMP A1
        TOK2: CJNE A,#28H,TOK3
        DEC 41H
        MOV R2,41H
        CJNE R2,#0FFH,A2
        MOV 41H,#3BH
        A2: MOV P1,#0FFH
        MOV A,P1
        ANL A,#10H
        JNZ A0
        LCALL DELAY
        SJMP A2
        TOK3: CJNE A,#18H,A0
        AA: MOV P1,#0FFH
        MOV A,P1
        ANL A,#20H
        JNZ A3
        LCALL DELAY
        SJMP AA
        A3: MOV P1,#0FFH
        MOV A,P1
        ANL A,#38H
        MOV R3,A
        LCALL DELAY
        MOV P1,#0FFH
        MOV A,P1
        ANL A,#38H
        CLR C
        SUBB A,R3
        JNZ A3
        MOV A,R3
        CJNE A,#38H,A33
        SJMP A3
        A33: CJNE A,#30H,TO2
        INC 40H
        MOV R2,40H
        CJNE R2,#18H,A4
        MOV 40H,#00H
        A4: MOV P1,#0FFH
        MOV A,P1
        ANL A,#08H
        JNZ A3
        LCALL DELAY
        SJMP A4
        TO2: CJNE A,#28H,TO3
        DEC 40H
        MOV R2,40H
        CJNE R2,#0FFH,A5
        MOV 40H,#17H
        A5: MOV P1,#0FFH
        MOV A,P1
        ANL A,#10H
        JNZ A3
        LCALL DELAY
        SJMP A5
        TO3: CJNE A,#18H,A3
        RET
        KEY0: MOV 41H,21H
        MOV 40H,20H
        CLR TR0
        ACALL KEY
        CLR PSW.5
        MOV 22H,42H
        MOV 21H,41H
        MOV 20H,40H
        MOV TL0,#0B7H
        MOV TH0,#3CH
        SETB TR0
        RET
        KEY1: MOV 41H,51H
        MOV 40H,50H
        LCALL KEY
        CLR 7FH
        MOV 51H,41H
        MOV 50H,40H
        RET
        D1: MOV R4,#02H
        D11: MOV R5,#0FFH
        DJNZ R5,$
        DJNZ R4,D11
        RET
        DELAY: PUSH ACC
        LCALL CUTIN1
        LCALL SSCAN
        POP ACC
        RET



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 郸城县| 资源县| 平遥县| 兰考县| 永城市| 青铜峡市| 祁东县| 横山县| 青浦区| 海丰县| 黔西| 东丽区| 勃利县| 泰宁县| 双鸭山市| 兰考县| 桐柏县| 宜黄县| 乐陵市| 敦化市| 嘉祥县| 文成县| 文水县| 新竹市| 桂平市| 松原市| 报价| 开平市| 葫芦岛市| 稻城县| 南京市| 古交市| 隆回县| 新和县| 嘉定区| 平江县| 腾冲县| 化隆| 呼图壁县| 邵武市| 浠水县|