Đề tài Thiết kế hệ thống điều khiển cho ngôi nhà tự động

LỜI MỞ ĐẦU Từ giữa những năm 80 đến nay công nghệ chế tạo linh kiện bán dẫn có những phát triển đậm nét để hỗ trợ cho sự phát triển của công nghệ thông tin, và sự tự động hóa trong công nghiệp Với độ tích hợp ngày càng cao, công suất tiêu tán bé hơn, thông minh hơn nó đã làm thay đổi hẳn cấu trúc của nền công nghiệp hiện tại. Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta đã và đang một ngày thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ. Đó là những yếu tố rất cần thiết góp phần cho hoạt động của con người đạt hiệu quả cao. Điện tử đang trở thành một ngành khoa học đa nhiệm vụ. Điện tử đã đáp ứng được những đòi hỏi không ngừng từ các lĩnh vực công–nông – lâm – ngư nghiệp cho đến các nhu cầu cần thiết trong hoạt động đời sống hằng ngày. Một trong những ứng dụng rất quan trọng của công nghệ điện tử là kỹ thuật tự động điều khiển từ xa. Nó đã góp phần rất lớn trong việc điều khiển các thiết bị từ xa. Trong thời đại ngày nay, hệ thống thông tin liên lạc là một trong những vấn đề quan trọng của loài người. Nhất là những ứng dụng của kỹ thuật thông tin liên lạc vào lĩnh vực kinh tế, khoa học và đời sống. Chính vì nó mà con người và xã hội loài người đã phát triển không ngừng. Đặc biệt trong vài năm gần đây, mạng Internet đã phát triển mạnh mẽ, bên cạnh đó máy tính ngày càng có giá thành vừa phải với mọi tầng lớp xã hội 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. Đối với hệ thống điều khiển xa bằng mạng điện thoại thì giới hạn về tính trực quan và đi dây kết nối giữa thiết bị với nhau rất phức tạp, tốn kém. Đây là yếu điểm của kỹ thuật này. Hiện nay, do nhu cầu sử dụng các hệ thống, thiết bị tự động của người dân ngày càng tăng. Đồng thời, việc lắp đặt hệ thống lưới điện ngày càng được phổ biến rộng rãi. Do đó, việc sử dụng mạng điện dân dụng để truyền tín hiệu điều khiển các thiết bị là phương thức thuận tiện, tiết kiệm nhiều thời gian cho công việc, vừa đảm bảo các tính năng an toàn cho các thiết bị điện gia dụng vừa tiết kiệm được chi phí lắp đặt khi sử dụng. Xuất phát từ những ý tưởng và tình hình thực tế như ở trên, tôi đã chọn đề tài: "THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN CHO NGÔI NHÀ TỰ ĐỘNG". Với đề tài: "Thiết kế hệ thống điều khiển cho ngôi nhà tự động" gồm 3 phần: PHẦN A GIỚI THIỆU ĐỀ TÀI PHẦN B NỘI DUNG CHÍNH CỦA ĐỀ TÀI PHẦN C PHỤ LỤC

pdf143 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2267 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế hệ thống điều khiển cho ngôi nhà tự động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
P3.7 RD\ B7H Xung ñoïc boä nhôù döõ lieäu ngoaøi Ñoà aùn toát nghieäp Trang- 85 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo AT8951 coù moät port noái tieáp trong chip coù theå hoaït ñoäng ôû nhieàu cheá ñoä treân moät daõi taàn soá roäng. Chöùc naêng chuû yeáu cuûa port noái tieáp laø thöïc hieän chuyeån ñoåi song song sang noái tieáp khi truyeàn döõ lieäu, vaø chuyeån ñoåi noái tieáp sang song song khi nhaän döõ lieäu. Truy xuaát phaàn cöùng ñeán port noái tieáp qua caùc chaân TxD (P3.1) vaø RxD (P3.0). Port noái tieáp cho hoaït ñoäng song coâng (full duplex: thu vaø phaùt ñoàng thôøi), vaø ñeäm luùc thu (receiver buffering), cho pheùp moät kyù töï seõ ñöôïc thu vaø ñöôïc giöõ trong khi kyù töï thöù hai ñöôïc nhaän. Neáu CPU ñoïc kyù töï thöù nhaát tröôùc khi kyù töï thöù hai ñöôïc thu ñöôïc thu ñaày ñuû thì döõ lieäu seõ khoâng bò maát. Hai thanh ghi chöùc naêng ñaëc bieät cho pheùp phaàn meàm truy xuaát ñeán port noái tieáp laø: SBUF vaø SCON. Boä ñeäm port noái tieáp (SBUF) ôû ñòa chæ 99H thaät söï laø hai boä ñeäm. Vieát vaøo SBUF ñeå naïp döõ lieäu seõ phaùt, vaø ñoïc SBUF ñeå truy xuaát döõ lieäu thu ñöôïc. Ñaây laø hai thanh ghi rieâng bieät: thanh ghi chæ ghi ñeå phaùt vaø thanh ghi chæ ñoïc ñeå thu. Thanh ghi ñieàu khieån port noái tieáp (SCON) ôû ñòa chæ 98H laø thanh ghi coù ñòa chæ bit chöùa caùc bit traïng thaùi vaø caùc bit ñieàu khieån. Caùc bit ñieàu khieån ñaët cheá ñoä hoaït ñoäng cho port noái tieáp, vaø caùc bit traïng thaùi baùo keát thuùc vieäc phaùt hoaëc thu kyù töï. Caùc bit traïng thaùi coù theå ñöôïc kieåm tra baèng phaàn meàm hoaëc coù theå ñöôïc laäp trình ñeå taïo ngaét. Taàn soá laøm vieäc cuûa port noái tieáp, coøn goïi laø toác ñoä baud coù theå coá ñònh (laáy töø boä dao ñoäng treân chip) hoaëc thay ñoåi. Neáu söû duïng toác ñoä baud thay ñoåi, Timer 1 seõ cung caáp xung nhòp toác ñoä baud vaø phaûi ñöôïc laäp trình. 4.5 Thanh ghi ñieàu khieån (Scon) vaø caùc cheá ñoä hoaït ñoäng: CLK SBUF Q (chæ ghi) TxD (P3.1) Thanh ghi dòch D CLK Xung nhòp toác ñoä baud (phaùt) Xung nhòp toác ñoä baud (thu) RxD (P3.0) SBUF (chæ ñoïc) Bus noäi 8051 Hình 7: Sô ñoà khoái Port noái Ñoà aùn toát nghieäp Trang- 86 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Cheá ñoä hoaït ñoäng cuûa port noái tieáp ñöôïc ñaët baèng caùch ghi töø ñieàu khieån vaøo thanh ghi cheá ñoä port noái tieáp (SCON) ôû ñòa chæ 98H. Baûng 3: Thanh ghi SCON Bit Kyù hieäu Ñòa chæ Moâ taû SCON.7 SM0 9FH Bit 0 cuûa cheá ñoä port noái tieáp. SCON.6 SM1 9EH Bit 1 cuûa cheá ñoä port noái tieáp. SCON.5 SM2 9DH Bit 2 cuûa cheá ñoä port noái tieáp. Cho pheùp truyeàn thoâng ña xöû lyù trong caùc cheá ñoä 2 vaø 3; RI seõ khoâng bò taùc ñoäng neáu bit thöù 9 thu ñöôïc laø 0. SCON.4 REN 9CH Cho pheùp thu, phaûi ñöôïc ñaët leân 1 ñeå thu (nhaän) caùc kyù töï. SCON.3 TB8 9BH Bit thöù 9 ñöôïc phaùt trong caùc cheá ñoä 2 vaø 3; ñöôïc ñaët vaø xoùa baèng phaàn meàm. SCON.2 RB8 9AH Bit thöù 9 thu ñöôïc. SCON.1 TI 99H Côø ngaét phaùt. Ñaët leân 1 khi keát thuùc phaùt kyù töï; ñöôïc xoùa baèng phaàn meàm. SCON.0 RI 98H Côø ngaét thu. Ñaët leân 1 khi keát thuùc thu kyù töï; ñöôïc xoùa baèng phaàn meàm. Port noái tieáp coù 4 cheá ñoä hoaït ñoäng, trong ñoù ba cheá ñoä cho pheùp truyeàn thoâng baát ñoàng boä, vôùi moãi kyù töï ñöôïc thu hoaëc phaùt ñeàu baét ñaàu baèng moät bit Start vaø keát thuùc baèng 1 bit Stop. ÔÛ cheá ñoä thöù tö, port noái tieáp hoaït ñoäng nhö moät thanh ghi dòch ñôn giaûn. Baûng 4: Caùc cheá ñoä cuûa Port noái tieáp SM0 SM1 Cheá ñoä Moâ taû Toác ñoä baud 0 0 0 Thanh ghi dòch Coá ñònh (taàn soá dao ñoäng/12). 0 1 1 UART 8 bit Thay ñoåi (thieát laäp baèng boä ñònh thôøi). 1 0 2 UART 9 bit Coá ñònh (taàn soá dao ñoäng/32 hoaëc 64). 1 1 3 UART 9 bit Thay ñoåi (thieát laäp baèng boä ñònh thôøi). Ñoà aùn toát nghieäp Trang- 87 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ÷ 12 Xung nhòp toác ñoää baud Dao ñoäng treân chip Cheá ñoä 0 4.5.1 Thanh ghi dòch 8 bit (cheá ñoä 0): Döõ lieäu noái tieáp vaøo vaø ra qua RxD, coøn TxD xuaát xung nhòp dòch. 8 bit ñöôïc phaùt hoaëc thu vôùi bit ñaàu tieân laø LSB. Toác ñoä baud coá ñònh ôû 1/12 taàn soá dao ñoäng treân chip. Moät öùng duïng cuûa cheá ñoä thanh ghi dòch laø môû roäng khaû naêng xuaát cuûa 8951. IC thanh ghi dòch noái tieáp ra song song coù theå ñöôïc noái vaøo caùc ñöôøng TxD vaø RxD cuûa 8951 ñeå cung caáp theâm 8 ñöôøng ra. Coù theå noái theâm caùc thanh ghi dòch vôùi thanh ghi dòch ñaàu tieân ñeå môû roäng theâm. 4.5.2 UART 8 bit vôùi toác ñoä baud thay ñoåi ñöôïc (cheá ñoä 1): ÔÛ cheá ñoä 1, port noái tieáp cuûa 8951 laøm vieäc nhö moät UART 8 bit (8-bit Universal Asynchronous Receiver/Transmitter) vôùi toác ñoä baud thay ñoåi ñöôïc (baèng toác ñoä baùo traøn cuûa Timer 1). Vieäc thu/phaùt tieán haønh vôùi 10 bit, goàm 1 bit Start (luoân laø 0), 8 bit döõ lieäu (LSB ñaàu tieân) vaø 1 bit Stop (luoân laø 1). Vieäc phaùt döõ lieäu ñöôïc khôûi ñoäng baèng caùch ghi döõ lieäu caàn phaùt vaøo sbuf. Döõ lieäu ñöôïc dòch bit ñeå ñöôïc xuaát ra treân ñöôøng TxD, baét ñaàu baèng bit start, tieáp theo laø 8 bit döõ lieäu cuoái cuøng laø bit stop. Thôøi gian cuûa moãi bit laø giaù trò nghòch ñaûo cuûa toác ñoä baud. Côø ngaét phaùt ñöôïc set baèng 1 ngay khi bit stop xuaát hieän treân ñöôøng TxD. Clock Thanh ghi Döõ lieäu dòch TXD (P3.1) RXD (P3.0) 8951 Theâm 8 ngoõ ra ÷ 32 Xung nhòp toác ñoä baud Traøn boä ñònh thôøi 1 Cheá ñoä 1 ÷ 16 SMOD = 0 SMOD = 1 1 toác ñoä baud bit Start bit Stop D0 D1 D2 D3 D4 D5 D6 D7 TI (SCON.1) Ñoà aùn toát nghieäp Trang- 88 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Vieäc thu döõ lieäu ñöôïc khôûi ñoäng baèng moät chuyeån traïng thaùi töø 1 xuoáng 0 treân ñöôøng RxD (baét ñaàu bit start). Boä ñeám 16 töùc thôøi ñöôïc xoùa ñeå ñoàng boä soá ñeám vôùi luoàng bit ñeán. Luoàng bit ñeán ñöôïc laáy maãu giöõa 16 laàn ñeám. Giaû söû phaùt hieän ñöôïc bit Start hôïp leä, bit Start ñöôïc boû qua vaø 8 bit döõ lieäu ñöôïc ñöa vaøo thanh ghi dòch coång noái tieáp theo xung nhòp. Khi ñaõ coù ñöôïc taát caû 8 bit, ñieàu sau ñaây xaûy ra: • Bit thöù 9 (bit Stop) ñöôïc choát vaøo RB8 trong SCON. • SBUF ñöôïc naïp vôùi 8 bit döõ lieäu. • Côø ngaét boä thu (RI) ñöôïc ñaët leân 1 (côø RI ñaõ xoùa veà 0 tröôùc khi kyù töï ñöôïc thu veà). 4.5.3 UART 9 bit vôùi toác ñoä baud coá ñònh (cheá ñoä 2): ÔÛ cheá ñoä 2, port noái tieáp cuûa 8951 laøm vieäc nhö moät UART 9 bit coù toác ñoä baud coá ñònh (baèng 1/32 hoaëc 1/64 toác ñoä dao ñoäng treân chip). 11 bit seõ ñöôïc phaùt hoaëc thu goàm: 1 bit Start, 8 bit döõ lieäu, bit döõ lieäu thöù 9 coù theå laäp trình ñöôïc vaø 1 bit Stop. Khi phaùt, bit thöù 9 laø bit baát kyø ñöôïc ñaët vaøo bit TB8 trong thanh ghi SCON (coù theå laø bit chaün leû). Khi thu, bit thöù 9 thu ñöôïc seõ ôû trong RB8. 4.5.4 UART 9 bit vôùi toác ñoä baud thay ñoåi ñöôïc (cheá ñoä 3) : Cheá ñoä naøy gioáng nhö cheá ñoä 2, ngoaïi tröø toác ñoä baud coù theå laäp trình ñöôïc theo toác ñoä traøn cuûa boä ñònh thôøi. ÷ 32 Xung nhòp toác ñoä baud Traøn boä ñònh thôøi 1 Cheá ñoä 3 ÷ 16 SMOD = 0 SMOD = 1 Cheá ñoä 2 ÷ 64 Xung nhòp toác ñoä baud Dao ñoäng treân chip ÷ 32 SMOD = 0 SMOD = 1 Ñoà aùn toát nghieäp Trang- 89 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ¾ Thanh ghi ñieàu khieån nguoàn cung caáp Pcon vaø bit SMOD: Toác ñoä baud bò aûnh höôûng bôûi moät bit trong thanh ghi ñieàu khieån nguoàn cung caáp (PCON, hay 87H). Bit 7 cuûa PCON laø bit SMOD. Ñaët bit SMOD leân 1 laøm gaáp ñoâi toác ñoä baud trong caùc cheá ñoä 1, 2 vaø 3. Vì PCON khoâng ñöôïc ñònh ñòa chæ bit neân ñeå ñaët bit SMOD leân 1 coù theå thöïc hieän giaùn tieáp qua moät thanh ghi ñònh ñòa chæ bit. Ví duï: MOV A, 87H ; Laáy giaù trò hieän thôøi cuûa PCON SETB ACC.7 ; Ñaët bit 7 (SMOD) leân 1 MOV 87H, A ; Ghi giaù trò ngöôïc veà PCON. ¾ Söû duïng Timer 1 laøm xung nhòp toác ñoä baud: Caùch thoâng duïng ñeå taïo toác ñoä baud laø khôûi ñoäng boä ñònh thôøi 1 ôû cheá ñoä 8 bit töï ñoäng naïp laïi (cheá ñoä 2) vaø ñaët giaù trò naïp laïi vaøo TH1 ñeå toác ñoä traøn ñuùng vôùi toác ñoä baud. Cuõng coù theå ñaït ñöôïc caùc toác ñoä baud thaáp baèng caùch söû duïng boä ñònh thôøi ôû cheá ñoä 1, tuy nhieân caùc thanh ghi TH1 vaø TL1 phaûi ñöôïc khôûi ñoäng laïi sau moãi laàn traøn (Vieäc naøy ñöôïc thöïc hieän trong chöông trình phuïc vuï ngaét). Moät choïn löïa khaùc laø caáp xung nhòp cho Timer 1 töø ngoaøi qua T1 (P3.5). Coâng thöùc toång quaùt ñeå xaùc ñònh toác ñoä baud trong caùc cheá ñoä 1 vaø 3 (SMOD = 0): Toác ñoä baud = Toác ñoä traøn cuûa boä ñònh thôøi 1 ÷ 32 Ví duï, muoán laøm vieäc vôùi toác ñoä baud laø 1200 baud, thì toác ñoä traøn cuûa Timer 1 phaûi laø: 1200 × 32 = 38.4 KHz. Neáu duøng thaïch anh 12 MHz, boä ñònh thôøi 1 ñöôïc caáp xung nhòp 1 MHz hay 1000 KHz. Vì toác ñoä traøn cuûa boä ñònh thôøi 1 laø 38.4 KHz vaø Timer 1 ñöôïc caáp xung nhòp 1000 KHz neân caàn traøn sau 1000 ÷ 38.4 = 26.04 xung nhòp (laøm troøn laø 26). Timer ñeám leân vaø traøn xaûy ra khi coù söï thay ñoåi töø FFH xuoáng 00H ôû soá ñeám neân giaù trò caàn naïp vaøo TH1 laø –26 (vôùi cheá ñoä 8 bit töï ñoäng naïp laïi). Do laøm troøn neân coù sai soá nhoû trong toác ñoä baud. Toång quaùt thì cho pheùp dung sai 5% trong truyeàn thoâng baát ñoàng boä (Start/Stop). Coù theå coù ñöôïc toác ñoä baud chính xaùc neáu duøng thaïch anh 11.059 MHz. Baûng 5: Toùm taét moät soá chuaån toác ñoä baud thoâng duïng Ñoà aùn toát nghieäp Trang- 90 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Toáác ñoää Baud (bps) Taàn soá (MHZ) SMOD (PCON.7) Giaù trò naïp vaøo TH1 Toác ñoä Baud thöïc (bps) Sai soá (%) 1200 12 0 -26 (E6H) 1202 0.16 2400 12 0 -13(F3H) 2404 0.16 4800 12 0 -7(F9H) 4464 7 9600 12 0 -3(FDH) 10417 8.51 1200 12 1 -52(CCH) 1202 0.16 2400 12 1 -26(E6H) 2404 0.16 4800 12 1 -13(F3H) 4808 0.16 9600 12 1 -7(F9H) 8929 7 19200 12 1 -3(FDH) 20833 8.5 1200 11.059 0 -24(E8H) 1200 0 2400 11.059 0 -12(F4H) 2400 0 4800 11.059 0 -6(FAH) 4800 0 9600 11.059 0 -3(FDH) 9600 0 1200 11.059 1 -48(D0H) 1200 0 2400 11.059 1 -24(E8H) 2400 0 4800 11.059 1 -12(F4H) 4800 0 9600 11.059 1 -6(FAH) 9600 0 19200 11.059 1 -3(FDH) 19200 0 5. Löu ñoà moät soá chöông trình con Ñoà aùn toát nghieäp Trang- 91 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Löu ñoà chuyeån ñoåi ADC Löu ñoà truyeàn döõ lieäu Begin Choïn keânh thöù 0 Taïo xung ñieàu khieån ADC (Start, ALE) Chôø chuyeån ñoåi xong Ñoïc keát quaû chuyeån ñoåi löu vaøo 2AH End Begin Set bit TB8 Xoùa Bit Truyeàn Truyeàn maõ ñònh ñòa chæ Xoùa bit TB8 End Xoùa Bit Truyeàn Truyeàn nhieät ñoä Ñoà aùn toát nghieäp Trang- 92 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Löu ñoà truyeàn nhieät ñoä leân maùy tính Begin Nhieät ñoä phoøng 1 -> 60H Nhieät ñoä phoøng 2 -> 61H Xoùa Bit Truyeàn Truyeàn nhieät ñoä phoøng 1 Xoùa Bit Truyeàn End Truyeàn nhieät ñoä phoøng 2 Ñoà aùn toát nghieäp Trang- 93 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Löu ñoà nhaän maõ ñieàu khieån töø maùy tính 6. Chöông trình ñieàu khieån treân caùc module 6.1 Chöông trình ñieàu khieån treân module ño nhieät ñoä BIT_TRUYEN BIT 2FH.0 ME BIT 2FH.1 ALE BIT P1.3 START BIT P1.4 EOC BIT P3.2 Begin End Ñ S A = Sbuf Xoùa RI Xoùa RI A = “P” A = Sbuf A = “1” 52H = Sbuf A = “2” 53H = Sbuf Ñ Ñ S S Ñoà aùn toát nghieäp Trang- 94 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Org 0000H JMP Strt ORG 00BH JMP NGAT_T0 ORG 23H JMP NGAT ;---------------------------------------------------------------------------------------------------- ;Khoi tao truyen noi tiep o che do mode 3 ;---------------------------------------------------------------------------------------------------- Strt: MOV SCON,#11000000B MOV TMOD,#021H MOV TH1,#0A0H MOV TH0,#0FFH MOV TL0,#0F0H CLR TF0 MOV IE,#92H SETB TR1 SETB SM2 SETB REN SETB PS MOV P1,#0FFH ;---------------------------------------------------------------------------------------------------- ;Nap ma 7 doan vao vung nho RAM ;---------------------------------------------------------------------------------------------------- mov 20H,#0C0H ;Ma so 0 mov 21H,#0F9H ;Ma so 1 mov 22H,#0A4H ;Ma so 2 mov 23H,#0B0H ;Ma so 3 mov 24H,#099H ;Ma so 4 mov 25H,#092H ;Ma so 5 mov 26H,#082H ;Ma so 6 mov 27H,#0F8H ;Ma so 7 mov 28H,#080H ;Ma so 8 Ñoà aùn toát nghieäp Trang- 95 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo mov 29H,#090H ;Ma so 9 ;---------------------------------------------------------------------------------------------------- ;Nap ma quet led vao vung nho RAM ;---------------------------------------------------------------------------------------------------- MOV 30H,#00H ;Ma quet led 1 0000 0000 MOV 31H,#020H ;Ma quet led 2 0010 0000 MOV 32H,#040H ;Ma quet led 3 0100 0000 MOV 33H,#060H ;Ma quet led 4 0110 0000 ;---------------------------------------------------------------------------------------------------- ;khoi tao cac gia tri ban dau ;---------------------------------------------------------------------------------------------------- MOV 40H,#86H MOV 41H,#0 MOV 42H,#0 MOV 43H,#0 MOV 2AH,#0 MOV 2BH,2AH ;---------------------------------------------------------------------------------------------------- ;Chuong trinh chinh ;---------------------------------------------------------------------------------------------------- LCALL HEX_7SEG SETB TR0 ;Start Timer0 MAIN: LCALL ADC PUSH ACC MOV A,2AH CJNE A,2BH,TRUYEN POP ACC HEX: LCALL HEX_7SEG JMP MAIN TRUYEN: CLR P3.7 POP ACC MOV 2BH,2AH SETB TB8 CLR BIT_TRUYEN MOV SBUF,#'a' ;ma cua slave 1 Ñoà aùn toát nghieäp Trang- 96 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo JNB BIT_TRUYEN,$ CLR TB8 CLR BIT_TRUYEN MOV SBUF,2AH JNB BIT_TRUYEN,$ SETB P3.7 JMP HEX ;---------------------------------------------------------------------------------------------------- ;Chuong trinh con do chuyen doi ADC ;---------------------------------------------------------------------------------------------------- ADC: ANL P1,#0E0H SETB ALE NOP NOP NOP NOP CLR ALE SETB START NOP NOP NOP NOP CLR START NOP NOP JB EOC,$ ;cho chuyen doi xong (EOC = 0) LCALL DELAY MOV 2AH,P0 RET ;---------------------------------------------------------------------------------------------------- ;Chuong trinh chuyen tu so HEX sang 7 Doan ;---------------------------------------------------------------------------------------------------- HEX_7SEG: MOV A,2AH Ñoà aùn toát nghieäp Trang- 97 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo MOV R0,#43H MOV B,#100 DIV AB CJNE A,#0,NONE MOV 43H,#0FFH JMP CONT NONE: ADD A,#20H MOV R1,A MOV 34H,@R1 MOV @R0,34H CONT: DEC R0 MOV A,B MOV B,#10 DIV AB ADD A,#20H MOV R1,A MOV 34H,@R1 MOV @R0,34H DEC R0 MOV A,B ADD A,#20H MOV R1,A MOV 34H,@R1 MOV @R0,34H RET ;---------------------------------------------------------------------------------------------------- ;Chuong trinh con Hien thi ;---------------------------------------------------------------------------------------------------- NGAT_T0: CLR TR0 CLR TF0 MOV 2DH,#10 Del1: MOV 2CH,#100 Ñoà aùn toát nghieäp Trang- 98 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Del2: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led B31: MOV P2,@R0 ;goi ma 7 doan ra led MOV P1,@R1 ;goi ma chon led LCALL DELAY50 MOV P1,#0FFH INC R0 INC R1 CJNE R0,#44H,B31 Djnz 2CH,Del2 Djnz 2DH,Del1 MOV TH0,#0FEH MOV TL0,#0 SETB TR0 RETI ;---------------------------------------------------------------------------------------------------- NGAT: PUSH ACC PUSH PSW JB RI,NHAN JNB TI,$ ;DOI TRUYEN CLR TI ;TRUYEN XONG CHO : TI = 0 SETB BIT_TRUYEN JMP RETURN ;---------------------------------------------------------------------------------------------------- ;Nhan du lieu tu Master ;---------------------------------------------------------------------------------------------------- NHAN: JNB RI,$ MOV A,SBUF CLR RI JB RB8,LOOP1 Ñoà aùn toát nghieäp Trang- 99 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo JB SM2,RETURN JNB ME,RETURN ;============================================================ ;Dieu khien 1 thiet bi ;============================================================ DK1: CJNE A,#'c',DK2 CLR ME SETB SM2 MOV P3,#0FFH CLR P3.3 SETB P3.7 JMP RETURN ;============================================================ ;Dieu khien 2 thiet bi ;============================================================ DK2: CJNE A,#'d',DK3 CLR ME SETB SM2 MOV P3,#0FFH CLR P3.3 CLR P3.4 SETB P3.7 JMP RETURN ;============================================================ ;Dieu khien 3 thiet bi ;============================================================ DK3: CJNE A,#'e',DK4 CLR ME SETB SM2 MOV P3,#0FFH CLR P3.3 CLR P3.4 CLR P3.5 SETB P3.7 JMP RETURN ;============================================================ ;Dieu khien 4 thiet bi ;============================================================ DK4: CJNE A,#'f',TAT CLR ME Ñoà aùn toát nghieäp Trang- 100 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo SETB SM2 MOV P3,#0FFH CLR P3.3 CLR P3.4 CLR P3.5 CLR P3.6 SETB P3.7 JMP RETURN ;============================================================ ;Tat tat ca cac thiet bi ;============================================================ TAT: CJNE A,#'g',RETURN CLR ME SETB SM2 MOV P3,#0FFH SETB P3.7 JMP RETURN ;============================================================ LOOP1: CJNE A,#'a',RETURN CLR P3.7 CLR SM2 SETB ME JMP RETURN ;============================================================ ;Tro ve chuong trinh chinh ;============================================================ RETURN: POP PSW POP ACC RETI ;============================================================ ;Chuong trinh con delay ;============================================================ DELAY50: MOV 2EH,#50 DJNZ 2EH,$ RET DELAY: MOV 70H,#100 DEL: MOV 71H,#100 DJNZ 71H,$ Ñoà aùn toát nghieäp Trang- 101 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo DJNZ 70H,DEL RET ;------------------------------------KET THUC CHUONG TRINH--------------------------------- END 6.2 Chöông trình ñieàu khieån treân module master BIT_TRUYEN BIT 2FH.0 SLAVE1 BIT 2FH.1 SLAVE2 BIT 2FH.2 VIEW BIT P3.2 UP BIT P3.3 DOWN BIT P3.4 ;SET BIT P3.5 OK BIT P3.6 CANCEL BIT P3.7 TAM EQU 2CH PHONG EQU 37H ORG 0000H JMP START ORG 23H ;ngat noi tiep JMP NGAT ;---------------------------------------------------------------------------------------------------- ;Khoi tao truyen noi tiep o che do mode 3 ;---------------------------------------------------------------------------------------------------- START: MOV IE,#00 MOV SCON,#11000000B MOV TMOD,#020H MOV TH1,#0A0H MOV IE,#90H SETB SM2 SETB REN SETB PS ;---------------------------------------------------------------------------------------------------- Ñoà aùn toát nghieäp Trang- 102 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ;Nap ma 7 doan vao vung nho RAM ;---------------------------------------------------------------------------------------------------- MOV 20H,#0C0H ;Ma so 0 MOV 21H,#0F9H ;Ma so 1 MOV 22H,#0A4H ;Ma so 2 MOV 23H,#0B0H ;Ma so 3 MOV 24H,#099H ;Ma so 4 MOV 25H,#092H ;Ma so 5 MOV 26H,#082H ;Ma so 6 MOV 27H,#0F8H ;Ma so 7 MOV 28H,#080H ;Ma so 8 MOV 29H,#090H ;Ma so 9 ;---------------------------------------------------------------------------------------------------- ;Nap ma quet led vao vung nho RAM ;---------------------------------------------------------------------------------------------------- MOV 30H,#0FEH ;Ma quet led 1 1111 1110 MOV 31H,#0FDH ;Ma quet led 2 1111 1101 MOV 32H,#0FBH ;Ma quet led 3 1111 1011 MOV 33H,#0F7H ;Ma quet led 4 1111 0111 MOV 34H,#0EFH ;Ma quet led 5 1110 1111 MOV 35H,#0DFH ;Ma quet led 6 1101 1111 ;---------------------------------------------------------------------------------------------------- ;khoi tao cac gia tri ban dau ;---------------------------------------------------------------------------------------------------- MOV 40H,#86H MOV 41H,#0 MOV 42H,#0 MOV 43H,#0 MOV 44H,#0F9H MOV 45H,#8CH MOV PHONG,#01 MOV 50H,#0 ;o nho chua gia tri nhiet do phong 1 MOV 51H,#0 ;o nho chua gia tri nhiet do phong 2 MOV R3,#0 MOV 60H,50H MOV 61H,51H SETB TR1 ;============================================================ ;Chuong trinh chinh ;============================================================ Ñoà aùn toát nghieäp Trang- 103 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo MAIN: MOV A,PHONG CJNE A,#01,NEXT ;phong = 1 ? MOV 2AH,50H ;lay gia tri nhiet do phong 1 MOV A,50H CJNE A,60H,TRUYEN MOV A,51H CJNE A,61H,TRUYEN JMP JUMP ;di giai ma - hien thi NEXT: CJNE A,#02,NO MOV 2AH,51H ;lay gia tri nhiet do phong 2 MOV A,51H CJNE A,61H,TRUYEN MOV A,50H CJNE A,60H,TRUYEN JMP JUMP ;di giai ma - hien thi NO: MOV 2AH,#0 MOV A,50H CJNE A,60H,TRUYEN MOV A,51H CJNE A,61H,TRUYEN JUMP: LCALL HEX_7SEG LCALL HIENTHI JB VIEW,ADJ JMP MAIN ;============================================================ TRUYEN: CLR P1.0 MOV 60H,50H ;luu gia tri nhiet do moi cua phong 1 MOV 61H,51H ;luu gia tri nhiet do moi cua phong 2 CLR BIT_TRUYEN MOV SBUF,50H JNB BIT_TRUYEN,NORMAL BYTE2: CLR BIT_TRUYEN MOV SBUF,51H Ñoà aùn toát nghieäp Trang- 104 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo JNB BIT_TRUYEN,NORMAL1 SEND_OK: SETB P1.0 JMP JUMP ;============================================================ ;Truyen byte thu nhat ;============================================================ NORMAL: MOV A,#01 JNB BIT_TRUYEN,B11 JMP BYTE2 ;============================================================ ;Truyen byte thu hai ;============================================================ NORMAL1: MOV A,#02 JNB BIT_TRUYEN,B11 JMP SEND_OK B11: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led B12: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led LCALL DELAY ;delay 50 micro giay MOV P2,#0FFH ;tat het led de chong lem CJNE A,#01,B14 ;truyen byte thu nhat ? JNB BIT_TRUYEN,B13 JMP BYTE2 B14: JNB BIT_TRUYEN,B13 ;truyen byte thu hai JMP SEND_OK B13: INC R0 INC R1 CJNE R0,#46H,B12 JMP B11 Ñoà aùn toát nghieäp Trang- 105 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ;============================================================ ;doan chuong trinh hien thi binh thuong khi ta nhan phim ;============================================================ ADJ: MOV A,#01 JB VIEW,BB63 JMP ADJ_A ADJ_A1: MOV A,#02 JB UP,BB63 JMP ADJ_UP ADJ_A2: MOV A,#03 JB DOWN,BB63 JMP ADJ_DOWN BB63: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led BB61: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led LCALL DELAY MOV P2,#0FFH CJNE A,#01,BB64 JB VIEW,BB66 JMP ADJ_A BB64: CJNE A,#02,BB65 JB UP,BB66 JMP ADJ_UP BB65: JB DOWN,BB66 JMP ADJ_DOWN BB66: INC R0 INC R1 Ñoà aùn toát nghieäp Trang- 106 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo CJNE R0,#46H,BB61 JMP BB63 ;============================================================ ;bao dang dieu chinh ;============================================================ ADJ_A: INC R3 B447: MOV 2DH,#31 B446: MOV R2,#01 B442: MOV 2EH,#200 B441: MOV R0,#40H ;ma 7 doan MOV R1,#30H ;ma quet led B445: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led LCALL DELAY MOV P2,#0FFH ;tat de chong lem JB VIEW,ADJ JB UP,ADJ_A1 JB DOWN,ADJ_A2 INC R0 INC R1 CJNE R0,#46H,B445 ;du 6 led? DJNZ 2EH,B441 ;giam thoi gian tu thoat DJNZ 2DH,B4422 ;giam so lan led chop tat MOV 44H,74H ;lay lai gia tri so phong JMP MAIN ;tro ve chuong trinh chinh B4422: CJNE R3,#01,ADJ_EXIT CJNE R2,#01,B4423 ;R2 = 1 thi tat led MOV 74H,44H ;cat gia tri so phong MOV 44H,#0FFH ;tat led phong MOV R2,#02 ;nap ma tat led JMP B442 ;tro ve hien thi Ñoà aùn toát nghieäp Trang- 107 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo B4423: MOV 44H,74H ;lay lai gia tri so phong JMP B446 ADJ_EXIT: MOV R3,#0 JMP MAIN ADJ_UP: INC PHONG MOV R0,#44H MOV A,PHONG CJNE A,#10,DOI MOV PHONG,#1 MOV A,PHONG DOI: ADD A,#20H MOV R1,A MOV 36H,@R1 MOV @R0,36H JMP B447 ADJ_DOWN: DEC PHONG MOV R0,#44H MOV A,PHONG CJNE A,#0,DDOI MOV PHONG,#9 MOV A,PHONG DDOI: ADD A,#20H MOV R1,A MOV 36H,@R1 MOV @R0,36H JMP B447 ;============================================================ ;Chuong trinh chuyen tu so HEX sang 7 doan ;============================================================ HEX_7SEG: MOV A,2AH MOV R0,#43H Ñoà aùn toát nghieäp Trang- 108 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo MOV B,#100 DIV AB CJNE A,#0,NONE ;hang tram = 0 ? MOV 43H,#0FFH ;xoa so 0 hang tram JMP CONT NONE: ADD A,#20H ;Giai ma hang tram MOV R1,A MOV 36H,@R1 MOV @R0,36H ;Luu ma 7 doan hang tram vao o nho CONT: DEC R0 MOV A,B MOV B,#10 DIV AB ADD A,#20H ;Giai ma hang chuc MOV R1,A MOV 36H,@R1 MOV @R0,36H ;Luu ma hang chuc vao o nho DEC R0 MOV A,B ADD A,#20H ;Giai ma hang don vi MOV R1,A MOV 36H,@R1 MOV @R0,36H ;Luu ma hang don vi vao o nho MOV 40H,#86H RET ;============================================================ ;Chuong trinh con Hien thi ;============================================================ HIENTHI: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led TIEP: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led Ñoà aùn toát nghieäp Trang- 109 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo LCALL DELAY ;delay 50 micro giay MOV P2,#0FFH ;tat het led de chong lem INC R0 INC R1 CJNE R0,#46H,TIEP ;du 6 led? RET ;============================================================ NGAT: PUSH ACC PUSH PSW JB RI,NHAN ;JNB TI,$ ;DOI TRUYEN CLR TI ;TRUYEN XONG CHO : TI = 0 SETB BIT_TRUYEN JMP RETURN ;============================================================ normal3: MOV A,#01 JNB RI,B31 JMP GET_ADDRESS ;============================================================ normal4: MOV A,#02 JNB RI,B31 JMP GET_CODE_CONTROL ;============================================================ normal5: MOV A,#03 JNB RI,B31 JMP GET_CODE_CONTROL2 B31: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led B32: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led Ñoà aùn toát nghieäp Trang- 110 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo LCALL DELAY MOV P2,#0FFH CJNE A,#01,B34 JNB RI,B33 JMP GET_ADDRESS B34: CJNE A,#02,B35 JNB RI,B33 JMP GET_CODE_CONTROL B35: ;CJNE A,#02,B35 JNB RI,B33 JMP GET_CODE_CONTROL2 B33: INC R0 INC R1 CJNE R0,#46H,B32 JMP B31 ;============================================================ ;Nhan du lieu ;============================================================ NHAN: CLR P1.0 JNB RI,$ MOV A,SBUF CLR RI CJNE A,#'P',uuC JNB RI,NORMAL3 GET_ADDRESS: MOV A,SBUF CLR RI CJNE A,#'1',PH2 JNB RI,NORMAL4 Ñoà aùn toát nghieäp Trang- 111 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo GET_CODE_CONTROL: MOV 52H,SBUF CLR RI SETB P1.0 ;-------------------------------- Truyen ma dinh dia chi Slave 1 --------------------------- SETB TB8 MOV SBUF,#'a' JNB TI,NORMAL6 SEND_CODE_CONTROL1: CLR TI CLR TB8 MOV SBUF,52H JNB TI,NORMAL7 SEND_OK1: CLR TI JMP RETURN ;Tro ve chuong trinh chinh ;============================================================ PH2: CJNE A,#'2',SEND_NHIETDO JNB RI,NORMAL5 ;Cho nhan ma dieu khien tu PC GET_CODE_CONTROL2: MOV 53H,SBUF CLR RI SETB P1.0 ;--------------------------------- Truyen ma dinh dia chi Slave 2 -------------------------- SETB TB8 MOV SBUF,#'b' JNB TI,NORMAL8 SEND_CODE_CONTROL2: CLR TI CLR TB8 MOV SBUF,53H JNB TI,NORMAL7 SEND_OK2: CLR TI ;CPL P1.0 JMP RETURN uuC: JMP uC Ñoà aùn toát nghieäp Trang- 112 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ;-------------------------------------- Truyen nhiet do len PC ------------------------------- SEND_NHIETDO: CJNE A,#'T',uuC PHONG1: MOV SBUF,50H JNB TI,NORMAL10 PHONG2: CLR TI MOV SBUF,61H JNB TI,NORMAL11 O_K: CLR TI JMP RETURN ;============================================================ normal6: MOV A,#01 JNB TI,B61 JMP SEND_CODE_CONTROL1 ;============================================================ normal7: MOV A,#02 JNB TI,B61 JMP SEND_OK1 ;============================================================ normal8: MOV A,#03 JNB TI,B61 JMP SEND_CODE_CONTROL2 ;============================================================ normal9: MOV A,#04 JNB TI,B61 JMP SEND_OK2 B61: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led B62: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led Ñoà aùn toát nghieäp Trang- 113 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo LCALL DELAY ;delay 50 micro giay MOV P2,#0FFH ;tat het led de chong lem CJNE A,#01,B64 JNB TI,B63 JMP SEND_CODE_CONTROL1 B64: CJNE A,#02,B65 JNB TI,B63 JMP SEND_OK1 B65: CJNE A,#03,B66 JNB TI,B63 JMP SEND_CODE_CONTROL2 B66: JNB TI,B63 JMP SEND_OK2 B63: INC R0 INC R1 CJNE R0,#46H,B62 JMP B61 ;============================================================ normal10: MOV A,#01 JNB TI,B71 JMP PHONG2 ;============================================================ normal11: MOV A,#02 JNB TI,B71 JMP O_K B71: MOV R0,#40H ;Ma 7 doan MOV R1,#30H ;Ma quet led B72: MOV P0,@R0 ;goi ma 7 doan ra led MOV P2,@R1 ;goi ma chon led Ñoà aùn toát nghieäp Trang- 114 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo LCALL DELAY ;delay 50 micro giay MOV P2,#0FFH ;tat het led de chong lem CJNE A,#01,B74 JNB TI,B73 JMP PHONG2 B74: JNB TI,B73 JMP O_K B73: INC R0 INC R1 CJNE R0,#46H,B72 JMP B71 ;============================================================ uC: JB RB8,LOOP1 JB SM2,RETURN ;============================================================ DATA1: JNB SLAVE1,DATA2 MOV 50H,A CLR SLAVE1 SETB SM2 SETB P1.0 JMP RETURN ;============================================================ DATA2: JNB SLAVE2,RETURN MOV 51H,A CLR SLAVE2 SETB SM2 SETB P1.0 JMP RETURN ;============================================================ LOOP1: SL1: CJNE A,#'a',SL2 CLR SM2 SETB SLAVE1 JMP RETURN Ñoà aùn toát nghieäp Trang- 115 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ;============================================================ SL2: CJNE A,#'b',RETURN CLR SM2 SETB SLAVE2 JMP RETURN ;============================================================ RETURN: POP PSW POP ACC RETI ;============================================================ ;Chuong trinh delay ;============================================================ DELAY: MOV 2BH,#70 DJNZ 2BH,$ RET ;----------------------------------- KET THUC CHUONG TRINH -------------------------------- END 7. Chöông trình ñieàu khieån treân PC Public Tmp1, Tmp2, Tmp3, Tmp4, Tam As String Public NhDoPh1, NhDoPh2, Tam1, Tam2, Tam3, Tam4, NhDoSetPh1, NhDoSetPh2, kt, ClLed As Integer Public Sub Delay() Dim k As Double For k = 0 To 4000000 Next k End Sub '----------------------------- Chöông trình chæ giôø heä thoáng ------------------------ Private Sub ShowCurrTime() Static showColon As Integer Dim i, j As Integer, buff As String, aChar As String 'If window is minimized, show time in caption If WindowState = 1 Then Caption = Format$(Now, "hh:mm:ss AM/PM") Else 'Get current time in buff Ñoà aùn toát nghieäp Trang- 116 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo buff = Format$(Now, "hh:mm:ss AM/PM") 'Hide first character if it is "0" aChar = Mid$(buff, 1, 1) If aChar = "0" Then imgClock(0).Visible = False ' = clpDigits.GraphicCell(10) Else imgClock(0).Visible = True imgClock(0) = Digits.GraphicCell(Asc(aChar) - Asc("0")) End If 'Display remaining digits For j = 2 To 3 aChar = Mid$(buff, j, 1) If aChar = ":" Then imgClock(j - 1) = Punctuation.GraphicCell(2) Else imgClock(j - 1) = Digits.GraphicCell(Asc(aChar) - Asc("0")) End If Next j For i = 4 To 8 aChar = Mid$(buff, i, 1) If aChar = ":" Then If Not showColon Then imgClock(i - 1) = Punctuation.GraphicCell(2) Else imgClock(i - 1) = Punctuation.GraphicCell(3) End If Else imgClock(i - 1) = Digits.GraphicCell(Asc(aChar) - Asc("0")) End If Next i Caption = "Home Automation System" End If 'Toggle display of colon showColon = Not showColon End Sub '------------------------------ Chöông trình set maøu cuûa chöõ soá ------------------------ Private Sub SetColor(clr As Integer, updateTime As Integer) Static CurrColor As Integer Ñoà aùn toát nghieäp Trang- 117 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Dim i As Integer 'Set new color index CurrColor = clr 'Load PicClip controls with bitmap for selected color Digits = imgDigits(CurrColor) Punctuation = imgPunctuation(CurrColor) 'Check/uncheck menu items to indicate current color For i = 0 To 2 MnClr(i).Checked = (i = CurrColor) Next i 'Update time display if requested If updateTime Then Call ShowCurrTime Call ShowTemp1 Call ShowTemp2 Call SetTemp1 Call SetTemp2 Call ShowDo End Sub '--------------------------- Chöông trình hieån thò nhieät ñoä phoøng 1 ---------------------- Private Sub ShowTemp1() Dim x1 As Integer, aChr1 As String Tmp1 = NhDoPh1 If Tmp1 = "" Or Tmp1 = "0" Then Exit Sub x1 = Len(Tmp1) If x1 = 0 Or x1 = 1 Then Exit Sub If x1 = 2 Then ImgTemp1(0).Visible = False For x1 = 1 To 2 aChr1 = Mid$(Tmp1, x1, 1) ImgTemp1(x1) = Digits.GraphicCell(Asc(aChr1) - Asc("0")) Next x1 Else aChr1 = Mid$(Tmp1, 1, 1) ImgTemp1(0) = Digits.GraphicCell(Asc(aChr1) - Asc("0")) ImgTemp1(0).Visible = True For x1 = 1 To 2 aChr1 = Mid$(Tmp1, x1 + 1, 1) ImgTemp1(x1) = Digits.GraphicCell(Asc(aChr1) - Asc("0")) Ñoà aùn toát nghieäp Trang- 118 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Next x1 End If End Sub '--------------------------- Chöông trình hieån thò nhieät ñoä phoøng 2 ---------------------- Private Sub ShowTemp2() Dim x2 As Integer, aChr2 As String Tmp2 = NhDoPh2 If Tmp2 = "" Or Tmp2 = "0" Then Exit Sub x2 = Len(Tmp2) If x2 = 0 Or x2 = 1 Then Exit Sub If x2 = 2 Then ImgTemp2(0).Visible = False For x2 = 1 To 2 aChr2 = Mid$(Tmp2, x2, 1) ImgTemp2(x2) = Digits.GraphicCell(Asc(aChr2) - Asc("0")) Next x2 Else aChr2 = Mid$(Tmp2, 1, 1) ImgTemp2(0) = Digits.GraphicCell(Asc(aChr2) - Asc("0")) ImgTemp2(0).Visible = True For x2 = 1 To 2 aChr2 = Mid$(Tmp2, x2 + 1, 1) ImgTemp2(x2) = Digits.GraphicCell(Asc(aChr2) - Asc("0")) Next x2 End If End Sub '-------------------- Chöông trình hieån thò nhieät ñoä caøi ñaët phoøng 1 -------------------- Private Sub SetTemp1() Dim x3 As Integer, aChr3 As String Tmp3 = NhDoSetPh1 If Tmp3 = "" Or Tmp3 < 10 Then Exit Sub x3 = Len(Tmp3) If x3 = 2 Then ImgSet1(0).Visible = False For x3 = 1 To 2 aChr3 = Mid$(Tmp3, x3, 1) Ñoà aùn toát nghieäp Trang- 119 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ImgSet1(x3) = Digits.GraphicCell(Asc(aChr3) - Asc("0")) Next x3 Else aChr3 = Mid$(Tmp3, 1, 1) ImgSet1(0) = Digits.GraphicCell(Asc(aChr3) - Asc("0")) ImgSet1(0).Visible = True For x3 = 1 To 2 aChr3 = Mid$(Tmp3, x3 + 1, 1) ImgSet1(x3) = Digits.GraphicCell(Asc(aChr3) - Asc("0")) Next x3 End If End Sub '--------------------- Chöông trình hieån thò nhieät ñoä caøi ñaët phoøng 2 ------------------- Private Sub SetTemp2() Dim x4 As Integer, aChr4 As String Tmp4 = NhDoSetPh2 If Tmp4 = "" Or Tmp4 = "0" Then Exit Sub x4 = Len(Tmp4) If x4 = 1 Then Exit Sub If x4 = 2 Then ImgSet2(0).Visible = False For x4 = 1 To 2 aChr4 = Mid$(Tmp4, x4, 1) ImgSet2(x4) = Digits.GraphicCell(Asc(aChr4) - Asc("0")) Next x4 Else aChr4 = Mid$(Tmp4, 1, 1) ImgSet2(0) = Digits.GraphicCell(Asc(aChr4) - Asc("0")) ImgSet2(0).Visible = True For x4 = 1 To 2 aChr4 = Mid$(Tmp4, x4 + 1, 1) ImgSet2(x4) = Digits.GraphicCell(Asc(aChr4) - Asc("0")) Next x4 End If End Sub Private Sub ShowDo() Tmp3 = NhDoSetPh1 If Tmp3 = "" Or Tmp3 = "0" Then Exit Sub ImgDo1(0) = Punctuation.GraphicCell(4) ImgDo2(0) = Punctuation.GraphicCell(4) Ñoà aùn toát nghieäp Trang- 120 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo ImgDo3(0) = Punctuation.GraphicCell(4) ImgDo4(0) = Punctuation.GraphicCell(4) ImgDo1(1) = Digits.GraphicCell(11) ImgDo2(1) = Digits.GraphicCell(11) ImgDo3(1) = Digits.GraphicCell(11) ImgDo4(1) = Digits.GraphicCell(11) End Sub Private Sub mnuOptColor(Index As Integer) Call SetColor(Index, True) End Sub '--------------------- Chöông trình giaûm nhieät ñoä caøi ñaët ---------------------- Private Sub CmdDown_Click() If NhDoSetPh1 <= 25 Then ChkPh1.Value = 0 'Else ChkPh1.Value = 1 If NhDoSetPh2 <= 25 Then ChkPh2.Value = 0 'Else ChkPh2.Value = 1 If CmdDown.Enabled = False Then Exit Sub If ChkPh1.Value = 1 And ChkPh2.Value = 1 Then NhDoSetPh1 = NhDoSetPh1 - 1 NhDoSetPh2 = NhDoSetPh2 - 1 End If If ChkPh1.Value = 1 And ChkPh2.Value = 0 Then NhDoSetPh1 = NhDoSetPh1 - 1 If ChkPh2.Value = 1 And ChkPh1.Value = 0 Then NhDoSetPh2 = NhDoSetPh2 - 1 Call SetTemp1 Call SetTemp2 End Sub Private Sub CmdOK_Click() Timer2.Enabled = True End Sub '--------------------- Chöông trình taêng nhieät ñoä caøi ñaët ---------------------- Private Sub CmdUp_Click() If NhDoSetPh1 >= 37 Then ChkPh1.Value = 0 'Else ChkPh1.Value = 1 If NhDoSetPh2 >= 37 Then ChkPh2.Value = 0 'Else ChkPh2.Value = 1 Ñoà aùn toát nghieäp Trang- 121 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo If CmdUp.Enabled = False Then Exit Sub If ChkPh1.Value = 1 And ChkPh2.Value = 1 Then NhDoSetPh1 = NhDoSetPh1 + 1 NhDoSetPh2 = NhDoSetPh2 + 1 End If If ChkPh1.Value = 1 And ChkPh2.Value = 0 Then NhDoSetPh1 = NhDoSetPh1 + 1 If ChkPh2.Value = 1 And ChkPh1.Value = 0 Then NhDoSetPh2 = NhDoSetPh2 + 1 Call SetTemp1 Call SetTemp2 End Sub '--------------------- Chöông trình khôûi taïo caùc giaù trò ban ñaàu ---------------------- Private Sub Form_Load() On Error GoTo Com2 MSComm1.Settings = "300,n,8,1" MSComm1.CommPort = 1 MSComm1.RThreshold = 1 'Event-driven MSComm1.InputLen = 2 MSComm1.PortOpen = True 'Mo cong Com TxtCom.Text = "Com: 1,300,None,8,1,Opened" GoTo OK Com2: MSComm1.Settings = "300,n,8,1" MSComm1.CommPort = 2 MSComm1.RThreshold = 1 MSComm1.InputLen = 2 MSComm1.PortOpen = True TxtCom.Text = "Com: 2,300,None,8,1,Opened" OK: '------------------------ Dim i As Integer 'Init PicClip controls Digits.Cols = 12 Punctuation.Cols = 8 'Load PicClip bitmaps so can know cell sizes Call SetColor(1, False) 'Load image controls to hold digits imgClock(0) = Digits.GraphicCell(0) Ñoà aùn toát nghieäp Trang- 122 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo For i = 1 To 7 Load imgClock(i) 'Digit cells are a different size than colon (punctuation) cells If i = 2 Or i = 5 Then imgClock(i) = Punctuation.GraphicCell(0) Else imgClock(i) = Digits.GraphicCell(0) End If mgClock(i).Left = imgClock(i - 1).Left + imgClock(i - 1).Width imgClock(i).Visible = True Next i ImgTemp1(0) = Digits.GraphicCell(10) mgTemp2(0) = Digits.GraphicCell(10) mgSet1(0) = Digits.GraphicCell(10) mgSet2(0) = Digits.GraphicCell(10) For i = 1 To 2 Load ImgTemp1(i) Load ImgTemp2(i) Load ImgSet1(i) Load ImgSet2(i) ImgTemp1(i).Left = ImgTemp1(i - 1).Left + ImgTemp1(i - 1).Width ImgTemp1(i).Visible = True ImgTemp2(i).Left = ImgTemp2(i - 1).Left + ImgTemp2(i - 1).Width ImgTemp2(i).Visible = True ImgSet1(i).Left = ImgSet1(i - 1).Left + ImgSet1(i - 1).Width ImgSet1(i).Visible = True ImgSet2(i).Left = ImgSet2(i - 1).Left + ImgSet2(i - 1).Width ImgSet2(i).Visible = True Next i ImgDo1(0) = Punctuation.GraphicCell(4) ImgDo2(0) = Punctuation.GraphicCell(4) ImgDo3(0) = Punctuation.GraphicCell(4) ImgDo4(0) = Punctuation.GraphicCell(4) ImgDo1(0).Left = ImgSet1(2).Left + ImgSet1(2).Width ImgDo2(0).Left = ImgSet2(2).Left + ImgSet2(2).Width ImgDo3(0).Left = ImgTemp1(2).Left + ImgTemp1(2).Width ImgDo4(0).Left = ImgTemp2(2).Left + ImgTemp2(2).Width Load ImgDo1(1) Load ImgDo2(1) Load ImgDo3(1) Ñoà aùn toát nghieäp Trang- 123 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Load ImgDo4(1) ImgDo1(1).Left = ImgDo1(0).Left + ImgDo1(0).Width ImgDo2(1).Left = ImgDo2(0).Left + ImgDo2(0).Width ImgDo3(1).Left = ImgDo3(0).Left + ImgDo3(0).Width ImgDo4(1).Left = ImgDo4(0).Left + ImgDo4(0).Width ImgDo1(1).Visible = True ImgDo2(1).Visible = True ImgDo3(1).Visible = True ImgDo4(1).Visible = True ImgDo1(1) = Digits.GraphicCell(11) ImgDo2(1) = Digits.GraphicCell(11) ImgDo3(1) = Digits.GraphicCell(11) ImgDo4(1) = Digits.GraphicCell(11) Call ShowCurrTime NhDoSetPh1 = 25 'VScrTemp1.Value Call SetTemp1 NhDoSetPh2 = 25 'VScrTemp2.Value Call SetTemp2 '----------------------- 'Yeu cau Master goi nhiet do len PC MSComm1.Output = "P" 'Ma dia chi cua PC Delay MSComm1.Output = "T" 'Ma cua PC yeu cau uC goi gia tri nhiet do End Sub Private Sub Form_Unload(Cancel As Integer) '---Tat tat ca cac thiet bi phong 1 MSComm1.Output = "P" Delay MSComm1.Output = "1" Delay MSComm1.Output = "g" Delay '---Tat tat ca cac thiet bi phong 2 MSComm1.Output = "P" Delay MSComm1.Output = "2" Delay MSComm1.Output = "G" Ñoà aùn toát nghieäp Trang- 124 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo MSComm1.PortOpen = False End Sub Private Sub MnExit_Click() Unload Me End End Sub Private Sub MnSetting_Click() FSetTemp.Show vbModal, Me End Sub '--------------------- Chöông trình truyeàn döõ lieäu töø maùy tính ---------------------- Private Sub Timer2_Timer() Dim Tam3, Tam4 As Integer If NhDoPh1 = "" Or NhDoPh2 = "" Then Timer2.Enabled = False If NhDoPh1 > NhDoSetPh1 Then Tam3 = NhDoPh1 - NhDoSetPh1 'VScrTemp1.Value Select Case Tam3 Case 1 LblPhong1.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "1" Delay MSComm1.Output = "c" LED1(0).BackColor = &HFF& LED1(1).BackColor = &H80000005 LED1(2).BackColor = &H80000005 LED1(3).BackColor = &H80000005 LblDevice1(0).Caption = "ON" LblDevice1(1).Caption = "OFF" LblDevice1(2).Caption = "OFF" LblDevice1(3).Caption = "OFF" Case 2 LblPhong1.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "1" Delay MSComm1.Output = "d" LED1(0).BackColor = &HFF& LED1(1).BackColor = &HFF& Ñoà aùn toát nghieäp Trang- 125 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo LED1(2).BackColor = &H80000005 LED1(3).BackColor = &H80000005 LblDevice1(0).Caption = "ON" LblDevice1(1).Caption = "ON" LblDevice1(2).Caption = "OFF" LblDevice1(3).Caption = "OFF" Case 3 LblPhong1.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "1" Delay MSComm1.Output = "e" LED1(0).BackColor = &HFF& LED1(1).BackColor = &HFF& LED1(2).BackColor = &HFF& LED1(3).BackColor = &H80000005 LblDevice1(0).Caption = "ON" LblDevice1(1).Caption = "ON" LblDevice1(2).Caption = "ON" LblDevice1(3).Caption = "OFF" Case Is >= 4 LblPhong1.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "1" Delay MSComm1.Output = "f" LED1(0).BackColor = &HFF& LED1(1).BackColor = &HFF& LED1(2).BackColor = &HFF& LED1(3).BackColor = &HFF& LblDevice1(0).Caption = "ON" LblDevice1(1).Caption = "ON" LblDevice1(2).Caption = "ON" LblDevice1(3).Caption = "ON" End Select Else: LblPhong1.Caption = "Normal" MSComm1.Output = "P" Ñoà aùn toát nghieäp Trang- 126 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Delay MSComm1.Output = "1" Delay MSComm1.Output = "g" LED1(0).BackColor = &H80000005 LED1(1).BackColor = &H80000005 LED1(2).BackColor = &H80000005 LED1(3).BackColor = &H80000005 LblDevice1(0).Caption = "OFF" LblDevice1(1).Caption = "OFF" LblDevice1(2).Caption = "OFF" LblDevice1(3).Caption = "OFF" End If Delay If NhDoPh2 > NhDoSetPh2 Then Tam4 = NhDoPh2 - NhDoSetPh2 'VScrTemp2.Value Select Case Tam4 Case 1 LblPhong2.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "2" Delay MSComm1.Output = "C" LED2(0).BackColor = &HFF LED2(1).BackColor = &H80000005 LED2(2).BackColor = &H80000005 LED2(3).BackColor = &H80000005 LblDevice2(0).Caption = "ON" LblDevice2(1).Caption = "OFF" LblDevice2(2).Caption = "OFF" LblDevice2(3).Caption = "OFF" Case 2 LblPhong2.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "2" Delay MSComm1.Output = "D" LED2(0).BackColor = &HFF Ñoà aùn toát nghieäp Trang- 127 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo LED2(1).BackColor = &HFF LED2(2).BackColor = &H80000005 LED2(3).BackColor = &H80000005 LblDevice2(0).Caption = "ON" LblDevice2(1).Caption = "ON" LblDevice2(2).Caption = "OFF" LblDevice2(3).Caption = "OFF" Case 3 LblPhong2.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "2" Delay MSComm1.Output = "E" LED2(0).BackColor = &HFF LED2(1).BackColor = &HFF LED2(2).BackColor = &HFF LED2(3).BackColor = &H80000005 LblDevice2(0).Caption = "ON" LblDevice2(1).Caption = "ON" LblDevice2(2).Caption = "ON" LblDevice2(3).Caption = "OFF" Case Is >= 4 LblPhong2.Caption = "Over!" MSComm1.Output = "P" Delay MSComm1.Output = "2" Delay MSComm1.Output = "F" LED2(0).BackColor = &HFF LED2(1).BackColor = &HFF LED2(2).BackColor = &HFF LED2(3).BackColor = &HFF LblDevice2(0).Caption = "ON" LblDevice2(1).Caption = "ON" LblDevice2(2).Caption = "ON" LblDevice2(3).Caption = "ON" End Select Else: LblPhong2.Caption = "Normal" MSComm1.Output = "P" Ñoà aùn toát nghieäp Trang- 128 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo Delay MSComm1.Output = "2" Delay MSComm1.Output = "G" LED2(0).BackColor = &H80000005 LED2(1).BackColor = &H80000005 LED2(2).BackColor = &H80000005 LED2(3).BackColor = &H80000005 LblDevice2(0).Caption = "OFF" LblDevice2(1).Caption = "OFF" LblDevice2(2).Caption = "OFF" LblDevice2(3).Caption = "OFF" End If Call SetTemp1 Call SetTemp2 Timer2.Enabled = False End Sub '--------------------- Chöông trình nhaän döõ lieäu töø vi ñieàu khieån ---------------------- Private Sub MSComm1_OnComm() If (MSComm1.CommEvent = comEvReceive) Then MSComm1.InputLen = 2 If (MSComm1.InBufferCount >= 1) Then Tam = MSComm1.Input If (Tam = "ac") Or (Tam = "ad") Or (Tam = "ae") Or (Tam = "af") Or (Tam = "ag") Or (Tam = "bC") Or (Tam = "bD") Or (Tam = "bE") Or (Tam = "bF") Or (Tam = "bG") Then Exit Sub NhDoPh1 = Asc(Left(Tam, 1)) NhDoPh2 = Asc(Right(Tam, 1)) Timer2.Enabled = True Lblph1.Caption = "Phoøng 1 = " '& Tam1 Lblph2.Caption = "Phoøng 2 = " '& Tam2 Call ShowTemp1 Call ShowTemp2 End If End If On Error GoTo The_End The_End: End Sub Ñoà aùn toát nghieäp Trang- 129 - Phaàn C Phuï luïc vaø taøi lieäu tham khaûo TAØI LIEÄU THAM KHAÛO 1. NGOÂ DIEÂN TAÄP – ÑO LÖÔØNG VAØ ÑIEÀU KHIEÅN BAÈNG MAÙY TÍNH – NHAØ XUAÁT BAÛN KHOA HOÏC VAØ KYÕ THUAÄT 2. NGOÂ DIEÂN TAÄP – LAÄP TRÌNH VAØ GHEÙP NOÁI MAÙY TÍNH TRONG WINDOWS – NHAØ XUAÁT BAÛN KHOA HOÏC VAØ KYÕ THUAÄT 3. NGUYEÃN HÖÕU PHÖÔNG – MAÏCH SOÁ – NHAØ XUAÁT BAÛN THOÁNG KEÂ 4. NGUYEÃN ÑÌNH PHUÙ – TAØI LIEÄU THÖÏC HAØNH VI ÑIEÀU KHIEÅN – TRÖÔØNG ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT 5. VOÕ HIEÁU NGHÓA – CAÙC CHÖÔNG TRÌNH MAÃU VISUAL BASIC 6.0 – NHAØ XUAÁT BAÛN THOÁNG KEÂ 6. NGUYEÃN TAÊNG CÖÔØNG, PHAN QUOÁC THAÉNG – CAÁU TRUÙC VAØ LAÄP TRÌNH HOÏ VI ÑIEÀU KHIEÅN 8051 – NHAØ XUAÁT BAÛN KHOA HOÏC VAØ KYÕ THUAÄT 7. TOÁNG VAÊN ON, HOAØNG ÑÖÙC HAÛI – HOÏ VI ÑIEÀU KHIEÅN 8051 – NHAØ XUAÁT BAÛN LAO ÑOÄNG – XAÕ HOÄI 8. NGUYEÃN HOÀNG SÔN – KYÕ THUAÄT TRUYEÀN SOÁ LIEÄU – NHAØ XUAÁT BAÛN LAO ÑOÄNG – XAÕ HOÄI

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

  • pdfThiết kế hệ thống điều khiển cho ngôi nhà tự động.pdf