Thông báo

Collapse
No announcement yet.

Từ mô phỏng ra thực tế cho con DS1307

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Từ mô phỏng ra thực tế cho con DS1307

    Em làm cái mạch đồng hồ số DS1307, nhưng ko hiểu sao khi mô phỏng mà có gắn thêm 2 điện trở kéo lên cho 2 chân SCL và SDA là cái đồng hồ chạy như rùa, đôi khi còn tắt luôn, tháo ra thì chạy bình thường, vậy với mô phỏng như thế thì có khả năng ra thực tế chạy đc ko, hay đó là do lỗi lập trình, anh chị nào hứng thú thì comment em up sơ đồ và code lên

    code và mạch mô phỏngdong ho so.zip
    Anh nào có thể xem code và cho em biết lý do tại sao mạch mô phỏng của em gắn điện trở kéo lên cho SCL và SDA lại ko chạy đc ko
    Last edited by ylotus; 16-03-2011, 23:55.

  • #2
    Mình cũng bị như vậy. Nên trong mô phỏng cũng bỏ luôn 2 con trở treo lên Vcc đi

    Comment


    • #3
      bỏ 2 cái điện trở treo là ok thôi !

      Comment


      • #4
        Hix bỏ là bỏ trong mô phỏng thui chứ ra thực tế thì vẫn phải gắn chứ phải ko huynh, em giải quyết đc vấn đề điện trở rồi nhưng mà mạch vẫn ko chạy
        Em có 1 câu hỏi là trong code trên khi em READ RTC thì em READ từng thanh ghi một chứ ko READ 1 loạt các giá trị giờ phút giây, như vậy thì ra thực tế có chạy đc ko, em thấy cũng có mấy anh cũng lập trình như vậy mà ko biết đúng ko, câu này em hỏi nhiều rồi mà chưa thấy ai trả lời

        Comment


        • #5
          để vẫn bình thường mà có sao đâu

          Comment


          • #6
            Nguyên văn bởi ylotus Xem bài viết
            Em làm cái mạch đồng hồ số DS1307, nhưng ko hiểu sao khi mô phỏng mà có gắn thêm 2 điện trở kéo lên cho 2 chân SCL và SDA là cái đồng hồ chạy như rùa, đôi khi còn tắt luôn, tháo ra thì chạy bình thường, vậy với mô phỏng như thế thì có khả năng ra thực tế chạy đc ko, hay đó là do lỗi lập trình, anh chị nào hứng thú thì comment em up sơ đồ và code lên

            code và mạch mô phỏng[ATTACH]27915[/ATTACH]
            Anh nào có thể xem code và cho em biết lý do tại sao mạch mô phỏng của em gắn điện trở kéo lên cho SCL và SDA lại ko chạy đc ko
            lỗi này do bạn luôn cập nhập giá trị giờ phút giây
            khắc phục:
            1:tạo xung 1hz tai chân 7(ds1307) cứ 1s mới cập nhập timer
            2:xem code sửa lại
            Code:
            ;TIME CLOCK  FOR AT89C51 AND 1307
            ;PROGRAMER :PCT
            ;PCTCOMPUTER - 0918227077
            ;$MOD51
            ;=====================================    
            ;KHAI BAO
            
                GIAY             DATA    60H
                  PHUT             DATA    61H
                  GIO                  DATA    62H
                  DONVI_GIAY       DATA    63H
                  CHUC_GIAY        DATA    64H
                  DONVI_PHUT       DATA    65H
                  CHUC_PHUT        DATA    66H
                  DONVI_GIO        DATA    67H
                 CHUC_GIO         DATA    68H
                tan_so          DATA    69H
                LED_GIAY           BIT        P2.0
                LED_C_GIAY         BIT        P2.1
                 LED_PHUT           BIT        P2.2
                LED_C_PHUT         BIT        P2.3
                LED_GIO           BIT        P2.4
                LED_C_GIO         BIT        P2.5
            ;--------I2C-------
                SCL            BIT    P3.0
                SDA            BIT    P3.1
                LED_DATA        EQU    P0
                BYTE_W            EQU    11010000B
                BYTE_R            EQU    11010001B
                ADD_REG            EQU    73H
                DATA_RTC        EQU    74H
                DATA_GIAY        EQU    75H
                DATA_PHUT        EQU    76H
                DATA_GIO        EQU    77H
            
                
                ORG    0000H
            
            MAIN:
                
                MOV    GIAY,#0
                MOV    PHUT,#0
                MOV    GIO,#0
                MOV    TMOD,#10H
                MOV    ADD_REG,#7
                MOV    DATA_RTC,#0
                MOV    DATA_GIAY,#00
                MOV    DATA_PHUT,#00
                MOV    DATA_GIO,#8
                MOV    tan_so,#0x90//tao gia tri 1hz tai chan 7
                MOV    A,#00H
                MOV    LED_DATA,#00H
            
            
            ;**********WRITE_CLOCK**********
            WRITE_CLOCK:
                SETB    SCL    ;KIEM TRA BUS ROI
                SETB    SDA
                CALL    START_CLOCK
            
                MOV    A,#BYTE_W
                CALL    TACH_BYTE
            
                        ;4 HANG KT ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
            
                MOV    A,ADD_REG
                CALL    TACH_BYTE
            
                        ;4 HANG KT ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
            
                MOV    A,tan_so
                CALL    TACH_BYTE
            
                        ;4 HANG KT ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
              CALL    STOP_CLOCK
              ;
                MOV    ADD_REG,#0
                SETB    SCL    ;KIEM TRA BUS ROI
                SETB    SDA
                CALL    START_CLOCK
            
                MOV    A,#BYTE_W
                CALL    TACH_BYTE
            
                        ;4 HANG KT ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
                MOV    A,DATA_PHUT
                CALL    TACH_BYTE
            
                        ;4 HANG KT ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
            
                MOV    A,DATA_GIO
                CALL    TACH_BYTE
            
                        ;4 HANG KT ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
            
            
                CALL    STOP_CLOCK
            
            
            ;********CHUONG TRINH NHAN DU LIEU VA HIEN THI***********
            RECEIVE_DATA:
            
            ;========READS SECONDS=============
            READ_SEC:
                    MOV         ADD_REG,#00h
                    LCALL      READ_RTC
                    MOV     GIAY,DATA_RTC
                    
            
            ;========READS MINUTES=============
            READ_MIN:
                    MOV         ADD_REG,#01h
                    LCALL       READ_RTC
                    MOV     PHUT,DATA_RTC        
                    
            
            ;========READS HOURS=============
            READ_HOUR:
                    MOV         ADD_REG,#02h
                    LCALL       READ_RTC
                    MOV     GIO,DATA_RTC    
                                
            ;***********HIEN THI RA LED***********
                mov r2,#100;thêm đoạn vòng lặp này
             abc:
                CALL        HIENTHI_S
                CALL        HIENTHI_P
                CALL        HIENTHI_G
                djnz r2,abc
                LJMP        RECEIVE_DATA
                    
            ;*****CHUONG TRINH DOC DU LIEU TU 1307*****
            READ_RTC:
                SETB    SCL    ;KIEM TRA BUS ROI
                SETB    SDA
                CALL    START_CLOCK
            
                MOV    A,#BYTE_W
                CALL    TACH_BYTE
            
                        ;4 HANG ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
            
                MOV    A,ADD_REG
                CALL    TACH_BYTE
            
                        ;4 HANG ACK
                SETB    SCL
                JB    SDA,$
                CLR    SCL
            
                CALL    STOP_CLOCK
            
            
            
                SETB    SCL    ;KIEM TRA BUS ROI
                SETB    SDA
                CALL    START_CLOCK
            
                MOV    A,#BYTE_R
                CALL    TACH_BYTE
                
                        ;4 HANG ACK
                SETB    SCL    
                JB    SDA,$
                CLR    SCL
            
                
                CALL    SEND_DATA
                    
                SETB    SCL    ;NOT ACK
                SETB    SDA
                
            
                CALL    STOP_CLOCK
                RET
            
            
            ;--------------CTR CON HIENTHI_RTC---------------
            ;**********************************
                
            HIENTHI_S:
                CALL    SWAP_GIAY
            
                MOV    DPTR,#MALED
                MOV    A,DONVI_GIAY
                MOVC    A,@A+DPTR
                MOV    LED_DATA,A
                SETB    LED_GIAY
                CLR    LED_C_GIAY
                CALL    DELAY
                CLR    LED_GIAY
                
                MOV    DPTR,#MALED
                MOV    A,CHUC_GIAY
                MOVC    A,@A+DPTR
                MOV    LED_DATA,A
                SETB    LED_C_GIAY
                CALL    DELAY
                CLR    LED_C_GIAY
                RET
            
            HIENTHI_P:
                CALL    SWAP_PHUT
            
                MOV    DPTR,#MALED
                MOV    A,DONVI_PHUT
                MOVC    A,@A+DPTR
                MOV    LED_DATA,A
                SETB    LED_PHUT
                CLR    LED_C_PHUT
                CALL    DELAY
                CLR    LED_PHUT
                
                MOV    DPTR,#MALED
                MOV    A,CHUC_PHUT
                MOVC    A,@A+DPTR
                MOV    LED_DATA,A
                SETB    LED_C_PHUT
                CALL    DELAY
                CLR    LED_C_PHUT
                RET
            
            HIENTHI_G:
                CALL    SWAP_GIO
            
                MOV    DPTR,#MALED
                MOV    A,DONVI_GIO
                MOVC    A,@A+DPTR
                MOV    LED_DATA,A
                SETB    LED_GIO
                CLR    LED_C_GIO
                CALL    DELAY
                CLR    LED_GIO
                
                MOV    DPTR,#MALED
                MOV    A,CHUC_GIO
                MOVC    A,@A+DPTR
                MOV    LED_DATA,A
                SETB    LED_C_GIO
                CALL    DELAY
                CLR    LED_C_GIO
                RET
            
            
            
            ;**********CHUONG TRINH TACH BYTE***********
            TACH_BYTE:
                MOV    R7,#8
            GG:    RLC    A
                MOV    SDA,C
                SETB    SCL
                CLR    SCL
                DJNZ    R7,GG
                RET
            
            ;----------DUA DU LIEU RA MANG I2C--------------
            SEND_DATA:
                MOV    R7,#8
                CLR    SCL
            DG:    MOV    C,SDA
                SETB    SCL    
                CLR    SCL
                RLC    A
                DJNZ    R7,DG
            
                MOV    DATA_RTC,A
                RET
            
            ;---------START-------------
            START_CLOCK:
                SETB    SCL    ;trong khi SCL=1
                NOP
                SETB    SDA    ;SDA tu 1
                NOP
                CLR    SDA    ;xuong 0
                NOP
                CLR    SCL
                RET
            
            ;---------STOP-----------
            STOP_CLOCK:
                SETB    SCL    ;trong khi SCL=1
                NOP
                CLR    SDA    ;SDA tu 0
                NOP
                SETB    SDA    ; len 1
                NOP
                CLR    SCL
                RET
            
            ;**********CHUONG TRINH DOI SANG MA BCD************
            SWAP_GIAY:
                MOV     A,GIAY                
                ANL    A,#00001111B                                                  
                MOV     DONVI_GIAY,A 
                MOV    A,GIAY      
                SWAP    A
                ANL    A,#00001111B        
                MOV     CHUC_GIAY,A    
                RET
            
            SWAP_PHUT:
                MOV     A,PHUT                
                ANL    A,#00001111B                                                  
                MOV     DONVI_PHUT,A 
                MOV    A,PHUT      
                SWAP    A
                ANL    A,#00001111B        
                MOV     CHUC_PHUT,A    
                RET        
            
            SWAP_GIO:
                MOV     A,GIO                
                ANL    A,#00001111B                                                  
                MOV     DONVI_GIO,A 
                MOV    A,GIO     
                SWAP    A
                ANL    A,#00001111B        
                MOV     CHUC_GIO,A    
                RET                
            
            
            DELAY:
                clr    tr1
                mov    th1,#high(-500)
                mov    tl1,#low(-500)
                setb    tr1
                jnb    tf1,$
                clr    tf1
                ret
            MALED:
            DB    03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
                END
            Attached Files
            Last edited by tdm; 30-04-2011, 10:29.
            |

            Comment


            • #7
              do protues phải mô phỏng thêm gì đó khi gắn thêm 2 điện trở nên lâu đó bạn chứ không phải do code đâu, ra ngoài bạn cứ gắn thì chạy bình thường.

              Comment


              • #8
                các pro cho em hỏi code trên của bác pct là viết cho phần cứng dùng led anot hay catot chung vậy
                .......SPKTNĐ////tandatvip@gmail.com...........

                Comment


                • #9
                  anot hay katot quan trọng gì, đọc hiểu code thì dù có anot hay katot đều có thể tự edit đc....
                  thông thường là anot phổ biến
                  Website chính thức đổi địa chỉ website thành
                  Mời các bạn ghé thăm !!!

                  Comment


                  • #10
                    Em gửi bác code + mô phỏng đồng hồ sử dungl DS1307, đầy đủ chức năng hẹn giờ, chỉnh giờ. Bác tự tìm hiểu nha
                    MO PHONG DS1307.rar

                    Comment

                    Về tác giả

                    Collapse

                    ylotus Tìm hiểu thêm về ylotus

                    Bài viết mới nhất

                    Collapse

                    Đang tải...
                    X