Ƣu đồ thuật toán

Một phần của tài liệu thiết kế hệ thống tự động và cảnh báo thiết bị điện dân dụng từ xa (Trang 87)

5.1.1 ưu đồ thuật toán gởi và nhận tin nhắn

Hình 5.1a: Lưu đồ gởi tin nhắn Hình 5.1b: Lưu đồ nhận tin nhắn

Begin

AT CMGS =”0974634547” (lệnh gởi tn)

> nội dung tin nhắn (lệnh gởi tn) End T F Begin AT + CMGR =1 (lệnh đ c tn) Ch=<10> (khi kết thúc chuỗi) End Str[index]=ch

SVTH: Phạm Tiến Duẫn Trang 79 5.1.2 ưu đồ chương trình chính F 2 RI = DCDUNG Cho dừng DC Gởi tin nhắn 1 F F RI = DCNGICH Kích DC quay nghịch Gởi tin nhắn RI = DCTHUAN Kích DC quay thuận Gởi tin nhắn Hiển thị LCD Kiemtra()==1 Puts(atd=”0974634547”) Delay(30000) RI = CMTI Begin Khởi tạo (LCD) Gởi (AT) Gởi AT+CMGF=1 Gởi AT+CMGD=1 RI = OK F T F T F T T T T

SVTH: Phạm Tiến Duẫn Trang 80 Hình 5.2: Lưu đồ chương trình chính T T F T T F RI = TAT1 Tắt thiết bị 1 Gởi tn thông báo tb1 đ

ngắt RI = BAT1 RI = TATHET 1 2 RI = BATHET Bật tất cả 3 tb Gởi 3 tn thông báo 3 tb

hoạt động

Tắt tất cả 3 tb Gởi 3 tn thông báo 3 tb đ

ngắt

Bật thiết bị 1 Gởi tn thông báo tb1 đ

hoạt động

F

T

RI = BAT2

Bật thiết bị 2 Gởi tn thông báo tb2 đ

hoạt động

F

RI = TAT2

RI = BAT3

Tắt thiết bị 2 Gởi tn thông báo tb2 đ

ngắt

Bật thiết bị 3 Gởi tn thông báo tb3 đ

hoạt động F F T T Gởi tn (SAICUPHAP) End RI = TAT3 Tắt thiết bị 3 Gởi tn thông báo tb3 đ

ngắt

F

F (adsbygoogle = window.adsbygoogle || []).push({});

SVTH: Phạm Tiến Duẫn Trang 81

5.2 hƣơng t nh c de hần ề

chi tiết chương trình c thể em tại phụ ục 2

5.3 ết u ch y thử nghiệ

SVTH: Phạm Tiến Duẫn Trang 82 Hình 5.4: Khi c trộm hệ thống tự động gọi về điện thoại ngư i điều khiển

SVTH: Phạm Tiến Duẫn Trang 83 Hình 5.6: Thiết bị 1 b ng đèn 1 đ hoạt động

Hình 5.7: Khi đ bật thiết bị 1 thì hệ thống tự động nhắn tin thông báo về cho ngư i điều khiển biết thiết bị 1 đ hoạt động

SVTH: Phạm Tiến Duẫn Trang 84

 Hệ thống c thể điều khiển được thiết bị điện từ xa thông qua tin nhắn SMS:

 Sau khi gửi tin nhắn thì với nội dụng tin nhắn đ Hình 5.5 , bộ xử lý sẽ thực thi quá trình xử lý, sau đ là điều khiển thiết bị một cách tự động Hình 5.6 .

 Tin nhắn được gửi đi từ ngư i điều khiển để điều khiển thiết bị điện và ngư i điều khiển cũng nhận được tin nhắn trả ngược lại với nội dụng tin nhắn là đ điều khiển được các thiết bị hay chưa Hình 5.7 .

 Hệ thống c chức năng cảnh báo sự cố:

Khối thu phát hồng ngoại được thiết kế, lập trình kết hợp với trung tâm xử lý có khả năng gửi thông tin dữ liệu tới trung tâm xử lý. Có khả năng g i về cho ngư i điều khiển khi c báo động xảy ra Hình 5.4 .

5.4 ết uận chƣơng 5

 Chương 5 đ xây dựng thuật toán điều khiển các thiết bị điện tự động và cảnh báo từ xa.

 Cài đặt chương trình và chạy thử nghiệm.

SVTH: Phạm Tiến Duẫn Trang 85

 Đồ án đ thiết kế được:

 Mạch vi xử l gh p nối với module SIM300CZ.

 Mạch công suất.

 Mạch thu phát hồng ngoại.

 Xây dựng thuật toán điều khiển các thiết bị điện tự động và cảnh báo từ xa.

 Cài đặt chương trình và chạy thử nghiệm.

 Mạch điện với các module nhỏ trên mạch được thiết kế, thi công hoàn chỉnh và kết quả chạy thử nghiệm trên mô hình cho thấy hệ thống hoạt động tốt.

Mặc d đ hết sức cố gắng và thực hiện bằng sự nhiệt tâm và niềm hy v ng của tác giả nhưng chắc hẳn rằng với kiến thức còn khá hạn hẹp và non trẻ thì trong khi thực hiện đề tài tác giả sẽ không tránh được những thiếu sót. Tác giả rất mong muốn nhận được sự chỉ bảo dạy dỗ của Quý Thầy Cô Giáo để đề tài được hoàn thiện hơn. Tác giả xin chân thành kính gởi đến Quý Thầy Cô Giáo l i cảm ơn và l i chào trân tr ng!!!

SVTH: Phạm Tiến Duẫn Trang 86

ƢỚ P Ể ĐỀ À

Do đề tài còn khá mới mẻ ở nước ta và lượng kiến thức của tác giả là nhất định nên đề tài thực hiện xong chỉ đáp ứng được một phần nhỏ của một hệ thống hoàn chỉnh. Vì vậy, để đề tài này thêm phong phú hơn, mang nhiều tính thực tế hơn nữa, có khả năng ứng dụng cao hơn thì đề tài cần đưa thêm vào những yêu cầu như sau:

 Ngoài việc điều khiển giám sát bằng tin nhắn SMS, ta cũng c thể điều khiển Camera để chụp hình rồi sau đ gửi tin nhắn đa phương tiện đến điện thoại. (adsbygoogle = window.adsbygoogle || []).push({});

 Sử dụng thêm nhiều loại cảm biến khác, chẳng hạn như cảm biến nhiệt độ để đo nhiệt độ, cảm biến độ ẩm không khí để đo độ ẩm không khí, hệ thống báo cháy tự động,… để ứng dụng vào đề tài. Như thế ngư i dùng có thể hình dung ra được toàn bộ không gian trong ngồi nhà.

 Phần cứng cho mỗi module cần được tách r i nhằm dễ dàng cho việc chỉnh sửa, thay đổi.

Hy v ng với những hướng phát triển nêu trên cùng với những tưởng khác của ngư i đ c, những ngư i đi sau sẽ phát triển hơn nữa đề tài này, khắc phục những hạn chế, làm cho đề tài trở nên phong phú hơn, mang tính ứng dụng cao vào thực tế cuộc sống, phục vụ cho những lợi ích cá nhân, cộng đồng và xã hội.

SVTH: Phạm Tiến Duẫn Trang 87

TÀI LIỆU THAM KH O

[1] Văn Đình Nhân, Luận văn tốt nghiệp, “Hệ thống SCADA qua GPRS” – ĐH BK TPHCM tháng 01/2011.

[2] Hardware design, SIM300CZ_HD_V1.01, SIM co., ltd

[3] Microchip, PIC16F87XA Data Sheet, 28/40/44-Pin Enhanced Flash Microcontrollers

[4] Hội quán điện tử viễn thông, – 555 nguy n tắc ứng d ng, http://hoiquandtvt.net

[5] Dual full-bridge drive, L298,

http://www.st.com/stonline/books/pdf/docs/1773.pdf ột số we sites th h : http://www.spkt.net/diendan/ http://4tech.com.vn www.dientuvietnam.net www.picvietnam.com http://www.microchip.com

SVTH: Phạm Tiến Duẫn Trang 88

P

P 1: P Ệ P 16 877

 ADDLW

Cú pháp: ADDLW k 0 ≤ k≤255

Tác dụng: cộng giá trị k vào thanh ghi W, kết quả được chứa trong thanh ghi W. Bit trạng thái: C, DC, Z.

 ADDWF

Cú pháp: ADDWF f,d 0≤f≤255, d thuộc [0,1]).

Tác dụng: cộng giá trị hai thanh ghi W và thanh ghi f. Kết quả được chứa trong thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d =1.

Bit trạng thái: C, DC, Z.

 ANDLW

Cú pháp: ANDLW k 0≤k≤255

Tác dụng: thực hiện phép toán AND giữa thanh ghi và giá trị k, kết quả được chứa trong thanh ghi W.

Bit trạng thái: Z.

 ANDWF

Cú pháp: ANDWF f,d 0 ≤ f ≤ 127, d thuộc [0,1]).

Tác dụng: thực hiện phép toán AND giữa các giá trị chứa trong hai thanh ghi W và f.

Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d = 1. Bit trạng thái: Z.

 BCF (adsbygoogle = window.adsbygoogle || []).push({});

SVTH: Phạm Tiến Duẫn Trang 89 Tác dụng: xóa bit b trong thanh ghi f về giá trị 0.

Bit trạng thái: không có.

 BSF

Cú pháp: BSF f,b 0≤f≤127, 0≤b≤7 Tác dụng: set bit b trong trnh ghi f. Bit trạng thái: không có.

 BTFSS

Cú pháp: BTFSS f,b 0≤f≤127, 0≤b≤7

Tác dụng: kiểm tra bit b trong thanh ghi f. Nếu bit b bằng 0, lệnh tiếp theo được thực thi. Nếu bit b bằng 1, lệnh tiếp theo được bỏ qua và thay vào đ là lệnh NOP.

Bit trạng thái: không có.

 BTFSC

Cú pháp: BTFSC f,b 0≤f≤127, 0≤b≤7

Tác dụng: kiểm tra bit b trong thanh ghi f. Nếu bit b bằng 1, lệnh tiếp theo được thực thi. Nếu bit b bằng 0, lệnh tiếp theo được bỏ qua và thay vào đ là lệnh NOP.

Bit trạng thái: không có

 CALL

Cú pháp: CALL k 0≤k≤2047

Tác dụng: g i một chương trình con. Trước hết địa chỉ quay trở về từ chương trình con (PC 1 được cất vào trong Stack, giá trị địa chỉ mới được đưa vào bộ đếm gồm 11 bit của biến k và 2 bit PCLATH<4:3>.

Bit trạng thái: không có.

 CLRF

Cú pháp: CLRF f 0≤f≤127

Tác dụng: x a thanh ghi f và bit Z được set. Bit trạng thái: Z

SVTH: Phạm Tiến Duẫn Trang 90

 CLRW Cú pháp: CLRW

Tác dụng: x a thanh ghi W và bit Z được set. Bit trạng thái: Z.

 CLRWDT Cú pháp: CLRWDT

Tác dụng: reset Watchdog Timer, đồng th i prescaler cũng được reset, các bit PD và TO được set lên 1.

Bit trạng thái: PD và TO

 COMF

Cú pháp: COMF f,d 0≤f≤127, d thuộc [0,1]).

Tác dụng: đảo các bit trong thanh ghi f. Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.

Bit trạng thái: Z

 DECF (adsbygoogle = window.adsbygoogle || []).push({});

Cú pháp: DECF f,d 0≤f≤127, d thuộc [0,1]).

Tác dụng: giá trị thanh ghi f được giảm đi 1 đơn vị. Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1.

Bit trạng thái: Z

 DECFSZ

Cú pháp: DECFSZ f,d 0≤f≤127, d thuộc [0,1])

Tác dụng: giá trị thanh ghi f được giảm 1 đơn vị. Nếu kết quả sau khi giảm khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo không được thực thi và thay vào đ là lệnh NOP. Kết quả được đưa vào thanh ghi W nếu d = 0 hoặc thanh ghi f nếu d = 1.

Bit trạng thái: không có.

SVTH: Phạm Tiến Duẫn Trang 91 Cú pháp: GOTO k 0≤k≤2047

Tác dụng: nhảy tới một label được định nghĩa bởi tham số k và 2 bit PCLATH<4:3>.

Bit trạng thái: không có.

 Lệnh INCF

Cú pháp: INCF f,d 0≤f≤127, d thuộc [0,1])

Tác dụng: tăng giá trị thanh ghi f lên 1 đơn vị. Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d = 1.

Bit trạng thái: Z.

 INCFSZ

C php: INCFSZ f,d 0≤f≤127, d thuộc [0,1])

Tác dụng: tăng gi trị thanh ghi f ln 1 đơn vị. Nếu kết quả khác 0, lệnh tiếp theo được thực thi, nếu kết quả bằng 0, lệnh tiếp theo được thay bằng lệnh NOP. Kết quả sẽ được đưa vào thanh ghi f nếu d=1 hoặc thanh ghi W nếu d = 0.

Bit trạng thái: không có.

 IORLW

Cú pháp: IORLW k 0 ≤ k ≤ 255

Tác dụng: thực hiện phép toán OR giữa thanh ghi W và giá trị k. Kết quả được chứa trong thanh ghi W.

Bit trạng thái: Z.

 IORWF

Cú pháp: IORWF f,d 0≤f≤127, d thuộc [0,1])

Tác dụng: thực hiện phép toán OR giữa hai thanh ghi W và f. Kết quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.

Bit trạng thái: Z.

 RLF

SVTH: Phạm Tiến Duẫn Trang 92 Tác dụng: dịch trái các bit trong thanh ghi f qua c carry. Kết quả được lưu trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.

Bit trạng thái: C.

 RETURN Cú pháp: RETURN (adsbygoogle = window.adsbygoogle || []).push({});

Tác dụng: quay trở về chương trình chính từ một chương trình con Bit trạng thái: không có.

 RRF

Cú pháp: RRF f,d 0≤f≤127, d thuộc [0,1])

Tác dụng: dịch phải các bit trong thanh ghi f qua c carry. Kết quả được lưu trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.

Bit trạng thái: C.

 Sleep Cú pháp: SLEEP

Tác dụng: đưa vi điều khiển về chế độ Sleep. Khi đ WDT bị xóa về 0, bit PD được xóa về 0 bit TO được set lên 1 và Oscillator không được cho phép h at động.

Bit trạng thái: TO, PD.

 SUBLW Cú pháp: SUBLW k

Tác dụng: lấy giá trị k trừ giá trị trong thanh ghi W. Kết quả được chứa trong thanh ghiW.

Bit trạng thái: C, DC, Z.

 SUBWF

Cú pháp: SUBWF f,d 0≤f≤127, d thuộc [0,1])

Tác dụng: lấy giá trị trong thanh ghi f đem trừ cho thanh ghi W. Kết quả được lưu trong thanh ghiaW nếu d=0 hoặc thanh ghi f nếu d=1.

SVTH: Phạm Tiến Duẫn Trang 93 Bit trạng thái: C, DC, Z.

 SWAP

Cú pháp: SWAP f,d 0 ≤ f ≤ 127, d thuộc [0,1])

Tác dụng: đảo 4 bit thấp với 4 bit cao trong thanh ghi f. Kết quả được chứa trong thanh ghiaW nếu d=0 hoặc thanh ghi f nếu d=1.

Bit trạng thái: không có.

 XORLW

Cú pháp: XORLW k 0≤k≤255

Tác dụng: thực hiện phép toán XOR giữa giá trị k và giá trị trong thanh ghi W. Kết quả được lưu trong thanh ghi W.

Bit trạng thái: Z.

 XORWF

Cú pháp: XORWF f,d

Tác dụng: thực hiện phép toán XOR giữa hai giá trị chứa trong thanh ghi W và thanh ghi f. Kết quả được lưu vào trong thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.

Bit trạng thái: Z.

ệnh trên còn có một số lệnh khác như: #DEFINE

Cú pháp: #DEFINE <text1> <text2>

Tác dụng: thay thế một chuỗi kí tự này bằng một chuỗi kí tự khác, c nghĩa là mỗi khi chuỗi kí tự text1 xuất hiện trong chương trình, trình biên dịch sẽ tự động thay thế chuỗi kí tự đ bằng chuỗi kí tự <text2>. (adsbygoogle = window.adsbygoogle || []).push({});

#INCLUDE

Cú pháp: #INCLUDE <filename> hoặc #INCLUDE “filename”

Tác dụng: đính k m một file khác vào chương trình, tương tự như việc ta copy file đ vào vị trí xuất hiện lệnh INCLUDE. Nếu dùng cú pháp <filename> thì

SVTH: Phạm Tiến Duẫn Trang 94 file đình k m là file hệ thống (system file), nếu d ng cú pháp “filename” thì file đính k m là file của ngư i sử dụng. Thông thư ng chương trình được đính k m theo một “header file” chứa các thông tin định nghịa các biến (thanh ghi W, thanh ghi F,.. và các địa chỉ cảu các thanh ghi chức năng đặc biệt trong bộ nhớ dữ liệu. Nếu không c header file, chương trình sẽ kh đ c và khó hiểu hơn. #CONSTANT

Cú pháp: CONSTANT <name>=<value>

Tác dụng: khai báo một hằng số, c nghĩa là khi phát hiện chuỗi kí tự “name” trong chương trình, trình biên dịch sẽ tự động thay bằng chuỗi kí tự bằng giá trị “value” đ được định nghĩa trước đ .

#VARIABLE

Cú pháp: VARIABLE <name>=<value>

Tác dụng: tương tự như lệnh CONSTANT, chỉ c điểm khác biệt duy nhất là giá trị “value” khi d ng lệnh VARIABLE có thể thay đổi được trong quá trình thưc thi chương trình còn lệnh CONSTANT thì không.

#SET

Cú pháp: <name variable> SET <value>

Tác dụng: gán giá trị cho một tên biến. Tên của biến có thể thay đổi được trong quá trình thực thi chương trình.

#EQU

Cú pháp: <name constant> EQU <value>

Tác dụng: gán giá trị cho tên của tên của hằng số. Tên của hằng số không thay đổi trong quá trình thực thi chương trình.

#ORG

Cú pháp: ORG <value>

Tác dụng: định nghĩa một địa chỉ chứa chương trình trong bộ nhớ chương trình của vi điều khiển.

SVTH: Phạm Tiến Duẫn Trang 95 Cú pháp: END

Tác dụng: đánh dấu kết thúc chương trình. #PROCESSOR

Cú pháp: PROCESSOR <processor type>

SVTH: Phạm Tiến Duẫn Trang 96

P 2: ƢƠ O E P Ầ Ề

#include <16F877A.h> #include <def_877a.h> #include <string.h>

#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT

#use delay(clock=4000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include <lcd_lib_4bit1.c> // file giao tiep LCD

#define tb1 RB7 #define tb2 RB6 #define tb3 RB5 #define td RB1 #define chieu RB3 #define bt RE0 unsigned char str[60],str1[20],str2[20],str3[10]; char ch; int is1=0,is2=0,is3=0;

int kt,is,isti,ngat,idex,idex1,index,index1;

SVTH: Phạm Tiến Duẫn Trang 97 #INT_RDA (adsbygoogle = window.adsbygoogle || []).push({});

Receive_isr() {

ch = getc();

if(isti==1) //cho phep nhan khi

da khoi tao thanh cong

{

if(ch==10 && index ==0) is=1; //bat dau cho phep nhan chuoi

if(ch==10 && index>0) {idex=index; ngat=1; isti = 2; } //KHI KET THUC MOT CHUOI

if(ch!=10 && ch!=13 && is == 1) { str[index] = ch; index++; }

}

if(isti==2)

//cho phep nhan khi da khoi tao thanh cong

{

if(ch==10 && index1 ==0) is=1; //bat dau cho phep nhan chuoi

SVTH: Phạm Tiến Duẫn Trang 98 if(ch==10 && index1>0) {idex1=index1; ngat=2; isti = 0; } //KHI KET THUC MOT CHUOI

if(ch!=10 && ch!=13 && is == 1) { str1[index1] = ch; index1++; }

Một phần của tài liệu thiết kế hệ thống tự động và cảnh báo thiết bị điện dân dụng từ xa (Trang 87)