新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 高精度RTC SD2403AP在智能路燈控制器上的運用

        高精度RTC SD2403AP在智能路燈控制器上的運用

        作者: 時間:2008-11-06 來源: 收藏

          時間報警允許寄存器的使能位是用于確定哪些時間報警寄存器(秒、分鐘等)需要與寄存器之間作比較。當運行時,一旦被允許的報警寄存器均與對應的寄存器相匹配,就會觸發一次報警中斷,同時報警中斷標志位INTAF位被置”1”

          當設置 INTS1=0、INTS0=1時,即允許報警中斷從INT腳輸出。該報警中斷有兩種模式,即單事件報警和周期性報警, 模式的選定由控制寄存器2中的報警中斷模式位IM的值來定:
         
          IM=0 ,單事件報警,輸出低電平直至INTAF位清零 

          IM=1 ,周期性報警,輸出低電平有效、寬度為250MS的周期性脈沖直至INTAF位清零
        為清除報警中斷,可通過寫操作將控制寄存器1的INTAF位置”0”。但當ARST位置為”1”,則在控制寄存器1被讀取時,INTAF位會自動清零。

        本文引用地址:http://www.104case.com/article/89282.htm

          ●智能路燈控制器設計 

          本文采用大家使用普遍ATMEL89C51單片機做主控芯片。通過對時間的調用配合光感信號達到對路燈的開關智能控制,該系統可廣泛應用于道路燈、霓虹燈、航標燈、夜景燈、高速公路照明燈、庭院燈及所有室外照明燈具的控制,其系統框圖如下 

           

           硬件設計

               圖中,主要給出SD2403AP的具體接線電路,OUT為各位的控制信號。可接三極管后放大給繼電器輸出,從而控制路燈的開關。 

           在此設計中MCU通過P3.4,P3.5模擬IIC總線與SD2403AP進行通信,并通過INT讀出中斷信號,本設計設置的每天早上6:30(此時間可以由用戶通過KEY鍵進行修改)定時關掉OUT1路的輸出。OUT2,OUT3等由光線控制。現以OUT1的關斷做例子分析

          軟件設計 

          安排SD2403AP在06:30輸出一個低電平的信號,MCU通過輪循的方式查到此電平并設置OUT1為0,從而關斷繼電器并關段路燈等。
        這里將寫入SD2403AP的寄存器列出來,如表:

        地址

        寄存器名稱

        D7

        D6

        D5

        D4

        D3

        D2

        D1

        D0

        數值范圍

        00H

        0

        S40

        S20

        S10

        S8

        S4

        S2

        S1

        0-59

        01H

        分鐘

        0

        MN40

        MN20

        MN10

        MN8

        MN4

        MN2

        MN1

        0-59

        02H

        小時

        12_/24

        0

        H20 P/A_

        H10

        H8

        H4

        H2

        H1

        0-23

        03H

        星期

        0

        0

        0

        0

        0

        W4

        W2

        W1

        0-6

        04H

        0

        0

        D20

        D10

        D8

        D4

        D2

        D1

        1-31

        05H

        0

        0

        0

        MO10

        MO8

        MO4

        MO2

        MO1

        1-12

        06H

        Y80

        Y40

        Y20

        Y10

        Y8

        Y4

        Y2

        Y1

        0-99

        07H

        秒報警

        0

        AS40

        AS20

        AS10

        AS8

        AS4

        AS2

        AS1

        0-59

        08H

        分鐘報警

        0

        AMN40

        AMN20

        AMN10

        AMN8

        AMN4

        AMN2

        AMN1

        0-59

        09H

        小時報警

        0

        0

        AH20 AP/A_

        AH10

        AH8

        AH4

        AH2

        AH1

        0-23

        0AH

        星期報警

        0

        AW6

        AW5

        AW4

        AW3

        AW2

        AW1

        AW0

        N/A

        0BH

        日報警

        0

        0

        AD20

        AD10

        AD8

        AD4

        AD2

        AD1

        1-31

        0CH

        月報警

        0

        0

        0

        AMO10

        AMO8

        AMO4

        AMO2

        AMO1

        1-12

        0DH

        年報警

        AY80

        AY40

        AY20

        AY10

        AY8

        AY4

        AY2

        AY1

        0-99

        0EH

        報警允許

        0

        EAY

        EAMO

        EAD

        EAW

        EAH

        EAMN

        EAS

        N/A

        0FH

        CTR1

        W3

        0

        INTFA

        INTDF

        0

        W2

        0

        F

        N/A

        10H

        CTR2

        WRTC1

        IM

        INTS1

        INTS0

        FOBAT

        INTDE

        INTAE

        INTFE

        N/A

        11H

        CTR3

        ARST

        0

        TDS1

        TDS0

        FS3

        FS2

        FS1

        FS0

        N/A

        12H

        時間調整

        0

        F6

        F5

        F4

        F3

        F2

        F1

        F0

        N/A

        13H

        倒計時定時器

        TD7

        TD6

        TD5

        TD4

        TD3

        TD2

        TD1

        TD0

        0-255

        14H~1FH

        (12BYTE)

        BIT7

        BIT6

        BIT5

        BIT4

        BIT3

        BIT2

        BIT1

        BIT0

        N/A

           讀時間的時候用到的是00H——06H里面的數值,為BCD碼。 

          控制寄存器和中斷在07——13H。 

          本設計設置的中斷涉及的寄存器有08H,09H,EH,FH,10H

          部分軟件如下:

        1. 打開“軟鎖”,即設置WRTC1,WRTC2,WRTC3為1,才能寫數據。寫完數據關閉軟鎖

           TIMEWRITE_ON:
        SETB      SDA
        SETB      SCL
        LCALL   DELAY
        CLR       SDA
        LCALL  DELAY
        CLR       SCL
        LCALL  DELAY            ;I2C START
        MOV    R6,#64H
        LCALL   SEND
        MOV      R6,#10H          ;設置時鐘數據的內部起始地址為10H
        LCALL   SEND           
        MOV   R6,#80H           ;置10H的WRTC1為1
        LCALL   SEND
        CLR       SDA
        SETB      SCL
        LCALL   DELAY
        SETB      SDA
        LCALL   DELAY              ;I2C STOP
        LCALL   IICSTART           ;具體程序同上I2C START,此處略
        MOV     R6,#64H            ;發送時鐘SD2400的器件地址(寫)
        LCALL   SEND
        MOV     R6,#0FH            ;設置時鐘數據的內部起始地址為0FH
        LCALL       SEND           
        MOV     R6,#84H           ;置0FH的WRTC2。WRTC3為1
        LCALL     SEND
        LCALL     IICSTOP           ;同上,I2CSTOP      
        SEND:      MOV      A, R6               ;發送一個字節
        MOV        R2,#08H
        SEND1:      MOV    C,ACC。7
        MOV    SDA,C
        LCALL  DELAY
        SETB    SCL
        LCALL  DELAY
        CLR             SCL
        LCALL    DELAY            ;SEND A BIT
        RL     A
        DJNZ    R2,SEND1
        SETB        SDA               ;置輸入狀態
        SETB        SCL
        LCALL     DELAY
        MOV        C,SDA
        JC          ERROR
        CLR              SCL
        LCALL       DELAY
        RET                        ;READ A BIT
        ERROR:      LJMP  0000H

         

        2,寫2403的中斷控制寄存器以實現6:30輸出一個低電平
        LCALL         TIMEWRITE_ON
        LCALL     IICSTART
        MOV             R6,#64H                ;發送時鐘SD2400的器件地址(寫)
        LCALL          SEND
        MOV             R6,#10H                ;設置時鐘數據的內部起始地址為10H
        LCALL          SEND    
        MOV     R6,#92H                  ;ALARM
        LCALL     SEND
        LCALL     IICSTOP
        LCALL     IICSTART
        MOV             R6,#64H                ;發送時鐘SD2400的器件地址(寫)
        LCALL          SEND
        MOV             R6,#0EH                ;設置時鐘數據的內部起始地址為0E
        LCALL          SEND           
        MOV     R6,#06H                   ;報警允許小時,分鐘
        LCALL         SEND
        LCALL   IICSTOP              
        LCALL   IICSTART
        MOV             R6,#64H                 ;發送時鐘SD2400的器件地址(寫)
        LCALL          SEND
        MOV             R6,#08H                 ;設置分鐘報警地址
        LCALL          SEND           
        MOV    R6,#30H                     ;MINUTE
        LCALL        SEND
        MOV     R6,#06H                   ;HOUR
        LCALL        SEND   
        LCALL   IICSTOP  
        LCALL         TIMEWRITE_OFF

          ●結語 

          SD2403AP是一款實時時鐘芯片,在此智能路燈控制器中發揮著重要的作用。其芯片可以廣泛用于消費和工業領域的諸多平臺,如電子式電力測量儀(數字式電力表)、數碼相機、數碼攝像機、游戲機、DVD錄像機、便攜電話等產品

         

             
        [1]  沙占友,王彥朋,孟志永,單片機外圍電路設計,電子工業出版社,2003.1
        [2]  SD2403APIDATASHEET,深圳興威帆電子技術有限公司,2008

        晶振相關文章:晶振原理
        上拉電阻相關文章:上拉電阻原理

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 钟祥市| 开江县| 中方县| 南康市| 成都市| 嵩明县| 彩票| 牟定县| 项城市| 玉山县| 白城市| 辽宁省| 阿瓦提县| 巴中市| 七台河市| 渭源县| 九龙坡区| 阜阳市| 托里县| 南华县| 镇赉县| 华容县| 二连浩特市| 台中市| 长丰县| 宁远县| 昌平区| 陵川县| 海门市| 九江县| 泉州市| 获嘉县| 鱼台县| 灵川县| 江北区| 靖江市| 乌兰察布市| 石泉县| 得荣县| 北票市| 富平县|