Đồ án tốt nghiệp điều khiển thiết bị thông qua máy tính

130 329 0
Đồ án tốt nghiệp   điều khiển thiết bị thông qua máy tính

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

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

Thông tin tài liệu

Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA CHƯƠNG DẪN NHẬP I.ĐẶT VẤN ĐỀ : _Ngày với phát triển công nghiệp vi điện tử, kỹ thuật số hệ thống điều khiển tự động hóa Với kỹ thuật tiên tiến vi xử lí, vi mạch số … ứng dụng vào lĩnh vực điều khiển, hệ thống điều khiển khí thô sơ, với tốc độ xử lí chậm chạp xác thay hệ thống điều khiển tự động với lệnh chương trình thiết lập trước _Trong trình hoạt động xưởng, văn phòng, công sở nay, việc giám sát nhiệt độ điều khiển thiết bị cho hợp lý yêu cầu thiết yếu Vì nắm bắt nhiệt độ làm việc khu vực, hệ thống, dây chuyền sản xuất … giúp ta biết tình trạng làm việc để đáp ứng yêu cầu, đồng thời có xử lý kịp thời tránh hư hỏng cố xảy _Để đáp ứng yêu cầu giám sát nhiệt độ đưa công việc điều khiển cho thích hợp có nhiều phương pháp để thực hiện, áp dụng kiến thức có chúng em khảo sát vi điều khiển PIC16F877A giao tiếp với máy tính qua cổng COM với giao diện VB _Với đồng ý cô Đinh Thị Thanh Hoa Chúng em tiến thành thực đề tài: “Điều Khiển Thiết Bị Thông Qua Máy Tính” II.TẦM QUAN TRỌNG CỦA ĐỀ TÀI: - Đây đề tài nghiên cứu mang tính thực tiễn việc vận dụng kiến thức học mái trường Cao Đẳng vào thực tế - Về mặt khoa học, đề tài giúp cho nhóm sinh viên thực hiểu rõ thêm Truyền liệu điều khiển Cách điều khiển mạch điện thông qua máy tính - Về mặt thực tiễn, đề tài áp dụng vào thực tế để điều khiển số thiết bị nhà đèn điện, quạt máy v v III.GIỚI HẠN ĐỀ TÀI : Với thời gian ngắn, kiến thức hạn hẹp Chúng em cố gắng để hoàn thành đề tài này, giải vấn đề sau : -Giao tiếp máy tính qua chuẩn RS232 -Gởi lệnh điều khiển xuống PIC SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA -Hiển thị nhiệt độ -Hiển thị trạng thái thiết bị - Điều khiển lúc tối đa thiết bị -Mạch phải hoạt động tốt không bị nhiễu đường truyền tín hiệu -Mạch phải chạy ổn định trình làm việc IV.MỤC ĐÍCH NGHIÊN CỨU :  Khi bắt tay vào thực đề tài này, nhóm thực mong muốn sản phẩm đề tài phải ứng dụng Và đặc biệt, nhóm nghiên cứu điều kiện, hội, cách thức để củng cố, bổ sung ứng dụng lĩnh hội lý thuyết thực tập Từ sử dụng ứng dụng nhằm đáp ứng cho nhu cầu thực tế Đây tiền đề để thành viên nhóm có số kiến thức chuyên ngành định, làm hành trang cho công việc sau  Mục đích trước hết thực đề tài để hoàn tất chương trình học  Đề tài làm tài liệu tham khảo cho sinh viên khóa sau Giúp họ hiểu rõ họ vi điều khiển PIC16F877A giao tiếp với máy tính Quá trình thực đề tài hội để chúng em tự kiểm tra lại kiến thức học trường, đồng thời phát huy tính sáng tạo, khả giải vấn đề theo yêu cầu đặt V.ĐỐI TƯỢNG NGHIÊN CỨU: Đối tượng nghiên cứu đề tài là: ► Cách thức giao tiếp mạch đo máy tính ► Cách thức giao tiếp mạch đo mạch điều khiển ► Cách lập trình cho vi điều khiển liệu thu, phát liên tục mà không bị ngắt quãng ► Cách cân chỉnh mạch đo, đảm bảo độ xác mạch đo VI.PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN NGHIÊN CỨU: Phương pháp nghiên cứu: Trong trình nghiên cứu, nhóm sinh viên thực chủ yếu dựa vào hai phương pháp chính: - Phương pháp tham khảo tài liệu: Thu thập tài liệu liên quan đến giao tiếp máy tính, Truyền số liệu, Kỹ thuật mạch điện tử, Thiết kế mạch điện tử Phương pháp nghiên cứu khoa học Sau đó, nhóm sinh viên vận dụng SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA kiến thức có để tổng hợp tài liệu, sau thiết kế mạch điện phù hợp với yêu cầu mà ban đầu nhóm đề - Phương pháp quan sát thực nghiệm: Sau có mạch theo tính toán lý thuyết, nhóm sinh viên thực thi công mạch thực tế theo sơ đồnguyên lý vạch Do thiết bị đo chuyên dụng thích hợp, nhóm sinh viên thực cân chỉnh thủ công khối, đo điện áp dòng điện ngõ chúng Sau đó, nhóm sử dụng kết cân chỉnh để điều chỉnh lại lý thuyết cách hợp lý Phương tiện nghiên cứu a Các tài liệu liên quan đến đề tài b Bộ nguồn ổn áp tuyến tính 5V, ±12V c Đồng hồ đo VOM kim số d Máy tính SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 10 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA CHƯƠNG II: GIỚI THIỆU PIC16F877A I.Giới thiệu vi điều khiển PIC: -PIC viết tắt “Programable Intelligent Computer”, tạm dịch “máy tính thông minh khả trình” hãng Genenral Instrument đặt tên cho vi điều khiển họ PIC1650 thiết kế để dùng làm thiết bị ngoại vi cho vi điều khiển CP1600 Vi điều khiển sau hãng Microchip nghiên cứu phát triển thêm từ hình thành nên dòng vi điều khiển PIC ngày -Cách phân lọai PIC theo chữ cái: Các họ PIC xxCxxx đưa vào nhóm, gọi OPT (One Time Programmable) : nạp chương trình cho lần Nhóm thứ hai có chữ F LF:chúng ta gọi nhóm nhóm Flash ,nhóm cho phép ghi xóa nhiều lần mạch điện tử thông thường -Cách phân loại PIC theo hai số sản phẩm : Loại thứ dòng PIC (Base_line), gồm PIC 12Cxxx, có độ dài lệnh 12 bit Loại thứ hai dòng PIC 10F, 12F , 16F, gọi dòng phổ thông (Mid Range), có độ dài lệnh 14 bit -Loại thứ ba dòng PIC 18F (High End) , độ dài lệnh 16 bit PIC 16F877A dòng PIC phổ biến , đủ mạnh tính năng, nhớ đủ cho ứng dụng thông thường II Vi điều khiển PIC16F877A : 1.Tổ chức phần cứng : -Tổ chức phần cứng vi điều khiển thiết kế theo hai kiến trúc: Harvard Von Neumann.Tổ chức phần cứng PIC16F877A thết kế theo kiến trúc Harvard SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 11 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA Hình I.1 : Kiến trúc Harvard Von Neumann -Trên hình vẽ, cấu trúc Von Neumann nhớ chương trình nhớ liệu nằm chung nhớ CPU truy cập vào hai nhớ thông qua bus, thời điểm CPU truy cập vào hai nhớ Đối với cấu trúc Harvard, nhớ liệu nhớ chương trình tổ chức riêng Do đó, thời điểm, CPU tương tác với hai nhớ, tốc độ xử lý vi điều khiển nhanh -Vì PIC16F877A thiết kế với kiến trúc Harvard nên có tập lệnh rút gọn RISC (Reduced Instruction Set Computer) nên tập lệnh PIC16F877A lệnh nhân, chia mà phép nhân chia thay thực liên tiếp nhiều phép cộng trừ cần lệnh ADD lệnh SUBB đủ Tính : -Đây 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 thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368 byte RAM nhớ liệu EEPROM với dung lượng 256byte Số PORT I/O với 33 pin I/O -Các đặc tính ngoại vi bao gồm khối chức sau: Timer0: đếm bit với chia tần số bit Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep Timer2: đếm bit với chia tần số, postcaler Hai Capture/so sánh/điều chế độ rông xung SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 12 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI I2C Chuẩn giao tiếp nối tiếp USART với bit địa Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR, CS bên -Các đặc tính Analog: kênh chuyển đổi ADC 10 bit Hai so sánh Bên cạnh vài đặc tính khác vi điều khiển như: Bộ nhớ flash với khả ghi xóa 100.000 lần Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần Dữ liệu nhớ EEPROM lưu trữ 40 năm Khả tự nạp chương trình với điều khiển phần mềm -Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thông qua chân Watchdog Timer với dao động Chức bảo mật mã chương trình Chế độ Sleep Có thể hoạt động với nhiều dạng Oscillator khác So sánh PIC với 8051: Chức Bộ nhớ chương trình Bộ nhớ liệu Port vào/ra AT9C51 4KB 128B RAM port, với 32 chân PIC16F877A 8K x 14bit 368B RAM, 256B EEPROM port, với 33 chân vào/ra Bộ định thời Mạch giao tiếp vào/ra 16 bit UART bit, 16 bit USART giao tiếp song song PSP giao tiếp nối tiếp đồng Capture/sosánh/PWM Chuyển đổi tương tự sang số Tập lệnh Ngắt SSP Không có Không có 10 bit 53 lệnh 35 lệnh nguồn tạo ngắt có 15 nguồn tạo ngắt không ưu tiên ưu tiên SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 13 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA Sơ đồ khối tính chân PIC16F877A: A/ Sơ đồ khối : Hình I.2 : Sơ đồ khối PIC16F877A -Như nói , vi điều khiển PIC có kiến trúc Harvard, CPU truy cập chương trình liệu hai bus riêng biệt, nên làm tăng đáng kể băng thông so với kiến trúc Von Neumann CPU truy cập chương trình liệu bus Việc tách riêng nhớ chương trình nhớ liệu cho phép số bit từ lệnh khác với số bit liệu Ở PIC 16F877A, từ lệnh dài 14 bit , từ liệu bit PIC 16F877A chứa ALU bit ghi làm việc WR (Working Register) ALU đơn vị tính toán số học logic, thực hiên phép tình số đại số Boole ghi SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 14 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA làm việc WR ghi liệu ALU thực phép cộng, trừ, dịch bit phép toán logic B/ Sơ đồ chân PIC16F877A: Hình I.3 : Sơ đồ chân PIC16F877A C/Tính chân : Tên Chân Loại Mô tả chức OSC1/CLKI 13 I Dao động tinh thể lối vào dao động OSC2/CLKO 14 O Dao động tinh thể lối xung nhịp MCLR/Vpp I/P RA0/AN0 I/O Vào/ số Lối vào analog RA1/AN1 I/O Vào/ số Lối vào analog Vào số lối vào analog Lối vào điện áp chuẩn V-ref ADC Lối Vref so sánh Lối vào reset Lối vào điện áp nạp trình Vpp RA2/AN2/V-reff/CVRef I/O RA3/AN3/V+Ref I/O Vào/ số Lối vào analog Lối vào điện áp chuẩn V-ref ADC RA4/TOCKI/C1OUT I/O Vào/ra số cực máng ngỏ Lối vào xung SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 15 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA cho timer Lối so sánh RA5/SS/AN4/C2OUT I/O Vào/ra số lối vào chọn SOI Lối vào analog lối so sánh RB0/INT 33 I/O Vào/ra số Lối vào ngắt RB1 34 I/O Vào/ra số RB2 35 I/O Vào/ra số RB3/PGM 36 I/O Vào/ra số Nạp trình LVP RB4 37 I/O Vào/ra số RB5 38 I/O Vào/ra số RB6 39 I/O Vào/ra số Xung nhịp nạp trình ICSP RB7 40 I/O Vào/ra số Dữ liệu nạp trình ICSP RC0/T1OSO/T1CKI 15 I/O Vào/ra số Tạo dao động timer Xung nhịp cho timer RC1/T1OSI/CCP2 16 I/O Vào/ra số Tạo timer1 Lối vào Capture Lối Compare2 Lối PWM2 RC2/CCP1 17 I/O Vào/ra số Lối vào Vào/ra số Capture1 Lối PWM1 RC3/SCK/SCL 18 I/O Vào/ra số Nhịp đồng choSPI I2C RC4/SDI/SDA 23 I/O Vào/ra số Vào liệu SPI Vào/ra liệu I2C RC5/SDO 24 I/O Vào/ra số Ra liệu SPI RC6/TX/CK 25 I/O Vào/ra số Cổng truyền thông không đồng Xung nhịp truyền đồng RC7/RX/DT 26 I/O Vào/ra số Cổng nhận không đồng Dữ liệu đồng RD0 19 I/O Vào/ra số Cổng song song tớ RD1 20 I/O Vào/ra số Cổng song song tớ RD2 21 I/O Vào/ra số Cổng song song tớ RD3 22 I/O Vào/ra số Cổng song song tớ RD4 27 I/O Vào/ra số Cổng song song tớ SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 16 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA RD5 28 I/O Vào/ra số Cổng song song tớ RD6 29 I/O Vào/ra số Cổng song song tớ RD7 30 I/O Vào/ra số Cổng song song tớ RE0/RD/AN5 I/O Vào/ra số Điều khiển RD cổng song song RE1/WR/AN6 I/O Vào/ra số Điều khiển WR cổng song song RE2/CS/AN7 I/O Vào/ra số Điều khiển CS cổng song song Vss 12,31 I/O Đất chung cho lối vào/ra analog Vdd 11,32 I/O Cấp nguồn dương 4.Tổ chức nhớ: -Có nhớ riêng biệt vi điều khiển PIC16F877A gồm: Bộ nhớ liệu, nhớ chương trình , nhớ EEPROM a) Bộ nhớ chương trình: - Bộ nhớ chương trình vi điều khiển PIC16F877A nhớ flash, dung lượng nhớ 8K word (1 word = 14 bit) phân thành nhiều trang (từ page đến page 3) Như nhớ chương trình có khả chứa 8*1024 = 8192 lệnh (vì lệnh sau mã hóa có dung lượng word (14 bit) -Khi vi điều khiển reset, đếm chương trình đến địa 0000h (Reset vector) Khi có ngắt xảy ra, đếm chương trình đến địa 0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm nhớ stack không địa hóa đếm chương trình SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 17 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA enable_interrupts (int_timer0); enable_interrupts (int_timer1 ) ; enable_interrupts ( global ); // cần dùng lần muốn có thay đổi đặc biệt b / disable_interrupts ( level ) _Level giống _Hàm vô hiệu ngắt cách set bit cho phép ngắt = _Disable_interrupts ( global ) set bit cho phép ngắt toàn cục =0 , cấm tất ngắt Không dùng hàm hàm phục vụ ngắt tác dụng, cờ ngắt bị xoá tự động c / clear_interupt ( level ) - level GLOBAL - Hàm xoá cờ ngắt ngắt định level d / ext_int_edge ( source , edge ) - Hàm thiết lập nguồn ngắt EXTx cạnh lên hay cạnh xuống - Source : nguồn ngắt Trên PIC 18 có nguồn ngắt chân EXT0 , EXT1 , EXT2 ứng với source = ,1 , Các PIC khác có nguồn EXT nên source = - edge : chọn cạnh kích ngắt , edge = L_TO_H chọn cạnh lên ( từ mức thấp chuyển lên mức cao ) hay H_TO_L chọn cạnh xuống SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 123 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH VB I GIỚI THIỆU NGÔN NGỮ VB: -VB 6.0 phiên Visual Basic hãng Microsoft viết ngôn ngữ lập trình mạnh sử dụng phương pháp lập trình hướng đối tượng nên giúp ích nhiều cho người lập trình nhờ vào khả tự động Ngoài phương pháp kinh điển xây dựng lớp đối tượng việc viết mã lệnh, với VB 6.0 ta thực công việc thao tác “kéo - thả” đối tượng hình để thiết kế ứng dụng cách nhanh chóng xác Bên cạnh công cụ hỗ trợ sẵn, người sử dụng tạo thêm công cụ khác để phục vụ cho mục đích riêng -Khác với ngôn ngữ Pascal, VB cho phép người sử dụng kiểm tra chương trình trình lập trình -Đây ngôn ngữ lập trình mạnh Nó sử dụng để viết nhiều chương trình ứng dụng công nghiệp SƠ LƯỢT VỀ VB: * Kiểu liệu Khái niệm: -Kiểu liệu tập hợp giá trị mà biến kiểu nhận tập hợp phép toán áp dụng giá trị Các kiểu liệu sở Visual Basic: Kiểu liệu Mô tả Boolean Gồm giá trị: TRUE & FALSE Byte Các giá trị số nguyên từ – 255 Integer Các giá trị số nguyên từ -32768 – 32767 Long Các giá trị số nguyên từ -2147483648 – 2147483647 Kiểu liệu thường SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 124 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA gọi số nguyên dài Single Các giá trị số thực từ -3.402823E+38 – 3.402823E+38 Kiểu liệu gọi độ xác đơn Double Các giá trị số thực từ -1.79769313486232E+308 - 1.79769313486232E+308 Kiểu liệu gọi độ xác kép Currency Dữ liệu tiền tệ chứa giá trị số từ -922.337.203.685.477,5808 922.337.203.685.477,5807 String Chuỗi liệu từ đến 65.500 ký tự hay ký số, chí giá trị đặc biệt ^%@ Giá trị kiểu chuỗi đặt dấu ngoặc kép (“”) Date Dữ liệu kiểu ngày tháng, giá trị đặt cặp dấu ## Việc định dạng hiển thị tùy thuộc vào việc thiết lập Control Panel Variant Chứa giá trị kiểu liệu khác, kể mảng * Hằng số: Khái niệm Hằng số (Constant) giá trị liệu không thay đổi Khai báo [Public|Private] Const [As ] = Trong đó, tên đặt giống theo quy tắc đặt tên điều khiển Ví dụ: Const g = 9.8 Const Num As Integer = 4*5 Ta dùng cửa sổ Object Browser để xem danh sách có sẵn VB VBA (Visual Basic for Application) Trường hợp trùng tên thư viện khác nhau, ta rõ tham chiếu [.][.] * Biến: -Khái niệm Biến (Variable) vùng lưu trữ đặt tên để chứa liệu tạm thời trình tính toán, so sánh công việc khác Biến có đăc điểm: - Mỗi biến có tên - Mỗi biến chứa loại liệu Khai báo [Public|Private|Static|Dim] [ As ] -Trong đó, tên biến: tên đặt giống quy tắc đặt tên điều khiển Nếu cần khai báo nhiều biến dòng khai báo cách dấu phẩy (,) -Nếu khai báo biến không xác định kiểu liệu biến có kiểu Variant -Khai báo ngầm: Đây hình thức không cần phải khai báo biến trước sử dụng Cách dùng thuận tiện gây số sai sót, chẳng hạn ta đánh nhầm tên biến, VB hiểu biến dẫn đến kết chương trình sai mà khó phát -Ví dụ: Dim Num As Long, a As Single SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 125 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA Dim Age As Integer -Khai báo tường minh: Để tránh rắc rối nêu trên, ta nên quy định VB báo lỗi gặp biến chưa khai báo dòng lệnh: Option Explicit phần Declaration (khai báo) mô-đun Option Explicit có tác dụng mô-đun ta phải đặt dòng lệnh mô-đun biểu mẫu, mô-đun lớp hay mô-đun chuẩn * Biểu thức: -Khái niệm:toán tử hay phép toán (Operator): từ hay ký hiệu nhằm thực phép tính xử lý liệu Toán hạng: giá trị liệu (biến, hằng…) Biểu thức: tập hợp toán hạng toán tử kết hợp lại với theo quy tắc định để tính toán giá trị *Các loại phép toán: -Các phép toán số học: Thao tác giá trị có kiểu liệu số Phép toán Ý nghĩa Kiểu đối số Kiểu kết - Phép lấy số đối Kiểu số (Integer, Single…) Như kiểu đối số + Phép cộng hai số Kiểu số (Integer, Single…) Như kiểu đối số - Phép trừ hai số Kiểu số (Integer, Single…) Như kiểu đối số * Phép nhân hai số Kiểu số (Integer, Single…) Như kiểu đối số / Phép chia hai số Kiểu số (Integer, Single…) Single hay Double \ Phép chia lấy phần nguyên Integer, Long Integer, Long Mod Phép chia lấy phần dư Integer, Long Integer, Long ^ Tính lũy thừa Kiểu số (Integer, Single…) Như kiểu đối số -Các phép toán quan hệ: _Đây phép toán mà giá trị trả chúng giá trị kiểu Boolean (TRUE hay FALSE) Phép toán Ý nghĩa = So sánh So sánh khác > So sánh lớn < So sánh nhỏ SVTH: Nguyễn Trường Giang-Nguyễn Thế Hải Đăng Trang 126 Đồ Án Tốt Nghiệp Khóa 2008-2011 GVHD : ĐINH THỊ THANH HOA >= So sánh lớn

Ngày đăng: 07/09/2017, 08:48

Từ khóa liên quan

Mục lục

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

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

Tài liệu liên quan