BỘ GIÁO DỤC DỤC VÀ ĐÀO TẠO TẠO TRƢỜNG ĐẠI ĐẠI HỌC HỌC SƢ PHẠM PHẠM K Ỹ THUẬ THUẬT TP. HCM KHOA ĐIỆN ĐIỆN - ĐIỆN ĐIỆN TỬ TỬ ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ -- VIỄ VIỄN THÔNG -------------------
ĐỒ ÁN MÔN HỌC 2 Ngành: Công Nghệ Kĩ Thuật Máy Tính
ĐỀ TÀI
ĐO NHIỆT ĐỘ GIAO TIẾ TIẾP MÁY TÍNH QUA CỔ CỔNG USB
GVHD : SVTH :
ĐẬU ĐẬU TR ỌNG HIỂ HIỂN PHẠ PHẠM QUỐ QUỐC HUY
MSSV: 09119015
TP. HỒ HỒ CHÍ MINH – MINH – 1/2012 1/2012
Đại Đại Học Phạm K ỹ Thuậ Học Sƣ Phạm Thuật Khoa Điện Điện – Điệ – Điện n Tử Tử Bộ Môn Điện Điện Tử Tử Vi Viễễn Thông
VIỆTNAM CỘNG HÒA XÃ HỘ HỘI CHỦ CHỦ NGHĨA VIỆTNAM Độc Độc Lậ Lập – T – Tự Do ự Do – – H Hạnh Phúc Ngày……tháng … năm 201..
PHIẾ PHIẾU CHẤM CHẤM ĐỒ ÁN MÔN HỌ HỌC 02 (Dành cho người hướ ng ng dẫn) 1. Họ tên sinh viên : Phạm Quốc Huy MSSV: 09119015 2. Tên đề tài : Đo nhiệt độ giao tiế p máy tính qua cổng usb 3. Giáo viên hướ ng ng dẫn: KS.Đậu Tr ọng Hiển 4. Nh 4. Những ưu điể m của Đồ án : .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... 5. Những thiếu sót của Đồ án: .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... Đề nghị : Đượ c bảo vệ: Bổ sung để đượ c bảo vệ: Không đượ c bảo vệ: 6. Các câu h ỏi sinh viên ph ải tr ả lời trướ c Tổ chấm ĐAMH: a) .............................................................................................................................. .............................................................................................................................. .............................................................................................................................. b) .............................................................................................................................. .............................................................................................................................. .............................................................................................................................. c) ............................................................................................. ............................................................................................................................... .................................. ............................................................................................. ............................................................................................................................... .................................. ............................................................................................. ............................................................................................................................... .................................. 7. Đánh giá Điểm (Số và chữ):………………………………..
CHỮ KÝ CHỮ KÝ và HỌ HỌ TÊN
Đại Đại Học Phạm K ỹ Thuậ Học Sƣ Phạm Thuật Khoa Điện Điện – Điệ – Điện n Tử Tử Bộ Môn Điện Điện Tử Tử Vi Viễễn Thông
VIỆTNAM CỘNG HÒA XÃ HỘ HỘI CHỦ CHỦ NGHĨA VIỆTNAM Độc Độc Lậ Lập – T – Tự Do ự Do – – H Hạnh Phúc Ngày……tháng … năm 201..
PHIẾ PHIẾU CHẤM CHẤM ĐỒ ÁN MÔN HỌ HỌC 02 (Dành cho người hướ ng ng dẫn) 1. Họ tên sinh viên : Phạm Quốc Huy MSSV: 09119015 2. Tên đề tài : Đo nhiệt độ giao tiế p máy tính qua cổng usb 3. Giáo viên hướ ng ng dẫn: KS.Đậu Tr ọng Hiển 4. Nh 4. Những ưu điể m của Đồ án : .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... 5. Những thiếu sót của Đồ án: .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... .............................................................................................. ............................................. ............................................................................................ ........................................... Đề nghị : Đượ c bảo vệ: Bổ sung để đượ c bảo vệ: Không đượ c bảo vệ: 6. Các câu h ỏi sinh viên ph ải tr ả lời trướ c Tổ chấm ĐAMH: a) .............................................................................................................................. .............................................................................................................................. .............................................................................................................................. b) .............................................................................................................................. .............................................................................................................................. .............................................................................................................................. c) ............................................................................................. ............................................................................................................................... .................................. ............................................................................................. ............................................................................................................................... .................................. ............................................................................................. ............................................................................................................................... .................................. 7. Đánh giá Điểm (Số và chữ):………………………………..
CHỮ KÝ CHỮ KÝ và HỌ HỌ TÊN
Đo nhiệt độ giao ti ế ếp m áy tín h qu a c ổ ổng g us n u sb
Tr ang I
PHẦ PHẦN A: GIỚ GIỚ I THIỆ THIỆU Xin chào quý th ầy cô cùng các b ạn sinh viên khoa Điệ n - Điện T ử trườ ng ng Đại H ọc Sư Phạm Kĩ Thuật Tp.Hcm. Ngườ i thực hiện đề tài gồm Ph ạm Qu ốc Huy sinh viên khoa điện - điện tử ngành công nghệ k ỹ thuật máy tính khoá 2009.Trong đồ án môn học 2 này nhóm thực hiện đề tài chọn đề tài: “Đo nhiệt độ giao tiế p máy tính qua c ổng usb”. Trong đề tài này. Nhiệt độ đo được và đượ c chuyển lên máy tính, máy tính nh ận dữ liệu hi ển th ị trên phần mềm b ằng ngôn ngữ C#. Máy tính s ẽ tổng h ợ p và v ẽ ra biểu đồ nhiệt độ theo thờ i gian.
Đo nhiệt độ giao ti ế ếp m áy tín h qu a c ổ ổng g us n u sb
Trang I I
LỜ I CẢM CẢM ƠN Để hoàn thành sản phẩm và bài báo cáo này nhóm th ực hiện đề tài xin chân thành c ảm ơn sự giúp đỡ và hướ ng ng dẫn tận tình của quý thầy cô khoa điện – điện tử trườ ng ng ĐHSPKT Tp.Hcm, đặc biệt là thầy Đậu Tr ọng Hiển. Dù đã có nhiều cố gắng nhưng chắc chắn còn nhiều điểm thiếu sót và yếu kém. R ất mong sự đóng góp của quý thầy cô cũng như các bạn để nhóm thực hi ện đề tài có thể hoàn thiện hơn trong nhữ ng bài báo cáo sau.
Lớ p K ỹ Thuật Máy Tính – Khóa 2009 Phạm Quốc Huy
Đo nhiệt độ giao ti ếp m áy tính qu a c ổn g usb
Trang II I
MỤC LỤC PHẦN A: Giớ i thiệu ....................................................................................................I Lờ i cảm ơn ......................................................................................................... II Mục lục ............................................................................................................... III Liệt kê các hình và các b ảng .............................................................................. V PHẦN B: NỘI DUNG .................................................................................................1 CHƢƠNG1: ĐỀ CẬP VẤN ĐỀ .................................................................................1 CHƢƠNG2: MỤC TIÊU CỦA ĐỀ TÀI ................................................................... 2 2.1 Mục tiêu của đề tài .......................................................................................2 2.2 Giớ i hạn đề tài nghiên cứu ........................................................................... 2 2.3. Ý nghĩa khoa họ c và thực tiễn của đề tài .................................................... 2 2.4. Nội dung của đề tài......................................................................................2 CHƢƠNG 3: LÝ THUYẾT LIÊN QUAN CỦA ĐỀ TÀI........................................4 3.1 Chuẩn giao tiế p USB....................................................................................4 3.1.1 Giớ i thiệu chuẩn giao tiế p USB ................................................................ 4 3.1.2 Đặc tính cổng USB ...................................................................................4 3.1.2.1 Đặc tính cơ .............................................................................................4 3.1.2.2 Đặc tính điệ n .......................................................................................... 5 3.1.2.3 Giao tiế p USB ........................................................................................5 3.1.2.4 Những gói tin c ủa chuẩn USB ............................................................... 6 3.1.2.5 Những kiểu gói dữ liệu ..........................................................................8 3.1.2.6 Yếu tố liên quan việc truyền dữ liệu ...................................................... 8 3.1.2.7 Interrupt transfer ....................................................................................9 3.1.2.8 Qúa trình enumeration ........................................................................... 10 3.1.2.9 Human interface devices ........................................................................ 12 3.2 Vi điều khiển PIC18F4550 .......................................................................... 12 3.2.1 Sơ lược dòng vi điề u khiển PIC18F4550 ..................................................12 3.2.2 Giớ i thiệu module USB trong PIC18F4550 .............................................13 3.3 Giớ i thiệu LM35 ..........................................................................................14 3.4 Khái quát LCD 16x2 ....................................................................................15 CHƢƠNG 4: SƠ ĐỒ KHỐI VÀ LƢU ĐỒ GIẢI THUẬT ...................................... 17 4.1 Sơ đồ khối hệ thống .....................................................................................17 4.2 Phân tích khối............................................................................................... 17 4.2.1. LM35 ........................................................................................................ 17 4.2.2 Khối hiển thị..............................................................................................17 4.2.3 Khối vi xử lý .............................................................................................17 4.3 Lưu đồ gải thuật ........................................................................................... 18 4.3.1 Lưu đồ MAIN ...........................................................................................18 4.3.2 Lưu đồ hàm đo nhiệt độ ............................................................................19
Đo nhiệt độ giao ti ếp m áy tính qu a c ổn g usb
Trang I V
4.4 Phân tích và gải quyết lưu đồ giải thuật.......................................................20 4.4.1 Phân tích đo điệ n áp ..................................................................................20 4.4.2 Giải thuật hàm main .................................................................................. 20 CHƢƠNG 5: SƠ ĐỒ NGUYÊN LÝ VÀ LAYOUT ................................................. 21 5.1 Sơ đồ nguyên lý ............................................................................................ 21 5.2 Sơ đồ layout..................................................................................................22 5.3 Phần mềm điều khiển bằng C#..................................................................... 22 5.4 Các linh ki ện sử dụng trong mạch................................................................23 CHƢƠNG 6: MÃ NGUỒN CHƢƠNG TRÌNH ....................................................... 24 6.1 Mã nguồn vi điều khiển ...............................................................................24 6.2 Mã nguồn c# ................................................................................................. 27 CHƢƠNG 7: KÊT LUẬN ..........................................................................................35 7.1 K ết quả của đề tài .........................................................................................35 7.2 Hạn chế của đề tài ........................................................................................ 35 7.3 Hướ ng phát triển của đề tài .......................................................................... 35 PHẦN C: PHỤ LỤC ................................................................................................... 36 PHỤ LỤC A: Bảng tậ p lệnh của LCD ..............................................................37 PHỤ LỤC B: Tài liệu tham khảo......................................................................38
Đo nhiệt độ giao ti ếp m áy tính qu a c ổn g usb
Tr ang V
LIỆT KÊ CÁC HÌNH VÀ CÁC BẢNG Hình 3.1: Sơ đồ chần của cổng usb ...................................................................... 4 Hình 3.2: Mô tả 2 kiểu cổng USB ........................................................................ 5 Hình 3.3: Gía tr ị tr ở treo ở 2 mức speed low và full ............................................ 5 Hình 3.4: Sơ đồ tranfer ......................................................................................... 6 Hình 3.5: Dạng chuẩn của quá trình ngắt ......................................................... .10 Hình 3.6: Mô tả 64 byte device descriptor. ........................................................ 11 Hình 3.7: Mô tả 9 byte configuration decriptor ................................................. 11 Hình 3.8: Mô tả các chân vi điều khiển PIC18F4550 ........................................ 13 Hình 3.9: Cảm biến nhiệt độ LM35 ................................................................... 14 Hình 3.10: Hình LCD 16x2 ..................................................................................15 Hình 5.1: Sơ đồ nguyên lý .................................................................................. 21 Hình 5.2: Pơ đồ layout........................................................................................ 22 Hình 5.3: Phần mềm điều khiển ......................................................................... 22 Bảng 3.1: giá tr ị tương ứng vớ i các kiểu gói ......................................................... 7 Bảng 3.2 : Chức năng của các chân LCD ............................................................ 15
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 1/38
PHẦN B: NỘI DUNG CHƢƠNG 1:
Đề cập vấn đề Ngày nay, n ền kinh tế đã từng bước đượ c công nghiệ p hóa và hi ện đại hóa. Vớ i sự phát triển ngày càng vượ t b ậc, máy tính đóng vai trò quan trọng trong đờ i s ống và sản xu ất. Trong sản xu ất máy tính đóng vai trò là điề u khiển và thu thậ p d ữ liệu trong tất cá các quá trình . Vi ệc điều khiển các thiết bị điện thông qua máy tính là 1 ph ần không thể thiếu trong các nhà máy t ự động hóa và trong các ngôi nhà thông minh. Và Và qua đồ án 1. Vớ i mục đích vận dụng lại kiến thức về điện tử và tin học nên ở đồ án môn học 2, nhóm thực hiện chọn thi công mạch “đo nhiệt độ giao tiế p máy tính qua cổ ng usb” để vận d ụng các kiến th ức cơ bản đã đượ c h ọc và hiểu rõ hơn về nguyên lý truyền và nhận dữ liệu qua cổng usb. Ở đồ án môn học 2 này, do muốn tìm hiểu về giao tiế p usb cùng vớ i vi xử lý pic 18f4550. Nên sẽ sử dụng pic 18f4550 để thi công mạch. Về phần hi ển th ị có thể dùng led 7 đoạn led ma tr ận, LCD để hiển thị. Đối với đồ án môn học 2 này ngườ i thực hiện đề tài sử dụng LCD để hiển thị.
Đề
ấn đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 2/38
CHƢƠNG 2:
Mục tiêu của đề tài 2.1 Mục tiêu của đề tài Mục tiêu của đề tài là xây d ụng mô hình điề u khiển và giám sát thi ết bị điện giao tiế p máy tính thông qua cổng USB. Các nhiệm vụ cụ thể là : Tìm hiểu chuẩn giao tiế p USB. Tìm hiểu các dòng vi điều khiển hỗ tr ợ giao tiế p USB. Tìm hiểu giao tiế p USB thông qua lớ p HID của hệ điều hành Window. Xây dựng phần mềm giao ti ế p vớ i mạch điều khiển bằng Visual C#. Xây dựng phần mềm truyền nhận dữ liệu điều khiển thiết bị bằng Visual C#. 2.2 Giớ i hạn đề tài nghiên cứ u Chuẩn giao tiế p USB là 1 chu ẩn khá thông d ụng hiện nay tuy nhiên chu ẩn bao gồm nhiều giao thức và việc tự xây dựng 1 driver và 1 firmwave để giao tiế p giữa kernel hệ điều hành và thiết b ị đòi hỏi những hiểu biết v ề cấu trúc của hệ điều hành và hiểu sâu sắc về cách thức giao tiếp USB. Do đó đề tài chỉ giớ i hạn ở mức sử dụng driver có s ẵn trong lớ p HID của Window và firmwave trên thi ết bị sử dụng thư viện USB đượ c xây dựng sẵn. 2.3 Ý nghĩa khoa học và thự c tiễn của đề tài Việc xây dựng t ốt m ột h ệ thống đo nhiệt độ vớ i chuẩn giao tiế p là r ất c ần thiết đê ngườ sử dụng có thể nhận biết và quan sát đượ c nhiệt độ hiện tai hay trong một khoảng thời gian. Để có thể tính toán đượ c công việc mình sẽ làm tiế p theo. 2.4. Nội dụng đề tài Phần còn lại của để tài bao gồm những nội dung sau : Chƣơng 2 Mục tiêu của đề tài Trong chương này trình bày mụ c tiêu của đề tài giớ i hạn nghiên c ứu, ý nghĩa khoa học và thực tiễn của đề tài. Chƣơng 3 : Lý thuyết liên quan của đề tài Trong chương này, giớ i thiệu tổng quát về chuẩn giao tiếp USB, vi điề u khiển PIC18F4550. Chƣơng 4 : Sơ đồ khối và lƣu đồ giải thuật Chương này trình bày sơ đồ khối của hệ thống và lưu đồ giải thuật.
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 3/38
Chƣơng 5 : Sơ đồ nguyên lý và layout Bao gồm sơ đồ nguyên lí , layout và danh sách các linh ki ện sử dụng trong mạch. Chƣơng 6 : Mã nguông chƣơng trình Bao gồm mã nguồn chương trình của vi điề u khiển và mã ngu ồn chương trình c#. Chƣơng 7 : Kết luận Chương này tổ ng k ết lại các thành qu ả đạt đượ c , những cái chưa đạt đượ c và hướ ng phát triển. PHẦN C : Phụ lục Chương 7 gồm code chương trình trên vi điề u khiển và giao diện trên máy tính.
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 4/38
CHƢƠNG 3
Lý thuyết liên quan của đề tài Chương này trình bày tổ ng quan về chuẩn giao tiếp USB và vi điều khiển PIC18F4550. 3.1 Chuẩn giao tiếp USB 3.1.1 Giớ i thiệu chuẩn giao tiếp USB USB là 1 chuẩn k ết nối của máy tính ra đời vào năm 1996 từ sự hợ p tác c ủa 7 công ty hàng đầ u thế giớ i . USB hỗ tr ợ 127 thiết bị khác nhau có th ể k ết nối vào cùng 1 máy tính t ừ máy in, máy ảnh cho đến điện thoại, mouse,keyboard, ….. Tốc độ trên lý thuyết là : USB 1.0: 1,5 Mbps (low speed) USB 1.1: 12 Mbps (full speed) USB 2.0: 480 Mbps (high speed) USB 3.0: 4,8 Gbps (super speed) Ưu điểm của chuẩn giao tiế p USB là : Tự load driver sau khi k ết nối thiết bị ngoại vi vớ i PC mà không cần reset máy sau khi cài l ại driver. Dễ k ết nối. Đa số các máy tính hi ện nay đều có cổng USB. Tốc độ truyền dữ liệu cao. • • • •
•
• • •
Nhược điểm của chuẩn giao tiế p USB : Giớ i hạn về khoảng cách giao ti ế p (<5m). Không hỗ tr ợ k ết nối peer to peer (ph ải có 1 thi ết bị là host và 1 thi ết bị là device). 3.1.2 Đặc tính cổng USB 3.1.2.1 Đặc tính cơ USB gồm 4 chân VCC, D-, D+ , GND. • •
Hình 3.1 Sơ đồ chần của cổng usb
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 5/38
USB gồm 2 kiểu cổng là A và B
Hình 3.2 mô tả 2 kiểu cổng USB 3.1.2.2 Đặc tính điện USB dùng 2 đường khác nhau để truyền dữ liệu. Dữ liệu này đượ c mã hóa dùng NRZI. Ở tốc độ low và full speed, mức “1” đượ c truyền b ằng cách kéo đườ ng D+ hơn 2,8V với 1 điệ n tr ở 15K kéo xuống mass và đườ ng D- dướ i 0.3V với 1 điệ n tr ở 1.5K đượ c kéo lên 3.6V. Và m ức “0” thì ngượ c lại đườ ng D- lớn hơn 2.8V và đường D+ bé hơn 0.3V với cùng điệ n tr ở kéo lên/xuống. Thiết bị nhận biết là mức logic “1” khi đườ ng D+ lớn hơn 200mV so vớ i đườ ng D- và mức “0” khi đường D+ bé hơn 200mV so với đườ ng D-. Mức điện áp cho mức logic b ị đảo ngượ c dựa vào tốc độ của bus. Các kí t ự “J” và “K” đượ c dùng để định nghĩa cho các mứ c logic. Ở low speed tr ạng thái “J” định nghĩa cho mức “0”. Ở high speed tr ạng thái “J” định nghĩa cho mức “1”.
Hình 3.3 Gía tr ị tr ở treo ở 2 mức speed low và full
3.1.2.3 Giao thứ c USB Không giống như RS232 hoặ c các giao th ức đơn giả n khác những giao thức mà dữ liệu không được đị nh dạng khi gửi. USB tạo nhiều tầng cho những giao thức. Mỗi transaction USB bao g ồm: + Token Packet + Data Packet + Status Packet
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 6/38
Một transfer của USB gồm nhiều transaction.
Hình 3.4 sơ đồ tranfer USB có 4 loại transfer khác nhau đó là: + Control : truyền các dữ liệu nhận dạng và điều khiển. + Bulk : Dùng để truyền dữ liệu lớ n cho các thi ết bị ngoại vi như máy in, máy scan… + Interrupt : Dùng ngắt để truyền dữ liệu như chuột, bàn phím… + Isochronous : Dùng truyền dữ liệu lớ n bỏ qua lỗi như media, hình ả nh. 3.1.2.4 Nhữ ng gói tin của chuẩn USB Dữ liệu trên bus USB truyền bit LSB đầu tiên. Các gói tin bao g ồm: Sync Các gói dữ liệu đều bắt đầu bằng gói tin này.Gói tin sync g ồm 8 bit, nó được dùng để đồng bộ giữa bên phát v ớ i bên thu. PID Gói tin này chứa ID của gói dữ liệu. Nó định nghĩa kiể u của gói dữ liệu đang đượ c gửi. Các giá tr ị tương ứng vớ i các ki ểu gói đượ c trình bày trong bảng sau. •
•
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 7/38
Bảng 3.1 giá tr ị tương ứng vớ i các ki ểu gói Như trên ta thấy gói tin PID này g ồm 4 bit, nhưng để đảm bảo bộ thu nhận đúng , 4 bit này đượ c lặ p lại 1 lần nữa vì vậy gói tin PID này g ồm 8 bit.
•
•
•
•
ADDR Gói tin này định nghĩa gói dữ liệu đượ c g ửi là từ thiết b ị nào. Vùng này gồm 7 bit tương ứ ng v ớ i 127 thiết b ị. Địa chỉ thứ 0 thì không t ồn t ại, khi thiết bị chưa được định địa chỉ thì vùng địa chỉ này có giá tr ị 0. ENDP Vùng endpoint này g ồm 4 bit tương ứ ng vớ i 16 endpoint. CRC Vùng này chứa mã CRC dùng để kiểm tra dữ liệu hư hỏng hay không. Vớ i các gói token vùng này g ồm 5 bit trong khi v ớ i các gói data vùng này gồm 16 bit. EOP Vùng này đánh dấu k ết thúc gói tin. G ồm 2 bit .
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 8/38
3.1.2.5 Nhữ ng kiểu gói dữ liệu Gói Token Gồm 3 kiểu: + In - Thông báo vớ i device r ằng host cần đọc thông tin. + Out – Thông báo vớ i device r ằng host cần gửi thông tin. + Setup – Dùng để bắt đầu kiểu truyền điều khiển ( Control transfer ). Gói Token định dạng theo chuẩn sau. •
•
•
•
Gói Data Có 2 kiểu gói dữ liệu có khả năng truyền từ 0 đến 1023 byte dữ liệu. + Data 0 + Data 1 Gói data định dạng theo chuẩn sau. Gói Hankshake Có 3 kiểu gói hankshake ch ỉ đon giản gồm gói tin PID. + ACK – Xác nhận gói dữ liệu đượ c gửi thành công. + NAK – Thông báo r ằng device không th ể gửi hoặc nhận dữ liệu. Nó cũng đượ c dùng trong quá trình ng ắt để báo r ằng host không có dữ liệu để gửi. + STALL - Báo r ằng device tìm th ấy chính nó trong tr ạng thái nó yêu cầu can thiệ p từ host. Gói hankshake định dạng theo chuẩn sau. Gói bắt đầu frame dữ liệu.(SOF) Gói bao gồm 1 số frame 11 bit đượ c gửi bở i host mỗi
3.1.2.6 Nhữ ng yếu tố liên quan việc truyền dữ liệu Endpoint + Tất cả dữ liệu chạy trên Bus đều đến hoặc đi từ device endpoints. Endpoint là một buffer lưu trữ nhiều bytes. Dữ liệu lưu trên endpoint là dữ liệu nhận đượ c (từ host) hay là dữ liệu sắ p truyền (đến host). + Địa chỉ endpoint gồm mã số endpoint (từ 0-15) và hướ ng (theo quan điểm của host). •
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 9/38
+ Endpoint đượ c cấu hình cho control transfer ph ải truyền dữ liệu từ 2 hướ ng, và mỗi device ph ải có endpoint 0 đượ c cấu hình cho control endpoints + Khi nhận 1 gói tin OUT hay setup, endpoint s ẽ lưu data theo sau gói tin đó, sau đó device hardware sẽ sinh ra ngắt. Tương tự khi gửi gói tin IN. Pipes + Trước khi data đượ c truyền đi, giữa host và device ph ải thiết lậ p một pipe. Host thi ết lậ p pipe ở quá trình enumeration. Host có th ể yêu cầu thêm hoặc bớ t pipes dùng control transfer. + Mọi thiết bị có một control pipe mặc định dùng endpoint 0. + Thông tin cấu hình host nhận từ device bao g ồm một endpoint descriptor cho m ỗi endpoint mà device mu ốn dùng. Mỗi endpoint chứa đựng: địa chỉ endpoint, loại transfer mà endpoint h ỗ tr ợ , kích thướ c tối đa gói dữ liệu, đôi khi có cả transfer interval. 3.1.2.7 Interrupt transfer Như đã biết có 4 ki ểu transfer : Control, Bulk, Interrupt, Isochronous. Tuy nhiên do giớ i hạn nên ở đây chỉ trình bày kiểu truyền Interrupt. Bình thườ ng ngắt thì do thi ết bị tạo ra, nhưng ở USB nếu 1 thiết bị yêu cầu cảnh báo cho host, nó phải chờ đến khi host hỏi vòng tới nó trướ c khi nó xuất cảnh báo. Các yếu tố của Interrupt transfer. Đảm bảo độ tr ễ. Sử dụng pipe stream ( pipe 1 chi ều ). Hỗ tr ợ phát hiện lỗi và phát l ại dữ liệu. Interrupt transfer thì thườ ng truyền khong tuần hoàn, những thiết bị bắt đầu truyền yêu cầu độ tr ễ. Một yêu cầu ngắt thì được đưa vào hàng đợ i bở i device cho đến khi host h ỏi vòng tới nó để yêu cầu dữ liệu. Độ lớ n tối đa của dữ liệu cho các device low-speed là 8 byte. Độ lớ n tối đa của dữ liệu cho các device full-speed là 64 byte. Độ lớ n tối đa của dữ liệu cho các device high-speed là 1024 byte. •
• • •
• • •
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 10/38
Hình 3.5 Dạng chuẩn của quá trình ngắt Biểu đồ trên trình bày định dạng chuẩn của quá trình ngắt IN và OUT. IN : Host sẽ hỏi vòng endpoint ng ắt. Tốc độ hỏi vòng thì được đị nh nghĩa trong mô tả endpoint. Mỗi lần hỏi vòng host sẽ gửi 1 gói Token IN. Nếu gói tin bị lỗi, nó sẽ đượ c bỏ qua và gói khác đượ c gửi lại. Nếu 1 ngắt được đưa vào hàng đợ i của thiết bị, nó sẽ gửi 1 gói tin ch ứa dữ liệu liên quan đến ngắt khi nó nhận đượ c 1 gói IN Token. Khi host nhận thành công, host sẽ tr ả về 1 gói ACK. Tuy nhiên nếu d ữ liệu bị lỗi, host sẽ không tr ả về gì cả. Mặt khác khi 1 điề u kiện ngắt không đượ c gửi khi host hỏi vòng endpoint ng ắt vớ i gói tin IN Token , thi ết bị sẽ báo tr ạng thái này b ằng 1 gói NAK. Nếu 1 lỗi xuất hiện trên endpoint này, gói tin STALL s ẽ đượ c gửi thay vì IN Token. OUT – Khi host muốn gửi dữ liệu đến thiết bị, nó sẽ gửi 1 gói OUT Token và theo sau đó là 1 gói dữ liệu. N ếu b ất kì phần nào của gói OUT Token hoặc gói dữ liệu bị hỏng thì thiết bị sẽ bỏ qua gói này. Nếu bộ đệm endpoint của thiết bị tr ống nó sẽ đưa dữ liệu vào vùng đệm và báo vớ i host bằng 1 gói ACK thông báo r ằng nó đã nhận đượ c dữ liệu. Nếu vùng đệm không tr ống do đang xử lí gói dữ liệu trước đó, nó sẽ tr ả về 1 gói NAK. Tuy nhiên n ếu 1 l ỗi xảy ra vớ i endpoint và bit halt c ủa nó đượ c set thì nó sẽ tr ả về 1 gói STALL. 3.1.2.8 Qúa trình enumeration Enumeration là quá trình phát hi ện thiết bị nào đượ c k ết nối đến bus và các thông số nó yêu cầu như năng lượ ng cung cấ p, số lượ ng và kiểu endpoint, lớ p giao tiếp…Host sẽ chỉ định cho thiết bị 1 đị a chỉ và cho phép cấu hình thiết bị để nó truyền dữ liệu trên bus. •
•
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 11/38
Các bướ c enumeration trên h ệ điều hành Window: 1. Host hoặc hub phát hi ện k ết nối vớ i 1 thiết bị mớ i thông qua tr ở treo của thiết bị trên cặ p dây dữ liệu. Host sẽ chờ ít nhất 100mS cho việc đảm bảo k ết nối và nguồn cho thiết bị. 2. Host sẽ thiết lậ p các tr ạng thái mặc định cho thiết b ị. Thiết bị lúc này đượ c nhận địa chỉ mặc định là địa chỉ 0. 3. Host sẽ yêu cầu 64 byte đầu tiên mô tả thiết bị.
4. 5. 6. 7.
Hình 3.6 Mô tả 64 byte device descriptor. Sau khi nhận 8 byte đầ u tiên của mô tả thiết bị, host sẽ reset bus. Host bây giờ sẽ định địa chỉ cho thiết bị. Sau đó nó yêu cầu tiế p 18 byte mô tả thiết bị. Tiếp đó nó yêu cầu 9 byte mô t ả cài đặt để định kích cỡ tổng thể.
Hình 3.7 mô tả 9 byte configuration decriptor. 8. Sau đó nó yêu cầu 255 byte mô t ả cài đặt. 9. Cuối cùng nó yêu c ầu string descriptor nếu nó được định nghĩa.
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 12/38
3.1.2.9 Human interface devices Trong chuẩn USB, các thiết bị có chức năng giống nhau đượ c gom thành t ừng chuẩn. Do đó thay vì phát triể n driver cho nhi ều thiết bị, windows phát triển driver cho t ừng chuẩn và đượ c tích hợ p sẵng trong hệ thống. HID ( Human interface devices ) là 1 trong những chuẩn USB đầu tiên đượ c hỗ tr ợ trong window. Window nhận ra thiết bị có thuộc lớ p HID không bằng các thông tin trong device descriptor. 3.2 Vi điều khiển PIC18F4550 3.2.1 Sơ lƣợc dòng vi điều khiển PIC18F4550 PIC18 là dòng vi điề u khiển cao cấ p của họ vi điều khiển PIC vớ i việc thêm vào khả năng chịu đựng cao và tăng cườ ng bộ nhớ flash. PIC18 s ử dụng công nghệ nanoWatt nhằm mở r ộng các tính năng đáng k ể nhằm giảm mức tiêu thụ điện năng. Dòng PIC18 đượ c tích hợ p module truyền thông USB với các tính năng : Module cung cấ p 2 chế độ full speed và low speed . Bộ thu phát và bi ến áp 3v3 trên chip, ngoài ra còn h ỗ tr ợ việc sử dụng bộ thu phát và bi ến áp 3v3 bên ngoài. Hỗ tr ợ 4 kiểu truyền thông của USB: Control, Interrrupt, Bulk, Isochronous. Hỗ tr ợ đến 32 endpoint. Hỗ tr ợ 1kbyte ram để lưu dữ liệu cho việc truyền nhận . Cấu trúc bộ dao động: Gồm 4 chế độ sử dụng thạch anh ngoài, bao g ồm bộ nhân tần PLL cho USB . 2 chế độ dùng xung clock ngoài, h ỗ tr ợ đến 48Mhz. Khối dao động nội: gồm 8 mức tần số từ 31KHz đến 8MHz. Bộ dao động nội thứ 2 dùng timer 1 t ốc độ 32KHz. Hỗ tr ợ chức năng cấp dao động riêng cho vi điề u khiển và module USB. Cấu trúc ngoại vi : Dòng ra vào cao nhất là 25mA. 3 ngắt ngoài. 4 bộ Timer. 2 module Capture/Compare/PWM 16 bit v ới độ phân giải từng module là 5.2ns và 83.3ns. Module USART. Module truyền thông nối tiếp đồng bộ vớ i chức năng master, module SPI( 4 chế độ ), module I2C vớ i chế độ slave và master. Hỗ tr ợ đến 13 kênh analog 10 bit. • •
•
• •
•
• • • •
• • • •
• •
•
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 13/38
1 số tính năng đặc biệt : Bộ nhớ flash vớ i 100.000 lần ghi/xóa. Bộ nhớ EEPROM vớ i 1.000.000 lần ghi/xóa. Tuổi thọ bộ nhớ EEPROM và flash lên đến trên 40 năm. Tầm điện áp hoạt động từ 2.0 đến 5.5V . • • • •
Hình3.8 Mô tả các chân vi điều khiển PIC18F4550. 3.2.2 Giớ i thiệu module USB trong PIC18F4550 Họ PIC18F hỗ tr ợ bộ giao tiế p nối tiế p chuẩn USB (SIE) vớ i 2 chế độ low speed và full speed cho phép truy ền thông tốc độ nhanh giữa bất kì host USB nào với vi điều khiển PIC. SIE có thể giao tiế p tr ực tiế p vớ i cổng USB, sử dụng bộ thu phát bên trong, ho ặc nó có thể k ết n ối v ớ i 1 bộ thu phát bên ngoài. B ộ nhớ trong vùng nhớ dữ liệu của thiết bị (USB RAM ) đượ c hỗ tr ợ để chia sẻ vùng nhớ tr ực ti ế p gi ữa nhân vi điều khiển và SIE. Những mô tả bộ đệm cũng đượ c cung cấp, cho phép ngườ i dùng giải phóng vùng nhớ cho các endpoint trong vùng nh ớ của USB RAM. Streaming Parallel Port cũng đượ c h ỗ tr ợ để truyền lượ ng l ớ n dữ liệu không dùng ng ắt như truyề n dữ liệu đẳng thờ i đến bộ nhớ của vùng đệm bên ngoài. Hoạt động của module USB đượ c cấu hình và quản lí bở i 3 thanh ghi điều khiển. Thêm vào đó là 22 thanh ghi được dùng để quản lí quá trình truyền thông của USB . Những thanh ghi đó là : Thanh ghi điều khiển USB ( UCON ). Thanh ghi cài đặt USB ( UCFG ). Thanh ghi tr ạng thái truyền dữ liệu USB ( USTAT ). Thanh ghi địa chỉ thiết bị USB ( UADDR ). Thanh ghi s ố frame ( UFRMH:UFRML ). Thanh ghi cho phép endpoint 0 đế n 15 ( UEPn ). • • • • • •
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 14/38
3.3 Cảm biến nhiệt độ LM35 LM35 là một họ IC cảm biến nhiệt độ sản xuất theo công nghệ bán dẫn dựatrên các chất bán dẫn dễ bị tác động bởi sự thay đổi của nhiệt độ , đầu ra củacảm biến là điện áp(V) tỉ lệ với nhiệt độ mà nó được đặt trong môi trường cầnđo.Họ LM35 có rất nhiều loại và nhiều kiểu đóng vỏ khác nhau.
Hình 3.9 Cảm biến nhiệt độ LM35 Đặc điểm nổi bậtĐo nhiệt độ với thang đo nhiệt bách phân (0 C)Độ phân giải : 10mV/10CKhả năng đo nhiệt độ trong khoảng: - 55 đến +150 (0 C) Nguồn áp hoạt động : 4V đến 30VĐiện áp đầu ra : +6V đến -1VƯu điểm: Rẽ tiền, dễ chế tạo,chống nhiễu tốt, mạch xử lý đơn giản.Khuyết điểm: Không chịu nhiệt độ cao, kém bền.Thường dùng: Đo nhiệt độ không khí, dùng trong các thiết bị đo, bảo vệ cácmạch điện tử
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 15/38
3.4 Khái quát LCD 16x2 - Giống như led 7 thanh, LCD là một thiết bị ngoại vi dùng để giao tiếp với người dùng, so với led 7 thanh thì LCD có ưu điểm là hiển thị được tất cả các kí tự trong bảng mã ascci, trong khi đó led 7 thanh chỉ hiển thị được một số kí tự, nhưng LCD lại có nhược điểm là giá thành cao và khoảng cách nhìn gần.
Hình 3.10 Hình ảnh LCD 16x2
Bảng 2.2.1 Chức năng của các chân LCD : Chân 1 2 3
Kí hiệu Vss Vcc Vee
Mức logic -
I/O -
4
RS
0/1
I
5
R/W
0/1
I
6 7 8 9 10 11 12 13 14
E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7
0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1
I I/O I/O I/O I/O I/O I/O I/O I/O
Chức năng Nguồn(GND) Nguồn(+5v) Chỉnh độ tương phả n 0= nhậ p lệnh 1= nhậ p dữ liệu 0= Ghi dữ liệu 1= Đọc dữ liệu Bít dữ liệu 0 Bít dữ liệu 1 Bít dữ liệu 2 Bít dữ liệu 3 Bít dữ liệu 4 Bít dữ liệu 5 Bít dữ liệu 6 Bít dữ liệu 7 Bít dữ liệu 8
Bảng 3.2 Chức năng của các chân LCD : - Các chân Vcc, Vss và Vee: Chân Vcc cấp dương nguồ n 5V, chân Vss nối đất, chân Vee được dùng để điều khiển độ tương phả n của màn hình LCD.
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 16/38
- RS ( Register select): Khi ở mức th ấ p, ch ỉ thị đượ c truyền đến LCD như xoá màn hình, vị trí con tr ỏ. Khi ở mức cao, kí tự đượ c truyền đến LCD. - R/W (Read/Write): Dùng để xác định hướ ng của dữ liệu đượ c truyền giữa LCD và vi điều khiển. Khi nó ở mức thấ p dữ liệu được ghi đến LCD và khi ở mức cao, dữ liệu được đọc từ LCD. Nếu chúng ta chỉ cần ghi dữ liệu lên LCD thì chúng ta có th ể nối chân này xuống GND để tiết kiệm chân. - E (Enable): Cho phép ta truy c ậ p/xuất đến LCD thông qua chân RS và R/W. Khi chân E ở mức cao (1) LCD sẽ kiểm tra tr ạng thái của 2 chân RS và R/W và đáp ứ ng cho phù h ợ p. Khi d ữ liệu đượ c cấp đến chân dữ liệu thì một xung mức cao xuống thấ p phải được áp đến chân này để LCD chốt dữ liệu trên các chân d ữ liêu. Xung này ph ải r ộng tối thiểu là 450ns. Còn khi chân E ở mức thấ p (0), LCD s ẽ bị vô hiệu hoá hoặc bỏ qua tín hiệu của 2 chân RS và R/W. - Các chân D0 - D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD ho ặc đọc nội dung của các thanh ghi trong LCD. Các kí t ự đượ c truyền theo mã tương ứ ng trong bảng mã ascii. Cũng có các mã lệnh mà có thể đượ c gửi đến LCD để xoá màn hình hoặc đưa con tr ỏ về đầu dòng hoặc nhấ p nháy con tr ỏ. - LCD có 2 chế độ giao tiế p: Chế độ 4 bit (chỉ dùng 4 chân D4 đến D7 để truyền dữ liệu) và chế độ 8 bit (dùng c ả 8 chân dữ liệu từ D0 đến D7), ở chế độ 4 bit, khi truyền 1 byte, chúng ta s ẽ truyền nửa cao của byte trước, sau đó mớ i truyền nửa thấ p của byte. - Trướ c khi truyền các kí t ự ra màn hình LCD ta c ần thiết lập cho LCD như chọn chế độ 4 bit hoặc 8 bit, 1 dòng hay 2 dòng ,b ật/tắt con tr ỏ… Dưới đây là bả ng tậ p l ệnh c ủa LCD : - Để đọc thanh ghi l ệnh,ta phải đặt RS=0 và R/W =1 và xung cao xu ống thấ p cho bít E. Sau khi đọc thanh ghi l ệnh,nếu bit D7(cờ bận ) ở mức cao thì LCD b ận, không có thông tin hay l ệnh nào đượ c xuất đến nó. Khi D7=0 mớ i có thể gửi lệnh hay dữ liệu đến LCD. Chúng ta nên ki ểm tra bit cờ bận trướ c khi ghi thông tin lên LCD.
ế
ủa đề
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 17/38
Chương 4 Sơ đồ khối và lƣu đồ giải thuật v 4.1 Sơ đồ khối hệ thống
4.2 Phân tích khối 4.2.1 LM35 Khối c ảm bi ến để đo nhiệt độ , LM35 sẽ đo nhiệt độ và chuyển thành dạng điện áp truyền vào vi điều khiển. Vi điều khiển nhận dạng điện áp đó bằng ngõ vào ADC của pic 18f4550. Vi điể u khiển sẽ xử lý dạng điện áp đó và đưa ra nhiệt độ và hiển thị. 4.2.2 Khối hiển thị Khối này gồm 1 LCD dùng để hiển thị thờ i gian thực trên mạch và nhiệt độ. 4.2.3 Khối vi xử lý Khối này có ch ức năng nhận dữ liệu t ừ LM35 và k ết n ối đến c ổng usb để nhận dữ liệu từ usb, và truyền nhiệt độ lên cổng usb.
Sơ đồ
ối và lưu đồ
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb 4.3 Lƣu đồ gải thuật 4.3.1 Lƣu đồ MAIN
Sơ đồ
ối và lưu đồ
Tr ang 18/38
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb 4.3.2 Lƣu đồ hàm đo nhiệt độ
Sơ đồ
ối và lưu đồ
Tr ang 19/38
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 20/38
4.4 Phân tích và gải quyết lƣu đồ giải thuật. 4.4.1 Đo nhiệt độ Trong vi điề u khiển pic có tích hợ p sẵn ADC. Nên dữ liệu điện được đưa từ LM35 vào vi điều khiển sẽ được vi điề u khiển xữ lý qua các port ADC c ủa vi điều khiển. 4.4.2 Giải thuật hàm main Khi cấ p nguồn cho vi điều khiển thì vi điề u khiển sẽ thiết lậ p k ết nối đến cổng usb và chờ k ết n ối. Khi k ết n ối được thì vi điề u khiển s ẽ thực hi ện đo nhiệt độ và g ửi dữ liệu lên máy tính. Khi g ửi dữ liệu xong vi điều khiển sẽ nhận dữ liệu từ máy tính và kiểm tra đó là mã điều khiển hay dữ liệu. Nếu là dữ liệu thì hiển thị lên LCD.
Sơ đồ
ối và lưu đồ
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 21/38
CHƢƠNG 5:
Sơ đồ nguyên lý và layout 5.1 Sơ đồ nguyên lý
Hình 5.1 Sơ đồ nguyên lý
Sơ đồ
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb 5.2 sơ đồ layout
Hình 4.2 sơ đồ layout 5.3 Phần mềm điểu khiển bằng C#.
Hình 4.2 sơ đồ layout Sơ đồ
Tr ang 22/38
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb 5.4 Các linh kiện sử dụng trong mạch Vi điều khiển PIC18F4550 Cổng USB kiểu B. Điện tr ở 4k7,330,10k. Biến tr ở 10K LCD 16x2. Cảm biến LM35 Nút nhấn Thạch anh 20Mhz. Thạch anh 32.768KHz Tụ 10uf. Tụ 33pf Led 5mm
Sơ đồ
Tr ang 23/38
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 24/38
Chƣơng 6 Mã nguồn chƣơng trình 6.1 Mã nguồn vi điều khiển #include <18F4550.h> #DEVICE ADC=10 #fuses MCLR,HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDI V1,VREGEN,NOPBADEN #use delay(clock=20000000) #include
#include #include #include #define LCD_ENABLE_PIN PIN_b0 #define LCD_RS_PIN PIN_b2 #define LCD_RW_PIN PIN_b1 #define LCD_DATA4 PIN_D7 #define LCD_DATA5 PIN_D6 #define LCD_DATA6 PIN_D5 #define LCD_DATA7 PIN_D4 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #include #use fast_io(b) #use fast_io(c) int8 nhietdo=0; int8 nhietdo1=0,nhietdo2=0,tam=-1; void donhietdo() { lcd_gotoxy(1,0); set_adc_channel(0); delay_us(10); nhietdo = (read_adc()/2.046); if(tam!=nhietdo) { tam=nhietdo; nhietdo1=nhietdo/10+0x30; nhietdo2=nhietdo%10+0x30; printf(lcd_putc,"Nhiet Do: %3d \oC",nhietdo);
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb } } void baotinhieu() { int i=20; while(i--) { LED_ON(LEDDO); delay_ms(10); LED_ON(LEDXANH); delay_ms(10); LED_OFF(LEDXANH); delay_ms(10); LED_OFf(LEDDO); delay_ms(10); } } void main(void) { int8 nhandulieu[USB_EP1_RX_SIZE]; int8 guidulieu[USB_EP1_TX_SIZE]; int8 kiemtra; kiemtra=0; LED_OFF(LEDXANH); LED_OFf(LEDDO); set_tris_b(0x00); output_b(0x00); set_tris_c(0b00110000); setup_adc_ports(AN0); setup_adc(ADC_CLOCK_DIV_64); config_ADCON2(); usb_init(); usb_task(); usb_wait_for_enumeration(); baotinhieu(); lcd_init(); lcd_putc("Time:"); delay_ms(700); while (TRUE) { donhietdo(); if(usb_enumerated())
ồn chương trình
Tr ang 25/38
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 26/38
{ if (usb_kbhit(1)) { usb_get_packet(1, nhandulieu, USB_CONFIG_HID_RX_SIZE); if(nhandulieu[0]==0x0a){ switch(nhandulieu[1]){ case 0x10: output_toggle(LEDDO); break; case 0x20: output_toggle(LEDXANH); break; case 0x30: kiemtra=1; break; case 0x40: kiemtra=0; break; } if(kiemtra==0) { lcd_gotoxy(8,1); lcd_putc(nhandulieu[2]); lcd_putc(nhandulieu[3]); lcd_putc(":"); lcd_putc(nhandulieu[4]); lcd_putc(nhandulieu[5]); lcd_putc(":"); lcd_putc(nhandulieu[6]); lcd_putc(nhandulieu[7]); guidulieu[0]=nhietdo; if(input(leddo)){guidulieu[1]=0x00;} else {guidulieu[1]=0x01;} if(input(ledxanh)){guidulieu[2]=0x00;} else { guidulieu[2]=0x01;} usb_put_packet(1, guidulieu, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE); }
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 27/38
} } } } } 6.2 Mã nguồn C# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Diagnostics; using System.Windows.Forms; using System.Runtime.InteropServices; using MecaniqueUK; using ZedGraph; namespace WindowsFormsApplication1 { public partial class Form1 : Form { UInt32 controlador; uint nhietdo = 0; public Form1() { InitializeComponent(); } private void nhandulieu(UInt32 In_handle) { uint leddo, ledxanh; byte[] BufferINP = new byte[EasyHID.BUFFER_IN_SIZE]; if ((EasyHID.Read(In_handle, out BufferINP)) == true ) { Application.DoEvents(); nhietdo = (uint)BufferINP[1]; leddo = (uint)BufferINP[2]; ledxanh = (uint)BufferINP[3]; draw(nhietdo); lblnhietdo.Text = "Nhi ệt Độ: " + Convert.ToString(nhietdo) + " oC"; //
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 28/38
} } private void conect(UInt32 handle) { if (EasyHID.GetVendorID(handle) == EasyHID.VENDOR_ID && EasyHID.GetProductID(handle) == EasyHID.PRODUCT_ID&&kiemtraketnoi==0) { // Si el handler ha encontrado un dispositivo conectado... EasyHID.SetReadNotify(handle, true); // Activa el sistema de notificaciones. controlador = handle; tickStart = Environment.TickCount; ketnoi.Text = "Ng ắt K ết Nối"; ketnoi.BackColor = Color.Green; kt = 1; } } private void disconect(UInt32 handle) { if (EasyHID.GetVendorID(handle) == EasyHID.VENDOR_ID && EasyHID.GetProductID(handle) == EasyHID.PRODUCT_ID) { EasyHID.Disconnect(); MessageBox.Show("đã ngắt k ết nối vớ i thiết bị"); ketnoi.Text = "K ết Nối"; kt = 0; } } protected override void WndProc(ref Message message) { if (kiemtraketnoi == 0) { // Interceptamos los mensajes de windows. if (message.Msg == EasyHID.WM_HID_EVENT) // Si ha ocurrido algún evento... { switch (message.WParam.ToInt32()) // Intercepta el mensaje y opera según el valor recibido.... {
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 29/38
case EasyHID.NOTIFY_PLUGGED: conect((UInt32)message.LParam.ToInt32()); // Se ha conectado un dispositivo. break; case EasyHID.NOTIFY_UNPLUGGED: disconect((UInt32)message.LParam.ToInt32()); // Se ha desconectado un dispositivo. break; case EasyHID.NOTIFY_READ: nhandulieu((UInt32)message.LParam.ToInt32()); // Hay datos en el buffer de entrada. break; } } } base.WndProc(ref message); } int kt2 = 0; private void led1_Click(object sender, EventArgs e) { /*if (kt2 == 0) { led1.BackgroundImageLayout = ImageLayout.Stretch; led1.BackgroundImage = Properties.Resources.led_on_blue; ; kt2 = 1; } else { led1.BackgroundImageLayout = ImageLayout.Stretch; led1.BackgroundImage = Properties.Resources.led_off; ; kt2 = 0; }*/ byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE]; BufferOUT[0] = 0; // Report ID BufferOUT[1] = 0x0A; // Primero enviamos un comando de control al dispositivo: // 0x0A (COMANDO_SALIDAS). BufferOUT[2] = 0x10; // Luego enviamos los datos de control de los LED'S. int sgio1, sgio2; sgio1 = (gio / 10) + 0x30; sgio2 = (gio % 10) + 0x30;
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb BufferOUT[3] = (byte)sgio1; BufferOUT[4] = (byte)sgio2; sgio1 = (phut / 10) + 0x30; sgio2 = (phut % 10) + 0x30; BufferOUT[5] = (byte)sgio1; BufferOUT[6] = (byte)sgio2; sgio1 = (giay / 10) + 0x30; sgio2 = (giay % 10) + 0x30; BufferOUT[7] = (byte)sgio1; BufferOUT[8] = (byte)sgio2; EasyHID.Write(controlador, BufferOUT); // Envía los datos. } private void button1_Click(object sender, EventArgs e) { } int gio, phut, giay; private void timer1_Tick(object sender, EventArgs e) { DateTime dt = DateTime.Now; lblthoigian.Text = dt.ToString(); gio = dt.Hour; phut = dt.Minute; giay = dt.Second; int sgio1, sgio2; byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE]; byte[] data = new byte[32]; BufferOUT[0] = 0; // Report ID BufferOUT[1] = 0x0A; sgio1 = (gio / 10) + 0x30; sgio2 = (gio % 10) + 0x30; BufferOUT[3] = (byte)sgio1; BufferOUT[4] = (byte)sgio2; sgio1 = (phut / 10) + 0x30; sgio2 = (phut % 10) + 0x30; BufferOUT[5] = (byte)sgio1; BufferOUT[6] = (byte)sgio2; sgio1 = (giay / 10) + 0x30; sgio2 = (giay % 10) + 0x30; BufferOUT[7] = (byte)sgio1;
ồn chương trình
Tr ang 30/38
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 31/38
BufferOUT[8] = (byte)sgio2; EasyHID.Write(controlador, BufferOUT); // Envía los datos. } private void timer2_Tick(object sender, EventArgs e) { } int tickStart = 0; private void timer2_Tick_1(object sender, EventArgs e) { draw(nhietdo); } void khoitaodraw() { GraphPane myPane = zedGraphControl1.GraphPane; myPane.CurveList.Clear(); // Các thông tin cho đồ thị của mình myPane.Title.Text = "Bi ểu Đồ Nhiệt Độ"; myPane.XAxis.Title.Text = "th ờ i gian(s)"; myPane.YAxis.Title.Text = "nhi ệt độ(oC)"; RollingPointPairList list1 = new RollingPointPairList(12000000); myPane.XAxis.Scale.Min = 0; // Min = 0; myPane.XAxis.Scale.Max = 100; // Mã = 30; myPane.XAxis.Scale.MinorStep = 2; // Đơn vị chia nhỏ nhất 1 myPane.XAxis.Scale.MajorStep = 1 0; // Đơn vị chia lớ n 5 myPane.YAxis.Scale.Min = 0; myPane.YAxis.Scale.Max = 100; myPane.YAxis.Scale.MinorStep = 2; myPane.YAxis.Scale.MajorStep = 10; // Gọi hàm xác định cỡ tr ục zedGraphControl1.AxisChange(); } private void Form1_Load(object sender, EventArgs e) { // khi khởi động sẽ đượ c chạy khoitaodraw(); } public void draw(double setpoint1) // Ở ví dụ này chúng ta có 2 đườ ng {
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 32/38
if (zedGraphControl1.GraphPane.CurveList.Count <= 0) return; // Kiểm tra việc khở i tạo các đườ ng curve // Đưa về điểm xuất phát LineItem curve1 = zedGraphControl1.GraphPane.CurveList[0] as LineItem; if (curve1 == null) return; // list chứa các điểm. // Get the PointPairList IPointListEdit list1 = curve1.Points as IPointListEdit; if (list1 == null) return;
// Time đượ c tính bằng ms double time = (Environment.TickCount - tickStart); // Tính toán giá tr ị hiện thị time = time / 1000; // Muốn hiện thị cái gì thì ch ỉ việc thay vào setpointx list1.Add(time,setpoint1); // list2.Add(time, setpoint2); // đoạn chương trình thự c hiện vẽ đồ thị Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale; if (time > xScale.Max - xScale.MajorStep) { //xScale.Max = time + xScale.MajorStep; // xScale.Min = xScale.Max - 30.0; xScale.Max = time + xScale.MajorStep; xScale.Min = xScale.Max - 30.0; } // Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale; // Vẽ đồ thị zedGraphControl1.AxisChange(); // Force a redraw zedGraphControl1.Invalidate(); } int kt = 0,kt1=0;
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 33/38
private void led2_Click_1(object sender, EventArgs e) { /* if (kt1 == 0) { led2.BackgroundImageLayout = ImageLayout.Stretch; led2.BackgroundImage = Properties.Resources.led_on_blue; ; kt1 = 1; } else { led2.BackgroundImageLayout = ImageLayout.Stretch; led2.BackgroundImage = Properties.Resources.led_off; ; kt1 = 0; }*/ int sgio1, sgio2; byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE]; byte[] data = new byte[32]; BufferOUT[0] = 0; // Report ID BufferOUT[1] = 0x0A; // Primero enviamos un comando de control al dispositivo: // 0x0A (COMANDO_SALIDAS). BufferOUT[2] = 0x20; // Luego enviamos los datos de control de los LED'S. sgio1 = (gio / 10) + 0x30; sgio2 = (gio % 10) + 0x30; BufferOUT[3] = (byte)sgio1; BufferOUT[4] = (byte)sgio2; sgio1 = (phut / 10) + 0x30; sgio2 = (phut % 10) + 0x30; BufferOUT[5] = (byte)sgio1; BufferOUT[6] = (byte)sgio2; sgio1 = (giay / 10) + 0x30; sgio2 = (giay % 10) + 0x30; BufferOUT[7] = (byte)sgio1; BufferOUT[8] = (byte)sgio2; EasyHID.Write(controlador, BufferOUT); // Envía los datos. } int kiemtraketnoi=0; private void ketnoi_Click(object sender, EventArgs e)
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 34/38
{ if (kt == 0) { EasyHID.Connect(Handle); byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE]; BufferOUT[0] = 0; // Report ID BufferOUT[1] = 0x0A; // Primero enviamos un comando de control al dispositivo: // 0x0A (COMANDO_SALIDAS). BufferOUT[2] = 0x40; // Luego enviamos los datos de control de los LED'S. kiemtraketnoi = 0; timer1.Enabled = true; } else { byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE]; BufferOUT[0] = 0; // Report ID BufferOUT[1] = 0x0A; // Primero enviamos un comando de control al dispositivo: // 0x0A (COMANDO_SALIDAS). BufferOUT[2] = 0x30; // Luego enviamos los datos de control de los LED'S. EasyHID.Disconnect(); khoitaodraw(); ketnoi.Text = "K ết Nối"; ketnoi.BackColor = Color.Red; kt = 0; } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { byte[] BufferOUT = new byte[EasyHID.BUFFER_OUT_SIZE]; BufferOUT[0] = 0; // Report ID BufferOUT[1] = 0x0A; // Primero enviamos un comando de control al dispositivo: // 0x0A (COMANDO_SALIDAS). BufferOUT[2] = 0x30; // Luego enviamos los datos de control de los LED'S. EasyHID.Disconnect(); } } }
ồn chương trình
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 35/38
Chương 7 K ết luận Chương này tổng k ết những gì đề tài đạt được và chưa đạt được đồ ng thời đưa ra hướ ng phát triển. 7.1 K ết quả của đề tài - Thực hiện đượ c giao tiế p qua c ổng USB sử dụng phương thứ c truyền Interrupt và giao tiế p qua lớ p HID của Window. - Mạch hiển thị đượ c giờ hệ thống. - Đo nhiệt đô hiể n thị lên lcd và máy tính. - chương trình C# có vẽ đồ thị và hiển thị nhiệt độ. 7.2 Hạn chế của đề tài - Do giớ i hạn về thờ i gian và chuẩn USB là 1 chu ẩn giao tiế p khá nhi ều thứ liên quan nên còn nhiều nhược điểm về việc xây dựng phần mềm như : + Firmwave cho USB còn d ựa trên bộ thư viện có sẳn của CCS chưa tự xây dựng hoàn toàn. + Driver sử dụng bộ driver có sẵn trong lớ p HID của Window chưa tự xây dựng đượ c driver. + Ph ần mềm trên C# s ử dụng l ớp EASYHID và MCHID.dll để giao tiế p chưa tự viết đượ c lớ p giao tiế p . -layout mạch vẫn còn jump. 7.3 Hƣớ ng phát triển của đề tài - Tự xây dựng hoàn toàn từ firmwave cho đến driver và phần mềm giao tiế p . - Tìm hiểu và hoàn thiện đề tài hơn, và nghiên cứu sâu hơn về giao tiế p usb.
ế
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb
Tr ang 36/38
PHỤ LỤC A: HƢỚ NG DẪN SỬ DỤNG Đầu tiên: -
Cắm jack USB vào và bật chương trình điều khiển bằng C# trên máy tính. Nhấn kết nối ở trên chương trình điều khiển. Khi kết nối được nút nhấn đó sẽ hiện ra màu xanh và có chữ ngắt kết nôi. Nếu chữ đó vẫn còn màu đỏ là chưa kết nối được. Khi kết nối được sẽ thấy chương trình hoạt động. Nhiệt độ sẽ được hiện thị ở góc trên bên trái và ngày giờ ở góc trên bên phải. Có 2 nút nhấn để điều khiển đèn led tương ứng với nhiệt độ quá cao hay quá thấp.
Đo nhiệt độ giao ti ế p máy tính qua c ổ ng usb PHỤ LỤC B: Bảng Tập Lệnh Của LCD Mã(HEX) 1 2 4 5 6 7 8 A C E F 10 14 18 1C 80 C0 38
Lệnh đến thanh ghi của LCD Xóa màn hình hiển thị Tr ở về đầu dòng Giả con tr ỏ(Dịch con tr ỏ sang trái) Tăng con trỏ(Dịch con tr ỏ sang phải) Dịch hiển thị sang trái Dịch hiển thị sang phải Tắt con tr ỏ, tắt hiển thị Tắt hiển thị, bật con tr ỏ Bật hiển thị, tắt con tr ỏ Bật hiển thị, nhấ p nháy con tr ỏ Tắt con tr ỏ, nhấ p nháy con tr ỏ Dịch vị trí con tr ỏ sang trái Dịch vị trí con tr ỏ sang phải Dịch toàn bộ vị trí hiển thị sang trái Dịch toàn bộ vị trí hiển thị sang phải Ép con tr ỏ về đầu dòng thứ nhất Ép con tr ỏ về đầu dòng thứ hai Hai dòng và ma tr ận 5x7
Tr ang 37/38