欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6485|回復: 1
收起左側

基于51單片機的定時鬧鐘裝置設計 匯編語言源程序

[復制鏈接]
ID:553064 發表于 2019-11-22 21:18 | 顯示全部樓層 |閱讀模式
本帖最后由 哇哇哇哇哇w 于 2019-11-23 09:19 編輯

一主要功能1)能顯示:時時—分分。
2)能夠設定定時時間、修改定時時間。
3)定時時間到能發出提示聲音。
4)提示聲音發出后,若要用提示聲音驅動某外圍元件動作,可接在A1處
本次設計的系統電路圖如下
0OA56{7GIDV1LR])~9FZJIO.png
使用了AT89C51作為控制芯片,連接外圍電路組成最小系統。P1口接五個按鈕(S1—5)作為控制鍵輸入,外接4位數碼管顯示時間,另外P3.7附加蜂鳴器作為定時鬧鐘鈴響使用,同時,若要使鬧鐘信號驅動其他外設元件,可以與蜂鳴器下三極管的發射極相接。按鍵分為設置當前時間,設置定時時間鍵,小時加鍵鍵,分鐘加鍵,退出鍵。
  AT89C51是一個低電壓,高性能CMOS8位單片機,片內含4KB的可反復擦寫的Flash只讀程序存儲器ROM)128B的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,內置功能強大的微型計算機的AT89C51為用戶提供了許多高性價比應用場合,可靈活應用于各種控制領域。
AT89C51是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,2個16位可編程定時計數器,2個全雙工串行通信口,AT89C51可以按照常規方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。
主要特性:
·與MCS-51 兼容
·4K字節可編程閃爍存儲器
·壽命:1000寫/擦循環
·數據保留時間:10年
·全靜態工作:0Hz-24Hz
·三級程序存儲器鎖定
·128×8位內部RAM
·32可編程I/O線
·兩個16位定時器/計數器
·5個中斷源
·可編程串行通道
·低功耗的閑置和掉電模式
·片內振蕩器和時鐘電路
引腳使用說明:
VCC:供電電壓。
GND:接地。
    P0口P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當
P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。
P1口P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。
P2口P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。
P3口P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口也可作為AT89C51的一些特殊功能口,如下所示:
管腳……備選功能
P3.0……RXD(串行輸入口)
P3.1…… TXD(串行輸出口)
P3.2……/INT0(外部中斷0)
P3.3……/INT1(外部中斷1)
P3.4……T0(記時器0外部輸入)
P3.5……T1(記時器1外部輸入)
P3.6……/WR(外部數據存儲器寫選通)
P3.7……/RD(外部數據存儲器讀選通)
P3口同時為閃爍編程和編程校驗接收一些控制信號。
ST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。
ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。
/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。
/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
振蕩器特性:
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,XTAL2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度

全部程序清單
ORG 0000H
                  LJMP MAIN
                  ORG 000BH
                  LJMP TIME

          ;×××××主程序部分:×××××
                  ORG 0100H
                  MAIN:MOV SP,#50H
                  MOV 21H,#00H        ;分鐘 BIN
                  MOV 22H,#00H        ;小時 BIN
                  MOV 23H,#01H
                  MOV 24H,#01H
                  MOV 25H,#00H
                  MOV 30H,#00H   
                  MOV 31H,#00H   
                  MOV 32H,#00H   
                  MOV 33H,#00H   
                  MOV 34H,#00H   
                  MOV 35H,#00H
                  MOV 36H,#01H
                  MOV 37H,#00H
                  MOV 38H,#01H
                  MOV 39H,#00H
                  MOV TMOD,#01H   ;16位計數器
                  MOV TH0,#03CH    ;賦計數初值
                  MOV TL0,#0B0H
                  MOV IE,#10000111B
                  SETB TR0             ;T0啟動計數
              MOV R2,#14H
              MOV P2,#0FFH
            LOOP: LCALL TIMEPRO
                  LCALL  DISPLAY1
                  JB P1.1,M1           
                  LCALL  SETTIME   ;調用設定時間程序
                  LJMP  LOOP
            M1:JB P1.2,M2         
                  LCALL  SETATIME  ;調用設定時間程序
                  LJMP  LOOP
               M2:JB P1.4,M4            
                  LCALL  LOOKATIME  ;調用設定鬧鐘時間程序
           M4:LJMP LOOP
            DELAY:MOV R4,#030H          ;延時時間
            DL00:MOV R5,#0FFH
            DL11:MOV R6,#9H
            DL12:DJNZ R6,DL12
                 DJNZ R5,DL11
                 DJNZ R4,DL00
                      RET
       ;×××××設定時間程序:×××××
SETTIME:

             L0:LCALL DISPLAY1          ;調用時間允許程序
        MM1:  JB P1.2,L1            
                MOV C,P1.2
                JC MM1
                LCALL  DELAY1          ;調用延時
                JC MM1
     MSTOP1:    MOV C,P1.2
                JNC MSTOP1              ;判斷P1.2是否釋放?釋放則繼續
                LCALL DELAY1           ;調用延時
                MOV  C,P1.2
                JNC  MSTOP1
                 INC 22H                  ;小時增加1
                  MOV A,22H
                  CJNE A,#18H,GO12         ;判斷小時是否到24時?未到繼續循環
                  MOV 22H,#00H             ;小時復位
                  MOV 34H,#00H
                  MOV 35H,#00H
                  LJMP L0
               L1:JB P1.3,L2                 
                  MOV C,P1.3
                  JC L1
                  LCALL  DELAY1          ;延時
                  JC L1
        MSTOP2:   MOV C,P1.3
                  JNC MSTOP2               ;判斷P1.3是否釋放?釋放則繼續
                  LCALL DELAY1            ;調用延時
                  MOV  C,P1.3
                  JNC  MSTOP2
                  INC 21H                   ;分鐘增加一
                  MOV A,21H
                  CJNE A,#3CH,GO11         
                  MOV 21H,#00H             ;分鐘復位
                  MOV 32H,#00H
                  MOV 33H,#00H
                  LJMP L0
            GO11:MOV      B,#0AH         ;A中的內容分成高低兩部分
                 DIV      AB
                 MOV      32H,B
                 MOV      33H,A
                 LJMP    L0

            GO12:     MOV      B,#0AH
                 DIV      AB
                 MOV      34H,B
                 MOV      35H,A
                 LJMP     L0
              L2:JB P1.4,L0               
                 MOV C,P1.4
                 JC  L2
                 LCALL  DELAY1         ;調用延時
                 MOV  C,P1.4
                 JC  L2
        STOP1:   MOV  C,P1.4             ;判斷按鍵P1.4是否釋放?
                 JNC STOP1
                 LCALL  DELAY1          ;調用延時
                 MOV  C,P1.4
                 JNC STOP1
                 LJMP  LOOP

        ;×××××設置鬧鐘時間×××××

         SETATIME:LCALL DISPLAY2       ;調用時間運行
               N0:LCALL DISPLAY2
         MM2:         JB P1.3,N1          ;判斷P1.3是否按下?

                  MOV C,P1.3
                  JC MM2
                  LCALL  DELAY1        
                  JC MM2
        MSTOP3:   MOV C,P1.3            ;判斷P1.3是否釋放?
                  JNC MSTOP3
                  LCALL DELAY1         
                  MOV  C,P1.3
                  JNC  MSTOP3
                  INC 24H                ;設定小時增加1
                  MOV A,24H
                  CJNE A,#24,GO22      
                  MOV 24H,#00H          ;時鐘復位
                  MOV 38H,#00H
                  MOV 39H,#00H
                  LJMP N0
               N1:JB P1.1,N2              ;判斷P1.1是否按下?

                  MOV C,P1.1
                  JC N1
                  LCALL  DELAY1      
                  JC N1
        MSTOP4:   MOV C,P1.1           ;判斷P1.1是否釋放?
                  JNC MSTOP4
                  LCALL DELAY1         
                  MOV  C,P1.1
                  JNC  MSTOP4
                  INC 23H                ;設定鬧鐘分鐘增加1
                  MOV A,23H
                  CJNE A,#60,GO21        ;判斷A是否到60?
                  MOV 23H,#00H          ;分鐘復位
                  MOV 36H,#00H
                  MOV 37H,#00H
                  LJMP N0
            GO21:MOV      B,#0AH       ;A中的內容分成高低兩部分
                 DIV      AB
                 MOV      36H,B
                 MOV      37H,A
                 LJMP    N0

            GO22:     MOV      B,#0AH
                 DIV      AB
                 MOV      38H,B
                 MOV      39H,A
                 LJMP     N0
              N2:JB P1.4 ,N0               ;判斷P1.4是否按下?
                 MOV C,P1.4
                 JC  N2
                 LCALL  DELAY1         
                 MOV  C,P1.4
                 JC  N2
        STOP2:   MOV  C,P1.4            ;判斷P1.4是否釋放?
                 JNC STOP2
                 LCALL  DELAY1      
                 MOV  C,P1.4
                 JNC STOP2
                 LJMP LOOP

         TIMEPRO:MOV A,21H           
                    MOV B,23H
                    CJNE A,B,BK           ;判斷分鐘是否運行到設定的鬧鐘的分鐘?
                    MOV A,22H
                    MOV B,24H
                    CJNE A,B,BK            ;判斷時鐘是否運行到設定的鬧鐘的時鐘?
                    SETB 25H.0
                    MOV C,25H.0
                    JC XX
                 XX:   LCALL TIMEOUT     ;調用時間鬧鐘響應程序
              BK:RET
           TIMEOUT:

                 X1:LCALL BZ               ;調用喇叭響應程序
                    LCALL DISPLAY2        
                    CLR 25H.0               
                    JB P1.4, X1               ;判斷P1.4是否按下?
                   LCALL    DELAY        
                   CLR 25H.0
                   LJMP DISPLAY1            
              BZ:  CLR P3.7                  ;喇叭響應程序
                  MOV R7,#250               ;響應延時時間
               T2:   MOV R6,#124
               T3:  DJNZ R6,T3

                    DJNZ R7,T2
                    SETB P3.7
                    RET
            LOOKATIME:LCALL DISPLAY2    ;調用時間運行程序
         MM:     JB P1.4,LOOKATIME        ;判斷按鍵P1.4是否按下
                 MOV C,P1.4
                 JC  MM
                 LCALL  DELAY1
                 MOV  C,P1.4
                 JC  MM
        STOP3:   MOV  C,P1.4
                 JNC STOP3
                 LCALL  DELAY1
                 MOV  C,P1.4
                 JNC STOP3
                 LJMP  LOOP
DELAY1:  MOV  R4,#14H              ;時間延時
        DL001:   MOV  R5,#0FFH
        DL111:   DJNZ R5,DL111
                 DJNZ R4,DL001
                 RET
        ;×××××時間運行程序×××××
        TIME:   PUSH ACC                    ;現場保護
                PUSH PSW
            MOV        TH0,#03CH             ;賦初值
                 MOV        TL0,#0B0H
                DJNZ        R2,RET0
                MOV        R2,#14H
                MOV        A,20H
                CLR C
            MOV     30H,#0
            MOV     31H,#0
                MOV        A,21H
                INC        A                              ;分鐘自加1
                  CJNE        A,#3CH,GO2                ;判斷分鐘是否到60分?
            MOV  21H,#0H                     ;60分復位
            MOV  32H,#0
            MOV  33H,#0
                MOV        A,22H
                INC        A                              ;時鐘自加1
                CJNE        A,#18H,GO3                ;判斷時鐘是否到24時?
                MOV   22H,#00H                   ;24時復位
            MOV   34H,#0
            MOV   35H,#0
                AJMP        RET0
        GO1:        MOV        20H,A            
                MOV     B,#0AH
                DIV     AB
                MOV     31H,A
                MOV     30H,B
                 AJMP        RET0
        GO2:        MOV        21H,A
                MOV     B,#0AH
                DIV     AB
                MOV     33H,A
                MOV     32H,B
                AJMP        RET0
        GO3:        MOV        22H,A
                MOV     B,#0AH
                DIV     AB
                MOV     35H,A
                MOV     34H,B
                       AJMP        RET0
        RET0:   POP PSW                  ;恢復現場
                POP ACC
                RETI
           ;×××××運行部分×××××
        DISPLAY1:        MOV        R0,#30H
                    MOV        R3,#0FEH
                    MOV        A,R3
        PLAY1:  MOV   P2,A
               MOV   A,@R0
               MOV   DPTR,#DSEG1       ;表首地址送DPTR
               MOVC  A,@A+DPTR      
               MOV   P0,A               
               LCALL  DL1
               MOV P2,#0FFH              ;送高電平到P2
               MOV   A,R3
               RL       A                 ;
               JNB    ACC.6,LD1
               INC      R0
               MOV   R3,A
               LJMP  PLAY1               ;調用查表程序
        LD1:   RET
        DISPLAY2:  PUSH ACC              ;現場保護
            PUSH PSW
        MOV        R0,#36H
                    MOV        R3,#0FBH
                    MOV        A,R3
        PLAY2:  MOV   P2,A
               MOV   A,@R0
               MOV   DPTR,#DSEG1         ;表首地址送DPTR
               MOVC  A,@A+DPTR          ;ASCII特碼
               MOV   P0,A                  ;查表結果送A
               LCALL DL1
               MOV P2,#0FFH                ;送高電平到P2
               MOV   A,R3
               RL       A
               JNB    ACC.6,LD2
               INC      R0
               MOV   R3,A
               LJMP  PLAY2
        LD2:   POP PSW                     ;恢復現場
           POP ACC
         RET
          ;×××××延時時間×××××
        DL1:        MOV        R7,#02H              ;延時時間
        DL:            MOV        R6,#020H
        DL6:        DJNZ        R6,$
                    DJNZ        R7,DL
                    RET
        DSEG1:DB 3FH,06H,5BH,4FH,66H
              DB 6DH,7DH,07H,7FH,6FH
        END



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:741487 發表于 2020-4-30 09:59 | 顯示全部樓層
你好 請問單片機鬧鐘那個有文件嗎 或者說那個芯片用的是51還是52 看圖片上的是52 如果有文件是最好 可以發我一下嗎!!!真的萬分感謝你
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表