Thông báo

Collapse
No announcement yet.

Hành Trình Học Pic Với Easypic Kit

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

  • Hành Trình Học Pic Với Easypic Kit

    Một mùa Euro sôi động đã đến, em rất muốn đàm đạo về bong đá nhưng đây là box PIC nên

    Hôm nay muốn nói chuyện với các bác về PIC, nhất là những bạn mới làm quen với vđk hay mới làm điện tử như em.

    Nhiều khi em cảm thấy chán nản vì phải vót một đống dây để cắm lên test board. Còn có 2 lần cái test board chợ giời làm em mất 1 tuần vì không biết mạch bị lỗi ở đâu.

    Không muốn phải mệt mỏi vì những chuyện không đâu như thế. Em đã quyết định kiếm cho mình một bộ công cụ học PIC để có thể học thật hiệu quả mà không bị những cái ngớ ngẩn như test board bị chập hay tốn thời gian ngồi vót hang chục cái dây để cắm mà tính thẩm mỹ thì lại chả ra đâu vào đâu.

    Bộ EasyPIC Kit của mikoE làm em hết sức chú ý, vì vẻ đồ sộ của nó và dù sao cũng là hang ngoại. Nhưng đắt quá. Với một đứa sv như em, vừa học vừa làm cũng chỉ đủ ăn đủ học chứ lấy đâu ra mà đâu tư một bộ 159USD. Quả là quá xa xỉ để bỏ ra từng ấy tiền. Đô bây giờ lại còn tăng, và không hiểu kit đấy về VN còn tiền ship nữa chứ. Như vậy thật khó lòng đáp ứng được.

    Quyết định dùng hàng nội. Thấy EasyPIc kit của Tme quảng cáo rất rầm rộ, tính năng thì cũng không thua mikroE là mấy. 1 triệu . Đó là cái giá em sẽ phải trả để mua bộ EasyPICKit này. Đắn đo, cân nhắc, cân đối chi tiêu. Mua bộ nạp PICKit2 hết vài trăm rồi, thỉnh thoảng lên Hàn Thuyên, vào chợ giời lại ngót nghét 1 trăm nữa, lại đang tính mua một con mỏ hàn điều chỉnh được temp để chơi mấy em SMD, đấy là còn chưa kể một đống các khoản khác ngoài Điện tử…. Nhưng việc học PIC không thể cứ thiếu chuyên nghiệp thế này được. Việc sắm cho mình một bộ công cụ để học được các món võ công là không thể thiếu.!!!


    Thật tình cờ và bất ngờ.

    Em lại lưu lạc vào trang web của MinhHaCo và thấy ở đây cũng có một bộ EasyPIC kit. Một hồi google , và nghe nói là Kit này có bán chỉ riêng PCB không thôi lại còn có bạn nào là học trò của thấy QA ở BK thì còn được tặng miễn phí.(Em cũng không biết thầy vì không học BK).
    http://minhhaco.com/index.php?act=view&code=cat&id=1
    Có vẻ hay ho đây, nhưng sao cái hình trên net xấu hoắc vậy. Tính năng cũng có vẻ nhiều đấy, đầy đủ bộ có 600k, rẻ gần bằng nửa của bác VN kia. Nhưng sẽ chỉ lấy PCB thôi thì sẽ có 150k. Không biết chất lượng thế nào, nhưng 150k thì đáp ứng được, không cần đắn đo như 1 triệu hay 159USD). Vừa băn khoăn, nhưng cũng thấy một cái giá quá hợp lý, nên anh liều chiến

  • #2
    Của Rẻ Là Của ôi!

    CỦA RẺ LÀ CỦA ÔI!

    Các cụ đã nói, của rẻ là của ôi, đắt sắt ra miếng. Nhưng thưa các cụ, con xin lỗi, trường hợp này các cụ SAI rồi. Hoàn toàn SAI.:P j/k

    Em cầm trên tay con board mà lòng rưng rưng nước mắt. Cả đời thằng sv như em chỉ biết đặt mạch ở ĐVH xong rồi về mượn mama con dao tỉa hoa mà rạch, rạch, rạch cho nó hết mấy chỗ chập, chứ em có bao giờ nhìn thấy con mạch nào đẹp thế này. Em chả hiểu các bác thế nào, chứ em từ bé đến giờ cứ nhìn mấy cái mạch điện tử, càng đẹp, càng ngon là em càng thèm, lòng hưng phấn vô cùng)

    Đấy cảm giác đầu tiên của em là thế đấy. Mạch này thì rõ là chỉ đặt ở nước ngoài rồi, Vn còn lâu mới làm được thế các bác ạ. Vè cái board này, còn nhiều điều để nói, cũng chính một phần em mở topic này để bàn với các bác đấy.

    Tiếp theo, em sẽ vào chủ đề chính, gồm 2 phần

    1 là review công cụ học tập PIC này cho bà con cô bác

    2 là em cũng muốn chúng ta cùng nhau gây dựng một loạt các bài viết về các vấn đề cơ bản.

    Phần một thì dễ thấy rồi, chủ yếu là em chụp ảnh lên các bác xem chơi, vì cái ảnh trên trang chủ không được bắt mắt lắm. Cũng mong muốn nữa là
    Anh em ta dùng nhiều thứ mà ít review quá, có lẽ ai cũng bận cả. Giá như có vài cái topic review các công cụ cần thiết cho anh em đi sau biết mà dùng thì hay quá. VD: nhiều khi cái mỏ hàn, cuôn thiếc (chì) nào sd là hợp lý, nếu được các bác cho vài tấm ảnh, viết comment vài câu để anh em biết mà tránh cái xấu, lấy cái tốt, thì tuyệt. Như cái topic hỏi về thiếc hàn của anh Hòa chẳng hạn. Hehe

    Phần 2, em trên tinh thần, người làm rồi viết cho người chưa làm, làm được cái gì thì chia sẻ đến đó. Do đó em rất cần sự ủng hộ của các anh, các chị, các mợ, các cậu:P (j/k) đi trước chỉ bảo cho đàn em; ta cùng góp sức, chia sẻ vài dòng ta làm vài cái cơ bản. Mong các bạn newbie như mình cùng nhau vào để học tập nữa ạ. Việc chia sẻ kiến thức là cần thiết lắm lắm , mặc dù ta vẫn có định hướng phát triển nhưng các bác cứ nhìn bọn Tây, nó viết project mà em thèm được một phần mười các cao thủ Vn nhà mình cũng làm vài cái web chia sẻ kiến thức như thế thì VN chả mấy mà “sánh vai cùng các cường quốc” (Cụ Hồ dạy thế đấy) 


    Em xin trình bày trươc với các bác MOD và ADMIN. Em chả làm ra cái Kit này cũng chả đi rao bán, em thấy nó ngon thì review cho bà con ta tham khảo mua về mà dùng. Xin nhắc lại, đây là review ợ, không phải quảng cáo
    Thôi nghiêm túc một tí, để review phần 1 đây ợ.
    Last edited by HTAluvBebeo; 08-06-2008, 20:33.

    Comment


    • #3
      Phần Một: Easypic Kit From Minhhaco

      PHẦN MỘT: EASYPIC KIT FROM MINHHACO- Đáng đồng tiền bát gạo.

      Phần này, như đã trình bày ở trên, chủ yếu là em chụp ảnh cho mọi người cùng thèm và xin điểm lại vài ưu, khuyết của mạch này. Mỗi ý em sẽ kèm ảnh và phân tích vài cái mà em thấy được. Xin được lưu ý với các bác là em chụp xong, em để nguyên rồi up lên thôi, chứ không photoshop photocell gì cả, để đảm bảo tính khách quan, tránh trường hợp mấy em mạch thương mại khác chụp ảnh lừa tình cho anh em xem.

      Thêm nữa là em chỉ lấy PCB thôi, còn cả bộ đầy đủ linh kiện là 6 lít cơ các bác. Do đó sẽ up ảnh trước khi hàn để nhìn rõ các modul và vài cái sau khi đã hoàn tất cắm linh kiện vào.

      Bắt đầu review các bác nhé !

      VỀ TÍNH NĂNG mời các bác tham khảo trên website của MH Tech, em chả viết lại làm gì
      http://minhhaco.com/index.php?act=vi...st&cid=1&id=15

      Về $$$, em thấy là 150k PCB không là quá tốt so với chất lượng và công sức bỏ ra vẽ cái mạch này. Các bác cứ thử tính xem, anh em mình tự làm lấy một cái KIT để học, công vẽ đã đành, rồi còn đi đặt một cái mạch in mới củ chuối, tính ra mạch 2 lớp đầy đủ tên linh kiện, mã lỗ, cũng ngót nghét cái giá này rồi, có khi hơn. Đơn cử gà như em, vừa làm cái đồ án đặt có 2 mạch hơn 1dm2 tí ở ĐVH đã 123k rồi, bác nào ko tin em cho xem hóa đơn:P Và thêm một điều nữa, em chưa thấy chỗ làm mạch in nào ở VN cho làm prototype mà có chất lượng như thế này cả, đường mạch 30, 50 mil còn chập lung tung, nói chi mấy cái đường mạch bé như sơi tóc thế này.
      Ừ thì có bác bảo, vẽ KIT luyện trình Orcad, Protel. Cũng đúng, nhưng chờ mình luyện xong thì thằng bán vé xố nó cũng biết dùng PIC rồi, hehe. Nói vui thế chứ, các bác chỉ cần cầm trên tay mạch này cũng ngẫm ra được khối điều, khối kinh nghiệm vẽ PCB đấy ợ. Tóm lại là cái gì tiện thì mình nên dùng, trình vẽ mạch in thì cứ luyện từ từ, còn bộ công cụ như thế này, theo em, nên đầu tư.
      Như vậy là 150k tiền PCB, thêm tầm 200k các thể loại lk khác, đắt nhất là con PIC(50k), cái LCD 1602 (55k), còn lại vài con IC, cái led matrix, dăm ba chục, thế là ngon lành cành đào. Đấy là em tính mua hết các lk, các bác đi xin xỏ mượn mõ được thì còn rẻ nữa Tổng lại 350k cho một bộ công cụ học tập đầy tính năng lại đẹp mê hồn.

      Tiếp theo là đến phần chất lượng làm mạch in.


      Một ít đã được trình bày ở trên.
      Mạch tuy khá đầy đủ tính năng nhưng có kích thước rất nhỏ gọn 110mm x 137mm
      (nhỏ mới hiện đại mà), như vậy tiện mang đi mang lại, bác nào mặc mấy cái quần hiphop chắc đút vừa túi quần đấy:P
      Phíp là loại có chất lượng tốt, khá dày 1 li rưỡi, phíp nhìn đặc và trong chứ không xốp và đục như mấy cái phíp đểu hay mua để là mạch in hay phíp của ĐVH


      Em thử ấn ấn bẻ bẻ, chắc tại tay em yếu, chứ không hề thấy cái board bị cong hay biến dạng của lực. BÁc nào tay khỏe hơn thì thử lại hộ em phát



      Board được phủ đỏ chứ không phải xanh đồng lúa như của MikroE, hay các board thông dụng chúng ta hay đi đặt. Điều này tạo điểm nhấn và sự khác biệt khi để em nó giữa một đống các thể loại mạch khác(toàn màu xanh). Về màu mè thế này em đánh giá cao hai sp của VN là EasyPIC của MH và Tme.

      Tên linh kiện và giá trị được ghi khá rõ ràng, như vậy rất thuận lợi cho việc hàn linh kiện. Các modul được để tách bạch với nhau. Mạch được mã lỗ băng bạc thì phải, nên cho dù em có hàn bằng thiếc đểu, mỏ hàn tàu vẫn rất ăn và ngấu thiếc. Đồng thời mạ bạc cũng hợp với màu đỏ của board hơn là mạ vàng.

      Tóm lại, do mạch được đặt ở nước ngoại nên công nghệ tốt hơn hẳn, mạch in đẹp và rát phờ râu (pro)

      Nhận xét về kĩ năng vẽ mạch và sắp xếp linh kiện:
      Phải nói là nhiều người sẽ đồng ý với em về việc đi các đường mạch rất khoa học và pro của board này.
      Mạch đi 2 lớp, lớp trên là các đường dọc trong khi lớp dưới chỉ đi ngang. Các đường bo góc gọn và đều. Đường mạch của tín hiệu nhỏ trong khi các đường nguồn và đất đi to và chắc chắn. Nhớ lại cái mạch AVR hay gì đó của một bạn nào đăng giá 800k mà đi 2 lớp lớp dưới autorout, lớp trên thay vì jump thì là mạch mà buồn cười

      cận cảnh thử một vài đường mạch đây ạ
      Linh kiện được sắp xếp với diện tích tối thiểu, gần như không có mảnh đất trống nào trên mạch. Cụ thể em xin trình bày sau với từng module
      Last edited by HTAluvBebeo; 08-06-2008, 11:38.

      Comment


      • #4
        Chi tiết các module trong mạch

        Ta đi từ khối nguồn.

        Cũng cơ bản như các board khác, vẫn là diode cầu, regulator và tụ lọc. Có thể thấy người làm mạch hơi lãng phí khi cho một con diod cầu tận 6A vào, thật là phí quá:P, đắt hơn cầu 2A những 500VND cơ đấy:P Là phí phạm 500vnd hay đây là sự cẩn thận của người vẽ mạch?. Regulator là 7805, với đầy đủ 2 tụ lọc đầu vào và 2 tụ lọc đầu ra cho tần số thấp và cao. Như vậy có thể sử dụng nguồn AC or DC với một cục adapter chợ giời thoải mái


        Cũng trong khối nguồn này có chỗ cắm jump cho phép dùng nguồn của USB, tạo sự thuận lợi khi có máy tính, có cable USB mà ngại lấy adapter cắm vào. Nhưng xin lưu ý với các bạn, nguồn từ USB của máy tính chỉ 500mA thôi nhé
        Đặc biệt có thể thấy một ô nhỏ chứa phần test point, nơi các bạn có thể cắm VOM vào để đo nguồn có đủ hay không. Việc đưa ra các test point như vậy khá cần thiết, tránh trương hợp để đo mạch có đủ nguồn không mà ta vô tình làm chập mạch.


        Các khối giao tiếp có thể kể đến RS232, USB, hồng ngoại, và em xin phép nhét luôn cả mấy cái chân ICSP nạp PIC vào phần này
        Những khối này được gắn gần như là cùng trục với khối nguồn và hướng ra ngoài, ở phía trên của board. Như vậy việc cắm nguồn và cable không gây vướng víu, ảnh hướng khi sử dung board.
        USB được sử dụng là loại đầu vuông Type-B, và có kèm theo jump đẻ chọn chân giao tiếp cho phù hợp với các PIC có hỗ trợ USB
        http://farm3.static.flickr.com/2313/...10e596.jpg?v=0

        RS232 được thiết kế khá sáng tạo khi 4 con tụ và max232 được để dưới gầm của LCD.

        Tác giả gần như đã tận dụng hết mọi chỗ có thể đê đem lại một mạch nhỏ gọn nhất cho người sử dụng. Chỗ cắm cable 232 được khoét lõm vào nhằm tránh va chạm với đầu cable và đầu cắm của rs232 trên mạch không vượt quá khuôn viên mạch.


        5 chân hỗ trợ nạp ICSP cho PIC cũng được đặt ở góc trên cùng bên trái, vừa đủ chỗ để cắm cable vào hay cũng vừa khít cho PICKit2.


        Mắt thu hồng ngoại 3 chân được sắp xếp ngay trên 3 chân cho ds1820 hay lm35. Tất cả những phần này được bố trí hợp lý và nhỏ gọn, chiếm chưa đầy 0.3 cm2 và hướng ngoại, được xếp ở rìa board


        Việc giao tiếp với các ngoại vi khác cũng được bố trí hợp lý.

        EasyPic của MinhHa Tech cho phép người dùng có thể giao tiếp với character LCD, Graphic LCD, Keypad 4x4, RF, RTC ds1307, AT24C16, blah blah

        Toàn bộ các port của PIC đều được lôi ra và đặt thẳng hàng ở phía rìa mép bên phải của EasyPIC. Tổng cộng có 5 Port, tất cả đều được chia thành từng 2 hàng jump 5 chân với đây đủ Vcc và Gnd cũng như tụ lọc 104.


        Việc đưa các port ra giúp người dùng có thể kết nối với các mạch khác trong các ứng dung khác, khi đó EasyPIC sẽ trở thành một modul trung tâm (mainboard). Như vậy khả năng giao tiếp sẽ là không giới hạn và rất linh hoạt.

        Phù em xuống cơm nước đã chiều viết tiếp

        Comment


        • #5
          Thêm phát nữa về đống Port

          trở treo có thể chọn pull up or pull down

          trong mạch cung cấp 4 phím bấm (cugnx cho chọn up or down) số lượng 4 phím là vừa đủ cho những ứng dụng thông thường, nếu muốn luyện thêm quét phím đã có 8 chân cắm cho keypad 4x4

          ADC có 2 kênh được điều chỉnh bởi 2 cái núm vàng vàng ý ạ


          pin backup cho ds1307 có thể chọn có sử dụng hay không


          Phím reset
          thạch anh có thể thay đổi và có thêm một test point nữa để có thể đo xung của thạch anh
          công tắc bit cho phép chọn chế độ cho Port A



          Khối giao tiếp với ds1307 và AT2416 qua Eye to see



          LCD có thể chỉnh contrast, các chân ra có thể gắn dễ dàng với modul RF ngaòi ngoài


          RF TX


          Graphic LCD


          keypad 4x4



          phần này cũng thể hiện sự sáng tạo của người vẽ mạch khi cho 2 đế DIP 18 và 40 lồng nhau


          Tổng kết

          Ưu điểm Chỉ có 1 ưu điểm thôi nhưng quan trọng
          - Chất lượng quá ổn so với giá thành, không còn gì để nói về cái giá và những gì nhận được từ cái giá như thế
          Em cũng hơi sai lầm khi khi bảo đáng đồng tiền bát gạo vì không biết câu nào có nghĩa là quá quá quá đáng giá
          Các bác cứ nhỉn ảnh thì mới chỉ nói được 50% sự đáng giá đó thôi ạ
          Em có hỏi bác MH sao lại bán rẻ thế thì được trả lời rằng, những sẳn phẩm như PIC KIT hay FPGA KIT anh làm không phải để kiếm vài đông lãi mà chủ yếu là để hỗ trợ anh em sinh viên là chính.
          Em xin được cảm ơn anh MH lần nữa
          MẠch này cũng là sản phẩm cũ thôi 2006, sắp có mạch mới, hy vọng mới nhiều sự kế thừa và phát triển hơn.!

          Khuyết điểm: Nhiều lắm ạ

          Về thiết kế có vài chỗ, theo quan điểm cá nhân của em chưa hợp lý lắm.
          1- là LCD nên thiết kế loại 1 hàng chân cho nó có quy chuẩn vì loại 2 hàng chân có con thì chân 1 là Vcc có con chân 1 lại là GND. Cũng trong modul LCD thì việc đk BackLight phải chỉnh lại chút
          2-đế cắm sensor nhiệt gần tản nhiệt của 7805, nếu muốn đo nhiệt của môi trường thì ta phải ròng dây ra xa chứ không nên cắm trực tiếp tại đó sẽ gây ảnh hưởng nhiệt từ 7805.
          Dạ, em mới thấy tưng đó, hì cũng toàn lỗi nhỏ

          Có bạn hỏi thế không có modul led 7T à, thật ra khá đơn giản khi modul led matrix ta làm đế cắm thì có thể thay vào đó là led 7T, kếm 2 modul led 7 T 4in1 là có 8 led 7T để chơi rồi.

          Tóm lại một câu, đây là kit cho các bạn sv và những ai muốn ngâm cứu nên được hỗ trợ lơn từ nhà sản xuất là cty MH Tech.
          Gần như là một sản phẩm được trợ giá, do đó nhà sx hâu như không có lãi mấy, trong khi chất lượng là quá tuyệt vời.
          Last edited by HTAluvBebeo; 08-06-2008, 21:02.

          Comment


          • #6
            Em xin băt đầu phần 2

            em chọn làm với LCD đầu tiên, vì nó là cái giúp ta hiển thị thành quả của công việc ta đang làm, nên là cần thiết.
            Vả lại modul này cũng dễ chơi hehe. Em từ chưa biết gì sau đúng 2 tiếng 10 phút là có thể tự tin viết vài chữ, vẽ con khỉ lên như hình Nên anh em newbie như mình cứ an tâm mà chiến thôi



            Ta bắt đầu.

            Trong phần này em sẽ có các phần

            - 1 vài kiến thức cơ bản về LCD, điểm qua vài vấn đề em nghĩ là quan trọng thui
            - viết/tìm driver
            - 1 vài hiệu ứng đơn giản
            - phần hay nhất là custom character, vẽ con khỉ (hình này em lấy từ project của bon Tây, do chả biết vẽ cái gì cả)

            a. GIỚI THIỆU VỀ MÀN HÌNH LCD

            Trước tiên xin mời các bạn tìm tài liệu về LCD 1602 và datasheet của em HD44780 vì đa số các LCD giao tiếp song song đều tương thích em này cả. Tìm ở đâu: "tự đi mà google đi mấy pa"
            Em kiếm tạm cái hình cho nó sinh động, minh họa thôi nhé chứ chả gắn vào parallel port làm gì


            Chân cẳng thì các bác đọc datasheet chắc thầy rồi em điểm lại:
            • D0-D7 là các data bus gửi và nhận dữ liệu

            • R/W để xác định xem là quá trình ghi (Write) hay đọc (Read)

            • RS là Register selcect. RS =0 cho phép chọn thanh ghi lệnh( Instruction Register), giúp ta đọc và ghi các lệnh với LCD. RS =1 cho phép thao tác với thanh ghi dữ liệu (Data Register). Nói một cách khác, trạng thái của RS giúp ta thao tác các lệnh (0) hay thao tác với các chữ cái (1).

            • Chân E (Enable) cho phép LCD hoạt động hay không. Khi chân E ở mức thấp thì LCD không hoạt động và trạng thái của các chân RS, R/W là không có tác dụng. Khi chân E ở mức cao LCD sẽ hoạt động và tiếp nhận trạng thái của các chân điêu khiển (RS, RW).

            • Vo để điều chỉnh độ tương phẩn, rõ nét của LCD. Có thể điều chỉnh qua biến trở, hoặc cắm thẳng xuống Gnd tì LCD lúc nào cũng rõ nhất. Xin lưu ý với các bạn là không được nhét lên Vcc nhé, có thể gây chết LCD.

            • Vdd, Vss là 2 chân cấp nguồn

            Tiếp theo, khá quan trọng là phải hiêu được về DDRAM và CGRAM, tóm lược lại thì:

            Display Data RAM (DDRAM)

            DDRam là nơi để các bạn có thẻ gửi các kí tự mã ASCII đến đẻ có thể hiển thị trên màn hình. Nó lưu trữ các dữ liệu hiển thị dưới các kí tự 8bit và khả năng lưu trữ lên đến 80 kí tự ( tương đương 80 bytes). Phần DDRAM không sử dụng cho mục đích hiển thị có thể sử dụng như một RAM thông thường. Địa chỉ của DDRAM là vị trí nơi mà bạn muốn data được hiển thị. Các bạn có thể tra datasheet để tháy rõ hơn địa chỉ của DDRAM, ví dụ vị trí bắt đầu dòng 1 là 0x00, vị trí đầu dòng 2 là ox40 (mã hex).


            Character Generator RAM (CGRAM)

            Đây là phần RAM mà ta có thể định nghĩa các kí tự đặc biệt bằng phần mèm. Phần này sẽ hướng dẫn các bạn sau. CGRAM có 64 bytes tất cả, tức là sẽ có 8 kí tự dạng 5*8 pixel có thể định nghĩa và hiển thị đông thời ở dạng này cùng một lúc, thực tế có thể nhiều hơn nếu sử dụng phần mềm viết thay đổi lien tục trong CGRAM.


            Registers

            Có 2 thanh ghi 8 bit. Một là Instruction Register (IR) và hai là Data Register (DR). IR cho phép ta lưu các lệnh (Command) ví dụ như là xóa màn hình hay dịch trái dịch phải, chỉnh các chức năng khác cũng như set địa chỉ cho DDRAM và CGRAM,blah blah. Trong khi đó DR sẽ lưu dữ liệu được ghi vào hoặc được đọc ra từ DDRAM hay CGRAM. Nói nôm na là nó như một trạm trung chuyển khi bạn ghi data và đọc data vào 2 cái RAM kia. Việc chọn là Data Register hay Instruction Register là do chan RS (Register Seclect ) đảm nhiệm. Xem datasheet


            Busy Flag (BF)

            Khi cờ này ở mức 1, nghĩa là LCD đang có việc bân rồi, mời các bác lúc khác quay lại nhé, do đó mọi command lúc này không được chấp nhận. Ta có thể đọc được bit này bằng cach đọc từ IR nghĩa là set RS=0 và RW=1. Trạng thái của cờ này được lưu ở bit7 hay được đọc ra từ chân DB7 của LCD. Khi check được cờ busy này bằng 0 thì có thể ghi các command một cách bình thường. Có trường hợp để tiết kiệm chân vđk thì ta khong dùng chân RW mà lúc nào cũng chỉ ghi thôi thì sẽ tốn thời gian delay để chắc rằng BF đang ở mức thấp.


            Address Counter (AC)
            AC có nhiệm vụ cấp địa chỉ cho cả DDRAM và CGRAM. Các bác có thể đặt địa chỉ của CGRAM và DDRAM bằng cách ghi vào thanh ghi IR, khi đó chính là lúc các bác gửi thông tin về địa chỉ này từ IR đến AC. Sau khi ghi hoặc đọc từ CGRAM hoặc DDRAM giá trị của AC sẽ tăng hoặc giảm 1 ( việc tăng hoặc giảm là do các bác set command).

            Đọc đến đây hẳn sẽ còn mơ hồ vì cái việc quan trọng là ghi vào thanh ghi IR để đưa các command đến LCD thì chưa có. Phân này xin mời các bạn đọc datasheet, mình sẽ viết tiếp( thực ra la dịch sơ lại ý mà) vào lúc sau

            COMMAND





            Việc bắn command vào LCD như đã trình bày ở trên, chỉ việc set RW ở chế độ ghi(0), chân RS ở chế độ IR (0) và enable lcd sau đó bắn data vào thôi. Data bắn vào là các mã hex hoặc bin hoặc Dec gì tùy các bạn. Các mã này thì xin mời các bạn đọc cái bảng command (instruction) trong datasheet, việc thay đổi các lệnh này sẽ thiết lập cho LCD các chế độ khác nhau. Cụ thể hàm để bắn send data vào lcd thế nào sẽ viết trong phần driver.

            Để tiện hơn đã có một bảng tổng kết sẵn các command này




            Nhiệm vụ của các command đã được ghi rõ ở cột trái. Có gì không hiểu thì các bạn chưa nên hỏi vội mà hãy thực hành trước xem cụ thể nó có tác dụng gì, không thấy cái lcd nó xi nhê gì thì feel free to ask. Chắc nhiều bác trên này sẵn sàng giúp đỡ anh em mình. Hì

            Có chú ý là phần entry mode và check busy flag.

            Phần entry mode sẽ tạo ra các hiệu ứng khác nhau như viết chữ ngược, chiều di chuyển của con trỏ bằng cách thay đổi việc tăng hay giảm giá trị AC sau mỗi lần đọc hay ghi DDRAM, CGRAM; kết hợp với có bật Display Shift hay không. Tổng kết lại thì chỉ có 4 command trong phần entry mode này. Không có gì dễ hiểu hơn là các bạn tự test sự khác nhau giữa các command này bằng mạch thật hoặc proteus cũng okie.

            Phần check Busy Flag đơn giản là các bạn đọc bit7 hay trạng thái của chân DB7 trong Instruction Register. Về BF các bạn có thể đọc lại phần ở trên và datasheet.
            Các bước tóm tắt lại có thể là như thế này:
            1. Cho chan RW xuống thấp (Read)
            2. Chọn IR bằng cách cho RS xuống thấp tiếp
            3. Cho chân Enable lên cao
            4. Check bit cuối (bit7) xem là cao hay thấp. Các bit còn lại lúc này sẽ chứa giá trị của AC
            Thực ra dài dòng các bước thế chứ khi đã có driver rồi thì chỉ đơn giản là táng hàm read(); vào thôi sau đó kiêm tra bit 7 là okie

            Thế đã em đi xem robocon đây các bác
            phần tiếp sau em ta sẽ có driver ạ
            Last edited by HTAluvBebeo; 08-06-2008, 20:15.

            Comment


            • #7
              Phù ăn rượu nếp giết sâu bọ say hết cả người) Nên bây giờ mới viết tiếp cho các bác được ạ. j/k

              Tiếp theo để LCD có thể hoạt động được chúng ta phải khởi tạo cho nó (Init). Quá trình khởi tạo chỉ cần diễn ra một lần với LCD mới mua về, sau đó thì chả cần nữa

              Phần Init này chúng ta sẽ đọc cho biết vì mọi thứ đã được làm rồi, chúng ta chỉ cần đọc để hiểu, theo em nghĩ không cần thiết phải tự viết một cái init mới làm gì, dù sao nó cũng chỉ đến thế thôi.

              Những dòng sau đây em lấy từ datasheet., cái này cho 8bit nhé

              Initializing by Internal Reset Circuit
              An internal reset circuit automatically initializes the HD44780U when the power is turned on. The
              following instructions are executed during the initialization. The busy flag (BF) is kept in the busy state
              until the initialization ends (BF = 1). The busy state lasts for 10 ms after VCC rises to 4.5 V.
              1. Display clear
              2. Function set:
              DL = 1; 8-bit interface data
              N = 0; 1-line display
              F = 0; 5 ´ 8 dot character font
              3. Display on/off control:
              D = 0; Display off
              C = 0; Cursor off
              B = 0; Blinking off
              4. Entry mode set:
              I/D = 1; Increment by 1
              S = 0; No shift
              Note: If the electrical characteristics conditions listed under the table Power Supply Conditions Using
              Internal Reset Circuit are not met, the internal reset circuit will not operate normally and will fail
              to initialize the HD44780U. For such a case, initialization must be performed by Instruction.
              Chi tiết các bạn xem thêm trong datasheet để rõ các đặc tuyến nhé.

              Có thêm cái sơ đồ cũng quan trọng trong datasheet đây, cho 4bit


              Phần này em không chú trọng lắm, nên các bác có phần nào chưa rõ xin đọc thêm trong datasheet và có thể đặt thêm câu hỏi.

              Đến phần khá quan trọng, là viết driver. Phần này em xin cung cấp theo thể loại ăn sẵn, chứ sẽ không tự xây dựng lại từ đâu ạ.

              Trình dịch em sử dụng là CCS C bản PCWH 4.020
              Mạch nạp PICKit2
              Kit thì tất nhiên là EasyPic Kit của MH rồi, trên này có sẵn 232 nên dùng luôn cả bootloader cho tiện ạ

              Trong tay em có 3 driver chúng ta có thể cùng tham khảo:

              1 cái em lấy trực tiếp ngay trên trang chủ của MINHHA Tech: đây là một đoạn code hoàn chỉnh có thể nhét vào chạy luôn, nhưng chúng ta có thể trích ra làm driver cho LCD 4bit cho các ứng dụng về sau của chúng ta
              http://minhhaco.com/datasheet/modul_...02_PIC_CCS.pdf

              1 cái là của anhl linhnc308, cái này em xin public mặc dù chưa xin phép, nhưng chắc là okie thôi File đính kèm ở dưới, về nhà em attach sau.


              Như vậy là có 2 driver của 2 mod box PIC rồi nhé hehe. Nhưng em thích dùng cái này hơn
              Flexible driver của CCS forum.
              http://www.ccsinfo.com/forum/viewtopic.php?t=28268

              Nội dung của các driver này tương đối giống nhau về cơ bản. Nó sẽ cung cấp cho chúng ta các hàm có nhiệm vụ:
              - Khởi tạo LCD
              - Gửi byte từ PIC xuống LCD. Việc gửi byte này xuống bao gồm cả việc bắn xuống Instruction Register và Data Register nên phần send byte này có thể hiểu là bao gồm cả gửi command và gửi dữ liệu hiển thị xuống. Thêm nữa, do giao tiếp ở đâylà 4 bit cho tiết kiệm pin, trong khi 1byte là 8bit, do đó phải tách ra thành 2 chuỗi 4bit. Việc xử lý này chúng ta sẽ thây rõ trong driver.
              - Đọc data từ LCD. Chủ yếu là để đọc BF. Cũng có thể trong vài trường hợp ta muốn check lại kí tự tại một vị trí nào đó trên LCD cũng okie.
              - Di chuyển con trỏ đến một vị trí bất kì có tọa độ cột thứ X từ trái qua và dòng thứ Y từ trên xuống
              - Từ hàm ghi và hàm đọc byte chúng ta sẽ có hàm put character và get character.

              Chúng ta băt đầu với cái driver của CCS forum. Driver này em chưa nghĩ ra có thể optimize gì dược nữa không, nó khá là hoàn chỉnh. Trong đó có vài ưu điểm nổi bật là:
              có thể nối LCD với bất kì chân nào của vi điều khiển, ta chỉ cần thay phần khai báo một chút để là okie.
              Cho phép có sử dụng chân R/W hay không (nhằm tiết kiệm chân vđk người ta chỉ ghi vào LCD, nên nối chân RW xuống đất).

              Chúng ta cùng xem cái driver này nhé. Nó dành cho LCD 20x4 nhưng làm việc tốt với 1602
              Code:
              #define LCD_DB4   PIN_B4 
              #define LCD_DB5   PIN_B5 
              #define LCD_DB6   PIN_B6 
              #define LCD_DB7   PIN_B7 
              
              #define LCD_RS    PIN_B0 
              #define LCD_RW    PIN_B1 
              #define LCD_E     PIN_B2 
              
              // If you want only a 6-pin interface to your LCD, then 
              // connect the R/W pin on the LCD to ground, and comment 
              // out the following line.  Doing so will save one PIC 
              // pin, but at the cost of losing the ability to read from 
              // the LCD.  It also makes the write time a little longer 
              // because a static delay must be used, instead of polling 
              // the LCD's busy bit.  Normally a 6-pin interface is only 
              // used if you are running out of PIC pins, and you need 
              // to use as few as possible for the LCD. 
              #define USE_RW_PIN   1      
              
              
              // Hầu hết các LCD tương thích HD44780U đều có địa chỉ các ô 1st của các dòng như sau
              
              #define LCD_LINE_1_ADDRESS 0x00 
              #define LCD_LINE_2_ADDRESS 0x40 
              #define LCD_LINE_3_ADDRESS 0x14 
              #define LCD_LINE_4_ADDRESS 0x54 
              // đây chính là địa chỉ của DDRAM (DDRAM Address)
              
              // Nếu LCD sử dụng HD66712U controller chip
              // thì địa chỉ các chân sẽ thế này 
              /* 
              #define LCD_LINE_1_ADDRESS 0x00 
              #define LCD_LINE_2_ADDRESS 0x20 
              #define LCD_LINE_3_ADDRESS 0x40 
              #define LCD_LINE_4_ADDRESS 0x60 
              */ 
              
              
              //======================================== 
              
              #define lcd_type 2   // 0=5x7, 1=5x10, 2=2 lines(or more) 
              
              int8 lcd_line; 
              // Dưới đây là một string các command dùng cho việc khởi tạo LCD
              int8 const LCD_INIT_STRING[4] = 
              { 
               0x20 | (lcd_type << 2),  // Set mode: 4-bit, 2+ lines, 5x8 dots 
               0xc,                     // Display on 
               1,                       // Clear display 
               6                        // Increment cursor 
               }; 
                                            
              // Do giao tiếp 4bit nên ta phải send từng 4 bit , 
              //để send được 1 byte ta thực hiện send liên tiếp 2 lần 4bit
              //------------------------------------- 
              void lcd_send_nibble(int8 nibble) 
              { 
              // Note:  !! converts an integer expression 
              // to a boolean (1 or 0). 
               output_bit(LCD_DB4, !!(nibble & 1)); 
               output_bit(LCD_DB5, !!(nibble & 2));  
               output_bit(LCD_DB6, !!(nibble & 4));    
               output_bit(LCD_DB7, !!(nibble & 8));    
              
               delay_cycles(1); 
               output_high(LCD_E); 
               delay_us(2); 
               output_low(LCD_E); 
              } 
              
              //----------------------------------- 
              // This sub-routine is only called by lcd_read_byte(). 
              // It's not a stand-alone routine.  For example, the 
              // R/W signal is set high by lcd_read_byte() before 
              // this routine is called.      
              // Phần này là 4bit để gọi hàm read_byte, đọc từ LCD ra PIC
              
              #ifdef USE_RW_PIN 
              int8 lcd_read_nibble(void) 
              { 
              int8 retval; 
              // Create bit variables so that we can easily set 
              // individual bits in the retval variable. 
              #bit retval_0 = retval.0 
              #bit retval_1 = retval.1 
              #bit retval_2 = retval.2 
              #bit retval_3 = retval.3 
              
              retval = 0; 
                  
              output_high(LCD_E); 
              delay_us(1); 
              
              retval_0 = input(LCD_DB4); 
              retval_1 = input(LCD_DB5); 
              retval_2 = input(LCD_DB6); 
              retval_3 = input(LCD_DB7); 
                
              output_low(LCD_E); 
              delay_us(1); 
                  
              return(retval);    
              }    
              #endif 
              
              //--------------------------------------- 
              // Read a byte from the LCD and return it. 
              
              #ifdef USE_RW_PIN 
              int8 lcd_read_byte(void) 
              { 
              int8 low; 
              int8 high; 
              
              output_high(LCD_RW);    // Chân RW lên cao là READ
              delay_cycles(1); 
              
              high = lcd_read_nibble();    //   đọc 4 bit thấp
              
              low = lcd_read_nibble();    //     đọc 4 bit cao
              
              
              return( (high<<4) | low);   //ghép 4bit thấp và 4bit cao thành 1 byte và return
              } 
              #endif 
              
              //---------------------------------------- 
              // Send a byte to the LCD. 
              // address = 0 nếu muốn ghi vào IR, hay là gửi command
              //  address = 1 là ghi dữ liệu muốn hiển thị vào
              
              void lcd_send_byte(int8 address, int8 n) 
              { 
              output_low(LCD_RS);     
              
              #ifdef USE_RW_PIN 
              while(bit_test(lcd_read_byte(),7)) ;    //  check Busy Flag
              #else 
              delay_us(60);  
              #endif 
              
              if(address) 			// nếu address = 1 thì cho chân RS lên cao
                 output_high(LCD_RS);      //, ghi vào DR để hiển thị
              else 
                 output_low(LCD_RS);       // nếu address = 0 thì RS xuống thấp, ghi vào IR
                    
               delay_cycles(1); 
              
              #ifdef USE_RW_PIN 
              output_low(LCD_RW);       // RW=0, thực hiện quá trình ghi
              delay_cycles(1); 
              #endif 
              
              output_low(LCD_E);      
              
              lcd_send_nibble(n >> 4);   // gửi 4bit thấp
              lcd_send_nibble(n & 0xf);  // gửi 4bit cao
              } 
              //---------------------------- 
              // Hàm khởi tạo LCD, các bạn tham khảo thêm datasheet.
              void lcd_init(void) 
              { 
              int8 i; 
              
              lcd_line = 1; 
              
              output_low(LCD_RS); 
              
              #ifdef USE_RW_PIN 
              output_low(LCD_RW); 
              #endif 
              
              output_low(LCD_E); 
              
              // Some LCDs require 15 ms minimum delay after 
              // power-up.  Others require 30 ms.  I'm going 
              // to set it to 35 ms, so it should work with 
              // all of them. 
              delay_ms(35);          
              
              for(i=0 ;i < 3; i++) 
                 { 
                  lcd_send_nibble(0x03); 
                  delay_ms(5); 
                 } 
              
              lcd_send_nibble(0x02); 
              
              for(i=0; i < sizeof(LCD_INIT_STRING); i++) 
                 { 
                  lcd_send_byte(0, LCD_INIT_STRING[i]); 
                  
                  // If the R/W signal is not used, then 
                  // the busy bit can't be polled.  One of 
                  // the init commands takes longer than 
                  // the hard-coded delay of 50 us, so in 
                  // that case, lets just do a 5 ms delay 
                  // after all four of them. 
                  #ifndef USE_RW_PIN 
                  delay_ms(5); 
                  #endif 
                 } 
              
              } 
              
              //---------------------------- 
              // Đưa con trỏ đến vị trí x, y
              // thực chất là set giá trị của DDRAM Address
              // Với LCD 1602 có thể có giá trị x >16 và y>2 nhưng sẽ không hiển thị
              // Muốn hiển thị có thể scroll đến vị trí đó, sẽ gt sau
              
              void lcd_gotoxy(int8 x, int8 y) 
              { 
              int8 address; 
              
              
              switch(y) 
                { 
                 case 1: 
                   address = LCD_LINE_1_ADDRESS; 
                   break; 
              
                 case 2: 
                   address = LCD_LINE_2_ADDRESS; 
                   break; 
              
                 case 3: 
                   address = LCD_LINE_3_ADDRESS; 
                   break; 
              
                 case 4: 
                   address = LCD_LINE_4_ADDRESS; 
                   break; 
              
                 default: 
                   address = LCD_LINE_1_ADDRESS; 
                   break; 
                    
                } 
              
              address += x-1; 
              lcd_send_byte(0, 0x80 | address);   // gửi địa chỉ đến DDRAM Address trong IR
              } 
              
              //----------------------------- 
              // Hàm dưới đây sẽ gửi ra các kí tự bạn muốn lên LCD
              
              void lcd_putc(char c) 
              { 
               switch(c) 
                 { 
                  case '\f': 
                    lcd_send_byte(0,1);   	 //  các bạn xem lại bảng tóm tắt command
                    lcd_line = 1; 		// khi các bạn gửi “/f”, ghi 0x01 vào IR
                    delay_ms(2); 		// sẽ xóa màn hình- clear screen
                    break; 
                  
                  case '\n': 				// xuống dòng
                     lcd_gotoxy(1, ++lcd_line); 	// tăng địa chỉ dòng lên 1
                     break; 
                  
                  case '\b': 				// xóa 1 ki tự
                     lcd_send_byte(0,0x10); 		// bằng cách đưa con trỏ sang trái 1 kí tự
                     break; 
                  
                  default: 
                     lcd_send_byte(1,c);   		// hiển thị kí tự bằng cách ghi vào DR
                     break; 
                 } 
              } 
              
              //------------------------------ 
              // Hàm dưới đây sẽ đọc ra 1 giá trị đã hiển thị trên LCD
              // Nói cách khác là đọc byte từ DR
              
              #ifdef USE_RW_PIN 
              char lcd_getc(int8 x, int8 y) 
              { 
              char value; 
              
              lcd_gotoxy(x,y); 
              
              // Wait until busy flag is low. 
              while(bit_test(lcd_read_byte(),7));    // Kiểm tra BF
              
              output_high(LCD_RS); 		// Chọn DR
              value = lcd_read_byte(); 		// đọc giá trị từ DR
              output_low(LCD_RS); 
              
              return(value); 				
              } 
              #endif
              Chắc code cũng dễ hiểu, các bác có thể không đọc comment cũng có thể hiểu rồi, nhưng em cứ ngứa tay gõ linh tinh vào ạ.
              Phần sau sẽ là về một vài hiệu ứng như dịch trái, dịch phải, tạo custom character, animation.
              Em đang ở cty nên không mang theo code ạ, nên xin tạm dừng tại đây,
              Last edited by HTAluvBebeo; 09-06-2008, 10:49.

              Comment


              • #8
                Thế ra lúc đầu chú Bé Béo cắm sai diode cầu hả?
                Đêm nay tớ không ngủ - ngày mai tớ ngủ bù

                Comment


                • #9
                  Mấy cái đế cắp chip, em nên dùng cái đế lỗ tròn cho dễ

                  Comment


                  • #10
                    Không biết bác MH sắp ra cái kit dspic chưa để tậu 1 cái mới được

                    Comment


                    • #11
                      THX các bác đã ủng hộ, nếu có thời gian, mong được các bác ghé qua cho ý kiến và post vài vấn đề như về mấy con ds18s20, lm35, etc mấy cái có trên kit hoặc ngoài kit cũng okie, ta cùng giúp anh em newbie như em với ạ
                      Có sai sót gì các bác góp ý nhiệt tình với ạ

                      @anh Hùng
                      Bác Hùng tinh thế
                      Em biết ngay kiểu gì cũng lộ
                      Em cắm lúc ngái ngủ, thế là về sau phải cậy mãi mới ra ạ

                      Thx bác david

                      @cdt: bác MH sắp ra PIC Kit mới thôi ạ, để em hỏi lại xem có phải dsPIc không
                      Last edited by HTAluvBebeo; 08-06-2008, 18:14.

                      Comment


                      • #12
                        Một vài lời chân thành.
                        Mình chưa hề biết HTAluvBebeo ( sorry vì chưa biết hay không nhớ tên thật của bạn). Đến khi có nick lạ chát với mình. Mình thấy đây là một bạn có lòng đam mê với điện tử. Sau một hồi, mình mới biết đây không phải là sinh viên ngành kỹ thuật. Nhưng bạn lại có nhiệt huyết và nặng nợ với điện tử.
                        Mình tặng bạn PCB KIT và LCD. Với mong muốn.
                        Khi bạn dùng nó, nếu có thể bạn hãy lấy kiến thức bạn biết được để truyền lại cho những người chưa biết, để chúng ta không phải tuần tự mò mẫm bắt đầu từ đầu. Thế hệ đi trước cố gắng tạo cho lớp đi sau một bệ phóng, lúc đó mới hi vọng họ đi nhanh hơn mình được. Đó cũng là một tiêu chí của diễn đàn này.
                        và bạn đã làm như vậy ( một người duy nhất trong số hơn chục người mà mình hy vọng họ làm như bạn)
                        Rất cám ơn bạn về việc này, bạn cho mình niềm tin để cố gắng chia sẻ với những người khác.
                        Một bạn sinh viên không phải dân điện tử còn làm được tại sao các bạn dân điện tử lại k?
                        Nếu các bạn thực sự đam mê điện tử và có suy nghĩ sẽ cùng nhau để cộng đồng điện tử lớn mạnh thì liên hệ. MinhHa Technologies sẽ hỗ trợ các bạn với tất cả khả năng có thể.

                        Mong HTAluvBebeo viết đúng những gì em nghĩ, em làm, không vì lý do cá nhân.
                        Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

                        Biến tần
                        Máy giặt
                        Lò vi sóng
                        Bếp từ.
                        Tủ lạnh.
                        Điều hòa

                        Comment


                        • #13
                          Lại bài review kiểu VOZ hả , mà học nhanh phết nhẩy.

                          Chú làm thế này lại mệt anh Dũng rồi hehe

                          Comment


                          • #14
                            @anh Dũng:
                            trước lúc đó thì anh chưa biết em làm sao mà quên tên được, hehe.
                            Em cũng hay theo dõi diễn đàn, nhớ có bác nào cầm con Kit ARM chưa trả anh với cả cũng có lần anh đề cập cho nhiều bạn kit và hỗ trợ các thứ mà các bạn không share lại, nên lần này em phải làm khác ạ

                            Em cũng mong muốn mọi thứ, các công cụ học tập, các TUT những thứ thật cơ bản được tập hợp lại. Quan trọng là những cái cơ bản, làm tốt cơ bản rồi thì về sau cứ thế tằng tằng mà tiến hehe.
                            Em mong được mọi người cùng giúp đỡ viết cùng, những khối cơ bản thế này, một mình em khó lòng có thể làm hết, viết hết được. Nên rất rất muốn được anh em cùng chung sức tổng hợp lại cho anh em cùng có tài liệu học tập.
                            Về lý do cá nhân anh bảo, em còn chưa mường tượng ra cái lý do cá nhân đấy là gì anh thử cho ví dụ phát. Em viết cái này một phần vì đã hứa thế, thì phải làm thế. Nhưng cái chính là em muốn góp sức cho diễn đàn, muốn phong trào share kiến thức giúp cộng đồng cùng nhau phát triển anh ạ
                            Rất mong được các anh ủng hộ

                            @anh Hòa: hehe đậm chất VOZ anh nhỉ
                            Em mong mọi người viết nhiều review các tool hay các thứ hữu ích cho mọi người cùng tham khảo. Bên VOZ review case thùng, quạt bàn quạt nước:P thì anh em mình review thiếc chì, máy hàn máy khò, anh nhỉ
                            Mà em học cũng không nhanh lăm đâu hoàn cảnh bắt buộc làm nhanh để còn làm việc khác ạ, với cả học xong một lúc em lại delay một thời gian dài sau rồi mới quay lại học tiếp mà, nên tính tổng lại vẫn chậm lắm
                            Em cũng mong học được nhanh, muốn thế thì khổ anh Linh với anh Hòa bị hỏi nhiều thôi, hehe.

                            Comment


                            • #15
                              Về lý do cá nhân anh bảo, em còn chưa mường tượng ra cái lý do cá nhân đấy là gì anh thử cho ví dụ phát. Em viết cái này một phần vì đã hứa thế, thì phải làm thế. Nhưng cái chính là em muốn góp sức cho diễn đàn, muốn phong trào share kiến thức giúp cộng đồng cùng nhau phát triển anh ạ
                              Rất mong được các anh ủng hộ
                              Ý anh là chỉ gói gọn về kỹ thuật, không lăng xê cái khác, nếu không sẽ mất ý nghĩa bài viết và công sức của em vì bị hiểu lầm.
                              Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

                              Biến tần
                              Máy giặt
                              Lò vi sóng
                              Bếp từ.
                              Tủ lạnh.
                              Điều hòa

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X