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
143 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2382 | Lượt tải: 0
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:
- Thiết kế hệ thống điều khiển cho ngôi nhà tự động.pdf