1. Trang chủ
  2. » Thể loại khác

Đồ án điều khiển động cơ DC dùng psoc

100 5 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 100
Dung lượng 3,73 MB

Nội dung

Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp Mở đầu Công nghệ CSoC thực công nghệ u việt tích hợp Processor nhớ RAM, FLASH, cho phép ta lập trình thuật xử lý phức tạp cách dễ dàng ngôn ngữ C Assembler So với vi ®iỊu khiĨn th«ng dơng nh 8051, Motorola 68HC908, Microchip PIC16#73 có cấu trúc CPU ngoại vi cố định (fixel digital and analog penpherals) chíp CSoC có khả mềm dẻo thích ứng với đa dạng ứng dụng khả tái cấu hình (reconfigurable) tạo thành nhiều loại chip khác chip thời ®iĨm kh¸c mét øng dơng VÝ dơ chip CSoC cđa h·ng Cypress Micro System, ta cã thĨ thiÕt kế cho thành chip điều khiển ổn định nhiệt độ lò, ổn định điều khiển chiều quay, tốc độ quay động điện Công nghệ chế tạo chip thông minh đo lờng điều khiển sở CSoC có tính hiệu kinh tế, chip PSoC Cypress Micro System có khả xử lý hỗn hợp liệu tơng tự số Nó cho ta khả phát triển sản phẩm nhanh dễ dàng mở rộng chức sau Công nghệ cho nhiều giải pháp lựa chọn hỗ trợ đa dạng øng dơng tõ ®o lêng, ®iỊu khiĨn, xư lý, trun thông, kết nối mạng chip với giá thành thấp Hệ thống phần mềm hỗ trợ thiết kế chip PSoC Disigner Cypress Micro System có đầy đủ chức thiết kế, xếp khối chức năng, mô phỏng, lập trình, tìm lỗi nạp chíp đại, có module ứng dụng (user module) phong phú giúp ta lập trình ngôn ngữ HDL (Hardware Description Languages) vừa khó bao quát, vừa không hiệu Ngoài giá thành chíp PSoC trắng từ 1- USD/ chip rẻ nhiều so chip ngoại khác hội cho doanh nghiệp nhóm say mê nghiên cứu, sáng tạo đạt đến Nhóm SV Thực Hiện: Lớp CĐ ĐT 1-K3 Kim Duyên -1- GVHD:Hà Thị Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp thành công lớn với sản phẩm độc đáo có chip thông minh chứa ý tởng sáng tạo bí riêng Trong số hÃng cung cấp công nghệ CSoC, công nghệ PSoC hÃng Cypress Micro System phù hợp cho đo lờng điều khiển do: + Là công nghệ (đợc bình chọn công nghệ sáng tạo năm 2001) giới đợc định hớng để phát triển chip thông minh cho thiết bị đo lờng điều khiển có số lợng lớn giá thành thấp + Là chip giới cho phép tạo chip có processor khả xử lý đồng thời tín hiệu tơng tự, số truyền thông phong phú công nghệ CSoC có (Mix Signal Divice) Các giải pháp Processo + FPGA hÃng altera Xilinx hÃng khác cho phép ta tạo chip số có Processor(Digital IC) số chức analog cố định + Là công nghệ có chức nhân cứng (MCA0 cho phép phát triĨn c¸c tht to¸n xư lý nhanh c¸c phÐp tÝnh nh chip DSP (Digital Signal Processing) + Đầu t cho công cụ phát triển, hệ thống phần mền thiết kế chip IP (Intellectual Properties) rẻ nhiều so với công cụ phát triển phần mền thiết kế FPGA + Giá thành chip trắng PSoC cho nghiên cứu phát triển sản xuất loại nhỏ, loại lớn rẻ nhiều lần so với chip FPGA + Phơng pháp thiết kế chip vợt khỏi ràng buộc ngôn ngữ thiết kế HDL phức tạp, hiệu mà áp dụng phơng pháp lập trình theo khối chức mức cao nên thời gian thiết kế chế tạo chip đợc rút ngắn đáng kể + Là công nghệ tiên tiến nớc nhng lại phù hợp trình độ nghiên cứu Việt Nam có công cụ hỗ trỡ đại giúp cho sở Việt Nam đễ dàng nhanh chóng tạo đợc -2- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp sản phẩm phục vụ thiết thực cho sản xuất đời sống Chơng 1: giới thiệu psoc PSoC tõ viÕt t¾t cđa cơm tõ tiÕng anh Programmable system on chip, nghĩa hệ thống khả trình chíp Các chíp chế tạo theo công nghệ PSoC cho phép thay đổi đợc cấu hình cách gán chức cho khối tài nguyên có sẵn chíp Hơn kết nối tơng đối mềm dẻo khối chức với khối chức với cổng vào Chính vËy mµ PSoC cã thĨ thay thÕ cho nhiỊu chøc cho hệ thống chíp đơn Thành phần chíp PSoC bao gồm khối ngoại vi số tơng tự cấu hình đợc, vi xử lý bit, nhớ chơng trình (EEROM) lập trình đợc nhớ Ram lớn Để lập trình hệ thống, ngời sử dụng đợc cung cấp phần mềm lập trình, ví dụ nh cho chíp -3- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp PSoC Cypress ngời lập trình phải có phần mềm PSoC Designer Ngoài để cài đợc chơng trình điều khiển vào chíp ngời lập trình phải có kit phát triển hÃng chế tạo chíp cung cấp (hoặc nạp) Phần mền thiết kế đợc xây dựng sở hớng đối tợng với cấu trúc module hoá Mỗi khối chức module mỊm ViƯc lËp cÊu h×nh cho chÝp nh thÕ tuỳ thuộc vào ngời lập trình thông qua mét th viƯn chn Ngêi lËp tr×nh thiÕt lËp cÊu hình chíp đơn giản cách muốn chíp có chức kéo chức thả vào khối tài nguyên số tơng tự, hai tuỳ theo chức (phơng pháp lập trình kéo thả) Việc thiết lập ngắt chân nào, loại ngắt gì, chân vào hoạt động chế ®é nh thÕ nµo ®Ịu phơ thc vµo viƯc thiÕt lập ngời lập trình thiết kế lập trình cho PSoC Với khả đặt cấu hình mạnh mẽ này, thiết bị đo lờng đợc gói gọn chíp đơn Chính lý đó, hÃng Cypress MicroSystems đà không gọi sản phẩm vi điều khiển ( C) nh truyền thống, mà gọi Thiết Bị PSoC (PSoc device), họ hi vọng rằng, với khả đặt cấu hình mạnh mẽ, ngời sử dụng có đợc thiết bị điều khiển, thiết bị có giá rẻ, kích thớc nhỏ gọn, sản phẩm PSoC họ thay đợc thiết bị dựa vi xử lý vi điều khiển đà có tõ tr íc ®Õn ChÝp PSoC (CY8C27xxx) cung cÊp: *Bé vi xư lý víi cÊu tróc Harvard - Tèc ®é cđa bé vi xư lý lªn ®Õn 24MHz - LƯnh nh©n bit x bit, ghi tÝch luỹ 32 bit - Hoạt động tốc độ cao mà lợng tiêu hao - Dải điện áp hoạt động tốc độ cao từ 3.0 đến 5.25V - Điện áp hoạt động giảm xuống 1V sử dụng chế độ kích điện áp - Hoạt động dải nhiệt độ từ -40oc đến 85oc *Các khối ngoại vi sử dụng độc lập kết hợp -4- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp 12 khối ngoại vi tơng tự đợc thiết lập để làm nhiệm vụ : + Các ADC lên tới 14 bit + Các DAC lên tới bit + Các khuếch đại lập trình đợc hệ số khuếch đại + Các lọc so sánh lập trình đợc Hình 1.1: Sơ đồ khối cấu trúc PSoC(CY8C27xx) *8 khối ngoại vi đợc thiết lập để làm nhiệm vụ: - Các định thời đa chức năng, đếm kiện, đồng hồ thời gian thực, điều chế độ rộng xung có dải an toàn (deadband) -5- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp - Các module kiểm tra lỗi (CRC modunles) - Hai truyền thông nối tiếp không đồng hai chiều - Các truyền thông SPI Master Slave cấu hình đợc - Có thể kết nối với tất chân vào *Bộ nhớ linh hoạt chíp - Không gian nhớ chơng trình Flash từ 4K đến 16K, phụ thuộc vào loại chíp với chu kỳ ghi xoá cho nhớ 50.000 lần - Không gian nhớ Ram 256byte - Chíp lập trình thông qua chuẩn nối tiếp (ISP) - Bộ nhớ Flash đợc cung cấp phần - Chế độ bảo mật đa tin cậy - Có thể tạo đợc không gian nhớ Flash chíp lên tới 2.304 byte *Có thể lập trình đợc cấu hình cho chân chíp - Các chân vào ba trạng thái sử dụng Trigger Schmitt - Đầu logic cung cấp dòng 25mA với điện trở treo cao thấp bên - Thay đổi đợc ngắt chân - Đờng tơng tự cung cấp dòng tới 40mA - Đờng đa chức từ đến 44 tuỳ thuộc vào loại chíp *Xung nhịp chíp lập trình đợc - Bộ tạo xung dao động 24/48MHz bên trong(Độ xác 2,5% không cần thiết bị ngoài) - Có thể lựa chọn dao động lên tới 24MHz - Bộ tạo dao động thạch anh 32,768KHz bên - Bộ tạo dao động tốc độ thấp bên sử dụng cho Watchdog Sleep *Ngoại vi đợc thiết lập sẵn -6- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp - Bộ định thời Watchdog Sleep phục vụ chế độ an toàn chế độ nghỉ - Module truyền thông I2C Master I2C Slave tốc độ lên tới 400KHz - Module phát điện áp thấp đợc cấu hình ngời sử dụng *Công cụ phát triển - Phần mềm phát triển miễn phí (PSoCTMDesigner) - Bộ lập trình mô với đầy đủ tính - Mô tốc độ cao -7- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt NghiƯp Ch¬ng 2: cÊu tróc vi xư lý 2.1 Bé vi xư lý – CPU 2.1.1 Giíi thiƯu chung C¸c họ chíp PSoC dựa vi xử lý mạnh mÏ bit víi cÊu tróc Harvart (cÊu tróc Harvart cấu trúc mà bus địa chỉ, bus liệu tín hiệu điều khiển nhớ chơng trình nhớ liệu độc lập nhau) Nó có ghi điều khiển hoạt động CPU Những ghi bị tác động lệnh khác Ngêi sư dơng cã thĨ truy cËp trùc tiÕp vào ghi thông qua không gian nhớ ghi Các ghi CPU đợc cho b¶ng sau: Thanh ghi Flags (Thanh ghi cê) Program Counter (Thanh ghi đếm chơng trình ) Accumulator (Thanh ghi chøa) Stack Pointer (Thanh ghi trá) Index (Thanh ghi số) Bảng 2-1: Các ghi CPU Mà gợi nhớ CPU_F CPU_PC CPU_A CPU_SP CPU_X Bộ đếm chơng trình ghi 16 bit (CPU_PC), cho phép ngời lập trình truy cập trực tiếp vào toàn không gian nhớ chơng trình chíp (16 kbytes thành viên lớn nhất) Đây không gian nhớ liên tục không cần phải tạo thành trang(no paging) Thanh ghi chứa (Accumulator) ghi đa mục đích, thờng đợc sử dụng để lu giữ kết lệnh sử dụng chế độ địa nguồn Thanh ghi số đợc dùng để lu giữ giá trị Offset (độ lệch) chế độ địa chỉ số Tiêu biểu đợc dùng để địa khối liệu bên không gian nhớ liệu Thanh ghi trỏ Stack (Stack Pointer) lu giữ địa đỉnh ngăn Stack không gian liệu Nó bị tác động -8- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp lệnh nh lµ PUSH, POP, LCALL, RETI vµ RET Nãi chung lµ tất lệnh có liên quan đến Stack phần mềm ảnh hởng lệnh SWAP vµ lƯnh ADD Thanh ghi cê (Flags) cã ba bit trạng thái: bit cờ không Zero Flag bit [1]; bit cê nhí – Carry Flag bit[2]; bit Supervisory State [3] Bít cho phép ngắt toàn cục- Global Interrupt Enable bit[0] đợc dùng phép cấm toàn ngắt Các cờ bị ảnh hởng lệnh toán học, lệnh logic vv 2.1.2 Thanh ghi CPU 2.1.2.1 Thanh ghi cê (Flags Register) Bit # POR Read/Wri te Bit Name … … … RW R RW 1 RW 0 RW Resev ed Resev ed Resev ed XI0 Sup er Carr y Zer o Global IE B¶ng 2-2: Thanh ghi cê CPU_F Bit7: Reseved (Cha đợc định nghĩa) Bit6: Reseved(Cha đợc định nghĩa) Bit5: Reseved(Cha đợc định nghĩa) Bit4: XIO- Đợc đặt ngời sử dụng cho phép lựa chọn dẫy ghi 0=Bank0 1=Bank1 Bit3: Reseved(Cha đợc định nghĩa) Bit2: Carry Đợc đặt CPU để rõ toán tử logic toán học trớc có nhớ hay không 0=No Carry(Không có nhớ) 1=Carry (Có nhớ) Bit1: Zero Đợc đặt CPU để rõ toán tử phép toán logic toán học trớc có không hay kh«ng 0= Not Equal to zero (kh«ng b»ng kh«ng) 1= Equal to zero (Bằng không) -9- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp Bit0: Global IE- Quyết định toàn ngắt cho phÐp hay bÞ cÊm 0= Disabled(CÊm) 1= Enabled(cho phÐp) 2.1.2.2 Thanh ghi chøa Bit # POR Read/Wri te Bit Name Syste m1 Data[7 ] Syste m1 Data[6 ] Syste m1 Data[5 ] Syste m1 Data[4 ] Syste m1 Data[3 ] Syste m1 Data[2 ] Syste m1 Data[1 ] 0 Syste m1 Data[0 ] B¶ng 2-3: Thanh ghi chøa(CPU-A) Bit [7:0]: bit d÷ liƯu lu giữ kết lệnh toán học logic sử dụng chế độ địa nguồn POR(Power on reset): Trạng thái bit sau reset nguồn System1: Do hệ thống điều chỉnh, ngời dùng thay đổi trực tiếp đợc giá trị bit 2.1.2.3 Thanh ghi chØ sè Bit # POR Read/Wri te Bit Name Syste m1 Data[7 ] Syste m1 Data[6 ] Syste m1 Data[5 ] Syste m1 Data[4 ] Syste m1 Data[3 ] Syste m1 Data[2 ] Syste m1 Data[1 ] 0 Syste m1 Data[0 ] Bảng2-4: Thanh ghi số(CPU-X) Bit [7:0]: bit liƯu lu gi÷ chØ sè cho bÊt cø mét lƯnh sử dụng chế độ địa chỉ số 2.1.2.4 Thanh ghi trá Stack Bit # POR Read/Wri te Bit Name Syste m1 Data[7 ] Syste m1 Data[6 ] Syste m1 Data[5 ] Syste m1 Data[4 ] Syste m1 Data[3 ] Syste m1 Data[2 ] Syste m1 Data[1 ] 0 Syste m1 Data[0 ] B¶ng 2-5: Thanh ghi trá Stack (CPU-SP) Bit [7:0]: bit liệu lu giữ giá trị trỏ Stack thời (trỏ vào đỉnh Stack) -10- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp Ta sử dụng phần mền PSoC designer để lập trình cho chip PSoC Sau bớc làm : + Míi vµo ta chän ‘start new project’ + Sau đánh tên project chọn nơi đặt project + Sau suất bảng hỏi project cha tồn ,có muốn tạo không,ta chọn YES: + Chọn loại chip PSoC ta định sử dụng,ở ta chọn loại CY8C27443 ngôn ngữ lập trình ngôn ngữ C : -86- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp User modul LCD kh«ng sư dơng bÊt cø mét khèi PsoC sè hay tơng tự Trớc thiết lập thông số cho User modul LCD ,ta thiết lập thông số toµn cơc: * CPU_Clock: Chän 12MHz * 32K_Select: Chän Internal * PLL_MODE: Chän Disable ( PLL chØ chän enabled nguồn dao động 32K dao động ) * Sleep_Timer: Để mặc định 512_Hz * VC1= SysClk/N: Để mặc định * VC2= VC1/N: Để mặc định * VC3 Source: Để mặc định SysClk/1 * VC3 Divider: Để mặc định * SysClk Source: Để mặc định Internal 24_MHz * SysClk *2 Disable: Để mặc định No * Analog Power: Để mặc định SC On/Ref Low * Ref Mux: Để mặc định (Vdd/2) Bandgap * AGndBypass: Để mặc định Disabled * Op-Amp Bias: Để mặc định Low * SwitchModePump: Để mặc định Off -87- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp * Trip Voltage [LVD (SMP)]: Để mặc định 4.64V (5.00V) * LVD ThrottleBack: Để mặc định Disable * Supply Voltage: Để mặc định 5.0V * Watchdog Enable: Để mặc định Disable + Trong ứng dụng ta sư dơng c¸c User modul LCD sau: + Sau thiết lập song thông số Usermodul ta phải Generate Application (phát mà cho trình viết mà ) cách chọn nút công cụ: chọn :Config\Generate Application menu, để phát mà cho trình viết mà Chờ báo thành công: + Sau phát mà song ta chuyển sang cửa sổ Application Editor để viết mà cách chọn biểu tợng: công cụ.Hoặc chọn :View\Application Editor menu Sau chơng trình đà lập trình file main.asm : // -// C main line // -//Cac chan giao tiep: // Tin hieu xung vao bo Couter tai chan P0.2 // Tin hieu xung dieu khien to tai chan P0.4 -88- Nghiªn Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt NghiÖp // Tin hieu dieu khien chieu quay tai chan P0.5 voi //logic // '0':Quay THUAN // '1':Quay NGUOC // // -#include // Khai bao cac thu vien #include "PSoCAPI.h" #include "math.h" #include "tools.h" WORD countvalue,Vref,temp,treTN; // Khai bao bien toan cuc BYTE dis2,testdir; BOOL overflow,newdata,direct,olddir; // -Cac ham ngat -#pragma interrupt_handler Counter16_1_int ; #pragma interrupt_handler PWM16_1_int ; void Counter16_1_int() { overflow=1; } void PWM16_1_int() { Counter16_1_Stop(); countvalue=Counter16_1_wReadCounter(); Counter16_1_WritePeriod(0xffff); Counter16_1_Start(); newdata=1; dis2++; if (dis2>7) dis2=0; //Dung de doi su hien // thi:chieuVref } // chuong trinh 89- Nghiªn Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt NghiÖp void intel_tre(char ib) { while(ib>0) { ib ; LCD_1_Delay50uTimes(0xc8); if(newdata==1) goto thoat_tre; } thoat_tre: ; } //Ket thuc ham 'tre' // -Chuong trinh chinh void main() { char tg,xpos,i; //Bien cuc bo word pulsewidth2,tg1; M8C_SetBank0; //;;;;;;;Thiet lap cac thong so;;;;;;;;;;;;;;; LCD_1_Start(); LCD_1_Control(1); LCD_1_Control(0x0e);//LCD_1_CURSOR_ON LCD_1_Control(0x0f);//LCD_1_CURSOR_BLINK LCD_1_Position(0,1); LCD_1_PrCString("Dat TOC DO"); LCD_1_Position(1,0); LCD_1_PrCString("(V/Ph):"); Vref=GetDeci(1,7); //;;;;;;;;;; tre(30); LCD_1_Control(1); LCD_1_Control(0x0e);//LCD_1_CURSOR_ON LCD_1_Control(0x0f);//LCD_1_CURSOR_BLINK LCD_1_Position(0,0); -90- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp LCD_1_PrCString("Dat CHIEU QUAY:"); LCD_1_Position(1,0); LCD_1_PrCString("0:Thuan-1:Nguoc"); LCD_1_Position(0,15); while(Readkey()!=0x84) { if (Readkey()==0x82) { direct=0; tg=direct; LCD_1_Position(0,15); LCD_1_WriteData(htBCD(tg)); } if (Readkey()==0x11) { direct=1; tg=direct; LCD_1_Position(0,15); LCD_1_WriteData(htBCD(tg)); } } //;;;;;;;;;;;;;;;;; tre(30); LCD_1_Control(1);// LCD_1_Control(0x0e);//LCD_1_CURSOR_ON LCD_1_Control(0x0f);//LCD_1_CURSOR_BLINK LCD_1_Position(0,1); LCD_1_PrCString("Dat TG TRE khi"); LCD_1_Position(1,0); LCD_1_PrCString("dao chieu(s):"); treTN=GetDeci(1,13); treTN=treTN*100; ///;;;;;;;;;;Khoi tao cac gia tri & User Modul;;;;;;;;; -91- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp M8C_SetBank0; // khoi tao gia tri mac dinh ban dau olddir=direct; if (direct==0) PRT0DR=PRT0DR&0b01111111; else PRT0DR=PRT0DR|0b10000000; newdata=0; overflow=0; pulsewidth2=936; //50%do rong xung cua PWM16_2_ // khoi dong cac User Modul dis2=0; Counter16_1_Start(); PWM16_1_Start(); PWM16_2_Start(); // Cho phep ngat Counter16_1_EnableInt(); PWM16_1_EnableInt(); // PWM16_2_EnableInt(); INT_VC=0; // Xoa ghi ngat M8C_EnableGInt; //;;;;;;;;;;;;;Bat dau lam viec;;;;;;;;;;;;;;; LCD_1_Control(1);// LCD_1_Control(0x0c);//LCD_1_CURSOR_OFF while(1) { while(1) {//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; while(newdata==0) { if (Readkey()==0x82) direct=0; if (Readkey()==0x11) direct=1; -92- Nghiên Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt Nghiệp if (Readkey()==0x88) goto stop; LCD_1_Position(0,0); LCD_1_PrCString("TOC DO:"); LCD_1_Position(0,12); LCD_1_PrCString("V/Ph"); intel_tre(15); LCD_1_Position(0,0); LCD_1_PrCString(" "); LCD_1_Position(0,12); LCD_1_PrCString(" "); intel_tre(15); } if(overflow==1) { countvalue=65535; newdata=0; overflow=0; } xpos=10; countvalue=~countvalue; countvalue=countvalue*2; //Dieu chinh toc if (countvalue1874) pulsewidth2=1874; PWM16_2_Stop(); PWM16_2_WritePulseWidth(pulsewidth2); PWM16_2_Start(); } if (countvalue>Vref) -93- Nghiªn Cứu, Phát Triển, ứng Dụng Chip PSoC Đồ án Tốt NghiÖp { pulsewidth2-=2;//giam 0.125 % toc dong co if (pulsewidth2

Ngày đăng: 24/10/2022, 19:20

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w