Thông báo

Collapse
No announcement yet.

Ds1307

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

  • Mô phỏng protes chương trình đồng hồ chạy được khoảng 1 lúc đúng sau đó nhảy lung tung. Khi dừng chương trình và chạy lại thì tiếp tục chạy đúng và cũng 1 lúc lại nhảy linh tinh. Anh nào biết nó bị sao không ah ? Có phải tràn bộ nhớ không ah ?

    Comment


    • uhm. ko ai có ý kiến gì góp ý vậy ?
      Thui tự nghiên cứu vậy ////

      Comment


      • Nguyên văn bởi quytho Xem bài viết
        Mô phỏng protes chương trình đồng hồ chạy được khoảng 1 lúc đúng sau đó nhảy lung tung. Khi dừng chương trình và chạy lại thì tiếp tục chạy đúng và cũng 1 lúc lại nhảy linh tinh. Anh nào biết nó bị sao không ah ? Có phải tràn bộ nhớ không ah ?
        số bạn đọc ra từ DS1307 là mã hex còn khi hiển thị là mã thập phân nên bạn tưởng nó nhảy lung tung đấy. Lần đầu mình làm cũng gặp vấn đề này: vd số giây nó đếm từ 0 đến 9 rồi nhảy lên 16 đếm đến 25 rồi nhảy luôn 32.
        Thực ra khi bạn đọc byte lưu số liệu giây thì 4 bit đầu là đơn vị giây, 4 bit sau là chục giây. Với phút và giờ cũng thế bạn chỉ cần tách byte số liệu thành 2 nửa và hiển thị từng nửa một là được.
        Cty tnhh thiết bị điện - điện tử công nghiệp: 0437821690 / 0988.775.900
        Thiết kế hệ thống điện điều khiển
        Sửa chữa INVERTER, DRIVER , PLC, UPS ...!

        Comment


        • ko được bạn ơi ! Khi mình mô phỏng : lúc đầu chạy cũng ko đúng thời gian cài đạt. Cho chạy lại là được rùi nhưng khi làm mạch thật vẫn bị loạn. Anh em nào gặp trường hợp đó chưa, cho mình ý kiến với !
          Thank !!!!!

          Comment


          • Nguyên văn bởi quytho Xem bài viết
            ko được bạn ơi ! Khi mình mô phỏng : lúc đầu chạy cũng ko đúng thời gian cài đạt. Cho chạy lại là được rùi nhưng khi làm mạch thật vẫn bị loạn. Anh em nào gặp trường hợp đó chưa, cho mình ý kiến với !
            Thank !!!!!
            Loạn như thế nào? bạn post sơ đồ và ctr lên thì mới có cái mà test chứ nói ko sao biết bị chỗ nào?

            Comment


            • ds1307+lcd

              nho anh em giup do=================>
              ==============================>code va mach o day

              Comment


              • ds1307+lcd

                nho anh em giup nhe ===========================>
                Attached Files

                Comment


                • muốn hiển thị thứ thì như thế nào nhỉ.
                  E làm mãi ko được !

                  Comment


                  • Sao không thây thay đổi giờ vậy..???

                    code của bạn mình mophong chỉ hiện thị ý nguyên như này,không có thay đổi thời gian theo máy ds1307
                    Attached Files

                    Comment


                    • Sao hiện thị giờ không đúng, và đứng im vậy...???

                      Nguyên văn bởi phong25_2 Xem bài viết
                      hehe, cai mach no chay tot roi, 2 điện trở kéo lên e cũng có mắc, nhưng nó sao sao ấy, giog như bị nhiễu, e gắn thêm 2 con 4k7 nữa là chạy ngon luôn, đây là ctrinh rất cơ bản, xin post lên cho các bạn muốn làm về 1307 tham khảo:

                      #asm
                      .equ __lcd_port=0x1B ;PORTA
                      .equ __i2c_port=0x18
                      .equ __sda_bit=0
                      .equ __scl_bit=1
                      #endasm
                      #include <mega16.h>
                      #include <ds1307.h>
                      #include <delay.h>
                      #include<lcd.h>

                      void main(void) {
                      unsigned char h,m,s,x,y;

                      i2c_init();
                      lcd_init(16);
                      rtc_init(0,0,0);

                      i2c_start();
                      i2c_write(0xd0);
                      i2c_write(0);
                      i2c_write(0);
                      i2c_stop();

                      rtc_set_time(0,0,0);
                      lcd_gotoxy(0,0);
                      lcd_putsf("REAL TIME CLOCK!");

                      while (1)
                      {
                      rtc_get_time(&h,&m,&s);
                      lcd_gotoxy(4,1);

                      x=h/10;
                      y=h%10;
                      lcd_putchar(x+0x30);
                      lcd_putchar(y+0x30);
                      lcd_putsf(":");

                      x=m/10;
                      y=m%10;
                      lcd_putchar(x+0x30);
                      lcd_putchar(y+0x30);
                      lcd_putsf(":");

                      x=s/10;
                      y=s%10;
                      lcd_putchar(x+0x30);
                      lcd_putchar(y+0x30);

                      delay_ms(200);
                      };
                      }
                      code của bạn mình mô phỏng thấy lỗi gi mà không chạy dc thế chỉ hiên thị như hình dưới đây thôi, không thay đổi gi cả,, ??? sao nhỉ???
                      Attached Files

                      Comment


                      • có ai giúp minh với.sao mình lập trình với ds1307 mà no không chạy .sử dụng atmega16l.mạch mô phỏng và code cac bác xem giùm nhé;[http://www.mediafire.com/?8zuajo70gebsto8]có gi gửi vào gmail nhé.thank may bac nhiều:trunghaudn@gmail.com
                        /************************************************** ***
                        This program was produced by the
                        CodeWizardAVR V2.03.4 Standard
                        Automatic Program Generator
                        © Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
                        http://www.hpinfotech.com

                        Project :
                        Version :
                        Date : 12/20/2010
                        Author :
                        Company :
                        Comments:


                        Chip type : ATmega16L
                        Program type : Application
                        Clock frequency : 4.000000 MHz
                        Memory model : Small
                        External RAM size : 0
                        Data Stack size : 256
                        ************************************************** ***/

                        #include <mega16.h>
                        #include <delay.h>

                        // I2C Bus functions
                        #asm
                        .equ __i2c_port=0x15 ;PORTC
                        .equ __sda_bit=0
                        .equ __scl_bit=1
                        #endasm
                        #include <i2c.h>

                        // DS1307 Real Time Clock functions
                        #include <ds1307.h>

                        //khai bao nut nhan
                        #define nut_tang PINA.1
                        #define nut_giam PINA.2
                        #define nut_chon PINA.3
                        #define nut_thoat PINA.4
                        unsigned char m,h,day,month=0,year,led_7s,nhiet_do=78,s ;
                        unsigned char ms[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6 F};
                        unsigned int Addr[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
                        void cai_dat()
                        {
                        while (nut_thoat)
                        {
                        if(!nut_chon)led_7s++;
                        if(led_7s<=5)
                        {
                        if(led_7s==1) //cai min
                        {
                        if(!nut_tang){
                        if( m==59)m=0;
                        else m++;}
                        delay_ms(50);
                        if(!nut_giam){
                        if(m==0)m=59 ;
                        else m--;}
                        delay_ms(50);

                        PORTD=Addr[2];
                        PORTB=ms[m/10];//min chuc
                        delay_ms(10);
                        PORTD=Addr[3];
                        PORTB=ms[m%10];//min don vi
                        delay_ms(10);
                        }
                        if(led_7s==2)// cai hour
                        {
                        if(!nut_tang){
                        if( h==12)h=0;
                        else h++; }
                        delay_ms(50);
                        if(!nut_giam){
                        if( h==0)h=12;
                        else h--;}
                        delay_ms(50);
                        PORTD=Addr[0];
                        PORTB=ms[h/10];//hour chuc
                        delay_ms(10);
                        PORTD=Addr[1];
                        PORTB=ms[h%10];//hour don vi
                        delay_ms(10);
                        }
                        if(led_7s==3)// cai day
                        {
                        if(!nut_tang){
                        if( day==31)day=0;
                        else day++; }
                        delay_ms(50);
                        if(!nut_giam){
                        if( day==0)day=31;
                        else day--;}
                        delay_ms(50);
                        PORTD=Addr[4];
                        PORTB=ms[day/10];//day chuc
                        delay_ms(10);
                        PORTD=Addr[5];
                        PORTB=ms[day%10];//day don vi
                        delay_ms(10);
                        }
                        if(led_7s==4)//cai month
                        {
                        if(!nut_tang){
                        if( month==12)month=0;
                        else month++; }
                        delay_ms(50);
                        if(!nut_giam){
                        if( month==0)month=12;
                        else month--;}
                        delay_ms(50);
                        PORTD=Addr[6];
                        PORTB=ms[ month/10];// month chuc
                        delay_ms(10);
                        PORTD=Addr[7];
                        PORTB=ms[ month%10];// month don vi
                        delay_ms(10);
                        }
                        if(led_7s==5)//cai year
                        {
                        if(!nut_tang){
                        if( year==99)year=0;
                        else year++; }
                        delay_ms(50);
                        if(!nut_giam){
                        if( year==0)year=99;
                        else year--;}
                        PORTD=0xff;
                        delay_ms(50);
                        PORTC=Addr[5];
                        PORTB=ms[ year/10];// year chuc
                        delay_ms(10);
                        PORTC=Addr[4];
                        PORTB=ms[ year%10];//year don vi
                        delay_ms(10);
                        }
                        // PORTC=Addr[7];
                        // PORTB=ms[ led_7s];
                        // delay_ms(10);
                        }
                        else led_7s=0;
                        PORTC=0xff;
                        PORTB=0x00;
                        delay_ms(50);


                        }

                        };
                        void hien_thi()
                        {
                        PORTC=0xff;
                        PORTD=Addr[2];
                        PORTB=ms[m/10];//min chuc
                        delay_ms(1);
                        PORTD=Addr[3];
                        PORTB=ms[m%10];//min don vi
                        delay_ms(1);

                        PORTD=Addr[0];
                        PORTB=ms[h/10];//hour chuc
                        delay_ms(1);
                        PORTD=Addr[1];
                        PORTB=ms[h%10];//hour don vi
                        delay_ms(1);

                        PORTD=Addr[4];
                        PORTB=ms[day/10];//day chuc
                        delay_ms(1);
                        PORTD=Addr[5];
                        PORTB=ms[day%10];//day don vi
                        delay_ms(1);

                        PORTD=Addr[6];
                        PORTB=ms[month/10];// month chuc
                        delay_ms(1);
                        PORTD=Addr[7];
                        PORTB=ms[month%10];// month don vi
                        delay_ms(1);
                        PORTD=0xff;

                        PORTC=Addr[3];
                        PORTB=ms[ 2];// year nghin
                        delay_ms(1);
                        PORTC=Addr[2];
                        PORTB=ms[ 0];//year tram
                        delay_ms(1);
                        PORTC=Addr[5];
                        PORTB=ms[year/10];// year chuc
                        delay_ms(1);
                        PORTC=Addr[4];
                        PORTB=ms[year%10];//year don vi
                        delay_ms(1);

                        PORTD=0xff;
                        PORTC=Addr[6];
                        PORTB=ms[nhiet_do/10];// nhiet chuc
                        delay_ms(1);
                        PORTC=Addr[7];
                        PORTB=ms[nhiet_do%10];//nhiet don vi
                        delay_ms(1);

                        };
                        void main(void)
                        {
                        // Declare your local variables here

                        // Input/Output Ports initialization
                        // Port A initialization
                        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
                        // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
                        PORTA=0xff;
                        DDRA=0xFF;

                        // Port B initialization
                        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
                        // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
                        PORTB=0x00;
                        DDRB=0xFF;

                        // Port C initialization
                        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
                        // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
                        PORTC=0x00;
                        DDRC=0xFC;

                        // Port D initialization
                        // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
                        // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
                        PORTD=0x00;
                        DDRD=0xFF;

                        // Timer/Counter 0 initialization
                        // Clock source: System Clock
                        // Clock value: Timer 0 Stopped
                        // Mode: Normal top=FFh
                        // OC0 output: Disconnected
                        TCCR0=0x00;
                        TCNT0=0x00;
                        OCR0=0x00;

                        // Timer/Counter 1 initialization
                        // Clock source: System Clock
                        // Clock value: Timer 1 Stopped
                        // Mode: Normal top=FFFFh
                        // OC1A output: Discon.
                        // OC1B output: Discon.
                        // Noise Canceler: Off
                        // Input Capture on Falling Edge
                        // Timer 1 Overflow Interrupt: Off
                        // Input Capture Interrupt: Off
                        // Compare A Match Interrupt: Off
                        // Compare B Match Interrupt: Off
                        TCCR1A=0x00;
                        TCCR1B=0x00;
                        TCNT1H=0x00;
                        TCNT1L=0x00;
                        ICR1H=0x00;
                        ICR1L=0x00;
                        OCR1AH=0x00;
                        OCR1AL=0x00;
                        OCR1BH=0x00;
                        OCR1BL=0x00;

                        // Timer/Counter 2 initialization
                        // Clock source: System Clock
                        // Clock value: Timer 2 Stopped
                        // Mode: Normal top=FFh
                        // OC2 output: Disconnected
                        ASSR=0x00;
                        TCCR2=0x00;
                        TCNT2=0x00;
                        OCR2=0x00;

                        // External Interrupt(s) initialization
                        // INT0: Off
                        // INT1: Off
                        // INT2: Off
                        MCUCR=0x00;
                        MCUCSR=0x00;

                        // Timer(s)/Counter(s) Interrupt(s) initialization
                        TIMSK=0x00;

                        // Analog Comparator initialization
                        // Analog Comparator: Off
                        // Analog Comparator Input Capture by Timer/Counter 1: Off
                        ACSR=0x80;
                        SFIOR=0x00;

                        // I2C Bus initialization
                        i2c_init();

                        // DS1307 Real Time Clock initialization
                        // Square wave output on pin SQW/OUT: On
                        // Square wave frequency: 1Hz
                        rtc_init(0,1,0);

                        while (1)
                        {

                        cai_dat();
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(0);
                        i2c_write(0);
                        i2c_stop();

                        rtc_set_time(h,m,s);
                        rtc_set_date(day,month,year);

                        while(1)
                        {
                        rtc_get_time(&h,&m,&s);
                        rtc_get_date(&day,&month,&year);
                        hien_thi();
                        delay_ms(10);

                        };
                        };
                        }

                        Comment


                        • bạn nên tạo một project riêng biệt để kiểm tra con DS1307, sau đó bạn mới kiểm tra lại cái proiect hiện tại của bạn.
                          Nguyễn Xuân Thanh - 0905848525 - 01686996698
                          Chuyên: Quảng Cáo Điện Tử
                          =>Led Siêu Sáng - Board điều khiển led động
                          =>Các loại Màn Hình Led trong nhà, ngoài trời

                          Comment


                          • cho em hỏi tai sao mạch đồng hồ số của em nó bi sao ý, lúc được lúc không. sờ tay vào con thạch anh thì nó chạy nhưng bỏ ra thi lại tắt và rất hay bị nhiễu nữa. đã để con TA sát con ds1307 rồi nhưng nó vẫn vậy?????????.giúp em với.thank
                            Last edited by hochoi_89; 24-12-2010, 12:51.

                            Comment


                            • bạn thử nối mass cho vỏ thạch anh xem, mà bạn thử trên test board hay board phát triển thế, nếu ko dc nữa bạn dùng phương pháp loại trừ thử xem
                              Nguyễn Xuân Thanh - 0905848525 - 01686996698
                              Chuyên: Quảng Cáo Điện Tử
                              =>Led Siêu Sáng - Board điều khiển led động
                              =>Các loại Màn Hình Led trong nhà, ngoài trời

                              Comment


                              • Nguyên văn bởi thangktvta Xem bài viết
                                Chào các bác đã dùng con này. Em đang dùng DS1307 giao tiếp với mega88 để băm thời gian lên LED 7, không hiểu tại sao sau khi reset hoặc mất điện thì Giây nó lại nhảy về 0, giờ, phút... vẫn bình thương. Các khai báo biến cho h,m,s giống hệt nhau? Nhờ các bác giúp em. Thanks!
                                em coi lại chương trình, coi lại phần thiết lập thời gian ban đầu cho chip.
                                Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
                                Tel: 0903 702 417. Email: web:

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X