Điều khiển và kiểm tra thiết bị điện bằng điện thoại di động qua soạn tin nhắn

Lời nói đầu *** Với sự phát triển mạnh mẽ của Khoa học kĩ thuật trong những thập niên gần đây, ngành Bưu chính viễn thông đã tạo ra bước ngoặc quan trọng trong lĩnh vực thông tin để đáp ứng nhu cầu của con người. Hiện nay, hệ thống thông tin qua mạng điện thoại đã được toàn cầu hóa, trở nên gần gũi và quen thuộc với con người. Nhờ hệ thống thông tin này mà con người đã không bị hạn chế về khoảng cách liên lạc. Trong lĩnh vực thông tin đã đáp ứng được nhu cầu cần thông tin của con người. Vậy trong lĩnh vực điều khiển tự động thì sao? Thật vậy, trong việc điều khiển có nhiều cách như: điều khiển bằng tia hồng ngoại, điều khiển bằng vô tuyến nhưng các cách ấy đều phụ thuộc vào khoảng cách, chỉ có tác dụng trong phạm vi điều khiển gần. Với sự phát triển của KHKT, với mức độ nhu cầu của con người ngày càng cao, đòi hỏi con người phải điều khiển được một thiết bị điện nào đó mà không bị hạn chế về khoảng cách điều khiển. Từ đó, ý tưởng đề tài là phải thiết kế một hệ thống dùng ngay chính đường truyền có sẵn của mạng thông tin qua điện thoại để điều khiển. Với kết quả khả quan trong việc nghiên cứu, thiết kế đề tài của một số tài liệu tham khảo và thực tế đã chắc chắn rằng việc sử dụng điện thoại di động để điều khiển thiết bị điện là một vấn đề hoàn toàn có thể được, có tính khả thi, phù hợp với xu thế mới của con người. Đó cũng chính là vấn đề mà sinh viên thực hiện đề tài đang quan tâm. Với lượng kiến thức được truyền đạt trong suốt khóa học, với khả năng của bản thân và thời gian cho phép để thực hiện đề tài nên cá nhân sinh viên thực hiện vẫn còn những giới hạn cụ thể trong đề tài. Sau một thời gian thực hiện luận văn tốt nghiệp,bản thân sinh viên đã được mở rộng và hiểu biết thêmvề các thiết bị chế tạo, cũng như phát hiện ra nhiều thiếu sót.Ngoài ra, nó còn giúp cho em tìm hiểu thêmmột số ứng dụng thực tế của nhiều thiết bị, linh kiện trong thực tiễnvà làm cho kiến thức của em ngày càng được nâng cao. Qua đó, em xin chân thành cám ơncôTh.S Vũ Thị Hồng Nga và thầy Th.S Trần Nguyên Bảo Trânkhoa Công nghệ điện tử đã nhiệt tình giúp đỡvà hướng dẫn em hoàn thành tốt đề tài luận văn tốt nghiệp. Nếu trong quá trình trình bày có gì không đúnghay chưa hợp lý thì kính mong quí thầy côsửa chữa và có những ý kiến đóng Mục Lục *** Trang Lời nói đầu 1 Nhận xét của GV hướng dẫn 2 Nhận xét của GV phản biện 3 CHƯƠNG 1: Lý thuyết liên quan .5 1. Các phương thức giao tiếp qua máy tính 2. Module Sim300C .17 2.1 Giới thiệu 2.2 Cấu tạo .18 2.3 Giao tiếp giữa Module với VXL 22 3. Vi xử lý 8951 .24 4. Giải quyết vấn đề .44 CHƯƠNG 2: Thực hiện đồ án 45 1. Linh kiện 2. Sơ đồ khối của mô hình .61 3. Sơ đồ mạch nguyên lý .62 4. Sơ đồ mạch Layout 74 5. Nguyên lý hoạt động .76 6. Lưu đồ giải thuật .80 7. Chương trình vi xử lý 82 CHƯƠNG 3: Đánh giá – Kết luận . 118 1. Kết quả thực hiện đề tài 2. Đánh giá đề tài đã thực hiện 3. Kết luận - Hướng phát triển của đề tài 119 *Tài liệu tham khảo

doc119 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3148 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Điều khiển và kiểm tra thiết bị điện bằng điện thoại di động qua soạn tin nhắn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
- Port 0: là port có 2 chức năng ở các chân 32-39 của 8951. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu. - Port 1: là port I/O trên các chân 1-8. Chỉ được dùng cho giao tiếp với các thiết bị bên ngoài. - Port 2: là port có tác dụng kép trên các chân 21-28, được dùng như các đường xuất nhập. - Port 3 : là port có tác dụng kép trên các chân 10-17. Các chân của port này có nhiều chức năng. 1.7 MAX3238: Hình 2.11: Sơ đồ chân của MAX3238. 1.8 PT2262: Hình 2.12: Sơ đồ chân của PT2262. Hình 2.13: Sơ đồ khối của PT2262. Hình 1.14: Sơ đồ nguyên lý của bộ phát. 1.9 PT2272 L4/M4: Hình 2.15: Sơ đồ chân của PT2272. Hình 2.16: Sơ đồ khối của PT2272. 1.10 UL2803 : Hình 1.17: Sơ đồ nguyên lý cổng vào – ra của UL2803. Hình 2.18: Sơ đồ chân của UL2803. 2. Sơ đồ khối của mô hình Thiết bị ĐK Th.bị Bộ Thu Sóng RF Bộ Phát Không dây ĐK Th.bị Có dây Vi Điều Khiển Ăngten Cảm ứng dòng Cổng thiết bị RS-232 Module Sim300C GSM / GPRS Điện thoại di động Mobile Hình 2.19: Sơ đồ khối của mô hình. + Dùng phương pháp soạn tin nhắn SMS từ điện thoại di động của người quản lý gửi đến một số SIM bất kỳ đã được lắp đặt sẵn trên hộp Module Sim300C(GSM / GPRS) bằng việc sử dụng anten thu sóng. Khi nội dung tin nhắn hay dữ liệu đã được Module Sim300C (GSM / GPRS) nhận thì nó đưa vào vi điều khiển xử lý thông qua việc sử dụng cổng giao tiếp RS-232, bằng chương trình các câu lệnh đã được lập trình sẵn trên vi xử lý 89C51 thì nó sẽ điều khiển các thiết bị hoạt động (có thể điều khiển không dây bằng bộ thu – bộ phát và có dây) theo đúng yêu cầu nội dung tin nhắn của người quản lý. + Khi thiết bị đã hoạt động hay không hoạt động (tạm ngừng hoặc hư hỏng) thì có một bộ phận cảm ứng dòng (cuộn dây) sẽ cảm ứng dòng điện của thiết bị để xác định tình trạng họat động của thiết bị, rồi đưa về bộ phận vi điều khiển nhận biết và xử lý, tạo nên một tin nhắn hay dữ liệu báo kết quả về số máy điện thoại của người quản lý thông qua Module Sim300C (GSM / GPRS). 3. Sơ đồ mạch nguyên lý 3.1 Khối vi điều khiển: Hình 2.20: Sơ đồ nguyên lý khối vi điều khiển. Khối vi điều khiển được chia làm 3 phần chính : + Khối nguồn + Khối reset + Khối xử lý và lưu trữ dữ liệu a. Khối nguồn: 7805 Hình 2.21: Sơ đồ mạch khối nguồn. Nhiệm vụ khối nguồn là cung cấp mức điện áp 5VDC ổn định cho mạch điện. Sử dụng nguồn AC qua cầu chỉnh lưu -> 12V, qua IC 7805 tạo ra điện áp 5VDC. b. Khối Reset: Reset (p_9) Hình 2.22: Sơ đồ mạch của khối reset. Nhiệm vụ của khối reset là tạo lại trạng thái ban đầu khi khối xử lý bị treo (không thể tiếp tục họat động được). Khối này sử dụng IC 555, IC 4518 và IC 4001 (có 4 cổng NOR). c. Khối xử lý và lưu trữ dữ liệu: Khối này có nhiệm vụ lưu trữ thông tin dữ liệu (DS12C887), xử lý dữ liệu (89C51) từ module Sim300C đưa tới và xuất lệnh để điều khiển (89C51) đóng ngắt thiết bị. + Dallas DS12C887 vừa có tính năng là đồng hồ thời gian thực vừa có tính năng lưu trữ dữ liệu tạm thời. Xem chi tiết ở phần 1.5 tr50. + Vi xử lý có chức năng như sau : Thu nhận dữ liệu từ module Sim300C thông qua cổng RS-232 và xuất ra lệnh từ các port để điều khiển khối relay đóng ngắt thiết bị. Khi thiết bị đóng hoặc mở thông qua khối cảm biến dòng đưa tín hiệu về các chân port của vi xử lý. 89C51 sẽ xử lý và xuất lệnh đưa đến module Sim300C để thông báo cho người quản lý. P0.0, P0.2, P0.4, P0.6, P2.5, P2.7 được nối vào chân số 2 (chân katốt của diode phát) của opto 4N35. Nhiệm vụ đóng mở relay cho thiết bị. P0.1, P0.3, P0.5, P0.7, P2.4, P2.6 được nối vào chân số 1 ngõ ra của IC HA17358. Nhiệm vụ nhận tín hiệu hồi về của thiết bị (đóng hoặc mở). P1.0 – P1.7 được nối với chân 4 - 11 của Dallas DS12C887. Đây là lọai bus đa hợp, vừa là chân địa chỉ vừa là chân dữ liệu. Nhiệm vụ truyền thông tin dữ liệu qua lại. P3.3 dùng để điều khiển khối reset khi mô hình bị treo. P3.4 được nối với chân 13 (CE\) (CS) của DS12C887. Ngõ vào lựa chọn RTC. Xem chi tiết ở tr49. P3.5 được nối với chân 14 (AS) của DS12C887. Chân chốt địa chỉ. Xem chi tiết ở tr49. P3.6 được nối với chân 15 (R/W\) của DS12C887. Ngõ vào cho phép đọc/ghi. Xem chi tiết ở tr49. P3.7 được nối với chân 17 (DS) của DS12C887. Chân chốt dữ liệu. Xem chi tiết ở tr49. 3.2 Khối Relay: Khối này có nhiệm vụ đóng mở thiết bị khi có lệnh từ vi xử lý và cảm biến dòng khi thiết bị đóng hoặc mở để đưa về vi xử lý. + Khi có lệnh từ vi xử lý (P0.0, P0.2, P0.4, P0.6, P2.5, P2.7) ở mức cao (logic 1) thì opto 4N35 không dẫn -> relay không đóng -> thiết bị không họat động. Còn ở thấp (logic 0) thì diode sẽ sáng -> trans dẫn -> relay được đóng -> thiết bị hoạt động. + Khi thiết bị hoạt động thì sẽ có dòng hồi về thông qua cuộn dây vì giá trị dòng nhỏ nên mới cho qua mạch khuếch đại dòng (IC HA17358) ở mức cao (logic 1) đưa đến vi xử lý bởi các port P0.1, P0.3, P0.5, P0.7, P2.4, P2.6. Còn nếu thiết bị không hoạt động -> không có dòng hồi về thì tại các chân port sẽ ở mức thấp (logic 0). Hình 2.23: Sơ đồ nguyên lý khối Relay. 3.3 Khối Module Sim300C: Hình 2.24: Sơ đồ nguyên lý của Module Sim300C. a. Khối nguồn: Có 3 mức nguồn cơ bản mà Module Sim300C sử dụng đến là 4V, 3V3, 2V5. Hình 2.25: Sơ đồ nguyên lý khối nguồn. b. Khối giao tiếp giữa Sim300C và RS232: Hình 2.26: Sơ đồ nguyên lý giao tiếp của MAX3238. MAX3238 là bộ thu phát vô tuyến. MAX3238 bao gồm 5 bộ phát, 3 bộ thu được cung cấp bởi nguồn 3V và khối Autoshutdown Plus. Hình 2.27: Sơ đồ chân của MAX3238. - Chân 5, 6, 7, 10, 12 (T1out – T5out): ngõ ra của bộ phát được truyền đến cổng RS232. - Chân 24, 23, 22, 19, 17 (T1in – T5in): ngõ vào của bộ phát nhận tín hiệu từ Sim300C. - Chân 8, 9, 11 (R1in – R3in): ngõ vào của bộ thu nhận tín hiệu từ RS232. - Chân 21, 20, 18 (R1out – R3out): ngõ ra của bộ thu được truyền đến Sim300C. - Chân 26 là chân nguồn (Vcc), chân 2 nối mass (GND). - Khối Autoshutdown Plus (khối điều khiển) có nhiệm vụ On hoặc Off họat động nguồn trên mạch điện khi nó nhận biết được một tín hiệu không hợp lý trong việc chuyển từ trạng thái này sang trạng thái khác trên những ngõ vào của những bộ phát và bộ thu. - Tất cả những chân vào ra của bộ phát và thu đều được bảo vệ bởi mạch ESD. - Điểm đặc trưng là cung cấp được nguồn dòng 10nA. - Ngòai ra, MAX3238 còn tương đương với MAX3248 đều sử dụng mức nguồn từ 3V đến 5V5. Nó chỉ khác nhau ở điểm bắt đầu của ngõ vào. MAX3248 có điện áp ngõ vào thấp từ 0.6V đến 1.2V, còn MAX3238 có điện áp ngõ vào chuẩn ở mức 1.8V. - Tụ C3, C4 dùng để nạp xả điện tích nhanh chóng. Còn tụ C2, C5 có thể tích trữ điện tích lớn cung cấp cho V+ và V-. - Nếu chân ForceOFF\ nối mass thì các bộ phát và bộ thu ngưng họat động và các ngõ ra có tổng trở cao, ngọai trừ chân R1outB. c. Khối xử lý trung tâm (Sim300C): Hình 2.28: Sơ đồ chân của Sim300C. - Chân 1, 3, 5, 7, 9 nối nguồn. VBAT từ 3V4 – 4V5, thường là 4V. - Chân 2, 4, 6, 8, 10 và 51 nối mass (GND). Sim300C MAX3238 DBGTX T1IN CTS Truyền T2IN DCD T3IN RI T4IN DTR T5IN DBGRX Nhận R1OUT RTS R2OUT DTR R3OUT Sim VDD Sim RST Sim CLK Sim I/O Sim Prese RS-232 DCD RD Truyền TD DTR MASS DSR SimCard RTS CTS Sim VDD RI Sim RST Sim CLK Sim I/O Sim Prese Hình 2.29: Sơ đồ khối của Sim300C truyền và nhận dữ liệu. - Chân 17 (VDD_EXT): từ 2.85V đến 3.15V, thường là 3V. - Chân 16 (Network Led): có điện áp ngõ ra cao hoặc thấp tùy thuộc trạng thái làm việc của Sim300C. - CTS: Clear to Send. - DCD: Data Carrier Detection. - RI: Ring Indicator. - DTR: Data Terminal Ready. - RTS: Request to Send. d. Khối giao tiếp với Sim Card: Hình 2.30: Sơ đồ chân IC EZ630. - EZ630 dùng để giao tiếp giữa Sim Card với Sim300C. Hình 2.31: Sơ đồ chân của Sim Card (Mobile). - SIM_VDD: nguồn Sim Card được cung cấp bởi ngõ ra Sim300C, có 2 mức điện áp: 3v và 1.8v, dòng là 10mA. - SIM_I/O: ngõ vào/ra dữ liệu của Sim Card. - SIM_CLK: xung Clock của Sim Card. - SIM_RST(27): khởi động lại Sim Card. - SIM Presence(33): giao tiếp Sim Card. e. Khối báo trạng thái làm việc của Sim300C: Hình 2.32: Sơ đồ nguyên lý của khối báo trạng thái làm việc. - Led đỏ để báo trạng thái nguồn 4V. - Led trắng chỉ trạng thái làm việc của mạng lưới (network). - Led trắng ON hoặc OFF tùy thuộc vào chân 16 (Network Led) của Sim300C ở mức cao hay thấp. H91 tương đương như một Transitor dùng để đóng mở. Chân Network được nối với cực B Trans, khi Network ở mức cao hoặc thấp thì Trans sẽ đóng hoặc mở Led trắng. Bảng biểu hiện trạng thái làm việc như sau: Trạng thái Chức năng của Sim300C OFF Sim300C ngừng họat động 64ms ON/800ms OFF Sim300C không tìm thấy network 64ms ON/3000ms OFF Sim300C tìm thấy network 64ms ON/300ms OFF GPRS Communication 3.4 Khối Phát – Thu: a. Bộ Phát: Hình 2.33: Sơ đồ nguyên lý bộ phát. - Chức năng của IC 2803 là đệm dòng và có 8 cổng đảo. - 2803 có 8 ngõ vào từ I0 – I7 và 8 ngõ ra từ O0 – O7. - Chức năng của PT2262 là phát (truyền) dữ liệu đi. - Nó có 4 ngõ vào và một ngõ ra dữ liệu. Ngòai ra, PT2262 còn có 8 đường địa chỉ (A0 – A7) và bộ dao động OSC. - Bộ Transmitter bao gồm mạch cộng hưởng LC và cuộn dây L (ăngten) để phát tín hiệu đi. - TE\ là chân cho phép truyền dữ liệu. - Điện áp Vcc khỏang từ 5V – 15V (thường 12V). b. Bộ thu: - LM358 gồm 2 bộ op-amp có nhiệm vụ khuếch đại tín hiệu nhận được. - Chức năng của PT2272-M4 là nhận dữ liệu không có chốt. - Nó cũng có 8 đường địa chỉ A0 – A7, bộ dao động OSC, 4 ngõ ra (D0 – D3) và một ngõ vào dữ liệu (Din). - VT (Valid Transmission) là chân ở mức cao khi có dữ liệu ở ngõ ra (D3). - Điện áp Vcc từ 5V – 12V (thường là 5V). Hình 2.34: Sơ đồ nguyên lý bộ thu. 4. Sơ đồ mạch Layout Hình 2.35: Sơ đồ layout của khối vi điều khiển. Hình 2.36: Sơ đồ layout của khối Relay. Hình 2.37: Sơ đồ layout của bộ phát. 5. Nguyên lý hoạt động 5.1 Cú pháp lệnh: + Khi soạn tin nhắn gởi đi: “HELLO!SIM300”: đây là câu lệnh chào. Khi đó Sim300C sẽ gởi tin nhắn chào lại như sau: “HELLO! CHAO BAN, MOI BAN NHAP LENH DIEU KHIEN”. “TEST/123456”: đây là câu lệnh dùng để kiểm tra 6 thiết bị, xem thiết bị đó hoạt động hay không. Từ 1 -> 6 tương đương cho th/bị 1 -> th/bị 6. “CONTROL/123456/XXXXXX”: đây là câu lệnh dùng để điều khiển đóng hoặc mở 1 trong 6 thiết bị mà người quản lý chọn. X: giữ trạng thái trước đó (ON or OFF). 1: là mở cho thiết bị hoạt động (ON). 0: là ngắt cho thiết bị ngưng hoạt động (OFF). + Khi trả lời đến máy điện thoại người quản lý thì có nội dung sau: >LIGHT WALL: ON or OFF (thiết bị số 1) >LIGHT MIRROR: ON or OFF (thiết bị số 2) >LIGHT PICTURE: ON or OFF (thiết bị số 3) >LIGHT ENTRANCE: ON or OFF (thiết bị số 4) >TIVI: ON or OFF (thiết bị số 5) >AIR: ON or OFF (thiết bị số 6) “ON”: thiết bị đã hoạt động. “OFF”: thiết bị đã ngưng hoạt động. 5.2 Giải thích: Khi người quản lý sử dụng điện thoại di động soạn tin nhắn SMS (đtdđ được xem như thiết bị điều khiển) với cú pháp như trên gởi đến số sim bất kỳ đã được lắp đặt sẵn trên module Sim300C (như sim mobile, sim vina,…) thì ăngten có nhiệm vụ bắt sóng và thu dữ liệu (nội dung tin nhắn) chuyển xuống Sim300C. Sim300C sẽ đọc dữ liệu đó. Cấu trúc dữ liệu (nội dung tin nhắn) đó được viết bằng câu lệnh AT. Khi dữ liệu (nội dung tin nhắn) được gởi từ người quản lý cho đến lúc module Sim300C nhận được thì câu lệnh AT sẽ có cú pháp như sau: “+CMT: ,,,,,,” : địa chỉ khởi đầu. : thời gian. “YY/MM/DD,hh:mm:ss + hoặc - zz”. “zz”: có nghĩa là chênh lệch múi giờ. : byte đầu tiên của SMS. : nhận dạng byte của SMS. : mã của dữ liệu. : địa chỉ gởi tin nhắn đến. (số điện thọai của người quản lý) : nơi mà dữ liệu được gởi đến. (viết bằng mã GSM) ‘+CMT’ là ngôn ngữ (câu lệnh) mặc định của SMS . Sim300C MAX3238 Truyền DBGTX T1IN CTS T2IN Nhận DBGRX R1OUT Sim VDD Sim RST R1IN Sim CLK T1OUT Sim I/O T2OUT Sim Prese Truyền RS-232 RD CTS SimCard TD Mass Sim VDD SimRST S Sim CLK MAX232 Sim I/O T1OUT Sim Prese R1IN R1OUT T1IN VXL TXD RXD P2.3 Hình 2.38: Sơ đồ truyền và nhận tín hiệu. Sau khi module Sim300C đọc dữ liệu (nội dung tin nhắn) xong, sẽ đưa dữ liệu đến ngõ vào (chân 13-R1in) của MAX232 thông qua (chân 2-RXD) cổng giao tiếp RS-232. Ngòai ra, MAX232 kết hợp với opto 4N35 còn có nhiệm vụ ngăn chặn các tín hiệu khác đến khi tín hiệu cũ còn đang thực hiện. Dữ liệu tại ngõ ra (chân 12-R1out) của MAX232 được đưa đến (chân10-RXD) vi xử lý 89C51. Khi 89C51 nhận dữ liệu thì nó sẽ xử lý câu lệnh AT bằng cách so sánh dữ liệu nhận được với chương trình đã viết sẵn và 89C51 sẽ chuyển dữ liệu sang bộ nhớ tạm thời (DS12C887) để lưu trữ. Ví dụ: Khi người quản lý gởi CONTROL/123456/XXXXXX. Module Sim300C sẽ nhận dữ liệu và đưa đến vi xử lý 89C51 là : ‘+CMT:“+84XXXXXXXXX”,,”XXXXXXXXXXXX”’ Và ‘CONTROL/123456/XXXXXX’. Khi đó 89C51 sẽ kiểm tra dữ liệu nhận được từ module đưa đến có đúng với câu lệnh đã được đặt trong chương trình là ‘+CMT:“+84XXXXXXXXX”,,”XXXXXXXXXXXX”’ và ‘CONTROL/123456/XXXXXX’ không. “+84XXXXXXXXX”: là số điện thoại của người quản lý gởi đến. “XXXXXXXXXXXX”: là một chuỗi mã nhị phân của GSM (Global Standard for Mobile Equipment Identity). Chuỗi mã nhị phân này có thể thay đổi từ GSM và không có ảnh hưởng đến việc thực thi chương trình. CONTROL/123456/XXXXXX: là câu lệnh dùng để điều khiển cho các thiết bị. Ta có thể thay đổi câu lệnh CONTROL/123456/XXXXXX tùy ý bằng cách đặt tên cho câu lệnh trong chương trình. Vì trong chương trình ta đã đặt tên là CONTROL/123456/XXXXXX nên khi người quản lý điều khiển thiết bị phải sọan đúng như trên. Nếu vi xử lý 89C51 nhận đúng cấu trúc dữ liệu là: ‘+CMT:“+84XXXXXXXXX”,,”XXXXXXXXXXXX”’ và ‘CONTROL/123456/XXXXXX’ thì sẽ thực thi lệnh theo đúng chương trình đã được viết. Còn nếu 89C51 nhận không đúng câu lệnh như trên thì sẽ không thực thi lệnh. Đoạn chương trình minh họa: TABLE_SIM_CM2 : DB '+CMT: "+84XXXXXXXXX",,"XXXXXXXXXXX"' DB 'CONTROL/123456/XXXXXX' CHECK_CM2 : MOV DPTR,#TABLE_SIM_CM2 MOV DPTR_SIM,#SIM_BUFFER LCALL PROCESS_COMMAND LCALL LOAD_TEL_NUMBER LCALL CONTROL_DEVICE Xử lý câu lệnh xong, nó sẽ xuất ra lệnh để điều khiển (bằng port 0 và port 2) đóng ngắt relay cho thiết bị hoạt động hoặc ngưng hoạt động thông qua opto 4N35. Khi thiết bị hoạt động hoặc ngưng hoạt động thì sẽ có bộ phận cảm biến dòng (sử dụng cuộn dây kết hợp IC HA17358) đưa về vi xử lý. Nếu thiết bị hoạt động thì có dòng cảm biến đưa về vi xử lý, còn ngược lại thì không có dòng đưa về vi xử lý. Tiếp theo, 89C51 sẽ gởi dữ liệu (đã được viết trong chương trình bằng câu lệnh AT) đến module Sim300C và Sim300C sẽ truyền dữ liệu đi (bằng ăngten) đến điện thoại di động cho người quản lý biết. Khi dữ liệu (nội dung tin nhắn) được gởi từ module đến đtdđ của người quản lý thì câu lệnh AT sẽ có cú pháp như sau: “AT+CGMS= [,]” “ ”. : địa chỉ gởi tin nhắn đến. (số điện thoại được lắp trên module) : dữ liệu (nội dung tin nhắn). : nơi mà dữ liệu được gởi đến. (viết bằng mã GSM) : bắt đầu truyền dữ liệu đi. ‘AT+CGMS=’ cũng là ngôn ngữ (câu lệnh) mặc định của SMS, được sử dụng để gởi dữ liệu (nội dung tin nhắn) đi. Ví dụ: để điều khiển cho thiết bị 1 hoạt động (LIGHT WALL), thiết bị 5(TIVI)ngưng họat động và các thiết bị còn lại vẫn giữ nguyên trạng thái. Soạn tin nhắn như sau: “CONTROL/123456/1XXX0X” Sau khi thực thi việc điều khiển xong, thì người quản lý sẽ nhận được nội dung tin nhắn phản hồi là: >LIGHT WALL: ON >LIGHT MIRROR: ON or OFF >LIGHT PICTURE: ON or OFF >LIGHT ENTRANCE: ON or OFF >TIVI: OFF >AIR: ON or OFF Đoạn chương trình minh họa: TABLE_CMGS : DB 'AT+CMGS=' CHECK_CM2 : MOV DPTR,#TABLE_CMGS LCALL TRANS_MESSAGE LCALL TRANS_TEL_NUMBER LCALL TRANS_ENTER LCALL TRANS_STATUS_ALL_DEVICE LCALL TRANS_CTRL_Z EXIT_CHECK_CM2 : RET 6. Lưu đồ giải thuật Chương trình chính Bắt đầu Đọc dữ liệu từ Sim300C N Có dữ liệu RI=1 Y Lưu dữ liệu vào RAM DS12C887 Y Dữ liệu bằng Chương trình kiểm tra Exit cú pháp 1 thiết bị Y Dữ liệu bằng Chương trình điều khiển Exit cú pháp 2 thiết bị Y Dữ liệu bằng Gửi lời chào SMS qua Exit cú pháp 3 module Sim300C N Dữ liệu khác Exit Chương trình kiểm tra Bắt đầu trạng thái thiết bị Exit Cho phép đóng thiết bị Gởi thông báo cho Sim300C Kiểm tra t/h hồi tiếp Thbị đang mở và vẫn còn tốt dòng từ port Y Dòng = 0 Y Cho phép tắt thbị Dòng = 0 N N Thiết bị đang đóng Thiết bị đã bị hư và vẫn còn tốt Gửi thông báo cho Gửi thông báo lỗi thbị Sim300C cho Sim300C Exit Exit 7. Chương trình vi xử lý ORG 0000H LJMP PROGRAM ORG 0023H LJMP SERIAL_ISR ;***-----------------------*** PROGRAM : VAR : WALL_RELAY BIT P0.0 ;-------------------------------------------------------Bit điều khiển Relay MIRROR_RELAY BIT P0.2 PICTURE_RELAY BIT P2.7 ENTRANCE_RELAY BIT P2.5 TIVI_RELAY BIT P0.4 AIR_RELAY BIT P0.6 AMP_WALL BIT P0.1 ;-------------------------------------------------------Bit kiểm tra AMP của tải AMP_MIRROR BIT P0.3 AMP_PICTURE BIT P2.6 AMP_ENTRANCE BIT P2.4 AMP_TIVI BIT P0.5 AMP_AIR BIT P0.7 AUTORESET BIT P3.3 ;-------------------------------------------------------Bit auto reset hệ thống CE_DS BIT P3.4 ;--------------------------------------------------Cho phép chọn chip DS12887 DE_DS BIT P3.7 ;--------------------------------------------------Cho phép bus dữ liệu DS12887 AE_DS BIT P3.5 ;--------------------------------------------------Cho phép bus địa chỉ DS12887 RW_DS BIT P3.6 ;--------------------------------------------------Read/Write DS12887 OFFSET_BIT EQU 20H ;----------------------------------Bit 00H - 07H OFFSET dữ liệu từ DS12887 OFFSET_BIT0 BIT 00H OFFSET_BIT1 BIT 01H OFFSET_BIT2 BIT 02H OFFSET_BIT3 BIT 03H OFFSET_BIT4 BIT 04H OFFSET_BIT5 BIT 05H OFFSET_BIT6 BIT 06H OFFSET_BIT7 BIT 07H STATUS_LED EQU 21H ;---------------Led hiển thị trạng thái thiết bị WALL_LED BIT 08H MIRROR_LED BIT 09H PICTURE_LED BIT 0AH ENTRANCE_LED BIT 0BH TIVI_LED BIT 0CH AIR_LED BIT 0DH MEM_RELAY EQU 22H ;---------------Bit 10H - 17H lưu trạng thái của 06 Relay điều khiển thiết bị MEM_RELAY1 BIT 10H MEM_RELAY2 BIT 11H MEM_RELAY3 BIT 12H MEM_RELAY4 BIT 13H MEM_RELAY5 BIT 14H MEM_RELAY6 BIT 15H COUNTER EQU 30H ;----------------------------------------Đếm thời gian nhận dữ liệu STATUS_SYS EQU 37H ;---------------------Thông báo tình trạng hệ thống >G(GOOD), F(FALSE) STATUS_WALL EQU 38H ;---------------------Trạng thái đến WALL >N(ON), O(OFF), F(FALSE) STATUS_MIRROR EQU 39H ;---------------------Trạng thái đến MIRROR >N(ON), O(OFF), F(FALSE) STATUS_PICTURE EQU 3AH ;---------------------Trạng thái đến PICTURE >N(ON), O(OFF), F(FALSE) STATUS_ENTRANCE EQU 3BH ;-----------------Trạng thái đến ENTRANCE >N(ON), O(OFF), F(FALSE) STATUS_TIVI EQU 3CH ;---------------------Trạng thái đến TIVI >N(ON), O(OFF), F(FALSE) STATUS_AIR EQU 3DH ;---------------------Trạng thái đến AIR >N(ON), O(OFF), F(FALSE) ADDRESS_DS EQU 3EH ;---------------------Lưu địa chỉ giao tiếp với DS12887 DATA_DS EQU 3FH ;---------------------Lưu dữ liệu giao tiếp với DS12887 DPTR_SIM EQU 40H ;---------------Con trỏ truy xuất dữ liệu SIM300C DPTR_RELAY EQU 11H ;---------------Thanh ghi BACKUP trạng thái các RELAY trong DS12887 DPTR_RA EQU 0AH ;---------------------------------Địa chỉ truy xuất thanh ghi A trong DS12887 DPTR_RB EQU 0BH ;---------------------------------Địa chỉ truy xuất thanh ghi B trong DS12887 TEL_BUFFER EQU 12H ;-----------------------------Lưu số điện thoại nhắn tin hoặc gởi đến SIM300C (12H - 22H = 16 Byte = 16 Number) E_TEL_BUFFER EQU 22H ;-----------------------------Kết thúc vùng RAM lưu số điện thoại SIM_BUFFER EQU 22H ;-----------------------------Vùng RAM lưu dữ liệu nhận từ SIM300C(22H - 7FH = 94 Byte) E_SIM_BUFFER EQU 7FH ;-----------------------------Kết thúc vùng RAM lưu dữ liệu nhận từ SIM300C ;R0, R1 :Thanh ghi đa năng ;R7 :Thanh ghi Relay ;***-----------------------*** START_PRO : MOV TMOD,#21H ;------------------------------------Timer 1 autoreload, Timer 0 counter 16 bit MOV SCON,#01010000B MOV IE,#10010000B ;------------------------------------Cho phép ngắt nối tiếp MOV TL1,#00H MOV TH1,#-3 ; 9600 Baud CLR EA SETB TR1 ;Mở Timer 1 SETB ES ;Cho phép ngắt nối tiếp họat động SETB WALL_RELAY SETB MIRROR_RELAY SETB PICTURE_RELAY SETB ENTRANCE_RELAY SETB TIVI_RELAY SETB AIR_RELAY MOV MEM_RELAY,#00000000B MOV STATUS_SYS,#'G' ;------------------------------ ---'G' = GOOD, 'F' = FLASE LCALL ERASE_SIM_BUFFER ;----------------------------------Xóa bỏ nhớ BUFFER nhận được từ SIM300C MOV ADDRESS_DS,#DPTR_RA ;----------------------------------Khởi động tham số cho DS12887 MOV DATA_DS,#00101111B LCALL WRITE_DS12887 MOV ADDRESS_DS,#DPTR_RB MOV DATA_DS,#00001010B LCALL WRITE_DS12887 LCALL RELOAD_STATUS_RELAY ;----------------------------------Load lại giá trị trước đó của các Relay CLR RI CLR TI SETB EA ;***-----------------------*** MAIN : ;///Bắt tay và cho nhận dữ liệu của SIM300C MOV DPTR_SIM,#SIM_BUFFER ;---------------------------Định vùng RAM lưu dữ liệu từ SIM300C gởi qua MOV COUNTER,#10 ;--------------Đợi 100mS để nhận dữ liệu từ SIM300C (cho COUNTER=10 mỗi khi có ngắt dữ liệu SERIAL từ SIM300C) WAIT_DATA_SIM300 : LCALL DELAY10mS DJNZ COUNTER,WAIT_DATA_SIM300 CPL AUTORESET CLR EA ;----------------------Cắm ngắt để dự phòng dữ liệu do các th bị khác gởi về LCALL CHECK_SIM_BUFFER ;----------------------Xử lý dữ liệu thu được từ SIM300C LCALL CHECK_STATUS_LED ;----------------------Kiểm tra trạng thái của các thiết bị LCALL BACKUP_STATUS_RELAY ;----------------------BACKUP trạng thái hiện tại của các Relay CLR RI ;---------Xóa cờ ngắt nhận dữ liệu tồn tại trong SERIAL BUFFER ,nếu có SETB EA LJMP MAIN ;***-----------------------*** CHECK_SIM_BUFFER : LCALL CHECK_HELLO LCALL CHECK_CM1 LCALL CHECK_CM2 LCALL ERASE_SIM_BUFFER RET ;***-----------------------*** CHECK_HELLO : MOV DPTR,#TABLE_HELLO_SIM MOV DPTR_SIM,#SIM_BUFFER LCALL PROCESS_COMMAND LCALL LOAD_TEL_NUMBER MOV DPTR,#TABLE_CMGS LCALL TRANS_MESSAGE LCALL TRANS_TEL_NUMBER LCALL TRANS_ENTER MOV DPTR,#TABLE_HELLO LCALL TRANS_MESSAGE LCALL TRANS_CTRL_Z EXIT_CHECK_HELLO : RET ;***-----------------------*** CHECK_CM1 : MOV DPTR,#TABLE_SIM_CM1 MOV DPTR_SIM,#SIM_BUFFER LCALL PROCESS_COMMAND LCALL LOAD_TEL_NUMBER LCALL TEST_ALL_DEVICE MOV DPTR,#TABLE_CMGS LCALL TRANS_MESSAGE LCALL TRANS_TEL_NUMBER LCALL TRANS_ENTER LCALL TRANS_STATUS_ALL_DEVICE LCALL TRANS_CTRL_Z EXIT_CHECK_CM1 : RET ;***-----------------------*** CHECK_CM2 : MOV DPTR,#TABLE_SIM_CM2 MOV DPTR_SIM,#SIM_BUFFER LCALL PROCESS_COMMAND LCALL LOAD_TEL_NUMBER LCALL CONTROL_DEVICE MOV DPTR,#TABLE_CMGS LCALL TRANS_MESSAGE LCALL TRANS_TEL_NUMBER LCALL TRANS_ENTER LCALL TRANS_STATUS_ALL_DEVICE LCALL TRANS_CTRL_Z EXIT_CHECK_CM2 : RET ;***-----------------------*** PROCESS_COMMAND : MOV STATUS_SYS,#'G' ;--------------------------Bắt đầu xử lý lệnh thì cho STATUS_SYS = GOOD LOOP_PROCESS_COMMAND : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS MOV A,#00H MOVC A,@A+DPTR CJNE A,#'X',COMPARE_COMMAND LJMP CONT_PROCESS_COMMAND COMPARE_COMMAND : CJNE A,DATA_DS,ERROR_COMMAND LJMP CONT_PROCESS_COMMAND ERROR_COMMAND : MOV STATUS_SYS,#'F’ ;Dữ liệu False LJMP EXIT_PROCESS_COMMAND CONT_PROCESS_COMMAND : INC DPTR_SIM INC DPTR MOV A,#00H MOVC A,@A+DPTR CJNE A,#00H,LOOP_PROCESS_COMMAND MOV STATUS_SYS,#'G' ;Dữ liệu Good EXIT_PROCESS_COMMAND : RET ;***-----------------------*** LOAD_TEL_NUMBER : MOV A,STATUS_SYS CJNE A,#'G',ERROR_TEL_NUMBER MOV R0,#TEL_BUFFER MOV A,#SIM_BUFFER ADD A,#08 MOV DPTR_SIM,A MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'"',ERROR_TEL_NUMBER MOV ADDRESS_DS,R0 MOV DATA_DS,A LCALL WRITE_DS12887 INC R0 INC DPTR_SIM LOOP_LOAD_TEL_NUMBER : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS MOV ADDRESS_DS,R0 MOV DATA_DS,A LCALL WRITE_DS12887 INC R0 INC DPTR_SIM MOV A,DATA_DS CJNE A,#'"',CHECK_LENGTH_TEL_NUMBER ;-------------------Chưa gặp dấu " thì kiểm tra độ dài của TEL NUMBER MOV ADDRESS_DS,R0 MOV DATA_DS,#00H ;-------------------Ghi mã kết thúc dữ liệu cho số TEL NUMBER LCALL WRITE_DS12887 MOV STATUS_SYS,#'G' ;Dữ liệu Good LJMP EXIT_LOAD_TEL_NUMBER CHECK_LENGTH_TEL_NUMBER : ;Kiểm tra độ dài của TEL NUMBER (yêu cầu <16 ký tự = 22H - 12H) CJNE R0,#E_TEL_BUFFER,LOOP_LOAD_TEL_NUMBER ERROR_TEL_NUMBER : MOV STATUS_SYS,#'F' ;Dữ liệu False EXIT_LOAD_TEL_NUMBER : RET ;***-----------------------*** TRANS_TEL_NUMBER : MOV A,STATUS_SYS CJNE A,#'G',ERROR_TRANS_TEL_NUMBER MOV DPTR_SIM,#TEL_BUFFER MOV R0,#TEL_BUFFER LOOP_TRANS_TEL_NUMBER : MOV ADDRESS_DS,R0 LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#00H,CONT_TRANS_TEL_NUMBER MOV STATUS_SYS,#'G' ;Dữ liệu Good LJMP EXIT_TRANS_TEL_NUMBER CONT_TRANS_TEL_NUMBER : CLR TI MOV SBUF,A JNB TI,$ CLR TI INC R0 LCALL DELAY50mS CJNE R0,#E_TEL_BUFFER,LOOP_TRANS_TEL_NUMBER ERROR_TRANS_TEL_NUMBER : MOV STATUS_SYS,#'F' ;Dữ liệu False EXIT_TRANS_TEL_NUMBER : RET ;***-----------------------*** TRANS_MESSAGE : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_MESSAGE LOOP_TRANS_MESSAGE : MOV A,#00H MOVC A,@A+DPTR CJNE A,#00H,CONT_TRANS_MESSAGE MOV STATUS_SYS,#'G' ;Dữ liệu Good LJMP EXIT_TRANS_MESSAGE CONT_TRANS_MESSAGE : CLR TI MOV SBUF,A JNB TI,$ CLR TI INC DPTR LCALL DELAY50mS LJMP LOOP_TRANS_MESSAGE EXIT_TRANS_MESSAGE : RET ;***-----------------------*** TRANS_ENTER : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_ENTER CLR TI MOV SBUF,#13 ;Truyền mã Enter JNB TI,$ CLR TI LCALL DELAY50mS EXIT_TRANS_ENTER : RET ;***-----------------------*** TRANS_CTRL_Z : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_CTRL_Z CLR TI MOV SBUF,#26 ;Truyền Byte CTRL_Z JNB TI,$ CLR TI LCALL DELAY50mS EXIT_TRANS_CTRL_Z : RET ;***-----------------------*** TRANS_STATUS_ALL_DEVICE : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_ALL_DEVICE LCALL TRANS_STATUS_WALL LCALL TRANS_STATUS_MIRROR LCALL TRANS_STATUS_PICTURE LCALL TRANS_STATUS_ENTRANCE LCALL TRANS_STATUS_TIVI LCALL TRANS_STATUS_AIR EXIT_TRANS_STATUS_ALL_DEVICE : RET ;***-----------------------*** TRANS_STATUS_WALL : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_WALL MOV DPTR,#TABLE_LIGHT_WALL LCALL TRANS_MESSAGE MOV A,STATUS_WALL CHECK_ON_WALL : CJNE A,#'N',CHECK_OFF_WALL MOV DPTR,#TABLE_STATUS_ON LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_WALL CHECK_OFF_WALL : CJNE A,#'O',CHECK_FALSE_WALL MOV DPTR,#TABLE_STATUS_OFF LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_WALL CHECK_FALSE_WALL : CJNE A,#'F',EXIT_TRANS_STATUS_WALL MOV DPTR,#TABLE_STATUS_FALSE LCALL TRANS_MESSAGE EXIT_TRANS_STATUS_WALL : LCALL TRANS_ENTER RET ;***-----------------------*** TRANS_STATUS_MIRROR : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_MIRROR MOV DPTR,#TABLE_LIGHT_MIRROR LCALL TRANS_MESSAGE MOV A,STATUS_MIRROR CHECK_ON_MIRROR : CJNE A,#'N',CHECK_OFF_MIRROR MOV DPTR,#TABLE_STATUS_ON LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_MIRROR CHECK_OFF_MIRROR : CJNE A,#'O',CHECK_FALSE_MIRROR MOV DPTR,#TABLE_STATUS_OFF LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_MIRROR CHECK_FALSE_MIRROR : CJNE A,#'F',EXIT_TRANS_STATUS_MIRROR MOV DPTR,#TABLE_STATUS_FALSE LCALL TRANS_MESSAGE EXIT_TRANS_STATUS_MIRROR : LCALL TRANS_ENTER RET ;***-----------------------*** TRANS_STATUS_PICTURE : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_PICTURE MOV DPTR,#TABLE_LIGHT_PICTURE LCALL TRANS_MESSAGE MOV A,STATUS_PICTURE CHECK_ON_PICTURE : CJNE A,#'N',CHECK_OFF_PICTURE MOV DPTR,#TABLE_STATUS_ON LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_PICTURE CHECK_OFF_PICTURE : CJNE A,#'O',CHECK_FALSE_PICTURE MOV DPTR,#TABLE_STATUS_OFF LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_PICTURE CHECK_FALSE_PICTURE : CJNE A,#'F',EXIT_TRANS_STATUS_PICTURE MOV DPTR,#TABLE_STATUS_FALSE LCALL TRANS_MESSAGE EXIT_TRANS_STATUS_PICTURE : LCALL TRANS_ENTER RET ;***-----------------------*** TRANS_STATUS_ENTRANCE : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_ENTRANCE MOV DPTR,#TABLE_LIGHT_ENTRANCE LCALL TRANS_MESSAGE MOV A,STATUS_ENTRANCE CHECK_ON_ENTRANCE : CJNE A,#'N',CHECK_OFF_ENTRANCE MOV DPTR,#TABLE_STATUS_ON LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_ENTRANCE CHECK_OFF_ENTRANCE : CJNE A,#'O',CHECK_FALSE_ENTRANCE MOV DPTR,#TABLE_STATUS_OFF LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_ENTRANCE CHECK_FALSE_ENTRANCE : CJNE A,#'F',EXIT_TRANS_STATUS_ENTRANCE MOV DPTR,#TABLE_STATUS_FALSE LCALL TRANS_MESSAGE EXIT_TRANS_STATUS_ENTRANCE : LCALL TRANS_ENTER RET ;***-----------------------*** TRANS_STATUS_TIVI : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_TIVI MOV DPTR,#TABLE_TIVI LCALL TRANS_MESSAGE MOV A,STATUS_TIVI CHECK_ON_TIVI : CJNE A,#'N',CHECK_OFF_TIVI MOV DPTR,#TABLE_STATUS_ON LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_TIVI CHECK_OFF_TIVI : CJNE A,#'O',CHECK_FALSE_TIVI MOV DPTR,#TABLE_STATUS_OFF LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_TIVI CHECK_FALSE_TIVI : CJNE A,#'F',EXIT_TRANS_STATUS_TIVI MOV DPTR,#TABLE_STATUS_FALSE LCALL TRANS_MESSAGE EXIT_TRANS_STATUS_TIVI : LCALL TRANS_ENTER RET ;***-----------------------*** TRANS_STATUS_AIR : MOV A,STATUS_SYS CJNE A,#'G',EXIT_TRANS_STATUS_AIR MOV DPTR,#TABLE_AIR LCALL TRANS_MESSAGE MOV A,STATUS_AIR CHECK_ON_AIR : CJNE A,#'N',CHECK_OFF_AIR MOV DPTR,#TABLE_STATUS_ON LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_AIR CHECK_OFF_AIR : CJNE A,#'O',CHECK_FALSE_AIR MOV DPTR,#TABLE_STATUS_OFF LCALL TRANS_MESSAGE LJMP EXIT_TRANS_STATUS_AIR CHECK_FALSE_AIR : CJNE A,#'F',EXIT_TRANS_STATUS_AIR MOV DPTR,#TABLE_STATUS_FALSE LCALL TRANS_MESSAGE EXIT_TRANS_STATUS_AIR : LCALL TRANS_ENTER RET ;***-----------------------*** TEST_ALL_DEVICE : MOV A,STATUS_SYS CJNE A,#'G',ERROR_TEST_ALL_DEVICE LJMP TEST_WALL ERROR_TEST_ALL_DEVICE : MOV STATUS_SYS,#'F' ;Dữ liệu False LJMP EXIT_TEST_DEVICE TEST_WALL : MOV C,WALL_RELAY ;-----Lưu lại trạng thái của thiết bị (chú ý bit C có thể gây ra lỗi hệ thống) JNB WALL_LED,CONT_TEST_WALL CPL WALL_RELAY ;-----Nếu thiết bị đang ổn thì đưa trở về OFF LCALL DELAY1S ;-----Ổn định trạng thái thiết bị LCALL CHECK_WALL_LED ;-----Kiểm tra AMP của thiết bị CONT_TEST_WALL : JB WALL_LED,ERROR_WALL CPL WALL_RELAY ;-----Cho thiết bị về trạng thái ON LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_WALL_LED ;---------------Kiểm tra AMP của thiết bị JB WALL_LED,GOOD_WALL ERROR_WALL : MOV WALL_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra MOV STATUS_WALL,#'F' ;Thbị False LJMP EXIT_TEST_WALL GOOD_WALL : MOV WALL_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_WALL_LED ;---------------Kiểm tra AMP của thiết bị EXIT_TEST_WALL : TEST_MIRROR : MOV C,MIRROR_RELAY ;---------------Lưu lại trạng thái hiện tại của thiết bị JNB MIRROR_LED,CONT_TEST_MIRROR CPL MIRROR_RELAY ;---------------Nếu thiết bị đang ON thì đưa trở về OFF LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_MIRROR_LED ;---------------Kiểm tra AMP của thiết bị CONT_TEST_MIRROR : JB MIRROR_LED,ERROR_MIRROR CPL MIRROR_RELAY ;---------------Cho thiết bị về trạng thái ON LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_MIRROR_LED ;---------------Kiểm tra AMP của thiết bị JB MIRROR_LED,GOOD_MIRROR ERROR_MIRROR : MOV MIRROR_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra MOV STATUS_MIRROR,#'F' ;---------------Thiết bị False LJMP EXIT_TEST_MIRROR GOOD_MIRROR : MOV MIRROR_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_MIRROR_LED ;---------------Kiểm tra AMP của thiết bị EXIT_TEST_MIRROR : TEST_PICTURE : MOV C,PICTURE_RELAY ;---------------Lưu lại trạng thái hiện tại của thiết bị JNB PICTURE_LED,CONT_TEST_PICTURE CPL PICTURE_RELAY ;---------------Nếu thiết bị đang ON thì đưa trở về OFF LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_PICTURE_LED ;---------------Kiểm tra AMP của thiết bị CONT_TEST_PICTURE : JB PICTURE_LED,ERROR_PICTURE CPL PICTURE_RELAY ;-----Cho thiết bị về trạng thái ON LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_PICTURE_LED ;---------------Kiểm tra AMP của thiết bị JB PICTURE_LED,GOOD_PICTURE ERROR_PICTURE : MOV PICTURE_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra MOV STATUS_PICTURE,#'F' ;Thiết bị False LJMP EXIT_TEST_PICTURE GOOD_PICTURE : MOV PICTURE_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_PICTURE_LED ;---------------Kiểm tra AMP của thiết bị EXIT_TEST_PICTURE : TEST_ENTRANCE : MOV C,ENTRANCE_RELAY ;---------------Lưu lại trạng thái hiện tại của thiết bị JNB ENTRANCE_LED,CONT_TEST_ENTRANCE CPL ENTRANCE_RELAY ;---------------Nếu thiết bị đang ON thì đưa trở về OFF LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_ENTRANCE_LED ;---------------Kiểm tra AMP của thiết bị CONT_TEST_ENTRANCE : JB ENTRANCE_LED,ERROR_ENTRANCE CPL ENTRANCE_RELAY ;-----Cho thiết bị về trạng thái ON LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_ENTRANCE_LED ;---------------Kiểm tra AMP của thiết bị JB ENTRANCE_LED,GOOD_ENTRANCE ERROR_ENTRANCE : MOV ENTRANCE_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra MOV STATUS_ENTRANCE,#'F' ;---------------Thiết bị False LJMP EXIT_TEST_ENTRANCE GOOD_ENTRANCE : MOV ENTRANCE_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_ENTRANCE_LED ;---------------Kiểm tra AMP của thiết bị EXIT_TEST_ENTRANCE : TEST_TIVI : MOV C,TIVI_RELAY ;---------------Lưu lại trạng thái hiện tại của thiết bị JNB TIVI_LED,CONT_TEST_TIVI CPL TIVI_RELAY ;---------------Nếu thiết bị đang ON thì đưa trở về OFF LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_TIVI_LED ;---------------Kiểm tra AMP của thiết bị CONT_TEST_TIVI : JB TIVI_LED,ERROR_TIVI CPL TIVI_RELAY ;---------------Cho thiết bị về trạng thái ON LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_TIVI_LED ;---------------Kiểm tra AMP của thiết bị JB TIVI_LED,GOOD_TIVI ERROR_TIVI : MOV TIVI_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra MOV STATUS_TIVI,#'F' ;Thbị False LJMP EXIT_TEST_TIVI GOOD_TIVI : MOV TIVI_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_TIVI_LED ;---------------Kiểm tra AMP của thiết bị EXIT_TEST_TIVI : TEST_AIR : MOV C,AIR_RELAY ;---------------Lưu lại trạng thái hiện tại của thiết bị JNB AIR_LED,CONT_TEST_AIR CPL AIR_RELAY ;---------------Nếu thiết bị đang ON thì đưa trở về OFF LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_AIR_LED ;---------------Kiểm tra AMP của thiết bị CONT_TEST_AIR : JB AIR_LED,ERROR_AIR CPL AIR_RELAY ;---------------Cho thiết bị về trạng thái ON LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_AIR_LED ;---------------Kiểm tra AMP của thiết bị JB AIR_LED,GOOD_AIR ERROR_AIR : MOV AIR_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra MOV STATUS_AIR,#'F' ;Thiết bị False LJMP EXIT_TEST_AIR GOOD_AIR : MOV AIR_RELAY,C ;---------------Phục hồi lại trạng thái ban đầu của thiết bị trước lúc kiểm tra LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_AIR_LED ;---------------Kiểm tra AMP của thiết bị EXIT_TEST_AIR : EXIT_TEST_DEVICE : RET ;***-----------------------*** CONTROL_DEVICE : MOV A,STATUS_SYS CJNE A,#'G',ERROR_CONTROL_DEVICE MOV A,#SIM_BUFFER ADD A,#63 MOV DPTR_SIM,A LJMP CONTROL_WALL ERROR_CONTROL_DEVICE : MOV STATUS_SYS,#'F' ;Dữ liệu False LJMP EXIT_CONTROL_DEVICE CONTROL_WALL : MOV A,STATUS_WALL CJNE A,#'F',CONTROL_ON_WALL LJMP EXIT_CONTROL_WALL CONTROL_ON_WALL : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'1',CONTROL_OFF_WALL JB WALL_LED,EXIT_CONTROL_WALL CPL WALL_RELAY LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_WALL_LED ;---------------Kiểm tra AMP của thiết bị JB WALL_LED,EXIT_CONTROL_WALL MOV STATUS_WALL,#'F' ;Thbị False LJMP EXIT_CONTROL_WALL CONTROL_OFF_WALL : CJNE A,#'0',EXIT_CONTROL_WALL JNB WALL_LED,EXIT_CONTROL_WALL CPL WALL_RELAY LCALL DELAY1S ;---------------Ổn định trạng thái thiết bị LCALL CHECK_WALL_LED ;---------------Kiểm tra AMP của thiết bị JNB WALL_LED,EXIT_CONTROL_WALL MOV STATUS_WALL,#'F' ;Thbị False EXIT_CONTROL_WALL : INC DPTR_SIM CONTROL_MIRROR : MOV A,STATUS_MIRROR CJNE A,#'F',CONTROL_ON_MIRROR LJMP EXIT_CONTROL_MIRROR CONTROL_ON_MIRROR : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'1',CONTROL_OFF_MIRROR JB MIRROR_LED,EXIT_CONTROL_MIRROR CPL MIRROR_RELAY LCALL DELAY1S LCALL CHECK_MIRROR_LED JB MIRROR_LED,EXIT_CONTROL_MIRROR MOV STATUS_MIRROR,#'F' LJMP EXIT_CONTROL_MIRROR CONTROL_OFF_MIRROR : CJNE A,#'0',EXIT_CONTROL_MIRROR JNB MIRROR_LED,EXIT_CONTROL_MIRROR CPL MIRROR_RELAY LCALL DELAY1S LCALL CHECK_MIRROR_LED JNB MIRROR_LED,EXIT_CONTROL_MIRROR MOV STATUS_MIRROR,#'F' EXIT_CONTROL_MIRROR : INC DPTR_SIM CONTROL_PICTURE : MOV A,STATUS_PICTURE CJNE A,#'F',CONTROL_ON_PICTURE LJMP EXIT_CONTROL_PICTURE CONTROL_ON_PICTURE : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'1',CONTROL_OFF_PICTURE JB PICTURE_LED,EXIT_CONTROL_PICTURE CPL PICTURE_RELAY LCALL DELAY1S LCALL CHECK_PICTURE_LED JB PICTURE_LED,EXIT_CONTROL_PICTURE MOV STATUS_PICTURE,#'F' LJMP EXIT_CONTROL_PICTURE CONTROL_OFF_PICTURE : CJNE A,#'0',EXIT_CONTROL_PICTURE JNB PICTURE_LED,EXIT_CONTROL_PICTURE CPL PICTURE_RELAY LCALL DELAY1S LCALL CHECK_PICTURE_LED JNB PICTURE_LED,EXIT_CONTROL_PICTURE MOV STATUS_PICTURE,#'F' EXIT_CONTROL_PICTURE : INC DPTR_SIM CONTROL_ENTRANCE : MOV A,STATUS_ENTRANCE CJNE A,#'F',CONTROL_ON_ENTRANCE LJMP EXIT_CONTROL_ENTRANCE CONTROL_ON_ENTRANCE : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'1',CONTROL_OFF_ENTRANCE JB ENTRANCE_LED,EXIT_CONTROL_ENTRANCE CPL ENTRANCE_RELAY LCALL DELAY1S LCALL CHECK_ENTRANCE_LED JB ENTRANCE_LED,EXIT_CONTROL_ENTRANCE MOV STATUS_ENTRANCE,#'F' LJMP EXIT_CONTROL_ENTRANCE CONTROL_OFF_ENTRANCE : CJNE A,#'0',EXIT_CONTROL_ENTRANCE JNB ENTRANCE_LED,EXIT_CONTROL_ENTRANCE CPL ENTRANCE_RELAY LCALL DELAY1S LCALL CHECK_ENTRANCE_LED JNB ENTRANCE_LED,EXIT_CONTROL_ENTRANCE MOV STATUS_ENTRANCE,#'F' EXIT_CONTROL_ENTRANCE : INC DPTR_SIM CONTROL_TIVI : MOV A,STATUS_TIVI CJNE A,#'F',CONTROL_ON_TIVI LJMP EXIT_CONTROL_TIVI CONTROL_ON_TIVI : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'1',CONTROL_OFF_TIVI JB TIVI_LED,EXIT_CONTROL_TIVI CPL TIVI_RELAY LCALL DELAY1S LCALL CHECK_TIVI_LED JB TIVI_LED,EXIT_CONTROL_TIVI MOV STATUS_TIVI,#'F' LJMP EXIT_CONTROL_TIVI CONTROL_OFF_TIVI : CJNE A,#'0',EXIT_CONTROL_TIVI JNB TIVI_LED,EXIT_CONTROL_TIVI CPL TIVI_RELAY LCALL DELAY1S LCALL CHECK_TIVI_LED JNB TIVI_LED,EXIT_CONTROL_TIVI MOV STATUS_TIVI,#'F' EXIT_CONTROL_TIVI : INC DPTR_SIM CONTROL_AIR : MOV A,STATUS_AIR CJNE A,#'F',CONTROL_ON_AIR LJMP EXIT_CONTROL_AIR CONTROL_ON_AIR : MOV ADDRESS_DS,DPTR_SIM LCALL READ_DS12887 MOV A,DATA_DS CJNE A,#'1',CONTROL_OFF_AIR JB AIR_LED,EXIT_CONTROL_AIR CPL AIR_RELAY LCALL DELAY1S LCALL CHECK_AIR_LED JB AIR_LED,EXIT_CONTROL_AIR MOV STATUS_AIR,#'F' LJMP EXIT_CONTROL_AIR CONTROL_OFF_AIR : CJNE A,#'0',EXIT_CONTROL_AIR JNB AIR_LED,EXIT_CONTROL_AIR CPL AIR_RELAY LCALL DELAY1S LCALL CHECK_AIR_LED JNB AIR_LED,EXIT_CONTROL_AIR MOV STATUS_AIR,#'F' EXIT_CONTROL_AIR : EXIT_CONTROL_DEVICE : RET ;***-----------------------*** ERASE_SIM_BUFFER : MOV DPTR_SIM,#SIM_BUFFER LOOP_ERASE_SIM_BUFFER : MOV ADDRESS_DS,DPTR_SIM MOV DATA_DS,#00H ;-------------Nếu không có dữ liệu thì data trong BUFFER_SIM300 = 00H LCALL WRITE_DS12887 INC DPTR_SIM MOV A,DPTR_SIM CJNE A,#E_SIM_BUFFER,LOOP_ERASE_SIM_BUFFER RET ;***-----------------------*** CHECK_STATUS_LED : LCALL CHECK_WALL_LED LCALL CHECK_MIRROR_LED LCALL CHECK_PICTURE_LED LCALL CHECK_ENTRANCE_LED LCALL CHECK_TIVI_LED LCALL CHECK_AIR_LED RET ;***-----------------------*** CHECK_WALL_LED : MOV R0,#15 LOOP_CHECK_WALL_LED : JB AMP_WALL,ON_WALL_LED LCALL DELAY5mS DJNZ R0,LOOP_CHECK_WALL_LED CLR WALL_LED MOV STATUS_WALL,#'O' ;Thbị OFF LJMP EXIT_CHECK_WALL_LED ON_WALL_LED : SETB WALL_LED MOV STATUS_WALL,#'N' ;Thbị ON EXIT_CHECK_WALL_LED : CPL AUTORESET RET ;***-----------------------*** CHECK_MIRROR_LED : MOV R0,#15 LOOP_CHECK_MIRROR_LED : JB AMP_MIRROR,ON_MIRROR_LED LCALL DELAY5mS DJNZ R0,LOOP_CHECK_MIRROR_LED CLR MIRROR_LED MOV STATUS_MIRROR,#'O' ;--------------Thiết bị OFF LJMP EXIT_CHECK_MIRROR_LED ON_MIRROR_LED : SETB MIRROR_LED MOV STATUS_MIRROR,#'N' ;--------------Thiết bị ON EXIT_CHECK_MIRROR_LED : CPL AUTORESET RET ;***-----------------------*** CHECK_PICTURE_LED : MOV R0,#15 LOOP_CHECK_PICTURE_LED : JB AMP_PICTURE,ON_PICTURE_LED LCALL DELAY5mS DJNZ R0,LOOP_CHECK_PICTURE_LED CLR PICTURE_LED MOV STATUS_PICTURE,#'O' ;----------------Thiết bị OFF LJMP EXIT_CHECK_PICTURE_LED ON_PICTURE_LED : SETB PICTURE_LED MOV STATUS_PICTURE,#'N' ;----------------Thiết bị ON EXIT_CHECK_PICTURE_LED : CPL AUTORESET RET ;***-----------------------*** CHECK_ENTRANCE_LED : MOV R0,#15 LOOP_CHECK_ENTRANCE_LED : JB AMP_ENTRANCE,ON_ENTRANCE_LED LCALL DELAY5mS DJNZ R0,LOOP_CHECK_ENTRANCE_LED CLR ENTRANCE_LED MOV STATUS_ENTRANCE,#'O' ;-----------------Thiết bị OFF LJMP EXIT_CHECK_ENTRANCE_LED ON_ENTRANCE_LED : SETB ENTRANCE_LED MOV STATUS_ENTRANCE,#'N' ;-----------------Thiết bị ON EXIT_CHECK_ENTRANCE_LED : CPL AUTORESET RET ;***-----------------------*** CHECK_TIVI_LED : MOV R0,#15 LOOP_CHECK_TIVI_LED : JB AMP_TIVI,ON_TIVI_LED LCALL DELAY5mS DJNZ R0,LOOP_CHECK_TIVI_LED CLR TIVI_LED MOV STATUS_TIVI,#'O' ;----------------Thiết bị OFF LJMP EXIT_CHECK_TIVI_LED ON_TIVI_LED : SETB TIVI_LED MOV STATUS_TIVI,#'N' ;----------------Thiết bị ON EXIT_CHECK_TIVI_LED : CPL AUTORESET RET ;***-----------------------*** CHECK_AIR_LED : MOV R0,#15 LOOP_CHECK_AIR_LED : JB AMP_AIR,ON_AIR_LED LCALL DELAY5mS DJNZ R0,LOOP_CHECK_AIR_LED CLR AIR_LED MOV STATUS_AIR,#'O' ;Thbị OFF LJMP EXIT_CHECK_AIR_LED ON_AIR_LED : SETB AIR_LED MOV STATUS_AIR,#'N' ;Thbị ON EXIT_CHECK_AIR_LED : CPL AUTORESET RET ;***-----------------------*** BACKUP_STATUS_RELAY : MOV C,WALL_RELAY MOV MEM_RELAY1,C MOV C,MIRROR_RELAY MOV MEM_RELAY2,C MOV C,PICTURE_RELAY MOV MEM_RELAY3,C MOV C,ENTRANCE_RELAY MOV MEM_RELAY4,C MOV C,TIVI_RELAY MOV MEM_RELAY6,C MOV C,AIR_RELAY MOV MEM_RELAY7,C MOV ADDRESS_DS,#DPTR_RELAY MOV DATA_DS,MEM_RELAY LCALL WRITE_DS12887 RET ;***-----------------------*** RELOAD_STATUS_RELAY : MOV ADDRESS_DS,#DPTR_RELAY LCALL READ_DS12887 MOV MEM_RELAY,DATA_DS MOV C,MEM_RELAY1 MOV WALL_RELAY,C MOV C,MEM_RELAY2 MOV MIRROR_RELAY,C MOV C,MEM_RELAY3 MOV PICTURE_RELAY,C MOV C,MEM_RELAY4 MOV ENTRANCE_RELAY,C MOV C,MEM_RELAY6 MOV TIVI_RELAY,C MOV C,MEM_RELAY7 MOV AIR_RELAY,C RET ;***-----------------------*** WRITE_DS12887 : SETB CE_DS SETB DE_DS SETB RW_DS SETB AE_DS MOV A,ADDRESS_DS LCALL OFFSET_PORT1 MOV P1,A CLR CE_DS NOP CLR AE_DS MOV P1,#0FFH CLR RW_DS MOV A,DATA_DS LCALL OFFSET_PORT1 MOV P1,A SETB RW_DS SETB CE_DS SETB AE_DS MOV P1,#0FFH RET ;***-----------------------*** READ_DS12887 : SETB CE_DS SETB RW_DS SETB DE_DS SETB AE_DS MOV A,ADDRESS_DS LCALL OFFSET_PORT1 MOV P1,A CLR CE_DS NOP CLR AE_DS MOV P1,#0FFH CLR DE_DS NOP MOV A,P1 LCALL OFFSET_PORT1 MOV DATA_DS,A SETB DE_DS SETB CE_DS SETB AE_DS MOV P1,#0FFH RET ;***-----------------------*** OFFSET_PORT1 : RLC A MOV OFFSET_BIT0,C RLC A MOV OFFSET_BIT1,C RLC A MOV OFFSET_BIT2,C RLC A MOV OFFSET_BIT3,C RLC A MOV OFFSET_BIT4,C RLC A MOV OFFSET_BIT5,C RLC A MOV OFFSET_BIT6,C RLC A MOV OFFSET_BIT7,C MOV A,OFFSET_BIT RET ;***-----------------------*** SERIAL_ISR : CLR EA PUSH ACC MOV A,SBUF CLR RI LJMP LOAD_DATA_SIM ;///Kiểm tra và xử lý dữ liệu nhận được từ SIM300C LOAD_DATA_SIM : MOV ADDRESS_DS,DPTR_SIM MOV DATA_DS,A LCALL WRITE_DS12887 INC DPTR_SIM MOV A,DPTR_SIM CJNE A,#E_SIM_BUFFER,CONT_LOAD_DATA_SIM LJMP EXIT_LOAD_DATA_SIM CONT_LOAD_DATA_SIM : MOV COUNTER,#10 EXIT_LOAD_DATA_SIM : LJMP EXIT_SERIAL_ISR EXIT_SERIAL_ISR : POP ACC SETB EA RETI ;***-----------------------*** DELAY120uS : MOV TL0,#LOW(-120) MOV TH0,#HIGH(-120) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY300uS : MOV TL0,#LOW(-300) MOV TH0,#HIGH(-300) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY2mS : MOV TL0,#LOW(-2000) MOV TH0,#HIGH(-2000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY5mS : MOV TL0,#LOW(-5000) MOV TH0,#HIGH(-5000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY10mS : MOV TL0,#LOW(-10000) MOV TH0,#HIGH(-10000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY20mS : MOV TL0,#LOW(-20000) MOV TH0,#HIGH(-20000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET DELAY50mS : MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 CPL AUTORESET RET DELAY100mS : MOV R7,#10 LOOP_DELAY100mS : LCALL DELAY10mS DJNZ R7,LOOP_DELAY100mS CPL AUTORESET RET DELAY1S : MOV R6,#10 LOOP_DELAY1S : LCALL DELAY100mS DJNZ R6,LOOP_DELAY1S RET ;***-----------------------*** TABLE_HELLO_SIM : DB 13,10,'+CMT: "+84XXXXXXXXX",,"XXXXXXXXXXXXXXXXXXXX"' DB 13,10,'HELLO! SIM300',13,10,00H TABLE_SIM_CM1 : DB 13,10,'+CMT: "+84XXXXXXXXX",,"XXXXXXXXXXXXXXXXXXXX"' DB 13,10,'TEST/123456',13,10,00H TABLE_SIM_CM2 : DB 13,10,'+CMT: "+84XXXXXXXXX",,"XXXXXXXXXXXXXXXXXXXX"' DB 13,10,'CONTROL/123456/XXXXXX',13,10,00H TABLE_CMGS : DB 'AT+CMGS=',00H TABLE_HELLO : DB 'HELLO! CHAO BAN, MOI BAN NHAP LENH DIEU KHIEN',00H TABLE_LIGHT_WALL : DB '>LIGHT WALL: ',00H TABLE_LIGHT_MIRROR : DB '>LIGHT MIRROR: ',00H TABLE_LIGHT_PICTURE : DB '>LIGHT PICTURE: ',00H TABLE_LIGHT_ENTRANCE : DB '>LIGHT ENTRANCE:',00H TABLE_TIVI : DB '>TIVI: ',00H TABLE_AIR : DB '>AIR: ',00H TABLE_STATUS_ON : DB 'ON',00H TABLE_STATUS_OFF : DB 'OFF',00H TABLE_STATUS_FALSE : DB 'FALSE',00H TABLE_STATUS_GOOD : DB 'GOOD',00H END CHƯƠNG 3 Đánh giá – Kết luận Kết quả thực hiện đề tài Hình 3.1: Mô hình điều khiển và kiểm tra thiết bị điện bằng đtdđ. 2. Đánh giá đề tài đã thực hiện 2.1 Ưu điểm: Đề tài “ Điều khiển và Kiểm tra thiết bị điện bằng việc soạn tin nhắn SMS qua điện thoại di động” là một hệ thống khá hoàn chỉnh. Với chức năng điều khiển và kiểm tra thiết bị điện vào mọi thời điểm và ở mọi nơi một cách chính xác đã tạo cho người sử dụng an tâm, tin dùng. Hệ thống này có thể lắp đặt ở nhà, phòng ngủ, văn phòng, cơ quan, xí nghiệp, khách sạn, chung cư… Điểm đặc trưng nổi bậc của đề tài là không phụ thuộc vào thời gian, nơi chốn, môi trường, đối tượng điều khiển. Nhờ có điều khiển từ xa mà người sử dụng tiết kiệm được thời gian và quá trình đi lại. Đặc biệt là ở môi trường khắc nghiệt, nguy hiểm. 2.2 Khuyết điểm: Module Sim300C được dùng phổ biến trên thị trường với tính năng dễ sử dụng. Công dụng của module Sim300C là rất đa dạng. Việc điều khiển thiết bị điện bằng điện thoại di động qua sọan tin nhắn SMS chỉ là một phần công dụng. Vì lượng kiến thức của sinh viên còn giới hạn và thời gian thi công cũng hạn chế nên chỉ thực hiện được theo yêu cầu đề tài. Cấu tạo Sim300C rất phức tạp nên việc chế tạo ra nó còn hạn chế, khó khăn. Trên thị trường module Sim300C này được bán ra với giá cũng khá cao nên việc dùng nó để ứng dụng vào cho từng nhà riêng và nghiên cứu trong học tập còn ít. Điều khiển thiết bị không dây bằng sóng vô tuyến (RF) còn chưa ổn định vì tín hiệu RF hay bị nhiễu và tần số cộng hưởng LC giữa bộ phát và bộ thu. 3. Kết luận - Hướng phát triển đề tài Qua thời gian làm đề tài tốt nghiệp, sinh viên đã hoàn thành tốt cả lý thuyết lẫn thi công. Với đề tài này, nó giúp cho sinh viên học được nhiều điều bổ ích và nắm vững hơn về lý thuyết điện tử. Với hạn chế về thời gian thực hiện đề tài và tài liệu, vì vậy đòi hỏi sinh viên phải cố gắng tìm tòi, nhiệt tình trong công việc nghiên cứu, sự tận tình của giáo viên hướng dẫn và cuối cùng đề tài cũng được hoàn thành một cách khá đầy đủ chi tiết. Trong đề tài này, chúng ta có thể phát triển theo hướng đưa hệ thống này giao tiếp với máy tính. Vì tính năng đa dạng của module Sim300C nên chúng ta có thể lắp đặt thêm hệ thống báo cháy, camera để chụp lại hoạt động hiện tại của các thiết bị và gởi nó về điện thoại di động của người quản lý qua GPRS. Ngoài ra, người quản lý còn có thể lập trình một chương trình xử lý gởi đến module Sim300C để thay đổi chương trình hiển thị trên bảng quang báo… Với những gì đã làm ở đề tài này cùng với hướng phát triển đã nêu trên, nó sẽ là gợi ý và là ý tưởng để cho những người yêu thích tìm hiểu và phát triển đề tài hơn nữa. * Tài liệu tham khảo: + Mạch điện tử - Linh kiện điện tử của thầy Nguyễn Tấn Phước. + Sách tra chân IC của thầy Dương Minh Trí. + Vi xử lý 89C51 của thầy Tống Văn On. + Giao tiếp và điều khiến bằng máy tính của thầy Nguyễn Đức Thành. Và một số trang wed giới thiệu về Module Sim300C, lệnh AT-command. THE END

Các file đính kèm theo tài liệu này:

  • docBao cao luan van TN.doc
  • rarBao cao PowerPoint.rar
  • docBia den.doc
  • rarChuong trinh dieu khien.rar
  • rarPhan mem Eagle 3.55.rar
  • rarSo do layout Transmitter (Orcard).rar
  • rarSo do nguyen ly Module Sim300C - Orcard.rar
  • rarSo do nguyen ly Receiver.rar
  • rarSo do nguyen ly Transmitter.rar
  • rarSo do nguyen ly va mach in Relay - Eagle.rar
  • rarSo do nguyen ly va mach in VXL - Eagle.rar
  • rarTai lieu tham khao.rar