Thắc mắc về vi điều khiển họ 8051 !!!

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • nbking
    Thành viên chính thức
    • May 2011
    • 39

    #1

    Thắc mắc về vi điều khiển họ 8051 !!!

    Sau 1 thời gian nghiên cứu nhg vẫn mơ màng. Các bác cho e hỏi là ví dụ : lắp mạch dk mình lập trình cho cổng vào 1.1 , lúc bình thường ko nối gì (ko đấu 5v hay mass) thì nó có nhận giá trị 0 ko ạ hay phải nối vs mass nguồn thì mới nhận giá trị 0. (tại trên proteus mô phỏng thấy ko nối gì nó toàn hiện giá trị 1, nối đất thì mới chịu 0 ạ)

    Các bác giúp em vs ạ, xin chân thành cảm ơn !!!!!!
  • chung1608
    Thành viên tích cực
    • Sep 2009
    • 4160

    #2
    mô tả cổng I/O của 89 mặc định khi reset mà ko có lệnh tác động tới các chân I/O thì nó sẽ có mức 1. Còn bạn hỏi quá mơ hồ, ko rõ
    Còn nếu muốn giá trị 0 1 chân I/O nào đó thì dùng lệnh CLR. (bạn hỏi P1.1 thì dùng lệnh CLR P1.1)

    Comment

    • nbking
      Thành viên chính thức
      • May 2011
      • 39

      #3
      #include <regx52.h>
      #include <stdio.h>

      sbit TRAI = P1^0;
      sbit PHAI = P1^1;
      sbit TOC1 = P1^2;
      sbit TOC2 = P1^3;
      sbit TOC3 = P1^4;
      sbit TOC4 = P1^5;
      sbit TOC5 = P1^6;
      sbit TOC6 = P1^7;

      unsigned char M[] = {0x0e,0x0d,0x0b,0x07};
      int i=0,j=0,a;

      //-------------------------

      void tocdoc(){
      a=3000;
      if (TOC1) {a = a - 500; }
      if (TOC2) {a = a - 1000;}
      if (TOC3) {a = a - 1500;}
      if (TOC4) {a = a - 2000;}
      if (TOC5) {a = a - 2300;}
      if (TOC6) {a = a - 2600;}
      }

      void delay(){
      unsigned int t,time=10;
      tocdoc();
      while(time--)
      for(t=0;t<a;t++);
      }
      //--------------------------
      void dc_thuan(){
      while(TRAI){
      delay();
      P2 = M[i--];
      if(i < 0)
      i = 3;
      }
      i++;
      }
      //-------------------------
      void dc_dao(){
      while(PHAI){
      delay();
      P2 = M[i++];
      if(i > 3)
      i = 0;
      }
      i--;
      }

      //-------------------------

      void main(){
      P2 = 0;
      while(1){
      dc_thuan();
      dc_dao();
      }
      }



      Đây là code e nạp vào IC. e hỏi h để ko thì các cổng từ 0 - 7 nhận giá trị 0 hay 1 ạ để e làm mạch ạ

      Comment

      • chung1608
        Thành viên tích cực
        • Sep 2009
        • 4160

        #4
        ko hiểu chú đang hỏi gì cái code điều khiển động cơ trên
        0 - 7 của cái gì ?
        cái gì nhận giá trị 0 hay 1 và để làm gì ?

        Comment

        • nbking
          Thành viên chính thức
          • May 2011
          • 39

          #5
          Cổng 1.0 - 1.7 là e để xung vào ạ. theo như e biết là 5v = 1 , 0v = 0.
          bthường ko nối j thì mấy cổng sẽ nhận giá trị 0 hay 1 ạ

          Comment

          • bienhou
            Thành viên tích cực
            • Dec 2011
            • 971

            #6
            bạn đặt tocdo dạng sbit thì nó chỉ nhận giá trị 0 or 1.
            a=3000;
            if (TOC1) {a = a - 500; }
            if (TOC2) {a = a - 1000;}
            if (TOC3) {a = a - 1500;}
            if (TOC4) {a = a - 2000;}
            if (TOC5) {a = a - 2300;}
            if (TOC6) {a = a - 2600;}
            THẾ ĐOẠN NÀY THÌ SAO
            Nguyễn Huy Biên - 01649 802 694
            gmail :

            Comment

            • bienhou
              Thành viên tích cực
              • Dec 2011
              • 971

              #7
              Nguyên văn bởi nbking Xem bài viết
              Cổng 1.0 - 1.7 là e để xung vào ạ. theo như e biết là 5v = 1 , 0v = 0.
              bthường ko nối j thì mấy cổng sẽ nhận giá trị 0 hay 1 ạ
              Mức 1 bạn àh. bài a chung trả lời rồi đó
              Nguyễn Huy Biên - 01649 802 694
              gmail :

              Comment

              • nbking
                Thành viên chính thức
                • May 2011
                • 39

                #8
                Đấy ạ. đoạn ý là nếu 1.2 nhận 1 thì a = 2500
                1.3 nhận giá trị 1 thì a = 2000
                .....
                chỗ đấy là e điều khiển tốc độ ạ

                Comment

                • nbking
                  Thành viên chính thức
                  • May 2011
                  • 39

                  #9
                  thế ạ, cảm ơn các bác. thế bây h e phải nối vào mass nguồn hả bác?

                  Comment

                  • bienhou
                    Thành viên tích cực
                    • Dec 2011
                    • 971

                    #10
                    Nguyên văn bởi nbking Xem bài viết
                    thế ạ, cảm ơn các bác. thế bây h e phải nối vào mass nguồn hả bác?
                    nói chung mình vẫn không hiểu ý bạn. :d
                    Nguyễn Huy Biên - 01649 802 694
                    gmail :

                    Comment

                    • nbking
                      Thành viên chính thức
                      • May 2011
                      • 39

                      #11
                      , thì muốn bt là 0 thôi mà, xong ấn nút cấp 5v cho từng chân thì nó mới chạy lệnh

                      Comment

                      • bienhou
                        Thành viên tích cực
                        • Dec 2011
                        • 971

                        #12
                        mình ko thấy ai điều chỉnh tốc độ như bạn. bạn xem thêm về PWM nhé.
                        Nguyễn Huy Biên - 01649 802 694
                        gmail :

                        Comment

                        • nbking
                          Thành viên chính thức
                          • May 2011
                          • 39

                          #13
                          Mình nói chung là lúc nhận bài tập thì mới bắt đầu đọc tài liệu. Động cơ của mình là động cơ bước chứ ko phai DC. nhặt được cái code trên mạng, về sửa lại chút lắp vào mô phỏng thấy tốc độ thay đổi nên chiến thui.

                          Comment

                          • mhl167
                            Thành viên tích cực
                            • Jul 2010
                            • 110

                            #14
                            lấy code người khác thì cũng được nhưng muốn thành của mình thì phải hiểu người ta làm thế nào chứ.

                            Comment

                            • nvd.dkt
                              Thành viên chính thức
                              • Aug 2011
                              • 46

                              #15
                              Không biết bạn hiểu hết chưa! Nếu chưa tôi xin góp ý thế này
                              1. Khi bình thường để trống các chân (trừ P0) thì nó xuất ra mức 1 (5v)
                              2. Nên lấy tín hiệu điều khiển là mass, không nên lấy tín hiệu + (tức là bạn kéo điện trở 10k lên vcc, khi bấm nút thì dập nó xuống mass - lấy tín hiệu này để đi làm cái gì mà bạn thích)
                              Không có gì quý hơn độc lập tự do!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...