DANH MỤC CÁC HÌNH VẼ 8 MỞ ĐẦU 9 1. Lý do lựa chọn đề tài. 9 2. Mục tiêu nghiên cứu 9 3. Nội dung nghiên cứu 9 4. Phạm vi nghiên cứu 9 5. Đối tượng nghiên cứu. 9 6. Phương pháp nghiên cứu 10 6.1. Nghiên cứu tài liệu 10 6.2. Phương pháp thực nghiệm. 10 6.3. Phương pháp hội thảo. 10 7. Cấu trúc của đề tài. 10 CHƯƠNG I: TỔNG QUAN 11 1.1. Nhu cầu sử dụng thiết bị tự động trong doanh nghiệp. 11 1.2. Nhu cầu sử dụng thiết bị tự động trong đào tạo 11 1.4. Tổng quan về vi điều khiển PIC 12 1.4.1 PIC là gì? 12 1.4.2 Kiến trúc của PIC 12 1.4.3 RISC Và CISC 13 1.4.4 PIPELINING 13 1.4.5 Các dòng PIC và lựa chọn vi điều khiển PIC 14 1.4.6 Ngôn ngữ lập trình cho PIC 15 1.4.7 Mạch nạp cho PIC 15 1.5. Vi điều khiển PIC16F874A 17 1.5.1. Các dạng sơ đồ chân 17 1.5.2. Sơ đồ khối và chức năng các khối 18 1.5.3. Sơ đồ chân và chức năng các chân 19 1.5.4. Đặc điểm của vi điều khiển PIC16F877A 20 1.5.5 Tổ chức bộ nhớ 22 1.5.5.1. Bộ nhớ chương trình 22 1.5.6. Các cổng xuất nhập khầu của PIC16F877A 26 1.5.7. Tập lệnh của vi điều khiển PIC 28 1.6. Module SIM900 33 1.6.1. Cấu trúc Module SIM900. 33 1.6.2. Tập lệnh AT của Module SIM900 34 1.7. Cảm biến PIR 40 1.7.1. Giới thiệu 40 1.7.2. Cấu trúc cảm biến PIR 40 1.7.3. Nguyên lý hoạt động của cảm biến PIR 42 1.8. Cảm biến báo khói 43 1.8.1. Cấu tạo cảm biến báo khói 43 1.7.2. Nguyên lý hoạt động của cảm biến báo khói 45 1.7.3. Thông số của các loại cảm biến báo khói 47 CHƯƠNG II: THIẾT KẾ HỆ THỐNG BÁO CHÁY, CHỐNG TRỘM 51 2.1. Sơ đồ khối hệ thống 51 2.1.1. Chức năng các khối 51 2.1.2. Nguyên lý sơ đồ khối 52 2.2. Sơ đồ nguyên lý hệ thống 52 2.2.1. Chức năng các mạch điện 52 2.2.2. Nguyên lý hoạt động mạch điện hệ thống 57 2.3. Mạch điện thực tế 58 2.4. Lưu đồ thuật toán điều khiển 58 2.5. Giao diện điều khiển 59 2.6. Giới thiệu module Sim900 59 2.6.1. Các thuật ngữ. 59 2.6.2. Chế độ nghỉ (sleep mode) 59 2.6.3. Chuyển từ chế độ nghỉ sang chế độ hoạt động bình thường. 60 2.6.4. Khởi tạo cấu hình mặc định cho modem. 60 2.6.5. Khởi tạo module SIM900 61 2.6.6. Thực hiện cuộc gọi. 61 2.6.7. Nhận cuộc gọi đến. 62 2.6 8. Đọc tin nhắn. 63 2.6.9. Gửi tin nhắn. 63 CHƯƠNG III: THỰC NGHIỆM VÀ KẾT LUẬN 65 3.1. Thực nghiệm 65 3.2. Kết luận 65 3.2.1. Những kết quả đạt được 65 3.2.2. Hạn chế của đề tài 66 3.2.3. Hướng phát triển của đề tài 66 TÀI LIỆU THAM KHẢO 67 PHỤ LỤC 68
Trang 1MỤC LỤC
DANH MỤC CÁC HÌNH VẼ 8
MỞ ĐẦU 9
1 Lý do lựa chọn đề tài 9
2 Mục tiêu nghiên cứu 9
3 Nội dung nghiên cứu 9
4 Phạm vi nghiên cứu 9
5 Đối tượng nghiên cứu 9
6 Phương pháp nghiên cứu 10
6.1 Nghiên cứu tài liệu 10
6.2 Phương pháp thực nghiệm 10
6.3 Phương pháp hội thảo 10
7 Cấu trúc của đề tài 10
CHƯƠNG I: TỔNG QUAN 11
1.1 Nhu cầu sử dụng thiết bị tự động trong doanh nghiệp 11
1.2 Nhu cầu sử dụng thiết bị tự động trong đào tạo 11
1.4 Tổng quan về vi điều khiển PIC 12
1.4.1 PIC là gì? 12
1.4.2 Kiến trúc của PIC 12
1.4.3 RISC Và CISC 13
1.4.4 PIPELINING 13
1.4.5 Các dòng PIC và lựa chọn vi điều khiển PIC 14
1.4.6 Ngôn ngữ lập trình cho PIC 15
1.4.7 Mạch nạp cho PIC 15
1.5 Vi điều khiển PIC16F874A 17
1.5.1 Các dạng sơ đồ chân 17
1.5.2 Sơ đồ khối và chức năng các khối 18
1.5.3 Sơ đồ chân và chức năng các chân 19
1.5.4 Đặc điểm của vi điều khiển PIC16F877A 20
1.5.5 Tổ chức bộ nhớ 22
1.5.5.1 Bộ nhớ chương trình 22
1.5.6 Các cổng xuất nhập khầu của PIC16F877A 26
Trang 21.6.1 Cấu trúc Module SIM900 33
1.6.2 Tập lệnh AT của Module SIM900 34
1.7 Cảm biến PIR 40
1.7.1 Giới thiệu 40
1.7.2 Cấu trúc cảm biến PIR 40
1.7.3 Nguyên lý hoạt động của cảm biến PIR 42
1.8 Cảm biến báo khói 43
1.8.1 Cấu tạo cảm biến báo khói 43
1.7.2 Nguyên lý hoạt động của cảm biến báo khói 45
1.7.3 Thông số của các loại cảm biến báo khói 47
CHƯƠNG II: THIẾT KẾ HỆ THỐNG BÁO CHÁY, CHỐNG TRỘM 51
2.1 Sơ đồ khối hệ thống 51
2.1.1 Chức năng các khối 51
2.1.2 Nguyên lý sơ đồ khối 52
2.2 Sơ đồ nguyên lý hệ thống 52
2.2.1 Chức năng các mạch điện 52
2.2.2 Nguyên lý hoạt động mạch điện hệ thống 57
2.3 Mạch điện thực tế 58
2.4 Lưu đồ thuật toán điều khiển 58
2.5 Giao diện điều khiển 59
2.6 Giới thiệu module Sim900 59
2.6.1 Các thuật ngữ 59
2.6.2 Chế độ nghỉ (sleep mode) 59
2.6.3 Chuyển từ chế độ nghỉ sang chế độ hoạt động bình thường 60
2.6.4 Khởi tạo cấu hình mặc định cho modem 60
2.6.5 Khởi tạo module SIM900 61
2.6.6 Thực hiện cuộc gọi 61
2.6.7 Nhận cuộc gọi đến 62
2.6 8 Đọc tin nhắn 63
2.6.9 Gửi tin nhắn 63
CHƯƠNG III: THỰC NGHIỆM VÀ KẾT LUẬN 65
3.1 Thực nghiệm 65
3.2 Kết luận 65
3.2.1 Những kết quả đạt được 65
Trang 33.2.2 Hạn chế của đề tài 66
3.2.3 Hướng phát triển của đề tài 66
TÀI LIỆU THAM KHẢO 67
PHỤ LỤC 68
Trang 4DANH MỤC CÁC HÌNH VẼ
Hình 1 1 Kiến trúc Havard và kiến trúc Von-Neuman 7
Hình 1 2 Cơ chế pipelining 9
Hình 1 3 Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân 12
Hình 1 4 Sơ đồ khối vi điều khiển PIC16F877A 13
Hình 1.5 Sơ đồ chân và chức năng các chân 14
Hình 1.7 Sơ đồ bộ nhớ dữ liệu PIC16F877A 19
Hình 1.13 Module SIM900 28
Hình 1.14 Sơ đồ khối SIM900 29
Hình 1.16 Cấu trúc bên trong cảm biến PIR 36
Hình 1.17 Cấu tạo cảm biến tia nhiệt 36
Hình 1.18 Nguyên lý chuyển động ngang của các nguồn thân nhiệt 37
Hình 1.19 Hoạt động của cảm biến PIR khi con người chưa vào vùng ảnh hưởng 38
Hình 1.20 Hoạt động của cảm biến PIR khi con người vào vùng ảnh hưởng 38
Hình 1.21 Nguyên lý cảm ứng quang điện 39
Hình 1.22 Sơ đồ tổng quát hệ thống thu phát quang 39
Hình 1.23 Sơ đồ nguyên lý cảm biến ion 40
Hình 1.23 Cảm biến quang điện 41
Hình 1.25 Cảm biến ion hóa trong hệ thống 42
Hình 1.26 Cảm biến khói nhiệt WSYG02 42
Hình 1.27 Cảm biến báo khói không dây BK-1000 43
Hình 1.28 Cảm biến báo khói không dây BK-1000 43
Hình 1.29 Đầu dò báo khói BOSCH FAP-O-420 44
Hình 1.30 Cảm biến khói CBK-0001 45
Hình 2.1 Sơ đồ khối hệ thống báo cháy, chống trộm 46
Hình 2.2 Sơ đồ mạch nguồn 48
Hình 2.3 Sơ đồ mạch hiển thị LCD 48
Hình 2.4 Sơ đồ mạch giao tiếp RS232 49
Hình 2.5 Sơ đồ mạch điều khiển trung tâm 50
Hình 2.6 Sơ đồ mạch công suất 51
Hình 2.7 Sơ đồ mạch in bộ điều khiển trung tâm 53
Hình 2.8 Lưu đồ thuật toán hệ thống 53
Hình 2.9 Giao diện điều khiển hệ thống 54
Trang 5MỞ ĐẦU
1 Lý do lựa chọn đề tài.
Trong cuộc sống của chúng ta luôn tồn tại khu vực dễ cháy, nên việc lắp đặt
hệ thống báo cháy có tầm quan trọng hết sức lớn lao Nó giúp chúng ta phát hiệnnhanh chóng, chữa cháy kịp thời kỳ đem lại sự bình yên cho mọi người, bảo vệ tài sảncho nhân dân, nhà máy xưởng sản xuất
Cùng với sự phát triển nhanh chóng của hệ thống thông tin hiện điện thoại thìviệc báo cháy qua điện ngày càng trở nên phổ biến, giúp cho chúng ta biết được nơixảy ra cháy
Mặt khác vấn đề an ninh công sở ngày càng trở nên cấp thiết, việc đột nhậptrái phép lấy đi những thiết bị có giá trị ngày càng gia tăng
Chính vì vậy, nhóm nghiên cứu đã lựa chọn đề tài ‘‘Nghiên cứu, ứng dụng viđiều khiển PIC 16 –F877A, thiết kế hệ thống điều khiển, giám sát báo cháy, chốngtrộm cho xưởng thực hành điện – Trường Đại học Sao đỏ”
2 Mục tiêu nghiên cứu
- Xây dựng cơ sở lý thuyết của hệ thống
- Nghiên cứu, thiết kế lắp đặt hệ thống báo cháy và chống trộm
- Xây dựng phần cứng, phần mềm điều khiển hệ thống
- Thiết kế hệ thống mở để xây dựng một số bài thực hành trên hệ thống
- Thực nghiệm và hoàn thiện hệ thống
3 Nội dung nghiên cứu
- Nghiên cứu lý thuyết về điều khiển lập trình vi điều khiển PIC 16 –F877A
- Nghiên cứu cấu trúc, tập lệnh Module SIM900
- Nghiên cứu cấu trúc, nguyên lý hoạt động của cảm biến báo khói, cảm biếnhồng ngoại
- Thiết kế, chế tạo, lắp đặt hệ thống điều khiển, giám sát báo cháy, chống trộmcho xưởng thực hành điện – Trường Đại học Sao đỏ
- Lập trình điều khiển hệ thống
4 Phạm vi nghiên cứu
- Tổng quan về vi điều khiển PIC 16 –F877A
- Nghiên cứu hệ thống điều khiển, giám sát báo cháy, chống trộm
- Nghiên cứu thiết kế, chế tạo phần cứng, phần mềm điều khiển hệ thống hệthống giám sát báo cháy, chống trộm
5 Đối tượng nghiên cứu.
Trang 6- Cấu trúc, tập lệnh Module SIM900.
- Cấu trúc và nguyên lý hoạt động cảm biến báo khói, cảm biến hồng ngoại
- Phương án thiết kế, lắp đặt, thực nghiệm và kiểm tra hệ thống báo cháy,chống trộm
6 Phương pháp nghiên cứu
6.1 Nghiên cứu tài liệu
- Nghiên cứu tài liệu về điều khiển PIC 16 –F877A để đưa ra cơ sở lý thuyết
về hệ thống báo cháy, chống trộm
- Nghiên cứu lý thuyết về cách thiết kế, lắp đặt hệ thống báo cháy, chống trộm
6.2 Phương pháp thực nghiệm.
- Lắp đặt thực nghiệm hoàn chỉnh hệ thống hệ thống báo cháy, chống trộm
- Thực nghiệm vận hành hệ thống: Chạy thử, theo dõi, ghi lại thông tin, số liệuquá trình điều khiển và giám sát hệ thống khi thay đổi các thông số kỹ thuật Kiểm tra,đối chiếu với cơ sở lý thuyết rút ra các kết luận về thông số kỹ thuật điều khiển hệthống, đảm bảo nguyên tắc mang tính phổ biến để cho kết quả thực nghiệm đượckhách quan Từ đó, đề ra được chuẩn và phương thức đánh giá cho hệ thống điều
khiển
6.3 Phương pháp hội thảo.
Tổ chức hội thảo theo nhóm để lấy ý kiến của hội đồng khoa học khoa và cácgiáo viên chuyên ngành điều khiển tự động trong khoa và trường
7 Cấu trúc của đề tài.
Mở đầu
Chương 1: Tổng quan
Chương 2: Thiết kế hệ thống báo cháy, chống trộm cho xưởng thực hành điện
– Trường Đại học Sao đỏ
Chương 3: Thực nghiệm và kết luận
Tài liệu tham khảo
Trang 7CHƯƠNG I: TỔNG QUAN 1.1 Nhu cầu sử dụng thiết bị tự động trong doanh nghiệp.
Cuối thế kỷ 19 và những năm đầu của thế kỷ 20 việc điều khiển các thiết bịcông nghiệp cũng như dân dụng chủ yếu được thực hiện điều khiển cứng thông quacác linh kiện như Rơ le, công tắc tơ, áp tô mát … Ngày nay, sự phát triển mạnh mẽ củakhoa học công nghệ trong lĩnh vực tự động hóa các thiết bị điện tử công nghiệp và dândụng đã được tự động hóa hoàn toàn, nhu cầu sử dụng các hệ thống tự động trong cácdoanh nghiệp hoặc trong các gia đình là rất phổ biến, nhằm giảm bớt nhân công, tăngnăng suất lao động, tạo ra hàng hóa có giá trị cao Trong các doanh nghiệp thì tự độnghóa cho các thiết bị sản xuất ra sản phẩm: như các dây chuyền phân loại, đóng gói sảnphẩm, các hệ thống sản suất tự động…, trong các gia đình tự động hóa được ứng dụngtrong các thiết bị điện dân dụng phổ biến như: nồi cơm điện, máy giặt, máy điều hòa…
Sự phát triển của tự động hóa kéo theo nhu cầu về cảnh báo, an ninh phát triển vớimục đích gia tăng độ an toàn của môi trường sống và làm việc, ngăn chặn những hành
vi xấu Từ đó các tòa nhà thông minh ra đời với các hệ thống tự động như:
- Tự động đóng mở cửa
- Tự động báo động (cháy, khí dò rỉ, chống trộm )
- Tự động điều khiển nhiệt độ
- Theo dõi các hoạt động trong, xung quanh ngôi nhà
Như vậy nhu cầu về thiết bị tự động ở các doanh nghiệp, gia đình là rất lớn vàngày càng trở nên cấp thiết ở tất cả các loại hình doanh nghiệp từ sản xuất, lắp ráp,chế biến sản phẩm cho tới kinh doanh và các dịch vụ khác
1.2 Nhu cầu sử dụng thiết bị tự động trong đào tạo
Với mục tiêu đào tạo nguồn nhân lực chất lượng cao đáp ứng nhu cầu của cácdoanh nghiệp, các cơ sở đào tạo phải hiểu thị trường lao động, đào tạo những gì mà xãhội đang cần Muốn đạt được điều đó, người học cần phải được thực tập trên nhữngthiết bị mô phỏng quá trình sản xuất thực tế Vì vậy, việc nghiên cứu, chế tạo nhữngthiết bị, đồ dùng dạy học tiếp cận gần với thực tế là hết sức cần thiết
Trường Đại Học Sao Đỏ là một cơ sở đào tạo đang thực hiện đào tạo đa cấp,
đa ngành, đa lĩnh vực, HSSV được đào tạo giỏi cả lý thuyết và tay nghề Đại đa số các
SV ra trường đều đáp ứng ngay được yêu cầu của sản xuất Hầu hết các SV đều đượcthực tập trên các thiết bị do nhà trường đầu tư mua sắm hoặc do các khoa thiết kế chếtạo Với số lượng ngành nghề đang được mở rộng như hiện nay, yêu cầu về trang thiết
bị càng trở lên cấp thiết Đặc biệt ở một số khoa có nhu cầu cao về các thiết bị, mô
Trang 8việc tăng cường đầu tư có chọn lọc những thiết bị tự động mới đồng bộ thì việc đẩymạnh công tác nghiên cứu khoa học, ứng dụng lắp đặt các mô hình, những thiết bị dạyhọc tự động phù hợp cho giảng dạy, gắn với thực tế sản xuất là một bước đi đúng,mang lại hiệu quả kinh tế cao.
1.4 Tổng quan về vi điều khiển PIC
1.4.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ínhthông minh khả trình” do hãng Genenral Instrument đặt tên cho vi điều khiển đầu tiêncủa họ: PIC1650 được thiết kế để dùng làm các thiết bị ngoại vi cho vi điều khiểnCP1600 Vi điều khiển này sau đó được nghiên cứu phát triển thêm và từ đó hìnhthành nên dòng vi điều khiển PIC ngày nay
1.4.2 Kiến trúc của 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ếntrúc Von Neuman và kiến trúc Havard
Hình 1 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 chungtrong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ chươngtrì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 CPUphả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-Neumankhô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 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ể
Trang 9Mộ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ùytheo 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 đượctổ 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
1.4.3 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úcVon-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ònphụ 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ệnhcủ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 trongmộ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ệnhgọ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 ứngyê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ểnRISC (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 còn được gọi là vi điều khiểnCISC (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)
1.4.4 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ươngtrình như sau:
2 MOVWF PORTB
Trang 10từng chu kì lệnh Quá trình trên sẽ được thực thi như sau:
- 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ôngthườ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ì 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 Saukhi đã 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
1.4.5 Các dòng PIC và 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
Trang 11LF: 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ềukhiể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ợpsẵ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 PIC có thể được tìm thấytrong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp
1.4.6 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 caohơ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áttriển dành riêng cho PIC như PICBasic, MikroBasic,…
1.4.7 Mạch nạp cho PIC
Đây cũng là một dòng sản phẩm rất đa dạng dành cho vi điều khiển PIC Có thể sửdụng các mạch nạp được cung cấp bởi nhà sản xuất là hãng Microchip như:PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II Có thể dùng các sảnphẩm này để nạp cho vi điều khiển khác thông qua chương trình MPLAB Dòng sảnphẩm chính thống này có ưu thế là nạp được cho tất cả các vi điều khiển PIC, tuynhiên giá thành rất cao và thường gặp rất nhiều khó khăn trong quá trình mua sảnphẩm
Ngoài ra do tính năng cho phép nhiều chế độ nạp khác nhau, còn có rất nhiềumạch nạp được thiết kế dành cho vi điều khiển PIC Có thể sơ lược một số mạch nạpcho PIC như sau:
- JDM programmer: mạch nạp này dùng chương trình nạp Icprog cho phép nạp các
vi điều khiển PIC có hỗ trợ tính năng nạp chương trình điện áp thấp ICSP (In
Trang 12PLUS do nhà sản xuất Microchip cung cấp, tương thích với trình biên dịchMPLAB, nghĩa là ta có thể trực tiếp dùng chương trình MPLAB để nạp cho vi điềukhiển PIC mà không cần sử dụng một chương trình nạp khác, chẳng hạn nhưICprog.
- P16PRO40: mạch nạp này do Nigel thiết kế và cũng khá nổi tiếng Ông còn thiết
kế cả chương trình nạp, tuy nhiên ta cũng có thể sử dụng chương trình nạp Icprog
- Mạch nạp Universal của Williem: đây không phải là mạch nạp chuyên dụng dànhcho PIC như P16PRO40
Các mạch nạp kể trên có ưu điểm rất lớn là đơn giản, rẻ tiền, hoàn toàn có thể tựlắp ráp một cách dễ dàng, và mọi thông tin về sơ đồ mạch nạp, cách thiết kế, thi công,kiểm tra và chương trình nạp đều dễ dàng tìm được và download miễn phí thông quamạng Internet Tuy nhiên các mạch nạp trên có nhược điểm là hạn chế về số vi điềukhiển được hỗ trợ, bên cạnh đó mỗi mạch nạp cần được sử dụng với một chương trìnhnạp thích hợp
Trang 131.5 Vi điều khiển PIC16F874A
1.5.1 Các dạng sơ đồ chân
Hình 1 3 Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân
Trang 141.5.2 Sơ đồ khối và chức năng các khối
Hình 1 4 Sơ đồ khối vi điều khiển PIC16F877A.
Hình 1.4 là sơ đồ khối của PIC 16F877A, gồm các khối:
- Khối ALU – Arithmetic Logic Unit
- Khối bộ nhớ chứa chương trình – Flash Program Memory
- Khối bộ nhớ chứa dữ liệu EPROM – Data EPROM
- Khối bộ nhớ file thanh ghi RAM – RAM file Register
Trang 15- Khối giải mã lệnh và điều khiển – Instruction Decode Control.
- Khối thanh ghi đặc biệt
- Khối ngoại vi timer
- Khối giao tiếp nối tiếp
- Khối chuyển đổi tín hiệu tương tự sang số - ADC
- Khối các port xuất nhập
1.5.3 Sơ đồ chân và chức năng các chân
Hình 1.5 Sơ đồ chân và chức năng các chân
Chân OSC1/CLK1(13): ngõ vào kết nối với dao động thạch anh hoặc ngõ vàonhận xung clock từ bên ngoài
Chân OSC2/CLK2(14): ngõ ra dao động thạch anh hoặc ngõ ra cấp xung clock
- : ngõ vào reset tích cực ở mức thấp
- Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC
Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
- RA0,1,2: xuất/ nhập số
- AN 0,1,2: ngõ vào tương tự của kênh thứ 0,1,2
Chân RA2/AN2/VREF-/CVREF+(4): xuất nhập số/ ngõ vào tương tự của kênh
Trang 16 Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào tương tự kênh 3/ ngõ vàođiện áp chuẩn (cao) của bộ AD.
Chân RA4/TOCK1/C1OUT(6): xuất nhập số/ ngõ vào xung clock bên ngoàicho Timer 0/ ngõ ra bộ so sánh 1
Chân RA5/AN4/ / C2OUT(7): xuất nhập số/ ngõ vào tương tự kênh 4/ ngõvào chọn lựa SPI phụ/ ngõ ra bộ so sánh 2
Chân RB0/INT (33): xuất nhập số/ ngõ vào tín hiệu ngắt ngoài
Chân RB1(34), RB2(35): xuất nhập số
Chân RB3/PGM(36): xuất nhập số/ cho phép lập trình điện áp thấp ICSP
Chân RB4(37), RB5(38): xuất nhập số
Chân RB6/PGC(39): xuất nhấp số/ mạch gỡ rối và xung clock lập trình ICSP
Chân RB7/PGD(40): xuất nhập số/ mạch gỡ rối và dữ liệu lập trình ICSP
Chân RC0/T1OCO/T1CKI(15): xuất nhập số/ ngõ vào bộ giao động Timer1/ngõ vào xung clock bên ngoài Timer 1
Chân RC1/T1OSI/CCP2(16) : xuất nhập số/ ngõ vào bộ dao động Timer 1/ ngõvào Capture2, ngõ ra compare2, ngõ ra PWM2
Chân RC2/CCP1(17): xuất nhập số/ ngõ vào Capture1 ,ngõ ra compare1, ngõ raPWM1
Chân RC3/SCK/SCL(18): xuất nhập số/ ngõ vào xung clock nối tiếp đồng bộ,ngõ ra chế độ SPI./ ngõ vào xung clock nối tiếp đồng bộ, ngõ ra của chế độ I2C
Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập dữ liệu I2C
Chân RC5/SDO(24): xuất nhập số/ dữ liệu ra SPI
Chân RC6/TX/CK(25): xuất nhập số/ truyền bất đồng bộ USART/ xung đồng
bộ USART
Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART
Chân RD0-7/PSP0-7(19-30): xuất nhập số/ dữ liệu port song song
Chân RE0/ /AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vàotương tự 5
Chân RE1/ /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vàotương tự kênh thứ 6
Chân RE2/ /AN7(10): xuất nhấp số/ Chân chọn lụa điều khiển port songsong/ ngõ vào tương tự kênh thứ 7
Chân VDD(11, 32) và VSS(12, 31): là các chân nguồn của PIC
1.5.4 Đặc điểm của vi điều khiển PIC16F877A
Đâ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 14 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
Trang 17phép là 20 MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14 bit, bộ nhớ
dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte SốPORT I/O là 5 với 33 pin I/O Có 8 kênh chuyển đổi A/D
Các đặc tính ngoại vi bao gồmcác khối chức năng sau:
- Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
- 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,
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
Trang 18Bảng 1.1 Tóm tắt đặc điểm của VDK PIC 16F877A
1.5.5 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ìn (Programmemory) và bộ nhớ dữ liệu (Data Memory)
1.5.5.1 Bộ nhớ chương trình
Bộ nhớ chương trình của vi điều khiển
PIC16F877A là bộ nhớ flash, dung lượng
bộ nhớ 8K word (1 word = 14 bit) và
được phân thành nhiều trang (từ page0
đến page 3) Như vậy bộ nhớ chương
trình có khả năng chứa được 8*1024 =
Trang 19trình có
dung lượng 13 bit (PC<12:0>)
Khi vi điều khiển được reset, bộ đếm
Bộ nhớ chương trình không bao gồm bộ
nhớ stack và không được địa chỉ hóa bởi
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ủa chươngtrình
Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:
Trang 20Hình 1.7 Sơ đồ bộ nhớ dữ liệu PIC16F877A
1 Thanh ghi chức năng đặc biệt SFR
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điềukhiển các khối chức năng được tích hợp bên trong vi điều khiển Có thể phân thanh ghiSFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và
Trang 21thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụnhư ADC, PWM, …) Phần này sẽ đề cập đến các thanh ghi liên quan đến các chứcnăng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽđược nhắc đến khi ta đề cập đến các khối chức năng đó
Thanh ghi STATUS (03h, 83h, 103h, 183h):thanh ghi chứa kết quả thực hiện phép
toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữliệu
Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pull-up của các chân trong PORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh):thanh ghi cho phép đọc và ghi, chứa
các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrput- on-change tại các chân của PORTB
Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của các khối chức
năng ngoại vi
Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngoại vi, các ngắt này
được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1
Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng
CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Trang 22Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi, các
ngắt
này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của
vi điều khiển
2 Thanh ghi mục đích chung GPR
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanhghi
FSG (File Select Register) Đây là các thanh ghi dữ liệu thông thường, người sử dụng
có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để chứa các
biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình
1.5.6 Các cổng xuất nhập khầu 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ácvớ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 theo cá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ượng chântrong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích hợp sẵn bêntrong 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ất nhập thôngthườ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ức năng của từngchân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển đượcthô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
1.5.6.1 PORTA
PORTA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều” (bidirectional pin),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ởi thanh ghiTRISA (địa chỉ 85h) Muốn xác lập chức năng của một chân trong PORTA là input, ta
Trang 23“set” bit điều khiển tương ứng với chân đĩ trong thanh ghi TRISA và ngược lại, muốnxác lập chức năng của một chân trong PORTA là output, ta “clear” bit điều khiểntương ứng với chân đĩ trong thanh ghi TRISA Thao tác này hồn tồn tương tự đốivới các PORT và các thanh ghi điều khiển tương ứng TRIS (đố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 clock của Timer0 và ngõ vào của bộ giao tiếp MSSP (Master SynchronousSerial Port) Đặc tính này sẽ được trình bày cụ thể trong phần sau
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
- TRISA (địa chỉ 85h) : chứa giá trị các pin trong PORTA
- 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 áp
- ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC
1.5.6.2 PORTB
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éo lênđược điều khiển bởi chương trình
Các thanh ghi SFR liên quan đến PORTB bao gồ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.1.5.6.3.PORTC
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:
1.5.6.4 PORTD
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng làTRISD PORTD cịn là cởng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel SlavePort)
Trang 24- Thanh ghi TRISD : điều khiển xuất nhập.
1.5.6.5 PORTE
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ácchâ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
- TRISE : điều khiển xuất nhập và xác lập các thông số cho chuẩn giaotiếp PSP
- ADCON1 : thanh ghi điều khiển khối ADC
1.5.7 Tập lệnh của vi điều khiển PIC
Cú pháp: ANDLW k (0≤k≤255) Tác dụng: thực hiện phép toán AND giữa thanh ghi
và giá trị k, kết quả được chứa trong thanh ghi W
Bit trạng thái: Z
Cú pháp: ANDWF f,d (0≤f≤127, d ∈[0,1]) Tác dụng: thực hiện phép toán AND giữacác giá trị chứa trong hai thanh ghi W và f Kết quả được đưa vào thanh ghi W nếud=0 hoặc thanh ghi f nếu d = 1
Bit trạng thái: Z
Cú pháp: BCF f,b (0≤f≤127, 0≤b≤7) Tác dụng: xóa bit b trong thanh ghi f về giá trị
0 Bit trạng thái: không có
Lệnh BSF
Cú pháp: BSF f,b (0≤f≤127, 0≤b≤7) Tác dụng: set bit b trong trnh ghi f
Bit trạng thái: không có
Cú pháp: BTFSS f,b (0≤f≤127, 0≤b≤7).Tác dụng: kiểm tra bit b trong thanh ghi f Nếu
Trang 25bit b bằng 0, lệnh tiếp theo được thực thi Nếu bit b bằng 1, lệnh tiếp theo được bỏ qua
và thay vào đó là lệnh NOP
Bit trạng thái: không có
Cú pháp: BTFSC f,b(0≤f≤127, 0≤b≤7) Tác dụng: kiểm tra bit b trong thanh ghi f.Nếu bit b bằng 1, lệnh tiếp theo được thực thi Nếu bit b bằng 0, lệnh tiếp theo được bỏqua và thay vào đó là lệnh NOP
Bit trạng thái: không có
Cú pháp: CALL k (0≤k≤2047) Tác dụng: gọi một chương trình con Trước hết địachỉ quay trở về từ chương trình con (PC+1) được cất vào trong Stack, giá trị địa chỉmới được đưa vào bộ đếm gồm 11 bit của biến k và 2 bit PCLATH<4:3>
Bit trạng thái: không có
Trang 26Bit trạng thái: không có
Cú pháp: GOTO k (0≤k≤2047) Tác dụng: nhảy tới một label được định
nghĩa bởi tham số k và 2 bit PCLATH<4:3>
Bit trạng thái: không có
Cú pháp: INCF f,d (0≤f≤127, d [0,1]) Tác dụng: tăng giá trị thanh ghi f lên 1 đơn
vị Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1
Bit trạng thái: Z
Lệnh INCFSZ
Cú pháp: INCFSZ f,d (0≤f≤127, d [0,1]) Tác dụng: tăng giá trị thanh ghi f lên 1đơn vị Nếu kết quả khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếptheo được thay bằng lệnh NOP Kết quả sẽ được đưa vào thanh ghi f nếu d=1 hoặcthanh ghi W nếu d = 0
Bit trạng thái: không có
Cú pháp: IORLW k (0≤k≤255) Tác dụng: thực hiện phép toán OR giữa thanh ghi W
và giá trị k Kết quả được chứa trong thanh ghi W
Bit trạng thái: Z
Cú pháp: IORWF f,d (0≤f≤127, d [0,1]) Tác dụng: thực hiện phép toán OR giữa hai thanh ghi W và f Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếud=1
Trang 27f qua cờ carry Kết quả được lưu trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Trang 28Cú pháp: #DEFINE <text1> <text2>
Tác dụng: thay thế một chuỗi kí tự ny bằng một chuỗi kí tự khc, có nghĩa là mỗi khichuỗi kí tự text1 xuất hiện trong chương trình, trình biên dịch sẽ tự động thay thếchuỗi kí tự đĩ bằng chuỗi kí tự <text2>
Cú pháp: #INCLUDE <filename> hoặc #INCLUDE “filename”
Tác dụng: đính km một file khc vo chương trình, tương tự như việc ta copy file đó vào
vị trí xuất hiện lệnh INCLUDE Nếu dùng cú pháp <filename> thì file đình km l file
hệ thống (system file), nếu dùng cú pháp “filename” thì file đính kèm là file của người
sử dụng
Thông thường chương trình được đính kèm theo một “header file” chứa cc thông tinđịnh nghịa cc biến (thanh ghi W, thanh ghi F, ) và các địa chỉ các thanh ghi chứcnăng đặc biệt trong bộ nhớ dữ liệu Nếu không có header file, chương trình sẽ khs đọc
Cú pháp: VARIABLE <name>=<value>
Tác dụng: tương tự như lệnh CONSTANT, chỉ có điểm khác biệt duy nhất là giá trị
“value” khi dùng lệnh VARIABLE có thể thay đổi được trong quá trình thực thichương trình còn lệnh CONSTANT thì không
Lệnh SET
Cú pháp: <name variable> SET <value>
Tác dụng: gán giá trị cho một tên biến Tên của biến có thể thay đổi được trong quátrình thực thi chương trình
Cú pháp: <name constant> EQU <value>
Tác dụng: gán giá trị cho tên của tên của hằng số Tên của hằng số không thay đổitrong quá trình thực thi chương trình
Trang 29Cú pháp: PROCESSOR <processor type>
Tác dụng: định nghĩa vi điều khiển nào sử dụng chương trình
1.6 Module SIM900
1.6.1 Cấu trúc Module SIM900.
Module SIM 900 có tính năng như một chiếc điện thoại Có thể nói nó chính làmột chiếc điện thoại di động vì nó có khả năng kết nối với mạng GSM để thực hiệncác tác vụ tương tự như một chiếc điện thoại bình thường như: gọi điện, nhắn tin vàkết nối GPRS thông qua tập lệnh AT Ngoài ra nó có khả năng bắt sóng GPS
Hình 1.13 Module SIM900
Module SIM900 có thể hoạt động trong các dải băng tần: GSM 850MHz,EGMS 900MHz, DCS 1800MHz và PCS 1900MHz Được thiết kế với kích thước rấtnhỏ gọn nên SIM900 hầu như được sử dụng rất nhiều ứng dụng hiện nay như: M2M(Mobile to Mobile), trong các Smart Phone, PDA, các thiết bị định vị cầm tay và cácthiết bị di động khác hoặc các ứng dụng của AVL (Automated Vehicle Location) vàcho các dịch vụ định vị khác, … Giao tiếp vật lý trong ứng dụng điện thoại củaSIM900 là 60 chân, nó cung cấp tất cả các giao diện vật lý giữa module SIM và bomạch ứng dụng:
Trang 30Có thế dễ dàng được cấu hình bằng lệnh AT qua cổng giao tiếp nối tiếp.
Giao tiếp với simcard giống như điện thoại di động
Hình 1.14 Sơ đồ khối SIM900
Module SIM900 hỗ trợ giao thức TCP/IP, rất hữu ích cho việc truyền dữ liệutrên Internet SIM900 được thiết kế với công nghệ tiết kiệm năng lượng vì vậy mứctiêu thụ chỉ ở mức 1,5 mA ở trong chế độ SLEEP
1.6.2 Tập lệnh AT của Module SIM900
Các modem được sử dụng từ những ngày đầu của sự ra đời của máy tính TừModem là một từ được hình thành từ hai từ modulator và demodulator Và định nghĩađặc trưng này cũng giúp ta hình dung được phần nào là thiết bị này sẽ làm cái gì Dữliệu số thì đến từ một DTE, thiết bị dữ liệu đầu cuối được điều chế theo cái cách mà nó
có thể được truyền dữ liệu qua các đường dây truyền dẫn Ở một mặt khác của đườngdây, một modem thứ hai điều chế dữ liệu đến và xúc tiến, duy trì nó
Khi chúng ta xem trong RS232 port layout thì chuẩn RS232 miêu tả một kênhtruyền thông với bộ kết nối 25 chân DB25, nó được thiết kế để thực thi quá trìnhtruyền các lệnh đến modem được kết nối với nó
Thế nên nhất thiết phải có một phương pháp được thiết lập để sử dụng kênh
dữ liệu hiện tại để không chỉ truyền dữ liệu từ một điểm đầu cuối này tới một điểm đầucuối khác mà nó còn truyền tới modem duy nhất Dennis Hayes đã đưa ra giải phápcho vấn đề này trong năm 1977
Modem thông minh (Smartmodem) được Dennis Hayes sử dụng chuẩn truyềnthông RS232 đơn giản kết nối tới một máy tính để truyền cả câu lệnh và dữ liệu Bởi
Trang 31vì mỗi lệnh bắt đầu với chữ AT trong chữ Attention nên ngôn ngữ điều khiển đượcđịnh nghĩa bởi Hayes nhanh chóng được biết đến với bộ lệnh Hayes AT
Chính vì sự đơn giản và khả năng thực thi với chi phí thấp của nó, bộ lệnhHayes AT nhanh chóng được sử dụng phổ biến trong các modem của các nhà sản xuấtkhác nhau Khi chức năng và độ tích hợp của các modem ngày càng tăng cùng thờigian, nên làm cho ngôn ngữ lệnh Hayes AT càng phức tạp Vì thế nhanh chóng mỗinhà sản xuất modem đã sử dụng ngôn ngữ riêng của Dennis Hayes Ngày nay bộ lệnh
AT bao gồm cả các lệnh về dữ liệu, fax, voice và các truyền thông SMS
Các lệnh AT là các hướng dẫn được sử dụng để điều khiển một modem AT làmột cách viết gọn của chữ Attention Mỗi dòng lệnh của nó bắt đầu với “AT” hay “at”
Đó là lý do tại sao các lệnh modem được gọi là các lệnh AT Nhiều lệnh của nó được
sử dụng để điều khiển các modem quay số sử dụng dây mối (wired dial-up modems),chẳng hạn như ATD (Dial), ATA (Answer), ATH (Hool control) và ATO (return toonline data state), cũng được hỗ trợ bởi các modem GSM/GPRS và các điện thoại diđộng
Bên cạnh bộ lệnh AT thông dụng này, các modem GSM/GPRS và các điệnthoại di động còn được hỗ trợ bởi một bộ lệnh AT đặc biệt đối với công nghệ GSM
Nó bao gồm các lệnh liên quan tới SMS như AT+ CMGS (gửi tin nhắn SMS),AT+CMSS (gửi tin nhắn SMS từ một vùng lưu trữ), AT+CMGL (chuỗi liệt kê các tinnhắn SMS) và AT+CMGR (đọc tin nhắn SMS)
Ngoài ra, các modem GSM còn hỗ trợ một bộ lệnh AT mở rộng Những lệnh
AT mở rộng này được định nghĩa trong các chuẩn của GSM Với các lệnh AT mở rộngnày,bạn có thể làm một số thứ như sau:
Đọc, viết, xóa tin nhắn
Gửi tin nhắn SMS
Kiểm tra chiều dài tín hiệu
Kiểm tra trạng thái sạc bin và mức sạc của bin
Đọc, viết và tìm kiếm về các mục danh bạ
Số tin nhắn SMS có thể được thực thi bởi một modem SMS trên một phút thìrất thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trên 1 phút
1.6.2.1 Các lệnh khởi tạo GSM Module SIM900
- Lệnh AT<cr>
Nếu lệnh thực hiện đựợc thì trả về: Ok
Bắt đầu thực hiện các lệnh tiếp theo
Trang 32Nếu lệnh thực hiện đựợc thì trả về: Ok
<mode> : 0 dạng dữ liệu PDU
1 dạng dữ liệu kiểu text
Nếu lệnh không thực hiện được thì trả về dạng: CMS ERROR <err>
- Lệnh AT&W[<n>]
Nếu lệnh thực hiện đựợc thì trả về: Ok
Lưu cấu hình cho GSM Module SIM900
Nếu lệnh không thực hiện được thì trả về dạng: CMS ERROR <err>
- Lệnh Xóa tin nhắn: AT+CMGD
Ví dụ: muốn xóa một tin nhắn nào đó được lưu trên sim thì ta thực hiện lệnhsau