C ấu trúc bộ nhớ vi điều khiển PI16F877A
4.3.1. Lưu đồ chương trình chính
Giải thích sơ đồ
Khi bắt đầu hoạt động, vi điều khiển sẽ khởi tạo LCD, khởi tạo module sim900 và khởi tạo truyền dữ liệu qua chuẩn RS232 của vi điều khiển. Thư viện LCD dùng file lcd_lib_4bit.c nên lệnh khởi tạo LCD là lcd_init(). Khởi tạo việc truyền dữ liệu bằng cách cài đặt tốc độ baurate, chân truyền dữ liệu, chân nhận dữ liệu của vi điều khiển và các thông số liên quan.
Với việc cài đặt module sim900, có khá nhiều các lệnh được vi điều khiển PIC16F877A gửi cho sim900 để thực hiện cài đặt các thông số. Cụ thể như sơ đồ sau:
Hình 4.18. Sơ đồ khởi tạo Module sim900
(1), (2), (3) AT<CR>
Vi điều khiển sẽ gửi 3 lần lệnh AT cho sim900 để chắc chắn Module Sim900 đã sẵn sàng hoạt động. Kết quả trả về sẽ là OK.
(4) AT+CMGF=1<CR>
Lệnh này sẽ thiết lập quá trình truyền nhận tin nhắn ở chế độ text, thuận lợi cho việc xử lý tin nhắn về sau. Mặc định sim900 sẽ truyền nhận ở chế độ PDU.
(5) AT+CNMI=1,1,0,0,0<CR>
Thiết lập chế độ thông báo cho vi điều khiển biết khi có tin nhắn mới. Với các thông số trên, thì mỗi khi có tin nhắn mới, sim900 sẽ gửi cho vi điều khiển một chuỗi
ký tự, trong đó các ký tự đầu tiên là +CMTI. Chính nhờ chuỗi ký tự này mà PIC16F877A khi nhận được các chuỗi gửi về từ sim900 mà nó biết được khi nào là có tin nhắn, khi nào không có tin nhắn.
(6) AT+CMGD=1<CR>
Lệnh này dùng để xóa tin nhắn tại ngăn số 1. Khi có tin nhắn mới thì nó sẽ nằm tại ngăn số 1 này. Sau khi xử lý tin nhắn thì lại thực hiện lệnh này một lần nữa, đảm bảo trong quá trình hoạt động, nếu có tin nhắn mới, thì nó sẽ luôn luôn được lưu tại ngăn số 1.
Kết thúc quá trình khởi tạo các thông số cho Module sim, LCD và truyền nhận dữ liệu. Sau đó, hệ thống sẽ ở trạng thái chờ có tin nhắn SMS mới đến. Nếu có thông báo có tin nhắn mới, vi điều khiển sẽ nhận tin nhắn này sau đó xử lý tin nhắn và báo cáo kết quả lên LCD và trả lời tin nhắn SMS tới số điện thoại đã nhắn tin đến. Phần xử lý tin nhắn sẽ được nói đến trong phần sau.
Trong suốt quá trình làm việc, màn hình LCD luôn luôn được hiển thị trạng thái đóng ngắt của các thiết bị như hình:
Hình 4.19. Trạng thái của các thiết bị điện
Dòng đầu của LCD ghi số thứ tự các thiết bị, dòng thứ hai có ghi trạng thái của các thiết bị, với 0 là thiết bị đang ở trạng thái Off, 1 là trạng thái On.