1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Cách sử dụng rom thời gian thực ds12c887

Chủ đề trong 'Điện - Điện tử - Viễn thông' bởi nguyenvubao, 24/06/2004.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. nguyenvubao

    nguyenvubao Thành viên mới

    Tham gia ngày:
    05/06/2002
    Bài viết:
    45
    Đã được thích:
    0
    Cách sử dụng rom thời gian thực ds12c887

    Cách dùng rom thời gian thực DS12c887:
    Bấy lâu nay chúng ta làm đồng hồ hiện số điện tử vớI VDK thường phảI tính toán thời gian delay ,cần phảI lo chúng di trễ đi sớm, nay với con DS12C887 chúng ta ko cần quan tâm điều này.và càng ko cần lo khi bi cúp điện vì bên trong con này co sẵn nguồn nuôi, đảm bảo no chạy trong 10 năm.Và nó ko chỉ ứng dụng trong việc làm đồng hồ mà cả việc ứng dụng trong các thiết bị điện tử có liên quan đến ngày tháng năm như theo dõi số lần sử dụng máy trong ngày , trong tháng trong năm để cung cấp thông tin cho việc bảo hành.

    Tôi viếc bài viết này mong chia sẽ kinh nghiêm của mình vớI các bác trong việc học tập và thiết kế mạch vớI VDK

    Giá của con này hơi đắt 60.000VND nhưng theo tôi thì dùng nó cũng đáng đồng tiền.vì bên trong nó còn có cả ram mở rộng
    Và t ôi hướng dẫn bằng ngôn ngữ Basic
    Các chân từ AD0 đến AD7 là các chân dữ liệu chúng ta có thể kết nốI vớI bất kì port nào của VDK ở họ 8051 nên dùng port 0
    Chân CS là chân chọn chíp , chọn=0
    Chân RW là chân cho phép ghi ta kết nốI vớI 1 bit của VDK ví dụ P1.1
    P1.1=0 là cho phép ghi
    P1.1=1 ko cho phép ghi
    Chân DS là chân cho phép dọc ta kết nốI vớI 1 bit của VDK ví dụ P1.2
    P1.2=0 là cho phép dọc
    P1.2=1 ko cho phép dọc
    Chân AS là chân dùng để chốt địa chỉ ta kết nốI vớI 1 bit của VDK ví dụ P1.3
    P1.3=0 chốt địa chỉ
    Khi chúng ta muốn ghi đọc vớI địa chỉ nào thì chúng ta xuất ra P0 giá trị củ đ ịa chỉ đó và sao đó ta cho ch ân AS =0 để chốt lạI và ta cho chân RW =0 Ds=1để ghi Vào địa chỉ này hoặc RW=1 DS=0 để đọc từ địa chỉ này


    ví dụ đọc giá trị của địa chỉ 0 của ô nhớ vào biến dulieu
    P0=0
    P1.3=0
    P1.2=0
    P0=255
    Dulieu=P0
    Lúc này biến dulieu sẽ mang giá tri của ô nhớ ở địa chỉ 0
    ví dụ ghi giá trị của địa chỉ 10 của ô nhớ vào biến dulieu
    P0=10
    P1.3=0
    P1.1=0
    P0=60
    Lúc này ô nhớ ở địa chỉ 10 sẽ chứa giá trị là 60
    Bạn nên tham khảo bảng địa chỉ của các thanh ghi thờI gian trong sơ đồ chân đầy đủ

    Và các chức năng cụ thể củ bít của các thanh ghi xin các bạn xem sơ đồ chân gởI kèm












    DS12C887 c ó 4 thanh ghi điều khiển
    Thanh ghi A ở địa chỉ 10
    Thanh ghi B ở địa chỉ 11
    Thanh ghi C ở địa chỉ 12
    Thanh ghi D ở địa chỉ 13
    chúng ta cần quan tâm đến các bít của các thanh ghi điều khiển
    bít thứ 7 của thanh ghi D dùng để mở pin nộI trong IC giúp nó vẫn cập nhật thờI gian vào các thanh ghi thờI gian khi cúp điện.
    bít 7 (UIP) của thanh ghi A là bit chỉ đọc.khi bít này =1 thì ta mớI có thể đọc thờI gian từ các thanh ghi ra.
    bít 7 (UIP) của thanh ghi B là bít cho phép ta sữa đổI thờI gian khi muốn sữa thờI gian lai ta phai cho bít nay =1 và ghi thờI gian cần thay đổi vào các thanh ghi thờI gian, khi đổI xong ta phai cho bít này =0 để cho các thanh ghi thoi gian được cập nhât lạI bình thường.
    Sao đây là sơ đồ mạch đồng hồ ví dụ và chưong trình mẫu dùng bascom8051
    đây chỉ là sơ đồ của 12c887 giao tiếp v ớI 89C51 thôi ko có phần xuất. các bạn có thể thêm vào phần xuất ra led 7 đoạn hay LCD là tùy mình chương trìh chỉ gồm các hàm xuất nhập theo phần cứng này cho con ds12c887 thôi
    Declare Sub Doc(vitri As Byte)
    Declare Sub Ghi(vitri As Byte , Gt As Byte)
    Dim Dulieu As Byte
    Dim Vitri As Byte
    Dim Gt As Byte
    Dim Gio As Byte
    Dim Phut As Byte
    Dim Giay As Byte
    Dim Ngio As Byte
    Dim Nphut As Byte

    Config Timer0 = Timer , Gate = Internal , Mode = 2 ''''timer configuration

    ''''Timer0 let''''s use timer 0
    ''''Gate = Internal no external interrupt
    ''''Mode = 2 8 bit auto reload

    On Timer0 Ngattimer ''''interrupt routine
    Load Timer0 , 255 ''''loads value 250 µsec into timer0
    Priority Set Timer0
    Waitms 10
    Enable Interrupts ''''Enable Interrupts
    Enable Timer0 ''''Enable timer0 ''''unlock
    Start Timer0

    Chonchip Alias P1.0
    Ale Alias P1.3 ''''chot dia chi(AS)
    Rw Alias P1.1 ''''cho phep ghi
    Ds Alias P1.2






    ''''mo pin
    Call Ghi(13 , 128)

    Do
    Ngio = 10
    Nphut = 30

    Loop
    End

    Ngattimer:

    Call Docthoigian


    Return


    Sub Docthoigian
    Call Doc(0)
    Giay = Dulieu
    Call Doc(2)
    Phut = Dulieu
    Call Doc(4)
    Gio = Dulieu
    End Sub

    Sub Doithoigian
    Call Ghi(11 , &B10000110)
    Call Ghi(2 , Nphut)
    Call Ghi(11 , &B00000110)


    Call Ghi(11 , &B10100100)
    Call Ghi(4 , Ngio)
    Call Ghi(11 , &B00000110)



    End Sub

    Sub Ghi(vitri As Byte , Gt As Byte)
    Chonchip = 0
    Ale = 1
    Ds = 1
    Rw = 1
    P0 = Vitri
    Ale = 0
    P0 = 255
    Rw = 0
    P0 = Gt
    Rw = 1
    Ale = 1
    P0 = 255
    Chonchip = 1
    End Sub

    Sub Doc(vitri As Byte)
    Chonchip = 0
    Ale = 1
    Ds = 1
    Rw = 1
    P0 = Vitri
    Ale = 0
    P0 = 255
    Ds = 0
    Dulieu = P0
    Ds = 1
    Ale = 1
    P0 = 255
    Chonchip = 1
    End Sub

    Tôi load sơ đồ và chương trình lên sao ko được vậy mấy bác
  2. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Mình xin giới thiệu qua về ds12887 hộ NguyenVuBao.
    Đây là con IC đồng hồ thời gian thực, lưu giữ thời gian hiện tại,đã được sử dụng trong các mainboard của Intel.
    Là IC do Maxim-Dallas sản xuất. Dữ liệu được lưu trữ trong 12 năm không cần nguồn nuôi, do bên trong đã có pin Lithium.
    IC này cho phép truy nhập RAM trong của nó (128 byte) theo bus kiểu Intel hoặc Motorola thông qua chân MOT, nếu MOT=1, thì ds12887 thì hỗ trợ bus Motorola, còn =0 hoặc NC thì hỗ trợ theo bus Intel.
    Địa chỉ và dữ liệu được truy nhập qua AD0-AD7 theo kiểu phân kênh. Địa chỉ được chốt bằng sườn xuống của xung cấp vào chân AS.
    -Bus theo Motorola: Tín hiệu RD và WR được truy nhập mức tín hiệu qua chân RD/WR, chân DS xác định thao tác đọc hay là ghi.
    -Bus theo Intel: Chân DS là chân ghi và chân RD/WR là chân đọc.
  3. TuLa

    TuLa Thành viên quen thuộc

    Tham gia ngày:
    24/10/2002
    Bài viết:
    413
    Đã được thích:
    0
    Tớ vừa dùng Google search được trang khá hay về DS12c887 : http://members.elysium.pl/ytm/html/rtcds12c887.html
    Và sau đây là link để download file datasheet của DS12c887 dạng .pdf : http://www.mcu-memory.com/datasheet/maxim/dallas/DS12C887.pdf
    Tớ chưa dùng con này lần nào, nhưng xem ra khá hay đấy. Không biết ở Việt Nam mình, nó được bán ở đâu nhỉ ?
  4. opentdoors

    opentdoors Thành viên mới

    Tham gia ngày:
    09/01/2004
    Bài viết:
    1.205
    Đã được thích:
    0
    Bác giới thiệu 1trang rất hay. Còn DS12887 thì ở SG bán nhiều lắm, em vừa mua, vừa tháo .

Chia sẻ trang này