Thông báo

Collapse
No announcement yet.

Đồng hồ số viết bằng C dùng 8051

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

  • #16
    anh nào có code viết bằng asemly post lên choi em xin.Em đang làm bài đồng hồ điển tử hay đồng hồ bấm giây dùng họ on chip 8051.Các bác giúp em với.
    Em xin chân thành cảm ơn các bác.
    Sđt:0976591928
    Mail:dunglqvic@gmail.com

    Comment


    • #17
      Nguyên văn bởi traiquanho Xem bài viết
      chào . mình vừa tìm được code của đồng hồ số sử dụng led 7 thanh.day ne:
      Anh ơi!Anh có luôn sơ đồ mạch anh post lên luôn đi anh hay anh gửi vào Mail giúp em với.
      mail:lqdungvp@gmail.com

      Comment


      • #18
        Mua cuốn lập trình C cho dòng 8051 của thầy Tống Văn On ĐHBK TPHCM
        đọc qua - làm ngon lành liền

        Comment


        • #19
          Nguyên văn bởi team.hatlife Xem bài viết
          nhưng cách của bác khó chính xác đc, vì 555 phụ thuộc vào giá trị của tụ, trở nên khó chính xác đc (vì mấy thằng tụ, đtrở của sai số khoảng 10% mà)
          Mình khắc phục cái sai số đó bằng cách lắp thêm biến trở vào mạch 555 để điều chỉnh tần số cho chính xác. Nhưng mà làm đồng hồ thì nên làmg bằng vi xử lý hơn làm ic số!
          Tôi có 1 chương trình C dùng 8501 viết cho đồng hồ (Tha m khảo ko phải do tôi viết)
          #include <AT89X51.H>
          //da gan nhu la chinh xac
          // 2tieng sai 1 sec

          /* Co gang lam cho giong dong ho that,
          co 1 nut goi la 'OK' bam la vao che do chinh sua
          1 nut tang, 1 nut giam co the chon che do chinh sua gio, phut , giay, khi bam OK thi se vao che do
          dong thoi 2 nut nay co the tang giam thoi gian o moi che do, khi nao xong thi an OK
          co 1 led7seg dung de hien so lua chon n; duoc dieu khien boi 4 bit dau cua P0;
          nut OK dieu khien boi P0_7;
          nut tang dieu khien boi P0_6;
          nut giam dieu khien boi P0_5;
          */
          void delay_1ms(){
          TH1=0xFC;
          TL1=0x17;
          TR1=1;
          while(1){
          if(TF1==1) break;
          }
          TR1=0;
          TF1=0;
          }
          void delay_1s(){
          int i;
          for(i=0;i<982;i++) delay_1ms(); //DA SUA KHI CHAY 16MIN SAI 3SEC (khi de lap for toi 1000)
          }
          void delay(){
          long i;
          for(i=0;i<10000;i++);
          }
          sbit ok=0x87;
          sbit tang=0x86;
          sbit giam=0x85;
          /*void hienso(int n){
          switch(n){
          case 0: P0=0;
          case 1: P0=1;
          case 2: P0=2;
          case 3: P0=3;
          case 4: P0=4;
          case 5: P0=5;
          case 6: P0=6;
          case 7: P0=7;
          case 8: P0=8;
          case 9: P0=9;
          // case 10: P0=10;

          }
          }*/
          void chinhgiay()
          {long m;
          //unsigned char m=0;
          while(1){
          if(ok==1) break;
          for(m=0;m<50000;m++)
          {
          if(tang==1){ P1++;
          if(((P1+6)%16)==0) P1+=6;

          delay();}

          if(giam==1){
          P1--;
          if((P1%16)==0) P1-=7;
          delay();}
          if(ok==1) break;
          }
          delay();
          }
          }
          void chinhphut(void)
          {long m;
          //unsigned char m=0;
          while(1){
          if(ok==1) break;
          for(m=0;m<50000;m++)
          { if(tang==1){ P2++;
          if(((P2+6)%16)==0) P2+=6;

          delay();}

          if(giam==1){ P2--;
          if((P2%16)==0) P2-=7;

          delay();}
          if(ok==1) break;
          }
          delay();
          }
          }
          void chinhgio(void)
          {long m;
          //unsigned char m=0;
          while(1){
          if(ok==1) break;
          for(m=0;m<50000;m++)
          { if(tang==1) {
          if(((P3+6)%16)==0) P3+=6;
          P3++;
          delay();}
          if(ok==1) break;
          if(giam==1){
          if((P3%16)==0) P3-=7;
          P3--;
          delay();}
          if(ok==1) break;
          }
          delay();
          }
          }
          void chinh(void)
          {
          P0=0;
          delay();


          while(1)
          {P0=0;
          // hienso(n);
          delay();
          if(ok==1) break;
          delay();
          while(1) //lua chon che do dieu chinh
          //neu 1 la chinh sec
          //neu 2 la chinh min
          //neu 3 la chinh hou
          {
          if(tang==1) { P0++;
          // hienso(P0) ;
          delay();}
          if(ok==1){
          delay();
          break; }
          if(giam==1) { P0--;
          // hienso(P0);
          delay();}
          if(ok==1) {delay();
          break;}
          }


          switch(P0)
          {
          case 0:{};
          case 1: chinhgiay();
          case 2: chinhphut();
          case 3: chinhgio();
          }

          P0=0;
          delay();
          }



          }
          void main(){
          TMOD=0x11;
          P1=0;
          P2=0;
          P3=0;
          P0=0;
          delay_1s();
          while(1){
          if(ok==1) chinh();
          P1++;
          delay_1s();
          if(((P1+7)%16)==0){
          if(P1<89){
          P1+=7;
          delay_1s();
          }
          }
          if(P1==89){
          P1=0;
          P2++;
          if(((P2+6)%16)==0){
          if(P2<89) P2+=6;
          }
          if(P2==90){
          P2=0;
          P3++;
          if(P3==23){
          P3=0;
          }
          }
          if(((P3+6)%16)==0){
          if(P3<20) P3+=6;
          }
          delay_1s();
          }

          // chinh sua gio , phut , giay
          }// end while

          }
          Last edited by biendt; 26-12-2008, 21:27.

          Comment


          • #20
            Nguyên văn bởi biendt Xem bài viết
            Mình khắc phục cái sai số đó bằng cách lắp thêm biến trở vào mạch 555 để điều chỉnh tần số cho chính xác. Nhưng mà làm đồng hồ thì nên làmg bằng vi xử lý hơn làm ic số!
            Tôi có 1 chương trình C dùng 8501 viết cho đồng hồ (Tha m khảo ko phải do tôi viết)
            #include <AT89X51.H>
            //da gan nhu la chinh xac
            // 2tieng sai 1 sec

            /* Co gang lam cho giong dong ho that,
            co 1 nut goi la 'OK' bam la vao che do chinh sua
            1 nut tang, 1 nut giam co the chon che do chinh sua gio, phut , giay, khi bam OK thi se vao che do
            dong thoi 2 nut nay co the tang giam thoi gian o moi che do, khi nao xong thi an OK
            co 1 led7seg dung de hien so lua chon n; duoc dieu khien boi 4 bit dau cua P0;
            nut OK dieu khien boi P0_7;
            nut tang dieu khien boi P0_6;
            nut giam dieu khien boi P0_5;
            */
            void delay_1ms(){
            TH1=0xFC;
            TL1=0x17;
            TR1=1;
            while(1){
            if(TF1==1) break;
            }
            TR1=0;
            TF1=0;
            }
            void delay_1s(){
            int i;
            for(i=0;i<982;i++) delay_1ms(); //DA SUA KHI CHAY 16MIN SAI 3SEC (khi de lap for toi 1000)
            }
            void delay(){
            long i;
            for(i=0;i<10000;i++);
            }
            sbit ok=0x87;
            sbit tang=0x86;
            sbit giam=0x85;
            /*void hienso(int n){
            switch(n){
            case 0: P0=0;
            case 1: P0=1;
            case 2: P0=2;
            case 3: P0=3;
            case 4: P0=4;
            case 5: P0=5;
            case 6: P0=6;
            case 7: P0=7;
            case 8: P0=8;
            case 9: P0=9;
            // case 10: P0=10;

            }
            }*/
            void chinhgiay()
            {long m;
            //unsigned char m=0;
            while(1){
            if(ok==1) break;
            for(m=0;m<50000;m++)
            {
            if(tang==1){ P1++;
            if(((P1+6)%16)==0) P1+=6;

            delay();}

            if(giam==1){
            P1--;
            if((P1%16)==0) P1-=7;
            delay();}
            if(ok==1) break;
            }
            delay();
            }
            }
            void chinhphut(void)
            {long m;
            //unsigned char m=0;
            while(1){
            if(ok==1) break;
            for(m=0;m<50000;m++)
            { if(tang==1){ P2++;
            if(((P2+6)%16)==0) P2+=6;

            delay();}

            if(giam==1){ P2--;
            if((P2%16)==0) P2-=7;

            delay();}
            if(ok==1) break;
            }
            delay();
            }
            }
            void chinhgio(void)
            {long m;
            //unsigned char m=0;
            while(1){
            if(ok==1) break;
            for(m=0;m<50000;m++)
            { if(tang==1) {
            if(((P3+6)%16)==0) P3+=6;
            P3++;
            delay();}
            if(ok==1) break;
            if(giam==1){
            if((P3%16)==0) P3-=7;
            P3--;
            delay();}
            if(ok==1) break;
            }
            delay();
            }
            }
            void chinh(void)
            {
            P0=0;
            delay();


            while(1)
            {P0=0;
            // hienso(n);
            delay();
            if(ok==1) break;
            delay();
            while(1) //lua chon che do dieu chinh
            //neu 1 la chinh sec
            //neu 2 la chinh min
            //neu 3 la chinh hou
            {
            if(tang==1) { P0++;
            // hienso(P0) ;
            delay();}
            if(ok==1){
            delay();
            break; }
            if(giam==1) { P0--;
            // hienso(P0);
            delay();}
            if(ok==1) {delay();
            break;}
            }


            switch(P0)
            {
            case 0:{};
            case 1: chinhgiay();
            case 2: chinhphut();
            case 3: chinhgio();
            }

            P0=0;
            delay();
            }



            }
            void main(){
            TMOD=0x11;
            P1=0;
            P2=0;
            P3=0;
            P0=0;
            delay_1s();
            while(1){
            if(ok==1) chinh();
            P1++;
            delay_1s();
            if(((P1+7)%16)==0){
            if(P1<89){
            P1+=7;
            delay_1s();
            }
            }
            if(P1==89){
            P1=0;
            P2++;
            if(((P2+6)%16)==0){
            if(P2<89) P2+=6;
            }
            if(P2==90){
            P2=0;
            P3++;
            if(P3==23){
            P3=0;
            }
            }
            if(((P3+6)%16)==0){
            if(P3<20) P3+=6;
            }
            delay_1s();
            }

            // chinh sua gio , phut , giay
            }// end while

            }
            Ko delay timer vậy đc,
            Bác phải dùng ngắt timer mới chính xác chứ
            Tuy bác nói me 16min sai 3sec nhưng bác bù lượng đó đâu thể chính xác
            chưa kể cái bác test là without keypress ko nói gì đc
            Kit thí nghiệm 8051 + mạch nạp + cable + LCD16x2 + CD hướng dẫn, giá chỉ

            Comment


            • #21
              Tìm mua mạch nạp PIC (ICD2) qua cổng Com hoặc USB. Bạn nào biết chỗ bán ở Hà Nội giúp mình địa chỉ với.Thanks

              Comment


              • #22
                Mình đang cần gấp...

                Comment


                • #23
                  minh đang làm đề tài về đồng hồ số dung 89c51 và ds1307 quet led 7 thanh.ai da từng viết code bằng kelc gởi cho mình với.
                  email:truongbatrung287@yahoo.com.vn
                  mình cảm ơn nhiều

                  Comment


                  • #24
                    vẫn là đồng hồ. Nói nhiều rùi vất đấy!

                    Comment


                    • #25
                      Giao tiếp ds1307. Wa là khó////

                      Comment


                      • #26
                        Không viết bằng assembly mà viết c liền thì nguy đó nghe.
                        Assembly rất gần với phần cứng, mà không hiểu phần cứng thì die.
                        Are you ok?

                        Comment


                        • #27
                          Nguyên văn bởi truongba Xem bài viết
                          minh đang làm đề tài về đồng hồ số dung 89c51 và ds1307 quet led 7 thanh.ai da từng viết code bằng kelc gởi cho mình với.
                          email:truongbatrung287@yahoo.com.vn
                          mình cảm ơn nhiều
                          Diễn đàn để học chứ không phải chốn để xin, đề nghị đọc lại nội quy post bài trên diễn đàn

                          Email:
                          Tel: 0983.497.310

                          Comment


                          • #28
                            Nguyên văn bởi quytho Xem bài viết
                            Giao tiếp ds1307. Wa là khó////
                            Giao tiếp không khó mà khó ở chỗ là làm biếng đọc datasheet. Phải xem tốc độ I2C của nó là bao nhiêu thường là 100khz để đọc cho chính xác, còn code thì google full. Chúc bạn TC

                            Email:
                            Tel: 0983.497.310

                            Comment


                            • #29
                              code sai rồi mô phỏng ko được

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              • 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
                              • nick22
                                Trả lời cho Máy điện châm ?
                                bởi nick22
                                Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
                                01-12-2025, 13:23
                              Đang tải...
                              X