Thông báo

Collapse
No announcement yet.

atmega16+ ds1307+chinh gio và phut

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

  • atmega16+ ds1307+chinh gio và phut

    nhờ anh em xem giúp mình cái code này cái, mình dùng ngắt để chỉnh giờ và phút nhưng không hiểu sao nó chạy không ổn định mặc dù mình đã chống dội bằng phần mềm rồi "delay_ms(10)"
    mong nhận dc sự giúp đỡ của anh em.


    =========================================
    chúc anh em thanh công

  • #2
    Nguyên văn bởi canhtoanyen Xem bài viết
    nhờ anh em xem giúp mình cái code này cái, mình dùng ngắt để chỉnh giờ và phút nhưng không hiểu sao nó chạy không ổn định mặc dù mình đã chống dội bằng phần mềm rồi "delay_ms(10)"
    mong nhận dc sự giúp đỡ của anh em.
    Code đâu nhỉ ?
    0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
    ||
    PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

    Comment


    • #3
      tiếp

      sr các bạn nhé. chác do mạng mình bị lối đó code và mạch đây
      #include <mega16.h>
      #include <delay.h>
      #define DATA PORTA
      #define digit0 PORTB.0
      #define digit1 PORTB.1
      #define digit2 PORTB.6
      #define digit3 PORTB.3
      #define digit4 PORTB.4
      #define digit5 PORTB.5
      #define chinh_gio PIND.2
      #define chinh_phut PIND.3
      #define hoat_dong PINB.2
      unsigned char code[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
      unsigned char h,m,s=0;
      void hienthi();
      // I2C Bus functions
      #asm
      .equ __i2c_port=0x15 ;PORTC
      .equ __sda_bit=1
      .equ __scl_bit=0
      #endasm
      #include <i2c.h>

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

      // External Interrupt 0 service routine
      interrupt [EXT_INT0] void ext_int0_isr(void)
      {
      // Place your code here
      h++;
      delay_ms(15);
      if(h>23) h=0;
      rtc_set_time(h,m,s=0);
      }

      // External Interrupt 1 service routine
      interrupt [EXT_INT1] void ext_int1_isr(void)
      {
      // Place your code here
      m++;
      delay_ms(15);
      if(m>60) m=0;
      rtc_set_time(h,m,s=0);
      }

      // External Interrupt 2 service routine
      interrupt [EXT_INT2] void ext_int2_isr(void)
      {
      // Place your code here

      }

      // Declare your global variables here

      void main(void)
      {
      DDRA=0xFF;

      PORTB=0x04;
      DDRB=0xFB;

      PORTC=0x00;
      DDRC=0x00;

      PORTD=0xFF;
      DDRD=0x00;


      // External Interrupt(s) initialization
      // INT0: On
      // INT0 Mode: Falling Edge
      // INT1: On
      // INT1 Mode: Falling Edge
      // INT2: On
      // INT2 Mode: Falling Edge
      GICR|=0xE0;
      MCUCR=0x0A;
      MCUCSR=0x00;
      GIFR=0xE0;

      // 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);
      // Global enable interrupts
      #asm("sei")

      while (1)
      {
      // Place your code here
      hienthi();
      };
      }
      //==============================
      void hienthi()
      {
      rtc_get_time(&h,&m,&s);
      DATA = code[h/10];
      digit0 = 1;
      delay_us(500);
      digit0 = 0;

      DATA = code[h%10];
      digit1 = 1;
      delay_us(500);
      digit1 = 0;

      DATA = code[m/10];
      digit2 = 1;
      delay_us(500);
      digit2 = 0;

      DATA = code[m%10];
      digit3 = 1;
      delay_us(500);
      digit3 = 0;

      }
      Attached Files
      Last edited by canhtoanyen; 26-08-2010, 10:34.

      Comment


      • #4
        không biết có phải là lúc thì chỉnh được, l không lúc thì ấn xong đèn mất luôn. Nếu thế thì giống như tôi làm ngày trước.Đấy là do lúc kiểm tra trạng thái của cổng mà không qua biến trung gian. bạn gán x=PINx sau đó kiểm tra biến x là đc.

        Comment


        • #5
          Chống dội mà lại đi dùng delay ko hay trong các ứng dụng thời gian thực cho lấm_Về phần cứng bạn cho // 1tuj 100nF với nút bấm, phần mềm phải cho 1 biến xác định nút đc ấn thực sự.


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            em làm như anh rồi nhưng vẫn không dc. dôi khi đang chỉnh phút thì giờ lại nhảy lung tung bạn ạ; tại máy mình bị sao nên o gửi file proteur lên cho bạn dc, em nghĩ chắc tại code có vẫn đề nhưng em không phát hiện ra chỗ sai. em nghĩ khi ấn nút thực hiện chưng trình ngắt thì chưng trình chính phải dừng lại nên code em viết như vậy là ổn nhưng thực tế lại khác . anh em xem hội mình cái hoặc anh em nào làm rồi thì thì cho mình xem cái
            //====================================





            dịa chỉ: canhtoandt88@yahoo.com.vn
            Last edited by canhtoanyen; 27-08-2010, 13:06.

            Comment


            • #7
              trich:không biết có phải là lúc thì chỉnh được, l không lúc thì ấn xong đèn mất luôn. Nếu thế thì giống như tôi làm ngày trước.Đấy là do lúc kiểm tra trạng thái của cổng mà không qua biến trung gian. bạn gán x=PINx sau đó kiểm tra biến x là đc.

              bạn nói cụ thể hơn dc không? mình nghi khi mình dùng chương trình ngắt thì nó không ảnh hưởng gì chứ

              Comment


              • #8
                Nguyên văn bởi canhtoanyen Xem bài viết
                trich:không biết có phải là lúc thì chỉnh được, l không lúc thì ấn xong đèn mất luôn. Nếu thế thì giống như tôi làm ngày trước.Đấy là do lúc kiểm tra trạng thái của cổng mà không qua biến trung gian. bạn gán x=PINx sau đó kiểm tra biến x là đc.

                bạn nói cụ thể hơn dc không? mình nghi khi mình dùng chương trình ngắt thì nó không ảnh hưởng gì chứ
                Lúc trước tôi làm là chỉnh giờ bằng cách kiểm tra phím chứ không dùng ngắt vì tui dùng 3 phím cơ. 1 cái để cho phép chọn chỉnh h hoặc phút, 1 phím tăng và 1 phím giảm. Lúc đầu bị lỗi không chỉnh được như thế, Sau đó thì khắc phục được bằng cách như trên.

                Comment


                • #9
                  bạn" thandieu86" ơi? thế bạn có thể cho mình cái mà bạn đã làm dc không ?làm như bạn mình nghĩ chắc là tối ưu hơn. cảm ơn bạn nhiều nhé

                  Comment


                  • #10
                    Nguyên văn bởi canhtoanyen Xem bài viết
                    bạn" thandieu86" ơi? thế bạn có thể cho mình cái mà bạn đã làm dc không ?làm như bạn mình nghĩ chắc là tối ưu hơn. cảm ơn bạn nhiều nhé
                    Được thôi. Mạch sử dụng ATMEGA8, đã bán thành sản phẩm thương mại.
                    Attached Files

                    Comment


                    • #11
                      Em cũng đang găp 1 vấn đề vơí AT16+DS1307+LCD là cái LCD của em nó cứ chạy dc khoảng vài giây là nó tắt ngóm chẳng hiện lại nữa mà em ko có LCD khác để test. Vậy nguyên nhân có pai là do LCD hay VDK? Bác nào có kinh nghiệm giúp em với.Ah em nối LCD va VDK bằng cáp mà em thử mấy cái cáp rồi nó vẫn như vậy.

                      Comment


                      • #12
                        Nguyên văn bởi mylove2002 Xem bài viết
                        Em cũng đang găp 1 vấn đề vơí AT16+DS1307+LCD là cái LCD của em nó cứ chạy dc khoảng vài giây là nó tắt ngóm chẳng hiện lại nữa mà em ko có LCD khác để test. Vậy nguyên nhân có pai là do LCD hay VDK? Bác nào có kinh nghiệm giúp em với.Ah em nối LCD va VDK bằng cáp mà em thử mấy cái cáp rồi nó vẫn như vậy.
                        LCD đã hiển thị được vài s thì không phải hỏng đâu. Kiểm tra lại xem có phải bắt nó làm việc nhiều quá không(giữa các lệnh phải cho nó nghỉ).

                        Comment


                        • #13
                          Nguyên văn bởi thandieu86 Xem bài viết
                          LCD đã hiển thị được vài s thì không phải hỏng đâu. Kiểm tra lại xem có phải bắt nó làm việc nhiều quá không(giữa các lệnh phải cho nó nghỉ).
                          Vầng. Thanks bạn nhiều. Hnay nó lại chạy tốt rồi. Em sẽ xử lí lại code.

                          Comment


                          • #14
                            cảm ơn bạn thandieu86 đã giúp đỡ nhé.! à bạn là sinh viên năm mới vậy? bạn học trương nào vây?
                            chúc cậu ngày càng pro

                            Comment


                            • #15
                              trich: Em cũng đang găp 1 vấn đề vơí AT16+DS1307+LCD là cái LCD của em nó cứ chạy dc khoảng vài giây là nó tắt ngóm chẳng hiện lại nữa mà em ko có LCD khác để test. Vậy nguyên nhân có pai là do LCD hay VDK? Bác nào có kinh nghiệm giúp em với.Ah em nối LCD va VDK bằng cáp mà em thử mấy cái cáp rồi nó vẫn như vậy.

                              hiển thị lên lcd thì có gì đâu bạn dễ mà minh đã làm về lcd rồi chạy ngon
                              nguyên nhân của cậu chắc là do code cậu nên nhớ là khi hiển thị giá trị lên lcd phải
                              lcd_putchar(h/10 +48
                              lcd_putchar(h%10 +48);

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X