Tải bản đầy đủ - 56 (trang)
5 Lưu đồ thuật toán

5 Lưu đồ thuật toán

Tải bản đầy đủ - 56trang

Hình 3.13 Chương trình chính

-Nhìn vào sơ đồ thuật toán trên ta có thể phân tích khái quát như sau:

41



-Khi bắt đầu chương trình ta thực hiện việc khai báo các biến bằng các

lệnh: unsigned char j=0, add=0 ,i=0; unsigned char RxBuf[32].Sau đó hiển thị

trên màn hình lcd 2 hàng chữ “S martHome HD-02" và "Wireless Device" Tiếp

đến là vòng lặp vô hạn,ở đây ta sẽ viết đoạn chương trình cho việc cài đặt địa

chỉ, điều khiển thiết bị, quá trình thu và hiện thị kết quả trên màn hình.Khởi đầu

là đoạn chương trình thu dữ liệu.Sau khi thu được dữ liệu sẽ thưc hiện kiểm tra

xem 3 kí tự đầu tiên có phải là “$ H D” không.Nếu đúng thì sẽ thực hiện việc

gán 2 biến “ rev” và “ mang[rev]” lần lượt là 2 kí tự tiếp theo. Đây chính là địa

chỉ và trạng thái trạm bị điều khiển. Nhờ vào hàm scandkK18(add,0) sẽ thực

hiện điều khiển các thiết bị.Nói về quá trình cài đặt thì bắt đầu bằng việc ấn nút

set va giữ nút trong vòng vài giây tùy theo thời gian trễ và lệnh tiếp theo chỉ

được thực hiện khi nut set được nhả. Công việc này được thực hiện bởi các lệnh

sau: if(SET==0), delay_ms(2000), if (SET==0) buzz(50), delay_ms(10),

while(SET==0);. Khi nút set được nhả ta sẽ gán s1=1,việc này dùng để thực

hiện các lệnh được viết trong timer.Sau đó ta thực hiện hiển thi nội dung

"PressOne K1<->K8" và "Set Address=" và thực hiện quá trình quét các nút

bấm bằng hàm scansetK18().Quá trình quét này được thưc hiện trong một vòng

lặp, khi s1 <15 đúng thì tiếp tục quét, ngược lại sẽ thoát khỏi chương trình quet

và thực hiện gán tất cả các trạng thai của trạm đều ở trạng thái tắt và phát đi nhờ

hàm trans(add).Biến add được gán tương ứng với địa chỉ trạm được cài đặt.Nếu

nút bấm set không được thực hiện thì chương trình tiếp tục kiểm tra đến nút bấm

acess.Đây là nút dung để truy nhập đến trạm bị điều khiển để điều khiển thiết bị

trạm đó.Khi nút này được bấm và chỉ khi nào nhả ra thì đoạn chương trình này

mới được thực hiện. Đâu tiên là gán một biến s3=1 để thực hiên các lệnh trong

đoạn chương trinh timer.Tiếp đó là hiển thị trên màn hình hai dòng chữ: “acess

Room:” và “status:” Mỗi lần acess được nhấn thì một biến j sẽ được tăng lên

một đơn vị, khi nó bằng 9 thì ta lại gán nó bằng 1. Một biến khác là add_res sẽ

được gán bằng j. Đây chình là địa chỉ của trạm bị điều khiển. Hàm

42



scandkK18(add_res,1) sẽ được thực hiện ngay sau đó để phát đi tin hiệu điều

khiển này.Quá trình này được thực hiện trong một vòng lặp với s3<20 đúng sẽ

thực hiện lệnh ở dưới còn sai sẽ thoát.Khi chưa cài đặt địa chỉ cho trạm sẽ có

đoạn chương trình ở cuối tương ứng với add=0.Khi đó màn hình sẽ hiển thị hàng

chữ: “Room:” và “ status :”.Còn ngược lại khi add khác 0 thì sẽ hiển thị “

Room:12345678” và “status:” và thực hiện hàm led(&txbuf[0]),hàm này giúp

hiện thi trang thái của các trạm trên lcd và hàm scandkK18(add,0), hàm này điều

khiển các thiết bị của chính mình và phát đi tin hiệu để thông báo trạng thái cho

trạm khác.



43



Các chương trình con





Chương trình quét nút cài đặt địa chỉ



Hình 3.14 Chương trình quét nút cài đặt

Phân tích: Chương trình này có tác dụng quét trạng thái của tất cả các

nút bấm từ K1 đến K8. Khi một nút được bấm xuống và nhả ra thì địa chỉ của

44



trạm được gán tương ứng với giá trị của nút đó.Ví dụ K1 được bấm thì trạm sẽ

được gán địa chỉ là bằng 1.





45



Chương trình quét nút điều khiển thiết bị



Hình 3.15 Chương trình quét nút điều khiển thiết bị

Phân tích: Chương trình quét nút điều khiển thiết bị này thực hiện việc

quét trạng thái các nút bấm sau đó phát đi tín hiệu điều khiển trạm khác. Biến ad

tương ứng với địa chỉ của trạm bị điều khiển còn mảng[ad] là tín hiệu dùng để

điều khiển các thiết bị điện của trạm ad. Giá trị của mảng[ad] phụ thuộc vào việc

ta bấm các nút. Mang[ad] có độ dài 1byte mang theo các giá tri để điều khiển 8

thiết bị. Nút bấm K1 tương ứng với bit 1, K2 tương ứng bit 2 và tương tự như

vậy k8 tương ứng với bit 8. Câu lệnh mang[ad]^=1, mang[ad]^=2…

mang[ad]^=128 có tác dụng khi các nut K1 đến K8 được bấm thì tại các bit

tương ứng sẽ thay đổi luân phiên nhận các giá trị 1 hoặc 0. Hàm trans(ad) có vai

trò là hàm phát, nó sẽ phát đi địa chỉ ad tương ứng với địa chỉ trạm bị điều khiển

và kèm theo mang[ad] mang theo tín hiệu điều khiển các thiết bị tram ad. Nút

bấm all có tác dụng bật hoăc tắt tất cả các thiết bị cùng lúc. Trong sơ đồ còn có

biến K13 biến này có tác dụng như sau: Khi K13=1 thì nó cho phép trạm điều

khiển thiết bị của trạm khác còn khi K13=0 thì khi ta bấm các nút trên mạch nó

sẽ điều khiển bật tắt thiết bị của chính bản thân trạm đó. Để tách ra được các bit

cụ thể để điều khiển từng relay thì sử dụng các câu lệnh như “l1=mang[ad]%2;

l1=(mang[ad]>>1)%2; l3=(mang[ad]>>2)%2”... Các chân l1,l2,l3…này được

nối với các chân để điều khiển relay tương ứng.





46



Chương trình phát



Phân tích: Chương trình này thực hiện phát đi khung dữ liệu gồm có 3 ki tự đầu

là S H D, tiếp đó là địa chỉ của trạm bị điều khiển và tín hiệu điều khiển trạm đó

được chứa trong mang[adr]+0x30. Lý do phải cộng 0x30 là vì để chuyển từ

dạng số thành dạng kí tự để phát đi.





47



chương trình trong timer



Hình 3.16 chương trình trong timer

Phân tích: Chương trình này có nhiệm vụ. Khi s1 khác 0 thì sẽ thực hiện hiển

thị dấu “?” tại vị trí hiển thị địa chỉ trạm nhằm mục đích nhắc người sử dụng

dang ở trong chế độ cài đặt địa chỉ. Dấu “?” sẽ nhấp nháy cùng với địa chỉ đang

được cài. Quá trình cài đặt kết thúc khi không còn nháy nữa và khi ấy màn hình

sẽ trở về màn hình ở trạng thái bình thường. Tương tự khi s3 khác 0, tại vị trí

của địa chỉ trạm được truy nhập sẽ nhấp nháy và thực hiện hiển thị trạng thái các

thiết bị lên trên màn hình.





48



Chương trình hiển thị trạng thái các trạm



Hình 3.17 Chương trình hiển thị trạng thái các trạm



49



Phân tích: Chương trình này dùng để hiện thị trạng thái các trạm trên màn hình.

Biến *dk ở trên tương ứng là các mảng trạng thái của các thiết bị của từng trạm.

Với 8 trạm ta có 8 mảng trạng thái. Chương trình này thực hiện việc quét lần

lượt 8 mảng trang thái này. Độ dài của một mảng là một byte , trong đó tương

ứng với mỗi bít là trạng thái on, off của một thiết bị. Khi thực hiên so sánh biến

*dk với 0 thì chỉ cần một bit trong tổng số 8 bit khác 0 thì biến *dk sẽ khác 0,

khi đó ta thực hiện hiển thị “0” lên màn hình tại vị trí tương ứng. Trong trường

hợp tất cả các bit đều bằng 0 thì sẽ hiển thi “F” lên mán hình. Các lệnh

lcd_gotoxy dùng để di chuyển đúng đến vị trí cần hiển thị.



50



CHƯƠNG 4: TỔNG KẾT

4.1 Kết quả thi công

-Quá trình tìm hiểu và nghiên cứu để hoàn thành đồ án đã giúp em củng

cố lại kiến thức đã được học và mở rộng thêm nhiều kiến thức mới, đồng thời có

dịp cọ sát với thực tế và rút ra được nhiều kinh nghiệm bổ ích. Dưới sự hướng

dẫn của Thầy Ngô Xuân Hường và thầy Vũ Xuân Hậu đã giúp người thực hiện

hoàn thiện đề tài “Thiết kế hệ thống điều khiển và giám sát bật tắt thiết bị điện

trong nhà sử dụng sóng RF ” một cách hoàn chỉnh.

-Sau nhiều tuần tích cực tìm hiểu và nỗ lực thực hiện, em đã hoàn thành

đồ án đúng theo yêu cầu và thời gian quy định. Dưới đây là hình ảnh của mạch

sau khi hoàn chỉnh và kết quả quá trình thử nghiệm mạch:



Hình 4.1 Hình ảnh sản phẩm



51



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

5 Lưu đồ thuật toán

Tải bản đầy đủ ngay(56 tr)

×