Thông báo

Collapse
No announcement yet.

Đồng hồ số giúp gấp,

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

  • Đồng hồ số giúp gấp,

    Chào tất cả các anh e trong diễn đàn, mình đang chiển khai làm cái mạch đồng hồ số dùng chip 89C52 và DS1307, chạy mô phỏng thì Ok, nhưng khi lắp dáp mạch thực tế thì sảy ra 1 số sự cố sau mong các anh e trong diễn đàn sai biết và đã từng làm thì ktra hộ phần cứng xem có vấn đề gì ko nhé,

    1, xung 1hz thì OK chạy ok rồi
    2, chỉ có phần hiển thị ra thì ko chạy led đứng im lìm thôi à
    3, chân kích xung cho tran C1815 ko kích để cấp dương nguồn cho led

    tất cả 6 led đều đứng im khi đấu tắt chân dương, vậy các bác trong diễn đàn ai đã từng làm mạch đồng hồ như trên và có kinh nghiệm làm đồng hồ số chỉ bảo e với nhé,

    cảm ơn các anh chị rất nhiều,
    Attached Files

  • #2
    chỗ mạch reset bạn thử thay con 10k = 8.2k xem sao??
    hoặc bạn viết 1 đoạn code đơn giản test mạch VĐK xem đã hoạt động chưa đã??
    DS1307 đã xuất ra xung 1Hz ở chân 7 vậy chắc là hoạt động rồi đó.

    Comment


    • #3
      Mình ktra ở chân 7 của con DS1307 thì ko thấy có xung nào ra cả hay là do code sai nhỉ, các bác nào có kinh nghiệm giúp e với,

      Comment


      • #4
        cái chân số 7 nó phát ra xung , bạn đo làm sao đc vậy bạn, kiểu này ráp mạch main test trước quá

        Comment


        • #5
          có bạn nào trong này nhiều kinh nghiệm giúp mình với, ko hiểu con DS1307 ko hoạt động hay gì mà ko chạy chứ, vì trong mạch sử dụng 2 thạch anh( 1 loại là 12 vào chân 18 và 19 còn con 32.768 và DS1307, khi rút con ic ds1307 ra thì vẫn thấy đèn báo chớp tắt bình thường, hay tại con DS1307 chưa hoạt động lên ko quyét led, nhờ các bác trong diễn đàn giúp e nhé, cảm ơn các bác rất nhiều,

          Comment


          • #6
            Nguyên văn bởi hahai Xem bài viết
            Chào tất cả các anh e trong diễn đàn, mình đang chiển khai làm cái mạch đồng hồ số dùng chip 89C52 và DS1307, chạy mô phỏng thì Ok, nhưng khi lắp dáp mạch thực tế thì sảy ra 1 số sự cố sau mong các anh e trong diễn đàn sai biết và đã từng làm thì ktra hộ phần cứng xem có vấn đề gì ko nhé,

            1, xung 1hz thì OK chạy ok rồi
            2, chỉ có phần hiển thị ra thì ko chạy led đứng im lìm thôi à
            3, chân kích xung cho tran C1815 ko kích để cấp dương nguồn cho led

            tất cả 6 led đều đứng im khi đấu tắt chân dương, vậy các bác trong diễn đàn ai đã từng làm mạch đồng hồ như trên và có kinh nghiệm làm đồng hồ số chỉ bảo e với nhé,

            cảm ơn các anh chị rất nhiều,
            mạch của cậu sáng được thì thật cũng là một kỳ tích . Cậu nên lắp cho LED một khối công suất nguồn, bởi dòng hút của VĐK rất thấp không thể đủ sáng LED, mà lại sử dụng phương pháp đa hợp nữa chứ, tốc độ quét cao thì led không giựt => led sáng yếu ! để triệt tiêu cái nhược điểm của quét led đa hợp này chúng ta phải cấp đủ nguồn cho LED:
            1 - Mắc tầng darligton vào dương nguồn cho LED => Port VĐK điều khiển LED ưu tiên logic 0 để điều khiển đóng mở LED, mạch darlington gồm: Port VĐK => cực B của PNP, E nối nguồn, cực C PNP =>B của NPN , E của NPN nối với Anot của LED, C nối nguồn .
            2 - Mắc một bộ đệm đảo ULN 2803: Port VĐK =>ULN2803 =>trở =>Led

            Còn vấn đề của DS1307, cậu nên tham khảo một số code giao tiếp với RTC !

            Comment


            • #7
              Cảm ơn bạn chumanh mình sẽ thử theo phương pháp của bạn xem sao, có kết quả mình sẽ thông tin cho các bạn trong diễn đàn cùng xem,

              Comment


              • #8
                Em đa làm theo bác chumanh nhưng vẫn đuwowcj, bác nào có nhiều kinh nghiệm về làm đồng giúp e với, cảm ơn các bác đóng góp ý kiến nhiều.

                Comment


                • #9
                  cậu đưa cái code kèm mạch của cậu lên xem thế nào, có thể do code của cậu có vấn đề !

                  Comment


                  • #10
                    Chào bạn chumanh mình mất mất cái file chương trình rồi chỉ còn file hex lạp vdk thôi ko biết để đâu mất cái code chứ lại file mạch thì còn, bạn có thể giúp mình chỉnh sửa với được ko ? file mạch mình đã up bên trên rồi, bạn nào đã từng làm cái này rồi giúp mình chỉnh sửa với nhé, cảm ơn các bạn rất nhiều: đây là địa chỉ mail của mình: hanoimuathu20032003@Yahoo.com

                    Comment


                    • #11
                      con ds này hay lắm mô phỏng thì nhiều người mô phỏng chạy ngon nhưng bắt tay làm thì ít người làm chạy
                      làm con này cần có chút kinh nghiệm và chăm chỉ
                      :
                      mail:
                      dd: 0973423905 - ĐH CÔNG NGHIỆP HÀ NỘI

                      Comment


                      • #12
                        #include<AT89x51.h>
                        #define LED1 P0_0
                        #define LED2 P0_1
                        #define LED3 P0_2
                        #define LED4 P0_3
                        #define LED5 P0_4
                        #define LED6 P0_5
                        sbit Set_key =P3^4;
                        sbit Up_key = P3^3;
                        sbit Dw_key =P3^6;
                        sbit SDA =P1^1;
                        sbit SCL= P1^0;
                        sbit denled=P2^0;
                        unsigned char hour, min, sec;
                        unsigned char time,index,F_set,B_nhay,get_t ;
                        unsigned char led7_data[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 }; //Decimal to Led7seg
                        void delay()
                        {
                        unsigned char i;
                        for (i = 0; i < 20; i++){};
                        }
                        void delay1(unsigned int time)
                        {
                        while(time--);
                        }

                        //-----------------------------------------
                        void SCL_high()
                        {
                        SCL = 1;
                        delay();
                        }

                        //------------------------------------------
                        void SCL_low()
                        {
                        SCL = 0;
                        delay();
                        }

                        //-------------------------------------------
                        void I2C_Start()
                        {
                        SDA = 1;
                        SCL = 1;
                        SDA = 0;
                        delay();
                        SCL = 0;
                        SDA = 1;
                        }

                        //--------------------------------------------
                        void I2C_Stop()
                        {
                        SDA = 0;
                        SCL_high();
                        SDA = 1;
                        }

                        //----------------------------------------------
                        bit I2C_Write(unsigned char dat)
                        {
                        unsigned char i;
                        bit outbit;
                        for (i = 1; i <= 8; i++)
                        {
                        outbit=dat&0x80;
                        SDA = outbit;
                        dat = dat << 1;
                        SCL_high();
                        SCL_low();
                        }
                        SDA = 1; // set SDA to receive Acknowledge
                        SCL_high();
                        outbit = SDA; // check busy or not
                        SCL_low();
                        return(outbit); // if outbit=1 ,A=1: error // if outbit=0 ,A=0: ok
                        }

                        //----------------------------------------------------
                        unsigned char I2C_Read(bit ack)
                        {
                        unsigned char i, dat;
                        bit inbit;
                        dat = 0;
                        for(i=1;i<=8;i++)
                        {
                        SCL_high();
                        inbit = SDA;
                        dat = dat << 1;
                        dat = dat | inbit;
                        SCL_low();
                        }
                        if (ack) SDA = 0; // set SDA = 0 (ACK)
                        else SDA = 1; // set Non ACK
                        SCL_high();
                        SCL = 0;
                        SDA = 1; // Set SDA = 1 for next read
                        delay();
                        return(dat);
                        }
                        //-------------------------------------------------------------
                        // hàm ghi d? li?u data t?i d?a ch? thanh ghi add c?a RTC
                        //-------------------------------------------------------------
                        void rtc_write(unsigned char add, unsigned char data1)
                        {
                        I2C_Start();
                        I2C_Write(0xd0); // d?a ch? c?a 1307 //ch? d? ghi
                        I2C_Write(add); // d?a ch? thanh ghi
                        I2C_Write(((data1/10)<<4)|(data1%10)); // chuy?n thành s? th?p phân
                        I2C_Stop();
                        }

                        //---------------------------------------------------------------
                        // d?c d? li?u t?i thanh ghi có d?a ch? add c?a RTC
                        //---------------------------------------------------------------
                        unsigned char rtc_read(unsigned char add){
                        unsigned char data1;
                        I2C_Start();
                        I2C_Write(0xd0); // d?a ch? c?a DS1307 // ch? d? ghi
                        I2C_Write(add); // d?a ch? thanh ghi c?n d?c
                        I2C_Start(); // restart
                        I2C_Write(0xd1); // d?a ch? DS1307 // ch? d? d?c
                        data1 = I2C_Read(0);
                        I2C_stop();
                        data1 = (data1 & 0x0f) + (data1>>4)*10; // chuy?n thành s? th?p phân
                        return (data1);
                        }

                        //----------------------------------------------------------------
                        void setup_timer(void) // Setup timer 0 va timer 1
                        {
                        TMOD=0x11; // timer0 & timer1 set che do 1
                        TH0=-1000/256; TL0=-1000%256;
                        TH1=0x3C; TL1=0xAF;
                        ET1=1; ET0=1; EA=1;
                        TF0=0; TF1=0; TR0=1; TR1=1;
                        }

                        //----------------------------------------------------------------
                        void Fix_time(void) // Kiem tra va hieu chinh gia tri cua gio,phut,giay
                        {
                        //Tang
                        if(sec==60) {sec=0;min++; }
                        if(min==60) {min=0;hour++; }
                        if(hour==24) hour=0;
                        //Giam
                        if(sec== -1) {sec=59;min--;}
                        if(min== -1) {min=59;hour-- ;}
                        if(hour== -1)hour= 23;
                        }

                        //-----------------------------------------------------------------
                        void Keypad(void) // Kiem tra phim nhan.
                        {
                        if(!Set_key)
                        { //phim Set duoc nhan ?
                        F_set++; // Bien F_set co gia tri tu 0->2
                        if(F_set>3)
                        {
                        F_set=0;
                        rtc_write(0x00, sec);
                        rtc_write(0x01,min);
                        rtc_write(0x02,hour);
                        }
                        }
                        if(F_set==1)
                        { //Tang hoac giam gio neu F_set = 2
                        if(!Up_key) hour++;
                        if(!Dw_key) hour--;
                        rtc_write(0x02,hour);
                        }

                        if(F_set==2)
                        { //Tang hoac giam phut neu F_set = 1
                        if(!Up_key) min++;
                        if(!Dw_key) min--;
                        rtc_write(0x01,min);
                        }

                        if(F_set==3)
                        { //Tang hoac giam gio neu F_set = 2
                        if(!Up_key) sec++;
                        if(!Dw_key) sec--;
                        rtc_write(0x00, sec);
                        }
                        Fix_time(); //kiem tra tran so
                        delay1(13000);
                        }

                        //-------------------------------------------------------
                        void T1_ISR(void) interrupt 3 //ngat timer 1 chay dong ho
                        {
                        TR1=0;
                        TF1=0;
                        TH1=0x3C; // nap lai gia tri cho thanh ghi
                        TL1=0xAF;
                        time++;
                        if(time==5)
                        {time=0; B_nhay++; get_t=1;

                        if(B_nhay==4)
                        B_nhay=0;
                        }
                        TR1=1;
                        }
                        /*************************************/
                        void T0_ISR(void) interrupt 1 // Dung ngat timer 0 de quet led
                        {
                        TR0=0;
                        TF0=0;
                        TH0=-1000/256; // Nap lai gia tri cho thanh ghi
                        TL0=-1000%256;
                        index++;
                        LED1=0;
                        LED2=0;
                        LED3=0;
                        LED4=0;
                        LED5=0;
                        LED6=0;
                        if(index==1)
                        { if(F_set==3 && B_nhay==1){index++; index++;}
                        else
                        {
                        P2=led7_data[sec%10];
                        LED6=1;
                        }
                        } //lay so du sau khi chia 10
                        if(index==2)
                        {
                        P2=led7_data[sec/10];
                        LED5=1;
                        } //xuat gia tri hang chuc

                        if(index==3)
                        {
                        if(F_set==2 && B_nhay==1){index++; index++;}
                        else
                        {
                        P2=led7_data[min%10];
                        LED4=1;
                        }
                        }
                        if(index==4)
                        {
                        P2=led7_data[min/10];
                        LED3=1;
                        }

                        if(index==5)
                        {
                        if(F_set==1 && B_nhay==1){index=0;}
                        else
                        {
                        P2=led7_data[hour%10];
                        LED2=1;
                        }
                        }

                        if(index==6)
                        {
                        P2=led7_data[hour/10];
                        LED1=1;
                        index=0;
                        }

                        TR0=1;
                        }
                        //------------------------------------------------
                        void main()
                        {
                        time=index=0;
                        hour=0;
                        min=0;
                        sec=10;
                        F_set=0;
                        get_t=0;
                        setup_timer();
                        rtc_write(0x07, 10); // set control register 00010000; 1Hz
                        while(1)
                        {
                        Keypad();
                        //if(F_set==0)
                        //{
                        if(get_t == 1)
                        {
                        get_t = 0;
                        // d?c th?i gian t? RTC
                        sec = rtc_read(0x00);
                        min = rtc_read(0x01);
                        hour = rtc_read(0x02);


                        //}
                        }
                        if((sec%2)==0)
                        denled=1;
                        else
                        denled=0;
                        }
                        }






                        nạp cái code này vào nhé nếu không chạy thì pm nhé. code này viết theo mạch nguyên lý bên trên đó
                        Last edited by nvtu13041987; 26-03-2011, 13:13.
                        :
                        mail:
                        dd: 0973423905 - ĐH CÔNG NGHIỆP HÀ NỘI

                        Comment


                        • #13
                          Chào bạn, mình add chương trình trên của bạn vào trình dịch ra file hex để lạp cho chíp nhưng ko được, bạn viết bằng chương trình C hay ASM vậy ? bạn có thể hướng dẫn mình dịch chương trình trên của bạn ra file hex được ko ? rất mong nhận được sự giúp đỡ của bạn,

                          Comment


                          • #14
                            Nguyên văn bởi hahai Xem bài viết
                            Chào bạn, mình add chương trình trên của bạn vào trình dịch ra file hex để lạp cho chíp nhưng ko được, bạn viết bằng chương trình C hay ASM vậy ? bạn có thể hướng dẫn mình dịch chương trình trên của bạn ra file hex được ko ? rất mong nhận được sự giúp đỡ của bạn,
                            đã dịch ra file hex:
                            Attached Files
                            |

                            Comment


                            • #15
                              các bác ơi ko hiểu sao vẫn ko được, chán quá e bắt đầu thấy nản rồi đấy, bao công sức giờ ko được chán quá đi mất, 1 lần nữa nhờ tất cả các a em trong diễn đàn cùng chung tay giúp mình cái vụ này với, mình có chỉnh lại con tran thành con tran C1815 thành con A1015 và bỏ 2 con tụ 33p chỗ con ds1307 và thạch anh 32.768, các bạn trong diễn đàn cố gắng giúp đỡ mình nhé,
                              Attached Files

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X