2A Nếu MT không thực hiện được kết nối do sóng yếu, hoặc không có sóng thử bằng cách tháo antenna của modem GSM, chuỗi trả về sẽ có dạng: NO DIAL TONE 2B Nếu cuộc gọi bị từ chối bởi n
Trang 1MỤC LỤC
LỜI MỞ ĐẦU 3
CHƯƠNG I : GIỚI THIỆU MODULE SIM900, TẬP LỆNH ATCOMMAND 1.1 Tổng quan về tin SMS 5
1.2 Giới thiệu Module SIM900 5
1.2.1 Tổng quan về Module SIM900 5
1.2.2 Đặc điểm của Module SIM900 6
1.2.3 Khảo sát sơ đồ chân và chức năng từng chân của SIM900 8
1.3 Khảo sát tập lệnh AT Command của Module SIM900 10
1.3.1 Khởi tạo cấu hình mặc định cho module 12
1.3.2 Delete tin nhắn trong SIM 14
1.3.3 Thực hiện cuộc gọi 15
1.3.4 Nhận cuộc gọi đến 16
1.3.5 Đọc tin nhắn 18
1.3.6 Gửi tin nhắn 19
1.3.7 Các lệnh khác : 21
CHƯƠNG II : KHẢO SÁT VI ĐIỀU KHIỂN PIC16F887A 2.1 Giới thiệu về vi điều khiển PIC 16F877A 22
2.1.1 Tổng quan về họ Vi điều khiển PIC 22
2.1.2 Một số đặc tính của Vi điều khiển PIC 23
2.1.3 Những đặc tính ngoại vi 24
2.1.4 Đặc điểm về tương tự 24
2.1.5 Các đặc điểm đặc biệt 24
2.1.6 Công nghệ CMOS 25
2.2 Giới thiệu về PIC16F8XX và PIC16F877A : 25
2.3 Cấu trúc, chức năng PIC16F887A loại 40 chân PDIP 27
2.3.1 Sơ đồ chân, chức năng các chân 27
2.3.2 Cấu trúc bên trong của PIC16F877A 31
2.3.3 Các cổng xuất nhập 33
Trang 22.3.4 Khối chức năng ngoại vi 36
2.3.5 Tổ chức bộ nhớ 36
2.3.6 Thanh ghi chức năng đặc biệt SFR: 37
2.3.7 Chế độ Reset 39
2.3.8 Chế độ Sleep 39
2.3.9 “Đánh thức” vi điều khiển 39
2.3.10 Ngắt (interput) 40
2.4 Bộ chuyển đổi ADC trong PIC16F887A 41
CHƯƠNG III : GIAO TIẾP GIỮA VI ĐIỀU KHIỂN – SIM900, KHỐI NGUỒN, NGUYÊN LÝ HOẠT ĐỘNG 3.1 Giao tiếp giữa PIC16F887A và module SIM900 45
3.1.1 Tìm hiểu giao tiếp nối tiếp UART 45
3.2 Giao tiếp giữa PIC16F887A với khối relay 46
3.3 Khối nguồn 48
3.4 Nguyên lý hoạt động 48
CHƯƠNG IV : THIẾT KẾ - THI CÔNG HỆ THỐNG 4.1 Dụng cụ và vật liệu 51
4.2 Thiết kế và thi công mô hình 52
CHƯƠNG V : TỔNG KẾT ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 5.1 Kết quả và đánh giá đồ án 57
5.2 Hướng phát triển đề tài 58
5.3 Tài liệu tham khảo 58
CHƯƠNG VI : PHẦN MỀM HỆ THỐNG
Trang 3LỜI MỞ ĐẦU
Từ những yêu cầu thực tế, xu hướng đòi hỏi ngày càng cao của cuộc sống cùng với sự phát triển mạnh mẽ của nhiều thiết bị thông minh di động nên em đã chọn đề tài đồ án tốt nghiệp : " ĐIỀU KHIỂN THIẾT BỊ GIA ĐÌNH BẰNG SMS " được thể hiện thông qua “ MÔ HÌNH NHÀ THÔNG MINH ”
độ tăng cao có nguy cơ cháy hay gửi thông báo cảnh báo sự rò rỉ khí gas trong gia đình Ngoài ra, hệ thống còn mang tính bảo mật Nghĩa là chỉ có gia chủ hay các thành viên trong gia đình, người biết mật khẩu của ngôi nhà thì mới điều khiển được ngôi nhà
Mục đích và phương pháp nghiên cứu/thực hiện đồ án :
Đồ án được nghiên cứu, khảo sát và thực hiện với mục đích áp dụng những kiến thức đã được học trong nhà trường để thiết kế, tạo ra một hệ thống quản lý, hệ thống cảnh báo trong nhà một cách hoàn chỉnh Hệ thống tích hợp module điều khiển giám sát trung tâm, module công suất cho các thiết bị trong nhà và và module báo
Trang 4động (cảnh báo) cùng các module tiện ích khác Với module báo động sử dụng cảm biến hồng ngoại sẽ gửi thông tin dữ liệu về bộ xử lí trung tâm khi có tác động của đối tượng bên ngoài (người lạ đột nhập) Module cảm biến khí gas/cảm biến nhiệt độ sẽ gởi thông tin dữ liệu về bộ xử lý trung tâm khi có khí gas bị rò rỉ/nhiệt độ trong nhà tăng quá giới hạn quy định Qua xử lý, dữ liệu sẽ được gửi về thiết bị đầu cuối (mobile) của người điều khiển để báo cho biết có tác động của đối tượng bên ngoài (người lạ đột nhập), hay khí gas đang rò rỉ để có phương án giải quyết
Trong đề tài này em đã sử dụng các phương pháp nghiên cứu :
Phương pháp tham khảo tài liệu : phần lớn các tài liệu được tham khảo trên
mạng qua các diễn đàn điện tử, trang web cung cấp tài liệu học tập
Phương pháp quan sát : khảo sát một số mạch thực tế đang có trên thị trường,
các mô hình tốt nghiệp của anh chị các khóa trước và tham khảo thêm một số dạng mạch từ mạng Internet
Phương pháp thực nghiệm: từ những ý tưởng và kiến thức vốn có của mình
kết hợp với sự hướng dẫn của giáo viên, em đã lắp ráp thử nghiệm nhiều dạng mạch khác nhau để từ đó chọn lọc những mạch điện tối ưu Thiết kế mạch điện
sử dụng các linh kiện thực tế Thử nghiệm và tối ưu sản phẩm trực quan các phần không mô phỏng được
Kết quả đạt được :
Đồ án đã đạt được những kết quả cụ thể sau :
Tìm hiểu về tập lệnh AT của Module sim 900
Thực hiện kết nối giữa Module SIM900 với vi điều khiển 16F887A
Hoàn thành mục tiêu đặt ra là điều khiển được các thiết bị điện trong nhà bằng SMS và hoàn thiện hệ thống cảnh báo
Trang 5CHƯƠNG I : GIỚI THIỆU MODULE SIM900, TẬP
LỆNH ATCOMMAND
1.1 Tổng quan về tin SMS
SMS là từ viết tắt của Short Message Service Đó là một công nghệ cho phép gửi và nhận các tín nhắn giữa các điện thoại với nhau Dữ liệu có thể được lưu giữ bởi một tin nhắn SMS là rất giới hạn Một tin nhắn SMS có thể chứa tối đa là 140 byte (1120 bit) dữ liệu Vì vậy, một tin nhắn SMS chỉ có thể chứa :
160 kí tự nếu như mã hóa kí tự 7 bit được sử dụng
70 kí tự nếu như mã hóa kí tự 16 bit Unicode UCS2 được sử dụng Tin nhắn SMS dạng text hỗ trợ nhiều ngôn ngữ khác nhau Nó có thể hoạt động tốt với nhiều ngôn ngữ mà có hỗ trợ mã Unicode, bao gồm cả Arabic, Trung Quốc, Nhật bản và Hàn Quốc
1.2 Giới thiệu Module SIM900
1.2.1 Tổng quan về Module SIM900
Một modem GSM là một modem wireless, nó làm việc cùng với một mạng wireless GSM Một modem wireless thì cũng hoạt động giông như một modem quay
số Điểm khác nhau chính ở đây là modem quay số thì truyền và nhận dữ liệu thông qua một đường dây điện thoại cố định trong khi đó một modem wireless thì việc gửi nhận dữ liệu thông qua sóng
Giống như một điện thoại di động GSM , một modem GSM yêu cầu 1 thẻ sim với một mạng wireless để hoạt động
Module SIM 900 là một trong những loại modem GSM Nhưng Module SIM
900 được nâng cao hơn có tốc độ truyền dữ liệu nhanh hơn Nó sử dụng công nghệ GSM/GPRS hoạt động ở băng tầng GSM 850Mhz, EGSM 900Mhz, DCS 1800 Mhz
và PCS 1900Mhz, có tính năng GPRS của Sim 900
Trang 6
Hình 1.2.1 Module SIM900
1.2.2 Đặc điểm của module SIM900
+ Nguồn cung cấp khoảng 3,4 – 4,5V
+ Nguồn lưu trữ
+ Băng tần: GSM 850Mhz EGSM 900Mhz, DCS 1800 Mhz và PCS 1900Mhz SIM900 có thể tự động tìm kiếm các băng tần
Bình thường -300C tới +800C
Hạn chế : - 400C tới -300C và +800C tới +850C
Nhiệt độ bảo quản: -450C tới 900C + Dữ liệu GPRS :
GPRS dữ liệu tải xuống: Max 85.6 kbps
GPRS dữ liệu úp lên: Max 42.8 kbps
Trang 7 Sơ đồ mã hóa: CS-1, CS-2, CS-3 và CS-4
Sim 900 hổ trợ giao thức PAP, kiểu sử dụng kết nối PPP
Sim 900 tích hợp giao thức TCP/IP
Chấp nhận thông tin được điều chỉnh rộng rãi + SMS :
MT, MO, CB, Text and PDU mode
Bộ nhớ SMS: Sim card + Sim card :
Hỗ trợ sim card: 1,8v ; 3v + Anten ngoài :
Kết nối thông qua anten ngoài 500km hoặc đế anten + Âm thanh :
Dạng mã hòa âm thanh
Mức chế độ (ETS 06.20)
Toàn bộ chế độ (ETS 06.10)
Toàn bộ chế độ tăng cường (ETS 06.50/ 06.06/ 06.80)
Loại bỏ tiếng dội + Giao tiếp nối tiếp và sự ghép nối :
Cổng nối tiếp : 8 Cổng nối tiếp (ghép nối)
Cổng kết nối có thể Sd với CSD Fax, GPRS và gửi lệnh ATCommand tới module điều khiển
Cổng nối tiếp có thể Sd chức năng giao tiếp
Hỗ trợ tốc độ truyền 1200 BPS tới 115200 BPS
Cổng hiệu chỉnh lỗi: 2 cổng nối tiếp TXD và RXD
Cổng hiệu chỉnh lỗi chỉ sử dụng sữa lỗi + Quản lý danh sách :
Hỗ trợ mẫu danh sách: SM, FD, LD, RC,ON, MC + Đồng hồ thời gian thực :
Trang 8 Người cài đặt + Times function :
Lập trình thông qua AT Command + Đặc tính vật lý (đặc điểm) :
Kích thước 24mmx24mmx24mm> Nặng 3.4g
1.2.3 Khảo sát sơ đồ chân và chức năng từng chân của SIM900
Hình 1.2.2 Sơ đồ chân SIM900
Trong đồ án đã sử dụng Breakout SIM 900 tức là SIM 900 đã được thế kế kết nối phù hợp thành module để tiện phục vụ cho nội dung cần thiết trong đồ án
Trang 9Hình 1.2.3 Sơ đồ thiết kế Breakout của Module SIM900
Trang 10Sơ đồ chân Breakout:
Hình 1.2.4 Sơ đồ chân Breakout SIM900
Chân 1: Chân ON/OFF ta cần kích 1 xung có mức tích cực dương vào khoảng 1s, lúc này đèn status sẽ sáng, sau đó chớp nháy với tần suất nhanh báo hiệu SIM900 đang khởi động và tìm mạng Sau 10s sau Led Status nhấp nháy chậm báo hiệu SIM900 đã hoạt động bình thường
Chân 2 : Request to send
Chân 3 : đầu ra dùng để chỉ báo mạng kết nối được hệ thống
Chân 4 : Clear to send
Chân 5 : đầu vào pin dự phòng cho module
Chân 6 : Data carrier detection
Chân 7 : Chân vào của bộ chuyển đổi tín hiệu tương tự sang số
Chân 8 : Ring chân ra loa báo hiệu có cuộc gọi đến
Chân 9, 11 : chân loa nghe cuộc thoại
Chân 13,15 : chân MIC
Chân 10 : chân đầu cuối dữ liệu
Chân 12 : chân truyền dữ liệu
Chân 14 : chân nhận dữ liệu
Chân 16 : chân RESET SIM900
Chân 17,19 : chân nguồn cấp cho sim hoạt động
Chân 18,20 : chân mass
1.3 Khảo sát tập lệnh AT Command của Module SIM900
Các lệnh AT là các hướng dẫn được sử dụng để điều khiển một modem
AT là một cách viết gọn của chữ Attention Mỗi dòng lệnh của nó bắt đầu với
Trang 11“AT” hay “at” Đó là lý do tại sao các lệnh modem được gọi là các lệnh AT Nhiều lệnh của nó được sử dụng để điều khiển các modem quay số sử dụng dây mối (wired dial-up modems), chẳng hạn như ATD (Dial), ATA (Answer), ATH (Hool control) và ATO (return to online data state), cũng được hỗ trợ bởi các modem GSM/GPRS và các điện thoại di động
Bên cạnh bộ lệnh AT thông dụng này, các modem GSM/GPRS và các điện thoại di động còn được hỗ trợ bởi một bộ lệnh AT đặc biệt đối với công nghệ GSM Nó bao gồm các lệnh liên quan tới SMS như AT+ CMGS (gửi tin nhắn SMS), AT+CMSS (gửi tin nhắn SMS từ một vùng lưu trữ), AT+CMGL (chuỗi liệt kê các tin nhắn SMS) và AT+CMGR (đọc tin nhắn SMS) Ngoài ra, các modem GSM còn hỗ trợ một bộ lệnh AT mở rộng Những lệnh AT mở rộng này được định nghĩa trong các chuẩn của GSM Với các lệnh AT mở rộng này
có thể làm một số thứ như sau :
Đọc,viết, xóa tin nhắn
Gửi tin nhắn SMS
Kiểm tra chiều dài tín hiệu
Đọc, viết và tìm kiếm về các mục danh bạ
Số tin nhắn SMS có thể được thực thi bởi một modem SMS trên một phút thì rất thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trên 1 phút
Trong khuôn khổ của đồ án em chỉ tìm hiểu 1 số tập lệnh cơ bản phục vụ cho công việc của mình Sau đây em xin giới thiệu 1 số tập lệnh cơ bản để thao tác dùng cho dịch vụ SMS, bao gồm :
Khởi tạo
Nhận cuộc gọi
Thiết lập cuộc gọi
Trang 12 Nhận tin nhắn
Gửi tin nhắn
Các thuật ngữ em dùng :
<CR> : carriage return (0x0D)
<LF> : Line Feed (0x0A)
MT : Mobile Terminal :Thiết bị đầu cuối mạng (chính là module)
TE : Terminal Equipment: Thiết bị đầu cuối (chính là vi điều khiển)
1.3.1 Khởi tạo cấu hình mặc định cho modem
Hình 1.3.1 Cấu hình mặc định cho SIM900
(1) ATZ<CR> reset modem, kiểm tra modem đã hoạt động bình thường chưa
Gửi nhiều lần cho chắc ăn, cho đến khi nhận được chuỗi :
ATZ<CR><CR><LF>OK<C><LF>
Trang 13(2) ATE0<CR> tắt chế độ TE cho lệnh Chuỗi trả về có dạng :
ATE0<CR><CR><LF>OK<CR><LF>
(3) AT+CLIP=1<CR> định dạng chuỗi trả về khi nhân cuộc gọi Thông
thường, ở chế độ mặc định, khi có cuộc gọi đến, chuỗi trả về sẽ có dạng :
(5) AT+CMGF=1<CR> Thiết lập quá trình truyền nhận tin nhắn được thực
hiện ở chế độ text (mặc định là ở chế độ PDU) Chuỗi trả về sẽ có dạng :
<CR><LF>OK<CR><LF>
(6) AT+CNMI=2,0,0,0,0<CR> Thiết lập chế độ thông báo cho TE khi MT
nhận được tin nhắn mới
Chuỗi trả về sẽ có dạng : <CR><LF>OK<CR><LF> Sau khi lệnh trên được
thiết lập, tin nhắn mới nhận được sẽ được lưu trong SIM, và MT không truyền tở về
TE bất cứ thông báo nào TE sẽ đọc tin nhắn được lưu trong sim trong trường hợp cần thiết
(7) AT+CSAS<CR>
Trang 14(8) Lưu cấu hình cài đặt được thiết lập bởi các lệnh AT+CMGF và AT+CNMI
1.3.2 Delete tin nhắn trong SIM
(1) AT+CMGD=1
Xóa tin nhắn ở vùng nhớ 1 trong SIM
Chuỗi trả về sẽ có dạng: <CR><LF>OK<CR><LF>
(2) AT+CMGD=2
Lệnh này được dùng để xóa tin nhắn được lưu trong ngăn số 2
Hình 1.3.2 Cấu hình xóa tin nhắn SIM900
Có thể hình dung bộ nhớ lưu tin nhắn trong SIM bao gồm nhiều Mỗi ngăn được đại diện bằng một số thứ tự Khi nhận được tin nhắn mới, nội dung tin nhắn sẽ được lưu trong một ngăn trống có số thứ tự nhỏ nhất có thể
Việc xóa nội dung tin nhắn ở hai ngăn 1 và 2 cho phép tin nhắn nhận được luôn được lưu vào trong hai ô nhớ này, giúp dễ dàng xác định vị trí lưu tin nhắn vừa nhận được, và giúp cho việc thao tác với tin nhắn mới nhận được trở nên dễ dàng và đơn giản hơn, giảm khả năng việc tin nhắn mới nhận được bị thất lạc ở vùng nhớ nào
đó mà ta không kiểm soát được
Ngoài ra, khi bộ nhớ chứa tin nhắn đầy, MT sẽ không được phép nhận thêm tin nhắn mới nào nữa Những tin nhắn được gửi đến MT trong trường hợp bộ nhớ chứa tin nhắn được gửi đến MT trong trường hợp bộ nhớ chứa tin nhắn của MT đã
Trang 15được đầy sẽ được lưu trên tổng đài, và sẽ được gửi đến MT sau khi bộ nhớ chứa tin nhắn của MT có xuất hiện những ngăn trống dùng để chứa tin nhắn Việc xóa nội dung tin nhắn trong các ngăn 1 và 2 sẽ giúp đảm bảo khả năng nhận thêm tin nhắn mới của MT
1.3.3 Thực hiện cuộc gọi
Hình 1.3.3 Cấu hình gọi điện cho SIM 900
(1) ATDxxxxxxxxxx;<CR> Quay số cần gọi
(2) Chuỗi trả về sẽ có dạng : <CR><LF>OK<CR><LF>
Chuỗi này thông báo lệnh trên đã được nhận và đang được thực thi
Trang 16Sau đó là những chuỗi thông báo kết quả quá trình kết nối ( nếu như kết nối không được thực hiện thành công)
(2A) Nếu MT không thực hiện được kết nối do sóng yếu, hoặc không có sóng
( thử bằng cách tháo antenna của modem GSM), chuỗi trả về sẽ có dạng:
<CR><LF>NO DIAL TONE<CR><LF>
(2B) Nếu cuộc gọi bị từ chối bởi người nhận cuộc gọi, hoặc số máy đang gọi tạm thời không hoạt động ( chẳng hạn như bị tắt máy ) chuỗi trả về có dạng:
(3) Trong trường hợp quá trình thiết lập cuộc gọi diễn ra bình thường, không
có chuỗi thông báo nào (2A, 2B, 2C hay 2D) được trả về, và chuyển sang giai đoạn thông thoại
Quá trình kết thúc cuộc gọi được diễn ra trong hai trường hợp:
(4A) Đầu nhận cuộc gọi gác máy trước, chuỗi trả về sẽ có dạng :
<CR><LF>NO CARRIER<CR><LF>
(4B) Đầu thiết lập cuộc gọi gác máy trước: phải tiến hành gửi lệnh ATH, và
chuỗi trả về sẽ có dạng : <CR><LF>OK<CR><LF>
1.3.4 Nhận cuộc gọi đến
Trang 17Hình 1.3.4 Cấu hình nhận cuộc gọi
(1) Sau khi được khởi tạo bằng lệnh AT+CLIP=1, khi có cuộc gọi đến, chuỗi trả về sẽ có dạng: <CR><LF>RING<CR><LF>
<CR><LF>+CLIP:”0929047589”,129,””,0<CR><LF>
(2A) Nếu số điện thoại gọi đến không hợp lệ, từ chối nhận cuộc gọi bằng lệnh
ATH, và chuỗi trả về sẽ có dạng : <CR><LF>OK<CR><LF> Cuộc gọi kết thúc
(2B) Nếu số điện thoại gọi đến là hợp lệ, nhận cuộc gọi bằng cách gửi lệnh
ATA, và chuỗi trả về sẽ có dạng : <CR><LF>OK<CR><LF>
(3) Giai đoạn thông thoại
Trang 18(4A) Kết thúc cuộc gọi Đầu còn lại gác máy trước
(4B) Kết thúc cuộc gọi, chủ động gác máy bằng cách gửi lệnh ATH
1.3.5 Đọc tin nhắn
Hình 1.3.5 Cấu hình đọc tin nhắn Mọi thao tác liên quan đến quá trình nhận tin nhắn đều được thực hiện trên hai ngăn 1 và 2 của bộ nhớ nằm trong SIM
(1) Đọc tin nhắn trong ngăn 1 bằng lệnh AT+CMGR=1
(2A) Nếu ngăn 1 không chứa tin nhắn, nội dung tin nhắn sẽ được gửi trả về TE với định dạng như sau:
Trang 19Đây là dạng mặc định của module SIM900 lúc khởi động, dạng mở rộng có
thể được thiết lập bằng cách sử dụng lệnh AT+CSDH=1 trước khi thực hiện đọc tin nhắn
(3) Sau khi đọc, tin nhắn được xóa đi bằng lệnh AT+CMGD=1
Thao tác tương tự đối với tin nhắn chứa trong ngăn thứ 2 trong các bước 4,(5A), (5B) và 6
(3) Gửi nội dung tin nhắn và kết thúc bằng kí tự có mã ASCII 0x1A
(3A) Gửi kí tự ESC ( mã ASCII là 27) nếu không muốn tiếp tục gửi tin nhắn nữa Khi đó TE sẽ gửi trả về chuỗi <CR><LF>OK<CR><LF>
(4) Chuỗi trả về thông báo quá trình gửi tin nhắn Chuỗi trả về có định dạng như sau:
<CR><LF>+CMGS :62<CR><LF>
Trang 20<CR><LF>OK<CR><LF>
Trong đó 62 là một số tham chiếu cho tin nhắn đã được gửi Sau mỗi tin nhắn được gửi đi, giá trị của tham chiếu này sẽ tăng lên 1 đơn vị Số tham chiếu này có giá trị nằm trong khoảng từ 0 đến 255
Thời gian gửi một tin nhắn vào khoảng 3-4 giây (kiểm tra với mạng Mobiphone)
Hình 1.3.6 Cấu hình gửi tin nhắn (4A) Nếu tình trạng sóng không cho phép thực hiên việc gửi tin nhắn ( thử bằng cách tháo antenna), hoặc chức năng RF của modem không được cho phép hoạt
động ( do sử dụng các lệnh AT+CFUN=0 hoặc AT+CFUN=4), hoặc số tin nhắn
trong hàng đợi phía tổng đài vượt qua giới hạn cho phép, hoặc bộ nhớ chứa tin nhắn
Trang 21của MT nhận được tin nhắn bị tràn, MT sẽ gửi thông báo lỗi về và có định dạng như sau:
<CR><LF>+CMS ERROR:193<CR><LF>
<CR><LF>+CMS ERROR:515<CR><LF>
Chức năng truyền nhận tin nhắn và chức năng thoại được tách biệt Khi đang thông thoại vẫn có thể truyền nhận được tin nhắn Khi truyền nhận tin nhắn vẫn có thể tiến hành thiết lập và kết thúc cuộc gọi
1.3.7 Các lệnh khác :
Ngoài ra còn có các lệnh khác cho GPRS, các tập lệnh khởi tạo kiểm tra…chúng ta có thể tra datasheet của SIM 900 để biết nhiều thêm các lệnh nếu cần Trong khuôn khổ đồ án em chỉ đưa ra một số tập lệnh cơ bản phục vụ cho công việc của mình
Trang 22CHƯƠNG II : KHẢO SÁT VI ĐIỀU KHIỂN PIC16F887A
2.1 Giới thiệu về vi điều khiển PIC 16F877A
2.1.1 Tổng quan về họ Vi điều khiển PIC
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General_Instrument PIC bắt nguồn từ chữ viết tắt của “Programmable Intelligent Computer” (Máy tính khả trình thông minh) là một sản phẩm của hãng General Instruments đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Lúc này, PIC 1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16 bit CP1600,
vì vậy, người ta cũng gọi PIC với tên “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi) CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600 PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bấy giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động) Năm
1985 General Instruments bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án – lúc đó quá lỗi thời Tuy nhiên, PIC được bổ sung EPROM để tạo thành 1 bộ điều khiển vào ra khả trình Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC…), với
bộ nhớ chương trình từ 512 Word đến 32K Word Nhưng chúng ta có thể điểm qua một vài nét như sau :
8/16 bit CPU, xây dựng theo kiến truc Harvard có sửa đổi
Flash và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
Các cổng Xuất/ Nhập (I/ O ports) (mức logic thường từ 0V đến 5.5V, ứng với logic 0 và logic 1)
8/16 bit Timer
Trang 232.1.2 Một số đặc tính của Vi điều khiển PIC
Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng Các chuẩn giao tiếp nối tiếp đồng bộ/ khung đồng bộ USART
Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
Bộ so sánh điện áp (Voltage Comparator)
Các module Capture/ Compare/ PWM
LCD
MSSP Peripheral dựng cho các giao tiếp I2 C, SPI, I2 S
Bộ nhớ nội EPROM – có thể ghi/ xoá lớn tới 1 triệu lần
Module Điều khiển động cơ, đọc encoder
Hỗ trợ giao tiếp USB
Hỗ trợ giao tiếp CAN
Hỗ trợ giao tiếp LIN
Hỗ trợ giao tiếp IrDA
Một số dòng có tích hợp bộ RF (PIC16f639, và rfPIC)
KEELOQ mờ hoá và giải mờ
DSP những tính năng xử lý tín hiệu số (dsPIC)
- Đặc điểm thực thi tốc độ cao của RISC CPU của họ vi điều khiển PIC16F87XA :
Trang 242.1.3 Những đặc tính ngoại vi
Timer0 : 8- bit định thời/ đếm với 8- bit prescaler
Timer1 : 16- bit định thời/ đếm với prescaler, có thể được tăng lên trong suốt chế độ Sleep qua thạch anh/ xung clock bên ngoài
Timer2 : 8- bit định thời/đếm với 8- bit, prescaler và postscaler
Hai module Capture, Compare, PWM :
* Capture có độ rộng 16 bit, độ phân giải 12.5ns
* Compare có độ rộng 16 bit, độ phân giải 200ns
* Độ phân giải lớn nhất của PWM là 10bit
Có 13 ngõ I/O có thể điều khiển trực tiếp
Dòng vào và dòng ra lớn :
* 25mA dòng vào cho mỗi chân
* 20mA dòng ra cho mỗi chân
2.1.4 Đặc điểm về tương tự
10 bit, với 8 kênh của bộ chuyển đổi tương tự sang số (A/D)
Brown – out Reset (BOR)
Module so sánh về tương tự
* Hai bộ so sánh tương tự
* Module điện áp chuẩn VREF có thể lập trình trên PIC
Có thể lập trình ngõ ra vào đến từ những ngõ vào của PIC và trên điện áp bên trong
Những ngõ ra của bộ so sánh có thể sử dụng cho bên ngoài
Trang 25 EPROM có thể lưu trữ dữ liệu hơn 40 năm
Có thể tự lập trình lại dưới sự điều khiển của phần mềm
Mạch lập trình nối tiếp qua 2 chân
Nguồn đơn 5V cấp cho mạch lập trình nối tiếp
Watchdog Timer (WDT) với bộ dao động RC tích hợp sẵn trên Chip cho hoạt động đáng tin cậy
Năng lượng thấp, tốc độ cao Flash/ công nghệ EPROM
Việc thiết kế hoàn toàn tĩnh
Khoảng điện áp hoạt động từ 2V đến 5.5V
Tiêu tốn năng lượng thấp
2.2 Giới thiệu về PIC16F8XX và PIC16F877A :
PIC16F8X là nhóm PIC trong họ PIC16XX của họ Vi điều khiển 8-bit, tiêu hao năng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS, chống tĩnh điện tuyệt đối Nhóm bao gồm các thiết bị sau :
PIC16F83
PIC16CR83
PIC16F84
PIC16CR84 Tất cả các PIC16/17 đều có cấu trúc RISC PIC16CXX các đặc tính nổi bậc, 8 mức ngăn xếp Stack, nhiều nguồn ngắt tích hợp bên trong lẫn ngoài Có cấu trúc Havard với các bus dữ liệu và bus thực thi chương trình riêng biệt nhau cho phép độ dài 1 lệnh là 14-bit và bus dữ liệu 8-bit cách biệt nhau Tất cả các lệnh đều mất 1 chu
kỳ lệnh ngoại trừ các lệnh rẽ nhánh chương trình mất 2 chu kỳ lệnh Chỉ có 35 lệnh
và 1 lượng lớn các thanh ghi cho phép đáp ứng cao trong ứng dụng
Trang 26Họ PIC16F8X có nhiều tính năng đặc biệt làm giảm thiểu các thiết bị ngoại vi,
vì vậy kinh tế cao, có hệ thống nổi bật đáng tin cậy và sự tiêu thụ năng lượng thấp Ở đây có 4 sự lựa chọn bộ dao dộng và chỉ có 1 chân kết nối bộ dao động RC nên có giải pháp tiết kiệm cao Chế độ SLEEP tiết kiệm nguồn và có thể được đánh thức bởi các nguồn reset
PIC16F877A có 40/44 chân với sự phân chia cấu trúc như sau :
Có 5 port xuất/nhập
Có 8 kênh chuyển đổi A/D 10-bit
Có bộ nhớ gấp đôi so với PIC16F873A và PIC16F874A
- Các đặc điểm của PIC16F887A :
2
Trang 27Bảng 2.1 Tóm tắt đặc điểm của PIC16F877A
2.3 Cấu trúc, chức năng PIC16F887A loại 40 chân PDIP
2.3.1 Sơ đồ chân, chức năng các chân
Hình 2.3.1 Sơ đồ chân PIC16F887A
- Chức năng các chân :
Chân OSC1/CLKI (13) : ngõ vào dao động thạch anh hoặc xung clock bên ngoài
Trang 28- OSC1 : ngõ vào dao động thạch anh hoặc xung clock bên ngoài Ngõ vào Schmit trigger khi được cấu tạo ở chế độ RC ; một cách khác của CMOS
- CLKI : ngõ vào nguồn xung bên ngoài Luôn được kết hợp với chức năng OSC1
Chân OSC2/CLKO (13) : ngõ vào dao động thạch anh hoặc xung clock
- OSC2 : Ngõ ra dao động thạch anh Kết nối đến thạch anh hoặc
- AN2 : ngõ vào tương tự 2
- VREF -: ngõ vào điện áp chuẩn (thấp) của bộ A/D
- CVREF: điện áp tham chiếu VREF ngõ ra bộ so sánh
Chân RA3/NA3/VREF+ (5) :
- RA3 : xuất/nhập số
- AN3 : ngõ vào tương tự 3
- VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D
Chân RA4/TOCKI/C1OUT (6) :
Trang 29- RA4 : xuất/nhập số - mở khi được cấu tạo như ngõ ra
- TOCKI : ngõ vào xung clock bên ngoài cho Timer 0
- C1 OUT : Ngõ ra bộ so sánh 1
Chân RA5/AN4/ /C2OUT (7) :
- RA5 : xuất/nhập số
- AN4 : ngõ vào tương tự 4
- SS : ngõ vào chọn lựa SPI phụ
- T1 OCO : ngõ vào bộ dao động Timer 1
- T1 CKI : ngõ vào xung clock bên ngoài Timer 1
Chân RC1/T1 OSI/CCP2 (16) :
- RC1 : xuất/nhập số
Trang 30- T1 OSI : ngõ vào bộ dao động Timer 1
- CCP2 : ngõ vào Capture 2, ngõ ra compare 2, ngõ ra PWM2
- SDI : dữ liệu vào SPI
- SDA : xuất/nhập dữ liệu vào I2C
Trang 31 Chân RD1/PSP1 (20) :
- RD1 : xuất/nhập số
- PSP1 : dữ liệu port nhánh song song
Các chân : RD2/PSP2 (21), RD3/PSP3 (22), RD4/PSP (27), RD5/PSP5 (28), RD6/PSP6 (29), RD7/PSP7 (30) tương tự chân 19,20
Chân RE0/ /AN6 (8) :
- RE0 : xuất nhập số
- RD : điều khiển việc đọc ở port nhánh song song
- AN5 : ngõ vào tương tự 5
Chân RE1/ /AN6 (9) :
- RE1 : xuất/nhập số
- WR : điều khiển việc ghi ở port nhánh song song
- AN6 : ngõ vào tương tự 6
Chân RE2/ /AN7 (10) :
- RE2 : xuất/nhập số
- CS : Chip lựa chọn sự điều khiển ở port nhánh song song
- AN7 : ngõ vào tương tự 7
Chân VDD(11,32), và VSS(12,31) : là các chân nguồn của PIC
2.3.2 Cấu trúc bên trong của PIC16F877A
Hình 2.3.2 là sơ đồ khối cấu trúc bên trong PIC16F887A bao gồm :
- Khối ALU - Arithmetic Logic Unit
- Khối bộ nhớ chứa chương trình - Flash Program Memory
- Khối bộ nhớ chứa dữ liệu EPROM - Data EPROM
- Khối bộ nhớ file thanh ghi RAM - RAM file Register
- Khối giải mã lệnh và điều khiển - Instruction Decode Control
- Khối thanh ghi đặc biệt
- Khối ngoại vi timer
- Khối giao tiếp nổi tiếp
- Khối chuyển đổi tín hiệu tương tự sang số - ADC
Trang 32- Khối các port xuất nhập.
Hình 2.3.2 Sơ đồ khối cấu trúc bên trong PIC16F887A
- Tổng quát cơ bản PIC16F887A :
Trang 33Hình 2.3.3 Sơ đồ tổng quát về PIC16F887A
2.3.3 Các cổng xuất nhập
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tác với thế giới bên ngoài Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và số lượng chân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới bên ngoài Chức
Trang 34năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan đến chân xuất nhập đó
Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PORTC, PORTD và PORTE
PORTA
PORTA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều” (bidirectional pin), nghĩa là có thể xuất và nhập được Chức năng I/O này được điều khiển bởi thanh ghi TRIS A (địa chỉ 85h) Muốn xác lập chức năng của một chân trong PORTA
là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORTA là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiên tương ứng TRIS (đối với PORTA là TRISA, đổi với PORTB là TRISB, đối với PORTC là TRISC, đối với PORTD là TRISD và đối với PORTE là TRISE)
Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào analog ngõ vào xung clock của TimerO và ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)
Các thanh ghi SFR liên quan đến PORTA bao gồm :
PORTA (địa chỉ 05h): chứa giá trị các pin trong PORTA
TRIS A (địa chỉ 85h): chứa giá trị các pin trong PORTA
CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh
CVRCON (địa chỉ 9Dh) : thanh ghi điều khiển bộ so sánh điện áp
ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC
PORTB
PORTB (RPB) gồm 8 pin I/O Thanh ghi điều khiến xuất nhập tương ứng là TRISB Bên cạnh đó một sổ chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quan đến ngắt ngoại vi và bộ TimerO PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình
Trang 35Các thanh ghi SFR liên quan đến PORTB bao gồm :
PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
TRISB (địa chỉ 86h,186h) : điều khiển xuất nhập
OPTION_REG (địa chỉ 81 h, 181 h) : điều khiển ngắt ngoại vi và bộ TimerO
PORTC
PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ Timerl,
bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART
Các thanh ghi điều khiển liên quan đến PORTC :
PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
TRISC (địa chỉ 87h) : điều khiển xuất nhập
PORTD
PORTD (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là TRISD PORTD còn là cổng xuất dừ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)
Các thanh ghi liên quan đến PORTD bao gồm :
Thanh ghi PORTD : chứa giá trị các pin trong PORTD
Thanh ghi TRISD : điều khiển xuất nhập
PORTE
PORTE (RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiên của chuấn giao tiếp PSP
Các thanh ghi liên quan đến PORTE bao gồm :
PORTE : chứa giá trị các chân trong PORTE
TRISE : điều khiên xuất nhập và xác lập các thông số cho chuẩn giao tiếp PSP
ADCON1 : thanh ghi điều khiển khối ADC
Trang 362.3.4 Khối chức năng ngoại vi
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rông xung
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR,CS ở bên ngoài
Các đặc tính Analog :
- 8 kênh chuyển đổi ADC 10 bit
- Hai bộ so sánh
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như :
- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần
- Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial Programming) thông qua 2 chân Watchdog Timer với bộ dao động trong
- Chức năng bảo mật mã chương trình
- Chế độ Sleep
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
2.3.5 Tổ chức bộ nhớ
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ chương trình
(Program memory) và bộ nhớ dữ liệu (Data Memory)
Bộ nhớ chương trình :
Trang 37Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ nhớ 8K word (1 word = 14 bit) và được phân thành nhiều trang (từ page0 đến page3) Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit) Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13 bit (PC<12:0>)
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector) Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector)
bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình
2.3.6 Thanh ghi chức năng đặc biệt SFR:
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và điều khiển các khối chức năng được tích hợp bên trong vi điều khiển Có thể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụ như ADC, PWM, …)
+ Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thực hiện phép toán của khối ALU, trạng thái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, cho phép điều khiển chức năng pull-up của các chân
Trang 38trong PORTB, xác lập các tham số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0
+ Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh): thanh ghi cho phép đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrput-on-change tại các chân của PORTB
Trang 392.3.7 Chế độ Reset
Có nhiều chế độ reset cho vi điều khiển, bao gồm:
Power-on Reset POR: Reset khi cấp nguồn hoạt động cho vi điều khiển
MCLR reset trong quá trình hoạt động
Đưa tất cả các pin về trạng thái VDD hay VSS
Cần đảm bảo không có mạch ngoại vi nào được điều khiển bởi dòng của
vi điều khiển vì dòng điện nhỏ không đủ khả năng cung cấp cho các mạch ngoại vi hoạt động
Tạm ngưng hoạt động của khối A/D và không cho phép các xung clock
từ bên ngoài tác động vào vi điều khiển
Để ý đến chức năng kéo lên ở PORTB
Pin MCLR phải ở mức cao
2.3.9 “Đánh thức” vi điều khiển