<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        51單片機倒計時發聲器

        作者:肖邦   來源:本站原創   點擊數:  更新時間:2014年03月08日   【字體:

        設計要求: 1:上電后二位數碼管顯示88
                         2:單擊按鈕,倒計時開始從20秒開始,到0時喇叭發聲。
                         3:雙擊按鈕開關:倒計時從0開始正常記時,到20秒后發聲。
                         4:記數結束從開始狀態重新開始下一輪.


        基本器件和管腳:

                        1)數碼管:


        2)74譯碼器 SN 74LS47



        將BCD 碼轉換成數碼管顯示的數.

        單片機及其接口電路:



        程序代碼: 本次晶振12MHZ

        SW EQU P1.0;   按鈕開關指定為P1.0位
        BUZZER EQU P3.7; 喇叭指定為P3.7位
        ORG 00H;    程序起始地址00H開始

        START:
               CLR BUZZER        ;  清零喇叭位為低電平(關閉喇叭)
          MOV P0,#88H        ;   給2個74譯碼器都發送88,,88為BCD碼
          NOP
          NOP
          JB SW,$           ;判斷按鈕是否按下,當SW==1時,程序一直跳到$這里T原地不動,當按鍵按下時,SW==0則進入下面
          NOP
          NOP
          NOP               ;        稍微延時
          JNB SW,$          ;    判斷按鍵是否松開
          
          MOV R3,#10        ;       在一秒內判斷是否雙擊
        D1:
               MOV R4,#200
        D2:
               MOV R5,#250
          DJNZ R5,$
          JNB SW,TIMER      ;   如果按鍵按下,則進入另外一直記時狀態
          DJNZ R4,D2
          DJNZ R3,D1
          
          MOV R1,#21        ; 倒計時初始值21

        COUNTDOWN:  
               DEC R1            ;      R1自減1
          MOV A,R1          ;    R1復值給累加器A
          MOV B,#10         ;   寄存器B賦值10
          DIV AB            ;     累加器A除以寄存器B,商存A,余存B
          SWAP A            ;      A的高低4位互換 ,目的用于譯碼器顯示,有2個譯碼器,所以要區分R1中的高位和低位
          ORL A,B           ;     A=A+B做或操作
          MOV P0,A          ;    輸出到譯碼器從而顯示到數碼管
          CALL DELAY        ;   延時1秒
          CJNE A,#00H,COUNTDOWN ;  如果累加器A不等于00H則跳轉到COUNTDOWN,即一直倒計時直到A減到0
          SETB BUZZER       ;   計數到0喇叭發聲
          CALL DELAY
          JMP START         ;  跳到開始處從頭開始
          
        TIMER:
               MOV A,#00H
        LOOP:
               MOV P0,A          ;  數碼管顯示數A
          CALL DELAY
          ADD A,#1          ;  累加器加1操作
          DA A              ;      十進制調整
          CJNE A,#21H,LOOP  ; 判斷是否計時到21
          SETB BUZZER
          CALL DELAY
          JMP START

        DELAY: 延時1秒子程序
               MOV R3,#10
        D3:
               MOV R4,#200
        D4:
               MOV R5,#250
          DJNZ R5,$
          DJNZ R4,D4
          DJNZ R3,D3
          RET                 ;        子程序結束標志
          
          END
         

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮