52
Báo cáo đồ án kĩ thuật Năm học 2011-2012 CHƯƠNG TRÌNH KỸ SƯ CHẤT LƯỢNG CAO VIỆT PHÁP LỚP VIỆT PHÁP 08 – VIỄN THÔNG Đề tài : ĐIỀU KHIỂN TỪ XA ĐA KÊNH BẰNG LED HỒNG NGOẠI Giảng viên hướng dẫn: THẦY HỒ TRUNG MỸ Nhóm thực hiện Nguyễn Tấn Phát MSSV: 40801521 Nguyễn Hồng Phúc 40801594 Gv hướng dẫn: Trang 1 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

ĐIỀU KHIỂN TỪ XA ĐA KÊNH BẰNG LED HỒNG NGOẠI

Embed Size (px)

Citation preview

Báo cáo đồ án kĩ thuật Năm học 2011-2012

CHƯƠNG TRÌNH KỸ SƯ CHẤT LƯỢNG CAO VIỆT PHÁPLỚP VIỆT PHÁP 08 – VIỄN THÔNG

Đề tài: ĐIỀU KHIỂN TỪ XA ĐA KÊNH BẰNG LED HỒNG NGOẠI

Giảng viên hướng dẫn: THẦY HỒ TRUNG MỸ

Nhóm thực hiện

Nguyễn Tấn Phát MSSV: 40801521Nguyễn Hồng Phúc 40801594

Thành phố Hồ Chí Minh, Tháng 7/2012

Gv hướng dẫn: Trang 1 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Phân 1Giới thiệu đề tài.--------------

I. Dẫn nhâp:Điều khiển từ xa là việc điều khiển một mô hình ở một khoảng cách nào

đó mà con người không nhất thiết trực tiếp đến nơi đặt hệ thống. Khoảng cách đó tuỳ thuộc vào từng hệ thống có mức phức tạp khác nhau, chẳng hạn như để điều khiển từ xa một phi thuyền ta cần phải có hệ thống phát và thu mạnh, ngược laị, để điều khiển một trò chơi điện tử từ xa ta chỉ cần một hệ thống phát và thu yêú hơn…

Những đôí tượng được điều khiển có thể ở trên không gian, ở dưới đáy biển sâu hay ở một vùng xa xôi hẻo lánh nào đó trên mặt điạ cầu . Thế giới càng phát triển thì lĩnh vực điều khiển cần phải được mở rộng hơn. Việc ứng dụng điều khiển từ xa vào thông tin liên lạc đã mang lại nhiều thuận lợi cho xa hội loài người, thông tin được cập nhật hơn nhờ sự chính xác và nhanh chóng của quá trình điều khiển từ xa trong đo lường từ xa. Ngoài ra điều khiển từ xa còn được ứng dụng trong kỹ thuật đo lường. Trước đây, muốn đo độ phóng xạ của lò hạt nhân thì hết sức khó khăn và phức tạp nhưng giờ đây con người có thể ở một nơi hết sức an toàn nào đó cũng có thể đo được độ phóng xạ của lò hạt nhân nhờ vào kỹ thuật điều khiển từ xa. Như vậy, hệ thống điều khiển từ xa đã hạn chế được mức độ phức tạp của công việc và đảm bảo an tòan cho con người. Trong sinh họat hằng ngày của con người như những trò chơi giải trí (robot, xe điều khiển từ xa …) cho đến những ứng dụng gần gũi với con người cũng được cải tiến cho phù hợp với việc sử dụng và đạt mức tiện lợi nhất. Điều khiển từ xa đã thâm nhập vào vấn đề này do đó cho ra những loại tivi điều khiển từ xa, đầu video, VCD, CD,… đến quạt bàn tất cả đều được điều khiển từ xa. Xuất phát từ những ý tưởng trên nên em đã chọn đề tài điều khiển từ xa bằng tia hồng ngoại, nhưng vì thời gian quá hạn hẹp , trình độ kỹ thuật cũng như vấn đề tài chính còn nhiều hạn chế nên em chỉ thiết kế và thi công mạch điều khiển từ xa quạt bằng tia hồng ngoại.

Hồng ngoại là sự bức xạ năng lượng với tần số thấp hơn tần số mà mắt ta nhìn thấy . Vì vậy chúng ta không thể nhìn thấy nó được. Tuy nhiên như chúng ta đều biết mặc dù không “nhìn” thấy tần số âm thanh nhưng chúng ta biết rằng nó tồn tại và tai ta có thể nghe thấy chúng.

Ta không thể nhìn thấy hay nghe thấy hồng ngoại nhưng ta có thể cảm thấy nó từ sự cảm ứng nhiệt trên da. Khi bạn đưa tay tới gần ngọn lửa hoặc những vật nóng , bạn sẽ cảm thấy nhiệt dù bạn không nhìn thấy. Bạn nhìn thấy ngọn lửa là bởi vì nó phát ra nhiều loại bức xạ mắt ta có thể nhìn thấy, đồng thời nó cũng phát ra hồng ngoại mà ta chỉ có thể cảm nhận qua da.

II. Gi ới thiệu hệ thông điều khiên tư xa :

Gv hướng dẫn: Trang 2 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

thiết bị thu

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Hệ thống điều khiển từ xa là một hệ thống cho phép ta điều khiển các thiết bị từ một khoảng cách xa. Ví dụ hệ thống điều khiển bằng vô tuyến, hệ thống điều khiển từ xa bằng tia hồng ngoại, hệ thống điều khiển từ xa bằng cáp quang dây dẫn.

•Sơ đồ kết cấu của hệ thống điều khiển từ xa bao gồm:-Thiết bị phát: biến đổi lệnh điều khiển thành tin tức tín hiệu và phát đi.-Đường truyền: đưa tín hiệu điều khiển từ thiết bị phát đến thiết bị thu.-Thiết bị thu: nhận tín hiệu điều khiển từ đường truyền, qua quá trình biến

đổi, biến dịch để tái hiện lại lệnh điều khiển rồi đưa đến các thiết bị thi hành.

Nhiệm vụ cơ bản của hệ thống điều khiển từ xa:- Phát tín hiệu điều khiển.- Sản sinh ra xung hoặc hình thành các xung cần thiết.- Tổ hợp xung thành mã.- Phát các tổ hợp mã đến điểm chấp hành.- Ở điểm chấp hành (thiết bị thu) sau khi nhận được mã phải biến đổi các

mã nhận được thành các lệnh điều khiển và đưa đến các thiết bị, đồng thời kiểm tra sự chính xác của mã mới nhận.

1) Một sô vấn đề cơ bản trong hệ thông điều khiên tư xa:Do hệ thống điêù khiển từ xa có những đường truyền dẫn xa nên ta cần phải

nghiên cứu về kết cấu hệ thống để đảm bảo tín hiệu được truyền đi chính xác và nhanh chóng theo những yêu cầu sau:

a. Kết cấu tin tức:Trong hệ thống điều khiển từ xa độ tin cậy truyền dẫn tin tức có quan hệ rất

nhiều đến kết cấu tin tức. Nội dung về kết cấu tin tức có hai phần: về lượng và về chất. Về lượng có cách biến lượng điều khiển và lượng điều khiển thành từng loại xung gì cho phù hợp, và những xung đó cần áp dụng những phương pháp nào để hợp thành tin tức, để có dung lượng lớn nhất và tốc độ truyền dẫn nhanh nhất .

b. Về kết cấu hệ thống:Để đảm bảo các yêu cầu về kết cấu tin tức, hệ thống điều khiển từ xa có các

yêu cầu sau:- Tốc độ làm việc nhanh.- Thiết bị phải an toàn, tin cậy.- Kết cấu phải đơn giản.

Hệ thống điều khiển từ xa có hiệu quả cao là hệ thống đạt tốc độ điều khiển cực đại đồng thời đảm bảo độ chính xác trong phạm vi cho phép.

2) Các phương pháp mã hóa trong điều khiên tư xa:

Gv hướng dẫn: Trang 3 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Khuếch đại

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Trong hệ thống truyền thông tin rời rạc hoặc truyền thông tin liên tục nhưng đã được rời rạc hóa tin tức thường phải được biến đổi thông qua một phép biến đổi thành số (thường là số nhị phân) rồi mã hóa và được phát đi từ máy phát. Ở máy thu, tín hiệu phải thông qua các phép biến đổi ngược lại với các phép biến đổi trên: giải mã, liên tục hóa …

Sự mã hóa tín hiệu điều khiển nhằm tăng tính hữu hiệu và độ tin cậy của hệ thống điều khiển từ xa, nghĩa là tăng tốc độ truyền và khả năng chống nhiễu.

Trong điều khiển từ xa ta thường dùng mã nhị phân tương ứng với hệ, gồm có hai phần tử [0] và [1].

Do yêu cầu về độ chính xác cao trong các tín hiệu điều khiển được truyền đi để chống nhiễu ta dùng loại mã phát hiện và sửa sai.

Mã phát hiện và sửa sai thuộc loại mã đồng đều bao gồm các loại mã: mã phát hiện sai, mã sửa sai, mã phát hiện và sửa sai.

Dạng sai nhầm cuả các mã được truyền đi tùy thuộc tính chất của kênh truyền, chúng có thể phân thành 2 lọai:

- Sai độc lập: Trong quá trình truyền, do nhiều tác động, một hoặc nhiều ký hiệu trong các tổ hợp mã có thể bị sai nhầm, nhưng những sai nhầm đó không liên quan nhau.- Sai tương quan: Được gây ra bởi nhiều nhiễu tương quan, chúng hay xảy ra trong từng chùm, cụm ký hiệu kế cận nhau .

Sự lựa chọn của cấu trúc mã chống nhiễu phải dựa trên tính chất phân bố xác suất sai nhầm trong kênh truyền.

Hiện nay lý thuyết mã hóa phát triển rất nhanh, nhiều loại mã phát hiện và sửa sai được nghiên cứu như: mã Hamming, mã chu kỳ, mã nhiều cấp.

3) Sơ đồ khôi của một hệ thông điều khiền tư xa:Sơ đồ khôi máy phát

Sơ đồ khôi máy thu

Gv hướng dẫn: Trang 4 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Phân 2Sơ lược mã RC5--------------

Mã RC5 có lẽ được sử dụng phổ biết nhất hiện nay, bởi vì nó dễ sử dụng và ứng dụng sẵn có trên nhiều loại chip.

I. Tính chất: 2 start bit luôn là logic 1 1 bit chuyển đổi (toggle bit) nhưng không sử dụng trong project này và luôn có

logic 0 5 bit địa chỉ và 6 bit độ dài lệnh Mã biphase (hay mã Manchester) Tần số sóng mang 36(38)kHz 25-50% duty cylce Chu kỳ bit khoảng 1.67ms Được phát triển bởi hãng Philips Giao thức sử dụng điều chế Biphase (hoặc mã Manchester) của một tần số sóng

mang IR 36kHz. Tất cả các bit có chiều dài như nhau khoảng 1.67ms như hình vẽ.

Gv hướng dẫn: Trang 5 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Trong Figure 2, hai xung đầu tiên là xung bắt đầu (start pulse), và cả hai đều ở mức logic “1”. (St1 và St2).

Bit thứ 3 là bit chuyển đổi. Bit này được đảo ngược mỗi khi một phím được thả ra và nhấn trở lại. Nhưng trong porject này không sử dụng bit này và luôn bằng “0” (Ctrl).

5 bit tiếp theo đại diện cho địa chỉ thiết bị hồng ngoại, được gởi với bit MSB đầu tiên (S4-S0).

6 bit tiếp theo là lệnh và cũng được gởi với MSB đầu tiên. (C5-C0) Chú ý rằng khung RC5 tổng cộng gồm 14 bit vì thế chu kỳ khung là 23ms.

II. Giải mã RC5Khi chương trình giải mã RC5 được gọi, đầu tiên nó chờ một start bit.

Chiều dài của phần thấp của bit bắt đầu được đo. Nếu xung thấp của bit bắt đầu đầu tiên là dài hơn 1.020ms hoặc thấp hơn 800us thì chương trình giải mã xác định lỗi hoặc không có lệnh nào được nhận.

Việc đo start bit được dùng để tính hai khoảng thời gian tham chiếu, REF1 và REF2, để lấy mẫu dòng dữ liệu. Chương trình dùng cạnh của giữa mỗi bit để đồng bộ hóa thời gian. ¾ chiều dài bit, sau cạnh này, dữ liệu được lấy mẫu. Đây là ở giữa nửa đầu của bit tiếp theo (hình 4). Trạng thái mỗi bit được lưu lại và chương trình đợi cạnh giữa.

Gv hướng dẫn: Trang 6 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Phân 3Tổng quan về Vi điều khiên PIC--------------

I. PIC là gì ?? PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch là

“máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiên của họ:

PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiển CP1600. Vi điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay.

II. Tại sao là pic mà không là các họ vi điều khiên khác?Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola

68HC, AVR, ARM,... Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường đại học, bản thân người viết đã chọn họ vi điều khiển PIC để mở rộng vốn kiến thức và phát triển các ứng dụng trên công cụ này vì các nguyên nhân sau:

Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam. Giá thành không quá đắt. Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập. Là một sự bổ sung rất tốt về kiến t hức cũng như về ứng dụng cho họ vi điều khiển mang tính truyền thống: họ vi điều khiển 8051. Số lượng người sử dụng họ vi điều khiển PIC. Hiện nay tại Việt Nam cũng như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi. Điều này tạo nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng tài li ệu, số lượng các ứng dụng mở đã được phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn,…

Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp chương trình từ đơn giản đến phức tạp,… Các tính năng đa dạng của vi điều khiển PIC, và các tính năng này không ngừng được phát triển. III. Kiến trúc PIC

Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến trúc: kiến trúc Von Neuman và kiến trúc Havard. Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard. Điểm khác biệt giữa kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và bộ nhớ chương trình.

Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một ca ch linh hoạt bộ nhớ chương trình và bộ nhớ dữ liệu. Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của CPU phải rất cao, vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể tương tác với bộ nhớ dữ liệu hoặc bộ nhớ chương trình. Như vậy có thể nói kiến trúc Von-Neuman không thích hợp với cấu trúc của một vi điều khiển.

Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra thành hai bộ nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tương

Gv hướng dẫn: Trang 7 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

tác với cả hai bộ nhớ, như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể.

Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể được tối ưu tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ liệu. Ví dụ, đối với vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ liệu được tổ chức thành từng byte), còn đối với kiến trúc Von-Neuman, độ dài lệnh luôn là bội số của 1 byte (do dữ liệu được tổ chức thành từng byte). Đặc điểm này được minh họa cụ thể trong hình 1.1. IV. RISC và CISC

Như đã trình bày ở trên, kiến trúc Havard là khái niệm mới hơn so với kiến trúc Von-Neuman. Khái niệm này được hình thành nhằm cải tiến tốc độ thực thi của một vi điều khiển.

Qua việc tách rời bộ nhớ chương trình và bộ nhớ dữ liệu, bus chương trình và bus dữ liệu,

CPU có thể cùng một lúc truy xuất cả bộ nhớ chương trình và bộ nhớ dữ liệu, giúp tăng tốc độ xử lí của vi điều khiển lên gấp đôi. Đồng thời cấu trúc lệnh không còn phụ thuộc vào cấu trúc dữ liệu nữa mà có thể linh động điều chỉnh tùy theo khả năng và tốc độ của từng vi điều khiển. Và để tiếp tục cải tiến tốc độ thực thi lệnh, tập lệnh c ủa họ vi điều khiển PIC được thiết kế sao cho chiều dài mã lệnh luôn cố đị nh (ví dụ đối với họ 16Fxxxx chiều dài mã lệnh luôn là 14 bit) và cho phép thực thi lệnh trong một chu kì của xung clock ( ngoại trừ một số trường hợp đặc biệt như lệnh nha y, lệnh gọi chương trình con … cần hai chu kì xung đồng hồ).

Điều này có nghĩa tập lệnh của vi điều khiển thuộc cấu trúc Havard sẽ ít lệnh hơn, ngắn hơn, đơn giản hơn để đáp ứng yêu cầu mã hóa lệnh bằng một số lượng bit nhất định.

Vi điều khiển được tổ chức theo kiến trúc Havard còn được gọi là vi điều khiển RISC (Reduced Instruction Set Computer) hay vi đi ều khiển có tập lệnh rút gọn. Vi điều khiển được thiết kế theo kiến trúc Von-Neuman co n được gọi là vi đi ều khiển CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phức tạp vì mã lệnh của nó không phải là một số cố định mà luôn là bội số của 8 bit (1 byte).

V. PIPELINING Đây chính là cơ chế xử lí lệnh của các vi điều khiển PIC. Một chu kì lệnh

của vi điều khiển sẽ bao gồm 4 xung clock. Ví dụ ta sử dụng oscillator có tần số 4 MHZ, thì xung lệnh sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us). Giả sử ta có một đoạn chương trình như sau: 1. MOVLW 55h 2. MOVWF PORTB 3. CALL SUB_1 4. BSF PORTA,BIT3

Gv hướng dẫn: Trang 8 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

5. instruction @ address SUB_1

Ở đây ta chỉ bàn đến qui trình vi điều khiển xử lí đoạn chương trình trên thông qua từng chu kì lệnh. Quá trình trên sẽ được thực thi như sau:

TCY0: đọc lệnh 1 TCY1: thực thi lệnh 1, đọc lệnh 2 TCY2: thực thi lệnh 2, đọc lệnh 3 TCY3: thực thi lệnh 3, đọc lệnh 4. TCY4: vì lệnh 4 không phải là lệnh sẽ được t hực thi theo qui trình thực thi

của chương trình (lệnh tiếp theo được thực thi phải là lệnh đầu tiên tại label SUB_1) nên chu kì thực thi lệnh này chỉ được dùng để đọc lệnh đầu tiên tại label SUB_1. Như vậy có thể xem lênh 3 cần 2 chu kì xung clock để thực thi.

TCY5: thực thi lệnh đầu tiên của SUB_1 và đọc lệnh tiếp theo của SUB_1. Quá trình này được thực hiện tương tự cho các lệnh tiếp theo của chương

trình. Thông thường, để thực thi một lệnh, ta cần một chu kì lệnh để gọi lệnh đó, và một chu kì xung clock nữa để giải mã và thực thi lệnh. Với cơ chế pipelining được trình bày ở trên, mỗi lệnh xem như chỉ được thực thi trong một chu kì lệnh. Đối với các lệnh mà quá trình thực thi nó làm thay đổi giá trị thanh ghi PC (Program Counter) cần hai chu kì le nh để thực thi vì phải thực hiện việc gọi lệnh ở địa chỉ thanh ghi PC chỉ tới. Sau khi đã xác định đúng vị trí lệnh trong thanh ghi PC, mỗi lệnh chỉ cần một chu kì lệnh để thực thi xong. VI. Các dòng PIC và cách lựa chọn vi điều khiên PIC Các kí hiệu của vi điều khiển PIC:

PIC12xxxx: độ dài lệnh 12 bit PIC16xxxx: độ dài lệnh 14 bit PIC18xxxx: độ dài lệnh 16 bit C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM) F: PIC có bộ nhớ flash LF: PIC có bộ nhớ flash hoạt động ở điện áp thấp LV: tương tự như LF, đây là kí hiệu cũ

Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm chữ Aở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash). Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC. Ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản xuất.

Cách lựa chọn một vi điều khiển PIC phù hợp: Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng.

Có nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển chỉ có 8 chân,ngoài ra còn có các vi điều khiển 28, 40, 44, … chân.

Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương trình được nhiều lần hơn. Tiếp theo cần chú ý đến các khối chức năng được tích hợp

Gv hướng dẫn: Trang 9 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

sẵn trong vi điều khiển, các chuẩn giao tiếp bên trong. Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.

Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PI C có thể được tìm thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp.

VII. Ngôn ngữ lâp trình cho PIC Ngôn ngữ lập trình cho PIC rất đa dạng. Ngôn ngữ lập trình cấp thấp có MPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lập trình cấp cao hơn bao gồm C, Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ lập trình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…

Gv hướng dẫn: Trang 10 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Phân 4Giới thiệu vi điều khiên PIC16F887 và 12F629--------------

I. Giới thiệu Chương này giới thiệu cơ bản về vi điều khiển PIC16F887 của hãng

Microchip và hoạt động của nó bao gồm nội dung về cách cấu hình xung clock, hoạt động khối giao tiếp UART, khối PWM, ngắt ngoài trên chân RB, cấu tạo và hoạt động của các bộ timer, và cách nạp chương trình cho PIC16F887.

II. Nội dung1. Một vài chi tiết chính của vi điều khiên PIC16F887PIC16F887 là vi điều khiển 8-bit có kiến trúc Harvard của Microchip có

những thông số kỹ thuật như sau: - Clock hoạt động tối đa 20MHz. - Chu kỳ máy bằng bốn lần chu kỳ xung clock.- Chip có nhiều dạng vỏ khác nhau, loại chip được sử dụng trong đề tài là loại 40 chân PDIP.- Điện áp hoạt động rộng từ 2V đến 5.5V.- Bộ nhớ dữ liệu và bộ nhớ chương trình tách biệt nhau, bus địa chỉ cũng như bus dữ liệu là riêng biệt. Bộ nhớ chương trình Flash 8K ô nhớ cho phép ghi 100,000 lần. Mỗi ô nhớ có 14 bit. Bộ nhớ dữ liệu RAM có 512 Byte gồm các thanh ghi chức năng đặc biệt và các thanh ghi đa mục đích. Ngoài ra PIC16F887 được tích hợp 256 Byte EEPROM cho phép ghi đến 1,000,000 lần.- 35 chân I/O của 5 port điều khiển là PortA, PortB, PortC, PortD, PortE.- Bộ chuyển đổi ADC 10-bit với 14 kênh.- 3 bộ timer. Bộ timer0 8-bit, bộ timer1 16-bit và bộ timer2 8-bit.- Module Capture, Compare và PWM- Module Enhanced USART hỗ trợ RS-485, RS-232.

2. Bộ dao động của PIC16F887Clock hệ thống của PIC16F887 có thể được chọn từ hai nguồn dao động

nội (Internal Oscillator) hoặc dao động ngoại (External Oscillator) nhờ bộ chọn kênh MUX. Bộ MUX được điều khiển bởi các bit FOSC<2:0> (bit 2, bit 1, bit 0 của thanh ghi CONFIG1 16-bit định vị tại địa chỉ 2007H và 2008H trong bộ nhớ chương trình) và bit SCS<0> (bit 0 của thanh ghi OSCCON). Nếu SCS = 1, clock hệ thống được chọn từ INTOSC. Nếu SCS = 0, clock hệ thống được chọn từ bộ dao động ngoại. Các bit FOSC<2:0> được sử dụng để cấu hình bộ dao động ngoại là LP, XT, HS, RC, RCIO hay EC.

Bộ dao động nội gồm 2 bộ dao động HFINTOSC 8MHz và LFINTOSC 31kHz. Clock 8MHz của bộ HFINTOSC được chia thành các tần số 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz nhờ bộ chia tần số postscaler. Các bit IRCF<2:0> điều khiển bộ MUX chọn kênh cho INTOSC.

Gv hướng dẫn: Trang 11 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Bộ dao động ngoại (được tích hợp bên trong PIC) cần được kết nối với các bộ lọc tại các chân OSC1, OSC2. Trong đề tài, tôi sử dụng thạch anh 12MHz và 2 tụ 33pF kết nối như hình 2.3. Bộ dao động ngoại được hoạt động ở chế độ HS. Tín hiệu dao động được qua bộ đệm Trigger theo sườn xuống và tạo thành xung clock HS 12MHz cung cấp cho clock hệ thống.

3. Các Port I/OPIC16F887 tất cả 35 chân I/O mục đích thông thường (GPIO: General

Purpose Input Ouput) có thể được sử dụng. Tùy theo những thiết bị ngoại vi được chọn mà một vài chân có thể không được sử dụng ở chức năng GPIO. Thông thường, khi một thiết bị ngoại vi được chọn, những chân liên quan của thiết bị ngoại vi có thể không được sử dụng ở chức năng GPIO. 35 chân GPIO được chia cho 5 Port: PortA gồm 8 chân, PortB gồm 8 chân, PortC gồm 8 chân, PortD gồm 8 chân và PortE gồm 3 chân. Mỗi port được điều khiển bởi 2 thanh ghi 8-bit, thanh ghi Port và thanh ghi Tris. Thanh ghi Tris được sử dụng để điều khiển port là nhập hay xuất. Mỗi bit của Tris sẽ điều khiển mỗi chân của port đó, nếu giá trị của bit là 1 thì chân liên quan là nhập, ngược lại nếu giá trị của bit là 0 thì chân liên quan là xuất. Thanh ghi Port được sử dụng để chứa giá trị của port liên quan. Mỗi bit của thanh ghi Port sẽ chứa giá trị của chân liên quan.

4. Ngắt ngoài trên chân RB0Ngắt ngoài trên chân RB0 được kích khởi theo sườn. Sườn lên nếu như bit

INTEDG=1 (bit 6 của thanh ghi OPTION_REG), sườn xuống nếu INTEDG=0. Khi một sườn thích hợp xuất hiện trên chân RB0, cờ INTF được bật lên 1. Ngắt này có thể được cho phép nếu bit INTE=1, không cho phép nếu INTE=0. Cờ INTF cần được xóa bằng phần mềm trong trình phục vụ ngắt trước khi cho phép ngắt trở lại.

5. Cấu tạo và hoạt động của bộ timerBộ timer1 là bộ đếm lên 16-bit được truy xuất gián tiếp thông qua cặp

thanh ghi TMR1H, TMR1L. Đọc hoặc ghi các thanh ghi này sẽ cập nhật trực tiếp giá trị cho bộ timer. Khi được sử dụng với nguồn clock nội, bộ timer 1 sẽ có vai trò là bộ định thời. Khi được sử dụng với nguồn clock ngoại, nó sẽ có vai trò là định thời hoặc bộ đếm. Sử dụng bit TMR1CS để chọn nguồn clock.

Các bit T1CKPS<1:0> định giá trị cho bộ chia tần số Prescaler. Khi bộ TMR1 tràn (từ FFFFh đến 0000h) cờ ngắt TMR1IF sẽ được thiết lập lên 1. Nếu lúc này cờ TMR1IE =1, cờ PEIE=1 và GIE=1 thì ngắt timer1 sẽ xảy ra. Cờ TMR1IF cần được xóa trong trình phục vụ ngắt timer1.

Một vài chi tiết chính của vi điều khiên PIC12F629PIC12F629 là vi điều khiển 8-bit có kiến trúc Harvard của Microchip có

những thông số kỹ thuật như sau:

Gv hướng dẫn: Trang 12 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Tần số thạch anh trong project là 4MHz cho 2 bộ phát và thu Điện áp hoạt động rộng từ 2V đến 5.5V. 6 chân I/O của GPIO điều khiển là GP0, GP1, GP2, GP3, GP04, GP5. 2 bộ timer. Bộ timer0 8-bit, bộ timer1 16-bit Bộ nhớ Flash 1k, bộ nhớ SRAM 64byte, EEPROM 128byte

Các cấu trúc IO, Interrupt, Timer đầu sử dụng nguyên lý như của 16F887Chọn PIC12F629 để thực hiện mạch thự vì nó đơn giản, có 8pin thiết kế

nhỏ gọn, nguyên tắc hoạt động không khác nhiều so với 16F887 (40 chân)

Gv hướng dẫn: Trang 13 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Phân 5:Thiết kế và thi công--------------I. Ma ch phát :

1. Sơ đồ nguyên lý

2. Giải thíchInput: Chân GP4, 6, 7 của PIC được nối với điện trở 10K kéo lên VDD và

button kéo xướng VSS. Bình thường, áp vào ở mỗ chân ở mức cao. Khi ấn Button, điện áp này chuyển xuống mức thấp, tạo ngắt IOC giúp hệ thống nhận biến sự thay đổi trạng thái ở các chân

Output: Chân GP5 của PIC nối với cực B của BC547 – đóng vai trò như một công tắc điện ngắn mạch IR để phát hồng ngoại.

Tín hiệu phát được điều khiển bằng cách thay đổi điện áp chân GP5 theo chuẩn RC5 tần số 38KHz, duty cycle 35%

Gv hướng dẫn: Trang 14 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

3. Mạch Layout

4. Code Assembly

;------------------------------------------------------; PROJECT : 3 CHANNEL TX IR REMOTE; CRYSTAL 4 MHz; MPLAB : 7.11 , Assembly; RC5 FORMAT @38KHz , 35% DUTY CYCLE; ADDRESS = 0X0B 0000 1011; CH1 = 0X01; CH2 = 0X02; CH3 = 0X03; NOT USE TOGGLE ALWAY = 0;------------------------------------------------------

list P=12F629#include <P12F629.INC>__config _WDT_OFF & _XT_OSC & _CP_ON & _CPD_ON & _BODEN_OFF &

_MCLRE_OFF & _PWRTE_ON

#DEFINE CH1 GPIO,0 ; CONNECT WITH TX SWITCH CHANNEL 1#DEFINE CH2 GPIO,1 ; CONNECT WITH TX SWITCH CHANNEL 2#DEFINE CH3 GPIO,3 ; CONNECT WITH TX SWITCH CHANNEL 3#DEFINE IR GPIO,2 ; CONNECT WITH IR LED WITH TRANSISTOR DRIVES#DEFINE TOG_BIT TOGGLE,0 ; TOGLE BIT NOT USE FOR THIS PROJECT#DEFINE CH1_CMD 0X01 ; CHANNEL 1 COMMAND#DEFINE CH2_CMD 0X02 ; CHANNEL 2 COMMAND

Gv hướng dẫn: Trang 15 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

#DEFINE CH3_CMD 0X03 ; CHANNEL 3 COMMAND

CNT1 EQU 20HCNT2 EQU 21HCNT3 EQU 22HCNT4 EQU 23HTOGGLE EQU 24HCMD EQU 25H ; IR COMMAND BUFFER

ORG 000

BCF IRMOVLW0X07MOVWF CMCON; MAKE ALL GPIO TO DIGITAL I/OBSF STATUS,RP0BCF OPTION_REG,7 ; ENABLE WEAK PULL-UPBCF WPU,2 ; DISABLE WEAK PULL-UP FOR GPIO2MOVLWB'00001011' ; GPIO<0,1,3> = INPUT , GPIO 2 = OUTPUTMOVWF TRISIOBSF IOCB,IOCB0BSF IOCB,IOCB1BSF IOCB,IOCB3BSF INTCON,GPIEBCF STATUS,RP0BCF INTCON,GIEBCF TOG_BIT

;------------------------------------; MAIN LOOPMAIN: SLEEP ; GOTO SLEEP MODE

BTFSS CH1GOTO DO_CH1BTFSS CH2GOTO DO_CH2BTFSS CH3GOTO DO_CH3GOTO MAIN

;------------------------------------DO_CH1: CALL DEBOUNCE

BTFSC CH1GOTO MAINMOVLWCH1_CMD ; LOAD COMMANE FOR CHANNEL 1MOVWF CMDCALL SEND_RC5

BTFSS CH1GOTO $-1 ; WAIT FOR SWITCH RELEASED

CALL DEBOUNCE ; DELAY AFTER SWITCH RELEASEDGOTO MAIN

;------------------------------------DO_CH2: CALL DEBOUNCE

Gv hướng dẫn: Trang 16 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

BTFSC CH2GOTO MAINMOVLWCH2_CMD ; LOAD COMMANE FOR CHANNEL 1MOVWF CMDCALL SEND_RC5;BTFSS CH2GOTO $-1 ; WAIT FOR SWITCH RELEASED;CALL DEBOUNCE ; DELAY AFTER SWITCH RELEASEDGOTO MAIN;

;------------------------------------DO_CH3: CALL DEBOUNCE

BTFSC CH3GOTO MAINMOVLWCH3_CMD ; LOAD COMMANE FOR CHANNEL 1MOVWF CMDCALL SEND_RC5;BTFSS CH3GOTO $-1 ; WAIT FOR SWITCH RELEASED;CALL DEBOUNCE ; DELAY AFTER SWITCH RELEASEDGOTO MAIN;

;======================================; SEND LOGIC 0;======================================LOGIC0: MOVLW.32 ; 1

MOVWF CNT1 ; 1;

LOG0_1: BSF IR ; 1 MAKE IR HIGH 35% Duty cycle = 9 uSGOTO $+1GOTO $+1GOTO $+1GOTO $+1;;===================================BCF IR ; 1 MAKE IR LOW 17 uSGOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1NOP ; 1;DECFSZ CNT1,F ; 1/2GOTO LOG0_1 ; 2 26 uS;CALL DELAY_OFFRETURN ; 2;

;======================================

Gv hướng dẫn: Trang 17 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

; SEND LOGIC 1;======================================LOGIC1: CALL DELAY_OFF ; DELAY 899 uS

MOVLW.32 ; 1MOVWF CNT1 ; 1;

LOG1_1: BSF IR ; 1 MAKE IR HIGH 35% Duty cycle = 9 uSGOTO $+1GOTO $+1GOTO $+1GOTO $+1;;===================================BCF IR ; 1 MAKE IR LOW 17 uSGOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1NOP ; 1;DECFSZ CNT1,F ; 1/2GOTO LOG1_1 ; 2;RETURN ; 2;

;======================================; DELAY FOR NO CARRAIR; DELAY ABOUT 835 uS;======================================DELAY_OFF:

MOVLW5 ; 1MOVWF CNT3 ; 1MOVLW.54 ; 1MOVWF CNT4 ; 1DECFSZ CNT4,F ; 1/2GOTO $-1 ; 2DECFSZ CNT3,F ; 1/2GOTO $-5 ; 2RETURN ; 2

;======================================; SEND RC5 TO REMOTE; INPUT : CMD (6 BIT IR COMMAND);======================================SEND_RC5:

; SEND 2 START BITCALL LOGIC1CALL LOGIC1; SEND TOGGLE BITBTFSS TOG_BITGOTO $+3CALL LOGIC1GOTO $+2

Gv hướng dẫn: Trang 18 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

CALL LOGIC0

; SEND ADDRESS 5 BIT FIX AT 01011 (0X0B)CALL LOGIC0; 0 MSB FIRST BIT 4CALL LOGIC1; 1CALL LOGIC0; 0CALL LOGIC1; 1CALL LOGIC1; 1 LSB BIT 0;; SEND COMMAND 6 BIT(00HH LLLL) MSB FIRSTBCF STATUS,CRLF CMD,F ; AFTER FIRST ROTAGE 0HHL LLL0RLF CMD,F ; AFTER SECOND ROTAGE HHLL LL00;MOVLW6MOVWF CNT2;RLF CMD,F ; SEND MSB FIRSTBTFSS STATUS,CGOTO $+3CALL LOGIC1GOTO $+2;CALL LOGIC0DECFSZ CNT2,FGOTO $-7RETLW 0;

;======================================; DEBOUNCE SWITCH; DELAY 15 mS;======================================DEBOUNCE:

MOVLW.1 ; 1MOVWF CNT1 ; 1

DEL_1: MOVLW.20MOVWF CNT2 ; 1

DEL_2: CLRF CNT3 ; 1DEL_3: DECFSZ CNT3,F ; 1/2

GOTO DEL_3 ; 2DECFSZ CNT2,F ; 1/2GOTO DEL_2 ; 2DECFSZ CNT1,F ; 1/2GOTO DEL_1 ; 2RETLW 0 ; 2

END

Gv hướng dẫn: Trang 19 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

SEND RC5

CMD=CH1_CMD

1

DO_CH1

RETLW

CH1 RELEASE

DEBOUNCE

CH1

0

MAIN

N

Y

Báo cáo đồ án kĩ thuật Năm học 2011-2012

5. Sơ đồ giải thuât

Gv hướng dẫn: Trang 20 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

DELAY_OFF

CNT1=0

CNT1=CNT1-1

LOGIC 0

CNT1=32

IR=1

DELAY 9µs

IR=0

DELAY 17µs

N

Y

RETLW

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 21 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

CNT1=0

CNT1=CNT1-1

LOGIC 1

CNT1=32

IR=0

DELAY 9µs

IR=1

DELAY 17µs

N

Y

RETLW

DELAY_OFF

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 22 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

LOGIC 1

SEND ADDRESS

LOGIC1

0

SEND RC5

SEND CMD

LOGIC 1

TOG_BIT

1

LOGIC 0

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 23 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

1

0

RETLW

CNT2=0

CNT2=CNT2-1

SEND CMD

RLF CMD

RLF CMD

CNT2=6

RLF CMD

CLOGIC 1

LOGIC 0

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 24 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

II. Mạch thu:

1. Sơ đồ nguyên lý

2. Giải thích

Input: Chân GP4 của PIC được nối với chân 1 của SM0038 nhận tín hiệu

hồng ngoại từ IR phát. Bình thường tín hiệu này luôn ở mức cao, khi nhận được

sóng hồng ngoại nó sẽ thay đổi xuống mức thấp

Output: Chân GP 5, 6, 7 nối với BC547 điều khiển bật tắc các Led khi có

tín hiệu điều khiển hợp lệ

3. Mạch Layout

Gv hướng dẫn: Trang 25 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

4. Code Assembly

;--------------------------

; THIS IS RX

; PROJECT :3 channel remote control

; CRYSTAL 4 MHz

; RC5 FORMAT @38KHz , 35% duty cycle

; ADDRESS = 0X0B

; ch1 = 0X01

; ch2 = 0X02

; ch3 = 0X03

; NOT USE TOGGLE ALWAY = 0

;--------------------------

list P=12F629

#include <P12F629.INC>

Gv hướng dẫn: Trang 26 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

config _WDT_OFF & _XT_OSC & _CP_ON & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF

& _PWRTE_ON

#DEFINE IR GPIO,3 ; IR LED input with R10K pull-up to vcc

#DEFINE OUT1 GPIO,0 ; Drive output 1

#DEFINE OUT2 GPIO,1 ; Drive output 2

#DEFINE OUT3 GPIO,2 ; Drive output 3

#DEFINE OUT1_M 0x01

#DEFINE OUT2_M 0x02

#DEFINE OUT3_M 0x04

#DEFINE TOG_BIT TOGGLE,0

#DEFINE ADDRS 0X0B ; 0000 1011 ; 0000 1110

#DEFINE CH1_CMD 0X01

#DEFINE CH2_CMD 0X02

#DEFINE CH3_CMD 0X03

CNT1 EQU 20H

CNT2 EQU 21H

CNT3 EQU 22H

CNT4 EQU 23H

TEMP EQU 24H

TOGGLE EQU 25H

ADDR EQU 26H

CMD EQU 27H

ORG 000

Gv hướng dẫn: Trang 27 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

CALL DEBOUNCE

MOVLW0X07

MOVWF CMCON; MAKE ALL GPIO TO DIGITAL I/O

BSF STATUS,RP0

MOVLW0X01

MOVWF OPTION_REG

MOVLWB'00001000'

MOVWF TRISIO

CLRF IOCB

BCF STATUS,RP0

BCF INTCON,GIE

CLRF GPIO ; turn off all output

;

MAIN: CALL DELAY3500

CALL GET_RC5

BTFSC STATUS,C

GOTO MAIN

;

MOVF ADDR,W

XORLW ADDRS

BTFSS STATUS,Z

GOTO MAIN ; ADDRESS ERROR

;

MOVF CMD,W

ANDLW 0X03 ; MASK 2 LSB

Gv hướng dẫn: Trang 28 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

ADDWFPCL,F

GOTO MAIN ; COMMAND 0X00 NOT USE OR COMMAND ERROR

GOTO DO_CH1

GOTO DO_CH2

GOTO DO_CH3

DO_CH1: MOVLW OUT1_M

GOTO CHANGE

;

DO_CH2: MOVLWOUT2_M

GOTO CHANGE

;

DO_CH3: MOVLWOUT3_M

CHANGE: XORWF GPIO,F

GOTO MAIN

;======================================

; READ RC5 Format

; OUTPUT : TOGGLE.7 = TOGGLE BIT

; ADDR = ADDRESS 5 BIT

; CDM = COMMAND 6 BIT

; C = 0 READ OK

; = 1 READ ERROR

;======================================

GET_RC5:BTFSC IR

GOTO GET_RC5 ; WAIT IR LOW

Gv hướng dẫn: Trang 29 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

CLRF TMR0 ; clear timer 0

NOP

BCF INTCON,T0IF ; CLR timer 0 flag

NOP

;

BTFSC INTCON,T0IF

GOTO ERR1

;

BTFSS IR

GOTO $-3

;

MOVF TMR0,W

;MOVLW 0xC8 ; FOR TEST

MOVWF TEMP

MOVLW0XFF ; 1020 mS = 255*4

SUBWF TEMP,W

BTFSC STATUS,C

GOTO ERR1 ; ERROR IF Time > 1020 uS

MOVLW0XC8 ; 800 mS

SUBWF TEMP,W

BTFSS STATUS,C

GOTO ERR1 ; ERROR IF Time < 800 uS (C8h * TM0 Prescaler = 800 uS )

;

BTFSC IR ; Time validate 800uS-1020uS

GOTO $-1 ; WAIT TO LOW (Syn BIT)

Gv hướng dẫn: Trang 30 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

CALL DELAY1252 ; DELAY 3/4 BIT LENGHT=1252 uS

;

BTFSS IR

BCF TOGGLE,7

BTFSC IR

BSF TOGGLE,7

;

BTFSS IR

GOTO $+4

BTFSC IR

GOTO $-1

GOTO READ

;

BTFSS IR

GOTO $-1

;====== READ ADDRESS 5 BIT ===========

; READ MSB FIRST

;

READ: MOVLW5

MOVWF TEMP ; LOOP COUNTER

CLRF ADDR

;

READ1: CALL DELAY1252

BTFSS IR

Gv hướng dẫn: Trang 31 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

BCF STATUS,C

BTFSC IR

BSF STATUS,C

RLF ADDR,F; SHIFT LEFT ADDRESS

;

BTFSS IR

GOTO $+4

BTFSC IR ; WAIT LOW

GOTO $-1

GOTO $+3

;

BTFSS IR

GOTO $-1

;

DECFSZ TEMP,F

GOTO READ1

;

;====== READ COMMAND 6 BIT ===========

; READ MSB FIRST

;

MOVLW6

MOVWF TEMP ; LOOP COUNTER

CLRF CMD

;

CMD1: CALL DELAY1252

Gv hướng dẫn: Trang 32 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

BTFSS IR

BCF STATUS,C

BTFSC IR

BSF STATUS,C

RLF CMD,F ; SHIFT LEFT COMMAND

;

BTFSS IR

GOTO $+4

BTFSC IR

GOTO $-1

GOTO $+3

;

BTFSS IR

GOTO $-1

;

DECFSZ TEMP,F

GOTO CMD1

;

MOVLW0X3F ; 0011 1111

ANDWF CMD,F

MOVLW0X1F ; 0001 1111

ANDWF ADDR,F

BCF STATUS,C ; C=0 NO ERROR

RETURN

;

Gv hướng dẫn: Trang 33 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

ERR1: BSF STATUS,C ; C=1 HAVE ERROR

RETURN

;======================================

; DEBOUNCE SWITCH

; DELAY 15 mS

;======================================

DEBOUNCE:

MOVLW.1 ; 1

MOVWF CNT1 ; 1

DEL_1: MOVLW.20

MOVWF CNT2 ; 1

DEL_2: CLRF CNT3 ; 1

DEL_3: DECFSZ CNT3,F ; 1/2

GOTO DEL_3 ; 2

DECFSZ CNT2,F ; 1/2

GOTO DEL_2 ; 2

DECFSZ CNT1,F ; 1/2

GOTO DEL_1 ; 2

RETLW 0 ; 2

;======================================

; DELAY 1.252mS

;======================================

DELAY1252:

MOVLW.1 ; 1

Gv hướng dẫn: Trang 34 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

MOVWF CNT1 ; 1

REP_1: MOVLW.5

MOVWF CNT2 ; 1

REP_2: MOVLW.81

MOVWF CNT3 ; 1

REP_3: DECFSZ CNT3,F ; 1/2

GOTO REP_3 ; 2

DECFSZ CNT2,F ; 1/2

GOTO REP_2 ; 2

DECFSZ CNT1,F ; 1/2

GOTO REP_1 ; 2

GOTO $+1

GOTO $+1

GOTO $+1

GOTO $+1

RETURN ; 2

DELAY3500:

MOVLW.1 ; 1

MOVWF CNT1 ; 1

MOVLW.23

MOVWF CNT2 ; 1

MOVLW.50

MOVWF CNT3

DECFSZ CNT3,F ; 1/2

Gv hướng dẫn: Trang 35 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

GOTO $-1 ; 2

DECFSZ CNT2,F ; 1/2

GOTO $-5 ; 2

DECFSZ CNT1,F ; 1/2

GOTO $-9 ; 2

RETLW 0 ; 2

END

Gv hướng dẫn: Trang 36 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

N

DELAY3500

Y

MAIN

DO_CH1

CH1 RELEASE ?

GET RC5

ERROR?

N

N

Y

CMD CORRECT?

Y

Báo cáo đồ án kĩ thuật Năm học 2011-2012

5. Sơ đồ giải thuât

Gv hướng dẫn: Trang 37 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

N

0

0

1

0

IR

T0IF=0

CLR TMR0 FLG

YTMR<200

Y

N

TMR>255

GET RC5

CLR TMR 0

IR

1

1

ERROR

IR

DELAY 1252

TOGGLE,7=IR

IR1

READ

0

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 38 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

TEMP=0

TEMP=TEMP-1

READ ADDRESS

TEMP=5CLR ADDR

DELAY 1.252ms

C=IR

RLF ADDR,F

N

Y

READ CMD1

IR

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 39 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

TEMP=0

TEMP=TEMP-1

READ CMD

TEMP=6CLR CMD

DELAY 1.252ms

C=IR

RLF CMD,F

N

Y

RETURN

IR

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Gv hướng dẫn: Trang 40 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc

Báo cáo đồ án kĩ thuật Năm học 2011-2012

Phân 6:Kết quả, thử nghiệm--------------Cấp nguồn cho mạch phát và mạch thu. Lần lượt nhấn các button kiểm tra có tín hiệu phát (Led đỏ nhấp nháy) và tín hiệu thu được (Led xanh sáng/tối)

Phân 7:Kết luân--------------

Đề tài điều khiển từ xa bằng tia hồng ngoại tuy không là một đề mới mẽ, cũng không phải là một đề tài lớn nhưng qua đó thể hiện sự vận dụng kiến thức một cách khoa học, tinh thần làm việc nghiêm túc, có trách nhiệm, sự t �m ti học hỏi, nghiên cứu các kiến thức mới cùng với kĩ năng làm việc nhóm.

Dù đă cố gắng hết sức nhưng do thời gian thực hiện đồ án còn hạn chế nên đồ án chắc chắn không tránh khỏi thiếu sót. Nếu có điều kiện có thể phát triển thêm đồ án theo hướng có nhiều tính năng hơn, hiệu quả hơn, tối ưu hơn.

Trong thời gian thực hiện đồ án chúng em đă tích lũy được nhiều kinh nghiệm quí báu cho bản thân, đó cũng là nhờ sự chỉ dạy nhiệt tình của thầy HỒ TRUNG MỸ

Sau cùng chúng em xin gửi lời cảm ơn chân thành nhất đến thầyHỒ TRUNG MỸ đă giúp đỡ chúng em hoàn thành đồ án.

TP. Hồ Chí MinhTháng 7 năm 2012

Nguyễn Tấn PhátNguyễn Hồng Phúc

Tham khảo:

Gv hướng dẫn: Trang 41 Nguyễn Tấn Phát TS. Hồ Trung Mỹ Nguyễn Hồng Phúc