MỤC LỤC Trang LỜI CÁM ƠN 1 TÓM TẮT ĐỒ ÁN 2 LỜI MỞ ĐẦU 3 Chương 1 4 LÝ THUYẾT ĐIỀU KHIỂN XA 4 1.1GIỚI THIỆU VỀ HỆ THỐNG ĐIỀU KHIỂN TỪ XA 4 1.1.1Một số vấn đề cơ bản trong hệ thống điều khiển từ xa 4 1.1.2Các phương pháp mã hóa trong điều khiển từ xa 5 1.1.3Sơ đồ khối của một hệ thống điều khiển từ xa 6 1.1.4 Các phương pháp điều chế tín hiệu trong hệ thống điều khiển từ xa 7 Kết Luận : 10 1.2 ĐIỀU KHIỂN TỪ XA DÙNG TIA HỒNG NGOẠI 10 1.2.1 Khái niệm về tia hồng ngoại 10 1.2.2 Nguồn phát hồng ngoại 11 1.2.3 Linh kiện thu sóng hồng ngoại 11 1.2.4 Sơ đồ khối hệ thống điều khiển từ xa dùng hồng ngoại 11 Chương 2 15 TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 15 2.1 GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN PIC 15 2.1.1 PIC là gì? 15 2.1.2 Tại sao dùng vi điều khiển PIC 15 2.1.3 Kiến trúc PIC 16 2.1.4 RISC và CISC 17 2.1.5 PIPELINING 17 2.1.6Các dòng PIC và cách lựa chọn vi điều khiển PIC 18 2.1.7 Ngôn ngữ lập trình cho PIC 18 2.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC 16F877A 18 2.2.1Sơ đồ khối vi điều khiển PIC16F877A 20 2.2.2 Tổ chức bộ nhớ 21 2.2.3Các cổng xuất nhập của PIC16F877A 24 2.2.4TIMER 0 26 2.2.5 TIMER1 28 2.2.6 TIMER 2 29 2.2.7 ADC 30 2.2.8 COMPARATOR 32 2.2.9 Bộ tạo điện áp so sánh 34 2.2.10 CCP 35 2.2.11 Ngắt (interrupt) 39 Chương 3 41 THIẾT KẾ, THI CÔNG HỆ THỐNG ĐIỀU KHIỂN TỪ XA BẰNG SÓNG HỒNG NGOẠI 41 3.1 THIẾT BỊ THU, PHÁT VÀ RƠ LE 43 3.1.2Chuẩn giao tiếp của Remote TV Sony 45 3.1.3Thiết bị thu 47 3.1.4 Thiết bị đóng ngắt rơ le 48 3.2THIẾT KẾ MẠCH 50 3.2.1 Các khối và sơ đồ nguyên lý 50 3.2.2 Các linh kiện sử dụng trong mạch 52 3.2.3 Mạch in 53 3.2.4Mạch điều khiển và mô hình đã thi công 53 PHỤ LỤC 58
Trang 1LỜI CÁM ƠN
Em xin gửi lời cám ơn thầy Nguyễn Phúc Ngọc đã tận tình hướng dẫn và địnhhướng em trong thời gian nghiên cứu và thực hiện đề tài này Em xin chân thànhcám ơn các thầy cô giáo trong khoa Điện Tử Viễn Thông đã nhiệt tình dạy dỗ, cungcấp cho em những kiến thức nền vững chắc trong suốt 5 năm học qua
Thời gian thực hiện đồ án có hạn nên mặc dù cố gắng rất nhiều nhưng đồ ánkhông tránh khỏi những thiếu sót Kính mong các thầy cô trong khoa tận tình chỉbảo và góp ý kiến để đồ án này được hoàn thiện hơn
Em xin chân thành cám ơn
Sinh viên thực hiện
Trang 2TÓM TẮT ĐỒ ÁN
Nội dung đồ án được chia thành 3 chương chính:
Chương 1: Lý thuyết điều khiển từ xa
Chương 2: Tổng quan về vi điều khiển PIC
Chương 3: Thiết kế, thi công hệ thống điều khiển từ xa bằng sóng hồng ngoại
Hệ thống điều khiển thiết bị từ xa bằng sóng hồng ngoại thông qua việc phátsóng hồng ngoại từ remote TV Sony, nhận sóng hồng ngoại bằng mắt thu irm
56384, xử lý tín hiệu của Pic 16f877A, thiết bị ngắt rơ le để điều khiển tắt/mở cácthiết bị trong gia đình như: đèn, Tivi, quạt…
Với việc thiết kế, thi công và hoàn thiện hệ thống điều khiển từ xa bằng sónghồng ngoại thảnh công, tôi hy vọng đồ án này sẽ góp phần tiện nghi hoá cuộc sống
và tạo niềm tin cho tôi tạo dựng tương lai sự nghiệp
ABSTRACT
The content of this plan is divided into three main parts:
Part 1: Far-distance controlling theories
Part 2: Overview about programmable controller’s theory PIC
Part 3: Design and execute the far-distance controlling by Infrared radiation
The far-distance controlling system by Infrared radiation is used by radiatingInfrared from Sony remote control, receiving infrared receiver led by irm
56384, signal processing of the pic 16f877A, breaker relays to control on / offhousehold appliances such as lights, TV, fan
Through designing, executing and completing this Far-distance controllingsystem successfully, I hope that this plan will help our lives conveniently and build
up my own career in the future
Trang 3LỜI MỞ ĐẦU
Do yêu cầu về lĩnh vực tự động hóa trong sinh hoạt ngay càng cao Các thiết
bị sinh hoạt ngày càng hiện đại, do đó việc điều khiển từ xa ngày càng trở nên cầnthiết và là một yêu cầu không thể thiếu trong xã hội hiện nay
Đ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 cần thiết đến trực tiếp nơi đặt hệ thống Khoẳng cách đó tùythuộ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 lại, để điềukhiển một trò chơi điện tử từ xa ta chỉ cần một hệ thống phát và thu đơn giản côngsuất nhỏ…Những đối tượng được điều khiển có thể ở trên không trung, ở dưới đáybiển hay ở một vùng xa xôi nào đó
Thế giới càng phát triển thì lĩnh vực điều khiển cần đượ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 xãhội loài người, thông tin được cập nhập hơn nhờ sự chính xác và nhanh chóng củaquá trình điều khiển 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, phức tạp và nguyhiểm, nhưng giờ đây con người có thể ở một nơi an toàn cũng có thể đo được độphóng xạ của lò phản ứng hạt nhân Như vậy, hệ thống 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 toàn cho con người.Trong sinh hoạt 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 các thiết bị gần gũi với con người cũng được cảitiến cho phù hợp với việc sử dụng và đạt mức tiện lợi nhất có thể được Điều khiển
từ xa đã xâm nhập vào lĩnh vực này và cho ra những Tivi, đầu máy Video… Đếncác thiết bị như quạt máy, điều hòa… Xuất phát từ những ý tưởng đó và nhu cầucuộc sống nên em đã chọn đề tài “thiết kế hệ thống điều khiển từ xa bằng sóng hồngngoại”
Trang 4Chương 1
LÝ THUYẾT ĐIỀU KHIỂN XA 1.1 GIỚI THIỆU VỀ HỆ THỐNG ĐIỀU KHIỂN TỪ XA
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 sóng vô tuyến, hệ thốngđiều khiển bằng hồng ngoại, hệ thống điều khiển xa bằng cáp quang dây dẫn… Ởđây, trong khuôn khổ đề tài được giao ta chỉ nói đến hệ thống điều khiển xa bằnghồng ngoại
- Thiết bị phát: biến đổi lệnh điều khiển thành 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
Hình 1.1: Sơ đồ kết cấu 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
- 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.[3]
1.1.1 Một số vấn đề cơ bản trong hệ thống điều khiển từ xa
Trang 5Do hệ thống điều khiển từ xa có những đường truyền dẫn xa nên ta cầnphải nghiên cứu về kết cấu của hệ thống để đảm bảo tín hiệu được truyền đi chínhxác và nhanh chóng theo những yêu cầu sau:
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ấtnhiề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ác biến lượng điều khiển và lượng điều khiển thành từng loạixung 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
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ểncực đại đồng thời đảm bảo độ chính xác trong phạm vi cho phép.[3]
1.1.2 Các phương pháp mã hóa trong điều khiển từ xa
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 đổithà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áythu, 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ó
2 phần tử [0] và [1]
Trang 6Do 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 lại nhiễu ta dùng loại mã tín hiệu và sữa sai
Mã phát tín hiệu 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 của 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 loại:
- 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ênquan 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ácsuất mắc sai nhầm trong kênh truyền
Hiện nay lý thiết mã hóa phát triển rất nhanh, nhiều loại mã phát hiện và sữasai được nghiên cứu như: mã Hamming, mã chu kỳ, mã nhiều cấp
1.1.3 Sơ đồ khối của một hệ thống điều khiển từ xa
Sau đây là sơ đồ khối cơ bản của một hệ thống điều khiển từ xa
Hình 1.2: Sơ đồ khối máy phát
Hình 1.3: Sơ đồ khối máy thu
Tín hiệu
điều khiển
Tín hiệusóng mang
Khuyếch
Trang 71.1.4 Các phương pháp điều chế tín hiệu trong hệ thống điều khiển từ xa
Trong kỹ thuật điều khiển từ xa, tín hiệu gốc không thể truyền đi xa được Do
đó, để thực hiện việc truyền tín hiệu điều khiển từ máy phát đến máy thu ta cần phảiđiều chế (mã hóa) tín hiệu
Có nhiều phương pháp điều chế tín hiệu Tuy nhiên điều chế tín hiệu dạngxung có nhiều ưu điểm hơn Vì ở đây chúng ta sử dụng linh kiện kỹ thuật số nênlinh kiện gọn nhẹ, công suất tiêu tán nhỏ và có tính chống nhiễu cao
Các phương pháp điều chế tín hiệu ở dạng xung như:
- Điều chế biên độ xung (PAM)
- Điều chế độ rộng xung (PWM)
- Điều chế vị trí xung (PPM)
- Điều chế mã xung (PCM)
Hình 1.4 : Các dạng xung
Trang 8 Điều chế biên độ xung (PAM)
Sơ đồ khối
Hình 1.5: Hệ thống điều chế PAM
Điều chế biên độ xung là dạng điều chế đơn giản nhất trong các dạng điều chếxung Biên độ của mỗi xung được tạo ra tỉ lệ với biên độ tức thời của tín hiệu điềuchế
Xung lớn nhất biểu thị cho biên độ dương của tín hiệu mẫu lớn nhất
Giải thích sơ đồ khối
-Khối tín hiệu điều chế : Tạo ra tín hiệu điều chế đưa vào khối dao động đa hài-Dao động đa hài một trạng thái bền :Trộn xung với tín hiệu điều chế
-Bộ phát xung : Phát xung với tần số không đổi để thực hiện việc điều chế tínhiệu đã được điều chế có biên độ tăng giảm thay đổi theo tín hiệu điều chế
Điều chế độ rộng xung (PWM)
Phương pháp điều chế này sẽ tạo ra các xung có biên độ không đổi, nhưng bềrộng của mỗi xung sẽ thay đổi tương ứng với biên độ tức thời của tín hiệu điều chế.Trong cách điều chế này, xung có độ rộng lớn nhất biểu thị phần biên độ dương lớnnhất của tín hiệu điều chế, xung có độ rộng hẹp nhất biểu thị phần biên độ âm nhấtcủa tín hiệu điều chế
Trong điều chế độ rộng xung, tín hiệu cần được lấy mẫu phải được chuyển đổithành dạng xung có độ rộng xung tỉ lệ với biên độ tín hiệu lấy mẫu Để thực hiệnđiều chế độ rộng xung, ta có thể thực hiện theo sơ đồ khối sau:
Bộ phát hàm RAMP
So sánh
Trang 9Trong sơ đồ khối, tín hiệu điều chế được đưa đến khối so sánh điện áp cùngvới tín hiệu phát ra từ bộ phát hàm RAMP.
Điều chế vị trí xung (PPM)
Với phương pháp điều chế vị trí xung thì các xung được điều chế có biên độ
và độ rộng xung không thay đổi theo biên độ của tín hiệu điều chế
Hình thức đơn giản của điều chế vị trí xung là quá trình điều chế độ rộngxung Điều chế vị trí xung có ưu điểm là sử dụng ít năng lượng hơn điều chế độrộng xung nhưng có nhược điểm là quá trình giải điều biến ở máy thu phức tạp hơncác dạng điều chế khác
Chỉ có thể biểu thị trên 16 biên độ khác nhau của biên độ tín hiệu (mã 4 bít) vìvậy nó không được chính xác Độ chính xác có thể được cải thiện bằng cách tăng sốbít Mỗi mã n bít có thể biểu thị được 2n mức riêng biệt của tín hiệu
Trong phương pháp điều chế mã xung, tần số được quyết định bởi tín hiệu caonhất trong quá trình xử lý Điều này cho thấy rằng nếu như mẫu thử được lấy ở mứclớn hơn hai lần tần số tín hiệu thì tần số tín hiệu mẫu được phục hồi
Tuy nhiên trong thực tế thường lấy tín hiệu ở mức độ nhỏ nhất khoảng 10 lần
so với tín hiệu lớn nhất Vì vậy tần số càng cao thì thời gian lấy mẫu càng nhỏ (mứclấy mẫu càng nhiều) dẫn đến linh kiện chuyển mạch có tốc độ xử lý cao Ngược lạinếu sử dụng tần số lấy mẫu thấp thời gian lấy mẫu càng rộng,nhưng độ chính xáckhông cao Thông thường người ta chỉ sử dụng khoảng 10 lần tín hiệu nhỏ nhất
Trang 10Kết Luận :
Điểm thuận lợi của các phương pháp điều biến xung là mặc dù tín hiệu AM rấtyếu, chúng hầu như mất hẳn trong nhiễu ồn xung quanh Nếu phương pháp điều chếPPM, PWM, PCM là tín hiệu điều chế bằng cách tách ra khỏi tiếng ồn Với phươngpháp như vậy, điều chế mã xung PCM sẽ cho kết quả tốt nhất,vì nó chỉ cần quyếtđịnh xung nào hiện diện, xung nào không hiện diện
Các phương pháp điều chế xung như PWM, PPM, PAM phần nào cũng theokiểu tương tự Vì các dạng xung ra sau khi điều chế có sự thay đổi về biên độ, độrộng xung, vị trí xung theo tín hiệu lấy mẫu Đối với phương pháp biến đổi mã xungPCM thì dạng xung ra là dạng nhị phân chỉ có 2 mức [0] và [1]
Để mã hóa tín hiệu tương tự sang tín hiệu số, người ta chia trục thời gian ranhững khoảng bằng nhau và biên độ trục ra 2n khảng cho 1 bít Nếu số mức càngnhiều thì thời gian càng nhỏ, độ chính xác càng cao Tại mỗi thời điểm lấy mẫu biên
độ được đo, rồi lấy mức tương ứng với biên độ và chuyển đổi mã nhị phân Kết quả
ở ngỏ ra thu được một chuổi xung (dạng nhị phân) [1]
1.2 ĐIỀU KHIỂN TỪ XA DÙNG TIA HỒNG NGOẠI
1.2.1 Khái niệm về tia hồng ngoại
Hình 1.7: Dạng sóng hồng ngoại
Ánh sáng hồng ngoại (tia hồng ngoại) là ánh sáng không thể nhìn thấy đượcbằng mắt thường, có bước sóng khoảng 0,8µm đến 0,9µm tia hồng ngoại có vận tốctruyền bằng vận tốc ánh sáng Tuy nhiên như chúng ta biết mặc dù không nhìn thấytần số âm thanh nhưng chúng ta biết rằng nó tồn tại và có thể nhận biết được chúng
từ sự cảm ứng nhiệt trên da Khi bạn đưa tay đến gần ngọn lửa hoặc nhưng vậtnóng, bạn có thể cảm thấy nhiệt mặc dù bạn không nhìn thấy Bạn nhìn thấy ngọnlửa là 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
Trang 11Tia hồng ngoại có thể truyền đi được nhiều kênh tín hiệu Nó ứng dụng rộngrãi trong công nghiệp Lượng thông tin có thể đạt được 3Mbit/s Trong kỹ thuậttruyền tin bằng sợi quang dẫn không cần các trạm khuyết đại giữa chừng, người ta
có thể truyền một lúc 15000 điện thoại hay 12 kênh truyền hình qua một sợi tơquang học có đường kính 0,13mm với khoảng cách 10 – 20km Lượng thông tinđược truyền đi với ánh sáng hồng ngoại lớn gấp nhiều lần so với sóng điện từ màngười ta vẫn dùng
Tia hồng ngoại dễ bị hấp thụ, khả năng xuyên thấu kém Trong điều khiển từ
xa chùm tia hồng ngoại phát đi hẹp, có hướng do đó khi thu phải đúng hướng
1.2.2 Nguồn phát hồng ngoại
Các nguồn sáng nhân tạo thường chứa nhiều ánh sáng hồng ngoại Sóng hồngngoại có đặc tính quang học giống như ánh sáng (sự hội tụ qua thấu kính, tiêucự…) Ánh sáng và sóng hồng ngoại khác nhau rất rõ trong sự xuyên suốt qua vậtchất Có những vật mắt ta thấy “phản chiếu sáng” nhưng đối với hồng ngoại thì nó
là những vật “phản chiếu tối” Có những vật ta thấy nó dưới một màu xám đụcnhưng với ánh sáng hồng ngoại nó trở nên trong suốt Điều này giải thích vì saoLED hồng ngoại cho hiệu suất cao hơn so với LED cho màu xanh lá cây hay màuđỏ… Vì rằng, vật liệu bán dẫn “trong suốt” đối với ánh sáng hồng ngoại, tia hồngngoại không bị yếu đi khi nó phải vượt qua các lớp bán dẫn để đi ra ngoài Đời sốngcủa LED hồng ngoại dài đến 100.000 giờ (hơn 11 năm), LED hồng ngoại khôngphát sáng cho lợi điểm trong các thiết bị kiểm soát vì không gây sự chú ý
1.2.3 Linh kiện thu sóng hồng ngoại
Người ta có thể dùng quang điện trở, phototransistor, photodiode để thu sónghồng ngoại gần Để thu sóng hồng ngoại trung bình và xa phát ra từ cơ thể conngười, vật nóng… Loại detector với vật liệu Lithiumtitanat hay tấm chất dẻoPolyviny-Lidendifuorid (PVDF) Cơ thể con người phát ra tia hồng ngoại với độ dàisóng từ 8ms-10ms
1.2.4 Sơ đồ khối hệ thống điều khiển từ xa dùng hồng ngoại
Hệ thống phát
Trang 12Hình 1.8: Sơ đồ khối hệ thống phát.
Giải thích sơ đồ khối máy phát: Máy phát có nhiệm vụ tạo ra lệnh điều khiển,
mã hóa và phát tín hiệu đến máy thu, lệnh truyền đi đã được điều chế
*Khối phát lệnh điều khiển: Khối này có nhiệm vụ tạo ra lệnh điều khiển từ
nút bấm (phím điều khiển) Khi một phím được ấn tức là một lệnh đã được tạo ra.Các nút ấn này có thể là một phím bấm, hay một ma trận phím bấm Lệnh điềukhiển được đưa đến bộ mã hóa dưới dạng các bit nhị phân tương ứng với từng phímđiều khiển
* Khối mã hóa: Để truyền các tín hiệu khác nhau đến máy thu mà chúng
không lẫn lộn nhau, ta phải tiến hành mã hóa các tín hiệu (lệnh điều khiển) Khối
mã hóa này có nhiệm vụ biến đổi các lệnh điều khiển thành các bit nhị phân, hiệntượng biến đổi này gọi là mã hóa Có nhiều phương pháp mã hóa khác nhau:
- Điều chế biên độ xung
* Khối dao động sóng mang: Khối này có nhiệm vụ tạo ra sóng mang tần số
ổn định, sóng mang này sẽ mang tín hiệu điều khiển khi truyền ra môi trường
* Khối điều chế: Khối này có nhiệm vụ kết hợp tín hiệu điều khiển đã mã hóa
sóng mang để đưa đến khối khuếch đại
Phát lệnh
Dao động tạo sóng mang
Trang 13* Khối khuếch đại: Khuếch đại tín hiệu đủ lớn để LED phát hồng ngoại phát
tín hiệu ra môi trường
* Khối LED phát: Biến đổi tín hiệu điện thành tín hiệu hồng ngoại phát ra môi
trường
Hệ thống thu
Hình 1.9: Sơ đồ khối hệ thống thu
Giải thích sơ đồ khối máy thu: Chức năng của khối máy thu là thu được tínhiệu điều khiển từ máy phát, loại bỏ sóng mang, giải mã tín hiệu điều khiển thànhcác lệnh riêng biệt, từ đó mỗi lệnh sẽ đưa đến khối chấp hành cụ thể
* LED thu: thu tín hiệu hồng ngoại do máy phát truyền tới và biến đổi thành
tín hiệu điều khiển
* Khối khuếch đại: Có nhiệm vụ khuyết đại tín hiệu điều khiển lớn lên từ LED
thu hồng ngoại để việc xử lý được dễ dàng
* Khối tách sóng mang: Khối này có chức năng triệt tiêu sóng mang, chỉ giữ
lại tín hiệu điều khiển như tín hiệu gửi đi từ máy phát
* Khối giải mã: Khối này có nhiệm vụ giải mã tín hiệu điều khiển thành các
lệnh điều khiển dưới dạng các bit nhị phân hay các dạng khác để đưa đến khối chấphành cụ thể Do đó nhiệm vụ của khối này là rất quan trọng
* Khối chốt: Khối này có nhiệm vụ giữ nguyên trạng thái tác động khi tín hiệu
điều khiển không còn, điều này có nghĩa là khi phát lệnh điều khiển ta chỉ tác độngvào phím bấm 1 lần, trạng thái mạch chỉ thay đổi khi tác động vào nút thực hiệnđiều khiển lệnh khác
Khuếch
KhuếchđạiMạch chấp
hành
Trang 14* Khối khuếch đại: Khuếch đại tín hiệu điều khiển đủ lớn để tác động được
vào mạch chấp hành
* Khối chấp hành: Có thể là rơle hay một linh kiện nào đó, đây là khối cuối
cùng tác động trực tiếp vào thiết bị thực hiện nhiệm vụ điều khiển mong muốn.[2]
Trang 15Chương 2
TỔNG QUAN VỀ VI ĐIỀU KHIỂN PIC 2.1 GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN PIC
2.1.1 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ềukhiể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
2.1.2 Tại sao dùng vi điều khiển PIC
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola68HC, AVR, ARM, Ngoài họ 8051 được hướng dẫn một cách căn bản ở môitrườ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ốnkiế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 thức cũng như về ứng dụng cho họ vi điềukhiể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ũngnhư 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ạonhiề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ượngtà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ạpchương trình từ đơn giản đến phức tạp,…
Trang 16Cá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ôngngừng được phát triển.
2.1.3 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ếntrúc: Von Neuman và kiến trúc Havard
Hình 2.1: Kiến trúc Havard và kiến trúc Von-Neuman
Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard Điểm khácbiệ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ộtcá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ềukhiể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ànhhai bộ nhớ riêng biệt Do đó trong cùng một thời điểm CPU có thể tương 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 ưutù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ữ
CPUCPU
Trang 17liệu được tổ chức thành từng byte), còn đối với kiến trúc Von-Neuman, độ dài lệnhluôn là bội số của 1 byte (do dữ liệu được tổ chức thành từng byte)
2.1.4 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ếntrú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ủamộ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, buschương trình và bus dữ liệu, CPU có thể cùng một lúc truy xuất cả bộ nhớ chươngtrì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 Đồngthờ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ảitiế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 chochiề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 nhả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ềukhiển RISC (Reduced Instruction Set Computer) hay vi điều khiển có tập lệnh rútgọn Vi điều khiểnđược thiết kế theo kiến trúc Von-Neuman còn được gọi là vi điềukhiển CISC (Complex Instruction Set Computer) hay vi điều khiển có tập lệnh phứctạ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 (1byte)
2.1.5 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
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 đượctrì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
Trang 18các lệnh mà quá trình thực thi nó làm thay đổi giá trị thanh ghi PC (ProgramCounter) cần hai chu kì lệ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ỗilệnh chỉ cần một chu kì lệnh để thực thi xong.
2.1.6 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êmchữ 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ảnxuất
2.1.7 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ậptrì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,…
2.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC 16F877A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài
Trang 1914 bit.
Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối
đa cho phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng256x8 byte Số PORT I/O là 5 với 33 pin I/O
Hình 2.2: Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
- Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Trang 20- Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếmdựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
- Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
- Hai bộ Capture/so sánh/điều chế độ rông xung
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
- Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, CS ở bên ngoài
Các đặc tính Analog:
- 8 kênh chuyển đổi ADC 10 bit
- Hai bộ so sánh
- Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm
- Nạp được chương trình ngay trên mạch điện ICSP (In Circuit SerialProgramming) thông qua 2 chân
- Watchdog Timer với bộ dao động trong
- Chức năng bảo mật mã chương trình
- Chế độ Sleep Có thể hoạt động với nhiều dạng Oscillator khác nhau
2.2.1 Sơ đồ khối vi điều khiển PIC16F877A
Trang 21Hình 2.3: Sơ đồ khối vi điều khiển PIC16F877A
2.2.2 Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình(Program memory) và bộ nhớ dữ liệu (Data Memory)
Bộ nhớ chương trình
Trang 22Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dunglượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page 0đến page 3) Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit) Để mã hóa đượcđịa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13bit (PC<12:0>)
Khi vi điều khiển được reset, bộ đếmtrình sẽ chỉ đến địa chỉ 0000h (Resetvector)
Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉđến địa chỉ 0004h (Interruptvector) Bộ nhớ chương trình không bao gồm bộ nhớ stack và được địa chỉ hóa bởi
Trang 23byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (Special Function Register )nằm ở vùng địa chỉ thấp và các thanh ghi mục đích chung GPR ( General PurposeRegister ) nằm ở vùng địa chỉ còn lại trong bank Các thanh ghi SFR thường xuyênđược sử dụng ( ví dụ như thanh ghi STATUS ) sẽ được đặt ở tất cả các bank của bộnhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh củachương trình Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau :
Hình 2.5 : Sơ đồ bộ nhớ dữ liệu PIC16F877A
Trang 242.2.3 Các cổng xuất nhập của PIC16F877A
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng đểtương tác với thế giới bên ngoài Sự tương tác này rất đa dạng và thông qua quátrình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theocách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượngchân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích hợpsẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuấtnhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thểhiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài Chứcnăng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điềukhiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB,PORTC, PORTD và PORTE Cấu trúc và chức năng của từng cổng xuất nhập sẽđược đề cập cụ thể trong phần sau
PORTA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều” (bidirectionalpin), nghĩa là có thể xuất và nhập được Chức năng I/O này được điều khiển bởithanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năng của một chân trongPORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghiTRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA là output,
ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA Thao tácnày hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứngTRIS (đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTC làTRISC, đối với PORTD là TRISD vàđối với PORTE là TRISE) Bên cạnh đóPORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clockcủa Timer0 và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port) Các thanh ghi SFR liên quan đến PORTA bao gồm :
PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA
Trang 25TRISA (địa chỉ 85h) : điều khiển xuất nhập
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện
PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISB.Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạpchương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quanđến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năng điện trở kéolên được điều khiển bởi chương trình.Các thanh ghi SFR liên quan đến PORTB baogồm:
PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0
PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng
là TRISC.Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộTimer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART
Các thanh ghi điều khiển liên quan đến PORTC:
PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
TRISC (địa chỉ 87h) : điều khiển xuất nhập
PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tươngứng là TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn làcác chân điều khiển của chuẩn giao tiếp PSP
Các thanh ghi liên quan đến PORTE bao gồm:
PORTE : chứa giá trị các chân trong PORTE
Trang 26TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếpPSP.
ADCON1 : thanh ghi điều khiển khối ADC
2.2.4 TIMER 0
Đây là một trong ba bộ đếm hoặc bộ định thời của vi điều khiển PIC16F877A.Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit Cấu trúccủa Timer0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xungclock Ngắt Timer0 sẽ xuất hiện khi Timer0 bị tràn Bit TMR0IE (INTCON<5>) làbit điều khiển của Timer0.TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IF= 0không cho phép ngắt Timer0 tác động Sơ đồ khối của Timer0 như sau:
Hình 2.6 : Sơ đồ khối của Timer0
Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC(OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xungđồng hồ (tần số vào Timer0 bằng ¼tần số oscillator) Khi giá trị thanh ghi TMR0 từFFh trở về 00h, ngắt Timer0 sẽ xuất hiện.Thanh ghi TMR0 cho phép ghi và xóađược giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cách linh động
Trang 27Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC(OPTION_REG<5>) Khi đó xung tác động lên bộ đếm được lấy từ chânRA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép lựa chọn cạnh tác động vàobột đếm Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnhxuống nếu TOSE=1.
Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set Đâychính là cờ ngắt của Timer0 Cờ ngắt này phải được xóa bằng chương trình trướckhi bộ đếm
bắt đầu thực hiện lại quá trình đếm Ngắt Timer0 không thể “đánh thức” viđiều khiển từ chế độ sleep
Bộ chia tần số (prescaler) được chia sẻ giữa Timer0 và WDT (WatchdogTimer) Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽkhông có được hỗ trợ của prescaler và ngược lại Prescaler được điều khiển bởithanh ghi OPTION_REG Bit PSA (OPTION_REG<3>) xác định đối tượng tácđộng của prescaler Các bit PS2:PS0 (OPTION_REG<2:0>) xác định tỉ số chia tần
số của prescaler Xem lại thanh ghi OPTION_REG để xác định lại một cách chi tiết
về các bit điều khiển trên
Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động củaprescaler Khi đối tượng tác động là Timer0, tác động lên giá trị thanh ghi TMR0 sẽxóa prescaler nhưng không làm thay đổi đối tượng tác động của prescaler Khi đốitượng tác động là WDT,lệnh CLRWDT sẽ xóa prescaler, đồng thời prescaler sẽngưng tác vụ hỗ trợ cho WDT
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0
INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE vàPEIE)
OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler
2.2.5 TIMER1
Trang 28Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanhghi (TMR1H:TMR1L) Cờ ngắt của Timer1 là bit TMR1IF (PIR1<0>) Bit điềukhiển của
Timer1 sẽ là TMR1IE (PIE<0>)
Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ định thời(timer) với xung kích là xung clock của oscillator (tần số của timer bằng ¼ tần sốcủa oscillator) và chế độ đếm (counter) với xung kích là xung phản ánh các sự kiệncần đếm lấy từ bên ngoài hông qua chân RC0/T1OSO/T1CKI (cạnh tác động làcạnh lên) Việc lựa chọn xung tác động (tương ứng với việc lựa chọn chế độ hoạtđộng là timer hay counter) được điều khiển bởi TMR1CS (T1CON<1>) Sau đây là
sơ đồ khối của Timer1:
Ngoài ra Timer1 còn có chức năng reset input bên trong được điều khiển bởimột trong hai khối CCP (Capture/Compare/PWM) Khi bit T1OSCEN(T1CON<3>) được set, Timer1 sẽ lấy xung clock từ hai chân RC1/T1OSI/CCP2 vàRC0/T1OSO/T1CKI làm xung đếm Timer1 sẽ bắt đầu đếm sau cạnh xuống đầutiên của xung ngõ vào Khi đó PORTC sẽ bỏ qua sự tác động của hai bitTRISC<1:0> và PORTC<2:1> được gán giá trị 0 Khi clear bit T1OSCEN Timer1
sẽ lấy xung đếm từ oscillator hoặc từ chân RC0/T1OSO/T1CKI
Hình 2.7 : Sơ đồ khối của Timer1
Trang 29Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần số prescaler vàpostscaler Thanh ghi chứa giá trị đếm của Timer2 là TMR2 Bit cho phép ngắtTimer2 tác động là TMR2ON (T2CON<2>) Cờ ngắt của Timer2 là bit TMR2IF(PIR1<1>) Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chiatần số prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và được điềukhiển bởi các bit T2CKPS1:T2CKPS0(T2CON<1:0>))
Hình 2.8 : Sơ đồ khối Timer2
Timer2 còn được hỗ trợ bởi thanh ghi PR2 Giá trị đếm trong thanh ghi TMR2
sẽ tăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h Kh Ireset thanh ghi PR2 được nhận giá trị mặc định FFh
Ngõ ra của Timer2 được đưa qua bộ chia tần số postscaler với các mức chia từ1:1 đến 1:16 Postscaler được điều khiển bởi 4 bit T2OUTPS3:T2OUTPS0 Ngõ racủa postscaler đóng vai trò quyết định trong việc điều khiển cờ ngắt
Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP, do đó Timer2 cònđóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP
Các thanh ghi liên quan đến Timer2 bao gồm:
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt (GIE
và PEIE)
- PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF)
- PIE1 (địa chị 8Ch): chứa bit điều khiển Timer2 (TMR2IE)
Trang 30- TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2.
- T2CON (địa chỉ 12h): xác lập các thông số cho Timer2
- PR2 (địa chỉ 92h): thanh ghi hỗ trợ cho Timer2
Ta có một vài nhận xét về Timer0, Timer1 và Timer2 như sau:
Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đa là FFh), trong khi Timer1
là bộ đếm 16 bit (giá trị đếm tối đa là FFFFh) Timer0, Timer1 và Timer2 đều có haichế độ hoạt động là timer và counter Xung clock có tần số bằng ¼ tần số củaoscillator Xung tác động lên Timer0 được hỗ trợ bởi prescaler và có thể được thiếtlập ở nhiều chế độ khác nhau (tần số tác động, cạnh tác động) trong khi các thông
số của xung tác động lên Timer1 là cố định Timer2 được hỗ trợ bởi hai bộ chia tần
số prescaler và postcaler độc lập, tuy nhiên cạnh tác động vẫn được cố định là cạnhlên Timer1 có quan hệ với khối CCP, trong khi Timer2 được kết nối với khối SSP
2.2.7 ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạngtương tự và số PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0) Hiệuđiện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thể chuẩnđược xác lập trên hai chân RA2 và RA3 Kết quả chuyển đổi từ tín tiệu tương tựsang tín hiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghiADRESH:ADRESL Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này cóthể được sử dụng như các thanh ghi thông thường khác Khi quá trình chuyển đổihoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit(ADCON0<2>) được xóa về 0 và cờ ngắt ADIF được set.Qui trình chuyển đổi từtương tự sang số bao gồm các bước sau:
1 Thiết lập các thông số cho bộ chuyển đổi ADC:
* Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của thanhghi ADCON1)
* Chọn kênh chuyển đổi AD (thanh ghi ADCON0)
* Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0)
Trang 31* Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0).
2 Thiết lập các cờ ngắt cho bộ AD
* Clear bit ADIF
* Set bit ADIE
* Set bit PEIE
* Set bit GIE
3 Đợi cho tới khi quá trình lấy mẫu hoàn tất
4 Bắt đầu quá trình chuyển đổi (set bit )
5 Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
Kiểm tra bit Nếu =0, quá trình chuyển đổi đã hoàn tất
Trang 32Cần chú ý là có hai cách lưu kết quả chuyển đổi AD, việc lựa chọn cách lưuđược điều khiển bởi bit ADFM và được minh họa cụ thể trong hình sau:
Hình 2.10: Các cách lưu kết quả chuyển đổi AD
Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm: INTCON (địa chỉ0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE, PEIE) PIR1 (địa chỉ 0Ch):chứa cờ ngắt AD (bit ADIF) PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE).ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quảchuyển đổi AD ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập cácthông số cho bộ chuyển đổi AD PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liênquan đến các ngõ vào analog ở PORTA
PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vàoanalog ở PORTE
2.2.8 COMPARATOR
Bộ so sánh bao gồm hai bộ so so sánh tín hiệu analog và được đặt ở PORTA.Ngõ vào bộ so sánh là các chân RA3:RA0, ngõ ra là hai chân RA4 và RA5 Thanhghi điều khiển bộ so sánh là CMCON Các bit CM2:CM0 trong thanh ghi CMCONđóng vai trò chọn lựa các chế độ hoạt động cho bộ comparator Cơ chế hoạt độngcủa bộ Comparator như sau:
Tín hiệu analog ở chân VIN + sẽ được só sánh với điện áp chuẩn ở chân
VIN-và tín hiệu ở ngõ ra bộ so sánh sẽ thay đổi tương ứng như hình vẽ Khi điện áp ởchân VIN+ lớn hơnđiện áp ở chân VIN+ ngõ ra sẽ ở mức 1 và ngược lại
Dựa vào hình vẽ ta thấy đáp ứng tại ngõ ra không phải là tức thời so với thay