M CCP1.2 Synchrcnous Serial Pũrt USART Ccmparaìcr Reterence Vbl&age
7 Các cổng xuất nhập của PIC16F8A
2.7. Thuật toán điều khiển.
Chương trình có nhiệm vụ:
• Kiểm tra xem người đi vào phịng hay đi ra khỏi phịng
• Vi điều khiển thực hiện ngắt cổng B để chuơng trình điều khiển thực hiện
❖ Giải thuật: Vcc -5V Ạ X,. LE D P H AT 1 V cc-5V C 3 C 4 T13 Y 1 ZTB T1 4 V cc-5V C 5 R 5 R E S .T13 O S C 1/C LK IN R B0/IN T O S C 2 /C L K O U T R B 1 R B 2 R B 3 / P G 11 R A 0 /A N 0 R B 4 R A 1 /A N 1 R B 5 R A 2/A N 2 /V R E F -/C V R E F R B 6/P G C R A 3/A N 3 /V R E F + R B 7 / P G D R A 4/T0C K I/C 1 0 U T R A 5/A N 4 /S S */C 2 0 U T RC0/T1OSO/T1C KI R E0/R D */AN 5 R C 1/T1O S I/C C P2 R E 1 /W R */A N 6 R C 2/C C P 1 R E 2/C S */A N 7 R C 3/S C K/S C L R C 4/S D I/S D A 1C L R */V P P R C 5/S D 0 R C 6/TX/C K 33 r T14 3 4 r 35 36 r- , V o i t 2 37 - TH 1. 3 38 zj 39 I-I 5 40 c - _J 8 S2 15 S 1.16 , 9 17 S3 • 1 18 S 4 .V 1 1 S5 23 24 S6 ’ . 25 S7 . 26 □ 19 L1 , 20 L2 , 21 1 1 1 22 r 2 27 r28 r 3 1 3 29 r 2 30 c PVN 1_
Chương trình điều khiển được thực hiện dựa trên ngắt INTERRUPT của vi điều khiển. Chương trình chính hồn tồn khơng tham gia vào việc thực hiện điều khiển, chương trình chính có chức năng duy nhất là thực hiện ngắt mạch đểcho cổng B thực hiện điều khiển. Các cổng B được thực hiện ngắt là từ B4 - >B7.
Đầu tiên ta bố trí 2 bộ thu phát hồng ngoại gần nhau theo phương tạo thành mặt phẳng song song với mặt đất, bộ thu phát đầu tiên nối với cổng B4 của vi xử lý, bộ thu phát thứ 2 nối tới cổng B5 của vi xử lý.
Khi có người đi qua, để biết được người đó đi vào hay ra khỏi phịng. Ta cần xem xét xem tín hiệu ở bộ thu phát thứ nhất bị gián đoạn trước hay tín hiệu của bộ thu phát hồng ngoại thứ 2. Nếu mà tín hiệu ở bộ thu phát thứ nhất bị gián đoạn trước thì có nghĩa là người đi vào phịng, nếu tín hiệu ở bộ thu phát thứ 2 bị gián đoạn trước thì có nghĩa là người đi ra khỏi phịng. Vi xử lý ( cụ thể là chương trình chính ) sẽ thực hiện ngắt cổng B để thực hiện đoạn chương trình.
❖ Sơ đồ thuật tốn
Khởi tạo
Star Trong đó:
H B4=input_pin(B4): tín hiệu từ Led thu 1 B5=input_pin(B5):tín hiệu từ Led thu 2 Số ng: số lượng người đang ở trong phòng
❖ Chương tipnn nạp vào Vi aieu khien ne iõrã//A
’ig Ngắt từềỗ.4khỉểĩi ta sử dụng ngôn pmữ C viết trên phần lô phỏng t _ „ hươqg trình con Hiển tl Ep mềm CC con Bật chương t
laura()’, chương trình con Ngắt chương trì Chương trình chính B4=0 ’int d den(ng)
m người vào ‘inS
tử, mơi
Tăng số
người lên 1 ng trình
ed(ng)’,
lauvao()’, chương trình conLĐếm người ra thay đổi trSạng thái cá
Số ng> B7 và ácbhằhGlsố và biến trong chư
g ứng với 1 con
chạy ‘i’ dùng Nwivtừ1B4ặ>Btể quét Led. Biến ‘ng‘ bi ở trong phòng. Biếrs/LOL’'
hữ số hàng chục và hàng
hận tín hiệu từ đầu ra của hai Led thu 1 và 2 : bình thường ‘vao=ra=1’, khi =0’, qua bộ thu phát 2'
Biến đang với c thu n
có người cắt qua bộ thu phát 1 thì ‘v ‘x và y’ để xác nhận xem một x=1 ơng trình : Mảng LED7[10] gÈm 10 phần số lự 0 đến 9 mà Le d Bậtđiệ, B5=0 hiển thị. số người thị các Led7 đoạn 1 và 2 tương ứng ười trong phòng. Biến ‘vao, ra’ để
Shiốệu ng
Giảm số i biến 2Độ thM» người đi 1 trong =y=0’, khi người c 1 thì lượt người vào hoặc ra: ban
, khi người cắt qua Led thu 2 thS y=1 ; khi người đã đi qua cả 2 bộ thu phát 1,2 thì cài đặt lại : x=y=0 và chuẩn bị cho 1 lượt mới.
Chương trình sử dụng ngắt đổi trạng thái nào trê
ra ngắt. Trong bài này, tùy vào0
thay sinh
chưcng trình ngắt sẽ gọi các chi
Tắt điện Số ng
i trạng thái cổng B : khi có bất kỳ sự ủa cổng B thì chương trình sẽ hiệu thu được ở các cổng B4 và B5 n ‘dauvao’ hay là chương trình con số người trong phịng ’ng’.
‘daura’. Chương trình ngắt sẽ tr
Chương trình chính có vịng lặp vơ hạn giúp hệ thống có thể làm việc liên tục, từ giá trị ‘ng’ được trả về từ chương trình ngắt, chương trình chính sẽ gọi các hàm ‘den(ng)’ và ‘Led(ng)’ để thực hiện việc đóng cắt điện và hiển thị.