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

                              Đang tải...
                              X