Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

73 0 0
Tài liệu đã được kiểm tra trùng lặp
Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Khái quát về tin nhắn 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. SMS xuất hiện đầu tiên ở Châu âu vào năm 1992. Ở thời điểm đó, nó bao gồm cả các chuẩn về GSM (Global System for Mobile Communications). Một thời gian sau đó, nó phát triển sang công nghệ wireless như CDMA và TDMA. Các chuẩn GSM và SMS có nguồn gốc phát triển bởi ETSI. ETSI là chữ viết tắt của European Telecommunications Standards Institute. Ngày nay thì 3GPP (Third Generation Partnership Project) đang giữ vai trò kiểm soát về sự phát triển và duy trì các chuẩn GSM và SMS. Như đã nói ở trên về tên đầy đủ của SMS là Short Message Service, từ cụm từ đó, có thể thấy được là 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 (mã hóa kí tự 7 bit thì phù hợp với mã hóa các lí tự latin chẳng hạn như các lí tự alphabet của tiếng Anh). + 70 kí tự nếu như mã hóa kí tự 16 bit Unicode UCS2 được sử dụng (các tin nhắn SMS không chứa các kí tự latin như kí tự chữ Trung Quốc phải sử dụng mã hóa kí tự 16 bit). 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.Bên cạnh gữi tin nhắn dạng text thì tin nhắn SMS còn có thể mang các dữ liệu dạng binary. Nó còn cho phép gửi nhạc chuông, hình ảnh cùng nhiều tiện ích khác … tới một điện thoại khác. GVHD: Ks. Phạm Quang Trí Page 1 SVTH: Trần Nguyên Hoàng Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS Một trong những ưu điểm nổi trội của SMS đó là nó được hỗ trợ bởi các điện thoại có sử dụng GSM hoàn toàn. Hầu hết tất cả các tiện ích cộng thêm gồm cả dịch vụ gửi tin nhắn giá rẻ được cung cấp, sử dụng thông qua sóng mang wireless. Không giống như SMS, các công nghệ mobile như WAP và mobile Java thì không được hỗ trợ trên nhiều model điện thoại. Sử dụng tin nhắn SMS ngày càng phát triển và trở lên rộng khắp : - Các tin nhắn SMS có thể được gửi và đọc tại bất kỳ thời điểm nào. Ngày nay, hầu hết mọi người đều có điện thoại di động của riêng mình và mang nó theo người hầu như cả ngày. Với một điện thoại di động , bạn có thể gửi và đọc các tin nhắn SMS bất cứ lúc nào bạn muốn, sẽ không gặp khó khăn gì khi bạn đang ở trong văn phòng hay trên xe bus hay ở nhà… - Tin nhắn SMS có thể được gửi tới các điện thoại mà tắt nguồn. Nếu như không chắc cho một cuộc gọi nào đó thì bạn có thể gửi một tin nhắn SMS đến bạn của bạn thậm chí khi người đó tắt nguồn máy điện thoại trong lúc bạn gửi tin nhắn đó. Hệ thống SMS của mạng điện thoại sẽ lưu trữ tin nhắn đó rồi sau đó gửi nó tới người bạn đó khi điện thoại của người bạn này mở nguồn. - Các tin nhắn SMS ít gây phiền phức trong khi bạn vẫn có thể giữ liên lạc với người khác Việc đọc và viết các tin nhắn SMS không gây ra ồn ào. Trong khi đó, bạn phải chạy ra ngoài khỏi rạp hát, thự viện hay một nơi nào đó để thực hiện một cuộc điện thoại hay trả lời một cuộc gọi. Bạn không cần phải làm như vậy nếu như tin nhắn SMS được sử dụng. - Các điện thoại di động và chúng có thể được thay đổi giữa các sóng mang Wireless khác nhau. Tin nhắn SMS là một công nghệ rất thành công và trưởng thành. Tất cả các điện thoại mobile ngày nay đều có hỗ trợ nó. Bạn không chỉ có thể trao đổi các tin nhắn SMS đối với người sử dụng mobile ở cùng một nhà cung cấp dịch vụ mạng sóng mang wireless, mà đồng thời bạn cũng có thể trao đổi nó với người sử dụng khác ở các nhà cung cấp dịch vụ khác. GVHD: Ks. Phạm Quang Trí Page 2 SVTH: Trần Nguyên Hoàng Hệ thống cảnh báo và điều khiển từ xa bằng tin nhắn SMS - cùng với nó. SMS là một công nghệ phù hợp với các ứng dụng Wireless sử dụng Nói như vậy là do: Thứ nhất, tin nhắn SMS được hỗ trợ 100% bởi các điện thoại có sử dụng công nghệ GSM. Xây dựng các ứng dụng wireless trên nền công nghệ SMS có thể phát huy tối đa những ứng dụng có thể dành cho người sử dụng. Thứ hai, các tin nhắn SMS còn tương thích với việc mang các dữ liệu binary bên cạnh gửi các text. Nó có thể được sử dụng để gửi nhạc chuông, hình ảnh, hoạt họa … Thứ ba, tin nhắn SMS hỗ trợ việc chi trả các dịch vụ trực tuyến.

Trang 1

Phần 1

TỔNG QUAN VỀ CÁC LINH KIỆN DÙNG TRONG ĐỀ TÀI I Giới thiệu về GSM Module SIM900

1 Khái quát về tin nhắn 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 SMS xuất hiện đầu tiên ở Châu âu vào năm 1992 Ở thời điểm đó, nó bao gồm cả các chuẩn về GSM (Global System for Mobile Communications) Một thời gian sau đó, nó phát triển sang công nghệ wireless như CDMA và TDMA Các chuẩn GSM và SMS có nguồn gốc phát triển bởi ETSI ETSI là chữ viết tắt của European Telecommunications Standards Institute Ngày nay thì 3GPP (Third Generation Partnership Project) đang giữ vai trò kiểm soát về sự phát triển và duy trì các chuẩn GSM và SMS

Như đã nói ở trên về tên đầy đủ của SMS là Short Message Service, từ cụm từ đó, có thể thấy được là 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 (mã hóa kí tự 7 bit thì phù hợp với mã hóa các lí tự latin chẳng hạn như các lí tự alphabet của tiếng Anh)

+ 70 kí tự nếu như mã hóa kí tự 16 bit Unicode UCS2 được sử dụng (các tin nhắn SMS không chứa các kí tự latin như kí tự chữ Trung Quốc phải sử dụng mã hóa kí tự 16 bit)

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.Bên cạnh gữi tin nhắn dạng text thì tin nhắn SMS còn có thể mang các dữ liệu dạng binary Nó còn cho phép gửi nhạc chuông, hình ảnh cùng nhiều tiện ích khác … tới một điện thoại khác

Trang 2

Một trong những ưu điểm nổi trội của SMS đó là nó được hỗ trợ bởi các điện thoại có sử dụng GSM hoàn toàn Hầu hết tất cả các tiện ích cộng thêm gồm cả dịch vụ gửi tin nhắn giá rẻ được cung cấp, sử dụng thông qua sóng mang wireless Không giống như SMS, các công nghệ mobile như WAP và mobile Java thì không được hỗ trợ trên nhiều model điện thoại

Sử dụng tin nhắn SMS ngày càng phát triển và trở lên rộng khắp :

- Các tin nhắn SMS có thể được gửi và đọc tại bất kỳ thời điểm nào Ngày nay, hầu hết mọi người đều có điện thoại di động của riêng mình và mang nó theo người hầu như cả ngày Với một điện thoại di động , bạn có thể gửi và đọc các tin nhắn SMS bất cứ lúc nào bạn muốn, sẽ không gặp khó khăn gì khi bạn đang ở trong văn phòng hay trên xe bus hay ở nhà…

- Tin nhắn SMS có thể được gửi tới các điện thoại mà tắt nguồn

Nếu như không chắc cho một cuộc gọi nào đó thì bạn có thể gửi một tin nhắn SMS đến bạn của bạn thậm chí khi người đó tắt nguồn máy điện thoại trong lúc bạn gửi tin nhắn đó Hệ thống SMS của mạng điện thoại sẽ lưu trữ tin nhắn đó rồi sau đó gửi nó tới người bạn đó khi điện thoại của người bạn này mở nguồn

- Các tin nhắn SMS ít gây phiền phức trong khi bạn vẫn có thể giữ liên lạc với người khác

Việc đọc và viết các tin nhắn SMS không gây ra ồn ào Trong khi đó, bạn phải chạy ra ngoài khỏi rạp hát, thự viện hay một nơi nào đó để thực hiện một cuộc điện thoại hay trả lời một cuộc gọi Bạn không cần phải làm như vậy nếu như tin nhắn SMS được sử dụng

- Các điện thoại di động và chúng có thể được thay đổi giữa các sóng mang Wireless khác nhau

Tin nhắn SMS là một công nghệ rất thành công và trưởng thành Tất cả các điện thoại mobile ngày nay đều có hỗ trợ nó Bạn không chỉ có thể trao đổi các tin nhắn SMS đối với người sử dụng mobile ở cùng một nhà cung cấp dịch vụ mạng sóng mang wireless, mà đồng thời bạn cũng có thể trao đổi nó với người sử dụng khác ở các nhà cung cấp dịch vụ khác

Trang 3

- SMS là một công nghệ phù hợp với các ứng dụng Wireless sử dụng cùng với nó

Nói như vậy là do:

Thứ nhất, tin nhắn SMS được hỗ trợ 100% bởi các điện thoại có sử dụng công nghệ GSM Xây dựng các ứng dụng wireless trên nền công nghệ SMS có thể phát huy tối đa những ứng dụng có thể dành cho người sử dụng

Thứ hai, các tin nhắn SMS còn tương thích với việc mang các dữ liệu binary bên cạnh gửi các text Nó có thể được sử dụng để gửi nhạc chuông, hình ảnh, hoạt họa …

Thứ ba, tin nhắn SMS hỗ trợ việc chi trả các dịch vụ trực tuyến

2 Giới thiệu GSM Module SIM900

SIM900 là 1 Module GSM/GPRS 4 băng tần làm việc ở các tần số: GSM 850MHz, EGSM 900MHZ, DCS 1800MHz và PCS 1900MHz SIM900 có đầy đủ các tính năng cơ bản của 1 điện thoại di động GSM như gọi và nhận cuộc gọi, nhắn và nhận tin SMS, gửi và nhận dữ liệu bằng kết nối GPRS thông qua tập lệnh AT

Các thông số cơ bản:

 Nguồn cung cấp: 3,2 ~ 4,8V

thể tự động tìm kiếm các băng tần Phù hợp với GSM Phase 2/2+

Trang 4

Hạn chế : - 40ºC tới -30ºC và +80ºC tới +85ºC Nhiệt độ bảo quản: -45ºC tới 90ºC

 Dữ liệu GPRS:

GPRS dữ liệu download: Max 85.6 kbps GPRS dữ liệu upload: Max 42.8 kbps Sơ đồ mã hóa: CS-1, CS-2, CS-3 và CS-4 Sim 300CZ tích hợp giao thức TCP/IP

 Giao tiếp SIM card: Hỗ trợ sim card: 1,8v ; 3v

 Anten ngoài: có tiếp điểm kết nối với antena ngoài

Hỗ trợ Autobauding cho tốc độ baud từ 1200bps đến 57600

Trang 5

• Kích thướt 24x24x3mm

Hình 1.1: Kích thước của SIM900

Trang 6

Hình 1.2: Hình chụp mặt trên và mặt dưới SIM900

3 Sơ đồ chân và chức năng từng chân của SIM900

Hình 1.3: Sơ đồ chân SIM900 Chân 1,2 : điều khiển tắt/mở module

Chân 3, 4, 5, 6, 7, 8, 9, 10: chân giao tiếp cổng COM

Trang 7

- DTR : Data Terminal ready ( DTE sẵn sàng làm việc) - RI : Ring Indicator (báo chuông)

- DCD : Data Carier detect (DCE phát hiện sóng mang) - DSR : Data Set Ready (DCE sẵn sàng làm việc) - CTS : Clear To Send (DCE sẵn sàng nhận dữ liệu) - RTS : Request To Send (DTE yêu cầu truyền dữ liệu) - TXD : Transmitted Data (dữ liệu truyền)

- RXD : Received Data (dữ liệu nhận)

Chân 11, 12, 13, 14: chân giao tiếp màn hình LCD Chức năng giao tiếp LCD không hỗ trợ trong firmware tiêu chuẩn, để sử dụng, người dùng phải sửa đổi firmware

Chân 15 (VDD_EXT): nguồn 2.8V cung cấp cho mạch ngoài Chân 16 (NRESET): reset module (tích cực mức thấp)

Chân 17, 18, 29, 39, 45, 46, 53, 54, 58, 59, 62, 63, 64, 65 (GND): chân mas Chân 19, 20 (MIC_P, MIC_N): ngõ vào micro

Chân 21, 22 (SPK_P, SPK_N): ngõ ra loa

Chân 23, 24 (LINEIN_R, LINEIN_L): ngõ vào âm thanh

Chân 25 (ADC): ngõ vào bộ chuyển đổi Analog-Digital (0 ~ 2.8V) Chân 26 (VRTC): nguồn cung cấp cho RTC

Chân 27, 28 (DBG_TXD, DBG_RXD): dùng để tuỳ chỉnh và nâng cấp firmware

Chân 30, 31, 32, 33, 34 (SIM_VDD, SIM_DATA, SIM_CLK, SIM_RESET, SIM_PRESENCE): các chân giao tiếp với SIM card

- SIM_VDD: chân cấp nguồn cho SIM - SIM_DATA: ngõ vào, ra dữ liệu - SIM_CLK: cấp xung clock cho SIM - SIM_RESET: reset SIM

- SIM_PRESENCE: chân giúp phát hiện thẻ SIM

Trang 8

Chân 35, 36 (PWM1, PWM2): ngõ ra điều chế xung dùng cho đèn bàn phím và bộ rung

Chân 37, 38 (SDA, SCL): chân dùng cho giao tiếp I²C

Chân 40-44, 47-51, 67, 68: các ngõ vào ra và kết nối với Keypad Chân 52 (NETLIGH): ngõ ra đèn hiển thị trạng thái mạng

Chân 55, 56, 57 (VBAT): ngõ vào nguồn cung cấp cho Module Chân 60 (RF_ANT): kết nối với antena ngoài

Chân 66 (STATUS): ngõ ra đèn hiển thị trạng thái hoạt động của Module

4 Tập lệnh AT của Module SIM900:

Module SIM900 giao tiếp với vi điều khiển hoặc máy tính thông qua giao tiếp RS232 và được điều khiển thông qua bộ tập lệnh AT viết tắt của từ Attention do Dennis Hayes phát minh ra vào năm 1977 Trong tập lệnh AT, mỗi câu lệnh được bắt đầu với chữ “AT” hoặc “at”

Các thuật ngữ:

- <CR> : Carriage return (0x0D) - <LF> : Line Feed (0x0A)

- MT (Mobile Terminal): Thiết bị đầu cuối mạng (trong trường hợp này là Module SIM900)

- TE (Terminal Equipment) Thiết bị đầu cuối (máy tinh, vi điều khiển)

4.1 Các lệnh khởi tạo GSM Module SIM900

Các lệnh khởi tạo chỉ cần được thực thi 1 lần, sau đó lưu lại và trở thành cấu hình mặc định của modem Cấu hình mặc định này không thay đổi, kể cả khi mất nguồn Phần khởi tạo này không liên quan đến quá trình hoạt dộng sau này của modem Do đó có thể khởi tạo riêng trước khi đưa vào vận hành trong hệ thống

 ATZ<CR> : Reset modem, kiểm tra module đã hoạt động bình

ATZ<CR><CR><LF>OK<CR><LF>

Trang 9

 ATE0<CR> : Tắt chế độ echo lệnh Chuỗi trả về có dạng ATE0<CR><CR><LF>OK<CR><LF>

 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: <CR><LF>RING<CR><LF>

Sau khi lệnh AT+CLIP=1<CR> đã được thực thi, chuỗi trả về sẽ có dạng: <CR><LF>RING<CR><LF>

 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 trở 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

 AT+CSAS<CR> : 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

4.2 Các lệnh thực hiện cuộc gọi

 ATDxxxxxxxxxx;<CR> : Quay số cần gọi Chuỗi trả về có dạng:

<CR><LF>OK<CR><LF>

Trang 10

Chuỗi này thông báo lệnh trên đã được nhận và đang được thực thi Sau đó 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)

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>

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: <CR><LF>NO CARRIER<CR><LF>

Nếu cuộc gọi không thể thiết lập được do máy nhận cuộc gọi đang bận (ví dụ như đang thông thoại với một thuê bao khác), chuỗi trả về sẽ có dạng:

Quá trình kết thúc cuộc gọi được diễn ra trong hai trường hợp: Đầu nhận cuộc gọi gác máy trước: chuỗi trả về sẽ có dạng:

Trang 11

<CR><LF>RING<CR><LF> <CR><LF>+CLIP:

"0929047589",129,"",,"",0<CR><LF>

Chuỗi trả về có hiển thị số điện thoại yêu cầu được kết nối, dựa trên thông tin này để có thể ra quyết định nhận cuộc gọi hay từ chối cuộc gọi 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<CR>, và chuỗi trả về sẽ có dạng:

<CR><LF>OK<CR><LF>

Trang 12

Các tham số trong chuỗi trả về bao gồm trạng thái của tin nhắn (REC UNREAD), số điện thoại gửi tin nhắn (+841228678499) và thời gian gửi tin nhắn (07/05/12,09:32:05+28) và nội dung tin nhắn

Đây là định 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

Sau khi đọc, tin nhắn được xóa đi bằng lệnh AT+CMGD=1<CR>

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 số 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 Mobi phone)

Trang 13

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 của MT nhận được tin nhắn bị tràn, MT sẽ gửi thông báo lỗi trở 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

4.4 Các lệnh về GPRS

 AT+CGATT : lệnh gán hay tách thiết bị khỏi GPRS

 AT+CGDCONT : định nghĩa dạng PDP

 AT+CGQMIN : chất lượng dich vụ ở mức thấp nhất

 AT+CGQREQ : chất lượng dich vụ

 AT+CGDATA : trạng thái dữ liệu vào

 AT+CGREG : tình trạng đăng ký của mạng

 AT+CGCOUNT : đếm gói dữ liệu vào

Trong giới hạn của đề tài, ta chỉ sử dụng đến các lệnh thực hiện việc gửi và đọc tin nhắn SMS

II Giới thiệu Vi điều khiển Microchip PIC16F877A

1 Khái quát về Vi điều khiển PIC16F877A

Khối xử lí trung tâm đóng vai trò chính là PIC16F877A sẽ làm nhiệm vụ chính là tiếp nhận và xử lí các dữ liệu đến và đi một cách tự động Đề tài sử dụng PIC16F877A vì những ưu điểm vượt trội của nó so với các vi điều khiển khác.Về

Trang 14

mặt tính năng và công năng thì có thể xem PIC vượt trội hơn rất nhiều so với VĐK họ 89 với nhiều module được tích hợp sẵn như ADC 10 BIT, PWM 10 BIT, EEPROM 256 BYTE, COMPARATER, VERF COMPARATER…Về mặt giá cả thì có đôi chút chênh lệch như giá 1 con 89S52 khoảng 20.000 thì PIC16F877A là 80.000 nhưng khi so sánh như thế thì ta nên xem lại phần linh kiện cho việc thiết kế mạch nếu như sử dụng VĐK họ 89 muốn có ADC phải dùng thêm IC ADC chẳng hạn như ADC 0808 hay 0809 với giá vài chục ngàn và bộ opamp thì khi sử dung PIC nó đã tích hợp cho ta sẵn các module đó có nghĩa là không cần bổ sung thêm ADC, Opam, EPPROM vì PIC đã có sẵn trong nó Ngoài ra việc sử dụng VĐK PIC16F877A có nhiều thuận lợi hơn trong thiết kế board, khi đó board mạch sẽ nhỏ gọn và đẹp hơn dễ thi công hơn rất nhiều, vì tính về giá cả tổng cộng cho đến lúc thành phẩm thì PIC có thể xem như rẻ hơn VĐK họ 89 Một điều đặc biệt nữa là tất cả các con PIC được sử dụng thì đều có chuẩn PI tức chuẩn công nghiệp thay vì chuẩn PC (chuẩn dân dụng)

Ngoài ra, PIC có ngôn ngữ hổ trợ cho việc lập trình ngoài ngôn ngữ Asembly còn có ngôn ngữ C với rất nhiều trình biên dịch như CCS, HTPIC, MirkoBasic,… Bên cạnh đó với bề dày của sự phát triển lâu đời PIC đã tạo ra rất nhiều diễn đàn sôi nổi về PIC cả trong và ngoài nước Chính vì vậy chúng ta sẽ có nhiều thuận lợi trong việc dễ dàng tìm kiếm các thông tin lập trình cho các dòng PIC

Dòng PIC16F877A được chọn sử dụng trong đề tài là dòng phổ thông với các tính năng cơ bản và dễ cho việc sử dụng với:

- Tập lệnh để lập trình chỉ có 35 lệnh với độ dài 14bit rất dễ nhớ và dễ học Mỗi lệnh đều được thực thi trong 1 chu kỳ xung clock Tốc độ hoạt động tối đa cho phép là 20MHz với 1 chu kỳ lệnh là 200ns

- Bộ nhớ chương trình: 8K x 14 words; bộ nhớ dữ liệu: 368 x 8 Bytes (RAM); bộ nhớ dữ liệu EEPROM 256 x 8 bytes

- Khả năng ngắt lên đến 14 nguồn ngắt

Trang 15

- Dải điện thế hoạt động rộng: từ 2.0V đến 5.5V - Mức công suất tiêu thụ thấp:

 Nhỏ hơn 0.6 mA khi điện thế cấp là 3V, tần số thạch anh 4 MHz

 20 μA khi điện thế cấp là 3V, tần số thạch anh 32 kHz

 Nhỏ hơn 1 μA ở chế độ chờ với nguồn dự phòng - Số PORT I/O là 5 với 33 pin I/O

- Các đặc tính ngoại vi bao gồm các khối chức năng sau:

 Timer0: bộ đếm/ định thời 8 bit với bộ chia tần số 8 bit

 Timer1: bộ đếm/ định thời 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/ định thời 8 bit

 2 bộ Capture (thu thập) 16 bit với độ chính xác tối đa là 12.5ns

 2 bộ Compare (so sánh) 16 bit với độ chính xác tối đa là 200ns

 2 bộ PWM (điều chế độ rộng xung) 10 bit

 Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI (Serial Peripheral Interface Bus) và I²C (Inter-Integrated Circuit)

 Chẩ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

 1 bộ ADC với 8 kênh 10 bit

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 xoá được 100.000 lần

 Bộ nhớ EEPROM với khả năng ghi xoá đượ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

Trang 16

 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 tiết kiệm năng lượng

 Có thể hoạt động với nhiều dạng Oscillator khác nhau

Trang 17

2 Sơ đồ khối và khái quát cấu trúc phần cứng của VĐK PIC16F877A

2.1 Sơ đồ khối vi điều khiển PIC16F877A

Trang 18

2.2 Một số đặc tính của CPU

2.2.1 Configuration bit

Đây là các bit dùng để lựa chọn các đặc tính của CPU Các bit này được chứa trong bộ nhớ chương trình tại địa chỉ 2007h và chỉ có thể được truy xuất trong quá trình lập trình cho VĐK Chi tiết về các bit này như sau:

Bit 13 : CP (Code Protection) 1: tắt chế bảo vệ mã chương trình 0: bật chế độ bảo vệ mã chương trình

Bit 12, 5, 4 : không quan tâm và được mặc định mang giá trị 0 Bit 11 : DEBUG (In-circuit debug mode bit)

1: không cho phép, RB7 và RB6 được xem như các pin xuất nhập bình thường

0: cho phép, RB6 và RB7 là các pin được sử dụng cho quá trình debug

Bit 10, 9 : WRT1 : WRT0 (Flash Program Memory Write Enable bit) 11: tắt chức năng chống ghi, EECON sẽ điều khiển quá trình ghi lên tòan bộ nhớ chương trình

10: chỉ chống ghi từ địa chỉ 0000h : 00FFh 01: chỉ chống ghi từ địa chỉ 0000h : 07FFh 00: chỉ chống ghi từ địa chỉ 0000h : 0FFFh

Trang 19

Bit 8 : CPD (Data EEPROM Memory Write Protection bit) 1: tắt chức năng bảo vệ mã của EEPROM

0: không cho phép BOR

Bit 3 : PWRTEN (Power-up Timer Enable bit) 1: không cho phép PWR

Trang 20

01: sử dụng XT oscillator 00: sử dụng LP oscillator

2.2.2 Các đặc tính của Oscillator

PIC16F877A có khả năng sử dụng một trong 4 lọai oscillator, đó là: LP: (Low Power Crystal)

XT: Thạch anh bình thường HS: (High-Speed Crystal)

Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trình ngắt được kết thúc bằng lệnh RETFIE Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình được cất vào bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h Lệnh RETFIE được dùng để thóat khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời

Trang 21

bit GIE cũng được set để cho phép các ngắt họat động trở lại Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình chính trước khi cho phép ngắt tiếp tục họat động trở lại để ta có thể phát hiện thời điểm tiếp theo mà ngắt xảy ra

Đối với các ngắt ngọai vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các pin của PORTB, việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kỳ lệnh tùy thuộc vào thời điểm xảy ra ngắt

2.2.3.1 Ngắt INT

Ng8át này dựa trên sự thay đổi trạng thái của pin RB0/INT Cạnh tác động gây ra ng8át có thể là cạnh lên hay cạnh xuống và được điều khiển bởi bit INTEDG (thanh ghi OPTIONREG<6>) Khi có cạnh tác động thích hợp xuất hiện tại pin RB0/INT, cờ ngắt INTF được set bất chấp trạng thái các bit điều khiển GIE và PEIE Ngắt này có khả năng đánh thức CĐK từ chế độ sleep nếu bit cho phép ngắt được set trước khi lệnh SLEEP được thực thi

Trang 22

2.2.3.2 Ngắt do sự thay đổi trạng thái các pin trong PORTB

Các pin PORTB<7:4> được dùng cho ngắt này và được điều khiển bởi bit RBIE (thanh ghi INTCON<4>) Cờ ngắt của ngắt này là bit RBIF (INTCON<0>)

2.3 Các cổng xuất nhập của PIC16F877A

VĐK PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA, PORTB, PRTC, PORTD, PORTE Muốn xác lập chức năng của một chân trong PORT A 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 PORT A là output, ta clear bit điều khiển tương ứng với trong đó trong thanh ghi TRISA 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 PORT A là TRISA, đối với PORT B là TRISB, đối với PORT C là TRISC, đối với PORT D là TRISD, đối với PORT D là TRISD)

2.3.1 PORT A

PORT A (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 TRISA (địa chỉ 85h) Bên cạnh đó PORT A còn là ngõ vào của bộ ADC, bộ so sánh, ngõ vào xung clock của Timer0 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:

o PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA o TRISA (địa chỉ 85h) : điều khiển xuất nhập

o CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh điện áp

o ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC

Trang 23

Các thanh ghi SFR liên quan đến PORTB bao gồm:

o PORTB (địa chỉ 06h, 106h) : chứa giá trị các pin trong PORT B

o TRISB (địa chỉ 86h, 186h) : điều khiển xúât nhập

Trang 24

o OPTION_REG (địa chỉ 81h, 181h): điều khiển ngắt ngoại vi và bộ Timer0

Hình 1.6: Sơ đồ khối các chân RB3:RB0

Hình 1.7: Sơ đồ khối các chân RB7:RB4

2.3.3 PORT C

PORT C (RPC) gồm 8 pin I/O Bên cạnh đó, PORT C còn chứa các chân chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I²C, SPI, SSP, USART

Các thanh ghi điều khiển liên quan đến PORT C;

o PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORT C o TRISC (địa chỉ 87h) : điều khiển xuất nhập

Trang 25

Hình 1.9: Sơ đồ khối các chân RC2:RC0 và RC7:RC5 Hình 1.10: Sơ đồ khối các chân Rc4:RC3

2.3.4 PORT D

PORT D (RPD) gồm 8 pin I/O PORT D còn là cổng xúât dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)

Các thanh ghi liên quan đến PORT D bao gồm:

o Thanh ghi PORTD : chứa giá trị các pin trong PORT D o Thanh ghi TRISD : điều khiển xuất nhập

Trang 26

Hình 1.21: Sơ đồ khối các chân RD7:RD0

2.3.5 PORT E

PORT E (RPE) gồm 3 chân I/O Các chân của PORT E 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 PORT E bao gồm:

thông số cho chuẩn giao tiếp PSP

Trang 27

Hình 1.22: Sơ đồ khối các chân RE2:RE0

Để mã hoá được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương tirnh2 có dung lượng 13 bit (PC<12:0>)

Trang 28

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ớ chương trình không bao gồm bộ nhớ stack và kh6ong được địa chỉ hoá bởi bộ đếm chương trình

Hình 1.23: Sơ đồ bộ nhớ chương trình PIC16F877A

2.4.2 Bộ nhớ dữ liệu

Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia làm nhiều Bank Đối với PIC16F877A, bộ nhớ dữ liệu được chia làm 4 Bank Mỗi Bank có dung lượng

Trang 29

128 Byte, bao gồm các thanh ghi có chức năng đặc biệt SFR (Special Functin Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong Bank Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) sẽ được đặt ở tất cả các Bank của 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 Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:

Trang 30

Hình 1.24: Sơ đồ bộ nhớ dữ liệu PIC16F877A

Trang 31

2.4.2.1 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 tích hợp bên trong VĐK Có thể phân thanh ghi SFR làm 2 loại: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SFR 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ụ: ADC, PWM…) Phần này sẽ đề cập đến các thanh ghi liên quan đến chức năng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khối chức năng sẽ được nhắc đến khi ta đề cập đến các khối chức năng đó

 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 trong 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 này cho phép đọc và ghi, chứa các bit điều khiển và các bit cờ hiệu khi Timer 0 bị tràn, ngắt ngoại vi RB0/INT và ngắt interrupt-on-change tại các chân của PORTB

 Thanh ghi PIE1(8Ch): chứa các bit điều khiển chi tiết các ng8át của các khối chức năng ngọai vi

Trang 32

 Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngọai vi, các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1

 Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năng CCP2, SSP bus, ng8át của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM

 Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngọai vi, các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2

 Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ reset của vi điều khiển

2.4.2.2 Thanh ghi mục đích chung GPR

Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua thanh ghi FSG (File Select Register) Đây là các thanh ghi dữ liệu thông thường, người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng cá thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình

Trang 33

2.4.3 STACK

Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một vùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thực hiện hay khi 1 ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương trình PC tự động được VĐK cất vào trong stack

Bộ nhớ stack trong VĐK PIC họ 16F87xA có khả năng chứa được 8 địa chỉ và hoat động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ nhớ stack lần thứ 9 sẽ ghi đè lên giá trị cất vào stack lần đầu tiên

Không có cờ hiệu nào cho biết trạng thái stack, do đó không thể biết được khi nào stack tràn Các thao tác với bộ nhớ stack sẽ hòan toàn được điều khiển bởi CPU

2.5 Timer 0

Đây là một trong ba bộ đếm hoặc bộ định thời của VĐK PIC16F877A Timer 0 là bộ đếm 8 bit được kết nối với bộ chia tần số (prescaler) 8 bit Cấu trúc của Timer 0 cho phép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock Ngắt Timer 0 sẽ xuất hiện khi Timer 0 bị tràn Bit TMR0IE (INTCON<5>) là bit điều khiển của Timer 0 TMR0IE = 1 cho phép ngắt Timer 0 tác động, TMR0IE = 0 không cho phép ngắt Timer 0 tác động

Muốn Timer 0 họat động ở chế độ timer ta clear bit TOSC (OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kì xung đồng hồ (tần số vào Timer 0 bằng ¼ tần số oscillator) Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắt Timer 0 sẽ xuất hiện Thanh ghi TMR0 cho phép ghi và xóa giúp ta ấn định thời điểm ngắt Timer0 xuất hiện một cách linh động

Muốn Timer 0 họat động ở chế độ Counter ta set bit TOSC (OPTION_REG<5>) Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép lực chọn cạnh tác động vào bộ đếm Cạnh tác động là cạnh lên nếu TOSE = 0 và cạnh tác động là cạnh xuống nếu TOSE = 1

Trang 34

Hình 1.25: Sơ đồ khối của Timer 0

Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set Đây chính là cờ ngắt của Timer0 Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếm bắt đầu thực hiện quá trình đếm Ngắt Timer0 không thể “đánh thức” VĐK từ chế độ sleep

Bộ chia tần số (prescaler) được chia sẻ giữa Timer 0 và WDT (Watchdog Timer) Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer 0 thì WDT sẽ không có được hỗ trợ của prescaler và ngược lại

2.6 ADC

ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu từ dạng tương tự sang dạng số VĐK PIC16F877a có 8 ngõ vào analog (RA4:RA0 và RE2:RE0) Hiệu điện thế chuẩn VREF có thể lựa chọn là VDD, VSS hay hiệu điện thế chuẩn được xác lập trên 2 chân RA2 và RA3 Kết quả chuyển đổi từ tín hiệu tương tự sang

Trang 35

tín hiệu số là 10 bit số tương ứng và được lưu trong 2 thanh ghi ASRESH:ADRESL Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này có thể được sử dụng như các thanh ghi thông thường khác

Hình 1.26: Sơ đồ khối bộ chuyển đổi ADC Qui trình chyển đổi từ tương tự sang số bao gồm các bước sau:

1- Thiết lập các thông số cho bộ chuyển đổi ADC:

 Chọn ngõ vào Analog, chọn điện áp mẫu (dựa trên các thông số của thanh ghi ADCON1)

 Chọn kênh chuyển đổi AD (thanh ghi ADCON0)

Trang 36

 Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0)

 Cho phép bộ chuyển đổi AD họat động (thanh ghi ADCON0)

2- Thiết lập cá cờ ngắt cho bộ AD  Clear bit ADIF

 Set bit ADIE  Set bit PEIE  Set bit GIE

3- Đợi cho tới khi quá trình lấy mẫu hòan tất

4- Bắt đầu quá trình chuyển đổi (set bit GO/DONE)

5- Đợi cho tới khi quá trình chuyển đổi hòan tất bằng cách:

 Kiểm tra bit GO/DONE Nếu GO/DONE =0, quá trình chuyển đổi đã hòan tất

Ngày đăng: 20/05/2024, 23:41

Tài liệu cùng người dùng

Tài liệu liên quan