đồng hồ sử dụng ds1307

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • thanhdtk6
    Nhập môn đệ tử
    • Aug 2009
    • 5

    #1

    đồng hồ sử dụng ds1307

    mình mới lập trình với pic 16f877a và định làm chiếc đồng hồ sử dung ic ds307 nhưng không hiểu sao nó chạy được 1 lúc thì lại bị đơ ,mọi người giúp mình với
    //===========================================
    //ten chuong trinh : tao dong ho
    //nguoi thuc hien : tdtmt
    //ngay thuc hien : 21/4/2012
    //dung pic 16f877a ---thach anh 20MHz
    //===========================================
    #include <16f877a.h> //KHAI BAO THU VIEN PIC16F877A
    #device *=16 adc=10 //KHAI BAO CON TRO VA ADC
    #FUSES NOWDT, HS, NOPUT, NOPROTECT //THIET LAP CAU HINH CHO PIC
    #use delay(clock=20000000) //KHAI BAO TAN SO DAO DONG LA 20MHZ
    #use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3) //BAT CHE DO GIAO TIEP I2C
    //=======KHAI BAO DIA CHI CUA CAC CONG=======
    #byte PORTA =0x05
    #byte PORTB =0x06
    #byte PORTC =0x07
    #byte PORTD =0x08
    #byte PORTE =0X09
    //===========================================
    #byte TRISA =0x85
    #byte TRISB =0x86
    #byte TRISC =0x87
    #byte TRISD =0x88
    #byte TRISE =0x89
    //===========================================
    //KHAI BAO HANG =============================
    #BIT led1 =PORTA.0
    #BIT led2 =PORTA.1
    #BIT led3 =PORTA.2
    #BIT led4 =PORTA.3
    #BIT led5 =PORTA.4
    #BIT led6 =PORTA.5
    //============================================
    //KHAI BAO BIEN/////////////////
    int8 sec,min,hour,dow,date,month,year,i;
    int8 sec1,sec2,min1,min2,hour1,hour2,day,date1,date2,mo nth1,month2,year1,year2;
    INT8 CONST led_code[ ]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
    //cac chuong trinh con ///////////////////////
    void display();
    void convert_bcd();
    void update_time();
    //============================================
    void main()
    {
    TRISA =0X00;
    TRISD =0X00;
    TRISC =0X00;
    i=0;
    while(true)
    {
    update_time();
    convert_bcd();
    display();
    }
    }
    void update_time()
    {
    i2c_start(); //phat bit start I2C
    i2c_write(0xD0); //gui dia chi cua slave
    i2c_write(0x00); //thiet lap lai con tro - set register pointer
    i2c_stop(); //phat bit stop I2C
    I2C_start(); //phat bit start I2C
    I2C_write(0xD1); //gui lenh doc du lieu
    sec = i2c_read(1); //doc du lieu tai dia chi 0x00
    min = i2c_read(1); //doc du lieu tai dia chi 0x01
    hour = i2c_read(1); //doc du lieu tai dia chi 0x02
    dow = i2c_read(1);
    date = i2c_read(1);
    month = i2c_read(1);
    year = i2c_read(0);
    i2c_stop(); //phat bit stop I2C
    delay_us(100);
    }
    void convert_bcd()
    {
    sec1=sec & 0x0F;
    sec2=(sec & 0x70)>>4; //convert to BCD SEC
    min1=min & 0x0F;
    min2=(min & 0x70)>>4; //convert to BCD MIN
    hour1=hour & 0x0F;
    hour2=(hour & 0x30)>>4; //convert to BCD HOUR
    day=(dow & 0x07);
    date1=date & 0x0F;
    date2=(date & 0x30)>>4; //convert to BCD DATE
    month1=month & 0x0F;
    month2=(month & 0x10)>>4;//convert to BCD MONTH
    year1=year & 0x0F;
    year2=(year & 0xF0)>>4; //convert to BCD YEAR
    }
    void display()
    {
    do
    {
    // sec - min - hour
    i=i+1;
    PortD=led_code[sec1];
    led6=0;//SEC1
    delay_ms(20);
    led6=1;
    PortD=led_code[sec2];
    led5=0;//SEC2
    delay_ms(20);
    led5=1;
    //=================================
    PortD=led_code[min1];
    led4=0;//MIN1
    delay_ms(20);
    led4=1;
    PortD=Led_code[min2];
    led3=0;//MIN2
    delay_ms(20);
    led3=1;
    //==================================
    PortD=led_code[hour1];
    led2=0;//HOUR1
    delay_ms(20);
    led2=1;
    PortD=led_code[hour2];
    led1=0;
    delay_ms(20);
    led1=1;
    //==================================
    }
    while(i<=5);
    i=0;
    }
    Attached Files
    Last edited by thanhdtk6; 02-05-2012, 09:37 AM.
  • navy
    Đệ tử 2 túi
    • Jan 2007
    • 34

    #2
    Rtc

    Có thể tham khảo file attach hi vọng giúp ích cho bạn.
    Thân!
    Attached Files
    lanhnavy@gmail.com
    Mobile phone: 0974711766
    Automation

    Comment

    • navy
      Đệ tử 2 túi
      • Jan 2007
      • 34

      #3
      Rtc

      Cũng có thể ghé thăm đây tìm hiểu chi tiết về DS1307 http://hoiquandientu.com/read.php?569
      Chúc thành công!
      lanhnavy@gmail.com
      Mobile phone: 0974711766
      Automation

      Comment

      • thaihevip
        Đệ tử 1 túi
        • May 2012
        • 12

        #4
        Hiện nay mình có các mạch điện sau:
        1.Giải mã remote sony điều khiển các thiết bị điện từ xa,mạch đã chạy ngon,đã từng bán ra thị trường.
        2.Giải mã pt2262/pt2272 điều khiển thiết bị từ xa bằng sóng RF
        3.Giải mã pt2248/pt2249 điều khiển thiết bị từ xa dùng sóng hồng ngoại
        4.Lập trình đồng hồ có phím chỉnh giờ,phút,giây,hẹn giờ.
        5.Lập trình điều khiển led đơn,tạo và thay đổi cường độ sáng cho led,lập trình sáng dồn,sáng chạy,sáng dần 32 led,...
        6.Lập trình điều khiển hệ thống đèn giao thông
        7.Lập trình chạy chữ trên led ma trận
        8.Lâp trình giao tiếp máy tính
        9.Lập trình và làm mạch điều khiển xe từ xa,điều khiển động cơ DC
        10.Lập trình và điều khiển volume từ xa
        11.Dạy vẽ hình ảnh,dạng sóng,đồ thị hàm số,hệ mặt trời và các hành tinh đang chuyển động trên Pascal,C,C++,C#
        12.Dạy lập trình vi điều khiển
        13.Dạy lập trình PLC bằng ngôn ngữ LAD
        14.Dạy vẽ mạch in trên phần mềm protues,vẽ bằng tay,vẽ tự động,tạo chân linh kiện
        15.Làm mạch nguồn hạ áp trực tiếp không dùng biến áp
        16.Lập trình làm đồng hồ thời gian thực giao tiếp ds1307,làm đồng hồ vạn niên,lập trình trên 8051 và pic.
        ...
        số phone liên hệ: 0166.495.1093

        Comment

        • nhu.ta532
          Nhập môn đệ tử
          • Mar 2012
          • 4

          #5
          16.Lập trình làm đồng hồ thời gian thực giao tiếp ds1307,làm đồng hồ vạn niên,lập trình trên 8051 và pic.
          ...
          chia sẻ cái này được không bạn

          Comment

          • pstin
            Đệ tử 7 túi
            • Jul 2010
            • 190

            #6
            Nguyên văn bởi nhu.ta532 View Post
            16.Lập trình làm đồng hồ thời gian thực giao tiếp ds1307,làm đồng hồ vạn niên,lập trình trên 8051 và pic.
            ...
            chia sẻ cái này được không bạn
            Cái con 8051 quá "lạc hậu" rồi!!!!,...dùng để quảng cáo led cho "rẻ tiền" mới hiệu quả thôi!!!...
            Ứng dụng "cao" một xíu thật là phiền phức!.

            ==> Lưu ý là con DS1307 "dỏm" chạy sai giờ thực, một ngày sai vài giây, "chơi chiêu thì cũng bị sai 0.mấy giây!!!,.. làm đồng hồ vạn niên thì hơi "khó coi"!!!..!.
            Con DS "xịn" thì cũng hơi mắc tiền.

            Tốt hơn hết là dùng con DS12C887 cho chắc!, dùng con vi điều khiển nào viết giao tiếp cũng dễ!.

            Comment

            Working...