Em cần giúp đỡ !(Vi điều khiển--->LED 7 Đoạn)

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • kewaxauxa
    Thành viên mới
    • Mar 2008
    • 3

    #1

    Em cần giúp đỡ !(Vi điều khiển--->LED 7 Đoạn)

    Em đang làm đồ án môn học với nội dung là :
    " Viết chương trình và làm mạch để hiển thị giờ, phút,giây lên LED 7 Đoạn "
    Ai chỉ em viết chương trình và làm mach như thế nào với !
    Ai biết xin chỉ em với !
  • kewaxauxa
    Thành viên mới
    • Mar 2008
    • 3

    #2
    Mình cần thời gian thực !
    Tức là khi có sự cố mất điện --->có điện lại thì nó vẫn chạy chính xác !
    Giúp mình với nha !
    Thaks

    Comment

    • phong25_2
      Thành viên tích cực
      • May 2007
      • 143

      #3
      bạn xài con DS1307 ấy, nó giao tiếp I2C,gắn thêm cục pin 3v, bảo đảm mất điện vẫn chạy tốt.

      Comment

      • kewaxauxa
        Thành viên mới
        • Mar 2008
        • 3

        #4
        Có hinh ko ! post lên cho mình coi dzí

        Comment

        • phong25_2
          Thành viên tích cực
          • May 2007
          • 143

          #5
          hinh thi tren google nhieu lắm, bạn vào đó search đi, cứ gõ vào ds1307 (tìm ảnh nghen).

          Comment

          • phong25_2
            Thành viên tích cực
            • May 2007
            • 143

            #6
            bạn vào đây xem, code mình post lên cho các bạn tham khảo
            Hướng dẫn, trao đổi các kỹ thuật, tính năng... về Vi điều khiển họ AVRMod: VNarmy, jindo_vn, sphinx

            Comment

            • dtqnel
              Thành viên mới
              • Sep 2006
              • 27

              #7
              Ngoai DS1307 ra bạn còn có thể dùng con thời gian thưc DS12887. con này giao tiếp song song có 2 chuẩn cho ban lụa chọn la INTEL và MOTOROLA, ko cân pin, nhưng có tac dụng tương tự ds1307 có 114byte NVram bên trong
              nêu can giup thi mail cho mình: duytandt2004@yahoo.com minh o Đà Nẵng
              Càng học nhiều Càng thấy mình ngu

              Comment

              • kinhaxac
                Thành viên chính thức
                • Aug 2007
                • 95

                #8
                có vẻ bạn kewaxauxa mới học về VDK???nếu thế thì làm RTC là tương đối khó ??? nó là chuẩn I2C , một chuẩn giao tiếp nối tiếp do hãng Phillip thiết kế??? để làm theo chuẩn này bạn fai viết chương trinh truyền nhận và kiểm tran quá trình truyền nhận theo đúng như xườn xung của RTC(DS1307...) cái này tương đối khó với ngươi mới học VDK , vì bạn fai thật hiểu xung nó nói j???nếu bạn làm bằng AVR thì lại dễ hơn rất nhiều ,vì AVR đã có sẵn các hàm hỗ trợ cho bạn như hàm Stop, Start... bạn chỉ cần biết cách dùng nó là ok mà ko cần quan tâm nhiều đến xung truyền nhận thế nào, mạch của nó thì không có j phức tạp , bạn lên google tìm rất nhiều , hoặc trong diễn đàn cũng có
                Tất nhiên sau khi bạn đã làm cho con RTC nó chạy thì việc còn lại của bạn là tách được dữ liệu cần để hiển thị(không dễ lắm đâu)
                Đây là một chương trình mình viết cho 8051 , bạn tham khảo:

                #include <REGX51.H>
                #include <intrins.h>
                sbit SDA= P1^0;
                sbit SCL= P1^1;
                unsigned char Byte[8];
                //--------------------------------------------------//
                void delay(long n);
                void START(void);
                void STOP(void);
                unsigned char I2C_Read(unsigned char ACK);
                unsigned char I2C_Read2(unsigned char ACK);
                bit I2C_Write(unsigned char Data);
                //--------------------------------------------------//
                void delay(long n)
                {
                long i;
                for(i=1;i<n;i++){;}
                }
                void START()
                {
                SDA=1;
                SCL=1;
                SDA=0;
                delay(4);
                SCL=0;
                SDA=1;
                }
                void STOP()
                {
                SDA=0;
                SCL=1;
                delay(4);
                SDA=1;
                }
                bit I2c_Write(unsigned char Data)
                {
                unsigned char i;
                bit databit;
                for(i=1;i<=8;i++)
                {
                databit = Data&0x08;
                SDA = databit;
                Data = Data<<1;
                SCL =1;
                SCL=0;
                }
                SDA=1;
                SCL=1;
                databit = SDA;
                SCL=1;
                return(databit);
                }
                unsigned char I2C_Read2()
                {
                unsigned char i,Data;
                bit databit;
                Data=0;
                for(i=1;i<=8;i++)
                {
                SCL=1;
                databit =SDA;
                Data =Data<<1;
                Data =Data|databit;
                SCL=0;
                }
                SDA=1;
                SCL=1;
                SCL=0;
                return(Data);
                }
                unsigned char I2C_Read()
                {
                unsigned char Data=0,i;
                bit databit;
                for(i=1;i<=8;i++)
                {
                SCL=1;
                databit =SDA;
                Data =Data<<1;
                Data =Data|databit;
                SCL=0;
                }
                }
                void RtcRead(void)
                {
                unsigned char i;
                I2C_START();
                I2c_Write(0xd0);
                I2c_Write(0x00);
                I2c_STOP();
                delay(4);
                I2C_START();
                I2c_Write(0xd1);
                for(i=0;i<=6;i++)
                {
                Byte[i]=I2C_Read();
                }
                Byte[7] = I2C_Read2();
                I2c_STOP();
                }
                void RtcWrite(void)
                {
                unsigned char i;
                I2C_START();
                I2c_Write(0xd0);
                I2c_Write(0x00);
                for(i=0;i<=7;i++)
                {
                I2c_Write(Byte[i]);
                }
                I2c_STOP();
                }
                void Rtc_Reset(void)
                {
                Byte[0] = Byte[0]& 0x7f;
                Byte[2] = Byte[2]& 0xbf;
                Byte[0] = Byte[7]& 0xfc;
                }
                void main(void)
                {
                RtcRead();
                Rtc_Reset();
                RtcWrite();
                while(1){;}
                }

                Chúc bạn thành công
                Last edited by kinhaxac; 17-03-2008, 19:08.

                Comment

                • Zz_Bi_zZ
                  Thành viên tích cực
                  • Nov 2007
                  • 766

                  #9
                  hình như dùng con RTC này thì ta ko dùng đc con 595 đc nữa . con 595 cũng dùng 2 chân SDA , SCL để truyền nhận . --> ko thể chỉ dùng 6 chân VDK mà quét 24 led đc rùi . Bác nào đã làm DHS dùng 595 + RTC chưa ?

                  Comment

                  • nghaiha
                    Thành viên tích cực
                    • Jul 2006
                    • 744

                    #10
                    Nguyên văn bởi Zz_Bi_zZ Xem bài viết
                    hình như dùng con RTC này thì ta ko dùng đc con 595 đc nữa . con 595 cũng dùng 2 chân SDA , SCL để truyền nhận . --> ko thể chỉ dùng 6 chân VDK mà quét 24 led đc rùi . Bác nào đã làm DHS dùng 595 + RTC chưa ?
                    Sao lại không hả bác, với 6 chân vi điều khiển em điều khiển cả trăm con LED cũng được đấy chứ.
                    Còn bác lăn tăn chuyện trùng chân với RTC thì xài chân khác điều khiển riêng con RTC ra.
                    Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
                    Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...