Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định
địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các
lệnh chức năng DS1820. Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào
bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị
nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức năng có
thể được mô tả ngắn gọn như sau:
88 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3410 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Nghiên cứu, thiết kế hệ thống cảm biến nhiệt độ giao tiếp và ghép nối máy tính qua giao thức usb/lớp hid, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
riêng, chữ n là số
thứ tự của endpoint. Tất cả các thanh ghi đều giống nhau về mặt bố trí và chức năng
của Bit điều khiển
Bit 7-5: Chưa thích hợp
Bit 4: EPHSHK - Bit khởi động bắt tay Endpoint (Endpoint handshake)
1 = Kích hoạt Endpoint handshake
0 = Không kích hoạt Endpoint handshake.
Bit 3: EPCONDIS - Bit điều khiển Endpoint
( nếu EPOUTEN = 1 và EPINEN = 1)
1 = Tắt Endpoint n control transfers; chỉ có IN và OUT transfers được cho phép
0 = Bật Endpoint n control transfers; IN và OUT transfers cũng được cho phép
Bit 2: EPOUTEN - Bit kích hoạt Endpoint Output
1 = Bật Endpoint n output
0 = Tắt Endpoint n output
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 32
Bit 1: EPINEN: Bit kích hoạt Endpoint Input
1 = Bật Endpoint n input
0 = Tắt Endpoint n input
Bit 0: EPSTALL: Bit kích hoạt Endpoint Stall
1 = Endpoint n được stall
0 = Endpoint n không được stall
4.2.6: Thanh ghi trạng thái ngắt của giao thức USB
Thanh ghi này gồm có nhiều cờ báo hiệu mỗi trạng thái ngắt từ nhiều nguồn khác
nhau
Bit 7: Chưa được tích hợp
Bit 6: SOFIF - Bit ngắt START-OF-FRAME Token
1 = SIE nhận được một START-OF-FRAME token
0 = SIE không nhận được bất kì START-OF-FRAME token
Bit 5: STALLIF - Bit ngắt STALL Handshake
1 = SIE vừa truyền một STALL Handshake
0 = STALL Handshake chưa được truyền
Bit 4: IDLEIF - Bit ngắt phát hiện trạng thái chờ
1 = Phát hiện chờ (trạng thái chờ khoảng 3ms hoặc hơn)
0 = Không rãnh
Bit 3: TRNIF - Bit ngắt hoàn thành quá trình truyền
1 = Quá trình truyền hoàn tất, đọc thanh ghi USTAT về thông tin endpoint
0 = Quá trình truyền chưa hoàn tất hoặc là không có transaction nào đang chờ.
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 33
Bit 2: ACTVIF - Bit ngắt phát hiện hoạt động của bus
1 = Phát hiện hoạt động trên đường D+/D-
0 = Không có hoạt động trên đường D+/D-
Bit 1: UERRIF - Bit ngắt điều kiện lỗi USB
1 = Một điều kiện lỗi không xác định xảy ra
0 = Không có lỗi
Bit 0: URSTIF - Bit ngắt reset USB
1 = Reset USB hợp lệ. 00h được nạp vào thanh ghi UADDR
0 = USB reset không xảy ra.
4.2.7: Thanh ghi kích hoạt trạng thái ngắt của giao thức USB
Thanh ghi này bao gồm các Bit kích hoạt cho các trạng thái ngắt của giao thức
USB
Bit 7: Chưa tích hợp
Bit 6: SOFIE - Bit kích hoạt ngắt START-OF-FRAME token
1 = Kích hoạt
0 = Không kích hoạt
Bit 5: STALLIE - Bit kích hoạt ngắt STALL Handshake
1 = Kích hoạt
0 = Không kích hoạt
Bit 4: IDLEIE - Bit kích hoạt ngắt phát hiện nghỉ
1 = Kích hoạt
0 = Không kích hoạt
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 34
Bit 3: TRNIE - Bit kích hoạt hoàn thành Transaction
1 = Kích hoạt
0 = Không kích hoạt
Bit 2: ACTVIE -Bit kích hoạt ngắt phát hiện hoạt động của bus
1 = Kích hoạt
0 = Không kích hoạt
Bit 1: UERRIE -Bit kích hoạt ngắt lỗi USB
1 = Kích hoạt
0 = Không kích hoạt
Bit 0: URSTIE - Bit kích hoạt ngắt USB reset
1 = Kích hoạt
0 = Không kích hoạt
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 35
CHƯƠNG V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20
5.1: Khái quát chung
DS1820 là một sản phẩm của công ty Dallas (Hoa Kỳ), đây cũng là công ty đóng
góp nhiều vào việc cho ra đời bus một dây và các cảm biến một dây. Hình dạng bên
ngoài của cảm biến một dây DS1820 được mô tả trên hình 5.1, trong đó dạng vỏ TO-
92 với 3 chân là dạng thường gặp và được dùng trong nhiều ứng dụng, còn dạng vỏ
SOIC với 8 chân được dùng để đo nhiệt độ bề mặt, kể cả da người
Hình 5.1: Dạng đóng vỏ và bề ngoài của cảm biến DS1820
Các đặc điểm kỹ thuật của cảm biến DS1820 có thể kể ra một cách tóm tắt như sau:
Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.
Độ phân giải khi đo nhiệt độ là 9, 10, 11, hay 12Bit. Dải đo nhiệt độ -55oC đến
125oC, từng bậc 0.5oC; 0.25oC; 0.125o; 0.0625oC
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 36
Rất thích hợp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có thể được
nối trên một bus, bus này được gọi là bus một dây (1-wire bus)
Không cần thêm linh kiện bên ngoài.
Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3,0 V đến 5,5 V một
chiều và có thể được cấp thông qua đường dẫn dữ liệu.
Dòng tiêu thụ tại chế độ nghỉ cực nhỏ.
Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, <=750 ms (12 Bit).
Mỗi cảm biến có một mã định danh duy nhất 64 Bit chứa trong bộ nhớ ROM
trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
Đầu đo nhiệt độ số DS1820 đưa ra số liệu để biểu thị nhiệt độ đo được dưới dạng
mã nhị phân. Các thông tin được gửi đến và nhận về từ DS1820 trên giao diện 1-wire,
do đó chỉ cần hai đường dẫn gồm một đường cho tín hiệu và một đường làm dây đất là
đủ để kết nối vi điều khiển đến điểm đo. Nguồn nuôi cho các thao tác ghi/đọc/chuyển
đổi có thể được trích từ đường tín hiệu, không cần có thêm đường dây riêng để cấp
điện áp nguồn.
5.2: Cấu trúc phần cứng
Hình 5.2 Sơ đồ các khối cấu tạo nên cảm biến DS18B20
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 37
Nhìn từ bên trái của sơ đồ5.2:
- Khối đầu tiên là bộ nguồn: Có 2 cách cấp nguồn cho cảm biến, ta có thể cấp nguồn
bằng cách trích điện áp trên dây tín hiệu hay cấp nguồn ngoài qua chân Vcc
Hình 5.3 Các phương thức cấp nguồn cho cảm biến
- Khối tiếp theo là 64 Bit ROM code: Mỗi cảm biến nhiệt độ DS1820 có một dãy
mã 64 Bit duy nhất được lưu trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật laze.
Ý nghĩa của 64 Bit mã được giải thích trên hình5.4:
Hình 5.4:Nội dung dãy mã 64-Bit trên bộ nhớ ROM
Như vậy dãy mã được chia ra thành 3 nhóm, trong đó:
Tám Bit đầu tiên là mã định danh họ một dây, mã của DS1820 là 28h.
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 38
48 Bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm biến DS1820
chỉ có một số mã.
Tám Bit có ý nghĩa nhất là byte mã kiểm tra CRC (cyclic redundancy check),
byte này được tính toán từ 56 Bit đầu tiên của dãy mã trên ROM (Hình 5.4).
Khối tiếp theo( Memory Control Logic ): Khối nãy giống như một bộ VĐK trung
tâm
Khối tiếp theo là vùng nhớ nháp (Scratchpad) :
Hình 5.5 Sơ đồ bộ nhớ của cảm biến
Các khối cuối cùng bên phải gồm có: Cảm biến nhiệt độ, 3 thanh ghi của EEPROM
( Thnh ghi TH,TL, và thanh ghi cấu hình) và 8 Bit CRC
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 39
5.3:Hoạt động đo nhiệt độ
Hình 5.6Cách thức mã hóa giá trị
Hình 5.7 Định dạng của 2 byte lưu giá trị nhiệt độ
5.4: Hoạt động báo hiệu
Hình 5.8 Cấu trúc thanh ghi báo hiệu
7 Bit đầu để chứa giá trị của ngưỡng nhiệt độ. Bit cuối cùng là để xác định dấu của
giá trị: Số dương S = 0, Số âm S = 1
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 40
5.5: Thanh ghi cấu hình và độ phân giải
Hình 5.9 Độ phân giải của cảm biến
Ở chế độ mặc định thì R0 = 1 và R1 = 1 tương ứng với độ phân giải 12 Bit của
ADC
5.6: 8 Bit CRC
Biểu thức tính giá trị CRC
5.7: Tập lệnh
Để truy cập lên cảm biến một dây DS1820 ta phải sử dụng hai nhóm lệnh: các lệnh
ROM và các lệnh chức năng (function commands) bộ nhớ, các lệnh này có thể được
mô tả ngắn gọn như sau:
Sau khi thiết bị chủ (thường là một vi điều khiển) phát hiện ra một xung presence
pulse, nó có thể xuất ra một lệnh ROM. Có 5 loại lệnh ROM, mỗi lệnh dài 8 Bit. Thiết
bị chủ phải đưa ra lệnh ROM thích hợp trước khi đưa ra một lệnh chức năng để giao
tiếp với cảm biến DS18S20.
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 41
5.7.1: Lệnh ROM
- READ ROM (33h): Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM,
bao gồm: 8 Bit mã định tên linh kiện (10h), 48 Bit số xuất xưởng, 8 Bit kiểm tra CRC.
Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột
trên bus do tất cả các thiết bị tớ cùng đáp ứng.
- MATCH ROM (55h): Lệnh này được gửi đi cùng với 64 Bit ROM tiếp theo,
cho phép bộ điều khiển bus chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có
nhiều cảm biến DS1820 cùng nối vào. Chỉ có DS1820 nào có 64 Bit trên ROM trung
khớp với chuỗi 64 Bit vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo.
Còn các cảm biến DS1820 có 64 Bit ROM không trùng khớp sẽ tiếp tục chờ một xung
reset. Lệnh này được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong
trường hợp có nhiều cảm biến một dây.
- SKIP ROM (CCh): Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến
các lệnh bộ nhớ của DS1820 mà không cần gửi chuỗi mã 64 Bit ROM. Như vậy sẽ tiết
kiệm được thời gian chờ đợi nhưng chỉ mang lại hiệu quả khi trên bus chỉ có một cảm
biến.
- SEARCH ROM (F0h): Lệnh này cho phép bộ điều khiển bus có thể dò tìm
được số lượng thành viên tớ đang được đấu vào bus và các giá trị cụ thể trong 64 Bit
ROM của chúng bằng một chu trình dò tìm.
- ALARM SEARCH (ECh): Tiến trình của lệnh này giống hệt như lệnh Search
ROM, nhưng cảm biến DS1820 chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo
trong phép đo nhiệt độ cuối cùng. Điều kiện cảnh báo ở đây được định nghĩa là giá trị
nhiệt độ đo được lớn hơn giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao
nhất và nhiệt độ thấp nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến.
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 42
5.7.2: Lệnh chức năng bộ nhớ
Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định
địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các
lệnh chức năng DS1820. Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi vào
bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển đổi giá trị
nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh chức năng có
thể được mô tả ngắn gọn như sau:
- WRITE SCRATCHPAD (4Eh): Lệnh này cho phép ghi 3 byte dữ liệu vào bộ
nhớ nháp của DS1820. Byte đầu tiên được ghi vào thanh ghi TH (byte 2 của bộ nhớ
nháp), byte thứ hai được ghi vào thanh ghi TL (byte 3 của bộ nhớ nháp)còn byte thứ
ba được ghi vào thanh ghi cấu hình (byte 4 của bộ nhớ nháp). Dữ liệu truyền theo trình
tự đầu tiên là Bit có ý nghĩa nhất và kế tiếp là những Bit có ý nghĩa giảm dần. Cả hai
byte này phải được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ
liệu khác xuất hiện.
- READ SCRATCHPAD (BEh): Lệnh này cho phép thiết bị chủ đọc nội dung bộ
nhớ nháp. Quá trình đọc bắt đầu từ Bit có ý nghĩa nhấy của byte 0 và tiếp tục cho đến
byte thứ 9 (byte 8 – CRC). Thiết bị chủ có thể xuất ra một xung reset để làm dừng quá
trình đọc bất kỳ lúc nào nếu như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần
được đọc.
- COPYSCRATCHPAD (48h): Lệnh này copy nội dung của 3 thanh ghi TH, TL
và thanh ghi cấu hình (byte 2, byte 3, byte 4) vào bộ nhớ EEPROM. Nếu cảm biến
được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo.
- CONVERT T (44h): Lệnh này khởi động một quá trình đo và chuyển đổi giá
trị nhiệt độ thành số (nhị phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được
lưu trữ trên thanh ghi nhiệt độ 2 byte trong bộ nhớ nháp. Thời gian chuyển đổi không
quá 750 ms tuỳ vào độ phân giải, trong thời gian đang chuyển đổi nếu thực hiện lệnh
đọc thì các giá trị đọc ra đều bằng 0.
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 43
- READ POWER SUPPLY (B4h): Một lệnh đọc tiếp sau lệnh này sẽ cho biết
DS1820 đang sử dụng chế độ cấp nguồn như thế nào, giá trị đọc được bằng 0 nếu
cấp nguồn bằng chính đường dẫn dữ liệu và bằng 1 nếu cấp nguồn qua một
đường dẫn riêng.
Đến đây ta có thể thấy là việc sử dụng các lệnh vừa trình bày là một công việc
không đơn giản, nhất là với những bạn đọc chưa từng tìm hiểu về kỹ thuật vi xử lý.
Cũng vì vậy mà trong khuôn khổ một bài viết ta chưa thể hiểu hể cách làm chủ hoạt
động của một cảm biến một dây. Trong phần sau sẽ trình bày thêm về cách ghép nối
cảm biến một dây với vi điều khiển và tổ chức của bus một dây.
5.8: Chuẩn 1 dây với cảm biến DS18B20
5.8.1: Thời gian khởi động bus
Hình 5.10 Timing khởi động bus
Quá trình khởi động báo hiệu cho các thiết bị tớ (Slave) trên bus biết được hệ
thống bắt đầu khởi động, đồng thời giúp cho thiết bị chủ (Master) biết được có thiết bị
tớ nào nối vào mạng hay không
Ban đầu Master phát đi một xung “mức 0” rộng tối thiểu là 480us để báo hiệu
cho các Slave,lúc này các Slave ở chế độ chờ cho đến khi Master giải phóng bus, lập
tức trở 4.7k kéo bus lên “mức 1”. Các Slave nhận được cạnh lên nó vẫn tiếp tục chờ
15– 60us sau đó sẽ gửi lên một xung phản hồi ở mức thấp khoảng 60 – 240us
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 44
5.8.2: Thiết lập các Slots ở chế độ ghi cho Master
Ghi thì có 2 mức : Mức 1 cho Logic 1 và Mức 0 cho Logic 0
Tất cả các Slot phải có độ rộng tối thiểu là 60us và cần tối thiểu là 1us để khởi
động 1 lần ghi
Các Slave dựa vào cạnh xuống để chuẩn bị cho 1 lần lấy mẫu trên bus
Mẫu sẽ được các Slave cập nhật sau 1 khoảng thời gian 15 – 60us kể từ khi nhận
được cạnh xuống của Master
Quá trình đọc cũng tương tự, tuy nhiên thời gian cho phép Master lấy mẫu trên
bus lại bị hạn chế khá nhiều (chỉ khoảng 10 us)
Hình 5.11 Timing đọc của Master
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 45
CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG
6.1: Giới thiệu các ứng dụng trong thiết kế
Như đã giới thiệu ở phần 3 chương I, mô hình có hai ứng dụng bao gồm:
+ Bàn phím không dây dạng thu gọn
+ Mạch đo nhiệt độ môi trường và hiển thị lên LCD đồng thời ghép nối với máy
tính qua giao thức USB để hiễn thị lên màn hình máy tính thông qua một giao diện nhỏ
được tạo ra từ VB 6.0
- Bàn phím không dây gồm có 3 mô-đun chính: Mô-đun phát RF, Mô-đun thu RF
và Mô-đun Vi điều khiển để tạo ra giao thức USB
- Mạch đo nhiệt độ gồm có các khối cấu kiện sau: Các cảm biến đo nhiệt độ
DS18B20, Mô-đun Vi điều khiển để tạo ra giao thức USB. Ngoài ra còn có LCD để
hiển thị các giá trị đo được và các đèn led, nút bấm để kiểm tra quá trình truyền nhận
của ứng dụng
- Để hiển thị được các giá trị đo được lên màn hình máy tính ta cần một giao diện
nhỏ được xây dựng trên nền tảng của VB 6.0. Nhiệm vụ của phần mềm là làm thế nào
phát hiện được lúc nào thiết bị đã được cắm vào máy tính. Bên cạnh đó phối hợp cùng
Hệ điều hành cập nhật các giá trị được gửi lên từ Vi điều khiển, đồng thời điều khiển
và giám sát trạng thái của các đèn led và nút bấm.
- Trong đề tài này vấn đề xây dựng driver không được đề cập vì các ứng dụng này
được thiết kế theo bộ driver chuẩn của nhà xây dựng Hệ điều hành. Một cách cụ thể,
đề tài này được thiết kế theo chuẩn của Windows
- Chú ý:
+ Các ứng dụng này đã được kiểm tra trên nhiều Hệ điều hành khác nhau bao:
Windows XP, Windows 7 và Linux. Kết quả thu được, bàn phím không dây có thể
hoạt động tốt trên 3 Hệ điều hành này. Riêng mạch đo nhiệt độ thì chỉ có thể chạy trên
Windows vì giao diện của nó được thực hiện bằng VB và tạo ra file *.exe, Linux
không hỗ trợ loại file này mặc dù thiết bị đã được tự động phát hiện và bắt tay
+ Các ứng dụng này chỉ có thể chạy tốt trên các hệ điều hành kể từ Windows 2000
trở về sau
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 46
6.2: Sơ đồ nguyên lý
Hình 6.1 Sơ đồ nguyên lý mạch REMOTE
Hình 6.2Sơ đồ nguyên lý mạch đo nhiệt độ
PVN1
PIC18F2550
RC7/RX/DT/SD0
18
VSS
8
RB0/AN12/INT0/FLT0/SDI/SDA
21
RB1/AN10/INT1/SCK/SCL
22
RB2/AN8/INT2/VM0
23
RB3/AN9/CCP2/VP0
24
RB4/AN11/KBI0
25
RB5/KBI1/PGM
26
RB6/KBI2/PGC
27
RB7/KBI3/PGD
28
MCLR*/VPP/RE3
1
RA0/AN0
2
RA1/AN1
3
RA2/AN2/Vref -/CVref
4
RA3/AN3/Vref +
5
RA4/T0CKI/C1OUT/RCV
6
RA5/AN4/SS*/HLVDIN/C2OUT
7
VDD
20
VSS
19
OSC1/CLKIN
9
OSC2/CLKOUT/RA6
10
RC0/T1OSO/T13CKI
11
RC1/T1OSI/CCP2/UOE*
12
RC2/CCP1
13
VUSB
14
RC4/D-/VM
15
RC5/D+/VP
16
RC6/TX/CK
17
J1
USB
1
2
3
4
SW1
RESET
D+
Vss
Vcc
D-
D4
LED
Vss
R7
330
RESET
LED
10k
Reset
Vcc
Vss
J7
JAK_NAP
1
2
3
4
5PGC
PGD
RESET
Vss
Vcc
D+
D-
Vcc
Vss
Vss
PGC
PGD
LED
C1
CAP NP
Vss
Y1
CRYSTAL
C2
33p
C3
33p
Vss
J8
RF
1
2
3
4
5
6
7
Vcc
Vss
C
B
A
DR9
LED_RF
D5
LED_RF
Vss
D
C
B
A
SW1 SW2
R1
4.7k
E
RW
RS
D7
D6
D5
D4
LED1 LED2
DS18B20
Vcc
PIC18F4550
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
19
19
20
20
21
21 22 22
23
23 24
24 25
25 26 26
27
27 28
28 29
29 30 30
31
31 32
32 33 33
34
34 35
35 36 36
37
37 38
38 39 39
40
40
J1
USB
1
2
3
4
LCD
U2
LCD
VSS 1
VDD
2
VEE 3
RS
4
RW 5
E
6
D0
7
D1
8
D2
9
D3
10
D4
11
D5
12
D6
13
D7
14
A
15
K
16
SW1
RESET
SW2
SW 1
SW3
SW 2
Y1
CRYSTAL
J2
DS2
1
2
3
D-
Vcc
J3
DS1
1
2
3
PGD
Vss
D+
Vcc
Vss
Vcc
Vss
PGC
C1
33p
C2
33p
D+
D-
Vss
DS18B20
Vss
Vcc
DS18B20
Vss
Vss
LCD
Vcc
E
RW RS
J4
R_LCD
1
2
3
LCD
Vss
D5
D6
D7
D4
R2
R_Led_LCD
Vcc
RESET
Vss
10k
Reset
Vcc
10u
C_Reset
Vss
R3
R_SW1
R4
R_SW2
SW2 Vss
SW1
Vcc
Vcc D1
LED D2
LED
J7
JAK_NAP
1
2
3
4
5
PGD
RESET
Vss
PGC
R5
330
Vcc
R6
330
Vcc
Vss
LED1
LED2
J5
DS3
1
2
3
Vcc
DS18B20
Vss
C3
CAP NP
Vss
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 47
6.3: Mô-đun thu phát RF 8 phím bấm
6.3.1: Mô-đun thu RF
Hình 6.3 Mô đun thu RF
Mô-đun này là một bo mạch gồm có 1 IC giải mã SC2272 của hãng SivalChip
ElectronicsTech và một số các linh kiện phụ trợ khác.
Mô-đun này có 7 chân vào ra và được phân công theo như hình dưới
Test D C B A VCC GND
Hình 6.4 Thứ tự các chân Mô-đun thu RF
GND: Nối 0V
VCC: Nối 5V
A,B,C,D: 4 chân này để mã hóa tín hiệu tương ứng với 8 phím của remote
Test: Chân này thông thường được nối với led để kiểm tra tình trang thu của
Mô-đun
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 48
6.3.2: Mô đun phát RF (Remote 8 phím)
Hình 6.5Mô đun phát RF (Remote)
Mô-đun này gồm có 8 phím được đánh số thứ tự từ 1 đến 8. Bên trong gồm có 1 IC
mã hóa CS5211, an-ten và một số lịnh kiện phụ trợ. Nguồn cung cấp cho mô-đun là
pin 12V chuẩn 23A
6.4: LCD 16x2
Hình 6.6 LCD TC1602A
LCD này có 2 dòng và 16 cột, có thể hiện thị các giá trị mong muốn. Trong đề tài
này LCD được dùng để hiển thị nhiệt độ
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 49
Sơ đồ chân của LCD được mô tả theo bảng dưới:
Stt Ký hiệu Chức năng
1 Vss GND
2 Vdd +3V -> +5V
3 Vo Điều chỉnh độ tương phản
4 RS H/L tín hiệu chọn thanh ghi
5 RW H/L Tín hiệu đọc ghi
6 E H->L Tin hiệu kích hoạt
7 DB0 H/L đường dữ liệu
8 DB1 H/L đường dữ liệu
9 DB2 H/L đường dữ liệu
10 DB3 H/L đường dữ liệu
11 DB4 H/L đường dữ liệu
12 DB5 H/L đường dữ liệu
13 DB6 H/L đường dữ liệu
14 DB7 H/L đường dữ liệu
15 A Cấp nguồn cho led màn hình (+4.2v)
16 K GND
Bảng 6.1: Chức năng của các chân LCD
6.5: Công cụ hỗ trợ
- Công cụ lập trình : Phần mềm CCS có cấu trúc lệnh theo chuẩn của ngôn ngữ C
với bộ thư viện chuẩn và đầy đủ có tất cả các tính năng của các dòng PIC của hãng
Microchip
- Công cụ thiết kế giao diện: Phần mềm VB 6.0 với một số thư viện được update từ
Internet
- Công cụ thiết kế mạch: Phần mềm Orcad 10.5 với bộ thư viện chuẩn được update
từ các diễn đàn điện tử
- Công cụ mô phỏng: Phần mềm Protues
6.6: Xây dựng giao diện trên máy tính bằng VB 6.0
- VB 6.0 là công cụ được nhiều người thiết kế chọn dùng vì nó đơn giản dể sử dụng
và nguồn tài liệu phong phú từ Internet
- Cùng với sự phát triển của công nghệ, Internet là công cụ đắt lực để trợ giúp cho
vấn đề tìm kiếm và cập nhật thông tin. Dựa và sự tiện lợi này nhiều thư viện từ bên
ngoài đã được cập nhật nhằm rút ngắn thời gian xây dựng giao diện.
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 50
Hình 6.7 Hình ảnh lúc giao diện đang được xây dựng
Nhìn vào giao diện (Hình 6.7) ta thấy được: Thanh Menu, 2 Timer, 3 Nút ấn và một
số Label. Trong đó:
Label6: Hiển thị thời gian thực của hệ thống.Label7: Hiển thị ngày,tháng,năm
của hệ thống. Nhãn “1” và nhãn “2” là nơi để hiện thị các giá trị nhiệt độ đo được từ 2
cảm biến
Timer bên trái (trong hình 6.7) dùng để cập nhật thời gian và ngày tháng của
hệ thống. Timer bên phải tạo vòng lặp nhằm mục đích phát hiện thiết bị khi được cắm
vào máy tính
Label “Device Status”: Hiển thị trạng thái của thiết bị khi cắm vào và khi tháo
ra khỏi máy tính. Hai nút ấn màu đen dùng để điều khiển và giám sát trạng thái các
đèn led trên bo mạch. Nút bên dưới dùng để kết thúc chương trình
Hình 6.8 Giao diện trên máy tính được hoàn thành
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 51
6.7: Sơ đồ khối firmware bên trong chip
Giải thích sơ đồ hình 6.8:
Bước đầu tiên là khởi động Bus 1 dây bằng cách kéo Bus xuống mức thấp khoảng
65us. Tiếp theo truyền xuống tất cả các cảm biến giá trị 55h để báo cho các cảm biến
biết rằng sắp tới sẽ có trình Match-ROM. Quá trình Match-ROM sẽ được thực hiện
bằng việc truyền xuống 64bit ROM-code của một cảm biến nào đó. Cảm biến nào có
64bit ROM-code trùng với 64bit vừa nhận được sẽ chờ để thực hiện lệnh tiếp theo.
Các cảm biến còn lại tiếp tục nằm chờ xung reset tiếp theo. Sau đó tiếp tục truyền
xuống giá trị 44h để cảm biến thực hiện quá trình chuyển đổi nhiệt độ và lưu vào 2
thanh ghi của bộ nhớ tạm. Tiếp tục Match-ROM một lần nữa, sau đó truyền xuống giá
trị BEh để cảm biến gửi giá trị lên thiết bị chủ. Sau khi thực hiện truyền xong giá trị
BEh, thiết bị chủ phải lập tức quay sang đọc các giá trị mà cảm biến gửi lên. Sau khi
Hình 6.8 Sơ đồ khối quá trình
cập nhật giá trị nhiệt độ
Hình 6.9 Sơ đồ khối của
firmware mạch đo nhiệt độ
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 52
nhận được giá trị gửi lên từ cảm biến, thiết bị chủ thực hiện quá trình tính toán và lưu
vào biến nhớ.
Giải thích sơ đồ hình 6.9:
Ban đầu thực hiện các quá trình khởi động USB,LCD và thiết lập ngắt ngoài (ngắt
ngoài được sử dụng cho các nút bấm). Các quá trình khởi động đã được tạo ra sẵn từ
các thư viện của CCS. Tiếp theo kiểm tra trạng thái bắt tay của thiết bị ngoại vi và máy
tính. Nếu quá trình chưa sẵn sàng (No) tiếp tục quay lại kiểm tra. Nếu quá trình này
hoàn tất thì thực hiện kiểm tra ngắt nhận của USB. Nếu xác định có dữ liệu từ máy chủ
gửi đến ta tiếp tục thực hiện việc điều khiển led theo các giá trị nhận được rồi qua
bước tiếp theo. Nếu không nhận được giá trị nào ta sẽ thực hiện quá trình cập nhật
nhiệt độ và hiển thị lên LCD và máy tính.
6.8: Một số hình ảnh của sản phẩm
Hình 6.10: Mạch đo nhiệt độ và ghép nối máy tính qua giao thức USB
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 53
Hình 6.11: Bàn phím máy tính không dây dạng thu nhỏ
Stt phím Mode 0 (Reset) Mode 1 Mode 2
1 Lên () a 1
2 Xuống () b 2
3 Trái () c 3
4 Phải () d 4
5 Back-space e 5
6 Space f 6
7 Enter g 7
8 Chuyển tới Mode 1 Chuyển tới Mode 2 Chuyển về Mode 0
Bảng 6.2: Bảng chức năng của các phím bấm được mã hóa theo các chế độ
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 54
TÀI LIỆU THAM KHẢO
[1] Văn Thế Minh, Kỹ Thuật Vi Xử Lí, Nhà xuất bản Giáo dục, 1997
[2] Quách Tuấn Ngọc, Ngôn ngữ lập trình C, Nhà xuất bản thống kê, 2003
[3] Hoàng Minh Sơn, Mạng truyền thông công nghiệp, Nhà xuất bản Khoa học và Kỹ
thuật, 2001
[4] Ngô Diên Tập, Lập trình ghép nối máy tính trong Windows, Nhà xuất bản Khoa
học và Kỹ thuật, 2005
[5] Jan Axelson, USB Complete, Lakeview Reasearch LLC - Madison WI 53704, 2005
Các website tham khảo
[1]
[2]
[3]
[4]
[5]
[6]
[7]
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 55
PHỤ LỤC
Phụ Lục 0: Chương trình xây dựng giao diện trên VB
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Dim led1 As Integer
Option Explicit
Private Sub Command1_Click()
If MsgBox("Are you sure?", vbQuestion + vbYesNo, "Message!") = vbYes Then
Unload Me
End If
End Sub
Private Sub Command2_Click()
End Sub
Private Sub Form_Load()
'frmMain.Show
tmrDelay.Enabled = False
led1 = 0
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim Result As Long
If MyDeviceDetected Then
OutputReportData(0) = 0
OutputReportData(1) = 0
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 56
Call WriteReport
End If
Result = CloseHandle(HIDHandle)
Result = CloseHandle(ReadHandle)
End Sub
Private Sub led_Click()
If (led.BackColor = vbBlack) Then
led.BackColor = vbYellow
If MyDeviceDetected Then
OutputReportData(0) = 1
Call WriteReport
End If
Else
led.BackColor = vbBlack
If MyDeviceDetected Then
OutputReportData(0) = 0
Call WriteReport
End If
End If
End Sub
Private Sub led2_Click()
If (led2.BackColor = vbBlack) Then
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 57
led2.BackColor = vbYellow
If MyDeviceDetected Then
OutputReportData(1) = 1
Call WriteReport
End If
Else
led2.BackColor = vbBlack
If MyDeviceDetected Then
OutputReportData(1) = 0
Call WriteReport
End If
End If
End Sub
Private Sub mnuabout_Click()
author.Show
End Sub
Private Sub mnuexit_Click()
Call Command1_Click
End Sub
Private Sub timerCheckConnection_Timer()
Label6.Caption = Time
Label7.Caption = Date
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 58
If FindTheHid Then
lblConnect.Caption = "Connected"
lblConnect.ForeColor = vbBlue
tmrDelay.Enabled = True
led.Enabled = True
led2.Enabled = True
Else
lblConnect.Caption = "Disconnected"
lblConnect.ForeColor = vbRed
tmrDelay.Enabled = False
Label2.Caption = ""
Label3.Caption = ""
led.Enabled = False
led2.Enabled = False
End If
End Sub
Private Sub tmrDelay_Timer()
If Not MyDeviceDetected Then
MyDeviceDetected = FindTheHid
End If
If MyDeviceDetected Then
Call ReadReport
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 59
Label2 = Str$(ReadBuffer(1)) & "," & Str$(ReadBuffer(2))
Label3 = Str$(ReadBuffer(3)) & "," & Str$(ReadBuffer(4))
If (ReadBuffer(5)) = "1" Then
led.BackColor = vbBlack
End If
If (ReadBuffer(5)) = "2" Then
led.BackColor = vbYellow
End If
If (ReadBuffer(6)) = "1" Then
led2.BackColor = vbBlack
End If
If (ReadBuffer(6)) = "2" Then
led2.BackColor = vbYellow
End If
End If
End Sub
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 60
Phụ Lục 1: Chương trình REMOTE 8 phím
//******************************************************************//
//Chuong trinh REMOTE 8 phim va USB interface
#include
#fuses
HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VR
EGEN
#use delay(clock=20M)
//Tells the CCS PIC USB firmware to include HID handling code.
#DEFINE USB_HID_DEVICE TRUE
//the following defines needed for the CCS USB PIC driver to enable the TX endpoint
1
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for
IN bulk/interrupt transfers
#define USB_EP1_TX_SIZE 8
#define USB_EP2_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP2 for
IN bulk/interrupt transfers
#define USB_EP2_TX_SIZE 8
#define USB_EP2_RX_ENABLE USB_ENABLE_INTERRUPT //turn on EP2 for
IN bulk/interrupt transfers
#define USB_EP2_RX_SIZE 4
#include
#include //USB Configuration and Device descriptors
for this UBS device
#include //handles usb setup tokens and get descriptor reports
#define SIG_A PIN_B3
#define SIG_B PIN_B2
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 61
#define SIG_C PIN_B1
#define SIG_D PIN_B0
#define LED PIN_C7
int8 i=0;
void usb_debug_task(void) {
static int8 last_enumerated;
int8 new_enumerated;
new_enumerated=usb_enumerated();
if (new_enumerated)
output_high(LED);
else
output_low(LED);
last_enumerated=new_enumerated;
}
void usb_keyboard_task(void) {
static int8 tx_msg[7]={0,0,0,0,0,0,0};
int8 str[3][7] = {{82,81,80,79,42,44,40},{4,5,6,7,8,9,10},{30,31,32,33,34,35,36}};
if(input(SIG_A)||input(SIG_B)||input(SIG_C)||input(SIG_D))
{
if ((input(SIG_A))&&(!input(SIG_B))&&(!input(SIG_C))) //phim 1
tx_msg[2]=str[i][0];
if ((!input(SIG_A))&&(input(SIG_B))&&(!input(SIG_C))) //phim 2
tx_msg[2]=str[i][1];
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 62
if ((input(SIG_A))&&(input(SIG_B))&&(!input(SIG_C))) //phim 3
tx_msg[2]=str[i][2];
if ((!input(SIG_A))&&(!input(SIG_B))&&(input(SIG_C))) //phim 4
tx_msg[2]=str[i][3];
if ((input(SIG_A))&&(!input(SIG_B))&&(input(SIG_C))) //phim 5
tx_msg[2]=str[i][4];
if ((!input(SIG_A))&&(input(SIG_B))&&(input(SIG_C))) //phim 6
tx_msg[2]=str[i][5];
if ((input(SIG_A))&&(input(SIG_B))&&(input(SIG_C))) //phim 7
tx_msg[2]=str[i][6];
if (input(SIG_D))
{
while(input(SIG_D)){}
i++;
if(i>2)
i=0;
}
//tx_msg[2]=str[i][3]; //tab
}
else
tx_msg[2]=0;
usb_put_packet(2,tx_msg,sizeof(tx_msg),USB_DTS_TOGGLE);
}
void main(void) {
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 63
output_low(LED);
i=0;
usb_init_cs();
while (TRUE) {
usb_task();
usb_debug_task();
if (usb_enumerated()) {
usb_keyboard_task();
delay_ms(10);
}
}
}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 64
Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB
//*****************************************************************//
//Chuong trinh do nhiet do su dung ds18B20 va USB interface
#include
#device *=16 //su dung het ram trong Pic
#use delay(clock=20M)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT
#FUSES NOLVP,NOCPD, NOWRT ,USBDIV,PLL5,CPUDIV1,VREGEN
#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
#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
#include "LCD_v.h"
#include "1wire_v.h"
#define LED1 PIN_D4
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 65
#define LED2 PIN_D5
#define SW2 PIN_B1
#define SW1 PIN_B2
int1 l1,l2;
float t[2],t1[2];
int i,j,v,k;
int8 buffer[2][2],hien_thi[2];
unsigned int8 s[2][8] = {{40,27,34,78,02,00,00,124},{40,237,15,158,02,00,00,169}};
int8 send_data[8];
int8 receive_data[8]={0,0,0,0,0,0,0,0};
void match_rom()
{
for(i=0;i<2;i++)
{
if(init_1wire())
{
write_1wire(0x55); //match ROM
for(j=0;j<8;j++)
{
v=s[i][j];
write_1wire(v);
}
}
write_1wire(0x44); //convert T
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 66
if(init_1wire())
{
write_1wire(0x55); //match ROM
for(j=0;j<8;j++)
{
v=s[i][j];
write_1wire(v);
}
}
write_1wire(0xbe); //read scratchpad
for(j=0;j<2;j++)
buffer[i][j]=read_1wire();
init_1wire();
if(buffer[i][1]>10)//neu nhiet do la am dao lai buffer[i][1],buffer[i][0]
{
buffer[i][1]=~buffer[i][1];
buffer[i][0]=~buffer[i][0];
buffer[i][0]=buffer[i][0]+1;//hieu chinh lai de hien thi cho dung
hien_thi[i]=0; // hien_thi[i]=0 thi hien thi gia tri nhiet am
}
else
{
hien_thi[i]=1;//hien_thi[i]=1 thi hien thi gia tri nhiet duong
}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 67
t[i]=make16(buffer[i][1],buffer[i][0]); //calculate temperature
t[i]=(float)t[i]/16.0;
}
//hien thi
if ((t[0]!=t1[0])||(t[1]!=t1[1])) //update LCD va PC khi nhiet do thay doi
{
printf(lcd_putc,"\f " );//xoa man hinh lcd
lcd_gotoxy(3,1);//cot 2,dong 1
printf(lcd_putc,"SS1");
lcd_gotoxy(3,2);//cot 2,dong 2
printf(lcd_putc,"SS2");
for(i=0;i<2;i++)
{
k=i+1;
switch (hien_thi[i])
{
case 1:
lcd_gotoxy(6,k);//cot 2,dong k
printf(lcd_putc," = %3.1f*C",t[i]); //duong
t1[i]=t[i];
break;
case 0:
lcd_gotoxy(6,k);//cot 2,dong k
printf(lcd_putc," = -%3.1f*C",t[i]); //am
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 68
t1[i]=t[i];
break;
}
}
}
}
void separate_temp()
{
send_data[0]=(t[0]*10)/10;
send_data[1]=(t[0]*10)-(send_data[0]*10);
send_data[2]=(t[1]*10)/10;
send_data[3]=(t[1]*10)-(send_data[2]*10);
}
void main()
{
lcd_init (); //LCD start
lcd_init_custom_chars();
usb_init();
enable_interrupts(global);
enable_interrupts(INT_EXT1);
ext_int_edge( 1, H_TO_L); // Set up PIC18 EXT1
clear_interrupt(INT_EXT1);
enable_interrupts(INT_EXT2);
ext_int_edge( 2, H_TO_L); // Set up PIC18 EXT2
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 69
clear_interrupt(INT_EXT2);
output_low(LED1);
output_low(LED2);
send_data[4] = 1;
send_data[5] = 1;
l1=0;
l2=0;
printf(lcd_putc,"\f " );//xoa man hinh lcd
t1[0]=0;
t1[1]=0;
while(1)
{
usb_task();
if (usb_enumerated())
{
if (usb_kbhit(1))
{
usb_get_packet(1, receive_data, 8);
if(receive_data[0]==1)
{output_high(LED1);
send_data[4] = 0;}
else
{output_low(LED1);
send_data[4] = 0;}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 70
if(receive_data[1]==1)
{output_high(LED2);
send_data[5] = 0;}
else
{output_low(LED2);
send_data[5] = 0;}
}
match_rom();
separate_temp();
usb_put_packet(1, send_data, 8, USB_DTS_TOGGLE);
delay_ms(50);
}
}
}
#INT_EXT1
void interrupt1()
{
while(!input(SW2)) {} //kt dinh nut
if(l2)
{
output_low(LED2);
send_data[5] = 1;
l2=0;
}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 71
else
{
output_high(LED2);
send_data[5] = 2;
l2=1;
}
clear_interrupt(INT_EXT1);
}
#INT_EXT2
void interrupt2()
{
while(!input(SW1)) {} //kt dinh nut
if(l1)
{
output_low(LED1);
send_data[4] = 1;
l1=0;
}
else
{
output_high(LED1);
send_data[4] = 2;
l1=1;
}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 72
clear_interrupt(INT_EXT2);
}
Phụ Lục 3: Thư viện chuẩn 1-dây
//****************************************************************//
//Thu vien chuan 1 day
#define DQ PIN_D6
init_1wire()
{
int a;
output_low(DQ);
delay_us(480);
output_float(DQ);
delay_us(65);
a=!input(DQ);
delay_us(240);
if(a)
return(1);
else
return(0);
}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 73
//-------------------------read byte------------------------------
byte read_1wire()
{
byte a,data;
for(a=0;a<8;a++)
{
output_low(DQ);
delay_us(14);
output_float(DQ);
delay_us(5);
shift_right(&data,1,input(DQ));
delay_us(100);
}
return(data);
}
//--------------------------write byte----------------------------
byte write_1wire(byte data)
{
byte a;
for(a=0;a<8;a++)
{
output_low(DQ);
delay_us(10);
if(shift_right(&data,1,0))
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 74
output_high(DQ);
else
output_low(DQ);
delay_us(50);
output_high(DQ);
delay_us(50);
}
return(1);
}
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 75
Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 76
Mục Lục
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI .............................................................................. 1
1.1:Tầm quan trọng của truyền thông và ghép nối máy tính với ngànhTự động hóa .. 1
1.2:Thực trạng hiện nay ............................................................................................... 1
1.3: Nội dung đề tài ...................................................................................................... 2
CHƯƠNG II: TỔNG QUAN VỀ GIAO THỨC USB VÀ LỚP HID ............................. 3
2.1: Giới thiệu sơ bộ về giao thức USB ....................................................................... 4
2.2:Quá trình phát triển giao thức USB ....................................................................... 5
2.3: Phân tích ưu điểm và nhược điểm của giao thức USB ......................................... 5
2.3.1: Ưu điểm: ......................................................................................................... 5
2.3.2: Nhược điểm .................................................................................................... 8
2.4: Giới thiệu các lớp của giao thức USB .................................................................. 9
2.4.1: Lớp thiết bị âm thanh (Audio) ........................................................................ 9
2.4.2: Lớp thiết bị thẻ thông minh (Chip/Smart Card Interface) .............................. 9
2.4.3: Các thiết bị truyền thông (Modems and Networks) ..................................... 10
2.4.4: Lớp thiết bị bảo mật thông tin ...................................................................... 10
2.4.5 Lớp các thiết bị nâng cấp firmware ............................................................... 10
2.4.6:Lớp các thiết bị tương tác với con người (Human Interface) ........................ 10
2.4.7:Cầu chuyển đổi hồng ngoại (IrDA) ............................................................... 10
2.4.8: Lớp các thiết bị lưu trữ thứ cấp (Mass Storage) ........................................... 11
2.4.9:Lớp các thiết bị in ấn (Printers) ..................................................................... 11
2.4.10:Lớp các thiết bị lưu giữ hình ảnh tĩnh (Still Image Capture) ...................... 11
2.4.11: Các thiết bị đo đạc và kiểm tra ................................................................... 11
2.4.12: Lớp thiết bị ảnh động (Video) .................................................................... 12
2.4.13: Thực hiện các chức năng không tiêu chuẩn................................................ 12
2.5:Lớp thiết bị giao diện người sử dụng (HID-Human Interface Device) ............... 12
2.5.1: Khái niệm về HID ......................................................................................... 12
2.5.2: Các yêu cầu về phần cứng ............................................................................ 14
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 77
2.5.3: Các yêu cầu về vi chương trình (Firmware) ................................................. 15
2.5.4: Cách thức để chỉ ra một thiết bị thuộc lớp HID ........................................... 15
2.5.5: Bộ mô tả báo cáo (Report Descriptor) .......................................................... 16
2.5.6: Các yêu cầu mà host có thể gửi tới một thiết bị thuộc lớp HID ................... 16
2.6: Sự hỗ trợ của Hệ điều hành với lớp HID ............................................................ 20
2.7: Chọn chip ............................................................................................................ 21
CHƯƠNG III: TỔNG QUAN VỀ MẠNG TRUYỀN THÔNG 1 DÂY ....................... 22
3.1:Định nghĩa mạng truyền thông 1 dây ................................................................... 22
3.2: Tổng quan về Bus 1 dây ...................................................................................... 22
3.3: Các yêu cầu ......................................................................................................... 23
3.4:Hoạt động của bus 1 dây ...................................................................................... 23
3.4: Mạng một dây và Vi điều khiển PIC .................................................................. 24
CHƯƠNG IV: TỔNG QUAN VỀ PIC 18F2550/4550 ................................................. 26
4.1: Giới thiệu PIC 18F2550/4550 ............................................................................. 26
4.2: Khái quát chức năng USB trong PIC .................................................................. 27
4.2.1:Trạng thái và điều khiển USB ....................................................................... 27
4.2.2: Thanh ghi điểu khiển (UCON) ..................................................................... 27
4.2.3: Thanh ghi cấu hình USB (UCFG) ................................................................ 29
4.2.4: Thanh ghi trạng thái USB ............................................................................. 30
4.2.5: Thanh ghi điều khiền USB ENDPOINT( UEPn) ......................................... 31
4.2.6: Thanh ghi trạng thái ngắt của giao thức USB .............................................. 32
4.2.7: Thanh ghi kích hoạt trạng thái ngắt của giao thức USB ............................... 33
CHƯƠNG V: GIỚI THIỆU CẢM BIẾN NHIỆT ĐỘ DS18B20 .................................. 35
5.1: Khái quát chung .................................................................................................. 35
5.2: Cấu trúc phần cứng ............................................................................................. 36
5.3:Hoạt động đo nhiệt độ .......................................................................................... 39
5.4: Hoạt động báo hiệu ............................................................................................. 39
5.5: Thanh ghi cấu hình và độ phân giải .................................................................... 40
5.6: 8 Bit CRC ............................................................................................................ 40
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 78
5.7: Tập lệnh ............................................................................................................... 40
5.7.1: Lệnh ROM .................................................................................................... 41
5.7.2: Lệnh chức năng bộ nhớ ................................................................................ 42
5.8: Chuẩn 1 dây với cảm biến DS18B20 .................................................................. 43
5.8.1: Thời gian khởi động bus ............................................................................... 43
5.8.2: Thiết lập các Slots ở chế độ ghi cho Master ................................................. 44
CHƯƠNG VI: THIẾT KẾ VÀ LẮP RÁP MỘT SỐ CÁC ỨNG DỤNG ..................... 45
6.2: Sơ đồ nguyên lý .................................................................................................. 46
6.3: Mô-đun thu phát RF 8 phím bấm ........................................................................ 47
6.3.1: Mô-đun thu RF ............................................................................................. 47
6.3.2: Mô đun phát RF (Remote 8 phím)................................................................ 48
6.4: LCD 16x2 ............................................................................................................ 48
6.5: Công cụ hỗ trợ ..................................................................................................... 49
6.6: Xây dựng giao diện trên máy tính bằng VB 6.0 ................................................. 49
6.7: Sơ đồ khối firmware bên trong chip ................................................................ 51
6.8: Một số hình ảnh của sản phẩm ........................................................................ 52
TÀI LIỆU THAM KHẢO ............................................................................................. 54
PHỤ LỤC ...................................................................................................................... 55
Phụ Lục 0: Chương trình xây dựng giao diện trên VB .............................................. 55
Phụ Lục 1: Chương trình REMOTE 8 phím .............................................................. 60
Phụ Lục 2: Chương trình đo nhiệt độ và ghép nối máy tính qua cổng USB ............. 64
Phụ Lục 3: Thư viện chuẩn 1-dây .............................................................................. 72
Phụ Lục 4: Danh sách các chip có hỗ trợ giao thức USB .......................................... 75
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 79
Mục lục hình vẽ
Hình 1.1 Mô đun chuyển đổi USB qua COM ................................................................. 1
Hình 1.2 Chip chuyển đổi USB-COM (PL2303) ............................................................ 2
Hình 1.3Mô đun thu của bàn phím không dây ................................................................ 2
Hình 1.4Mô đun phát của bàn phím không dây ............................................................. 2
Hình 1.5Sơ đồ cấu tạo mạch đo nhiệt độ ......................................................................... 2
Hình 2.1 Đầu cắm USB (type A) ..................................................................................... 4
Hình 2.2: Khuôn dạng dữ liệu của giai đoạn setup trong kiểu truyền Control ............. 17
Hình 2.1: Sơ đồ mạng 1 dây .......................................................................................... 22
Hình 3.2: Cấu trúc Timing trên Bus .............................................................................. 23
Hình 4.1: Sơ đồ chân của PIC 18F2550/4550 ............................................................... 26
Hình 4.2: Cấu trúc của chức năng USB bên trong chip ................................................ 27
Hình 5.1: Dạng đóng vỏ và bề ngoài của cảm biến DS1820......................................... 35
Hình 5.2 Sơ đồ các khối cấu tạo nên cảm biến DS18B20 ............................................. 36
Hình 5.3 Các phương thức cấp nguồn cho cảm biến ..................................................... 37
Hình 5.4:Nội dung dãy mã 64-Bit trên bộ nhớ ROM .................................................... 37
Hình 5.5 Sơ đồ bộ nhớ của cảm biến ............................................................................. 38
Hình 5.6 Cách thức mã hóa giá trị ................................................................................. 39
Hình 5.7 Định dạng của 2 byte lưu giá trị nhiệt độ ....................................................... 39
Hình 5.8 Cấu trúc thanh ghi báo hiệu ............................................................................ 39
Hình 5.9 Độ phân giải của cảm biến ............................................................................. 40
Hình 5.10 Timing khởi động bus ................................................................................... 43
Hình 5.11 Timing đọc của Master ................................................................................. 44
Hình 6.1 Sơ đồ nguyên lý mạch REMOTE ................................................................... 46
Hình 6.2Sơ đồ nguyên lý mạch đo nhiệt độ .................................................................. 46
Hình 6.3 Mô đun thu RF ................................................................................................ 47
Hình 6.4 Thứ tự các chân Mô-đun thu RF .................................................................... 47
Hình 6.5Mô đun phát RF (Remote) ............................................................................... 48
Hình 6.6 LCD TC1602A ............................................................................................... 48
ĐỒ ÁN TỐT NGHIỆP GVHD: ThS LÂM TĂNG ĐỨC
SVTH: NGUYỄN HỮU VIỆT Trang 80
Hình 6.7 Hình ảnh lúc giao diện đang được xây dựng .................................................. 50
Hình 6.8 Giao diện trên máy tính được hoàn thành ...................................................... 50
Hình 6.9 Sơ đồ khối của firmware mạch đo nhiệt độ .................................................... 51
Hình 6.8 Sơ đồ khối quá trình cập nhật giá trị nhiệt độ ................................................ 51
Hình 6.10: Mạch đo nhiệt độ và ghép nối máy tính qua giao thức USB ..................... 52
Hình 6.11: Bàn phím máy tính không dây dạng thu nhỏ .............................................. 53
Mục lục bảng biểu
Bảng 2.1:Bảng so sánh các giao thức .............................................................................. 6
Bảng 2.2: Bảng liệt kê các lớp của giao thức USB ......................................................... 9
Bảng 4.1: Bảng tóm tắt chức năng của PIC 182550/4550 ............................................ 26
Bảng 6.1: Chức năng của các chân LCD ...................................................................... 49
Bảng 6.2: Bảng chức năng của các phím bấm được mã hóa theo các chế độ ............... 53
Các file đính kèm theo tài liệu này:
- do_huu_viet_6883.pdf