Thông báo

Collapse
No announcement yet.

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

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

  • 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 !

  • #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


    • #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


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

        Comment


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

          Comment


          • #6
            bạn vào đây xem, code mình post lên cho các bạn tham khảo
            http://www.dientuvietnam.net/forums/...?t=4502&page=2

            Comment


            • #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


              • #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


                • #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


                  • #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...
                    X