Đề tài “ĐIỀU KHIỂN XE MÔ HÌNH BẰNG ỨNG DỤNG ANDROID TRÊN ĐIỆN THOẠI” I.MỤC TIÊU ĐỀ TÀI Xây dựng được một chiếc xe điều khiển có thể chạy tới, lùi, trái, phải, truyền được các thông số nh
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT ÐIỆN TỬ TRUYỀN THÔNG
ÐIỀU KHIỂN XE MÔ HÌNH BẰNG ỨNG DỤNG ANDROID TRÊN ÐIỆN THOẠI
S K L 0 0 5 3 7 2
GVHD: NGUYỄN THANH NGHĨA SVTH : TRẦN DUY KHANG MSSV: 15341016
SVTH : NGUYỄN VĂN DƯỠNG MSSV: 15341001
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Trang 3KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
Tp HCM, ngày 10 tháng 7 năm 2017
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Trần Duy Khang MSSV: 15341016
Nguyễn Văn Dưỡng MSSV: 15341001 Chuyên ngành: Kỹ thuật Điện - Điện tử
Hệ đào tạo: Đại học chính quy(CT) Mã hệ: K15341
I TÊN ĐỀ TÀI: ĐIỀU KHIỂN XE MÔ HÌNH BẰNG ỨNG DỤNG ANDROID
TRÊN ĐIỆN THOẠI
II NHIỆM VỤ
1.Các số liệu ban đầu:
Nguồn cung cấp cho tất cả các module và linh kiện có trong phần cứng là khối
PIN có mức điện áp 11,1VDC Ngoại trừ một số linh kiện hoạt động ở mức điện áp
5VDC thì điện áp nguồn được đưa qua mạch hạ áp
Có 6 linh kiện, thiết bị sử dụng 5VDC, 2 thiết bị sử dụng theo điện áp nguồn cung
cấp 11,1VDC
- Mạch bluetooth HC-05: dòng tiêu thụ là 30mA
- Vi điều khiển PIC16F887 dòng tiêu thụ là 25mA
- Mạch L298N: dòng tiêu thụ là 70mA Tùy thuộc vào động cơ gắn vào các ngõ
ra của L298N mà dòng điện tiêu thụ của mạch này tăng lên
- Có 4 động cơ DC mỗi động cơ có dòng tiêu thụ là 140mA, nên 4 động cơ sẽ là
140mA x 4 = 560mA
- Còi báo hiệu: dòng tiêu thụ là 30mA
- Ba led làm nhiệm vụ chiếu sáng: dòng tiêu thụ là 30mA
- Cảm biến nhiệt độ, độ ẩm DHT21: dòng tiêu thụ 300uA
2.Nội dung thực hiện:
NỘI DUNG 1: Thu thập dữ liệu của cảm biến gia tốc trên điện thoại
NỘI DUNG 2: Truyền nhận dữ liệu giữa xe và điện thoại
NỘI DUNG 3: Thi công xe mô hình
NỘI DUNG 4: Thiết kế giao diện điều khiển
NỘI DUNG 5: Đánh giá kết quả thực hiện
III.NGÀY GIAO NHIỆM VỤ: 01/04/2017
IV.NGÀY HOÀN THÀNH NHIỆM VỤ: 20/07/2017
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Th.s Nguyễn Thanh Nghĩa
CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Trang 4KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP
Tp HCM, ngày 10 tháng 7 năm 2017
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên 1: Trần duy khang
Lớp: 153410B MSSV: 15341016
Họ tên sinh viên 2: Nguyễn Văn Dưỡng
Lớp: 153410A MSSV: 15341001
Tên đề tài: Điều khiển xe mô hình bằng ứng dụng android trên điện thoại
Tuần/ngày Nội dung Xác nhận của GVHD Tuần 01 01 – 07/04/2017 Nhận đề tài Tuần 02 08 – 15/04/2017 Tiến hành thống kê các thành phần để xây dựng phần cứng của xe mô hình Tuần 03 16 – 23/04/2017 Xây dựng các chương trình phần mềm cần có để lầm đề tài: android, proteus,
Tuần 04
04 – 01/05/2017
Báo cáo tiến độ thực hiện đề tài cho GVHD, đồng thời làm tiếp những công
việc lắp ráp phần cứng
Tuần 04
02 – 09/05/2017 Xây dựng phần cứng
Tuần 05+06
10 – 25/05/2017
Bắt đầu viết chương trình cho Pic 16f887, chương trình điều khiển android
Tuần 07
26 – 03/06/2017
Tiếp tục viết chương trình điều khiển và báo cáo tiến độ đã làm được cho GVHD
Tuần 08
04 – 11/06/2017
Kiểm tra phần cứng và chạy thử chương
trình điều khiển android
Tuần 09 + 10
12 – 29/ 06/2017
Kiểm tra phần cứng và test xe mô hình
Báo cáo kết quả cho GVHD
Tuần 11
01 – 08/07/2017 Hoàn thiện viết luận văn
GV HƯỚNG DẪN (Ký và ghi rõ họ và tên)
Trang 5Đề tài “Điều khiển xe mô hình bằng ứng dụng android trên điện thoại ” là đề tài
chúng em tự nghiên cứu và thực hiện dựa trên sự tham khảo các ý tưởng trên mạng và sự
hướng dẫn nhiệt tình, những đóng góp quý giá của thầy hướng dẫn Ngoài những điều
trên thì chúng em hoàn toàn không sao chép nguyên mẫu của bất cứ đề tài nào đã có
trước kia
Nhóm thực hiện đề tài Nguyễn Văn Dưỡng
Trang 6Quãng thời gian thực hiện đồ án tốt nghiệp không nhiều và có rất nhiều khó khăn, trở ngại nhưng nhờ sự cố gắng của nhóm và sự nhiệt tình của GVHD mà cho đến bây giờ mọi khâu trong đồ án đã kịp hoàn thành
Chúng tôi, những người thực hiện Đồ án tốt nghiệp chân thành cảm ơn thầy Nguyễn Thanh Nghĩa, các giáo viên của khoa Điện – điện tử, cũng như Bộ môn Điện tử công nghiệp – y sinh đã tận tình giúp đỡ, hướng dẫn nhóm
Cảm ơn các bạn trong lớp 153410 đã động viên, góp ý chân thành để nhóm chúng
em hoàn thành Đồ án tốt nghiệp này
Cảm ơn gia đình, người thân đã tạo điều kiện rất nhiều về tinh thần, vật chất để chúng em có nhiều hơn về thời gian và tinh để toàn tâm toàn ý thực hiện đề tài nhanh chóng
Nhóm thực hiện đề tài Nguyễn Văn Dưỡng Trần Duy Khang
Trang 7Trang bìa i
Nhiệm vụ đồ án ii
Lịch trình iii
Cam đoan iv
Lời cảm ơn v
Mục lục vi
Liệt kê hình vẽ viii
Liệt kê bảng vẽ xi
Tóm tắt xii
CHƯƠNG 1 TỔNG QUAN 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu 1
1.3 Nội dung nghiên cứu 2
1.4 Giới hạn 2
1.5 Bố cục 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 3
2.1 HỌ VI ĐIỀU KHIỂN PIC 3
2.2 PIC16F887 3
2.2.1 Giới thiệu 3
2.2.2 Sơ đồ cấu trúc PIC16F887 7
2.2.3 Sơ đồ chân của PIC16F887 9
2.2.4 Tổ chức bộ nhớ 10
2.2.5 Khảo sát khối PWM 11
2.2.6 Khảo sát ngắt 14
2.2.7 Khảo sát truyền dữ liệu UART 20
2.3 HỆ ĐIỀU HÀNH ANDROID 27
2.3.1 Giới thiệu hệ điều hành Android 27
2.3.2 Ưu điểm và nhược điểm 27
2.4 TỔNG QUAN VỀ BLUETOOTH 28
2.4.1 Khái niệm Bluetooth 28
2.4.2 Các chuẩn của Bluetooth 28
2.4.3 Ưu điểm và nhược điểm của Bluetooth 29
Trang 8CHƯƠNG 3 THIẾT KẾ MÔ HÌNH 30
3.1 SƠ ĐỒ KHỐI 30
3.2 PHẦN CỨNG 31
3.2.1 Khối nguồn 31
3.2.2 Mạch kit pic mini 31
3.2.3 Cảm biến DHT21 34
3.2.4 Mạch Bluetooth HC-05 34
3.2.5 Mạch công suất L298N 36
3.2.6 Động cơ DC giảm tốc 38
3.3 KẾT NỐI PHẦN CỨNG 39
CHƯƠNG 4 THI CÔNG MÔ HÌNH 40
4.1 GIỚI THIỆU 40
4.2 THI CÔNG XE MÔ HÌNH 40
4.2.1 Sơ đồ nối dây 40
4.2.2 Hình ảnh thực tế 41
4.3 LẬP TRÌNH HỆ THỐNG 44
4.3.1 Lưu đồ giải thuật 44
4.3.2 Phần mềm lập trình CCS 47
4.3.3 Phần mềm lập trình Android studio 56
4.4 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG 66
4.4.1 Viết tài liệu hướng dẫn sử dụng 66
4.4.2 Quy trình thao tác 68
CHƯƠNG 5 KẾT QUẢ THỰC NGHIỆM 69
5.1 KẾT QUẢ ĐẠT ĐƯỢC 69
5.2 NHẬN XÉT VÀ ĐÁNH GIÁ 69
5.3 HÌNH ẢNH VẬN HÀNH 70
CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 71
6.1 KẾT LUẬN 71
6.2 HƯỚNG PHÁT TRIỂN 72
TÀI LIỆU THAM KHẢO 73
PHỤ LỤC 74
Trang 9Hình Trang
Hình 2.1 Hình dạng của PIC16F887 3
Hình 2.2 Cấu hình của vi điều khiển PIC16F887 4
Hình 2.3 Cấu trúc bên trong PIC 16F887 7
Hình 2.4 Sơ đồ chân PIC 16F887 9
Hình 2.5 Dạng sóng điều chế độ rộng xung 11
Hình 2.6 Sơ đồ khối của PWM PIC16F887 12
Hình 2.7 Dạng sóng điều chế PWM 12
Hình 2.8 Thanh ghi INTCON 15
Hình 2.9 Thanh ghi PIE1 và PIR1 16
Hình 2.10 Thanh ghi PIE2 và PIR2 17
Hình 2.11 Mạch điện ngắt của PIC16F887 19
Hình 2.12 Thanh ghi TXSTA 21
Hình 2.13 Thanh ghi RCSTA 22
Hình 2.14 Thanh ghi BAUDCTL 24
Hình 2.15 Các phiên bản hệ điều hành Android 27
Hình 3.1 Sơ đồ khối của xe mô hình 30
Hình 3.2 Khối nguồn 31
Hình 3.3 Kit Pic mini 32
Hình 3.4 Sơ đồ nguyên lý Kit Pic mini 33
Hình 3.5 Cảm biến nhiệt độ và độ ẩm DHT21 34
Hình 3.6 Bluetooth HC-05 35
Hình 3.7 Sơ đồ nguyên lý Bluetooth HC-05 35
Hình 3.8 Mạch công suất L298N 36
Hình 3.9 Sơ đồ nguyên lý mạch công suất L298N 37
Hình 3.10 Động cơ DC giảm tốc 38
Hình 3.11 Sơ đồ nguyên lý 39
Hình 4.1 Sơ đồ nối dây 40
Hình 4.2 Hình ảnh thực tế xe mô hình 41
Hình 4.3 Hình ảnh mặt trên xe mô hình 42
Hình 4.4 Hình ảnh mặt dưới xe mô hình 43
Trang 10Hình 4.5 Lưu đồ giải thuật chương trình chính của PIC16F887 44
Hình 4.6 Lưu đồ giải thuật chương trình ngắt 45
Hình 4.7 Lưu đồ giải thuật của ứng dụng trên điện thoại 46
Hình 4.8 Thư mục cài đặt 48
Hình 4.9 Cửa sổ cài đặt thứ 1 48
Hình 4.10 Cửa sổ cài đặt thứ 2 49
Hình 4.11 Cửa sổ cài đặt thứ 3 49
Hình 4.12 Cửa sổ cài đặt thứ 4 50
Hình 4.13 Quay lại thư mục cài đặt 50
Hình 4.14 Cửa sổ thứ 1 51
Hình 4.15 Cửa sổ thứ 2 51
Hình 4.16 Cửa sổ thứ 3 52
Hình 4.17 Cửa sổ thứ 4 52
Hình 4.18 Cửa sổ thứ 5 53
Hình 4.19 Cửa sổ thứ 6 53
Hình 4.20 Hướng dẫn tạo project 54
Hình 4.21 Cửa sổ Android studio thứ 1 56
Hình 4.22 Cửa sổ Android studio thứ 2 57
Hình 4.23 Cửa sổ Android studio thứ 3 57
Hình 4.24 Cửa sổ Android studio thứ 4 58
Hình 4.25 Cửa sổ Android studio thứ 5 58
Hình 4.26 Cửa sổ Android studio thứ 6 59
Hình 4.27 Cửa sổ Android studio thứ 7 59
Hình 4.28 Cửa sổ giao diện thứ 1 60
Hình 4.29 Cửa sổ giao diện thứ 2 60
Hình 4.30 Cửa sổ giao diện thứ 3 61
Hình 4.31 Cửa sổ giao diện thứ 4 61
Hình 4.32 Cửa sổ giao diện thứ 5 62
Hình 4.33 Giao diện kết nối thiết bị 62
Hình 4.34 Giao diện điều khiển 63
Hình 4.35 Yêu cầu mở Bluetooth 66
Hình 4.36 Tìm thiết bị 66
Hình 4.37 Chọn thiết bị kết nối 67
Hình 4.38 Kết nối giao diện điều khiển 67
Trang 11Hình 5.1 Điều khiển nút nhấn chạy tới 70
Hình 5.2 Điều khiển nút nhấn xoay phải 70
Hình 5.3 Điều khiển cảm biến gia tốc chạy tới 71
Trang 12LIỆT KÊ BẢNG
Bảng Trang
Bảng 2.1: Thanh ghi cho phép ngắt INTCON có địa chỉ 0x0B 15
Bảng 2.2: Thanh ghi cho phép ngắt PIE1 có địa chỉ 0x8C 16
Bảng 2.3: Thanh ghi cho phép ngắt PIR1 có địa chỉ 0x0C 17
Bảng 2.4: Thanh ghi cho phép ngắt PIE2 có địa chỉ 0x8D 18
Bảng 2.5: Thanh ghi cho phép ngắt PIR2 có địa chỉ 0x0D 18
Bảng 2.6: Thanh ghi TXSTA 21
Bảng 2.7: Thanh ghi RCSTA 22
Bảng 2.8: Thanh ghi BAUDCTL 24
Trang 13Đề tài “ĐIỀU KHIỂN XE MÔ HÌNH BẰNG ỨNG DỤNG ANDROID TRÊN ĐIỆN THOẠI”
I.MỤC TIÊU ĐỀ TÀI
Xây dựng được một chiếc xe điều khiển có thể chạy tới, lùi, trái, phải, truyền được các
thông số nhiệt độ - độ ẩm, hình ảnh
Hoạt động được trong điều kiện bề mặt bằng phẳng, độ dốc nhỏ, trong khoảng cách
12~15m
II PHƯƠNG PHÁP THỰC HIỆN
Dựa trên những tài liệu có sẵn về vi xử lý
Dựa trên các tài liệu đã có nghiên cứu chế tạo robot co sẵn
Dựa trên nguồn tài liệu trên internet
Viết chương trình thực hiện giao tiếp UART
Viết chương trình điều khiển trên ứng dụng Android
III KẾT QUẢ THỰC HIỆN
- Hoàn thành được chiếc xe có khả năng di chuyển theo ý muốn người điều khiển
- Xe điều khiển có thể truyền về các thông số nhiệt độ - độ ẩm
- Xe điều khiển có thể truyền hình ảnh về điện thoại điều khiển
Trang 14TỔNG QUAN Chương 1
ĐẶT VẤN ĐỀ
1.1
Hiện nay, trong dòng chảy công nghệ ngày càng lớn mạnh, nhu cầu tạo ra các sản phẩm công nghệ tiên tiến để phục vụ cho cuộc sống, thay thế sức lao động của con người đang trở thành xu thế tất yếu Từ việc chế tạo ra các máy móc đơn giản cho đến các cỗ máy khổng lồ, giữa chúng đều có lợi ích khác nhau trong khai thác và sử dụng Điện thoại thông minh, mạng internet, wi-fi, bluetooth là những thuật ngữ đã rất quen thuộc đối với mỗi chúng ta Nhưng để khai thác được tối ưu lợi ích của chúng thì không phải ai cũng làm được Trong đề tài nghiên cứu này, nhóm chúng tôi sẽ sử dụng các công nghệ đó để hình thành nên một sản phẩm đơn giản có thể hoạt động được Đó là đề tài “Điều khiển xe mô hình bằng ứng dụng android trên điện thoại”
Dựa trên ý tưởng của các cuộc thi về Robot tại trường như: Robot tìm đường trong mê cung, Robot dò line mà nhóm đã thực hiện Đồ án tốt nghiệp trong học kì 2 năm học 2016 – 2017 với đề tài “Điều khiển xe mô hình bằng ứng dụng android trên điện thoại” Ý tưởng này có thể được sử dụng trong rất nhiều các lĩnh vực khác nhau như hoạt động cứu hộ cứu nạn, trong quân sự rà phá bom mìn Nó có thể thay thế con người để đi vào những nơi mà con người không thể tới và để giảm thiểu mức độ nguy hiểm của công việc liên quan trực tiếp đến tính mạng con người
Hiện nay trong nước cũng như thế giới có rất nhiều phiên bản cũng như chủng loại xe mô hình điều khiển bằng điện thoại hay máy tính thông qua kết nối Bluetooth hay wifi từ đơn giản đến phức tạp Nhưng vì khả năng có hạn nên nhóm thực hiện đề tài này chỉ nhằm mục đích củng cố thêm các kiến thức đã được học, ứng dụng chúng vào hoạt động thực tế và cũng nhằm tìm kiếm một công việc phù hợp với nguyện vọng sau khi tốt nghiệp
MỤC TIÊU
1.2
Xây dựng một chiếc xe mô hình hoạt động thông qua điều khiển từ xa điện thoại smartphone hệ điều hành Android và có 2 chế độ điều khiển: cảm biến gia tốc và nút nhấn Xe mô hình có thể truyền hình ảnh về điện thoại điều khiển để giám sát thông qua một điện thoại gắng trên xe làm nhiệm vụ ghi nhận hình ảnh Ngoài ra trên xe còn
Trang 15có cảm biến nhiệt độ và độ ẩm để thu thập thông tin nhiệt độ và độ ẩm của môi trường sau đó truyền thông tin về điện thoại điều khiển
NỘI DUNG NGHIÊN CỨU
1.3
NỘI DUNG 1: Thu thập dữ liệu của cảm biến gia tốc trên điện thoại
NỘI DUNG 2: Truyền nhận dữ liệu giữa xe và điện thoại
NỘI DUNG 3: Thi công xe mô hình
NỘI DUNG 4: Thiết kế giao diện điều khiển trên Android Studio
NỘI DUNG 5: Đánh giá kết quả thực hiện
GIỚI HẠN
1.4
Giao diện được viết trên phần mềm Android Studio, nên chỉ hỗ trợ cho người dùng điện thoại chạy hệ điều hành Android
Xe mô hình chỉ hoạt động được trong bán kính tối đa 15m
Xe mô hình chỉ hoạt động tốt nhất trong điều kiện địa hình bằng phẳng
Xe mô hình được điều khiển bằng sóng Bluetooth và thu thập hình ảnh bằng sóng Wifi
Chương 2: Cơ Sở Lý Thuyết
Chương này trình bày các cơ sở lý thuyết cần thiết để thực hiện đề tài
Chương 3: Thiết Kế Mô Hình
Chương này trình bày phần cứng xe mô hình
Chương 4: Thi Công Mô Hình
Chương này sẽ thiết kế giao diện điều khiển, giới thiệu chương trình xử lý
Chương 5: Kết Quả Thực Nghiệm
Chương này sẽ trình bày những kết quả đã làm được và đánh giá qua thực tế
Chương 6: Kết Luận và Hướng Phát Triển
Chương này trình bày những thiếu sót và hướng phát triển
Trang 16CƠ SỞ LÝ THUYẾT Chương 2
HỌ VI ĐIỀU KHIỂN PIC [1]
2.1
PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology PIC bắt nguồn là chữ viết tắt của "Programmable Intelligent Computer"
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)
Ngoài ra PIC còn có rất nhiều loại như: 8 bit, 16 bit, 32 bit Bình thường PIC 8 bit và 16 bit phù hợp với một số yêu cầu điều khiển trong công nghiệp như hệ thống điện của xe hơi, hệ thống điều hòa, hệ thống điều khiển các dây chuyền sản suất,…Còn về PIC 32 bit thường sử dụng cho các máy tính vì khối lượng dữ liệu rất lớn
PIC 16F887 [1]
2.2
2.2.1 Giới Thiệu
Hình 2.1 Hình dạng của PIC16F887
Trang 17Hình 2.2 Cấu hình của vi điều khiển PIC16F887
- Cấu trúc đặc biệt của vi điều khiển:
Bộ dao động nội chính xác
Có chế độ ngủ tiết kiệm công suất
Điện áp hoạt động rộng từ 2V đến 5,5V
Có mạch Reset khi có điện
Tầm nhiệt độ làm việc theo chuẩn công nghiệp
Có bộ định thời chờ ổn định điện áp khi mới có điện và có bộ định thời chờ dao động hoạt động ổn định mới cấp điện
Có bộ định thời giám sát dùng dao động trong chip cho phép bằng phần mềm
Đa hợp ngõ vào reset với ngõ vào có điện trở kéo lên
Cho phép đọc/ghi bộ nhớ chương trình khi mạch hoạt động
Có tích hợp mạch gỡ rối
Có bộ nhớ Flash và bộ nhớ Eeprom
Có bảo vệ Code đã lập trình
- Cấu trúc nguồn công suất thấp:
Chế độ chờ: sử dụng nguồn 2v, dòng tiêu tán 50nA
Dòng hoạt động: 11uA ở tần số 32kHz và 220uA ở tần số 4MHz
Bộ định thời Watchdog Timer khi hoạt động tiêu thụ 1,4uA, điện áp 2V
Trang 18- Đặc điểm kiến trúc RISC:
Có 3 kiểu định địa chỉ trực tiếp, gián tiếp và tức thời
- Cấu trúc ngoại vi:
Có 35 chân I/O và có thể nhận/cấp dòng khoảng 25mA
Có Module so sánh điện áp tương tự
o 2 bộ so sánh điện áp tương tự
o Có module nguồn điện áp tham chiếu có thể lập trình
o Có nguồn điện áp tham chiếu cố định có giá trị bằng 0,6V
o Có các ngõ vào và các ngõ ra của bộ so sánh điện áp
o Có chế độ chốt SR
Có 14 bộ chuyển đổi tương tự sang số với độ phân giải 10 bit
Timer0: 8 bit hoạt động định thời/ đếm xung ngoại có bộ chia trước có thể lập trình
o Có bộ dao động công suất thấp tần số 32KHz
Timer2: 8 bit hoạt động định thời với thanh ghi chu kỳ, có bộ chia trước
và chia sau
Có module capture, compare và điều chế xung PWM+ nâng cao
o Bộ capture 16 bit có thể đếm được số xung với chu kỳ cao nhất là 12,5ns
o Bộ điều chế xung PWM với số kênh ngõ ra là 1,2 hoặc 4, có thể lập
Trang 19trình với tần số lớn nhất là 20KHz
o Có ngõ ra PWM điều khiển lái
Có module capture, compare và điều chế xung PWM
o Bộ capture 16 bit có thể đếm được số xung với chu kỳ cao nhất là 12,5ns
o Bộ so sánh16 bit có thể so sánh xung đếm với chu kỳ lớn nhất là 200ns
o Bộ điều chế xung PWM có thể lập trình với tần số lớn nhất là
20KHz
Có thể lập trình trên bo ISP thông qua 2 chân
Có các chuẩn giao tiếp: I2C, SPI, USART
Trang 202.2.2 Sơ Đồ Cấu Trúc PIC16F887
Hình 2.3 Cấu trúc bên trong PIC 16F887
Các khối bên trong vi điều khiển bao gồm:
- Khối ghi định cấu hình cho vi điều khiển
Trang 21- Khối bộ nhớ chương trình có nhiều dung lượng cho 5 loại khác nhau
- Khối bộ nhớ ngăn xếp 8 cấp (8 level stack)
- Khối bộ nhớ Ram cùng với thanh ghi FSR để tính toán đìa chỉ cho 2 cách truy xuất gián tiếp và trực tiếp
Có thanh ghi lệnh dùng để lưu mã lệnh nhận về từ bộ nhớ chương trình
- Thanh ghi bộ đếm chương trình (PC) dùng để quản lý địa chỉ của bộ nhớ
chương trình
- Khối ALU cùng với thanh ghi working hay thanh ghi A để xử lý dữ liệu
- Khối các bộ định thời khi cấp điện PUT, có bộ định thời chờ dao động ổn định, có mạch reset khi có điện, có bộ định thời giám sát watchdog, có
mạch reset khi phát hiện sụt giảm nguồn
- Có khối giải mã lệnh và điều khiển (Instruction Decode and Control)
- Khối giải mã dao động nội (Internal Oscillator Block)
- Khối dao động kết nối với 2 ngõ vào OSC1 và OSC2 để tạo dao động
- Khối bộ dao động nội cho timer1 có tần số 32kHz kết nối với 2 ngõ vào T1OSI
và T1OSO
- Có khối CCP2 và ECCP
- Có khối mạch gỡ rối (In-Circuit Debugger IDC)
- Khối timer0 với ngõ xung đếm từ bên ngoài là T0CKI
- Khối truyền dữ liệu đồng bộ/bất đồng bộ nâng cao
- Khối truyền dữ liệu đồng bộ MSSP cho SPI và I2C
- Khối bộ nhớ Eeprom 256 byte và thanh ghi quản lý địa chỉ EEADDR và thanh ghi EEDATA
- Khối chuyển đổi tín hiệu tươn tự sang số ADC
- Khối 2 bộ so sánh với nhiều ngõ vào ra và điện áp tham chiếu
- Khối các Port A,B,C,D và E
Trang 222.2.3 Sơ Đồ Chân của PIC16F887
Hình 2.4 Sơ đồ chân PIC 16F887
Port A: có 8 bit (tương ứng với 6 chân RA0 – RA7) các chân của cổng A có tích hợp một số chức năng ngoại vi, nếu một thiết bị ngoại vi được enable thì cổng này
sẽ không hoạt động như một cổng vào ra Bình thường Port A sẽ là một cổng vào
ra 2 chiều Thanh ghi xác định chiều tương ứng của các chân Port A là thanh ghi TrisA bằng 1 sẽ xác định các chân ở Port A là đầu vào và ngược lại sẽ là đầu ra Port B: rộng 8 bit (tương ứng với chân RB0 – RB7) là một cổng vào/ra 2 chiều Thanh ghi quy định chiều của Port B là thanh ghi TrisB Thiết lập các thanh ghi TrisB bằng 1 sẽ làm cho cổng B là cổng vào và ngược lại sẽ là cổng ra
Port C: rộng 8 bit (tương ứng với chân RC0 – RC7) là một cổng vào/ra 2 chiều Thanh ghi quy định chiều của Port C là thanh ghi TrisC Thiết lập các thanh ghi TrisB bằng 1 sẽ làm cho cổng C là cổng vào và ngược lại sẽ là cổng ra Ngoài ra, chân RC4,RC4 dùng để kết nối ,giao tiếp với thiết bị ngoại vi ; RC1, RC2 là ngõ
ra PWM
Trang 23Port D : rộng 8 bit (tương ứng với chân RD0 – RD7) là một cổng vào/ra 2 chiều Thanh ghi quy định chiều của Port D là thanh ghi TrisD Thiết lập các thanh ghi TrisD bằng 1 sẽ làm cho cổng B là cổng vào và ngược lại sẽ là cổng ra
Port E : rộng 3 bit (tương ứng với chân RE0 – RE2) là một cổng vào/ra 2 chiều Port E có thể là đầu vào điều khiển I/O khi bit PSPSTATUS (TrisE.4) được xác lập
2.2.4 Tổ Chức Bộ Nhớ
PIC16F887 có ba loại bộ nhớ gồm: ROM, RAM và EEPROM Chúng được chia
ra và có chức năng đặc biệt, cấu tạo khác nhau
Bộ nhớ EEPROM
Tương tự như bộ nhớ chương trình, nội dung chứa trong EEPROM là vĩnh viễn, ngay cả khi bị cúp điện Tuy nhiên, không giống như ROM, các nội dung của EEPROM có thể được thay đổi trong khi vi điều khiển hoạt động Đây là lý do tại sao
bộ nhớ này (256 địa chỉ nhớ) là hoàn hảo cho việc lưu lại một số kết quả tạo ra và sử dụng trong suốt quá trình hoạt động
Bộ nhớ RAM
Đây là phần thứ ba và phần phức tạp nhất của bộ nhớ vi điều khiển RAM được chia làm 2 phần: thanh ghi đa dụng ( general ) cho nhiều mục đích sử dụng và các thanh ghi đặc biệt (SFR)
2.2.5 Khảo Sát Khối PWM
Nguyên lý điều chế độ rộng xung PWM:
Nguyên lý điều chế độ rộng xung là mạch tạo ra xung vuông có chu kỳ là hằng số nhưng hệ số công tác (còn gọi là hệ số chu kỳ - duty cycle) có thể thay đổi được Sự thay đổi của hệ số chu kỳ làm thay đổi điện áp trung bình hoặc dòng điện trung bình
Trang 24Sự thay đổi điện áp hoặc dòng trung bình dùng để điều khiển các tải như động cơ DC thì làm thay đổi tốc độ động cơ, điều khiển bóng đèn thì làm thay đổi cường độ sáng của bóng đèn, …
Các đạng sóng điều chế độ rộng xung với các hệ số chu kỳ khác nhau như hình sau:
Ở cấp tốc độ 2 thì tín hiệu điều khiển ở mức 1 chỉ có 2ms, ở mức 0 là 8ms Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*2)/10 = 2mA Led sáng hơn với dòng là 2mA
Ở cấp tốc độ 5 thì tín hiệu điều khiển ở mức 1 chỉ có 5ms, ở mức 0 là 5ms Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*5)/10 = 5mA
Ở cấp tốc độ 10 thì tín hiệu điều khiển ở mức 1 là 10ms, ở mức 0 là 0ms Giả sử dòng tạo ra là 10 mA khi ở mức 1, khi đó dòng trung bình là (10*10)/10 = 10mA Led sáng cực đại với dòng là 10mA
Khi thay đổi hệ số chu kỳ thì chỉ thay đổi thời gian xung ở mức 1, còn chu kỳ thì
Trang 25không đổi
Cấu trúc khối điều chế độ rộng xung:
Hình 2.6 Sơ đồ khối của PWM PIC16F887
Khối PWM gồm có 2 mạch so sánh: mạch so sánh 2 dữ liệu 8 bit nằm bên dưới và mạch so sánh 2 dữ liệu 10 bit nằm bên trên
Mạch so sánh 8 bit sẽ so sánh giá trị đếm của Timer2 với giá trị của thanh ghi PR2 (Period Register), giá trị trong Timer2 tăng từ giá trị đặt trước cho đến khi bằng giá trị của PR2 thì mạch so sánh sẽ kích flip flop RS làm ngõ ra RC2/CCP1 lên mức
1 Đồng thời nạp giá trị 10 bit từ thanh ghi CCPR1L sang thanh ghi CCPR1H
Timer2 bị reset và bắt đầu đếm lại cho đến khi giá trị của Timer2 bằng giá trị của CCPR2H thì mạch so sánh sẽ reset flip flop RS làm ngõ ra RC2/CCP1 về mức 0
Quá trình này lặp lại liên tục để tạo ra dạng sóng PWM liên tục
Dạng sóng điều chế PWM:
Trang 26Hình 2.7 Dạng sóng điều chế PWM
‒ Chu kỳ không thay đổi, muốn thay đổi thời gian xung ở mức 1 thì ta thay đổi hệ số chu kỳ (Duty Cycle) Khi hệ số chu kỳ thay đổi thì điện áp hay dòng trung bình thay đổi
‒ Hệ số chu kỳ càng lớn thì dòng trung bình càng lớn, nếu điều khiển động cơ
sẽ làm thay đổi tốc độ
Tính chu kỳ xung PWM:
‒ Chu kỳ PWM của PIC16F887 được tính theo công thức:
PERIOD PWM [PR2 1]*4*T OSC * PV TMR2
Trong đó: TOSC là chu kỳ của tụ thạch anh tạo dao động
PVTMR2 (Prescale Value) giá trị chia trước của timer 2
‒ Khi giá trị của timer 2 (TMR2) bằng giá trị của thanh ghi PR2 thì 3 sự kiện theo sau sẽ xảy ra:
Thanh ghi TMR2 bị xóa
Tín hiệu ngõ ra CCPx lên mức 1, ngoại trừ hệ số chu kỳ bằng 0% thì CCPx vẫn ở mức 0
Hệ số chu kỳ PWM được chuyển từ thanh ghi CCPRxL sang thanh ghi CCPRxH
Tính hệ số cho kỳ xung PWM:
‒ Hệ số chu kỳ được thiết lập bởi giá trị lưu trong thanh ghi 10 bit gồm thanh ghi 8 bit CCPRxL và 2 bit còn lại là bit thứ 4 và thứ 5 lưu ở trong thanh ghi CCPxCON – kí hiệu là CCPxCON<5:4>
‒ Giá trị của hệ số chu kỳ là 10 bit nên có thể thay đổi từ 0 đến 1023 tạo ra 1024 cấp giá trị điều khiển
‒ Giá trị 10 bit thì 8 bit có trọng số lớn lưu trong thanh ghi CCPRxL và
2 bit còn lại có trọng số thấp thì ở CCPxCON<5:4>
‒ Hệ số chu kỳ của PIC16F887 được tính theo công thức:
DUTY _ CYCLE PWM (CC P RxL : CCPxCON)*T OSC * PV TMR2
Chú ý: ký hiệu <5:4> cho biết vị trí bit thứ 5 và thứ 4
Trang 272.2.6 Khảo Sát Ngắt
Ngắt sử dụng trong vi điều khiển hoạt động như sau: vi điều khiển luôn thực hiện một chương trình thường gọi là chương trình chính, khi có tác động từ bên ngoài bằng phần cứng hay tác động bên trong làm cho vi điều khiển ngừng thực hiện chương trình chính để thực hiện một chương trình khác (còn được gọi là chương trình phục vụ ngắt ISR) và sau khi thực hiện xong vi điều khiển trở lại thực hiện tiếp chương trình chính Quá trình làm gián đoạn vi điều khiển thực hiện chương trình chính xem như là ngắt Ngắt đóng vai trò quan trọng trong lập trình điều khiển, vi điều khiển sử dụng ngắt để đáp ứng nhiều sự kiện quan trọng khác mà vẫn đảm bảo thực hiện được chương trình chính Và vi điều khiển PIC 16F887 có nhiều nguồn ngắt như:
Ngắt ngoài RB0/INT
Ngắt của timer T0 khi đếm tràn
Ngắt của timer T1 khi đếm tràn
Ngắt của timer T2 khi giá trị đếm bằng giá trị của thanh ghi PR2
Ngắt portB thay đổi
Ngắt của 2 bộ so sánh điện áp tương tự
Ngắt của bộ chuyển đổi ADC
Ngắt khi ghi dữ liệu vào Eeprom
Ngắt khi bộ giám sát phát hiện nguồn xung clock bị hỏng
Ngắt của khối CCP tăng cường
Ngắt truyền và nhận dữ liệu EUSART
Ngắt đánh thức CPU với nguồn công suất cực thấp
Ngắt của khối truyền dữ liệu đồng bộ MSSP
Các thanh ghi ngắt của PIC16F887:
Trong vi điều khiển PIC16F887 có 5 thanh ghi phục vụ cho ngắt là INTCON, PIE1, PIE2, PIR1, PIR2 Tổ chức của từng thanh ghi như sau:
Trang 28- Thanh ghi INTCON (Interrupt CONTROL)
Hình 2.8 Thanh ghi INTCON
Bảng 2.1 Thanh ghi cho phép ngắt INTCON có địa chỉ 0x0B
Bit Ký hiệu Chức năng (cho phép = 1; cấm = 0)
INTCON.7 GIE Bit cho phép/cấm toàn bộ các nguồn ngắt INTCON.6 PEIE Bit cho phép ngắt ngoại vi
INTCON.5 T0IE Bit cho phép ngắt timer T0
INTCON.4 INTE Bit cho phép ngắt ngoài
INTCON.3 RBIE Bit cho phép ngắt portB thay đổi
INTCON.2 T0IF Cờ báo ngắt của timer T0
INTCON.1 INTF Cờ báo ngắt của ngắt ngoài
INTCON.0 RBIF Cờ báo ngắt portB thay đổi
Trong thanh ghi trên thì bit GIE là bit cho phép/cấm ngắt toàn bộ các nguồn ngắt, bit PEIE cho phép/cấm các nguồn ngắt ngoại vi Các bit còn lại là bit cho phép/cấm ngắt và cờ báo ngắt của ngắt cứng INT, ngắt portB thay đổi và ngắt của timer0
Ví dụ: Muốn cho phép timer 0 ngắt thì lập trình cho các bit như sau: GIE = 1, T0IE = 1
- Thanh ghi PIE1 (Peripheral Interrupt Enable) và PIR1 (Peripheral
Trang 29Hình 2.9 Thanh ghi PIE1 và PIR1
Bảng 2.2 Thanh ghi cho phép ngắt PIE1 có địa chỉ 0x8C
Bit Ký hiệu Chức năng (cho phép = 1, cấm = 0)
PIE1.7 - Bit chưa có chức năng
PIE1.6 ADIE Bit cho phép ADC ngắt
PIE1.5 RCIE
Bit cho phép ngắt nhận dữ liệu
PIE1.4 TXIE
Bit cho phép ngắt phát dữ liệu
PIE1.3 SSPIE Bit cho phép ngắt truyền dữ liệu đồng bộ PIE1.2 CCP1IE Bit cho phép ngắt khối CCP1
PIE1.1 TMR2IE Bit cho phép ngắt của timer T2
PIE1.0 TMR1IE Bit cho phép ngắt của timer T1
Trang 30Bảng 2.3 Thanh ghi cho phép ngắt PIR1 có địa chỉ 0x0C
Bit Ký hiệu Chức năng (ngắt xảy ra = 1, chưa xảy ra = 0)
PIR1.7 - Bit chưa có chức năng
PIR1.6 ADIF Cờ báo ngắt của ADC
PIR1.5 RCIF Cờ báo ngắt nhận dữ liệu
PIR1.4 TXIF Cờ báo ngắt nhận dữ liệu
PIR1.3 SSPIF Cờ báo ngắt truyền dữ liệu đồng bộ
PIR1.2 CCP1IF Cờ báo ngắt khối CCP1
PIR1.1 TMR2IF Cờ báo ngắt của timer T2
PIR1.0 TMR1IF Cờ báo ngắt của timer T1
Hai thanh ghi chứa các bit cho phép ngắt và cờ báo ngắt tương ứng của 7
Trang 31Bảng 2.4 Thanh ghi cho phép ngắt PIE2 có địa chỉ 0x8D
Bit Ký hiệu Chức năng (cho phép = 1, cấm = 0)
PIE2.7 OSFIE Bit cho phép ngắt của bộ dao động hỏng
PIE2.6 C2IE Bit cho phép ngắt của khối so sánh 2
PIE2.5 C1IE Bit cho phép ngắt của khối so sánh 1
PIE2.4 EEIE Bit cho phép ngắt của bộ nhớ eeprom
PIE2.3 BCLIE Bit cho phép ngắt xung đột truyền dữ liệu I2C
PIE2.2 ULWUIE
Bit cho phép ngắt của bộ đánh thức CPU với công suất cực thấp
PIE2.1 - Bit chưa có chức năng
PIE2.0 CCP2IE Bit cho phép ngắt của CCP2
Bảng 2.5 Thanh ghi cho phép ngắt PIR2 có địa chỉ 0x0D
Bit Ký hiệu Chức năng (cho phép = 1, cấm = 0)
PIR2.7 OSFIF Cờ báo ngắt của bộ dao động hỏng
PIR2.6 C2IF Cờ báo ngắt của khối so sánh 2
PIR2.5 C1IF Cờ báo ngắt của khối so sánh 1
PIR2.4 EEIF Cờ báo ngắt của bộ nhớ eeprom
Trang 32PIR2.3 BCLIF Cờ báo ngắt xung đột truyền dữ liệu I2C
PIR2.2 ULWUIF
Cờ báo ngắt của bộ đánh thức CPU với công với công suất thấp
PIR2.1 - Bit chưa có chức năng
PIR2.0 CCP2IF Cờ báo ngắt của CCP2
- Cấu trúc mạch điện ngắt của PIC16F877:
Hình 2.11 Mạch điện ngắt của PIC16F887 Trong mạch điện chúng ta có thể nhìn thấy để CPU thực hiện ngắt của timer 0 thì phải hội đủ các điều kiện sau: bit cho phép ngắt T0IE = 1, timer0 đếm và tràn làm cờ báo ngắt T0IF = 1 và bit cho phép ngắt toàn cục GIE = 1
Trang 33Khi một ngắt được đáp ứng thì bit GIE bị xóa để không cho phép bất kì ngắt nào khác xảy ra nữa, địa chỉ trở về được cất vào trong ngăn xếp và thanh ghi PC được nạp địa chỉ 0004h.Do chỉ có 1 vector địa chỉ ngắt là 0004H thì làm sao để biết ngắt nào đang thực hiện
Nếu trong chương trình chỉ sử dụng có 1 ngắt thì khi ngắt xảy ra thì chương trình con phục ngắt đó sẽ được thực hiện
Nếu trong chương trình sử dụng nhiều nguồn ngắt thì chương trình ngắt viết tại địa chỉ 0004H sẽ kiểm tra xem cờ báo ngắt nào lên 1, nếu bằng 0 thì kiểm tra tiếp cờ khác, nếu bằng 1 thì thực hiện chương trình ngắt tương ứng
Quá trình kiểm tra cờ báo ngắt nào bằng 1 và thực hiện chương trình phục vụ ngắt tương ứng trước cũng xác định luôn thứ tự ưu tiên ngắt
2.2.7 Khảo Sát Truyền Dữ Liệu UART
Truyền dữ liệu EUSART
Vi điều khiển PIC16F887 có khối truyền dữ liệu đồng bộ, bất đồng bộ đa năng cải tiến Khối truyền dữ liệu nối tiếp đa năng bao gồm bộ phát xung clock tạo tốc độ truyền, các thanh ghi dịch và bộ đệm dữ liệu rất cần thiết để thực hiện truyền hoặc nhận dữ liệu nối tiếp một cách độc lập Khối EUSART cũng có thể xem là giao tiếp truyền dữ liệu nối tiếp SCI (Serial Communication Interface), có thể định cấu hình cho truyền dữ liệu bất đồng bộ song công hoặc đồng bộ bán song công
Truyền dữ liệu đồng bộ bán song công được sử dụng để truyền dữ liệu giữa các
hệ thống ngoại vi như các bộ ADC, DAC, bộ nhớ nối tiếp Eeprom hoặc các bộ vi điều khiển Các thiết bị này thường không có nguồn xung clock bên trong để tạo tốc độ baud nên cần phải sử dụng nguồn xung clock từ bên ngoài
Khối truyền dữ liệu của PIC16F887 có khả năng:
Hoạt động truyền và dữ liệu song công bất đồng bộ
Bộ đệm nhận chứa được 2 kí tự
Bộ đệm phát chứa 1 kí tự
Có thể lập trình chiều dài dữ liệu 8 bit hoặc 9 bit
Có khối phát hiện địa chỉ 9 bit
Có khối phát hiện bộ đệm nhận bị tràn
Trang 34 Có khối phát hiện lỗi khung của kí tự nhận về
Có thể hoạt động chế độ chủ ở kiểu truyền dữ liệu đồng bộ bán song công
Có thể hoạt động chế độ tớ ở kiểu truyền dữ liệu đồng bộ bán song công
Có thể lập trình chọn cực cho xung clock ở chế độ truyền đồng bộ Khối EUSART được sử dụng cho các cấu trúc mở rộng theo sau, thích hợp cho
hệ thống bus mạng kết nối cục bộ (LIN: Local Interconnect Network):
Tự động phát hiện và thiết lập tốc độ baud
Có khối đánh thức PIC khỏi chế độ ngủ
Phát kí tự ngừng 13 bit
Các thanh ghi phục vụ cho khối EUSART
Hoạt động của khối ESUART được điều khiển thông qua 3 thanh ghi như sau:
Thanh ghi điều khiển và trạng thái của khối phát (TXSTA – transmit Status and Control)
Hình 2.12 Thanh ghi TXSTA Bảng 2.6: Thanh ghi TXSTA
Bit Ký Hiệu Chức năng (cho phép = 1; cấm = 0)
TXSTA.7 CSRS Clock Source Select bit:
Ở chế độ bất đồng bộ thì không có tác dụng
Ở chế độ bất đồng bộ thì có chức năng:
CSRS = 1: Hoạt động ở chế độ chủ - phát xung clock
CSRS = 0: Hoạt động ở chế độ tớ - nhận xung clock
TXSTA.6 TX9 9 bit Transmit Enable bit
TX9 = 1: thì truyền dữ liệu 9 bit
TX9 = 0: thì truyền dữ liệu 8 bit
TXSTA.5 TXEN Transmit Enable bit:
TXEN = 1: cho phép phát dữ liệu
TXEN = 0: cấm phát dữ liệu
TXSTA.4 SYNC EUSART mode select bit:
SYNC = 1: Cho phép truyền đồng bộ
SYNC = 0: Cho phép truyền bất đồng bộ
Trang 35TXSTA.3 SENDB Send Break Character bit
TXSTA.1 TRMT Bit xác định trạng thái của thanh ghi TSR
TRMT xuống mức 0 khi đang truyền dữ liệu
TRMT lên 1 khi đã truyền xong
TXSTA.0 TX9D Bit lưu dữ liệu phát thứ 9
Thiết lập truyền dữ liệu bất đồng bộ
Thiết lập giá trị cho cặp thanh ghi SPBRGH và SPBRG và BRGH và bit BRG16 để có tốc độ baud mong muốn
Cho phép truyền dữ liệu bất đồng bộ bằng cách xóa bit SYNC làm bit SPEN lên 1
Nếu truyền dữ liệu 9 bit thì thiết lập bit cho phép TX9 lên 1
Làm bit TXEN lên 1 để cho phép truyền dữ liệu
Nếu muốn sử dụng ngắt thì cho bit TXIE lên 1, cho phép ngắt ngoại vi
và cho phép ngắt toàn cục
Nếu truyền dữ liệu 9 bit thì phải gán giá trị bit thứ 9 cho bit TX9D
Tiến hành nạp giá trị cần truyền vào thanh ghi TXREG, khi đó quá trình truyền dữ liệu sẽ bắt đầu
Thanh ghi điều khiển và trạng thái của khối nhận (RCSTA – transmit Status and Control)
Hình 2.13 Thanh ghi RCSTA Bảng 2.7: Thanh ghi RCSTA
Bit Kí hiệu Chức năng (cho phép = 1; cấm = 0)
Trang 36RCSTA.7 SPEN Serial Port Enable bit:
SPEN = 1: cho phép port nối tiếp (cấu hình các chân RX/TD và TX/CK là các chân cho truyền dữ liệu nối tiếp) SPEN = 0: thì cấm
RCSTA.6 RX9 9 bit Receive Enable bit
RX9 = 1: thì cho phép nhận dữ liệu 9 bit
RX9 = 0: thì cho phép nhận dữ liệu 8 bit
RCSTA.5 SREN Single Receive Enable bit:
Ở chế độ không đồng bộ: không có tác dụng
Ở chế độ đồng bộ - chủ SREN = 1: cho phép nhận đơn
SREN = 0: cấm nhận đơn Bit SREN bị xóa sau khi quá trình nhận hoàn tất
Ở chế độ không đồng bộ 8 bit: không có tác dụng
RCSTA.2 FERR Framing Error bit:
FERR =1: xảy ra lỗi khung dữ liệu
FERR =0: không có lỗi khung xảy ra
RCSTA.1 OERR Overrun Error bit
OERR = 1: xảy ra lỗi tràn
OERR = 0: không xảy ra lỗi tràn
RCSTA.0 RX9D Ninth bit of Receive Data
Bit này dùng để lưu dữ liệu nhận về của bit thứ 9 hoặc có thể là bit kiểm tra chẵn lẻ
Khối nhận dữ liệu EUASRT
Dữ liệu nhận vào ở chân RX/DT và điều khiển khối khôi phục dữ liệu Khối khôi phục dữ liệu là khối dịch tốc độ cao hoạt động gấp 16 lần tốc độ baud, trong khi
đó thanh ghi nhận dữ liệu (RSR: Receive Shift Register) hoạt động dịch dữ liệu cùng với tốc độ baud
Khi tất cả 8 bit hoặc 9 bit dữ liệu được dịch vào thì ngay lập tức sẽ được truyền
Trang 37cho bộ đệm chứa được 2 kí tự dạng FIFO, nếu có thêm một ký tự nữa mà phần mềm chưa đọc 2 byte đã nhận thì sẽ phát sinh lỗi tràn Phần mềm không thể truy xuất bộ đệm FIFO và thanh ghi RSR mà chỉ được phép truy xuất thanh ghi RCREG
Thiết lập giá trị cho cặp thanh ghi SPBRGH và SPBRG và BRGH và bit BRG16 để có tốc độ baud mong muốn
Cho phép truyền dữ liệu bất đồng bộ bằng cách xóa bit SYNC làm bit SPEN lên 1
Nếu nhận dữ liệu 9 bit thì thiết lập bit cho phép RX9 lên 1
Làm bit CREN lên 1 để cho phép nhận dữ liệu
Nếu muốn sử dụng ngắt thì cho bit RCIE lên 1, cho phép ngắt ngoại vi
và cho phép ngắt toàn cục
Cờ báo ngắt RCIF sẽ lên 1 khi một kí tự chuyển từ RSR sang bộ đệm, ngắt sẽ phát sinh nếu được phép
Đọc thanh ghi trạng thái nhận RCSTA để kiểm tra các cờ báo lỗi
Nhận dữ liệu 8 bit từ thanh ghi RCREG
Nếu có lỗi tràn xảy ra thì xóa bit cho phép nhận CREN
Thanh ghi điều khiển tốc độ baud (BAUDCTL – Baud Rate Control)
Hình 2.14 Thanh ghi BAUDCTL
Bảng 2.8: Thanh ghi BAUDCTL
Bit Kí hiệu Chức năng (cho phép = 1; cấm = 0)
BAUDCTL.7 ABDOVF Auto – Baud detect Overflow bit: bit tự động phát hiện
Trang 38BAUDCTL.6 RCIDL Receive Idle Flag bit: bit cờ ngừng nhận
SCKP = 1: phát dữ liệu đảo đến chân TX/CK
SCKP = 0: phát dữ liệu không đảo đến chân TX/CK
BAUDCTL.3 BRG16 16 bit Baud Rate generator bit
BRG16 = 1: sử dụng bộ tạo tốc độ baud 16 bit
BRG16 = 0: sử dụng bộ tạo tốc độ baud 8 bit
BAUDCTL.1 WUE Wake – up Enable bit: bit cho phép đánh thức CPU
Ở chế độ không đồng bộ:
WUE = 1: cho phép bộ nhận chờ cho đến khi có xung cạnh xuống Sẽ không có kí tự nào được nhận nếu bit RCIF thiết lập ở mức 1 WUE sẽ tự động xóa sau khi bit RCIF lên 1
WUE = 0: Bộ nhận hoạt động bình thường
Bộ phát tốc độ baud (Baud Rate Generator) là timer 8 bit hoặc 16 bit để tạo tốc độ cho hoạt động truyền dữ liệu ESUART đồng bộ và bất đồng
Trang 39 Trong chế độ truyền đồng bộ thì bộ nhân chu kỳ tốc độ baud được xác định bởi cả 2 bit BRGH trong thanh ghi TXSTA và bit BRG16 trong thanh ghi BAUDCTL
Trong chế độ truyền bất đồng bộ thì bộ nhân chu kỳ tốc độ baud chỉ được xác định bởi bit BRGH
Trang 40HỆ ĐIỀU HÀNH ANDROID [2]
2.3
2.3.1 Giới Thiệu Hệ Điều Hành Android
Android là một hệ điều hành có mã nguồn mở dựa trên nền tảng Linux được thiết kết dành cho các thiết bị di động có màn hình cảm ứng như điện thoại di động và máy tính bảng Hiện tại, Android là hệ điều hành phổ biến nhất hiện nay với thị phần trung bình hơn 50% trên toàn thế giới
Ban đầu, tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto, California vào tháng 10 năm 2003 bởi Andy Rubin với sự hỗ trợ tài chính từ Google Vào năm 2005 Google đã mua lại và sau đó tới năm 2007 chính thức ra mắt hệ điều hành Android Vào tháng 10 năm 2008, chiếc điện thoại đầu tiên chạy hệ điều hành Android tên là HTC Dream với hệ điều hành phiên bản 1.6 có mã là Donut
Do chính mã nguồn mở nên không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên được điều chỉnh một cách tự do Nhờ vậy đã giúp cho Android trở thành nền tảng điện thoại thông minh phổ biến nhất hiện nay Nhằm để cải thiện, bổ xung các tính năng mới và sửa các lỗi trong những lần phát hành trước nên hệ điều hành Android luôn phải cập nhật phiên bản mới liên tục Mỗi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái, theo tên của một món ăn tráng miệng
Hình 2.15 Các phiên bản hệ điều hành Android
2.3.2 Ưu Điểm Và Nhược Điểm
Ưu điểm:
Thân thiện và dễ sử dụng với người dùng