Ở đây, các thiết bị điều khiển tự động được kết nối với nhau thành một hệ thống hoàn chỉnh qua một thiết bị trung tâm và có thể giao tiếp với nhau về mặt dữ liệu.. Đặc biê
Trang 1621.382 LỜI CẢM ƠN
Trong quá trình được học tập, tu dưỡng và rèn luyện tại Khoa Điện Tử - Viễn Thông, Trường Đại Học Vinh em đã được trang bị các kiến thức cơ bản, chuyên môn cũng như kinh nghiệm thực tế để có thể hoàn thành đồ án tốt nghiệp của mình
Xuất phát từ lòng kính trọng và biết ơn sâu sắc, em xin chân thành cảm ơn các thầy, cô giáo trong Khoa Điện Tử - Viễn Thông, Trường Đại Học Vinh đã quan tâm, hướng dẫn, truyền đạt lại kiến thức và kinh nghiệm cho em trong suốt thời gian học tập tại trường
Trong quá trình làm đồ án em đã cố gắng hoàn thành nhưng không tránh khỏi những sai sót, em rất mong nhận được sự đóng góp ý kiến của quý thầy cô và các bạn để em có thêm kinh nghiệm trong thực tế
Đặc biệt em xin chân thành cảm ơn thầy giáo ThS Đặng Thái Sơn, người
đã hết sức tận tình chỉ bảo, định hướng và bổ sung kiến thức cho em, đã tạo điều kiện thuận lợi cho em hoàn thành tốt đồ án
Em xin chân thành cảm ơn!
Nghệ An, tháng 01 năm 2015
Sinh viên thực hiện
Cao Văn Oánh
Trang 2MỤC LỤC
MỞ ĐẦU 5
TÓM TẮT ĐỒ ÁN 7
DANH MỤC CÁC BẢNG BIỂU 8
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 9
DANH MỤC CÁC CHỮ VIẾT TẮT 11
GIỚI THIỆU ĐỀ TÀI, YÊU CẦU THIẾT KẾ 12
CHƯƠNG 1 CÁC PHƯƠNG PHÁP ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI 15
1.1 Giới thiệu các công nghệ dùng trong điều khiển thiết bị từ xa hiện nay 15
1.1.1 Điều khiển từ xa sử dụng sóng hồng ngoại 15
1.1.2 Điều khiển từ xa sử dụng sóng RF 16
1.1.3 Điều khiển từ xa sử dụng Bluetooth 17
1.1.4 Điều khiển từ xa sử dụng Module Sim GSM 18
1.1.5 Điều khiển từ xa qua mạng Internet 18
CHƯƠNG 2 HỌ VI ĐIỀU KHIỂN PIC 20
2.1 Giới thiệu họ vi điều khiển PIC 20
2.2 Vi điều khiển PIC16F877A 22
2.2.1 Khái quát về vi điều khiển PIC16F877A 22
2.2.2 Sơ đồ khối và khái quát cấu trúc của vi điều khiển PIC16F877A 24
CHƯƠNG 3 TỔNG QUAN MẠNG GSM, TIN NHẮN SMS VÀ SIM 900A 46
3.1 Tổng quan về hệ thống thông tin di động GSM 46
3.1.1 Giới thiệu về công nghệ GSM 46
3.1.2 Đặc điểm của công nghệ GSM 46
3.1.3 Cấu trúc mạng GSM 47
3.1.4 Sự phát triển của công nghệ GSM tại Việt Nam 48
3.2 Giới thiệu về SMS 48
3.3 Sim900A 50
3.3.1 Giới thiệu Sim900A 50
3.3.2 Sơ đồ chân và chức năng từng chân của Sim900A 52
3.3.3 Tập lệnh AT của Sim900A 54
Trang 3CHƯƠNG 4 MÔI TRƯỜNG ỨNG DỤNG WINDOWS PHONE 8.1 59
4.1 Giới thiệu về Windows phone 8.1 59
4.1.1 Lịch sử phát triển 59
4.1.2 Công cụ Visual Studio 61
4.1.3 Cài đặt các công cụ để lập trình Windows phone 8.1 62
CHƯƠNG 5 THIẾT KẾ VÀ THI CÔNG 68
5.1 Thiết kế mạch 68
5.1.1 Sơ đồ tổng quát 68
5.1.2 Các linh kiện trong mạch 72
5.2 Lập trình trên Windows phone 8.1 79
5.3 Kết quả 84
KẾT LUẬN 85
TÀI LIỆU THAM KHẢO 87
PHỤ LỤC 88
Trang 4MỞ ĐẦU
Ngày nay cùng với sự phát triển mạnh mẽ của khoa học kỹ thuật, không chỉ công nghệ kỹ thuật điện tử mà kỹ thuật điều khiển tự động cũng đóng vai trò rất quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp, cung cấp thông tin
Như chúng ta cũng đã biết, hầu như các thiết bị tự động trong nhà máy, trong đời sống của các gia đình ngày nay đều hoạt động riếng rẽ với nhau, mỗi thiết bị lại
có một quy trình sử dụng khác nhau tuỳ thuộc vào sự thiết lập, cài đặt của người sử dụng Chúng chưa có một sự liên kết nào với nhau về mặt dữ liệu Nhưng đối với hệ thống điều khiển thiết bị từ xa thông qua thiết bị di động thì lại khác Ở đây, các thiết bị điều khiển tự động được kết nối với nhau thành một hệ thống hoàn chỉnh qua một thiết bị trung tâm và có thể giao tiếp với nhau về mặt dữ liệu
Điển hình của một hệ thống điều khiển thiết bị từ xa thông qua điện thoại di động gồm có các thiết bị đơn giản như bóng đèn, quạt máy, lò sưởi đến các thiết bị tinh vi, phức tạp như tivi, máy giặt, hệ thống báo động Nghĩa là tất cả các thiết bị này có thể giao tiếp với nhau về mặt dữ liệu thông qua một bộ xử lý trung tâm Bộ
xử lý trung tâm ở đây có thể là một máy vi tính hoặc có thể là một bộ xử lí đã được lập trình sẵn tất cả các chương trình điều khiển Bình thường, các thiết bị trong ngôi nhà này có thể được điều khiển từ xa thông qua các tin nhắn SMS Chẳng hạn như việc tắt quạt, đèn điện… khi người dùng quên chưa tắt trước khi ra khỏi Hay chỉ với một tin nhắn SMS người chủ nhà có thể bật máy điều hòa để làm mát phòng trước khi về nhà trong một khoảng thời gian nhất định Bên cạnh đó hệ thống cũng gửi thông báo cho người điều khiển biết trạng thái hiện tại của các thiết bị trong nhà
và gọi điện cảnh báo khi nhiệt độ vượt quá mức cho phép Hệ thống còn mang tính bảo mật Nghĩa là chỉ có chủ nhân hay người biết mật khẩu của hệ thống thì mới điều khiển được các thiết bị
Từ những yêu cầu thực tế, nhữ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 mạng di động nên em đã chọn đề tài “Thiết kế, chế tạo hệ thống giám sát các thiết bị ngoại vi trên cơ sở ứng dụng Vi điều khiển PIC
và mạng thông tin di động GSM” để đáp ứng được nhu cầu ngày càng cao của con
người Đồ án được chia làm 5 chương:
Trang 5- Chương 1 Các phương pháp điều khiển thiết bị ngoại vi
- Chương 2 Họ vi điều khiển PIC
- Chương 3 Tổng quan mạng GSM, tin nhắn SMS và Sim900A
- Chương 4 Môi trường ứng dụng Windows Phone 8.1
- Chương 5 Thiết kế và thi công
Kết quả của đề tài này là tạo ra được một hệ thống giám sát, điều khiển các thiết bị ngoại vi như các thiết bị trong nhà, văn phòng… Hệ thống này có thể được điều khiển thủ công bằng tay (nút bấm) hoạc thông qua tin nhắn SMS Hệ thống còn
có khả năng cảnh báo cháy khi nhiệt độ xung quanh cao vượt mức cho phép Một phần mềm ứng dụng chạy trên hệ điều hành điện thoại Windows Phone 8.1 để thay thế cho việc nhắn tin điều khiển thiết bị như thông thường
Nghệ An, tháng 01 năm 2015
Sinh viên thực hiện
Cao Văn Oánh
Trang 6TÓM TẮT ĐỒ ÁN
Đồ án này trình bày quá trình thiết kế hệ thống điều khiển và giám sát thiết bị từ xa qua tin nhắn SMS Khai thác và sử dụng Module Sim900A kết hợp với Vi điều khiển PIC16F877A để điều khiển toàn hệ thống Lập trình một ứng dụng đơn giản trên Windows Phone 8.1 thay thế cho việc gửi tin nhắn điều khiển tới hệ thống như thông thường Trên cơ sở đó tìm ra các giải pháp tối ưu cho việc thiết kế, lập trình cũng như mở rộng thêm các chức năng cho hệ thống nhằm đảm bảo hoạt động tốt trong thực tế và ngày càng tiện dụng hơn cho người sử dụng
ABSTRACT
This project presents about of design system control and surveillance equipment via SMS Exploitation and use Module Sim900A with PIC16F877A microcontroller to control the system Programming a simple application on Windows Phone 8.1 instead to sending messages to the system as usual Based on that finding the optimal solution for the design, programming and extended functionality for the system to ensure that work well in practice and more and more useful to the user
Trang 7DANH MỤC CÁC BẢNG BIỂU
Bảng 5.1 Các trạng thái của đèn NETLIGHT 69Bảng 5.2 Chức năng chân LCD 16x2 76Bảng 5.3 Tập lệnh LCD 16x2 77
Trang 8DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 2.1 Sơ đồ khối vi điều khiển PIC16F877A 24
Hình 2.2 Sơ đồ chi tiết port A 28
Hình 2.3 Sơ đồ chi tiết port B 29
Hình 2.4 Sơ đồ chi tiết port C 29
Hình 2.5 Sơ đồ chi tiết port D 30
Hình 2.6 Sơ đồ chi tiết port E 30
Hình 2.7 Sơ đồ bộ nhớ chương trình 31
Hình 2.8 Sơ đồ bộ nhớ dữ liệu PIC16F877A 32
Hình 2.9 Sơ đồ khối của timer0 34
Hình 2.10 Sơ đồ khối của timer1 36
Hình 2.11 Sơ đồ khối timer2 37
Hình 2.12 Sơ đồ khối bộ chuyển đổi ADC 39
Hình 2.13 Công thức tính tốc độ baud 40
Hình 2.14 Sơ đồ khối của khối truyền dữ liệu USART 41
Hình 2.15 Sơ đồ khối của khối nhận dữ liệu USART 43
Hình 2.16 Sơ đồ chân của PIC16F877A 45
Hình 3.1 Các thành phần của công nghệ mạng GSM 47
Hình 3.2 Mặt trước sim900A 52
Hình 3.3 Sơ đồ chân sim900A 52
Hình 4.1 Kiểm tra Ảo hóa, SLAT, DEP 63
Hình 4.2 Thông báo cần kích hoạt Hyper-V 63
Hình 4.3 Lỗi thông báo kích hoạt Hyper-V 64
Hình 4.4 Chọn Programs and Features 64
Hình 4.5 Chọn Turn Windows Features On or Off 65
Hình 4.6 Tích chọn Hyper-V 65
Hình 4.7 Mở Hyper-V Manager 66
Hình 4.8 Trình quản lý Hyper-V 66
Hình 4.9 Lỗi Setup Block khi cài visual studio 67
Hình 5.1 Sơ đồ khối tổng quát 68
Trang 9Hình 5.2 Module LM2596 68
Hình 5.3 Module Sim900A 69
Hình 5.4 Khối xử lý trung tâm 70
Hình 5.5 Mạch in khối xử lý trung tâm 71
Hình 5.6 Khối bàn phím 71
Hình 5.7 Khối công suất 72
Hình 5.8 Mạch in khối công suất 72
Hình 5.9 Relay 73
Hình 5.10 Opto 74
Hình 5.11 Ký hiệu transistor loại NPN 75
Hình 5.12 IC 7805 75
Hình 5.13 Hình dạng và sơ đồ chân LCD 16x2 76
Hình 5.14 Cảm biến nhiệt LM35 78
Hình 5.15 Tạo project mới trong visual studio 79
Hình 5.16 Tạo ứng dụng windows phone mới 80
Hình 5.17 Cấu trúc một Project Windows Phone 80
Hình 5.18 Các vùng làm việc trong visual studio 81
Hình 5.19 Tạo đối tượng button mới 82
Hình 5.20 Thiết đặt đặc tính cho đối tượng 82
Hình 5.21 Giao diện của ứng dụng trên windows phone 82
Hình 5.22 Khu vực code của ứng dụng 83
Hình 5.23 Vùng code cho đối tượng 83
Hình 5.24 Sản phẩm 84
Hình 5.25 Ứng dụng chạy trên windows phone 84
Trang 10LCD Liquid crystal display Màn hình tinh thể lỏng
PIC Programmable Intelligent Computer Máy tính khả trình thông minh PWM Pulse Width Modulation Điều chế độ rộng xung
RAM Random Access Memory Bộ nhớ truy xuất ngẫu nhiên ROM Read-Only Memory Bộ nhớ chỉ đọc
USART Universal Synchronous
Asynchronous Receiver Transmitter
Chuẩn giao tiếp nối tiếp
Trang 11GIỚI THIỆU ĐỀ TÀI, YÊU CẦU THIẾT KẾ Giới thiệu đề tài
Ngày nay cùng với sự phát triển mạnh mẽ của khoa học kỹ thuật, công nghệ Đặc biệt là ngành điều khiển tự động đóng vai trò quan trọng trong mọi lĩnh vực của khoa học kỹ thuật, quản lý công nghiệp, cung cấp thông tin… Như chúng ta đã biết, gần như các thiết bị tự động của nhà máy, xí nghiệp, các thiết bị văn phòng hay trong gia đình ngày nay đều hoạt động độc lập với nhau, mỗi thiết bị có một quy trình sử dụng khác nhau tùy thuộc vào sự thiết lập, cài đặt của người dùng Chúng chưa có sự liên kết nào với nhau Nhưng đối với hệ thống điều khiển thiết bị thông qua điện thoại thì khác, các thiết bị được kết nối với nhau để tạo thành một hệ thống các thiết bị hoàn chỉnh qua một thiết bị trung tâm và có thể giao tiếp được với nhau
Hệ thống điều khiển thiết bị từ xa thông qua điện thoại có thể diều khiển được những thiết bị từ đơn giản đến phức tạp hơn như bóng đèn, quạt điện, máy điều hòa hay tivi, hệ thống báo động… Nghĩa là tất cả các thiết bị này được điều khiển cùng trong một bộ điều khiển trung tâm Bộ điều khiển trung tâm này có thể
là một máy tính hoàn chỉnh hay một bộ xử lý đã được lập trình sẵn các chương trình điều khiển
Thông thường, các thiết bị gia đình như quạt điện, tủ lạnh, tivi… có thể được điều khiển bật/tắt thông qua một cuộc gọi thoại hay chỉ một tin nhắn SMS Ngoài
ra, hệ thống còn mang tính bảo mật cao, nghĩa là chỉ những ai biết được mật khẩu, cấu trúc lệnh điều khiển hệ thống mới có thể điều khiển được các thiết bị
Yêu cầu thiết kế và phương pháp nghiên cứu
Đồ án này đượ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ế, chế tạo ra một hệ thống
có thể điều khiển các thiết bị ngoại vi từ xa bằng tin nhắn SMS hoàn chỉnh Hệ thống này tích hợp các 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à module cảnh báo nhiệt độ cùng các module tiện ích khác có thể mở rộng thêm Với module cảnh báo nhiệt độ thì sẽ chịu trách nhiệm gửi thông tin dữ liệu về bộ xử lí trung tâm, sau khi qua xử lí, dữ liệu sẽ được gửi về thiết bị đầu cuối (điện thoại) cho người sử dụng biết
Các yêu cầu đối vối hệ thống:
Trang 12- Hệ thống được sử dụng để điều khiển bật/tắt các thiết bị gia đình
- Hệ thống có khả năng điều khiển nhiều thiết bị
- Thiết kế dạng module để dễ dàng mở rộng nhiều hơn các thiết bị
- Hệ thống điều khiển được lắp đặt trong nhà
- Sử dụng mạng GSM để truyền các thông tin điều khiển
- Hệ thống làm việc đạt được sự ổn định trong thời gian dài
- Đảm bảo chế độ bảo mật của hệ thống
- Chi phí cho toàn bộ hệ thống tối thiểu nhất để hệ thống có thể thương mại hóa
- Đễ dàng lắp đặt, sử dụng và bảo trì
Các điều kiện ràng buộc:
- Cường độ tín hiệu của mạng GSM tại nơi đặt bộ điều khiển
- Ảnh hưởng của nhiễu đến hệ thống
- Điều kiện môi trường: nhiệt độ, độ ẩm…
- Chi phí cho hệ thống
Giới hạn của đề tài
Để thực thi một hệ thống điều khiển thiết bị ngoại vi từ xa thông qua điện thoại di động áp dụng cho một ngôi nhà hoàn chỉnh như trên là rất phức tạp và rất tốn kém Để đáp ứng việc điều khiển toàn bộ các thiết bị này đòi hỏi phải có một lượng thời gian, kiến thức nhất định Bên cạnh đó còn là vấn đề tài chính Do đó, với lượng thời gian và kiến thức có hạn, trong đề tài này em xin phép chỉ thực thi một phần của hệ thống hoàn chỉnh đó Đó là điều khiển đóng mở bóng đèn qua tin nhắn SMS và sử dụng một ứng dụng đơn giản chạy trên nền windows phone 8.1 để thay thế cho việc soạn tin nhắn như thông thường Ngoài ra còn có chức năng gửi tín hiệu cảnh báo cháy tới người dung khi nhiệt độ tăng cao quá mức cho phép
Với những gì đã trình bày ở trên, em đã tiến hành nghiên cứu, khảo sát và thực hiện và dự kiến đạt được các mục tiêu đặt ra như sau:
- Điều khiển các thiết bị trong nhà (cụ thể là điều khiển một thiết bị công suất trung bình) bằng tin nhắn SMS tại ví trí có phủ sóng của mạng điện thoại di động đang hoạt động trong nước như Viettel, Mobile Phone, Vina Phone…
Trang 13- Tự động gửi tin nhắn phản hồi lại cho người điều khiển, với nội dung tin nhắn chứa thông tin hoạt động của thiết bị
- Tự động gửi tin thông báo trạng thái của các thiết bị và nhiệt độ hiện tại tới người dùng
- Ngoài ra, hệ thống còn có chức năng tự động gọi điện cho người dùng để cảnh báo cháy
Trang 14Chương 1 CÁC PHƯƠNG PHÁP ĐIỀU KHIỂN THIẾT BỊ NGOẠI VI
1.1 Giới thiệu các công nghệ dùng trong điều khiển thiết bị từ xa hiện nay
Hiện nay trên thế giới nói chung cũng như ở Việt Nam nói riêng thì công nghệ điều khiển thiết bị từ xa đã và đang ngày một phát triển và được ứng dụng ngày càng nhiều trong cuộc sống khi mà nhu cầu của con người ngày càng cao
1.1.1 Điều khiển từ xa sử dụng sóng hồng ngoại
Sóng hồng ngoại (hay tia hồng ngoại, ánh sáng hồng ngoại) là ánh sáng không thể nhìn thấy được bằng mắt thường, có bước sóng từ 0.86μm đến 0.98μm Tia hồng ngoại có vận tốc truyền bằng vận tốc ánh sáng
Tia hồng ngoại có thể truyền đi được nhiều kênh tín hiệu Nó được ứng dụng rộng rãi trong công nghiệp Lượng thông tin có thể đạt 3 mega bit/s Lượng thông tin được truyền đi với ánh sáng hồng ngoại lớn gấp nhiều lần so với sóng điện từ mà người ta vẫn dùng Tuy nhiên tia hồng ngoại dễ bị hấp thụ, khả năng xuyên thấu kém Trong điều khiển từ xa bằng tia hồng ngoại, chùm tia hồng ngoại phát đi hẹp,
có hướng, do đó phải thu đúng hướng
Sóng hồng ngoại có những đặc tính quan trọng giống như ánh sáng (sự hội tụ qua thấu kính, tiêu cự ) Ánh sáng thường và ánh sáng hồng ngoại khác nhau rất rõ trong sự xuyên suốt qua vật chất
Ánh sáng hồng ngoại không bị yếu đi khi vượt qua các lớp bán dẫn để đi ra ngoài
a) Nguyên tắc hoạt động chung
Tia hồng ngoại được sử dụng rất phổ biến và không bị ảnh hưởng bởi từ trường, vì thế nó được sử dụng tốt trong truyền thông và điều khiển Nhưng nó vẫn
có một số khuyết điểm, một số vật phát hồng ngoại mạnh làm ảnh hưởng đến truyền thông và điều khiển như quang phổ mặt trời
Việc thu hoặc phát bức xạ hồng ngoại có thể được thực hiện bằng nhiều phương tiện khác nhau, có thể nhận tia hồng ngoại từ ánh sáng mặt trời Nhiều thứ
có thể phát tia hồng ngoại như: lò bức xạ, lò điện, đèn, cơ thể người…
Trang 15Để truyền tia hồng ngoại tốt phải tránh xung nhiễu, bắt buộc phải dùng mã phát và nhận ổn định để xác định xem đó là xung truyền hay nhiễu Tần số làm việc tốt nhất là từ 30KHz đến 60KHz, nhưng thường sử dụng khoảng 36KHz
Dùng tần số 36KHz để truyền tín hiệu thì dễ, nhưng khó thu và giải mã, phải
sử dụng bộ lọc để tín hiệu ngõ ra là xung vuông, nếu ngõ ra có xung nghĩa là đã nhận được tín hiệu ngõ vào
b) Ưu, nhược điểm
- Hạn chế về khoảng cách và góc sử dụng
- Thiết bị phát và thu phải nhìn thấy nhau
1.1.2 Điều khiển từ xa sử dụng sóng RF
Là loại điều khiển từ xa xuất hiện đầu tiên và đến nay vẫn giữ một vai trò quan trọng và phổ biến trong đời sống Nếu điều khiển dùng tia hồng ngoại chỉ dùng trong nhà thì điều khiển RF lại dùng cho nhiều vật dụng bên ngoài như các thiết bị mở cửa gara xe, hệ thống báo hiệu cho các loại đồ chơi điện tử từ xa thậm chí kiểm soát vệ tinh và các hệ thống máy tính xách tay và điện thoại thông minh…
a) Nguyên tắc hoạt động chung
Với loại điều khiển này, nó cũng sử dụng nguyên lý tương tự như điều khiển bằng tia hồng ngoại nhưng thay vì gửi đi các tín hiệu ánh sáng, nó lại truyền sóng
vô tuyến tương ứng với các lệnh nhị phân Bộ phận thu sóng vô tuyến trên thiết bị được điều khiển nhận tín hiệu và giải mã nó
Ở công nghệ này người ta thường sử dụng tần số sóng mang là 315Mhz, 433Mhz, 1000Mhz
b) Ưu, nhược điểm
Ưu điểm
- Truyền xa hơn sóng hồng ngoại với khoảng cách khoảng 30m hoặc có thể lên tới 100m
Trang 16- Có khả năng truyền xuyên vật cản (tường, kính…)
1.1.3 Điều khiển từ xa sử dụng Bluetooth
Bluetooth là công nghệ không dây cho phép các thiết bị điện, điện tử giao tiếp với nhau trong khoảng cách ngắn, bằng sóng vô tuyến ISM (Industrial, Scentific, Medical) trong dải tần 2.40 – 2.48Ghz Đây là dải băng tần không cần đăng ký được dành riêng cho các thiết bị không dây trong công nghiệp, khoa học, y tế
Bluetooth được thiết kế với mục đích để thay thế dây cable giữa máy tính và các thiết bị truyền thông cá nhân, kết nối vô tuyến giữa các thiết bị điện tử lại với nhau một cách thuận lợi với giá rẻ
a) Nguyên tắc hoạt động chung
Khi được kích hoạt, thiết bị bluetooth có thể tự động định vị các thiết bị khác
có chung công nghệ trong vùng xung quanh và bắt đầu kết nối với chúng Nó được
sử dụng cho việc truyền dữ liệu lẫn hình ảnh và tiếng nói
Sau khi được kết nối thì thiết bị đích sẽ nhận lệnh từ thiết bị nguồn, qua bộ
xử lý để xử lý tín hiệu và thực hiện lệnh tương ứng
b) Ưu, nhược điểm
Ưu điểm
- Tiêu thụ năng lượng thấp, cho phép ứng dụng được trong nhiều loại thiết bị, bao gồm cả thiết bị cầm tay và điện thoại di động
- Giá thành ngày càng hạ
- Sử dụng dải băng tần 2.40 – 2.48 Ghz nên có tốc độ truyền dữ liệu có thể lên tới 1Mbps mà các thiết bị không cần nhìn thấy nhau
- Dễ dàng trong việc phát triển các ứng dụng
- Độ an toàn, bào mật tốt
Nhược điểm
Trang 17- Khoảng cách giữa 2 thiết bị là không cao Khoảng 10m ở ngoài trời và 5m khi ở trong nhà
1.1.4 Điều khiển từ xa sử dụng Module Sim GSM
Ở phương pháp điều khiển này thì hệ thống sẽ sử dụng các Module GSM kết hợp với vi điều khiển để điều khiển thiết bị Người dùng sử dụng Điện thoại di động
có thể gọi điện cũng như gửi tin nhắn SMS để gửi lệnh điều khiển thiết bị
a) Nguyên tắc hoạt động chung
Người sử dụng dùng Điện thoại sẽ gửi các tin nhắn SMS với nội dung là lệnh điều khiển thiết bị tới thuê bao được gắn trên Module GSM Module GSM sau khi nhận được tin nhắn này sẽ gửi thông báo tới Vi điều khiển, Vi điều khiển sau đó sẽ đọc và xử lý lệnh điều khiển và tiến hành điều khiển các thiết bị
b) Ưu, nhược điểm
- Chi phí xây dựng ban đầu cao
- Hệ thống còn phụ thuộc vào điều kiện của các nhà mạng, cơ sở hạ tầng GSM tại khu vực ứng dụng nó
1.1.5 Điều khiển từ xa qua mạng Internet
Điều khiển thiết bị qua mạng Internet là một phương pháp điều khiển mới và đang ngày càng được ứng dụng nhiều trong thực tế bởi sự phát triển mạnh mẽ của mạng Internet và nhu cầu tiện ích của người sử dụng Người dùng có thể sử dụng các thiết bị có kết nối Internet như máy tính, điện thoại, máy tính bảng… để điều khiển thiết bị từ xa
a) Nguyên tắc hoạt động chung
Ở phương pháp điều khiển này thì hệ thống sẽ có 3 bộ phận chính đó là thiết bị đầu cuối dùng để gửi lệnh điều khiển, server và thiết bị nhận tín hiệu điều khiển
Trang 18Người dùng sử dụng các thiết bị đầu cuối có kết nối mạng internet để kết nối tới server của hệ thống, thực hiện các thao tác điều khiển sau đó từ server sẽ gửi các lệnh điều khiển này xuống thiết bị điều khiển thông qua giao thức TCP/IP Thiết bị điều khiển phải sử dụng 1 module để nhận tín hiệu từ server và truyền vào Vi điều khiển để xử lý rồi thực hiện các lệnh tương ứng ra các thiết bị cần điều khiển
b) Ưu, nhược điểm
Ưu điểm
- Tiện dụng
- Ngày càng được ứng dụng nhiều vào thực tế
- Độ bảo mật cao
Nhược điểm
- Chi phí đầu tư ban đầu khá cao
- Tốc độ, độ ổn định của hệ thống phụ thuộc vào cơ sở hạ tầng mạng sử dụng
Trang 19PIC bắt nguồn là 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 Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650 Lúc này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cá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 Instrument 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 EEPROM để 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
Hiện nay, tại Việt Nam, đã có một cộng đồng nghiên cứu và phát triển PIC, dsPIC và PIC32
Lập trình cho PIC
PIC sử dụng tập lệnh RISC, với dòng PIC low-end (độ dài mã lệnh 12 bit, ví dụ: PIC12Cxxx) và mid-range (độ dài mã lệnh 14 bit, ví dụ: PIC16Fxxxx), tập lệnh bao gồm khoảng 35 lệnh, và 70 lệnh đối với các dòng PIC high-end (độ dài mã lệnh
16 bit, ví dụ: PIC18Fxxxx) Tập lệnh bao gồm các lệnh tính toán trên các thanh ghi, với các hằng số, hoặc các vị trí bộ nhớ, cũng như có các lệnh điều kiện, lệnh nhảy/gọi hàm, và các lệnh để quay trở về, nó cũng có các tính năng phần cứng khác
Trang 20như ngắt hoặc sleep (chế độ hoạt động tiết kiện điện) Microchip cung cấp môi trường lập trình MPLAB, nó bao gồm phần mềm mô phỏng và trình dịch ASM
Một số công ty khác xây dựng các trình dịch C, Basic, Pascal cho PIC Microchip cũng bán trình dịch "C18" (cho dòng PIC high-end) và "C30" (cho dòng dsPIC30Fxxx) Họ cũng cung cấp các bản "student edition/demo" dành cho sinh viên hoặc người dùng thử, những version này không có chức năng tối ưu hoá code
và có thời hạn sử dụng giới hạn Những trình dịch mã nguồn mở cho C, Pascal, JAL, và Forth, cũng được cung cấp bởi PicForth
GPUTILS là một kho mã nguồn mở các công cụ, được cung cấp theo công ước về bản quyền của GNU General Public License GPUTILS bao gồm các trình dịch, trình liên kết, chạy trên nền Linux, Mac OS X, OS/2 và Microsoft Windows GPSIM cũng là một trình mô phỏng dành cho vi điều khiển PIC thiết kế ứng với từng module phần cứng, cho phép giả lập các thiết bị đặc biệt được kết nối với PIC,
ví dụ như LCD, LED
Một vài đặc tính
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, 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 trúc 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
- Công nghệ Nanowatt
- Các chuẩn giao tiếp ngoại vi nối tiếp đồng bộ/không đồng bộ USART, AUSART, EUSARTs
- Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
- Bộ so sánh điện áp (Voltage Comparators)
- Các module Capture/Compare/PWM
- LCD
- MSSP Peripheral dùng cho các giao tiếp I²C, SPI, và I²S
- Bộ nhớ nội EEPROM - có thể ghi/xoá lên tới 1 triệu lần
Trang 21- FLASH (dùng cho bộ nhớ chương trình) có thể ghi/xóa 10.000 lần (thông thường)
- Module Điều khiển động cơ, đọc encoder
- Hỗ trợ giao tiếp USB
- Hỗ trợ điều khiển Ethernet
- 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)
2.2 Vi điều khiển PIC16F877A
2.2.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 này chọn
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ề 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à 60.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)
Trang 22Ngoà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 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
- 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ỉ
Trang 23+ 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
+ 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
2.2.2 Sơ đồ khối và khái quát cấu trúc của vi điều khiển PIC16F877A
a) Sơ đồ khối vi điều khiển PIC16F877A
Hình 2.1 Sơ đồ khối vi điều khiển PIC16F877A
Trang 24 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: 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 toàn 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
- Bit 8: CPD (Data EEPROM Memory Write Protection bit)
+ 1: tắt chức năng bảo vệ mã của EEPROM
+ 0: bật chức năng bảo vệ mã
- Bit 7: LVP (Low-Voltage (Single supply) In-Circuit Serial Programming Enable bit
+ 1: cho phép chế độ nạp chương trình ở điện áp thấp, pin RB3/PGM được sử dụng cho chế độ này
+ 0: không cho phép chế độ nạp chương trình ở điện áp thấp, điện áp cao được đưa vào pin MCLR, pin RB3 là pin I/O bình thường
- Bit 6: BODEN (Brown-out Reset Enable bit)
Trang 25+ 1: cho phép BOR (Brown-out Reset)
+ 0: không cho phép BOR
- Bit 3: PWRTEN (Power-up Timer Enable bit)
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
ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuộc vào bit GIE và các bit điều khiển khác Bit điều khiển ngắt RB0/INT và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt ngọai vi PEIE Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2 Cờ ngắt của các ngắt nằm trong thanh ghi PIR1 và PIR2
Trang 26Trong 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 để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE cũng được set để cho phép các ngắt hoạt độ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
Có 2 loại ngắt:
- Ngắt INT
Ngắ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 ngắ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 vi điều khiển từ chế độ sleep nếu bit cho phép ngắt được set trước khi lệnh SLEEP được thực thi
- 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>)
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 PORT A, PORT B, PORTC, PORT D, PORT E 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 TRIS A 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 TRIS A 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à TRIS A, đối với
Trang 27PORT B là TRIS B, đối với PORT C là TRIS C, đối với PORT D là TRIS D, đối với PORT E là TRIS E)
PORT A
PORT A 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:
- PORTA (địa chỉ 05h) : chứa giá trị các pin trong PORTA
- TRISA (địa chỉ 85h) : điều khiển xuất nhập
- CMCON (địa chỉ 9Ch) : 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
Hình 2.2 Sơ đồ chi tiết port A
PORT B
PORTB (RPB) gồm 8 pin I/O Bên cạnh đó một số chân của PORT B còn được sử dụng trong quá trình nạp chương trình cho VĐK với các chế độ nạp khác nhau PORT B còn liên quan đến ngắt ngọai vi và bộ Timer0 PORT B 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
Cá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 PORT B
- TRISB (địa chỉ 86h, 186h) : điều khiển xuất nhập
Trang 28- OPTION_REG (địa chỉ 81h, 181h) : điều khiển ngắt ngoại vi và bộ Timer0
Hình 2.3 Sơ đồ chi tiết port B
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:
- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORT C
- TRISC (địa chỉ 87h) : điều khiển xuất nhập
Hình 2.4 Sơ đồ chi tiết port C
PORT D
PORT D (RPD) gồm 8 pin I/O PORT D còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)
Trang 29Các thanh ghi liên quan đến PORT D bao gồm:
- Thanh ghi PORTD : chứa giá trị các pin trong PORT D
- Thanh ghi TRISD : điều khiển xuất nhập
Hình 2.5 Sơ đồ chi tiết port D
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:
- 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
Hình 2.6 Sơ đồ chi tiết port E
Tổ chức bộ nhớ:
Trang 30Cấ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
Bộ nhớ chương trình của VĐK 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 (page) (từ page 0 đến page 3) Như vậy, bộ nhớ chương trình có khả năng chứa được 8x1024 = 8192 lệnh (1 lệnh sau khi mã hoá sẽ có dung lượng 1 word – 14bit)
Để mã hoá đượ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ớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hoá bởi bộ đếm chương trình
Hình 2.7 Sơ đồ bộ nhớ chương trình
Trang 31cả 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:
Hình 2.8 Sơ đồ bộ nhớ dữ liệu PIC16F877A
- 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 vi điều khiển 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
Trang 32+ 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 ngắt của các khối chức năng ngọai vi
+ 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, ngắ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
- Thanh ghi mục đích chung GPR
Trang 33Cá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
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 vi điều khiển cất vào trong stack
Bộ nhớ stack trong vi điều khiển 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ẽ hoàn toàn được điều khiển bởi CPU
Timer
Timer0
Đây là một trong ba bộ đếm hoặc định thời của vi điều khiển PIC16F877A, Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần (prescaler) 8 bit Cấu trúc của Timer0 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 Timer0 sẽ xuất hiện khi Timero bị tràn Bit TMR0IE (INTCON<5>) là bit điều khiển của Timer0 TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IE=0 không cho phép Timer0 tác động Sơ đồ khối của Timer0 như sau:
Trang 34Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC (OPTION_REG<5>), khi đó giá trị thanh TMR0 sẽ tăng theo chu kỳ xung đồng hồ (tần số vào Timer0 bằng tần số oscillator) Khi giá trị thanh ghi TMR0 từ FFh trở về 00h thì ngắt Timer0 sẽ xuất hiện một cách linh động
Muốn Timer0 hoạt động ở chế độ counter ta set bit TOSC (OPTION_REG<5>), khi đó xung tác động lên bộ đếm sẽ được lấy từ chân RA4/TOCK1 Bit TOSE (OPTION_REG<4>) cho phép lựa chọn tác động vào bộ đếm Cạnh tác động sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh xuống nếu TOSE=1 Khi thanh ghi TMR0 bị tràn bit TM0IF (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 lại quá trình đếm Ngắt Timer0 không thể “đánh thức” vi điều khiển từ chế độ sleep
Bộ chia tần số (presccaler) được chia sẻ giữa Timer0 và WDT (Watchdog Timer) Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽ được hỗ trợ của prescaler và ngược lại Prescaler được điều khiển bởi thanh ghi OPTION_REG Bit PSA (OPTION_REG<3>) xác định đối tượng tác động của prescaler Các bit PS2:PS0 (OPTION_REG<2:0>) xác định tỉ số chia tần số của prescaler
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
- TMR0 (địa chỉ 01h, 101h): chứa giá trị đếm của Timer0
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18bh): cho phép ngắt hoạt động (GIE
Tương tự như Timer0, Timer1 cũng có hai chế độ hoạt động: chế độ định thời (Timer) với xung kích là xung clock của oscillator ( tần số của Timer bằng ¼ tần số của oscillator) và chế độ đếm (Counter) với xung kích là xung phản ánh các sự kiện cần đếm lấy từ bên ngoài thông qua chân RC0/T1OSO/T1CKI (cạnh tác
Trang 35động là cạnh lên) Việc lựa chọn xung tác động (tương ứng với việc lựa họn chế độ hoạt động là Timer hay Counter) được điều khiển bởi TMR1CS (T1CON<1>)
Hình 2.10 Sơ đồ khối của timer1 Ngoài ra Timer1 còn có hai chức năng reset input bên trong điều khiển bởi một trong hai khối CCP (Capture/Compare/PWM)
Khi bit T1OSCEN (T1CON<3>) được set, Timer1 sẽ lấy xung clock từ hai chân RC1/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm Timer1 sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào Khi đó PORTC sẽ bỏ qua sự tác động của hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị 0 Khi clear bit T1OSCEN Timer1 sẽ lấy xung từ oscillator hoặc từ chân RC0/T1OSO/T1CKI
Timer1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ (Asynchronous) Chế độ đếm được quyết định bởi bit điều khiển T SYNC1
(T1CON<2>)
Khi T SYNC1 = 1 xung đếm lấy từ bên ngoài sẽ không được đồng bộ với xung clock bên trong, Timer1 sẽ tiếp tục quá trình đếm khi vi điều khiển ở chế độ sleep
và ngắt do Timer1 tạo ra khi bị tràn có khả năng “đánh thức” vi điều khiển
Khi T SYNC1 =0 xung đếm vào Timer1 sẽ được đồng bộ hóa với xung clock bên trong Ở chế độ này Timer1 sẽ không hoạt động khi vi điều khiển đang ở chế độ sleep
Các thanh ghi liên quan đến Timer1 bao gồm:
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE
và PEIE)
- PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF)
- PIE1 (địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE)
Trang 36- TMR1L (dịa chỉ 0Eh): chứa 8 bit cao của bộ đếm Timer1
- T1CON (địa chỉ 10h): xác lập các thông số cho Timer1
Timer2
Timer2 là bộ định thời 8 bit và được hỗ trợ bởi hai bộ chia tần prescaler và potscaler Thanh ghi chứa giá trị đếm của Timer2 là TMR2 Bit cho phép ngắt Timer2 tác động là TMR2ON (T2CON<2>) Cờ ngắt cảu Timer2 là bit TMR2IF (PIR1<1>) Xung ngõ vào (tần số bằng ¼ tần số oscillator) được đưa qua bộ chia tần prescaler 4 bit (với các tỷ số chia tần số là 1:1, 1:4, 1:16 và được điều khiển bởi các bit T2CKPS1:T2CKPS0 (T2CON<1:0>))
Sơ đồ khối của Timer2:
Hình 2.11 Sơ đồ khối timer2 Timer2 còn được hỗ trợ bởi thanh ghi PR2 Giá trị đếm trong thanh ghi TMR2 sẽ tăng từ 00h đến giá trị chứa trong thanh ghi PR2, sau đó được reset về 00h Khi reset thanh ghi PR2 nhận được giá trị mặc định FFh
Ngoài ra ngõ ra của Timer2 còn được kết nối với khối SSP do đó Timer2 còn đóng vai trò tạo ra xung clock đồng bộ cho khối giao tiếp SSP
Các thanh ghi liên quan đến Timer2 bao gồm :
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép hoạt động toàn bộ các ngắt (GIE và PEIE)
- PIR1 (địa chỉ 0Ch) : chứa cờ ngắt Timer2 (TMR2IF)
- PIE1 (địa chỉ 8Ch) : chứa bit điều khiển Timer2 (TMR2IE)
- TMR2 (địa chỉ 11h) : chứa giá trị đếm của Timer2
- T2CON (địa chỉ 12h) : xác lập cá thông số của Timer2
- PR2 (địa chỉ 92h) : thanh ghi hỗ trợ cho Timer2
Trang 37 ADC
ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu từ tương tự
sang số PIC16F877A có 8 ngõ vào analog (RA4:RA0 và RE2:RE0) Hiệu điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thế chuẩn được xác lập trên hai chân RA2 và RA3 Kết quả chuyển đổi tín hiệu từ tương tự sang số là 10 bit số tương ứng và được lưu trong hai thanh ghi ADRESH: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 Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH : ADRESL, bit ADCON0<2> được xóa về 0 và cờ ngắt ADIF được set
Quy trình chuyển đổi tín hiệu từ tương tự sang số bao gồm các bước sau:
- 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)
+ Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON0) + Cho phép bộ chuyển đổi AD hoạt động (thanh ghi ADCON0)
- Thiết lập các cờ ngắt cho bộ AD:
+ Clear bit ADIF
+ Set bit ADIE
+ Set bit PEIE
+ Set bit GIE
- Đợi cho tới khi quá trình lấy mẫu hoàn tất
- Bắt đầu quá trình chuyển đổi (set bit GO DONE/ )
- Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
- Kiểm tra bit GO DONE/ , nếu GO DONE/ =0 thì quá trình chuyển đổi hoàn tất
- Kiểm tra cờ ngắt
- Đọc kết quả chuyển đổi và xóa cờ ngắt, set bit GO DONE/ (nếu cần tiếp tục chuyển đổi)
Trang 38- Tiếp tục thực hiện các bước 1 và 2 cho các quá trình chuyển đổi tiếp theo
Hình 2.12 Sơ đồ khối bộ chuyển đổi ADC Các thanh ghi liên quan đến bộ chuyển đổi ADC bao gồm:
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt các bit GIE, PEIE
- PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (ADIF)
- PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE)
- ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả chuyển đổi AD
- ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số của bộ chuyển đổi AD
- PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog ở PORTA
- PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các ngõ vào analog ở PORTE
Giao tiếp nối tiếp
USART
USART (Universal Synchronous Asynchronous Receiver Transmitter) là một trong hai chuẩn giao tiếp nối tiếp USART còn được gọi là giao diện giao tiếp nối tiếp SCI (Serial Communication Interface) Có thể sử dụng giao diện này cho các giao tiếp với các thiết bị ngoại vi, với các vi điều khiển khác hay với máy tính Các dạng của giao diện USART ngọai vi bao gồm:
Trang 39PIC16F877A được tích hợp sẵn tốc độ baud BRG (Baud Rate Generator) 8 bit dùng cho giao diện USART BRG thực chất là một bộ đếm có thể được sử dụng cho cả hai dạng đồng bộ và bất đồng bộ và được điều khiển bởi thanh ghi PSBRG
Ở dạng bất đồng bộ, BRG còn được điều khiển bởi bit BRGH (TXSTA<2>) Ở dạng đồng bộ tác động của bit BRGH đựơc bỏ qua Tốc độ baud do BRG tạo ra được tính theo công thức sau:
Hình 2.13 Công thức tính tốc độ baud Trong đó X là giá trị của thanh ghi RSBRG (X là số nguyên và 0 < X < 255) Các thanh ghi liên qua đến BRG bao gồm:
- TXSTA (địa chỉ 98h): chọn chế độ đồng bộ hay bất đồng bộ (bit SYNC)
và chọn mức tốc độ baud (bit BRGH)
- RCSTA (địa chỉ 18h): cho phép họat động cổng nối tiếp (bit SPEN)
- RSBRG (địa chỉ 99h): quyết định tốc độ baud
USART bất đồng bộ
Ở chế độ truyền này USART họat động theo chuẩn NRZ ( None Return to Zero), nghĩa là các bit truyền đi sẽ bao gồm 1 bit Start, 8 hoặc 9 bit dữ liệu (thông thừơng là 8 bit) và 1 bit Stop Bit LSB sẽ được truyền đi trước Các khối truyền và nhận data độc lập với nhau sẽ dùng chung tần số tương ứng với tốc độ baud cho quá trình dịch dữ liệu (tốc độ baud gấp 16 hay 64 lần tốc độ dịch dữ liệu tùy theo giá trị của bit BRGH), và để đảm bảo tính hiệu quả của dữ liệu thì hai khối truyền và nhận phải dùng chung một định dạng dữ liệu
Trang 40Bộ USART bất đồng bộ bao gồm các thành phần quan trọng sau:
- Bộ phát tốc độ baud (BRG)
- Mạch lấy mẫu
- Bộ phát bất đồng bộ
- Bộ thu bất đồng bộ
Truyền dữ liệu qua chuẩn giao tiếp USART bất đồng bộ
Thành phần quan trọng nhất của khối truyền dữ liệu là thanh ghi dịch dữ liệu TSR (Transmit Shift Register) Thanh ghi TSR sẽ lấy dữ liệu từ thanh ghi đệm dùng cho quá trình truyền dữ liệu TXREG Dữ liệu cần truyền phải được đưa trước vào thanh ghi TXREG Ngay sau khi bit Stop của dữ liệu cần truyền trước đó được truyền xong, dữ lịêu từ thanh ghi TXREG sẽ được đưa vào thanh ghi TSR, thanh ghi TXREG bị rỗng, ngắt xảy ra và cờ hiệu TXIF (PIR1<4>) được set Ngắt này được điều khiển bởi bit TXIE (PIE1<4>) Cờ hiệu TXIF vẫn được set bất chấp trạng thái của bit TXIE hay tác động của chương trình (không thể xóa TXIF bằng chương trình) mà chỉ reset về 0 khi có dữ liệu mới được đưa vào thanh ghi TXREG
Sơ đồ khối của khối truyền dữ liệu USART:
Hình 2.14 Sơ đồ khối của khối truyền dữ liệu USART Trong khi cờ hiệu TXIF đóng vai trò chỉ thị trạng thái thanh ghi TXREG thì cờ hiệu TRMT (TXSTA<1>) có nhiệm vụ thể hiện trạng thái thanh ghi TSR Khi thanh ghi TSR rỗng, bit TRMT sẽ được set Bit này chỉ đọc và không có ngắt nào được gắn với trạng thái của nó Một điểm cần chú ý nữa là thanh ghi TSR không có trong bộ nhớ dữ liệu và chỉ được điều khiển bời CPU
Khối truyền dữ liệu được cho phép hoạt động khi bit TXEN (TXSTA<5>) được set Quá trình truyền dữ liệu chỉ thực sự bắt đầu khi đã có dữ liệu trong thanh ghi TXREG và xung truyền baud được tạo ra Khi khối truyền dữ liệu được khởi