Thông báo

Collapse
No announcement yet.

Làm Đồng hồ để bàn với DS1307 và Mega8!

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

  • #31
    em sẽ quyết làm một cái đồng hồ xịn sử dụng DS307 xem sao, nó có đắt lăm không các anh nhỉ, thấy các anh bạn luận em đã vỡ ra được nhiều điều. ngày trước không biết đến con DS này có, em phải làm một mạch tích vào dây truyền đóng gói để đảm bảo sau 30 ngày khách hàng không trả tiền thì dựng hoạt động, em lấy luôn con đồng hồ 30k về lắp vào tạo xung
    Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

    Comment


    • #32
      Mình đang chạy thử 1 con ds1307+th.anh 32768+AT89S52 thấy độ 1 tháng thì sai mất 1-2 phút ấy. Không biết là mạch đã chuẩn chưa nữa! Về giá thì tùy loại, có đợt hình như mua có 13nd, nhưng sợ sai nên lên sau mua cái khác thì giá lại >20nd, lâu rồi o nhớ giá chính xác.
      !e

      Comment


      • #33
        Nguyên văn bởi zemen Xem bài viết
        Mình đang chạy thử 1 con ds1307+th.anh 32768+AT89S52 thấy độ 1 tháng thì sai mất 1-2 phút ấy. Không biết là mạch đã chuẩn chưa nữa! Về giá thì tùy loại, có đợt hình như mua có 13nd, nhưng sợ sai nên lên sau mua cái khác thì giá lại >20nd, lâu rồi o nhớ giá chính xác.
        Một tháng mà bác chạy sai mấy phút là phải xem lại phần cứng rồi đó, em chạy cả nửa năm gần như chẳng thấy sai tí nào. Có hôm tình cờ phát hiện ra một điều rất hay từ Mainboard máy tính đó là: Tất cả thạch anh họ đều nối mass cho vỏ???!!! Hihi, về áp dụng liền!
        Nỏ biết chữ mần răng ký được??!! Thôi nhé.

        Comment


        • #34
          Nguyên văn bởi thangktvta Xem bài viết
          Một tháng mà bác chạy sai mấy phút là phải xem lại phần cứng rồi đó, em chạy cả nửa năm gần như chẳng thấy sai tí nào. Có hôm tình cờ phát hiện ra một điều rất hay từ Mainboard máy tính đó là: Tất cả thạch anh họ đều nối mass cho vỏ???!!! Hihi, về áp dụng liền!
          Bác có thể viết về vụ Alarm đc không em rất chờ đợi đó.em nghĩ cũng có nhiều người chờ đợi như em
          Mobile: 0914.658.856
          Yahoo: quang85_2004

          Comment


          • #35
            Nguyên văn bởi vuquangpsoc Xem bài viết
            Bác có thể viết về vụ Alarm đc không em rất chờ đợi đó.em nghĩ cũng có nhiều người chờ đợi như em
            Đã xong, tuy nhiên mới làm cái alarm đơn giản thui. Bác xem rồi đóng góp thêm nhé!
            Code:
            /*****************************************************
            This program was produced by the
            CodeWizardAVR V1.24.2c Professional
            Automatic Program Generator
            © Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
            http://www.hpinfotech.ro
            e-mail:office@hpinfotech.ro
            
            Project : 
            Version : 
            Date    : 10/7/2008
            Author  : Hoang Thang                          
            Company : thangktvta@gmail.com                            
            Comments: 
            
            
            Chip type           : ATmega8
            Program type        : Application
            Clock frequency     : 1.000000 MHz
            Memory model        : Small
            External SRAM size  : 0
            Data Stack size     : 256
            *****************************************************/
            
            #include <mega8.h>
            #include <delay.h>
            
            // I2C Bus functions
            #asm
               .equ __i2c_port=0x18 ;PORTB
               .equ __sda_bit=0
               .equ __scl_bit=1
            #endasm
            #include <i2c.h>
            
            // DS1307 Real Time Clock functions
            #include <ds1307.h>  
            
            unsigned char h,m,s,g,p;
            void disp(int add, unsigned char dat);
            void wr(unsigned char add, unsigned char dat);   
            void reng();
            unsigned char read(unsigned char add);
            
            // External Interrupt 0 service routine
            interrupt [EXT_INT0] void ext_int0_isr(void)
            {
            /***********************************************************************************
             Nhan 1 phat thi chinh gio
             -----2----------------phut
             -----3----------------dat gio
             -----4----------------Dat phut
            /***********************************************************************************/
            
            int a=0; 
            g=h;
            p=m;  
            
                while(1)
                {
                
                if (PIND.2==0)    {
                        a++;
                        if (a>4) a=0;
                        delay_ms(100);
                        }
                disp(1,a);
                switch    (a){
                       
                       case 1: {
                                  
                                  if (PIND.0==0)     {
                                              h++;            // up
                                                   delay_ms(300);
                                     } 
                                if (PIND.1==0)      {
                                             h--;            // Down
                                             delay_ms(300);     
                                           } 
                               if (h>12) h=h-12;
                                 if (h<1)  h=12; 
                               disp(3,(h/10)%10);
                               disp(4,h%10);
                               break;
                              }
                       case 2: {
                                  if (PIND.0==0)     {
                                              m++;            // up 
                                              if (m==60) m=0;
                                                   delay_ms(300);
                                     } 
                                if (PIND.1==0)      {
                                             m--;            // Down
                                             if (m==0)  m=59; 
                                             delay_ms(300);     
                                           }
                                 
                                  disp(3,(m/10)%10);
                               disp(4,m%10);
                               break;
                              } 
                       case 3: {
                               if (PIND.0==0)     {
                                              g++;            // up
                                                   delay_ms(300);
                                     } 
                                if (PIND.1==0)      {
                                             g--;            // Down
                                             delay_ms(300);     
                                           } 
                               if (g>12) g=g-12;
                                 if (g<1)  g=12; 
                               disp(3,(g/10)%10);
                               disp(4,g%10);           
                                   break;
                               }
                       case 4: 
                              {
                                   if (PIND.0==0)     {
                                              
                                              p++;            // up
                                                   delay_ms(300);
                                     } 
                                if (PIND.1==0)      {
                                             p--;            // Down
                                             delay_ms(300);     
                                           } 
                                 if (p<1) p=59; 
                                 if (p>59) p=1;
                               disp(3,(p/10)%10);
                               disp(4,p%10);           
                                   break;
                              }
                       }
                if (PIND.3==0)               // Thoat chinh gio.
                        { 
                        delay_ms(10);
                        rtc_set_time(h,m,s);
                        delay_ms(500);
                        wr(0,0); 
                        wr(0x08,g);
                        wr(0x09,p);   
                               break;
                        }
                }
            }
            
            // Declare your global variables here
            
            void disp(int add, unsigned char dat)
            {
                unsigned char num_led[5]={0,0x7f,0xbf,0xdf,0xef};
                PORTC=dat;
                PORTD=num_led[add];
                delay_ms(1);
                PORTD=0xff;  
            } 
            
            void wr(unsigned char add, unsigned char dat)
            {
                i2c_start();
                i2c_write(0xd0);
                i2c_write(add);
                i2c_write(dat);
                i2c_stop();
            }
            void reng(){
                        PORTB.2=0;
                        } 
                        
            unsigned char read(unsigned char add) {
            unsigned char data;
            i2c_start();
            i2c_write(0xd0);
            i2c_write(add);
            i2c_start();
            i2c_write(0xd0 | 1);
            data=i2c_read(0);
            i2c_stop();
            return data;
            }
            
                        
            
            void main(void)
            {
            // Declare your local variables here
            
            // Input/Output Ports initialization
            // Port B initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
            // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
            PORTB=0xff;
            DDRB=0xff;
            
            // Port C initialization
            // Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out 
            // State6=T State5=T State4=T State3=0 State2=0 State1=0 State0=0 
            PORTC=0xff;
            DDRC=0xfF;
            
            // Port D initialization
            // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In 
            // State7=0 State6=0 State5=0 State4=0 State3=T State2=T State1=T State0=T 
            PORTD=0xff;
            DDRD=0xF0;
            
            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            TCCR0=0x00;
            TCNT0=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
            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: On
            // INT0 Mode: Low level
            // INT1: Off
            GICR|=0x40;
            MCUCR=0x00;
            GIFR=0x40;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;
            
            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            // Analog Comparator Output: 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); 
            //wr(0,0);
            //rtc_set_time(19,18,0);
            
            // Global enable interrupts
            #asm("sei")
            
            while (1)
                  {
                  // Place your code here  
                rtc_get_time(&h,&m,&s);
                if (h>12) h=h-12; 
                if (h==read(0x08)& m==read(0x09)) reng();
                disp(1,(h/10)%10);
                disp(2,h%10);
                disp(3,(m/10)%10);
                    disp(4,m%10);    
                  };
            }
            Nỏ biết chữ mần răng ký được??!! Thôi nhé.

            Comment


            • #36
              Nguyên văn bởi apple Xem bài viết
              Em đã thử làm với loại led to cỡ 2inch chưa, chỉ cần em quét 6 con thôi là nhìn cũng thấy ko rõ lắm khi để ngoài sáng rồi đó em.các loại led nhỏ trong mỗi thanh chỉ có một diode sụt áp khoảng hơn 2v nhưng các loại led to thì mỗi thanh có tới 2 con diode mắc nối tiếp do vậy sụt áp cỡ khoảng hơn 4v chút xíu, hôm nào rảnh em có thể đo kiểm và làm thử sẽ rõ.

              Em quét led cũng tương tự như em đang thực hiện điều xung ở chân Anode của thanh led đó vậy, em thử lấy giấy bút vẽ giản đồ thời gian hoặc giản đồ xung cho mỡi led7seg em sẽ thấy ngay thôi.
              A ví dụ nhé, với 12con led của em, giả sử em quét với tần số 1Khz tức chu kỳ 1ms đúng ko, mỗi led sẽ sáng trong thời gian 1ms/12=0.083ms tương đương điều xung với duty circle là 0.083/1*100%=8,3%, hơi bị nhỏ đúng ko e, từ đó em sẽ tính ra áp trung bình đặt vào Anode đúng ko, em tính thử đi...Chúc e học tốt
              ơ thế nếu dùng thanh ghi dịch như 595 chẳng hạn thì 12 led em phải dùng 12 con 74hc595 ạ, trời vậy thì cồng kềnhquá mà viết code cho nó cũng khủng qua đi mất
              Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

              Comment


              • #37
                -Đúng là mạch sẽ bị cồng kềnh nếu dùng led nhỏ, led to sẽ cân xứng và có thể đặt 595 vào giữa led để đi dây sẽ dấu được 595 đi trông gọn hơn.
                -Về code thì sẽ rất gọn nếu dùng bộ SPI, kể cả ko dùng bộ SPI thì code cũng ko khủng đâu em...Em có thể tham khảo bên Tutorial led ma trận.
                Mấy ai định nghĩa được tình yêu.
                Có gì đâu một buổi chiều.
                Kề dao lên cổ yêu hay chết .
                Gật đầu cái rụp thế là yêu.

                --------
                Apple

                Comment


                • #38
                  Dùng có mấy em LED7, chơi 595 làm gì cho nó hổ báo- người ngoài người ta cười cho.
                  Với clock của AVR từ dăm - ba Mhz thì chắc chạy chục con LED nó chưa nhấp nháy đâu, vấn đề điện áp trung bình thì như em nói ở trên - tăng điện áp đặt vào Anot là ok rồi. Vấn đề tiết kiệm chân thì có thể dùng mạch biến đổi nt-->// Đừng phức tạp hóa vấn đề quá các bác ạ, muốn thực hành 595 thì chơi luôn LedMatrix đi.
                  Nỏ biết chữ mần răng ký được??!! Thôi nhé.

                  Comment


                  • #39
                    Nguyên văn bởi thangktvta Xem bài viết
                    Dùng có mấy em LED7, chơi 595 làm gì cho nó hổ báo- người ngoài người ta cười cho.
                    Với clock của AVR từ dăm - ba Mhz thì chắc chạy chục con LED nó chưa nhấp nháy đâu, vấn đề điện áp trung bình thì như em nói ở trên - tăng điện áp đặt vào Anot là ok rồi. Vấn đề tiết kiệm chân thì có thể dùng mạch biến đổi nt-->// Đừng phức tạp hóa vấn đề quá các bác ạ, muốn thực hành 595 thì chơi luôn LedMatrix đi.
                    em cũng đang tính dùng 595 làm ma trận đây nhưng mới làm kiểu mò tự xếp ra chữ mà chưa biết cách làm sao đưa phông chữ acii ra, lại còn chữ đổi mầu nữa chứ. ôi nhức đầu quá
                    ngày trước em mới dug 595 để làm mạch phân loại sản phẩm thành công cũng thấy thích giờ lại làm món này nữa
                    Last edited by Le Thi Bich; 23-10-2008, 23:50.
                    Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

                    Comment


                    • #40
                      Troài oai, mình đâu có khuyên em Bích đi làm 595 cho vài ba con led7seg làm chi, chỉ là bàn luận nếu làm số lượng led nhiều hoặc loại led to sụt áp lớn mà phương pháp quét ko đáp ứng được thì mới phải chốt bằng 595 chứ có vài ba con led thì ai đi làm thế cho bự cái mạch...

                      Luu ý: nếu tăng áp cho led len cao có thể xảy ra hiện tượng led bị sáng lờ mờ ở những thanh led ko cho phép sáng do áp VDK đưa ra là 5v trong khi áp đặt vào anode của led >5v.
                      Last edited by apple; 24-10-2008, 14:24.
                      Mấy ai định nghĩa được tình yêu.
                      Có gì đâu một buổi chiều.
                      Kề dao lên cổ yêu hay chết .
                      Gật đầu cái rụp thế là yêu.

                      --------
                      Apple

                      Comment


                      • #41
                        Nguyên văn bởi apple Xem bài viết
                        Luu ý: nếu tăng áp cho led len cao có thể xảy ra hiện tượng led bị sáng lờ mờ ở những thanh led ko cho phép sáng do áp VDK đưa ra là 5v trong khi áp đặt vào anode của led >5v.
                        Bác có chắc vụ này không? Cho vài cơ sở lý luận đi bác. Em chưa từng nghe + gặp cái vụ này bao giờ.
                        Nỏ biết chữ mần răng ký được??!! Thôi nhé.

                        Comment


                        • #42
                          Nguyên văn bởi thangktvta Xem bài viết
                          Bác có chắc vụ này không? Cho vài cơ sở lý luận đi bác. Em chưa từng nghe + gặp cái vụ này bao giờ.
                          Nếu áp đặt vào anode > (áp VDK đặt vào cathode + sụt áp của thanh led) khi đó trong led có dòng chạy chứ bác, tùy độ lớn của dòng sẽ quyết định led sẽ sáng lờ mờ ở mức độ nào.

                          Các bác vặn vẹo em ghê quá, e ví dụ thử cái này bác coi sao nhé. Giả sử ta quét 12 led7seg để hiển thị số đếm gì đó chẳng hạn, khi ta đếm các số nhỏ thì chỉ cần chỉ quét 2, 3 con gì đó, các led còn lại tắt hoàn toàn để tiết kiệm điện , điều đó đồng nghĩa với việc áp trung bình đặt vào các led dang quét sẽ cao hơn so với khi số đếm lớn. Như vậy dòng trong các thanh led ko cho phép sáng sẽ lớn khi số đếm nhỏ, vậy theo bác nó có bị lờ mờ ko.
                          Last edited by apple; 24-10-2008, 15:20.
                          Mấy ai định nghĩa được tình yêu.
                          Có gì đâu một buổi chiều.
                          Kề dao lên cổ yêu hay chết .
                          Gật đầu cái rụp thế là yêu.

                          --------
                          Apple

                          Comment


                          • #43
                            Nguyên văn bởi apple Xem bài viết
                            Nếu áp đặt vào anode > (áp VDK đặt vào cathode + sụt áp của thanh led) khi đó trong led có dòng chạy chứ bác, tùy độ lớn của dòng sẽ quyết định led sẽ sáng lờ mờ ở mức độ nào.
                            Cái này đúng đó, nhưng hơi củ chuối, tăng áp lên cao thì áp ra từ VDK củng phải qua IC đệm, hay đơn giản dùng ULN28xx chứ bác, ai lại tăng có 1 đường anode.
                            *** Thành viên không biết gì về điện ***

                            Comment


                            • #44
                              Nguyên văn bởi apple Xem bài viết
                              Các bác vặn vẹo em ghê quá,
                              Em chỉ vặn để tìm ra vấn đề thôi, k có ý xỏ xiên bác đâu nhá!
                              Bây giờ thì hiểu rồi. Tại bác nói mập mờ quá! Hehe, vụ này thì đơn giản thôi. Giải quyết thế này:
                              Giả sử bác dùng tất cả 12 con led, bác chỉnh sao cho 12 chữ số 8 (nhiều nét nhất) sáng đẹp đến lúc vừa ý.
                              Bây giờ khi quét led mà chỉ dùng có vài con led thì bác vẫn cho quét sao cho chu kì giống như khi sáng 12 LED. Có nghĩa là thời gian các LED sáng khi dùng 2 hay 12 con là bằng nhau. Điều này sẽ làm sáng đều nhau!
                              Các bác hiểu không nhẩy???!!!
                              Nỏ biết chữ mần răng ký được??!! Thôi nhé.

                              Comment


                              • #45
                                Nguyên văn bởi thangktvta Xem bài viết
                                Em chỉ vặn để tìm ra vấn đề thôi, k có ý xỏ xiên bác đâu nhá!
                                Bây giờ thì hiểu rồi. Tại bác nói mập mờ quá! Hehe, vụ này thì đơn giản thôi. Giải quyết thế này:
                                Giả sử bác dùng tất cả 12 con led, bác chỉnh sao cho 12 chữ số 8 (nhiều nét nhất) sáng đẹp đến lúc vừa ý.
                                Bây giờ khi quét led mà chỉ dùng có vài con led thì bác vẫn cho quét sao cho chu kì giống như khi sáng 12 LED. Có nghĩa là thời gian các LED sáng khi dùng 2 hay 12 con là bằng nhau. Điều này sẽ làm sáng đều nhau!
                                Các bác hiểu không nhẩy???!!!
                                ơ thế chỉnh bằng cái gì anh?
                                lại phải tăng áp thôi vì càng nhiều led trên một chu kỳ quét thì tỷ lệ thời gian sáng trên thời gian tắt của môt led càng giảm
                                em mới nảy ra ý kiến thế này:
                                đằng nào cũng phải thiết kế thêm một mức điện áp nữa(nếu điểu chỉnh áp)vậy thay vì đặt vào anot một điện áp >5V ta đặt vào katot của led điện áp <0V vậy là khắc phục được hiện tượng sáng lờ mờ
                                (em nghĩ thế nhưng chưa thấy ai làm thế nên cứ là hỏi các bác cái đã)
                                Last edited by Le Thi Bich; 24-10-2008, 18:23.
                                Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.

                                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