|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
|
07-04-2009, 11:23 AM | #1 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Điều khiển LED qua USB
Nay đệ muốn điều khiển 10 LED thông qua cổng USB theo kiểu: trên màn hình máy tính có giao diện, sau khi qua cổng USB thì có PIC P16F877A viết bởi CCS. Vấn đề này không mới, song bản thân chưa có nhiều hiểu biết sâu sắc. Vì vậy, muốn tham khảo các sư huynh:
Mô hình thực hiện vấn đề này như thế nào. Rất mong hồi âm! |
07-04-2009, 06:17 PM | #2 | |
Trưởng lão PIC bang
|
Trích:
Máy tính <=> USB-to-serial converter <=> PIC16F877A => LED Giao diện trên máy tính chỉ cần dùng giao tiếp RS-232 qua cổng COM ảo của bộ USB-to-serial converter. PIC16877A chỉ cần dùng giao tiếp RS-232, và xuất dữ liệu ra LED. Những vấn đề này đều đã được đề cập ở picvietnam. Cần chú ý là PIC16F877A không hỗ trợ giao tiếp USB, do đó nếu bạn muốn dùng trực tiếp giao tiếp USB (sẽ tốn nhiều thời gian và công sức) thì nên chuyển sang một PIC18 có hỗ trợ module ngoại vi USB như PIC18Fx450, hoặc PIC18Fx455, hoặc PIC18Fx550. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
07-04-2009, 06:21 PM | #3 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Sao không thấy huynh nào giúp mình vậy?
|
07-04-2009, 06:28 PM | #4 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Cám ơn namqn! Quả thật “Giao diện trên máy tính chỉ cần dùng giao tiếp RS-232 qua cổng COM ảo của bộ USB-to-serial converter.” Đây là vấn đề tôi còn “Gà mờ” lắm, viết giao diện như thế nào? Bạn có thể cho tôi một đọan mẫu được không?
|
07-04-2009, 07:08 PM | #5 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
Bạn kiếm chổ nào gần nhà học một khóa cấp tốc về Visual Basic trước cái đã.
|
07-04-2009, 08:44 PM | #6 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Quả thật, đệ là dân ngoại đạo, cho nên lờ mờ về IT lắm, nay gặp vấn đề này cũng tự mình muốn mày mò để làm song khó quá. Bữa trước, đệ có đọc cái TUT “Hướng dẫn giao tiếp máy tính từ A đến Z”của minhtuan04 trên diễn đàn điện tử, tối về “vọc ” như hướng dẫn thì thành công liền với mô phỏng Protues. Có điều, bây giờ đệ muốn thay C# bởi Visual Basic, thay 8051 bởi PIC P16F887A. Với Pic thì đệ mới học và cũng có thể thao tác được với vài bài tập đơn giản, song với Visual Basic thì khó quá, cho nên bây giờ đệ muốn “ăn” xong phần “Máy tính <=> USB-to-serial converter” như lời trưởng lão PIC bang đã nói. Mong các huynh chỉ giúp!
|
07-04-2009, 09:16 PM | #7 | |
Trưởng lão PIC bang
|
Trích:
http://www.picvietnam.com/forum/showthread.php?t=869 Việc ứng dụng thì thực ra khá đơn giản, chỉ cần dùng địa chỉ cổng COM ảo thay cho địa chỉ cổng COM trong hướng dẫn trên. Về chi tiết cách tạo giao diện thì bạn có thể tham khảo thêm tutorial sau (viết cho VC++): http://www.picvietnam.com/forum/showthread.php?t=274 Cả hai tutorial đều sử dụng MSComm control của Microsoft. Bạn có thể tham khảo cách dùng MSComm trong VB ở đây: http://www.users.on.net/~cit/html/vi...m_control.html Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
07-04-2009, 06:56 PM | #8 |
Đệ tử 1 túi
Tham gia ngày: Mar 2008
Bài gửi: 14
: |
You must find by yourself!
|
26-04-2009, 10:27 PM | #9 | |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Trước hết, em xin chân thành cám ơn anh Nam đã bớt chút thời gian chỉ giáo!
Vì em mô phỏng bởi Proteus nên em dùng phần mềm "Virtual Serial Port Driver" để nối 2 cổng ảo, một COM5 trên PC và một COM4 trên COMPIM. Có lẽ em phải tiến hành từng phần nhỏ một (trước hết là qua cổng COM) chính vì thế mà em muốn nói là chưa giả lập được cổng COM!!? Trích:
Anh thông cảm, em sẽ học cách cho vào Tag sau. thay đổi nội dung bởi: TANDEM, 27-04-2009 lúc 09:30 AM. |
|
27-04-2009, 12:47 AM | #10 | |
Trưởng lão PIC bang
|
Trích:
Về phần thao tác trực tiếp trên thanh ghi PORTD, cụ thể hơn một chút nữa là như sau: - Bạn khai báo thêm biến PORTD_img, và sửa chương trình xử lý ngắt như dưới đây: Code:
char ch, PORTD_img; #INT_RDA Receive_isr() { if (kbhit()) { ch = getc(); if (ch=='a') PORTD_img |= 0x01; //Bat bit RD0 if (ch=='b') PORTD_img |= 0x02; //Bat bit RD1 if (ch=='c') PORTD_img |= 0x04; //Bat bit RD2 if (ch=='d') PORTD_img |= 0x08; //Bat bit RD3 if (ch=='e') PORTD_img |= 0x10; //Bat bit RD4 if (ch=='f') PORTD_img &= 0xFE; //Tat bit RD0 if (ch=='g') PORTD_img &= 0xFD; //Tat bit RD1 if (ch=='h') PORTD_img &= 0xFB; //Tat bit RD2 if (ch=='i') PORTD_img &= 0xF7; //Tat bit RD3 if (ch=='j') PORTD_img &= 0xEF; //Tat bit RD4 PORTD = PORTD_img; } } - Bạn không cần dùng mấy dòng #define may1 RD0 ... #define may5 RD4 Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
26-04-2009, 10:33 PM | #11 |
Đệ tử 4 túi
Tham gia ngày: Apr 2006
Bài gửi: 71
: |
Mình có một ý nhỏ: bạn đã làm được với 8051 vậy bạn đã làm trên mạch thật chưa? Nếu rồi thì bạn thiết kế giao diện trên VB cho chạy được với 8051 đi (cho chắc phần VB là OK_bạn thiết lập trên VB là COM5 thì trên phần mềm chuyển đổi cũng là COM5).
Sau đó bạn viết code cho PIC (cho 8051 nhận bao nhiêu byte thì cho PIC nhận bấy nhiêu byte). |
26-04-2009, 11:00 PM | #12 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Mình đã làm với PIC và tất cả đã chạy nghĩa là "PC và PIC đã bắt tay với nhau", tuy nhiên như mình nói là khi chương trình chạy thì nó không theo ý đồ của mình?
|
27-04-2009, 08:57 AM | #13 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Cám ơn anh Nam nhiều lắm! Em sẽ thử lại và báo cáo với anh sau.
|
27-04-2009, 07:55 PM | #14 |
Đệ tử 2 túi
Tham gia ngày: Aug 2008
Bài gửi: 40
: |
Em đã làm theo hướng dẫn của anh (có sửa lại một chút khi set bit ở portD) và sau đó chương trình đã chạy như ý muốn. Có điều các lệnh sau em chưa hiểu:
Code:
PORTD_img |= 0x01; ............... PORTD_img &= 0xFE; ............... PORTD = PORTD_img; |
27-04-2009, 08:20 PM | #15 | ||
Trưởng lão PIC bang
|
Trích:
Trích:
Vào thời điểm này, có lẽ bạn chưa cần tìm hiểu sâu hơn về hoạt động read-modify-write, nhưng nếu bạn dứt khoát phải tìm hiểu, thì vấn đề này đã được tôi và nhiều thành viên khác thảo luận cũng lâu rồi. Bạn hãy dùng công cụ "Tìm kiếm" ở thanh mênu của diễn đàn với từ khóa "read-modify-write" để tìm các bài viết liên quan. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
||