Công nghệ kĩ thuật máy tính - Điều khiển các thiết bị khác thông qua máy tính
Bạn đang xem 20 trang mẫu của tài liệu "Công nghệ kĩ thuật máy tính - Điều khiển các thiết bị khác thông qua máy tính", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- cong_nghe_ki_thuat_may_tinh_dieu_khien_cac_thiet_bi_khac_tho.doc
Nội dung text: Công nghệ kĩ thuật máy tính - Điều khiển các thiết bị khác thông qua máy tính
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN: Giáo viên hướng dẫn SVTH : Nguyễn Văn Trung 1
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA MỤC LỤC I-Mở bài 1-Vị trí của đề tài 3 2-Tình hình nghiên cứu hiện nay 3 3-Cách tiếp cận đề tày 3 II-Lựa chọn phương án -Lựa chọn phương án 3 -Sơ đồ phần cứng và lưu đồ 6 III-Giới thiệu linh kiện và phần mền A-Vi điều khiển PIC 18F2550 .7 1-Giới thiệu sơ lược về PIC 18F2550 .7 2- Sơ đồ chân và chức năng các chân .8 3- Đặc tính điện 8 4-Các thanh ghi .9 B-Giới thiệu usb 12 1-Nhận biết tốc độ trên bus 14 2- Các trạng thái usb 14 3-Truyền thông qua bus USB 15 C- LED MA TRẬN 1. Giới thiệu về led ma trân 21 2.Cấu tạo và phương pháp điều khiển led ma trận 22 D- Các linh kiện khác 1- ULN2803 22 2-TPIC6B595 .22 3- Transistor D46825 .25 IV-Tính tóan từng khối 1-Khối giao tiếp usb 25 2-Khối điều khiển và hiển thị 25 3) Tính công suất: .28 4-Khối nguồn 28 IV-Phần mền . 28 V-Kết quả 35 VI-Kết luận . 36 SVTH : Nguyễn Văn Trung 2
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA I-Mở bài: 1) Vị trí của đề tài: Ngày nay với sự phát triển của nền công nghiệp điện tử thì vấn đề giao tiếp đơn giản, tốc độ truyền và xử lý dữ liệu ngày càng được chú trọng. Chuẩn giao tiếp USB ngày càng được sử dụng rộng rãi để đáp ứng những yêu cầu trên để thay thế dần cho giao tiếp cổng com, lpt có tốc độ thấp hơn. 2) Tình hình nghiên cứu hiện nay: - Ở Việt Nam: + Tại các trường đại học có nhiều đề tài giao tiếp máy tính với vi điều khiển AVR bằng cổng usb, còn với PIC thì có rất ít đề tài và chủ yếu giao tiếp qua lớp HID. + Trên thị trường có các doanh nghiệp đã giao tiếp thành công và tự viết driver cho thiết bị và truyền với tốc độ cao. - Trên thế giới: vấn đề giao tiếp máy tính với vi điều khiển qua cổng usb đã được nghiên cứu rất lâu, và có rất nhiều sản phẩm như các kit thí nghiệm, mạch nạp cổng usb 3) Tiếp cận đề tài: -Có các kiến thức cơ bản về kỹ thuật số, vi điều khiển PIC, điện tử cơ bản, kiến thưc cơ bản về chuẩn usb, lập trình C (hoặc ngôn ngữ lập trình khác) *Hướng giải quyết đề tài: - Tìm hiểu các linh kiện liên quan đến đề tài, so sánh tính ưu việt của các linh kiện tương quan nhằm lựa chọn linh kiện thiết kế cho phù hợp. - Thiết kế mạch. - Chạy mô phỏng. - Thi hành mạch. II- Lựa chọn phương án : Phương án 1: sử dụng vi điều khiển có hổ trợ giao tiếp USB Ưu điểm: giá thành rẽ, có nhiều phần mềm hổ trợ Khuyết điểm: Có một số phần mềm đòi hỏi viết driver. Phương án 2: sử dụng sẵn module giao tiếp USB, và xây dựng những ứng dụng mong muốn. Ưu điểm: dễ thiết kế, lập trình đơn giản ( ứng dụng), không mất nhiêù thơì gian để viết driver. Khuyết điểm: giá thành cao SVTH : Nguyễn Văn Trung 3
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Phương án 3: sử dụng cổng com ảo Ưu điểm: lập trình như cổng com Khuyết điểm: tốc độ thấp hơn so với cổng usb. Từ những phân tích trên và từ yêu cầu của đề tài nên em chọn phương án 1. Các lựa chọn trong phương án 1: - Vi xử lý: AVR, pic 18F2550, pic 18F4450 - Hiển thị: led ma trận,LCD, led 7 đoạn. - Phần mền: CCS, Delphi, mikcroC, C#,C+. - Tạo giao diện: VB, mikcroC. 1) Lựa chọn vi điều khiển: PIC 18F2250 có 28 chân có cấu trúc như sau: -Có 3 port xuất nhập A,B,C. -10 kênh chuyển đổi tương tự sang số 10 bit. -Có 4 timers: 3 timer 16 bit, 1 timer 1 bit. -Có hỗ trợ giao tiếp USB. -Bộ nhớ dữ liệu EEPROM: 256 bytes. -Bộ nhớ chương trình : 32768 bytes. -Có giao tiếp nối tiếp MSSP, ENHANCED UART. -Giao tiếp song song PSP. -Có 19 nguồn ngắt. - Tần số hoạt động: 0-48MHz. PIC 18F4550 có các thông số như 18F2550: -Có 5 port xuất nhập A,B,C, D,E. -13 kênh chuyển đổi tương tự sang số 10 bit. -Có 4 timers: 3 timer 16 bit, 1 timer 1 bit. -Có hỗ trợ giao tiếp USB. -Bộ nhớ dữ liệu EEPROM: 256 bytes. -Bộ nhớ chương trình : 32768 bytes. -Có giao tiếp nối tiếp MSSP, ENHANCED UART. -Giao tiếp song song PSP. -Có 20 nguồn ngắt. - Tần số hoạt động: 0-48MHz. AVR: có nhiều dòng hỗ trợ giao tiếp usb như tiny2313 * Đề tài chọn PIC 18F2550 vì: - Có những kiến thức cơ bản về 16F877A. - Do yêu cầu của đề tài và giá thành. 2) Lựa chọn khối hiển thị: - Led ma trận hiển thị được nhiều thông tin hơn led 7 đoạn phù hợp với việc điều khiển hiển thị từ máy tính. SVTH : Nguyễn Văn Trung 4
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -LCD cũng hiển thị đựợc nhiều thông tin nhưng cở chữ nhỏ. Do đó đề tài chọn led ma trận 3) Lựa phần mềm: Trên thị trường có nhiều chương trình biên dịch C cho vi điều khiển PIC18. Các trình bên dịch này có nhiều đặc tính giống nhau, và chúng dùng để phát triển chương trình C cho PIC18. Vài trình biên dịch C thường được dùng: -MikroC -PICC18 -C18 -CCS MikroC: được xây dựng bởi MikroElektronika. Dễ dàng để học với một số lượng lớn hàm được hỗ trợ để lập trình, và có hỗ trợ các hàm giao tiếp usb, và có sẵn giao diện. PICC18: được xây dựng bởi Hi-Tech Software, với hai phiên bản standard and professional. PICC18 được hỗ trợ bởi phần mềm mô phỏng PROTEUS dùng để mô phỏng vi điều khiển PIC. C18: được xây dựng bởi Microchip Inc, bao gồm việc mô phỏng, hỗ trợ phần cứng. CCS: được xây dựng bởi Custom Computer Systems Inc, cung cấp một số lượng lớn các hàm để lập trình và các mạch debugger , chúng rất hữu ích để phát triển PIC và có hỗ trợ các hàm giao tiếp usb. Người nghiên cứu chọn CCS để viết chương trình, và VB để viết giao diện. 5) Sơ đồ: a) Phần cứng: SVTH : Nguyễn Văn Trung 5
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Nguồn DC Nút nhấn (mở rộng) usb Máy tính BB Vi điều khiển Hiển thị led ma PIC18F4550 trận b) Phần mềm: Lưu đồ SVTH : Nguyễn Văn Trung 6
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Bắt đầu Bắt đầu Gởi data S Gởi data S từ máy từ vđk tính Đ Đ Xử lý Xử lý Hiển thị led Hiển thị trên ma trận giao diện Kết thúc Kết thúc Lưu đồ trên vđk Lưu đồ trên máy tính III- Giới thiệu linh kiện và phần mềm A-Vi điều khiển PIC 18F2550: 1-Giới thiệu sơ lược về PIC 18F2550 -Có 3 port xuất nhập A,B,C. -10 kênh chuyển đổi tương tự sang số 10 bit. -Có 4 timers: 3 timer 16 bit, 1 timer 1 bit. -Có hỗ trợ giao tiếp USB. -Bộ nhớ dữ liệu EEPROM: 256 bytes. SVTH : Nguyễn Văn Trung 7
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -Bộ nhớ chương trình : 32768 bytes. -Có giao tiếp nối tiếp MSSP, ENHANCED UART. -Giao tiếp song song PSP. -Có 19 nguồn ngắt. - Tần số hoạt động: 0-48MHz. 2- Sơ đồ chân và chức năng các chân. Sơ đồ chân: - Chân MCLR\/Vpp/RE3 ( chân 1): + MCLR\: là ngõ vào reset tích cực mức thấp. +Vpp : khi lập trình cho PIC thì đóng vai trò ngõ vào nhận điện áp lập trình. +RE3: ngõ vào số. -OSC1/CLK1 (chân 9): + OSC1: ngõ vào dao động thạch anh hoặc là ngõ vào nguồn xung bên ngoài. + CLK1:ngõ vào nguồn xung bên ngoài. -OSC2/CLK0/RA6(chân 10): + OSC2: ngõ vào dao động thạch anh . + CLK0: trong việc chọn mode, bằng ¼ tần số của OSC1. -RC4/D-/VM (chân 15): +RC4: ngõ vào số. +D-: ngõ vào trừ USB -RC5/D+/VP (chân 16): +RC5: ngõ vào số. +D-: ngõ vào cộng USB SVTH : Nguyễn Văn Trung 8
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -VUSB (chân 14): chân nguồn USB 3,3V. -Vss (chân 8,19) : chân GND. -VDD (chân 20): chân nguồn dương. 3- Đặc tính điện: - Dòng điện vào /ra =25mA. 4-Các thanh ghi: - Chế độ hoạt động của USB được cài đặt và quản lý bởi các thanh ghi điều khiển: +USB control register (UCON). +USB configuration registor (UCFG). +USB transfer status register (USTAT). +USB device Address register (UADDR). Thanh ghi UCON: chứa các bit cần thiết để điều khiển hoạt động của module trong quá trình chuyển đổi. Thanh ghi chứa các bit có thể điều khiển: -Cho phép thiết bị ngoại vi USB. - Reset Ping-Pong buffer pointer - Điều khiển chế độ suspend. -Cấm chuyển đổi gói. Ngoài ra còn chứa các bit trạng thái. SVTH : Nguyễn Văn Trung 9
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -Thanh ghi UCFG: chứa hầu hết các bit điều khiển hoạt động của module USB: +Tốc độ bus. +Cho phép điện trở kéo lên trong chip. +Cho phép chuyển đổi trong chip. +Sử dụng ping-pong buffer. SVTH : Nguyễn Văn Trung 10
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -Thanh ghi USATA: thanh ghi này chứa số endpoint, bộ đệm ping-pong, giá trị con trỏ. SVTH : Nguyễn Văn Trung 11
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -Thanh ghi UADDR: chứa địa chỉ duy nhất của USB khi hoạt động.UADDR sẽ reset về 0 khi nhận lệnh reset usb hoặc reset vi điều khiển. Địa chỉ usb phải được viết trong vi điều khiển thông qua quá trình thiết lập usb cũng như trong firmware của Mỉcochip hỗ trợ. B-Giới thiệu usb: Universal serial bus (usb-bus truyền thông nối tiếp) là 1 trong những giao diện phổ biến nhất được ứng dụng trong các sản phẩm điện tử tiên tiến hiện nay như là: flash, card âm thanh Usb là một chuẩn kết nối tốc độ cao với nguồn cung cấp 5v được cung cấp cho thiết bị được kết nối đến chúng, 1 bus kết nối usb có thể kết nối đến 127 thiết bị usb được nối qua 1 cáp 4 dây và có thể truyền thông tin qua khoảng cách từ 3m đến 5m chiếu dài. Nhiều thiết bị usb có thể kết nối như nhau đến 1 thiết bị gọi là hub có thể có đến 4, 8 hay thậm chí 16 port. Một hub lại được kết nối vào 1 hub khác, cứ như thế, số lượng tầng lớp cho phép là 6 .Trên lý thuyết khoảng cách cực đại đến 1 trạm chủ là 30 mét, sử dung 5 hub. Trên lý thuyết usb có 2 phiên bản- phiên bản trước đó là 1.1 có thể hỗ trợ tốc độ truyền thông lên đến 11Mbps. Trong khi đó phiên bản 2.0 hỗ trợ đến 480Mbps được định nghĩa với 3 tốc độ dữ liệu: Low-speed :1.5 Mbps Full-speed :12 Mbps SVTH : Nguyễn Văn Trung 12
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA High-speed :480 Mbps Usb bus có thể cung cấp nguồn tối đa cho thiết bi đến 100mA với nguồn 5v. Cáp usb sử dụng dây có 4 lõi với 2 đầu cáp được che kín, có 2 loại đầu nối usb kiểu A và kiểu B. Đầu nối kiểu A (trái)- đầu nối kiểu B (phải) Thứ tự chân Ý nghĩa các chân SVTH : Nguyễn Văn Trung 13
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Dây tín hiệu usb có 2 dây, tín hiệu được gửi từ máy chủ sử dung kỹ thuật mã hoá NRTI, Trong kỹ thuật này tín hiệu được đảo ngược cho sự thay đổi với mức logic 0.Tín hiệu cho mức logix 1 là không đổi. Một gói dữ liệu từ host được gởi tới các thiết được nối với bus qua các hub, tất cả các thiết bị đều nhận tín hiệu nhưng chỉ duy nhất một thiết bị đã được định địa chỉ là nhận dữ liệu đó, chỉ duy nhất một thiết bị tại mỗi thời điểm bất kì có thể truyền tới host, và dữ liệu được truyền lên lần lượt qua các hub cho đến khi đến được host. Các thuật ngữ chung: Endpoint: có thể là nguồn hoặc nơi thu vào dữ liệu, một thiết bị usb có thể có 1 số endpoint, giới hạn số endpoint là 16 in và 16 out endpoint Pipe: kết nối dữ liệu logic của host và endpoint Transaction: truyền dữ liệu trên bus. 1-Nhận biết tốc độ trên bus: Ở bus full-speed điện trở được nối từ D+ lên 3.3v và ở bus low-speed điện trở được nối từ D- lên 3.3v. Khi không có thiết bị nào được nối host sẽ xem cả hai đường dữ kiệu đếu ở mức thấp. Việc kết nối dữ liệu vào sẽ kéo D+ hoặt D- lên mức cao và host sẽ nhận biết đựơc là có thiết bị cắm vào bus. 2- Các trạng thái usb: Idle: bus ở trạng thái chờ khi đó một đường dữ liệu được kéo lên ở mức cao còn đường dữ liệu còn lại xuống thấp.Đây là trạng thái của dây trước và sau khi truyền xong gói dữ kiệu. Detached: khi không có thiết bị nào kết nối, host biết cả hai đường dữ liệu điều ở mức thấp. Attached: trạng thái mà có một trong hai dây tín hiệu đã được nối với điện trở treo lên 3.3v báo có thiết bị cắm vào bus. J state: giống idle K state: ngược lại với J state SE0: kết thúc trạng thái 0. Cả 2 dây tín hiệu được kéo xuống mức 0 SE1 : kết thúc trạng thái 1. Hai dây tín hiệu ỏ mức 1. Đây là trạng thái cấm không bao giờ xuất hiện trên bus. SVTH : Nguyễn Văn Trung 14
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Reset: trạng thái mà khi host bắt đầu kết nối với một thiết bị. Một tín hiệu reset đựơc gởi đến bằng cách kéo 2 dây tín hiệu xuống mức thấp(SE0) trong ít nhất 10ms. EOP : (end of pakaged state) đại loại là trạng thái SE0 cho thời gian truyền hai bit và trạng thái k state trong thời gian truyền một bit Keep alive: trạng thái được gởi bằng EOP. Trang thái này được gởi mổi 1 mili giây để giữ thiết bị không bị gián đoạn. Suspend : chế độ đình chỉ dùng để tiết kiệm năng lượng. Sẽ không truyền bất cứ gì đến thiết bị khỏang 3ms, 1 thết bị bị đình chỉ tiêu tốn khoảng 0.5mA từ bus, và có thể nhận biết được tín hiệu reset, và kết nối tiếp tục. Resume : 1 thíêt bị bị đình chỉ được đánh thức, bằng việc đảo ngược tín hiệu trong ít nhất 20ms, theo sau đó là 1 tín hiệu EOP chậm. 3-Truyền thông qua bus USB Mỗi thiết bị được cắm vào bus usb nó sẽ được host định cho 1 địa chỉ duy nhất và không có thết bị phụ nào được phép gởi tín hiệu lên bus nếu nó không được host ra lệnh. Khi có 1 thiết bị được nối vào bus, host sẽ lấy thông tin từ địa chỉ 0 để biết các thông tin cơ bản về thiết bị và sau đó host sẽ gán cho thiết bị này 1 địa chỉ duy nhất, tiếp theo host sẽ lấy thêm các thông tin cụ thể hơn từ thiết bị như tên sản phẩm, nhà sản xuất, dung lượng của thiết bị, số hiệu sản phẩm lúc này những giao tiếp hai chiều được bắt đầu. 3.1 Gói dữ liệu Dữ liệu được gởi qua lại trên bus usb theo gói. Gói dữ liệu chứa 1 tín hiệu đồng bộ, 1 byte PID, 0- 1024 byte dữ liệu, 1 tín hiệu kiểm tra lỗi CRC và EOP. PID (packet identifier) là chuỗi 4 bit và chuỗi 4 bit này được lặp lại với số bù của nó. Có 17 giá trị PID khác nhau. PID gởi tại điểm bắt đầu mỗi gói. Có 4 dang gói : token packet, data packet, handshake packet, special packet. SVTH : Nguyễn Văn Trung 15
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA 3.2 Các kiểu truyền chuỗi dữ liệu: Có 4 cách truyển dữ liệu lên bus usb: truyển dữ liệu khối lớn (bulk transfer), truyển dữ liệu qua ngắt (interupt transfer), truyền dữ liệu điều khiển (control transfer) và truyền dữ liệu đẳng thời (isochronus transfer). -Bulk transfer: được thiết kế để truyền 1 số lượng lớn dữ liệu mà không có sửa lỗi và không đảm bảo băng thông. Nếu một out endpoint được định nghĩa như sử dụng bulk transfer thì host sẽ gửi dữ liêu ra sử dung out transaction. Nếu một in endpoint được định nghĩa sử dụng bulk transfer thì host sẽ nhận dữ liệu in transaction. Nói chung, bulk transfer được sử dụng những nơi mà không truyền dữ liệu tốc độ thấp. Kích thước tối đa của nó là từ 8 đến 64 bytes ở tốc độ full speed và 512 gói ở high speed.(bulk transfer không sử dụng ở chế độ low speed). -Interupt transfer: được thiết kế để truyền những mẫu nhỏ dữ liệu với 1 băng thông lớn, dữ liệu cần được truyền đi càng nhanh càng tốt mà không có thời gian trì hoãn. Interupt transfer có thể truyền từ 1 đến 8 byte ở chế độ low speed, 1-64 byte full speed ,và lên đến 1024 byte high speed. -Isochonous transfer: phải bảo đảm về băng thông, nhưng không đảm bảo về lỗi dữ liệu khi đến nơi. Kiểu này thường được dùng trong những ứng dụng mà tốc độ truyền thì rất quan trọng nhưng việc có hỏng hóc 1 hay 1số ít dữ liệu thì chẳng có vấn đề gì. Kiểu truyền dữ kiệu này thì có thể truyền đến 1023 byte ở chế độ SVTH : Nguyễn Văn Trung 16
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA full-speed, và 1024 với chế độ full-speed. (kiểu này không hỗ trợ chế độ low speed). -Control transfer: kiểu truyền dữ liệu 2 chiều sử dụng cả in và out endpoint. Host sử dụng cấu hình ban đầu của thiết bị. Kích thước tối đa của gói dữ liệu là 8 byte ở low-speed, 8-64 byte full-speed và 64 byte high-speed. 3.3 ENUMERATION (Quá trình liệt kê) Khi có 1 thiết bị usb được cắm vào, thiết bị này sẽ được nhận biết bởi host qua một quá trình được gọi là quá trình liệt kê. Các bước của quá trình liệt kê: +Khi thiết bị cắm vào, host sẽ nhận biết usb, do 1 trong 2 chân tín hiệu (D+, D-) sẽ nối đến mức logic 1. +Host sẽ gửi đến usb một tín hiệu reset để có thể nhận biết trạng thái của nó, reset thiết bị về địa chỉ 0. +Host sẽ gởi 1 yêu cầu trên địa chỉ 0 tới thiết bị để tìm kích thước tối đa của gói dữ liệu bằng lệnh “get descriptor”(mô tả thiết bị) +Thiết bị đáp ứng lại bằng cách gửi 1 phần nhỏ thông tin mô tả thiết bị. +Host gửi tín hiệu reset usb 1 lần nữa +Host gán cho thiết bị 1 địa chỉ duy nhất, và gửi đến thiết bị một yêu cầu lập địa chỉ đến thiết bị. Sau khi hoàn tất yêu cầu, thiết bị đựơc bổ sung địa chỉ mới. Và từ lúc này host đã có thể nhận biết các thiết bị mới hơn cắm vào bus. +Host gửi yêu cầu“get divice descritor” (mô tả thông tin thiết bị) để có thể nhận biết hoàn toàn các thông tin về thiết bị (thông tin về kiểu thiết bị, lớp thiết bị ) +Host gửi yêu cầu về “get configuration description” (mô tả cấu hình) để biết thông tin cấu hình như yêu cầu về năng lượng, kiểu và số của những giao diện được hỗ trợ. +Host yêu cầu các thông tin thêm về mô tả thiết bị. Ban đẩu thiết bị đã được định địa chỉ tuy nhiên nó vẫn chưa thể dịnh xong cấu hình, sau khi host tập trung đủ tất cả thông tin về thiết bị, máy tính tải trình điều khiển thiết bị (device driver) bằng cách gửi cho nó yêu cầu “set configuration” (đặt cấu hình), kể từ đây thíêt bị đã được đặt cấu hình và sẵn sàng đáp ứng những yêu cầu đặt biệt từ máy tính (truyền ,nhận dữ liệu ). 3.4 Descriptors: mô tả -Tất cả các usb đều có 1 sự phân cấp các mô tả cho các đặt tính khác nhau của từng thiết bị: số hiệu sản phẩm, phiên bản thiết bị, phiên bản usb mà nó hỗ trợ. Những mô tả chung nhất: + Mô tả thiết bị + Mô tả cấu hình + Mô tả giao tiếp + Mô tả HID SVTH : Nguyễn Văn Trung 17
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA + Mô tả endpoint. 3.4.1 Mô tả thiết bị (device descriptor) -Một thiết bị usb chỉ có 1 bản mô tả thiết bị, bởi vì nó biễu diễn cho cả thiết bị, nó cung cấp các thông tin cơ bản như là nhà sản xuất, số hiệu sản phẩm, lớp thiết bị -blenght là chiều dài của bản mô tả thiết bị. -bdescritortype là loại descriptor. -bcdusb là số phiên bản cao nhất được hỗ trợ. SVTH : Nguyễn Văn Trung 18
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA -bdeviceclass, bdevicesubclass và bdeviceprotocol: được gán bởi usb và được sử dụng bởi hệ thống để tìm lớp diver cho thiết bị. -bmaxpacketsize0: kích thước tối đa của in và output cho 1 endpoint. -idvendor: id của nhà cung cấp. -idproduct: id của sản phẩm được gán bởi nhà cung cấp. -bcddivice: số phiên bản của thiết bị. 3.4.2- CONFUGURATION DESCRIPTOR (mô tả cấu hình) -Mô tả cấu hình đưa ra các thông tin về năng lượng cần có, số giao diện mà nó hỗ trợ, có thể có nhiều hơn 1 cấu hình cho 1 thiết bị. Blenght: cho biết số byte dùng làm mô tả cấu hình. Bdescriptortype: dạng mô tả. Wtotalenght: tổng kích thước của bản mô tả (mô tả cấu hình, mô tả giao tiếp, mô tả HID, mô tả endpoint). Bnumberinterfac: số giao diện của cấu hình Bconfigurationvalue: giao diện được chọn bởi host. Iconfigiration: chỉ số chỉ tới chuỗi mô tả cấu hình có thể đọc được. Bmattributes: các thông tin về nguồn điện. Bmaxpower: chỉ cho ta biết năng lượng tiêu thụ tối đa (mỗi bước là 2mA). 3.4.3- INTERFACE DESCRIPTOR(mô tả giao diện) Mô tả giao diện chỉ rõ lớp thiết bị (device class) và số lượng endpoint mà nó sử dụng. Có thể có nhiều mô tả giao diện cho 1 thiết bị. SVTH : Nguyễn Văn Trung 19
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Blenght: chiều dài của mô tả thiết bị bdescriptortype: kiểu mô tả. binterfacenumber: số của giao diện. balternatesetting :chỉ rõ những giao diện xen kẽ, có thể đặt bởi host bằng cách sử dụng lệnh setinterface. bnumendpiont :chỉ ra số endpoint dùng trong gao diện binterfaceclass: chỉ ra mã số lớp thiết bị. binterfacesubclass: chỉ ra mã số lớp phụ thiết bị. binterfaceprotocol: chỉ ra mã số giao thức của thiết bị. iinterface: chỉ tới dịa chỉ chuỗi mô tả giao diện. 3.4.4- HID DESCIPTOR (bản mô tả HID) Bản mô tả này luôn đi sau bản mô tả giao diện, khi giao diện thuộc lớp HID. Blenght: chiều dài của bản mô tả. Bdescriptor: kiểu bản mô tả. Bcdhid: mô tả lớp hid. Bcountrycode: mã nước. Bnumdescriptor: chỉ ra những mô tả thêm có liên hệ với lóp này. SVTH : Nguyễn Văn Trung 20
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Bdescriptortype: chỉ ra kiểu những mô tả thêm ở bnumdescriptor. Wdescriptorlenght: chiều dài của bản mô tả bổ sung. 3.4.5- Bộ mô tả Endpoint Mỗi Endpoint được chỉ rõ trong một bộ mô tả giao diện có bộ mô tả Endpoint. Endpoint 0 không bao giờ có bộ mô tả bởi vì các thiết bị đều hỗ trợ Endpoint 0, bộ mô tả thiết bị chứa kích thước tối đa của gói tin, và kỹ thuật USB định nghĩa những thứ khác về Endpoint. Bảng 5-8 liệt kê 6 trường của bộ mô tả Endpoint theo thứ tự chúng xuất hiện trong bộ mô tả. Những sự mô tả dưới đây được nhóm theo chức năng. C- LED MA TRẬN: 1. Giới thiệu về led ma trân: Led ma trận là 1 tập các led đơn được bố trí theo dạng ma trận cho phép hiển thị được các kí tự bất kì. Các nhà chế tạo đã tích hợp các dạng ma trận tính theo led 5*7 (5 cột và 7 hàng) hoặc 8x8 (8 cột và 8 hàng) và tính theo kích thước và phân biệt theo màu của led, cuối cùng là phân biệt led sáng trong nhà (indoor) hay led sáng ngòai trời (outdoor). Led sáng trong nhà thì khổng thể dùng được ngoài trời vì ánh sáng mặt trời chiếu vào làm chúng ta không nhìn thấy rõ, chỉ có led outdoor mới thấy rõ, và dĩ nhiên led outdoor sẽ có giá thành cao hơn. Giới thiệu led ma trận 5x7 với 4 màu khác nhau: SVTH : Nguyễn Văn Trung 21
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA 2.Cấu tạo và phương pháp điều khiển led ma trận: Led ma trận là một tập hợp các led đơn với cách kết nố như sau: theo hàng thì các anode nối chung, theo cột thì các cathode nối chung, với led ma trận 5x7 thì có 7 hàng và 5 cột. Anode nối với mức H và cathode nối mức L thì led sáng, các trường hợp còn lại thì led tắt. Có hai cách điều khiển led ma trận Cách 1: dữ liệu gởi ra hàng, mã quét gởi ra cột: Ưu điểm: Khi mở rộng thêm led thì chỉ cần kết nối song song 8 hàng và cột dùng thanh ghi dịch rất đơn giản do số lượng đường điều khiển ít Mỗi một thời điểm chỉ có 1 cột sáng nên dòng tiêu thụ thấp Mạch điện đơn giản Khuyết điểm: Bị giới hạn số cột vì khi mở rộng càng nhiều cột thì thời gian tắt của led tăng thêm => tăng dòng quá lớn nguy hiểm cho led và led sáng không rõ sinh ra hiện tượng chập chờn. Giả sử có 100 cột thì cho dù quét nhanh hay quét chậm thì thời gian sáng của mỗi cột vẫn không đổi bằng 1/100 thời gian tắt bằng 99/100. Cách 2: dữ liệu gởi ra cột, mã quét gởi ra hàng: Với cách quét theo hàng thì thời gian sáng của led là 1/8 thời gian tắt là 7/8 Khi tăng thêm led => số cột tăng lên thì thời gian sáng và tắt của mỗi led vẫn không đổi. Nhưng chu kỳ quét sẽ tăng vì phải tốn thêm thời gian gởi dữ liệu ra các cột, càng nhiều cột thì càng tốn thời gian gởi dữ liệu. SVTH : Nguyễn Văn Trung 22
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Để đáp ứng được tốc độ quét khi bảng quan báo có nhiều led thì phải sử dụng các IC có tốc độ làm việc cao khoảng vài chục MHz như CPLD để phụ trách công việc này. D- Các linh kiện khác: 1- ULN2803 Đây là IC đệm, đảo. Điện áp ngõ ra lên tới 50v. Dòng ngõ ra tối đa 500mA. 2-TPIC6B595: SVTH : Nguyễn Văn Trung 23
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Đây là IC dịch 8 bit. Dòng ngõ ra tối đa 500mA. Điện áp ngõ vào -0,3v - 7v. Điện áp ngõ ra lên tới 50V. Điện áp cấp cho IC: 5v. SVTH : Nguyễn Văn Trung 24
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA G\: chân cho phép ngõ ra. SER IN: chân dữ liệu. SRCK: chân dịch dữ liệu tầng thứ nhất. RCK: chân chốt dữ liệu ngõ ra. SRCLR\: chân xoá ngõ ra. 3- Transistor D468: Dòng Ic=1A. Hệ số khuếch đại: 85 – 170. Điện áp đánh thủng Vce=20V; Vcb= 25V. Điện áp Vce-sat=0.5V. VI- Thiết kế mạch: 1- Khối giao tiếp usb: VDD R5 10K SW2 RESET U2 C5 10uf 1 28 2 MCLR RB7 27 3 RA0 RB6 26 4 RA1 RB5 25 0 5 RA2 RB4 24 6 RA3 RB3 23 7 RA4 RB2 22 8 RA5 RB1 21 9 VSS RB0 20 33pf Y2 10 OSC1/CLKIN Vdd 19 OSC2/CLKOUT VSS 20MHz 11 18 VDD 1 12 RC0 RC7 17 VSS 2 13 RC1 RC6 16 D+ 3 33pf 14 RC2 RC5/D+ 15 D- 4 Vusb RC4/D- USB 0 33pf PIC18F2550 2-Khối điều khiển và hiển thị RA0-RA4 dùng để điều khiển quét cột (led màu xanh). RC0- RC3 và RC6- RC7 dùng để quét cột (led màu đỏ). RB0- RB7 xuất dữ liệu. SVTH : Nguyễn Văn Trung 25
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Bình thường led làm việc từ 10mA -20mA, áp là 2V. Khi làm việc bình thường (không dùng phương pháp quét) chọn dòng làm việc 20mA. Khi đó điện trở trên mỗi led là: Rled=2/20=0.1(k )=100( ). Khi dùng phương pháp quét thì dòng tức thời phải bằng 32 lần dòng làm việc bình thường tức bằng 640mA (do sử dụng 4 led ma trận 8x8), khi đó dòng trung bình Iled-tb=640/32=20(mA). Do dòng tức thời lớn hơn 500mA, nên dùng D468 khuếch đại dòng. Chọn sat =90, khi đó dòng I B=640/90=7mA. Do đó chọn giá trị điện trở như sơ đồ. 12V R16 CH0 D468 12V 4.7K H1 12V R17 1 CH1 D468 R20 4.7K 4.7K H2 12V R18 CH2 D468 9 8 7 6 5 4 3 2 RB0-RB7 U6 4.7K H3 1 1 18 CH0 12V 2 2 IN1 OUT1 17 CH1 R19 3 3 IN2 OUT2 16 CH2 4 4 IN3 OUT3 15 CH3 CH3 D468 5 5 IN4 OUT4 14 CH4 6 6 IN5 OUT5 13 CH5 4.7K 12V H4 7 7 IN6 OUT6 12 CH6 R25 8 8 IN7 OUT7 11 CH7 12V IN8 OUT8 CH4 D468 D 10 N COM G 4.7K H5 12V 9 ULN2803 R26 H1 1 CH5 D468 H2 2 H3 3 4.7K H6 H4 4 12V H5 5 R27 H6 6 H7 7 CH6 D468 H8 8 4.7K H7 12V DATA R24 CH7 D468 4.7K H8 SVTH : Nguyễn Văn Trung 26
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA 5V 5V U5 U6 2 2 DSER IN 3 4 M1_D0 3 4 M2_D0 SER IN C DRAIN0 SER IN C DRAIN0 C 5 M1_D1 C 5 M2_D1 DRCK 12 V DRAIN1 6 M1_D2 DRCK 12 V DRAIN1 6 M2_D2 DSRCK 13 RCK DRAIN2 7 M1_D3 DSRCK 13 RCK DRAIN2 7 M2_D3 SRCK DRAIN3 14 M1_D4 SRCK DRAIN3 14 M2_D4 DG\ 9 DRAIN4 15 M1_D5 DG\ 9 DRAIN4 15 M2_D5 G DRAIN5 G DRAIN5 RC0-RC7 DSRCLR\ 8 16 M1_D6 DSRCLR\ 8 16 M2_D6 SRCLR DRAIN6 17 M1_D7 SRCLR DRAIN6 17 M2_D7 1 DSER IN 1 DRAIN7 18 1 DRAIN7 18 NC0 D D D SDO NC0 D D D SDO 2 DRCK 20 N N N 20 N N N 3 DSRCK NC1 G G G NC1 G G G 4 DSRCLR\ 0 1 9 0 1 9 5 DG\ TPIC651 95 1 1 TPIC651 95 1 1 QUET COT DO 5V 5V U8 U7 2 2 3 4 M4_D0 SER IN C DRAIN0 3 4 M3_D0 C 5 M4_D1 C SER IN DRAIN0 V DRAIN1 C 5 M3_D1 DRCK 12 6 M4_D2 DRCK 12 V DRAIN1 6 M3_D2 DSRCK13 RCK DRAIN2 7 M4_D3 DSRCK13 RCK DRAIN2 7 M3_D3 SRCK DRAIN3 14 M4_D4 SRCK DRAIN3 14 M3_D4 DG\ 9 DRAIN4 15 M4_D5 DG\ 9 DRAIN4 15 M3_D5 DSRCLR\ 8 G DRAIN5 16 M4_D6 DSRCLR\ 8 G DRAIN5 16 M3_D6 SRCLR DRAIN6 17 M4_D7 SRCLR DRAIN6 17 M3_D7 1 DRAIN7 18 DRAIN7 NC0 D D D SDO 1 18 20 N N N D D D NC0 SDO NC1 G G G 20 N N N NC1 G G G 0 1 9 TPIC651 95 1 1 0 1 9 TPIC651 95 1 1 SVTH : Nguyễn Văn Trung 27
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA 5V 5V U5 U6 2 2 SER IN 3 4 M1_D0 3 4 M2_D0 SER IN C DRAIN0 SER IN C DRAIN0 C 5 M1_D1 C 5 M2_D1 RCK 12 V DRAIN1 6 M1_D2 RCK 12 V DRAIN1 6 M2_D2 SRCK 13 RCK DRAIN2 7 M1_D3 SRCK 13 RCK DRAIN2 7 M2_D3 SRCK DRAIN3 14 M1_D4 SRCK DRAIN3 14 M2_D4 G\ 9 DRAIN4 15 M1_D5 G\ 9 DRAIN4 15 M2_D5 G DRAIN5 G DRAIN5 RA0-RA4 SRCLR\ 8 16 M1_D6 SRCLR\ 8 16 M2_D6 SRCLR DRAIN6 17 M1_D7 SRCLR DRAIN6 17 M2_D7 1 SER IN 1 DRAIN7 18 1 DRAIN7 18 NC0 D D D SDO NC0 D D D SDO 2 RCK 20 N N N 20 N N N 3 SRCK NC1 G G G NC1 G G G 4 SRCLR\ 0 1 9 0 1 9 5 G\ TPIC651 95 1 1 TPIC651 95 1 1 QUET COT 5V 5V U8 U7 2 2 3 4 M4_D0 SER IN C DRAIN0 3 4 M3_D0 C 5 M4_D1 C SER IN DRAIN0 V DRAIN1 C 5 M3_D1 RCK 12 6 M4_D2 RCK 12 V DRAIN1 6 M3_D2 SRCK 13 RCK DRAIN2 7 M4_D3 SRCK 13 RCK DRAIN2 7 M3_D3 SRCK DRAIN3 14 M4_D4 SRCK DRAIN3 14 M3_D4 G\ 9 DRAIN4 15 M4_D5 G\ 9 DRAIN4 15 M3_D5 SRCLR\ 8 G DRAIN5 16 M4_D6 SRCLR\ 8 G DRAIN5 16 M3_D6 SRCLR DRAIN6 17 M4_D7 SRCLR DRAIN6 17 M3_D7 1 DRAIN7 18 DRAIN7 NC0 D D D SDO 1 18 20 N N N D D D NC0 SDO NC1 G G G 20 N N N NC1 G G G 0 1 9 TPIC651 95 1 1 0 1 9 TPIC651 95 1 1 3) Tính công suất: Công suất tiêu thụ của một hàng: Pled =10x100=1W. Công suất tiêu của 8 hàng: 8 Pled=8w. 4-Khối nguồn: Do công suất của mạch khoảng 8W nên ta có thể chọn IC ổn áp là IC LM7812 cung cấp áp cho led ma trận và ULN2803, LM7805 cung cấp áp cho các linh kiện còn lại. a- Nguồn 5v +Thông số của LM7805: - Điện áp ổn áp ở ngõ ra Uout = 5v 0.1v. - Dòng điện tối đa ở ngõ ra: Iout = 1A. - Điện áp ngõ vào tối thiểu để điện áp ngõ ra ổn định: Uin(min) = 7v. - Điện áp ngõ vào tối đa: 20v SVTH : Nguyễn Văn Trung 28
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA - Dòng điện ở chân nối đất của IC là 5mA. - Dòng điện ngõ vào tối đa: 1.005A. + Mạch điện: Từ thông số của LM7805 ta có thể lấy nguồn 12v , 1A từ adapter. 12v U35 1 3 5v VIN D VOUT N G C11 78HT2 2 C12 0.33uf 0.1uf b-Nguồn 12v Do công suất cung cấp 8w nên chọn adapter 12v, 1A. V- Phần mềm: 1-Phần giao diện Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) Dim outputArray() As Long Dim dataArray As Variant Dim crcOK As Boolean Dim useCRC As Boolean Dim sampleSize As Integer Option Explicit Private Sub cmdWritePort_Click() Dim x As Integer Dim theCRC As Byte resetFields txtByte(0).Text = "14" txtByte(1).Text = txtWritePort.Text If Not MyDeviceDetected Then MyDeviceDetected = FindTheHid End If If MyDeviceDetected Then OutputReportData(0) = Val(txtByte(0).Text) OutputReportData(1) = Val(txtByte(1).Text) OutputReportData(2) = Val(txtByte(2).Text) OutputReportData(3) = Val(txtByte(3).Text) OutputReportData(4) = Val(txtByte(4).Text) OutputReportData(5) = Val(txtByte(5).Text) OutputReportData(6) = Val(txtByte(6).Text) SVTH : Nguyễn Văn Trung 29
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA OutputReportData(7) = Val(txtByte(7).Text) Call ReadAndWriteToDevice lblReadData = Str$(ReadBuffer(1)) & "," & Str$(ReadBuffer(2)) & "," & Str$(ReadBuffer(3)) & "," & Str$(ReadBuffer(4)) & "," & Str$(ReadBuffer(5)) & "," & Str$(ReadBuffer(6)) & "," & Str$(ReadBuffer(7)) & "," & Str$(ReadBuffer(8)) If useCRC Then theCRC = calc_CRC(0, ReadBuffer(1)) theCRC = calc_CRC(theCRC, ReadBuffer(2)) theCRC = calc_CRC(theCRC, ReadBuffer(3)) theCRC = calc_CRC(theCRC, ReadBuffer(4)) theCRC = calc_CRC(theCRC, ReadBuffer(5)) theCRC = calc_CRC(theCRC, ReadBuffer(6)) theCRC = calc_CRC(theCRC, ReadBuffer(7)) If theCRC = ReadBuffer(8) Then lblReadData = lblReadData & " CRC OK" crcOK = True Else lblReadData = lblReadData & " CRC BAD" crcOK = False End If End If End If End Sub Private Sub Form_Load() frmMain.Show tmrDelay.Enabled = False sampleSize = 511 useCRC = True ReDim dataArray(sampleSize) As Integer End Sub Private Sub Form_Unload(Cancel As Integer) Dim Result As Long Result = CloseHandle(HIDHandle) Result = CloseHandle(ReadHandle) End Sub SVTH : Nguyễn Văn Trung 30
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA Public Sub resetFields() Dim i As Integer For i = 0 To 7 txtByte(i).Text = "255" Next End Sub Private Sub thoat_Click() Unload Me End Sub Private Sub timerCheckConnection_Timer() If FindTheHid Then lblConnect.Caption = "Connected" lblConnect.ForeColor = RGB(0, 150, 0) Else lblConnect.Caption = "Disconnected" lblConnect.ForeColor = RGB(150, 0, 0) End If End Sub Private Sub tmrDelay_Timer() Timeout = True tmrDelay.Enabled = False End Sub 2-Chương trình C #define __USB_PIC_PERIF__ 1 #include #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV 1,VREGEN #use delay(clock=48000000) #use rs232(stream=PC, baud=115200, xmit=PIN_C6, rcv=PIN_C7, ERRORS) #DEFINE USB_HID_DEVICE TRUE //Tells the CCS PIC USB firmware to include HID handling code. #define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for IN bulk/interrupt transfers #define USB_EP1_TX_SIZE 64 //allocate 64 bytes in the hardware for transmission SVTH : Nguyễn Văn Trung 31
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA #define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for OUT bulk/interrupt transfers #define USB_EP1_RX_SIZE 64 //allocate 64 bytes in the hardware for reception // CCS USB Libraries #include //Microchip 18Fxx5x hardware layer for usb.c #include //USB Configuration and Device descriptors for this UBS device #include //handles usb setup tokens and get descriptor reports #define data PIN_A0 #define SC_CP PIN_A2 #define ST_CP PIN_A3 #define g PIN_A4 #define MR PIN_a5 int8 i,x,y,z,m; const unsigned CHAR ma[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0xdb,0xdd,0xdb,0x07,0xff,0xff,0xff, 0x07,0xdb,0xdd,0xdb,0x07,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; void usb_debug_task(void) { static int8 last_connected; static int8 last_enumerated; int8 new_connected; int8 new_enumerated; new_connected=usb_attached(); new_enumerated=usb_enumerated(); if (new_connected && !last_connected) { printf("\r\n\nUSB connected, waiting for enumaration ");} if (!new_connected && last_connected) { printf("\r\n\nUSB disconnected, waiting for connection ");} if (new_enumerated && !last_enumerated) { SVTH : Nguyễn Văn Trung 32
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA printf("\r\n\nUSB enumerated by PC/HOST");} if (!new_enumerated && last_enumerated) { printf("\r\n\nUSB unenumerated by PC/HOST, waiting for enumeration ");} last_connected=new_connected; last_enumerated=new_enumerated; } #INT_RDA void serial_isr() // Serial Interrupt { int8 uReceive; disable_interrupts(GLOBAL); // Disable Global Interrupts uReceive = fgetc(PC); switch (uReceive) { case 0x12: { if (fgetc(PC) == 0x34 & fgetc(PC) == 0x56 & fgetc(PC) == 0x78 & fgetc(PC) == 0x90) #asm reset #endasm } break; } enable_interrupts(GLOBAL); // Enable Global Interrupts } int calc_crc(int oldcrc, int newbyte) { int shift_reg, data_bit, sr_lsb, fb_bit, j; shift_reg=oldcrc; for(j=0; j > j) & 0x01; sr_lsb = shift_reg & 0x01; fb_bit = (data_bit ^ sr_lsb) & 0x01; shift_reg = shift_reg >> 1; if (fb_bit) shift_reg = shift_reg ^ 0x8c; } return(shift_reg); } SVTH : Nguyễn Văn Trung 33
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA void hienchu() { for(x=0;x<100;x++) { OUTPUT_BIT(SC_CP,0); OUTPUT_BIT(St_CP,0); OUTPUT_BIT(mr,1); OUTPUT_BIT(data,1); for(i=24;i<=56;i++) { OUTPUT_BIT(SC_CP,1); OUTPUT_BIT(St_CP,1); delay_us(1); OUTPUT_BIT(SC_CP,0); OUTPUT_BIT(St_CP,0); output_B(ma[i]); delay_us(150); output_B(0xff); OUTPUT_BIT(data,0); }; }; } void phaitrai() { OUTPUT_BIT(SC_CP,0); OUTPUT_BIT(St_CP,0); for(x=0;x<=47;x++) { for(z=0;z<10;Z++) { OUTPUT_BIT(mr,1); OUTPUT_BIT(data,1); for(i=x;i<=x+32;i++) { OUTPUT_BIT(SC_CP,1); OUTPUT_BIT(St_CP,1); delay_us(1); OUTPUT_BIT(SC_CP,0); OUTPUT_BIT(St_CP,0); SVTH : Nguyễn Văn Trung 34
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA output_B(ma[i]); delay_us(150); output_B(0xff); OUTPUT_BIT(data,0); delay_us(50); }; }; OUTPUT_BIT(mr,0); output_B(0xff); delay_us(150); }; } #define theSampleSize 512 #define usbConfirmAction 0 #define lenhdk 14 void main() { int1 useCRC; int8 in_data[8]; int8 out_data[8]; int8 tt; int8 theCRC; int16 n, approxUS, approxMS, period; SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_1); SETUP_TIMER_3(T3_INTERNAL | T3_DIV_BY_8) usb_init(); useCRC = true; while (TRUE) { usb_task(); usb_debug_task(); if (tt==1) hienchu(); else if(tt==2) { phaitrai(); } if (usb_enumerated()) { SVTH : Nguyễn Văn Trung 35
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA if (usb_kbhit(1)) { usb_get_packet(1, in_data, 8); if (useCRC) { theCRC = 0; theCRC = calc_crc(theCRC,in_data[0]); theCRC = calc_crc(theCRC,in_data[1]); theCRC = calc_crc(theCRC,in_data[2]); theCRC = calc_crc(theCRC,in_data[3]); theCRC = calc_crc(theCRC,in_data[4]); theCRC = calc_crc(theCRC,in_data[5]); theCRC = calc_crc(theCRC,in_data[6]); } else { theCRC = in_data[7]; } if (theCRC = in_data[7]) { out_data[0] = 255; out_data[1] = 255; out_data[2] = 255; out_data[3] = 255; out_data[4] = 255; out_data[5] = 255; out_data[6] = 255; switch (in_data[0]) { case lenhdk: { tt =in_data[1]; out_data[0] = usbConfirmAction; out_data[1] = lenhdk; out_data[2] = in_data[1]; } break; } } } } } } SVTH : Nguyễn Văn Trung 36
- Đồ án môn học 2 GVHD: NGUYỄN VĂN NGA VI- Kết quả: -Mô phỏng: chạy đúng. -Thi công mạch: phần giao tiếp máy tính nhận được thiết bị. Phần điều khiển led ma trận chưa chạy. -Đề tài chỉ thực hiện được những yêu cầu cơ bản: hiển thị được kí tự cố định Chưa làm được -Mạch điều khiển led ma trận chưa chạy. -Chưa gởi được kí tự từ máy tính xuống để hiển thị Phương hướng phát triển đề tài:. -Xây dựng bảng mã, và gởi kí tự từ máy tính xuống hiển thị. -Mở rộng thêm nhiều ứng dụng mới: đọc nhiệt độ, kiểm tra trạng thái hoạt động của vi điêu khiển. -Điều khiển các thiết bị khác thông qua máy tính. VII- Kết luận: - Sau 15 tuần nghiên cứu với sự hướng dẫn tận tình của thầy Nguyễn Văn Nga, cùng các thầy cô trong khoa và các bạn trong lớp em đã hoàn thành đề tài này. - Đề tài còn nhiều hạn chế mong thầy và các bạn nhận xét để những để tài tới làm tốt hơn. Một lần nữa em chân thành cảm ơn thầy Nguyễn Văn Nga và các thầy cô trong khoa đã hướng dẫn tận tình. SVTH : Nguyễn Văn Trung 37