Trong kênh truyền nối tiếp, ta chỉ cần một đường truyền để truyền tuần tự n bit của gói dữ liệu.. Như vậy, để truyền một gói dữ liệu trong kênh truyền song song ta tốn một khoản thời gia
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH
THIẾT KẾ VÀ THI CÔNG HỆ THỐNG BÁO CHÁY
GVHD: NGUYỄN NGÔ LÂM SVTH: PHAN THANH QUỲNH MSSV: 14119097
SVTH: ƯNG TẤN LỰC MSSV: 14119158
Tp Hồ Chí Minh, tháng 01/2019
S K L 0 0 5 4 3 8
Trang 3Họ và tên sinh viên: Phan Thanh Quỳnh MSSV:14119097
Ngành:Công Nghệ Kỹ Thuật Máy Tính Lớp: 14119CL2
Giảng viên hướng dẫn: ThS.Nguyễn Ngô Lâm ĐT:
Ngày nhận đề tài: 19/ 09 /2018 Ngày nộp đề tài: 19 / 01 /2019
1 Tên đề tài: Thiết kế và thi công hệ thống báo cháy
2 Các số liệu, tài liệu ban đầu:
Kiến thức cơ bản về các môn Mạch điện, Điện tử cơ bản, Vi xử lý
3 Nội dung thực hiện đề tài:
Thiết kế hệ thống
Mô phỏng mạch trên Proteus
Chỉnh sửa và thi công mạch
Viết báo cáo
4 Sản phẩm:
Hệ thống dùng vi xử lý PIC16F887A
GIẢNG VIÊN HƯỚNG DẪN
Trang 43
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: Phan Thanh Quỳnh……….MSSV: 14119097……… Ưng Tấn Lực……… MSSV: 14119097……… Ngành: Công nghệ kỹ thuật Máy Tính Tên đề tài: Thiết kế và thi công hệ thống báo cháy
Họ và tên Giáo viên hướng dẫn: Nguyễn Ngô Lâm
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày 19 tháng 01 năm 2019
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
Trang 54
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Phan Thanh Quỳnh MSSV: 14119097 Ưng Tấn Lực……… MSSV: 14119097……… Ngành: Công nghệ kỹ thuật Máy Tính Tên đề tài: Thiết kế và thi công hệ thống báo cháy
Họ và tên Giáo viên phản biện:
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày 19 tháng 01 năm 2019
Giáo viên phản biện
(Ký & ghi rõ họ tên)
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
Trang 62
LỜI CẢM ƠN
Để đề tài đồ án này đạt kết quả tốt đẹp, em nghiên cứu đã nhận được sự hỗ trợ, giúp đỡ của nhiều thầy cô, bạn bè Với tình cảm sâu sắc, chân thành, cho phép em nghiên cứu được bày tỏ lòng biết ơn sâu sắc đến tất cả các cá nhân đã tạo điều kiện giúp đỡ em nghiên cứu trong quá trình học tập và nghiên cứu đề tài
Trước hết em xin gửi tới các thầy cô bộ môn Máy tính - Viễn thông Trường
ĐH Sư phạm Kỹ thuật Tp.HCM lời chào trân trọng, lời chúc sức khỏe và lời cảm ơn sâu sắc Với sự quan tâm, dạy dỗ, chỉ bảo tận tình chu đáo của thầy cô, đến nay em nghiên cứu đã có thể hoàn thành đồ án, đề tài:
"Thiết kế và thi công hệ thống báo cháy "
Đặc biệt em xin gửi lời cảm ơn chân thành nhất tới thầy – ThS.Nguyễn Ngô Lâm đã quan tâm giúp đỡ, hướng dẫn em nghiên cứu hoàn thành tốt đồ án này trong thời gian qua
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một học viên,
đồ án này không thể tránh được những thiếu sót Em nghiên cứu rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy cô để em có điều kiện bổ sung, nâng cao ý thức của mình, phục vụ tốt hơn công tác thực tế sau này
Em xin chân thành cảm ơn!
Tp.HCM, ngày 19 tháng 01 năm 2019
Trang 7
3
MỤC LỤC
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 2
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 3
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 4
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC TỪ VIẾT TẮT 5
DANH MỤC CÁC BẢNG BIỂU 6
DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH 7
CHƯƠNG 1: TỔNG QUAN 8
1.1 GIỚI THIỆU 8
1.2 MỤC TIÊU ĐỀ TÀI 8
1.3 GIỚI HẠN ĐỀ TÀI 8
1.4 BỐ CỤC QUYỂN BÁO CÁO 9
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 10
2.1 PHƯƠNG THỨC HOẠT ĐỘNG CỦA UART 10
2.2 NGUYÊN TÁC GIAO TIẾP SPI 14
2.3 CÁC LINH KIỆN CHÍNH TRONG MẠCH 21
2.3.1 PIC16F887A 21
2.3.2 ModulSim 800L 29
2.3.3 NRF24L01 31
2.3.4 DHT11 33
2.3.5 MQ2 34
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 37
3.1 YÊU CẦU CỦA HỆ THỐNG 37
3.1.1 Sơ đồ khối của hệ thống 37
3.2 THIẾT KẾ PHẦN CỨNG 39
3.2.1 Khối xử lý trung tâm chính 39
3.2.2 Khối cảm biến 40
3.2.3 Khối hiển thị 41
3.2.4 Khối thời modul sim 41
3.2.5 Khối Remote 42
3.2.6 Khối thiết bị (máy bơm nước) 43
3.2.7 Khối nguồn 44
3.3 THIẾT KẾ PHẦN MỀM 45
3.3.1 Yêu cầu của phần mềm 45
3.3.2 Lưu đồ giải thuật 45
CHƯƠNG 4: KẾT QUẢ THỰC HIỆN 53
Trang 84
4.1 KẾT QUẢ PHẦN CỨNG 53
4.2 KẾT QUẢ PHẦN MỀM 54
4.3 NHẬN XÉT 58
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59
5.1 KẾT LUẬN 59
5.2 HẠN CHẾ VÀ PHƯƠNG HƯỚNG PHÁT TRIỂN 59
TÀI LIỆU THAM KHẢO 60
Trang 9đích cơ bản SPI Serial Peripheral Interface Giao diện ngoại vi nối tiếp
OS Operating System Hệ điều hành
I/O Input/Output Ngõ vào/ngõ ra
SMS Short Message Service Dịch vụ tin nhắn ngắn
UART Universal Asynchronous
thông nối tiếp
Trang 106
DANH MỤC CÁC BẢNG BIỂU
Bảng 2.3.5: Mô tả các Mode SPI 25
Bảng 2.3.15: Mô tả các chân của cảm biến MQ2 30
Bảng 2 5: Các chân trong LCD 41
Bảng 3.1: Dòng tiêu thụ của các linh kiện 50
Bảng 4.1: Điều khiển hệ thống qua module sim 44
Trang 117
DANH MỤC CÁC BIỂU ĐỒ VÀ HÌNH ẢNH
Hình 2.1.1 Kênh truyền nối tiếp 10
Hình 2.1.2 Kênh truyền nối tiếp simplex 11
Hình 2.1.2 Kênh truyền nối tiếp half - duplex 11
Hình 2.1.3 Kênh truyền nối tiếp full - duplex 11
Hình 2.1.4 Truyền nối tiếp bất đồng bộ 12
Hình 2.1.5 ví dụ truyền nối tiếp bất đồng bộ 13
Hình 2.2.1 Sơ đồ kết nối SPI 15
Hình 2.2.2 Sơ đồ nguyên lý kết nối SPI 16
Hình 2.2.4 Kết nối Daisy Chain 17
Hình 2.2.5 Mode SPI 18
Hình 2.3.1 Sơ đồ chân của vi điều khiển PIC16F887A 22
Hình 2.3.2 Sơ đồ khối của PIC16F887A 23
Hình 2.3.4 Chức năng của các chân trong PORTA 25
Hình 2.3.5 Chức năng các chân trong PORTB 25
Hình 2.3.6 Chức năng các chân trong PORTC 26
Hình 2.3.7 Chức năng các chân trong PORTD 27
Hình 2.3.8 Chức năng các chân trong PORTE 28
Hình 2.3.9 Sơ đồ chân module sim 800L 30
Hình 2.3.10 Module NRF24L01 32
Hình 2.3.11 Truyền nhận dữ liệu bằng module NRF24L01 32
Hình 2.3.12 Sơ đồ chân của module NRF24L01 33
Hình 2.3.13 Cảm biến nhiệt độ, độ ẩm DHT11 34
Hình 2.3.14 Cảm biến khí gas, khói MQ2 35
Hình 3.1.1 Sơ đồ khối hệ thống 37
Hình 3.2.1 Sơ đồ mạch vi điều khiển PIC 40
Hình 3.2.2 Sơ đồ mạch cảm biến nhiệt độ, độ ẩm 40
Hình 3.2.3 Sơ đồ mạch LCD 41
Hình 3.2.4 Sơ đồ nguyên lý module sim800L 42
Hình 2.2.5 Sơ đồ nguyên lý Remote 43
Hình 3.2.6 Kết nối hệ thống bơm nước 43
Hình 3.2.7: Nguồn cung cấp 44
Hình 3.3.2 Lưu đồ giải thuật hệ thống 46
Hình 3.3.3 Lưu đồ giải thuật hệ thống 47
Hình 3.3.2 Lưu đồ giải thuật chương trình điều khiển bằng module sim 48
Hình 3.3.3 Lưu đồ giải thuật chương trình ngắt 49
Hình 3.3.4 Lưu đồ giải thuật chương trình điều khiển bằng Remote 50
Hình 3.3.5 Lưu đồ giải thuật chương trình kiểm tra nút nhấn 51
Hình 4.1 Mạch hệ thống chính 53
Hình 4.3 Mạch hệ thống sau khi cấp điện 54
Hình 4.5 Remote điều khiển bật thiết bị 2 55
Hình 4.7 Remote điều khiển bật thiết bị 1 56
Hình 4.9 Điều khiển hệ thống qua module sim 57
Trang 128
CHƯƠNG 1: TỔNG QUAN 1.1 GIỚI THIỆU
Thế giới hiện nay đang ngày càng hiện đại với những công nghệ tiên tiến giúp cho cuộc sống thuận tiện hơn cùng với sự phát triển của khoa học và công nghệ, các thiết bị điện tử thông minh đã, đang và sẽ tiếp tục được ứng dụng ngày càng rộng rãi và mang lại hiệu quả trong hầu hết các lĩnh vực khoa học
kỹ thuật cũng như trong đời sống xã hội
Với sự phát triển như vậy việc tự động hóa trong sản xuất và đời sống ngày càng được chú trọng, vì vậy vai trò của VXL ngày càng được chú trọng Các hệ thống tự động cảnh báo, tự động vận hành xuất hiện ngày càng nhiều và trở nên phổ biến, với nhiều tính năng đa dạng mang tính ứng dụng cao hơn Đặc biệt nước ta là một nước nông nghiệp nên việc ứng dụng khoa học công nghệ vào nông nghiệp là hướng đi tất yếu cho sự phát triển
Bên cạnh sự phát triển đó là sự ra đời của nhiều dòng VXL với hiệu năng và khả năng đa nhiệm cao hơn Các dòng VXL được sử dụng nhiều trong các hệ thống tự động ngày nay như: PIC, ATmega, AVR, ARM,… Đặt biệt trong các
hệ thống nhúng nói ngày nay họ VXL PIC16F8xx được sử dụng khá nhiều
Vì các lý do trên nên em xin thực hiện đề tài “THIẾT KẾ VÀ THI CÔNG
HỆ THỐNG BÁO CHÁY” cùng với việc sử dụng VXL PIC16F887A làm
Trang 139
Mạch thực tế là việc kiểm nghiệm cách thức hoạt động của các module trong
hệ thống cũng như vận dụng kiến thức đã học vào thiết kế, thi công mạch Điều kiện thực nghiệm cũng còn nhiều hạn chế nên việc đọc nhiệt độ, khí gas, khói
từ cảm biến còn nhiều sai sót mong thầy cô bỏ qua sự hạn chế này
Từ những hạn chế trên em nghiên cứu nhận thấy đề tài của mình còn nhiều thiếu sót, vì vậy em mong nhận được những ý kiến đóng góp, giúp đỡ của thầy, cũng như các bạn
1.4 BỐ CỤC QUYỂN BÁO CÁO
Quyển báo cáo gồm 5 chương:
Chương 1: Tổng quan, giới thiệu sơ lược về đề tài, giới hạn đề tài đã thực hiện
Chương 2: Cơ sở lý thuyết, tình bày về các nguyên tắc đã tìm hiểu để xây dựng module trong đề tài và cấu tạo cũng như tính năng linh kiện được sử dụng trong đề tài
Chương 3: Thiết kế hệ thống, trình bày về cách thức hoạt động của hệ thống, các module sử dụng trong hệ thống và nguyên lý mà nó hoạt động, các bước thiết kế các module và liên kết chúng lại để xây dựng hệ thống,
Chương 4: Kết quả, trình bày về kết quả mà em đã làm đươc và kết quả thực nghiệm
Chương 5: Kết luận và hướng phát triển, là nhận xét của em về kết quả thu được của hệ thống, cũng như đưa ra hướng khắc phục các nhược điểm của đề tài hiện tại, hướng phát triển cho hệ thống trong tương lai
Trang 1410
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 PHƯƠNG THỨC HOẠT ĐỘNG CỦA UART
Các máy tính/vi điều khiển thường truyền tín hiệu theo hai cách: Song song
và nối tiếp Trong kênh truyền song song, khi truyền một gói dữ liệu n-bit thì ta cần n đường truyền, mỗi bit trong gói dữ liệu sẽ đi trên một đường truyền Trong kênh truyền nối tiếp, ta chỉ cần một đường truyền để truyền tuần tự n bit của gói dữ liệu Như vậy, để truyền một gói dữ liệu trong kênh truyền song song ta tốn một khoản thời gian tbit, trong kênh truyền nối tiếp để truyền n bit
ta tốn khoản thời gian n*tbit :
Các loại kênh truyền dữ liệu nối tiếp:
Các kênh truyền được gọi là simplex (đơn công), hay half duplex(bán song công), hay full duplex (song công) tùy thuộc vào kiểu mà mình kết nối
Hình 2.1.1 Kênh truyền nối tiếp
Trang 1511
– Kênh truyền nối tiếp simplex chỉ truyền được theo một hướng duy nhất trên một đường truyền xác định
– Kênh truyền nối tiếp half –duplex chỉ có một trường truyền nhưng dữ liệu
có thể truyền theo 2 hướng, tuy nhiên trong một lúc, dữ liệu chỉ đi được theo 1 hướng
– Kênh truyền nối tiếp full – duplex có 2 đường truyền dữ liệu riêng biệt, một
đường truyền và một đường nhận, cho phép dữ liệu truyền nhận theo 2 hướng cùng lúc
Hình 2.1.2 Kênh truyền nối tiếp simplex
Hình 2.1.2 Kênh truyền nối tiếp half - duplex
Hình 2.1.3 Kênh truyền nối tiếp full - duplex
Trang 1612
Đồng bộ dữ liệu trong các kênh truyền nối tiếp
– Tất cả các kênh truyền nối tiếp đều yêu cầu tín hiệu clock nhằm thiết lập tốc
độ tín hiệu truyền nhận dữ liệu giữa các bên cho khớp với nhau Tùy thuộc vào vào cách sử dụng tín hiệu clock như thế nào mà chúng ta có định nghĩa về kênh truyền đồng bộ hay kênh truyền không đồng bộ
– Kênh truyền không đồng bộ sử dụng bộ tạo tín hiệu clock độc lập ở mỗi thiết
bị, dữ liệu được truyền theo một khung truyền và tốc độ baud được thống nhất bởi bên truyền và bên nhận Còn đối với kênh truyền đồng bộ sẽ có những tín hiệu clock được truyền đồng thời với dữ liệu trên một đường truyền nối giữa hai thiết bị
Khung truyền và một số khái niệm, thuật ngữ
Khung truyền dữ liệu (data frame)
– Dữ liệu đi vào ở đầu thu của đường dữ liệu trong truyền dữ liệu nối tiếp là một dãy các số 0 và 1, và rất khó để hiểu được ý nghĩa của các dữ liệu ấy nếu bên phát và bên thu không cùng thống nhất về một tập các luật, một thủ tục, về cách dữ liệu được đóng gói, bao nhiêu bit tạo nên một ký tự và khi nào dữ liệu bắt đầu và kết thúc Bên cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi truyền và nhận Khung truyền bao gồm các quy định về số bit trong mỗi lần truyền, các bit “báo” như bit Start và bit Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data hay thứ tự truyền các bit trên đường truyền cũng được quy định bởi khung truyền Hình ảnh cấu trúc dữ liệu trong truyền thông nối tiếp bất đồng bộ:
Hình 2.1.4 Truyền nối tiếp bất đồng bộ
Trang 1713
– Start là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới Start là bit bắt buộcphải có trong khung truyền, và nó là một bit thấp (0)
– Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận
Số lượng bit data tùy thuộc vào các loại vi điều khiển khác nhau, thường thì data có 8bit Trong truyền thông nối tiếp UART, bit có trọng số nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có trọng số lớn nhất (MSB – Most Significant Bit, bit bên trái) Tuy nhiên thứ tự truyền này có thể được cài đặt bởi người dùng
– Parity là bit dùng để kiểm tra dữ liệu truyền có đúng không (một cách tương đối) Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity) Parity chẵn nghĩa là số lượng số “1” trong dữ liệu bao gồm bit parity luôn là số chẵn Ngược lại tổng số lượng các số “1” trong parity lẻ luôn là số lẻ
Thí dụ: nếu dữ liệu của bạn là 10111011 nhị phân, có tất cả 6 bit có giá trị “1” trong dữ liệu này, nếu quy định parity chẵn được dùng, bit parity sẽ mang giá trị
0 để đảm bảo tổng các số “1” là số chẵn (6 số 1) Nếu parity lẻ được yêu cầu thì giá trị của parity bit là 1 Sau khi truyền chuỗi dữ liệu kèm theo cả bit parity trên, bên nhận thu được và kiểm tra lại tổng số số “1” (bao gồm cả bit parity), nếu vi phạm quy định parity đã đặt trước thì ta khẳng định là dữ liệu nhận được
là sai, còn nếu không vi phạm thì cũng không khẳng định được điều gì (mang tính tương đối)
Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền
– Stop bits là 01 hoặc nhiều bit báo cho thiết bị nhận rằng một gói dữ liệu đã được gởi xong Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu Stop bits là các bit bắt buộc xuất hiện trong khung truyền
Ví dụ về gói dữ liệu 0x7B với lựa chọn kiểm tra bít chẵn:
Hình 2.1.5 ví dụ truyền nối tiếp bất đồng bộ
Trang 1814
Tốc độ bit và tốc độ baud
– Có hai thuật ngữ thường dùng trong truyền số liệu là tốc độ bit (bit rate) và tốc độ baud (baud rate) thường bị nhầm lẫn Tốc độ bit là số bit được truyền trong một giây, Tốc độ baud là số đơn vị tín hiệu trong một giây cần có để biểu diễn số bit vừa nêu Khi nói về hiệu quả của máy tính, thì tốc độ bit luôn là yếu
tố quan trọng Tuy nhiên, trong truyền số liệu ta lại cần quan tâm đến hiệu quả truyền dẫn dữ liệu từ nơi này đến nơi khác, như thế khi dùng ít đơn vị tín hiệu cần có, thì hiệu quả càng cao, và băng thông truyền càng thấp; như thế thì cần chú ý đến tốc độ baud Tốc độ baud xác định băng thông cần thiết để truyền tín hiệu.Tốc độ bit là tốc độ baud nhân với số bit trong mỗi đơn vị tín hiệu Tốc độ baud schia cho số bit biểu diễn trong mỗi đơn vị truyền
Tốc độ bit là số bit trong mỗi giây
Tốc độ baud là số đơn vị tín hiệu trong mỗi giây
Tốc độ baud thường bé hơn hay bằng tốc độ bit
– Một ý niệm tương đồng có thể giúp hiểu rõ vấn đề này; baud tương tư như xe khách, còn bit tương tự như số hành khách Một chuyến xe mang một hoặc nhiều hành khách Nếu 1000 xe di chuyển từ điểm này sang điểm khác chỉ mang một hành khách (thí dụ lái xe) thì mang được 1000 hành khách Tuy nhiên, với số xe này, mỗi xe mang 4 người, thì ta vận chuyển được 4000 hành khách Chú ý là chính số xe, chứ không phải số hành khách, là đơn vị lưu thông trên đường, tức là tạo nhu cầu về độ rộng của xa lộ Nói cách khác, tốc độ baud xác định băng thông cần thiết, chứ không phải số bit
2.2 NGUYÊN TÁC GIAO TIẾP SPI
Giao tiếp SPI được hãng motorola giới thiệp ở giữa năm 1980 và được sử dụng trong các dòng vi điều khiển của họ Ngày nay giao tiếp SPI được sử dụng phổ biến để giao tiếp với các vi điều khiển, eeprom, IC thời gian thực
SPI là giao thức nối tiếp đồng bộ đa mục đích (general-purpose synchronous serial interface), trong khi thực hiện giao tiếp SPI dữ liệu truyền và nhận được diễn ra một các đồng thời Một xung clock đồng bộ dùng để dịch và lấy mẫu thông tin trên hai đường dữ liệu
Trang 1915
Thiết bị giao tiếp SPI sử dụng mối quan hệ master- slaver (chủ-tớ), do thiết bị
tớ không được định địa chỉ nên khi giao tiếp một master với nhiều slaver ta cần đường chọn chíp CS, để chọn slave nào cần truyền nhận dữ liệu Vậy số bus cho giao tiếp này là 3 + (1 n) dây
Các cách kết nối cơ bản:
Giao tiếp 1 master - 1 slave
Tên và chức năng của các chân
MOSI (Master Output Slave Input.):Chân này được sử dụng để truyền dữ liệu khi thiết bị được cấu hình là master và là chân nhận dữ liệu khi cấu hình là slave MISO (Master Input Slave Output): Chân này được sử dụng để nhận dữ liệu khi khi thiết bị được cấu hình là Master và truyền dữ liệu khi cấu hình bởi slave SS: Tín hiệu này được tạo bởi Master để lựa chọn thiết bị slave muốn truyền nhận, Đối với thiết bị master chân này được cấu hình là chân xuất (output) và là chân nhập (input) với slave
SCK: Chân SCK cấp xung đồng bộ để truyền nhận dữ liệu với một Slave nào
đó được chọn
Hình 2.2.1 Sơ đồ kết nối SPI
Trang 2016
Cả Master và Slave đều có thanh ghi dịch nối tiếp ở bên trong Thiết bị Master
bắt đầu việc trao đổi dữ liệu bằng cách truyền đi một Byte vào thanh ghi dịch
của nó, sau đó Byte dữ liệu sẽ được đưa sang Slave theo đường tín hiệu MOSI
(SDI), Slave sẽ truyền dữ liệu nằm trong thanh ghi dịch của chính nó ngược trở
về Master thông qua đường tín hiệu MISO (SDO) Bằng cách này, dữ liệu của
hai thanh ghi sẽ được trao đổi với nhau Việc đọc và ghi dữ liệu vào Slave diễn
ra cùng một lúc nên tốc độ trao đổi dữ liệu diễn ra rất nhanh Do đó, giao thức
SPI là một giao thức rất có hiệu quả
Trong giao thức chủ-tớ, chỉ có thiết bị Master mới có thể điều khiển (phát ra)
xung SCK Dữ liệu sẽ không được truyền đi nếu như Master không cung cấp
xung SCK và tất cả các thiết bị Slave đều được điều khiển bởi xung nhịp phát ra
từ Master trong khi đó, Slave lại không có khả năng phát xung
Hình 2.2.2 Sơ đồ nguyên lý kết nối SPI
Trang 2117
Các kiểu kết nối trong SPI
a Kết nối song song nhiều slave:
b Kết nối Daisy chain hay kết nối Cascade
Hình 2.2.3 Kết nối song song Slave
Hình 2.2.4 Kết nối Daisy Chain
Trang 2218
Các mode trong giao tiếp SPI:
Tùy thuộc vào các cạnh đồng hồ sử dụng cho việc dịch có 4 mode SPI khác
1 Truyền dữ liệu mới tại cạnh lên Lấy mẫu dữ liệu tại cạnh xuống
2 Lấy mẫu dữ liệu tại cạnh xuống Truyền dữ liệu mới tại cạnh lên
3 Truyền dữ liệu mới tại cạnh
Hoạt động của spi trong PIC
Khi khởi tạo giao tiếp SPI,ta phải chỉ rõ là thiết lập chế độ hoạt động nào bằng cách ghi vao thanh ghi SSPCON1 và SSPSTAT các giá trị thích hợp Giá trị này sẽ cho biết các thông số sau được chọn hay không:
- Master Mode (SCK là ngõ ra xung clock)
- Slave Mode (SCK là ngõ vào xung clock)
- Clock Polarity (trạng thái nghỉ của xung SCK)
- Data Input Sample Phase (tại điểm giữa hoặc cuối của xung clock khi data
out)
- Cạnh xung clock (dữ liệu được truyền đi tại cạnh lên/xuống của xung clock)
- Clock Rate (chỉ cho phép iử Master Mode)
Hình 2.2.5 Mode SPI
Trang 2319
- Slave Select Mode (chỉ sử dụng ở Slave Mode)
Như đã giới thiệu, Module MSSP của PIC có 2 thanh ghi chức năng Truyền/Nhận là Thanh ghi-dịch SSPSR và thanh ghi đệm SSPBUF SSPSR sẽ dịch chuyển data vào hoặc ra khỏi thiết bj, bit Msb trước SSPBUF sẽ giữ dữ liệu mà dữ liệu này đã được ghi vào SSPSR cho đến khi nhận được byte dữ liệu
kế tiếp Nếu SSPBUF đã nhận đủ 8 bit dữ liệu thì bit BF (Buffer Full detect bit)và SSPIF (Interrupt Flag bit) của thanh ghi SSPSTAT được set Bất cứ việc ghi/đọc dữ liệu trong thanh ghi SSPBUF trong qua trình truyền/nhận đều bị cấm
và bit WCOL sẽ được set lên 1.Bit này cần được xóa để nếu dữ liệu tiếp theo được ghi vào SSPBUF hoàn tất thành công
Cần phải đọc dữ liệu trong SSPBUF ngay sau khi nhận về để cho phép các dữ liệu tiếp theo được ghi vào Bit BF sẽ cho biết khi nào SSPBUF đầy dữ liệu (quá trình truyền hoàn tất) Khi ta đọc giá trị trong thanh ghi SSPBUF, bit BF sẽ được xóa
Một cách tổng quát, Ngắt của Module MSSP thường dùng để xét xem quá trình truyền/ nhận xong hay chưa Nếu bit SSPIF = 1 thì chứng tỏ quá trình truyền nhận đã hoàn tất Ngược lại, nếu bit SSPIF = 0 thì quá trình chưa hoàn thành
Thiết lập chân vào/ra SPI:
Để thiết lập PORT nối tiếp, ta cần phải set bit cho phép SPI hoạt động – bit SSPEN của thanh ghi SSPCON1 Nếu muốn thiết lập lại cấu hình SPI, ta chỉ việc xóa bit SSPEN, khởi tạo lại giá trị cho thanh ghi SSPCON, sau đó lại Set bit SSPEN = 1 Lúc này, các chân của Port nối tiếp là SDI, SDO,SCK, SS Muốn các chân này có đầy đủ chức năng của Port dữ liệu vào ra ta phải chọn hướng dữ liệu cho từng chân bằng cách thao tác lên thanh ghi TRISx như sau: + SDI : chiều dữ liệu tự động được điều khiển bởi Mode SPI
+ SDO : Chân dữ liệu ra nên cần phải xóa bit 5 của TRISC
+ SCK : Nếu ở chế độ Master thì phải xóa bit 3 của TRISC
+ SCK : Nếu ở chế độ Slave thì bit 3 của TRISC cần được set lên 1
+ SS : Set bit 7 của TRISF
Trang 2420
PIC ở mode master SPI
Chip Master trong giao tiếp SPI có thể khởi tạo trao đổi dữ liệu bất cứ lúc nào
vì nó có thể diều khiển xung SCK Ở Master Mode, dữ liệu được truyền đi hoặc nhận về ngay khi được ghi vào SSPBUF Nếu Master chỉ nhận mà không truyền
dữ liệu thì chân SDO có thể sử dụng như chân ngõ vào Thanh ghi SSPSR vẫn tiếp tục dịch dữ liệu bên trong nó đồng bộ với xung SCK Cứ mỗi Byte nhận được, PIC sẽ lưu vào trong thanh ghi SSPBUF (cờ ngắt và các bit trạng thái có thể được set lên 1)
Cực tính của xung SCK được chọn bằng cách thao tác lên bit CKP (SSPCON1) Dạng sóng của giao tiếp SPI được biểu diễn như hình bên dưới với bit MSB được truyền đi trước Ở Master Mode, tốc độ xung SCK của giao tiếp SPI được chọn một trong số 4 tùy chọn sau:
- Fosc/4 ( hoặc Tcy)
- Fosc/16 (hoặc 4 - Tcy)
- Fosc/64 (hoặc 16 – Tcy)
- Timer2 output/2
Tốc độ truyền dữ liệu có thể đạt giá trị cao nhất là 10 Megabit/giây (với tần số thạch anh ngoài là 40MHz)
PIC ở mode slave SPI
Ở chế độ Slave, dữ liệu chỉ được truyền đi hay nhận về khi có xung SCK Khi bit cuối cùng đã được chốt, cờ ngắt SSPIF sẽ được set
Trước khi cho phép PIC hoạt động ở Slave Mode ta cần phải chú ý đến xung SCK Xung clock phải khớp với trạng thái nghỉ của xung SCK Trạng thái nghỉ được lựa chọn bằng việc thao tác lên bit CKP
Trong khi đang ở SPI Slave Mode, xung clock cần thiết cho việc trao đổi dữ liệu được lấy từ chân SCK PIC có thể truyền/ nhận trong lúc đang ‘ngủ đông’ Nếu có 1 byte dữ liệu được nhận thì PIC sẽ ‘thức dậy’
THIẾT BỊ SLAVE TỰ ĐỘNG LỰA CHỌN SỰ ĐỒNG BỘ HÓA
Trang 2521
Chân Slave Select (SS) cho phép đồng bộ hóa ở chế độ SPI Slave Do đó, nếu đặt cấu hình hoạt động ở chế độ Slave thì ta nên cho phép chân SS để điều khiển (đặt các bit SSPCON1 = 0x04) Khi chân SS được đưa xuống mức thấp,
sự truyền/ nhận dữ liệu được cho phép và chân SDO sẽ được thúc để tải dữ liệu Khi chân SS được đưa lên mức cao, chân SDO sẽ không được thúc nữa, dữ liệu
sẽ không được lưu thông
Nếu SPI Slave Mode có chân SS điều khiển được kích hoạt, thì mô-đun SPI sẽ reset khi chân SS được đưa lên Vdd Lúc này bit counter bị xóa về ‘0’ Ta cũng
có thể xóa bit counter bằng cách xóa bit SSPEN
Cần phải sử dụng chân SS nếu như SPI Slave Mode được dùng với bit CKE được set
2.3 CÁC LINH KIỆN CHÍNH TRONG MẠCH
2.3.1 PIC16F887A
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có
độ dài 14 bit Mỗi lệnh đều được thực thi trong một chu kỳ xung clock Tốc
độ hoạt động tối đa cho phép là 20MHz với chu kỳ lệnh là 200ns Bộ nhớ chương trình là 8K x 14 bit, bộ nhớ dữ liệu là 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte 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 8 bit với bộ chia tần 8 bit
Timer1 : Bộđếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep Timer2: Bộđếm 8 bit với bộ chia tần số, bộ postcaler
Hai bộ Capture/so sánh/điều chế độ rộng xung
Các chuẩn giao tiếp nối tiếp SSP (synchronous Serial Port), SPI và I2C
Trang 2622
Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ Cổng giao tiếp song song PSP ( Parallel Slave Port )với các chân điều khiển RD,WR, CS ởbên ngoài Các đặc tính Analog:
- 8 kênh chuyển đổi ADC 10bit
- Hai bộ so sánh
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như:
- Bộ nhớ flash với khả năng ghi/xóa được 100.000 lần
- Bộ nhớ EEPROM với khả năng ghi/xóa được 1000.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 khả năng đ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ộ giao động trong
- Chức năng bảo mật chương trình
- Chế độ Sleep
- Có thể hoạt động với nhiều dạng Oscillator khác nhau
Sơ đồ khối của vi điều khiển PIC16F887A:
Trang 2723
Hình 2.3.2 Sơ đồ khối của PIC16F887A
Các cổng xuất nhập của PIC16F887A
Cổng xuất nhậ p (I/O port) chính là phương tiện mà vi điều khiển dùng để tương tác với các thiết bị ngoại vi Sự tương tác này rất đa dạng và thông qua quá trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân I/O pin, tùy theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và
số lượng chân trong mỗi cổng có thể khác nhau Bên cạnh đó, do vi điều khiển được tích sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức năng
là cổng xuất nhập thông thường thì một số chân xuất nhập có các chức năng khác để thực hiện sự tác động của các đặc tính ngoại vi nêu trên đối với thế giới ngoài Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn có thể được xác lập và điều khiển thông qua thanh ghi SFR liên quan đến các chân xuất
Trang 28là input, ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA
và ngược lại, muốn xác lập chức năng của một chân trong PORTA là output ta
“clear” bit điều khiển với chân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng (đối với PORTA làTRISA, đối với PORTB làTRISB, đối với PORTC làTRISC, đối với PORTD là TRISD, đối với PORTE là TRISE ) Bên cạnh đó, PORTA còn làngõra của bộADC, bộso sánh, ngõvào analog, ngõvào xung clock của Timer0 vàngõvào của bộgiao tiế p MSSP (Master Synchronous Serial Port)
Chức năng các chân trong PORTA:
Trang 2925
Hình 2.3.4 Chức năng của các chân trong PORTA
Các thanh ghi SFR liên quan đến PORTA bao gồm:
-PORTA (địa chỉ 05h): chứa giá trị của 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
-CVRCON (địa chỉ 9Dh): thanh ghi điều khiển bộ so sánh điện áp
-ADCON1 (địa chỉ 9Eh): thanh ghi điều khiển bộ ADC
- PORTB
PORTB (RPB) gồm 8 pin I/O thanh ghi điều khiển xuất nhập tương ứng
là TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0
Chức năng cụ thể của từng chân trong PORTB như sau:
Hình 2.3.5 Chức năng các chân trong PORTB
Các thanh ghi SFR liên quan đến PORTB bao gồm:
-PORTB (địa chỉ 06h, 106h): chứa các giá trị pin trong PORTB
-TRISB ( địa chỉ 86h, 186h): thanh ghi điều khiển xuất nhập
Trang 3026
-OPTION_REG (địa chỉ81h, 181h): điều khiển ngắt ngoại vi và bộ Timer0
- PORTC
PORTC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng
là TRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, Timer1, bộPWM vàcác chuẩn giao tiế p nối tiếp I2C, SPI, SSP, USART [3].Chức năng cụthểcủa các chân trong PORTC như sau:
Các thanh ghi điều khiển liên quan đến PORTC gồm:
-PORTC (địa chỉ 07h): chứa giá trị pin trong PORTC
-TRISC ( địa chỉ 87h ): thanh ghi điều khiển xuất nhập
Các thanh ghi điều khiển liên quan đến PORTC gồm:
-PORTC (địa chỉ 07h): chứa giá trị pin trong PORTC
Trang 3127
-TRISC (địa chỉ 87h): thanh ghi điều khiển xuất nhập
- PORT D
PORT D ( RPD) gồm 8n chân I/O Thanh ghi điều khiển xuất nhập tương ứng
là TRIS D Ngoài ra PORT D còn là cổng xuất dữ liệu của chuẩn giao tiếp PSP (Parallel Slave Port)
Chức năng cụ thể các chân trong PORT D như sau:
Các thanh ghi liên quan đến PORT D bao gồm:
-PORT D : chứa giá trị các pin trong PORT D
-TRISD: thanh ghi điều khiển xuất nhập
Trang 3228
- PORT E
PORTE ( RPE) gồm 3 chân I/O Thanh ghi điều khiển xuất nhập tương ứng
là TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP Chức năng cụ thể của các chân trong PORTE như sau:
Hình 2.3.8 Chức năng các chân trong PORTE
Các thanh ghi liên quan đến PORTE bao gồm:
-PORTE : chứa giátrịpin 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
Truyền thông nối tiếp
- USART
USART (Universal Synchronous Asynchronous Receiver Transmitter) là một trong hai chuẩn giao tiếp USART còn được gọi là giao diện giao tiếp nối tiếp nối tiếp SCI (Serial Communication Interface) Có thể sử dụng giao diện