Thông báo

Collapse
No announcement yet.

tư vấn giùm em với mấy bác!

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

  • tư vấn giùm em với mấy bác!

    Em mới học năm hai! Ngành cơ điện tử nhưng em rất yêu thích về lập trình nhất là VDK nên quyết tâm tự học! Nhưng khổ nỗi em chẳng biết bắt đầu từ đâu, học như thế nào cho hiệu quả! híc! mấy bác chỉ giúp em! Hiện em đang nghiên cứu con 8051! hic!

  • #2
    hãy bắt đầu với luồng người bắt đầu với 8051.
    sau đó kiếm giáo trình về học nhé.
    Sách bắt đầu đây: Lập trình VĐK của thày Cường (HV KTQS):
    http://dientuvietnam.net/forums/showthread.php?t=2197
    http://www.4shared.com/file/22730850..._VDK_8051.html
    Đó là phần học lấy kiến thức, nhưng quanh quẩn là phải làm luôn mới hiểu.Đối với họ 8051 mình thấy Reads51 là okie. Down tại đây:
    http://rigelcorp.com/reads51.htm
    Chúc bạn thành công.

    Comment


    • #3
      nhưng bạn ơi! mình phân vân quá! trong mấy cuốn sách nó toàn bày lập trình bằng ASM còn mình thấy mấy anh đi trước hướng dẫn mình toàn là keil-C! bạn làm ơn phân tích cho mình về hai loại lập trình này được kô?

      Comment


      • #4
        To Super_noob:

        Keil C thì mình chưa sử dụng bao giờ nên cũng ko dám nói nhiều về nó.
        Mặt khác với Reads51 bạn có thể lập trình bằng ASM hoặc C đều dc.
        bạn vào link trên down Reads51 về mà "cày 8051" đi nhé.
        ngoài ra nếu học bạn nên chuẩn bị những thứ sau để phục vụ học VĐK 8051 dễ dàng hơn:
        1. chuẩn bị mạch nạp. có thể mua chỉ khoảng trên dưới 100k thôi
        2. làm mạch nguồn
        3. mua loại chip AT89C52 về thực hành cùng các linh kiện cần thiết.
        4. học kiến thức trong cuốn sách mà bạn đã down ở trên rùi đó.
        5. Ngoài ra bạn còn phải có phần mềm nạp chip nữa. Mình dùng ProLoad thấy chip chạy rất ổn định. bạn vào link này down nhé: http://projects.sunrom.com/proload/
        ==> đi đến thực hành.
        Chúc bạn thành công với 8051.
        Last edited by NANO PRO; 09-09-2007, 13:44.

        Comment


        • #5
          @super noob:
          -Cái đó là do bạn tự chọn thôi.Nếu như bạn mới học về vi điều khiển thì bạn nên chọn ASM vì muốn lập trình với ASM bạn phải hiểu về cấu trúc của VDK để lập trình cho từng thanh ghi và nó tốn ít bộ nhớ hơn là C.Còn lập trình bằng C thì đễ học hơn vì nó gần giống ngôn ngữ con người,nhưng mà học C khi bạn mới biết về vi điều khiển sẽ dân đến việc kiến thức về vi điều khiển của bạn sẽ dậm chân tại chỗ và Cái thiết yếu là khi lập trình C khi biên dịch ra thì nó ngốn rất nhiều bộ nhớ VDK.Cho nên các bước cần thiết bạn phải làm như sau.
          1/Tìm hiểu về cấu trúc vi điều khiển(nên học con AT89C51 nó thuộc hô 8051)
          2/tìm hiểu tập lệnh ASM của con AT89c51,tìm hiểu chức năng của các ngắt,Timer,cờ tràn.....
          3/Tìm hiểu cách vẽ mạch và vẽ mạch in (bằng OrCAD hoặc protel,eagler ....)
          4/Học cách làm mạch in thủ công
          5/Làm 1 mạch nạp cho con AT89C51 vì cách mạch nạp mua đắt hơn là làm và qua đó nâng cao kĩ năng làm mạch in.
          6/Tập lập trình làm nhấp nháy led theo nhiều kiểu.
          7/Kiếm tài liệu nâng cao để học
          Chúc vui
          Tâm trí ta say nhưng lòng ta đâu có say
          Bởi trái tim tôi đã trót say người

          Comment


          • #6
            Học nhanh thì mua 1 cái kit về học.
            Mình thấy có nhiều anh bán những kit loại đó lắm.
            Dùng 8051 của Philip đấy.khỏi mạch nạp gì cả lại khỏi tháo cắm.
            đỡ mất time làm mấy cái mạch EZ.
            hình như bác tamphong có đấy.
            Rồi PNLAB nữa.
            TME
            nhiều nhiều sắm 1 cái mà học cho nhanh.

            Sông dài, Thuyền lớn, Biển rộng bao la.
            Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

            Comment


            • #7
              Nếu dùng con 8051 của Philip(P89V/C51RDx) thì có phải là quá tốn tiền trong khi bạn này trong thời gian học không,nhưng mà con này lợi ở điểm có thể nạp ISP dùng mạch nạp ngoài ,mạch nạp ngoài cũng chỉ cần 4 con MAX232 và 4 tụ thôi.
              Mới học dễ bị dốt VDK lắm nên dùng con rẻ thôi,cái thiết yếu là mạch nạp
              Tâm trí ta say nhưng lòng ta đâu có say
              Bởi trái tim tôi đã trót say người

              Comment


              • #8
                Mạch nạp của mình là nhất rùi ! Giá tuy có cao chút nhưng lợi điểm là hỗ trợ cã AVR atmega mcs51 eeprom nên khoản đầu tư lâu dài là sự lựa chọn tốt nhất !
                Mạch nạp Little Programmer
                MSC-51,AVR,EEPROM ... etc

                Site Fukusei shop :

                Comment


                • #9
                  Nguyên văn bởi bk_future Xem bài viết
                  Nếu dùng con 8051 của Philip(P89V/C51RDx) thì có phải là quá tốn tiền trong khi bạn này trong thời gian học không,nhưng mà con này lợi ở điểm có thể nạp ISP dùng mạch nạp ngoài ,mạch nạp ngoài cũng chỉ cần 4 con MAX232 và 4 tụ thôi.
                  Mới học dễ bị dốt VDK lắm nên dùng con rẻ thôi,cái thiết yếu là mạch nạp
                  Đốt vài con có sao mà con này chì lém.
                  Có đau mới hổng dám đốt nữa.
                  Mà RB rẻ mà chỉ vài chục K.
                  Còn RD thì mắc thật nhưng đáng $.
                  Cần RD thì call mình(quảng cáo tí chơi).

                  @phucthinhel:mạch nạp của anh xài tốt lém.

                  Sông dài, Thuyền lớn, Biển rộng bao la.
                  Tháo neo ngôn ngữ, lèo lái con thuyền kiến thức nhân loại.

                  Comment


                  • #10
                    cảm ơn các bạn nhiều lắm! mình sẽ cố học ASM trước nhưng các bạn có thể nói rõ hơn cho mình về cách chuẩn bị để thực hành được kô? bởi mình tự học hoàn toàn nên kô có ai hướng dẫn cả, với lại mới là sv năn hai nên chưa hiểu lắm về điện tử! mong các bạn giúp minh!

                    Comment


                    • #11
                      cho em hỏi cái .Cả ngay hôm nay em tim mãi không ra lôi tại sao mà chuong trình không chạy được .HUhu.Đây là chương trình em viêtcho LCD

                      #include <REGX51.H>
                      #include<string.h>
                      sfr LCD_data=0xa0;
                      sbit BF=0xa7;
                      sbit RS=P3^5;
                      sbit Rw=P3^4;
                      sbit En=P3^3;
                      void wait(void)
                      {
                      long n=0;
                      En=1;
                      RS=0;
                      Rw=1;
                      LCD_data=0Xff;
                      while(BF){n++;if(n>100) break;}
                      En=0;
                      Rw=0;
                      }
                      //*ham dieu khien LCD thuc hien 1 lenh*//
                      void LCD_control(unsigned char x)
                      {
                      En=1;
                      RS=0;
                      Rw=0;
                      LCD_data=x;
                      En=0;
                      wait();
                      }
                      //*ham khoi tao

                      void LCDinit(void)
                      {
                      LCD_control(0x30);//che do 8 bit
                      LCD_control(0X38);//2 dong va ma tran 5X7
                      LCD_control(0x0C);//bat contro
                      LCD_control(0x06);//tang con troi dich con tro sang phai
                      LCD_control(0x01);//xoa man hinh
                      }
                      //============
                      void LCD_write(unsigned char c)
                      {
                      En=1;
                      RS=1;
                      Rw=0;
                      LCD_data=c;
                      En=0;
                      wait();
                      }
                      //=========
                      void LCD_puts(unsigned char *s,unsigned char row)
                      {
                      unsigned char len;
                      if(row==1) LCD_control(0x80) ;
                      else LCD_control(0xc0);
                      len=strlen(s);
                      While(len!=0)
                      {
                      LCD_write(*s);
                      s++;
                      len--;

                      }
                      }
                      //=================
                      void delay(long time)
                      (
                      long n;
                      for(n=0;n<time;n++)
                      {
                      ;
                      };
                      )
                      //=============
                      void main(void)
                      {
                      char x;
                      LCDinit();
                      LCD_puts("8052mcu",1);
                      delay*(30000);
                      While(1==1)
                      {
                      for(x=0;x<15;x++)
                      {
                      LCD_puts("8052mcu",1);
                      LCD_control(0X18) ;
                      delay(5000)
                      }
                      }
                      }
                      nó báo lỗi như sau :
                      #include <REGX51.H>
                      #include<string.h>
                      sfr LCD_data=0xa0;
                      sbit BF=0xa7;
                      sbit RS=P3^5;
                      sbit Rw=P3^4;
                      sbit En=P3^3;
                      void wait(void)
                      {
                      long n=0;
                      En=1;
                      RS=0;
                      Rw=1;
                      LCD_data=0Xff;
                      while(BF){n++;if(n>100) break;}
                      En=0;
                      Rw=0;
                      }
                      //*ham dieu khien LCD thuc hien 1 lenh*//
                      void LCD_control(unsigned char x)
                      {
                      En=1;
                      RS=0;
                      Rw=0;
                      LCD_data=x;
                      En=0;
                      wait();
                      }
                      //*ham khoi tao

                      void LCDinit(void)
                      {
                      LCD_control(0x30);//che do 8 bit
                      LCD_control(0X38);//2 dong va ma tran 5X7
                      LCD_control(0x0C);//bat contro
                      LCD_control(0x06);//tang con troi dich con tro sang phai
                      LCD_control(0x01);//xoa man hinh
                      }
                      //============
                      void LCD_write(unsigned char c)
                      {
                      En=1;
                      RS=1;
                      Rw=0;
                      LCD_data=c;
                      En=0;
                      wait();
                      }
                      //=========
                      void LCD_puts(unsigned char *s,unsigned char row)
                      {
                      unsigned char len;
                      if(row==1) LCD_control(0x80) ;
                      else LCD_control(0xc0);
                      len=strlen(s);
                      While(len!=0)
                      {
                      LCD_write(*s);
                      s++;
                      len--;

                      }
                      }
                      //=================
                      void delay(long time)
                      (
                      long n;
                      for(n=0;n<time;n++)
                      {
                      ;
                      };
                      )
                      //=============
                      void main(void)
                      {
                      char x;
                      LCDinit();
                      LCD_puts("8052mcu",1);
                      delay*(30000);
                      While(1==1)
                      {
                      for(x=0;x<15;x++)
                      {
                      LCD_puts("8052mcu",1);
                      LCD_control(0X18) ;
                      delay(5000)
                      }
                      }
                      }
                      #include <REGX51.H>
                      #include<string.h>
                      sfr LCD_data=0xa0;
                      sbit BF=0xa7;
                      sbit RS=P3^5;
                      sbit Rw=P3^4;
                      sbit En=P3^3;
                      void wait(void)
                      {
                      long n=0;
                      En=1;
                      RS=0;
                      Rw=1;
                      LCD_data=0Xff;
                      while(BF){n++;if(n>100) break;}
                      En=0;
                      Rw=0;
                      }
                      //*ham dieu khien LCD thuc hien 1 lenh*//
                      void LCD_control(unsigned char x)
                      {
                      En=1;
                      RS=0;
                      Rw=0;
                      LCD_data=x;
                      En=0;
                      wait();
                      }
                      //*ham khoi tao

                      void LCDinit(void)
                      {
                      LCD_control(0x30);//che do 8 bit
                      LCD_control(0X38);//2 dong va ma tran 5X7
                      LCD_control(0x0C);//bat contro
                      LCD_control(0x06);//tang con troi dich con tro sang phai
                      LCD_control(0x01);//xoa man hinh
                      }
                      //============
                      void LCD_write(unsigned char c)
                      {
                      En=1;
                      RS=1;
                      Rw=0;
                      LCD_data=c;
                      En=0;
                      wait();
                      }
                      //=========
                      void LCD_puts(unsigned char *s,unsigned char row)
                      {
                      unsigned char len;
                      if(row==1) LCD_control(0x80) ;
                      else LCD_control(0xc0);
                      len=strlen(s);
                      While(len!=0)
                      {
                      LCD_write(*s);
                      s++;
                      len--;

                      }
                      }
                      //=================
                      void delay(long time)
                      (
                      long n;
                      for(n=0;n<time;n++)
                      {
                      ;
                      };
                      )
                      //=============
                      void main(void)
                      {
                      char x;
                      LCDinit();
                      LCD_puts("8052mcu",1);
                      delay*(30000);
                      While(1==1)
                      {
                      for(x=0;x<15;x++)
                      {
                      LCD_puts("8052mcu",1);
                      LCD_control(0X18) ;
                      delay(5000)
                      }
                      }
                      }
                      #include <REGX51.H>
                      #include<string.h>
                      sfr LCD_data=0xa0;
                      sbit BF=0xa7;
                      sbit RS=P3^5;
                      sbit Rw=P3^4;
                      sbit En=P3^3;
                      void wait(void)
                      {
                      long n=0;
                      En=1;
                      RS=0;
                      Rw=1;
                      LCD_data=0Xff;
                      while(BF){n++;if(n>100) break;}
                      En=0;
                      Rw=0;
                      }
                      //*ham dieu khien LCD thuc hien 1 lenh*//
                      void LCD_control(unsigned char x)
                      {
                      En=1;
                      RS=0;
                      Rw=0;
                      LCD_data=x;
                      En=0;
                      wait();
                      }
                      //*ham khoi tao

                      void LCDinit(void)
                      {
                      LCD_control(0x30);//che do 8 bit
                      LCD_control(0X38);//2 dong va ma tran 5X7
                      LCD_control(0x0C);//bat contro
                      LCD_control(0x06);//tang con troi dich con tro sang phai
                      LCD_control(0x01);//xoa man hinh
                      }
                      //============
                      void LCD_write(unsigned char c)
                      {
                      En=1;
                      RS=1;
                      Rw=0;
                      LCD_data=c;
                      En=0;
                      wait();
                      }
                      //=========
                      void LCD_puts(unsigned char *s,unsigned char row)
                      {
                      unsigned char len;
                      if(row==1) LCD_control(0x80) ;
                      else LCD_control(0xc0);
                      len=strlen(s);
                      While(len!=0)
                      {
                      LCD_write(*s);
                      s++;
                      len--;

                      }
                      }
                      //=================
                      void delay(long time)
                      (
                      long n;
                      for(n=0;n<time;n++)
                      {
                      ;
                      };
                      )
                      //=============
                      void main(void)
                      {
                      char x;
                      LCDinit();
                      LCD_puts("8052mcu",1);
                      delay*(30000);
                      While(1==1)
                      {
                      for(x=0;x<15;x++)
                      {
                      LCD_puts("8052mcu",1);
                      LCD_control(0X18) ;
                      delay(5000)
                      }
                      }
                      }
                      |

                      Comment


                      • #12
                        To Super_noob

                        Nguyên văn bởi super_noob Xem bài viết
                        cảm ơn các bạn nhiều lắm! mình sẽ cố học ASM trước nhưng các bạn có thể nói rõ hơn cho mình về cách chuẩn bị để thực hành được kô? bởi mình tự học hoàn toàn nên kô có ai hướng dẫn cả, với lại mới là sv năn hai nên chưa hiểu lắm về điện tử! mong các bạn giúp minh!
                        bạn khiêm tốn quá. Thực thà mà nói cho đến năm thứ 3 (học kì 2) mình mới thực sự tham gia vào quá trình học tập. Với sự khởi đầu của bạn cùng với quyết tâm mình tin bạn sẽ học tốt.
                        Mình có thể tổng hợp các modul nhỏ để bạn có kế hoạch học tập trinh phục 8051 như sau:
                        1. Sáng Led đơn, nháy theo chu kì(chạy ngược, chạy xuôi...) ...
                        2. Phím bấm ==> ma trận phím
                        3. Led 7 thanh (loại đơn, x2, x3, x4)
                        4. UART: truyền nhận dữ liệu nối tiếp
                        5. ghép nối ADC(ADC0804, 0808, 0809...)
                        6. truyền nhận hồng ngoại
                        7. Thực hành ngắt, Timer ....
                        ==> thực hiện các modul lớn hơn như hệ thống điều khiển đèn giao thông (2 hướng, 3 hướng, 4 hướng ...), điều khiển nhiệt độ, đo dòng, ổn định tốc độ động cơ (DC, AC), giao tiếp máy tính để điều khiển giám sát ....Và tiến đến làm chủ 8051
                        Chúc bạn thành công.

                        Comment


                        • #13
                          kô ý mình muốn hỏi là chuẩn bị các dụng cụ để thục hành ấy! bởi mình hoàn toàn mù mit về mấy cái linh kiện điện tử! hic! ngượng quá! híc! các bạn làm ơn chỉ chi tiết hộ mình nhé! nếu được post ảnh mấy cái linh kiện cần dùng lên thì tốt quá!cảm ơn trước nha!!!

                          Comment


                          • #14
                            Mình tự học VDK hồi lớp 12
                            bạn vào trang này học khỏi cái này 1/2 kiến thức thành thạo lun áh
                            http://codientu.info/codientu/ki_thu...cvdk/index.htm
                            Tài liệu khác mình sẽ gửi lên sau
                            Tâm trí ta say nhưng lòng ta đâu có say
                            Bởi trái tim tôi đã trót say người

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            • mèomướp
                              Trả lời cho Sửa bộ nguồn DC 60V 45A
                              bởi mèomướp
                              Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                              Hôm qua, 13:11
                            • tuyennhan
                              Trả lời cho Sửa bộ nguồn DC 60V 45A
                              bởi tuyennhan
                              Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                              Hôm qua, 09:25
                            • tuyennhan
                              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                              bởi tuyennhan
                              Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                              Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                              Hôm qua, 09:10
                            • Ng.Phuong.5
                              Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                              bởi Ng.Phuong.5
                              Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                              Mấy con...
                              09-01-2025, 19:44
                            • viettinh
                              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                              bởi viettinh
                              Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                              Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                              09-01-2025, 18:12
                            • nguyendinhvan
                              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                              bởi nguyendinhvan
                              Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                              Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                              Cách đơn giản...
                              09-01-2025, 00:04
                            • mèomướp
                              Trả lời cho Sửa bộ nguồn DC 60V 45A
                              bởi mèomướp
                              Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                              08-01-2025, 19:02
                            • tuyennhan
                              Trả lời cho Sửa bộ nguồn DC 60V 45A
                              bởi tuyennhan
                              Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                              08-01-2025, 15:43
                            • tuyennhan
                              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                              bởi tuyennhan
                              Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                              08-01-2025, 15:28
                            • mèomướp
                              Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                              bởi mèomướp
                              Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                              08-01-2025, 11:44
                            Đang tải...
                            X