Thông báo

Collapse
No announcement yet.

Đồng Hố số sủ dũng DS1307 cần giúp đỡ!

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

  • Đồng Hố số sủ dũng DS1307 cần giúp đỡ!

    hi mọi người ai đã từng làm đồng hồ số với Ds1307 cho tui hòi tí
    tại làm sao tui bấm phím (nhấn luôn không thả) thì vi điều khiển bị treo mặc dầu phím bấm chưa lập trình chỉ mới nối vào chân vdk thôi
    còn nếu bấm thả phím nó cũng treo luôn (click khoảng 20 cái) ai có kinh nghiệm giải thích giùm
    Click image for larger version

Name:	untitled.JPG
Views:	1
Size:	193.4 KB
ID:	1414292

  • #2
    mô phỏng treo hay mạch thực treo, treo kiểu gì, led ko sáng hay giây ko đếm, ......., up hết lên đi, ko có code thì chả biết đường mà vẽ cho hươu

    Comment


    • #3
      mô phỏng treo
      thực ra thì do cái chan SCL của con ds1307 khi bỏ trở treo ra thì hết treo dầu có click thế nào cũng được mà treo chân scl lên thì nó treo vi điều khiển vi diều khiễn không chạy nữa vậy có cách khắc phục hông nếu làm mạch thật mà bỏ dien trở treo chân scl có vấn đề gì hông

      Comment


      • #4
        dây là code của tui
        #include <REGX51.H>
        sbit SDA = P1^1;
        sbit SCL = P1^0;
        #define PortData P2
        #define PortScan P3
        #define Set P1_2
        #define Back P1_3
        #define Next P1_4
        #define W 0xD0
        #define R 0xD1
        #define HOUR 0x02
        #define MIN 0x01
        #define SEC 0x00
        unsigned char code Led7Seg[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
        char Data,Hour,Min,Sec;
        char IncSet=0,Scanled=0,run=0,t=0;
        void delay(int t)
        {
        while(t--) ;
        }
        void Start()
        {
        SCL = 1;
        SCL = 0;
        SDA = 1;
        SCL = 1;
        delay(2);
        SDA = 0;
        delay(2);
        SCL = 0;
        delay(2);
        }
        void Stop()
        {
        SCL = 1;
        SCL = 0;
        SDA = 0;
        delay(2);
        SCL = 1;
        delay(2);
        SDA = 1;
        }
        void Write(unsigned char Data)
        {
        unsigned char i;
        for (i=0;i<8;i++)
        {
        SDA = (Data & 0x80) ? 1:0;
        SCL=1;SCL=0;
        Data<<=1;
        }
        SCL = 1; delay(2);
        SCL = 0;
        }
        unsigned char Read()
        {
        bit rd_bit;
        unsigned char i ;
        Data=0x00;
        for(i=0;i<8;i++)
        {
        delay(2);
        SCL = 1;
        delay(2);
        rd_bit = SDA;
        Data = Data<<1;
        Data = Data | rd_bit;
        SCL = 0;
        }
        return Data;
        }
        unsigned char Read_DS1307(unsigned char DataTime)
        {
        unsigned char Bcd_Hex;
        Start();
        Write(W);
        Write(DataTime);
        Start();
        Write(R);
        Bcd_Hex=Read();
        Stop();
        Bcd_Hex = (((Bcd_Hex/16)*10)+ (Bcd_Hex & 0x0f));
        return Bcd_Hex;
        }
        void interrupt_Time() interrupt 3 //ngat timer 1 chay dong ho
        {
        TR1=0;
        TF1=0;
        TH1=0x3c;
        TL1=0xaf;

        TR1=1;

        }
        void interrupt_San_Led7Seg()interrupt 1
        {
        TH0=0xfc;
        TL0=0x18;
        TR0=0;
        TF0=0;
        Scanled++ ;
        if(Scanled==1)
        {
        PortData=0xff;
        PortData =Led7Seg[Hour/10];
        PortScan = 0x01;
        }
        if(Scanled==2)
        {
        PortData=0xff;
        PortData =Led7Seg[Hour%10];
        PortScan = 0x02;

        }
        if(Scanled==3)
        {
        PortData=0xff;
        PortData = Led7Seg[Min/10];
        PortScan = 0x04;
        }
        if(Scanled==4)
        {
        PortData=0xff;
        PortData = Led7Seg[Min%10];
        PortScan = 0x08;

        }
        if(Scanled==5)
        {
        PortData=0xff;
        PortData = Led7Seg[Sec/10];
        PortScan = 0x10;
        }
        if(Scanled==6)
        {
        PortData=0xff;
        PortData = Led7Seg[Sec%10];
        PortScan = 0x20;
        Scanled=0;
        }
        TR0=1;
        }

        void Setup_Timer()
        {
        TMOD=0x11;
        TH1=0x3C;
        TL1=0xAF;
        TR1=1;
        ET1=1;
        TH0=0XFC;
        TL0=0X18;
        TR0=1;
        ET0=1;
        EA=1;

        }

        void main()
        {

        Setup_Timer();
        while(1)
        {

        if ((run==1)&&(IncSet==0))
        {
        run=0;
        Hour=Read_DS1307(HOUR);
        Min=Read_DS1307(MIN);
        Sec=Read_DS1307(SEC);
        }
        }
        }
        Last edited by sansuridan; 17-09-2012, 20:07.

        Comment


        • #5
          sao không ai trả lời hết vậy ta

          Comment


          • #6
            lỗi này chỉ gặp trong mô phỏng thôi. chứ mạch thực ko sao đâu bạn
            Nguyễn Huy Biên - 01649 802 694
            gmail :

            Comment


            • #7
              vậy à cám ơn nhiều để tui nghiên cứu mạch thật xem sao
              bạn đã làm rúi à nhấn nút luôn không thả củng khong sao à chắc 100% chứ huynh
              Last edited by sansuridan; 18-09-2012, 14:48.

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              • Andrea14
                Vấn đề về tốc độ quay
                bởi Andrea14
                Chào mọi người,

                Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                12-12-2025, 12:42
              • bqviet
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi bqviet
                Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                06-12-2025, 17:17
              • nguyendinhvan
                Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                bởi nguyendinhvan
                Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                05-12-2025, 19:59
              • afrendly
                Trả lời cho Đấu tắt điện cho máy tính bảng
                bởi afrendly
                Có vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
                04-12-2025, 01:27
              Đang tải...
              X