Đề tài Đo và điều khiển nhiệt độ phòng

* Ưu điểm: - Hệ thống đo, điều khiển và giám sát nhiệt độ phòng này có tính ứng dụng thực tế cao, có thể ứng dụng để điều khiển nhiệt độ trong phòng. - Hệ thống đơn giản, dễ vận hành bằng việc sử dụng máy tính để điều khiển và tự động hóa quá trình giám sát các thiết bị. * Nhược điểm: - Hệ thống chỉ mang tính mô phỏng nên còn đơn giản, chỉ dừng lại ở việc đo và hiển thị Nhiệt độ. * Hướng cải thiện: - Ta có thể kết hợp hệ thống với các loại cảm biến để tăng khả năng điều khiển và giám sát nhiệt độ phòng - Ta có thể đưa mô hình này ra ứng dụng thực tế với mô hình lớn hơn, hoàn thiện hơn.

docx30 trang | Chia sẻ: lylyngoc | Lượt xem: 5489 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đề tài Đo và điều khiển nhiệt độ phòng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Đồ án môn: Đo lường và điều khiển bằng máy tính Trường Đại học Công Nghiệp Hà Nội Khoa Cơ Khí Đồ án môn : Đo Lường Và Điều Khiển Bằng Máy Tính Đề tài :    Đo Và Điều Khiển Nhiệt Độ Phòng Giáo viên hướng dẫn :  ĐỖ DUY PHÚ Nhóm sinh viên thực hiện :  TRẦN THỊ HẠNH NGUYỄN VĂN HIỂN PHẠM VĂN NAM TRẦN VĂN TÙNG Lớp : ĐH Cơ Điện Tử 1-K4 Hà Nội 09/2012 Đo và điều khiển nhiệt độ phòng Page 1 Đồ án môn: Đo lường và điều khiển bằng máy tính LỜI MỞ ĐẦU . Ngày nay, khi công nghiệp tự động hóa ngày càng phát triển thì việc sử dụng máy tính để điều khiển các hệ thống tự động đã trở nên rất phổ biến. Với một chiếc máy tính và một số thao tác chúng ta có thể điều khiển được cả một dây truyền sản xuất tự động, các hệ thống đèn điện… Máy tính có thể giao tiếp với các thiết bị ngoài thông qua cổng RS232 ( cổng nối tiếp), cổng LPT ( cổng song song ), qua các khe cắm mở rộng ISA … Trong công nghiệp thông dụng nhất hiện nay là sử dụng RS232 và LPT để máy tính giao  tiếp  với  mạch  ngoài. Ngôn  ngữ lập trình  được  sử dụng có  thể  là Visual Basic, Turbo Pascan, hay ngôn ngữ lập trình C… Với kiến thức được học trên lớp và qua quá trình tìm tòi học hỏi chúng em đã thực hiện   đồ án “Thiết kế mô hình đo và điều khiển nhiệt độ phòng sử dụng cổng nối tiếp ”Trong quá trình thiết kế chắc không thể tránh được những thiếu sót, vì vậy chúng em rất mong nhận được sự nhận xét và đóng góp của thầy cô giáo. Chúng em xin chân thành cảm ơn! NHÓM SINH VIÊN Trần Thị Hạnh Nguyễn Văn Hiển Phạm Văn Nam Trần Văn Tùng Đo và điều khiển nhiệt độ phòng Page 2 Đồ án môn: Đo lường và điều khiển bằng máy tính Mục lục CHƯƠNG I:GIỚI THIỆU I.Đề tài. II.Sơ đồ khối III.Chức năng các khối. CHƯƠNG II: CƠ SỞ LÝ THUYẾT I. Giao tiếp cổng nối tiếp của máy tính. 1.Giới thiêu cổng nối tiếp của máy tính 2.Giới thiệu vi mạch Max232 II. Giao tiếp cổng nối tiếp của vi điều khiển AT89S52. 1.Sơ đồ và chức năng chip AT89S52 2.Chíp ADC0804 3.Cảm biến nhiệt độ LM35 III  Phần mềm lập trình Visual basic 6.0. 1.Truyền thông nối tiếp của Visual basic. 2. Sự kiện OnComm. CHƯƠNG III: THIẾT KẾ HỆ THỐNG I Sơ đồ nguyên lí của hệ thống 1.Mạch in 2.Mạch nguyên lý II. Chương trình điều khiển. 1.Lưu đồ thuật toán 2.Chương trình VB trên máy tính. 3.Chương trình trong vi điều khiển AT89S52. CHƯƠNGIV : KẾT LUẬN *Ưu điểm: *Nhược điểm: Đo và điều khiển nhiệt độ phòng Page 3 Đồ án môn: Đo lường và điều khiển bằng máy tính CHƯƠNG I:GIỚI THIỆU I. Đề tài. -.  Thiết kế mô hình đo và điều khiển nhiệt độ phòng Chức năng của hệ thống: + Hệ thống thực hiện đo và điều khiển giám sát nhiệt độ phòng. + Máy tính cho phép đặt và hiển thị nhiệt độ trong phòng. II. Sơ đồ khối MÁYTÍNH KHỐI CHUYỂN ĐỔI: MAX232 KHỐI XỬ LÍ TRUNG TÂM (IC 89S52 ) KHỐI CHYỂN ĐỔI (ADC0804) KHỐI THIẾT BỊ ỨNG DỤNG ( ĐIỀU HÒA, QUẠT…) NHIỆT ĐỘ MÔI TRƯỜNG KHỐI CẢM BIẾN (LM35) Đo và điều khiển nhiệt độ phòng Page 4 Đồ án môn: Đo lường và điều khiển bằng máy tính III. Chức năng các khối. - Máy tính: Phần mềm điều khiển và giám sát được thiết kế trên máy tính có chức năng gửi các tín hiệu điều khiển qua cổng nối tiếp của máy tính đến mạch điều khiển, đồng thời nhận các tín hiệu về trạng thái hoạt động của các thiết bị và hiển thị trên giao diện của phần mềm. - Khối xử lí trung tâm: Có nhiệm vụ đọc tín hiệu điều khiển từ máy tính rồi điều khiển các thiết bị ứng dụng(điều hòa, quạt…), đồng thời gửi các tín hiệu về trạng thái hoạt động của thiết bị lên máy tính. - Các thiết bị ứng dụng: được hoạt động dựa trên việc điều khiển các khối trên. - Khối cảm biến(LM35): Sử dụng để biến đổi đại lượng vật lí (nhiệt độ) thành tín điện để đưa tới bộ xử lí trung tâm. - Khối chuyển đổi ADC0804: dùng để chuyển đổi tín hiệu tương tự lấy ra từ khối cảm biến thành tín hiệu số để đưa vào bộ vi điều khiển. - Khối chuyển đổi Max232: Dùng để chuyển đối dữ liệu song song sang dữ liệu nối tiếp và ngược lại, để tương thích với dữ liệu trên máy tính và vi điều khiển Đo và điều khiển nhiệt độ phòng Page 5 Đồ án môn: Đo lường và điều khiển bằng máy tính CHƯƠNG II: CƠ SỞ LÝ THUYẾT I. Giao tiếp cổng nối tiếp của máy tính Giới thiệu cổng nối tiếp của máy tính Cổng nối tiếp  RS-232 của máy tính  là một giao diện phổ biến rộng rãi.  Cổng này còn được gọi là cổng COM (COM1,COM2…) hoặc cổng RS232. Chuẩn RS232 chỉ cho phép sử dụng đường truyền ngắn với tốc độ bít thấp. Các tiêu chuẩn truyền thông ra đời sau như RS-422, RS-449 hay RS-485 cho phép truyền với khoảng cách dài và tốc độ bít rất cao. Giống như cổng máy in cổng nối tiếp được sử dụng khá rộng rãi và thuận tiện cho việc ghép nối máy tính với các thiết bị ngoại vi khác. Khoảng cách truyền ở cổng nối tiếp được cải thiện hơn so với cổng song song vì điện áp chênh lệch Đồ án môn: Đo lường và điều khiển bằng máy tính Bảng 1: Chức năng các chân tín hiệu ở cổng nối tiếp Chân Kí hiệu Ý nghĩa 1 2 3 4 5 6 7 8 9 DCD RXD TXD DTR GND DSR RTS CTS RI Data carrier detect- Phát hiện tín hiệu mang dữ liệu Receive data- Nhận dữ liệu Transmit data – Truyền dữ liệu Data terminal- Dữ liệu đầu cuôi sẵn sang Signal ground- Nối đất Data set ready- Dữ liệu sẵn sang được nhận Request to send – Tín hiệu yêu cầu gửi Clear to send- Tín hiệu yêu cầu xóa để gửi tiếp Ring indicator- Báo chuông RS232 sử dụng phương thức truyền thông không đối xứng, tức là sử dụng tín hiệu điện áp chênh lệch giữa một dây dẫn và đất. Do đó ngay từ đầu tiên ra đời nó đã mang vẻ lỗi thời của chuẩn TTL, nó vấn sử dụng các mức điện áp tương thích TTL để mô tả các mức logic 0 và 1. Ngoài mức điện áp tiêu chuẩn cũng cố định các giá trị trở kháng tải được đấu vào bus của bộ phận và các trở kháng ra của bộ phát. Mức điện áp của tiêu chuẩn RS232C ( chuẩn thường dùng bây giờ) được mô tả như sau: + Mức logic 0 : +3V , +12V + Mức logic 1 : -12V, -3V T ham số chính đặc trưng cho quá trình truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận dữ liệu hay còn gọi là tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được trong thời gian 1 giây hay số bit truyền được trong thời gian 1 giây. Tốc độ bit này phải được thiết lập ở bên phát và bên nhận đều phải có tốc độ như nhau ( Tốc độ giữa vi điều khiển và máy tính phải chung nhau 1 tốc độ truyền bit). Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ Baud. Tốc độ Baud liên quan đến tốc độ mà phần tử mã hóa dữ liệu được sử dụng để diễn tả bit được truyền còn tôc độ bit thì phản ánh tốc độ thực tế mà các bit được truyền Vì một phần tử báo hiệu sự mã hóa một bit nên khi đó hai tốc độ bit và tốc độ baud là phải đồng nhất. Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 28800, 38400, 56000, 115200 … Trong thiết bị Đây là một tham số đặc trưng của RS232. Tham số này chính là đặc trưng cho quá trình truyền dữ liệu qua cổng nối họ thường dùng tốc độ là 19200 Khi sử dụng chuẩn nối tiếp RS232 thì yêu cầu khi sử dụng chuẩn là thời gian chuyển mức logic không vượt quá 4% thời gian truyền 1 bit. Do vậy, nếu tốc độ bit càng cao thì thời gian truyền 1 bit càng nhỏ thì thời gian chuyển mức logic càng phải nhỏ. Điều này làm giới hạn tốc Baud và khoảng cách truyền. Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện theo kiểu không Đồng bộ.Do vậy nên tại một thời điểm chỉ có một bit được truyền (1 kí tự) Bộ truyềngửi một bit bắt đầu (bit start) để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp theo . Bit này luôn bắt đầu bằng mức 0.. Tiếp theo đó là các bit dữ liệu (bits data) được gửi dưới dạng mã ASCII( có thể là 5,6,7 hay8 bit dữ liệu) Sau đó là một Parity bit ( Kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit stop có thể là 1, 1,5 hay 2 bit dừng. 4) Các mức điện áp đường truyền Giới thiệu vi mạch Max 232 Vi mạch MAX 232 của hãng MAXIM là một vi mạch chuyên dùng trong giao diện nối tiếp với máy tính. Chúng có nhiệm vụ chuyển đổi mức TTL ở lối vào thành mức +10V hoặc –10V ở phía truyền và các mức +3 => +15V hoặc -3=>-15V thành mức TTL ở phía nhận. Vi mạch MAX 232 có hai bộ đệm và hai bộ nhận. Đường dẫn điều khiển lối vào CTS, điều khiển việc xuất ra dữ liệu ở cổng nối tiếp khi cần thiết, được nối với chân 9 của vi mạch MAX 232. Còn chân RST (chân 10 của vi mạch MAX ) nối với đường dẫn bắt tay để điều khiển quá trình nhận. Thường thì các đường dẫn bắt tay được nối với cổng nối tiếp qua các cầu nối, để khi không dùng đến nữa có thể hở mạch các cầu này. Cách truyền dữ liệu đơn giản nhất là chỉ dùng ba đường dẫn TxD, RxD và GND (mass). Sơ đồ chân của vi mach Max232 II. Giao tiếp cổng nối tiếp của vi điều khiển AT89S52. 1. Tổng quan về IC AT89S52 1.1 Giới thiệu Họ vi điều khiển 8051(còn gọi là họ C51) là một trong những họ vi điều khiển thông dụng nhất hiện nay. Đây là bộ vi điều khiển 8bits sản xuất theo công nghệ CMOS, một số loại vi điều khiển thuộc họ 8051 thông dụng có thể kể như: AT989S52(40 chân), AT89S51(40 chân) , AT89C51(40 chân), AT89C52(40 chân)... Trong chương trình môn học này chúng ta tập chung nghiên cứu về bộ vi điều khiển AT89S52.Đây là bộ vi điều khiển thông dụng, giá rẻ có nhiều chức năng hay đặc biệt là tích hợp sẵn bộ nạp trên chíp giúp sinh viên có thể dễ dàng thực hiện các bài thí nghiệm với chi phí thấp. Cũng trong chương trình môn học này ngôn ngữ được sử dụng để lập trình là ngôn ngữ C. Họ vi điều khiển AT89S52 bao gồm : - 8 kbyte ROM kiểu Flash(được lập trình bởi nhà sản xuất chỉ có ở 8051) - 256 byte RAM - 4 port I/0 8 bit - 3 bộ định thời 16 bít - 1 cổng nối tiếp - 6 nguồn ngắt 1.2 Kiến trúc phần cứng của họ vi điều khiển 8051(AT89S52) Bộ vi điều khiển AT89S52 gồm các khối chức năng chính sau. Bộ xử lí trung tâm ( CPU:central processing unit) bao gồm: Thanh ghi tich lũy A Thanh ghi tích lũy phụ B,dùng cho phép nhân và phép chia; Đơn vị số học (ALU: arithmetic logical unit) Thanh ghi trạng thái chương trình (PSW: Program status word) Bốn băng thanh ghi Con trỏ ngăn xếp Bộ nhớ chương trình (bộ nhớ Rom ) gồm 8 kbyte Flash Bộ nhớ dữ liệu (bộ nhớ Ram) gồm 256 byte Bộ UART có chức năng truyền nhận nối tiếp , AT89S52 có thể giao tiếp với cổng máy tính thông qua bộ UART. 3 bộ timer/counter 16 bit thực hiện các chức năng định thời và đếm sự kiện WDM(Watch dog time): WDM được dùng để phục hồi lại hoạt động của CPU khi nó bị treo bởi một nguyên nhân nào đó. Khối điều khiển ngắt với 2 nguồn ngắt ngoài và 4 nguồn ngắt trong Bộ lập trình Bộ chia tần với hệ số chia là 12 4 cổng xuất nhập với 32 chân 1.3 Sơ đồ và chức năng chân của họ vi điều khiển 8051 Hình 1.2 Sơ đồ kiểu DIP 40 chân của vi điều khiển 8051 1. Port 0 Port 0 gồm 8 chân từ P0.1- P0.7 ngoài chức năng xuất nhập, Port 0 còn là Bus đa hợp dữ liệu và địa chỉ(AD0-AD7), chức năng này sẽ được sử dụng khi AT89S52 giao tiếp với các thiết bị ngoài có kiến trúc BUS như mạch nhớ, mạch PIO. 2. Port 1 Đối với 8051 chức năng duy nhất của Port 1 là chức năng xuất nhập Port 1 có thể xuất nhập theo byte hoặc theo bit. Riêng dòng 89xx , 3 chân P1.5, P1.6, P1.7 được dùng để nạp Rom theo chuẩn ISP, hai chân P1.0 và P1.1 được dùng cho bộ timer 2. 3. Port 2 Port 2 có tác dụng làm nhiệm vụ xuất nhập dữ liệu ngoài ra còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài. 4. Port 3 Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có chức năng riêng cụ thể như sau: Bit Chân Chức năng P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu truyền cho Port nối tiếp P3.2 INT0 Ngắt bên ngoài 0 P3.3 INT1 Ngắt bên ngoài 1 P3.4 T0 Ngõ vào của timer/counter0 P3.5 T1 Ngõ vào của timer/counter1 P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài 5. PSEN (Program Store Enable ). PSEN là chân điều khiển đọc chương trình ở bộ nhớ ngoài nó được nối với chân /OE để cho phép đọc các byte mã lệnh trên Rom ngoài. PSEN sẽ ở mức thấp trong thời gian đọc mã lệnh. Mã lệnh được đọc từ bộ nhớ ngoài qua bus dữ liệu thanh ghi lệnh để được giải mã.Khi thực hiện chương trình trong Rom nội thì /PSEN ở mức cao 6. ALE (Address Latch Enable ). Là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động của vi điều khiển .Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài như 74374, 74573 chốt byte địa chỉ thấp ra khỏi bus đa hợp địa chỉ/dữ liệu. 7. EA (External Access) . Tín hiệu /EA cho phép chọn bộ nhớ chương trinh flash bộ nhớ trong hay bộ nhớ ngoài của vi điều khiển. Nếu /EA ở mức cao (nối với Vcc) thì vi điều khiển thi hành chương trình trong Rom nội. Nếu /EA ở mức thấp(nối với GND) thì vi điều khiển thi hành chương trình từ bộ nhớ ngoài. 8. RST(Reset). Dùng để thiết lập trạng thái ban đầu của hệ thống hay còn gọi là reset hệ thống. Khi tín hiệu này được đưa lên mức cao, các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để khởi động hệ thống. 9. XTAL1, XTAL2. Mạch dao động bên trong chip 8051 được ghép với thạch anh bên ngoài thông qua 2 chân XTAL1 và XTAL2. Thường là tần số 12Mhz và các tụ ổn định 33pF 10. VCC, GND : AT89S52 dùng nguồn một chiều có dải điện áp từ 4v-5v được cung cấp qua 2 chân 40 và 20. 1.4 Hoạt động định thời 1.4.1. Giới thiệu Các bộ định thời được sử dụng rộng rãi trong các ứng dụng đo lường và điều khiển. Có thể coi một bộ định thời là 1 bộ đếm n bit được tạo ra bởi n flip-flop mắc nối tiếp với nhau. Đầu vào của bộ định thời là đầu vào của flip- flop đầu tiên, đầu ra báo tràn phản ánh trạng thái tràn của nó. AT89s52 có 3 bộ định thời 16 bit trong đó 2 bộ timer 0 và timer 1 có 4 chế độ hoạt động, timer 2 có 3 chế độ hoạt động. Các bộ định thời dùng để định khoảng thời gian, đếm sự kiện xảy ra bên ngoài hoặc tạo tôc độ baud cho cổng nối tiếp. 1.4.2 Các thanh ghi định thời 1. Thanh ghi của Timer 0 và Timer 1 Thanh ghi chế độ định thời TMOD Thanh ghi điều khiển TCON Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho Timer 0 và Timer 1. Bit Kí hiệu Địa chỉ Mô tả TCON.7 TF1 8FH Cờ báo tràn cho timer 1 được đặt bởi phần cứng, được xóa bởi phần mềm TCON.6 TR1 8EH Bít điều khiển cho timer 1 hoạt động. Được cài đặt và xóa bằng phần mềm TCON.5 TF0 8DH Cờ báo tràn cho timer 0 TCON.4 TR0 8CH Bít điều khiển timer 1 hoaatj động. TCON.3 IT1 8BH Cờ ngắt do timer 1 TCON.2 IT1 8AH Cờ ngắt ngoài 1 TCON.1 IT0 89H Cờ ngắt do timer 0 TCON.0 IE0 88H Cờ ngắt ngoài 0 Thanh ghi của Timer 2 Thanh ghi T2CON Bit Kí hiệu Địa chỉ Mô tả T2CON.7 TF2 CFH Cờ báo tràn TIMER 2. TF2 được đặt khi timer tràn và được xóa bằng phần mềm TF2 không được thiết lập khi TCLK hoặc RCLK bằng 1. T2CON.6 EXF.2 CEH Cờ ngắt ngoài của timer 2, TXF2=1 khi xảy ra sự nạp lại EXF.2= 1 cũng gây ra ngắt do timer 2 nếu như ngắt này được lập trình, EXF.2 được lập trinhg bằng phần mềm T2CON.5 RCLK CDH Bít chọn timer cung cấp xung nhịp cho đường nhận của cổng nối tiếp . RCLK=1 timer 2 cung cấp tốc độ baud cho cổng nối tiếp. RCKL=0 timer 1 cung cấp tốc độ baud cho cổng nối tiếp. T2CON.4 TCLK CCH Bít chọn timer cung cấp xung nhịp cho đường truyền của cổng nối tiếp . TCLK=1 timer 2 cung cấp tốc độ baud cho cổng nối tiếp. TCKL=0 timer 1 cung cấp tốc độ baud cho cổng nối tiếp. T2CON.3 EXEN2 CBH Bít điều khiển hoạt động của timer 2. Khi EXEN2=1 việc nạp lại hoặc thu nhận diễn ra khi có sự chuyển trạng thái từ 1 sang 0 ở chân T2EX nếu T2 không sử dụng để cung cấp tốc độ baud cho cổng nối tiếp. T2CON.2 TR2 CAH Bít điều khiển hoạt động của timer 2 T2CON.1 C/#T2 C9H Bít chọn chế độ đếm hoặc định thời của timer 2 T2CON.0 CP/#RL2 C8H Bit chọn chế độ thu nhận hay nạp lại của timer 2 1.4.3 Các chế độ của bộ định thời 1.Các chế độ ngắt của timer 0 và timer 1 Chế độ 0 Chế độ 0 là chế độ 13 bit (8bit của TH và 5 bit cao của TL) dùng để chứa giá trị đếm, 3 bit thấp của TL không được sử dụng. Nguồn xung clock đưa tới timer phụ thuộc vào bit C/#T trong thanh ghi TMOD Nếu C/#T=1 xung clock sẽ được lấy từ bên ngoài qua chân Tx. Nếu C/#T=0 xung clock được lấy từ bộ chia tần trong chip tần số xung ở đây là 1/12 tần số của thạch anh. Nguồn xung clock sẽ được điều khiển để đưa tới các Timer bằng các bít TR, GATE Và mức logic trên chân INTx Nếu TRx=0 các timer sẽ bị cấm không cần quan tâm tới GATE và mức logic trên chân INTx. Nếu TRx=1 các timer sẽ hoạt động khi hoặc là bít GATE=0 hay bít GATE=0 và chân / ITNx có mức logic 1 Chế độ 1 Trong chế độ 1 bộ timer dùng cả 2 thanh ghi TH và TL để chứa giá trị đếm vì vậy chế độ này được gọi là chế độ 16 bit. Nguồn xung clock đưa tới timer phụ thuộc vào bit C/#T trong thanh ghi TMOD Nếu C/#T=1 xung clock sẽ được lấy từ bên ngoài qua chân Tx. Nếu C/#T=0 xung clock được lấy từ bộ chia tần trong chip tần số xung ở đây là 1/12 tần số của thạch anh. Nguồn xung clock sẽ được điều khiển để đưa tới các timer bằng các bít TR,GATE và mức logic trên chân INTx Nếu TRx=0 các timer sẽ bị cấm không cần quan tâm tới GATE và mức logic trên chân INTx. Nếu TRx=1 các timer sẽ hoạt động khi hoặc là bít GATE=0 hay bít GATE=0 và chân / ITNx có mức logic 1 Với chế độ này giá trị lớn nhất mà các timer đếm chứa được là 65635 khi đếm quá giá trị này sẽ xảy ra tràn cờ tràn TF được đặt bằng 1. Sau khi xảy ra tràn muốn timer tiếp tục đếm chương trình phải có câu lệnh nạp giá trị khởi tạo bằng cách xóa bit TR. Chế độ 2 Trong chế độ 2 bộ timer dùng TL để chứa giá trị đếm và TH để chứa giá trị nạp lại vì vậy chế độ này gọi là chế độ tự nạp lại. Sau khi đếm quá 255 sẽ xảy ra tràn khi đó TF được đặt bằng 1 đồng thời giá trị của timer tự động nạp lại bằng nội dung của TH. Chế độ 3 Trong chế độ 3 timer được tách làm 2 bộ timer hoạt động độc lập, chế độ này cung cấp cho timer một chế độ nữa Bộ timer thứ nhất với nguồn xung được lấy từ bộ chia tần hay bên ngoài phụ thuộc vào C/#T giá trị đếm của timer được chứa trong TL0 khi xảy ra tràn cờ TF0 được đặt bằng 1 và gây ra ngắt do timer Bộ timer thứ 2 với nguồn xung clock được lấy từ bộ chia tần. Giá trị đếm được chứa trong TL0 cờ tràn TF1 được đặt bằng 1 và gây ngắt do timer 1 2. Các chế độ ngắt của timer 2 Chế độ tự thu nhận: Khi CP/#RL2=1 chế độ thu nhận của timer 2 được chọn bởi bit EXEN2. Xung clock cũng được lấy phụ thuộc vào C/#T2. Điều khiển hoạt động của timer 2 là bit TR2. Giá trị đếm được chứa trong TH2 và TL2. khi xảy ra tràn TF2 được đặt bằng 1 Giá trị hiện thời của timer 2 nằm trong TH và TL sẽ được chuyển tương ứng vào RCAP2H và RCAP2L Chế độ nạp lại : Chế độ này khi bit DCEN=0 timer 2 hoạt động như một timer 16 bit tự nạp lại. Giá trị nạp lại được chứa trong RCAP2Hvaf RCAP2L. Sự kiện nạp lại khi Xảy ra tràn khi có sự chuyển số đếm tư FFFFH đên 0 Có sự chuyển từ mức 1 xuống mức 0 Chế độ tạo tốc độ baud cho cổng nối tiếp: Timer 2 có thể dùng để tạo tốc độ baud cho cổng nối tiếp trong thanh T2CON. 1.5 Cổng nối tiếp 1.5.1. Giới thiệu AT89S52 có một cổng nối tiếp có thể hoạt động ở nhiều chế độ khác nhau. Chức năng chủ yếu của cổng nối tiếp là thực hiện chuyển đổi song song sang nối tiếp và ngược lại. 1.5.2 Các thanh ghi của cổng nối tiếp Thanh ghi điều khiển cổng nối tiếp Bit Kí hiệu Địa chỉ Mô tả SCON.7 SM0 9FH Bit 0 c họn chế độ cho port nối tiếp SCON.6 SM1 9EH Bit 1 chọn chế độ cho port nối tiếp SM0SM1=00 chế độ 0 SM0SM1=01 chế độ 1 SM0SM1=10 chế độ 2 SM0SM1=11 chế độ 3 SCON.5 SM2 9DH Bit 2 chọn chế độ cho cổng nối tiếp Bít này cho phép truyền thông đa xử lý SCON.4 REN 9CH Bit cho phep thu REN phải được đặt bằng 1 để cho phép nhận kí tự SCON.3 TB8 9BH Bit truyền thông thứ 9 sử dụng trong chế độ UART 9bit SCON.2 RB8 9AH Biet nhận thứ 9 sử dụng trong chế độ UART 9bit SCON.1 TI 99H Cờ ngắt truyền TI được đặt bằng 1 bởi phần cứng khi kết thúc việc truyền 1 kí tự TI được xóa bằng phần mềm SCON.0 RI 98H Cờ ngắt truyền RI được đặt bằng 1 bởi phần cứng khi kết thúc việc nhận 1 kí tự RI được xóa bằng phần mềm Thanh ghi đệm truyền nhận ở cổng nối tiếp Thanh ghi này có chức năng đệm các kí tự khi chúng được nhận về từ cổng nối tiếp hoặc truyền đi từ cổng nối tiếp việc truyền nhận qua cổng nối tiếp thực chất là việc truy xuất thanh ghi này 1.5.3 . Các chế độ hoạt động Chế độ 0 Chế độ 0 là chế độ mà cổng nối tiếp được dùng như 1 thanh ghi 8 bit. Dữ liệu được truyền/ nhận nối tiếp trên chân RXD, chân TXD được dùng để phát xung clock dịch bit. Bít có giá trị thấp nhất được truyền, nhận trước. Chế độ 1 Trong chế độ 1 cổng nối tiếp hoạt động như bộ UART 8 bit cố tốc độ thay đổi. Dữ liệu được truyền trên chân TXD và nhận trên chân RXD Với chế độ này, 1 khung truyền sẽ gồm 10 bit, 8 bit dữ liệu, 1 bit start và 1 bit stop. Bít có giá trị thấp được truyền trước bít có giá trị cao được truyền sau. Tốc độ baud có thể dùng timer 1 hoặc timer2 hoặc dung cả 2 timer nếu muốn nhận tốc độ khác nhau. Chế độ 2 Ở chế độ 2, cổng nối tiếp được dùng như 1 bộ UART 9 bit, 1 khung truyền sẽ gồm 11 bit, 8 bit dữ liệu, 1 bit start, 1 bit stop và bit dữ liệu thứ 9 . chế độ này thường dùng khi cần chèn thêm bit kiểm tra chẵn lẻ vào trong khung truyền để giảm bit lỗi đường truyền. Chế độ 3 Chế độ 3 là sự kết hợp giữa chế độ 1 và chế độ 2. Nghĩa là cổng nối tiếp hoạt động như bộ UART 9 bit và tốc độ baud UART la giống như chế độ 1. 1.6 Hoạt động ngắt 1.6.1. Tổ chức ngắt AT89S52 At89S52 gồm 6 nguồn ngắt: Ngắt ngoài INT0; Ngắt ngoài INT1; Ngắt do bộ timer 0; Ngắt do bộ timer 1; Ngắt do bộ timer 2; Ngắt do port nối tiếp; Thanh ghi cho phép ngắt IE(interrupt enable) EA - ET2 ES ET1 EX1 ET0 EX0 Bit Kí hiệu Địa chỉ bit Mô tả (1:cho phép, 0: cấm IE.7 EA AFH Cho phép hoặc cấm toàn bộ IE.6 - AEH Không được định nghĩa IE.5 ET5 ADH Cho phép ngắt từ timer 2 IE.4 ES ACH Cho phép ngắt trên port nối tiếp IE.3 ET1 ABH Cho phép ngắt từ timer 1 IE.2 EX1 AAH Cho phép ngắt ngoài 1 IE.1 ET0 A9H Cho phép ngắt từ timer 0 IE.0 EX0 A8H Cho phép ngắt ngoài 0 Thanh ghi ưu tiên ngắt IP Bit Kí hiệu Địa chỉ Mô tả IP.7 - Không được định nghĩa IP.6 - Không được định nghĩa IP.5 PT2 BDH Ưu tiên ngắt từ timer 2 IP.4 PS BCH Ưu tiên ngắt từ port nối tiếp IP.3 PT1 BBH Ưu tiên cho ngắt từ timer 1 IP.2 PX1 BAH Ưu tiên ngắt ngoài 1 IP.1 PT0 B9H Ưu tiên ngắt từ timer 0 IP.0 PX0 B8H Ưu tiên ngắt ngoài 0 Các vector ngắt Khi một ngắt nào đó được thực hiện giá trị nạp vào PC được gọi là vector ngắt: Ngắt Cờ Địa chỉ vector Số hiệu Ngắt ngoài 0 IE0 0003H 0 Timer 0 TF0 000BH 1 Ngắt ngoài 1 IE1 0013H 2 Timer1 TF1 001BH 3 Port nối tiếp TI hoặc RI 0023H 4 Timer 2 TX2 hoặc EXF2 002BH 5 ADC 0804 Sơ đồ chân của ADC0804 ADC0804 là bộ chuyển đổi tương tự sang số. Chíp có điện áp nuôi +5V và độ phân giải 8bit gồm 20 chân: CS (Chip select): Chân số 1, là chân chọn Chip, đầu vào tích cực mức thấp   được  sử dụng  để kích  hoạt Chip ADC0804. Để truy cập ADC0804 th ì chân  này phải ở mức thấp. RD (Read): Chân số 2, là một tín hiệu vào, tích cực ở mức thấp.Các bộ chuyển đổi đầu vào tương tự thành số nhị phân và giữ nó ở một thanhghi  trong. RD  được  sử   dụng  để  có  dữ liệu đã được chyển  đổi tới đầu ra của ADC0804. Khi CS = 0 nếu có một xung cao xuống thấp áp đến chân RD thì dữ liệu ra dạng số 8 bit được đưa tới các chân dữ liệu (DB0 – DB7). WR (Write): Chân số 3, đây là chân vào tích c ực mức thấp được dùng để báo cho ADC biết bắt đầu quá trình chuyển đổi. Nếu CS = 0 khi WR tạo ra xung cao xuống thấp thì bộ ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin  về số nhị phân 8 bit. Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống thấp. CLK IN và CLK R: CLK IN (chân số 4), là chân vào nối tới đồng hồ ngo ài được sử dụng để tạo thời gia n. Tuy nhiên ADC0804 c ũng có một bộ tạo xung đồng hồ riêng. Để dùng đồng hồ riêng thì các chân CLK IN và CLK R (chân s ố 19) được nối với một tụ điện v à một điện trở (như hình vẽ). Khi đó tần số được xác định bằng biểu thức: F  = 1/ 1.1RC Với R = 10 kΩ, C = 150 pF và tần số f = 606 kHz và thời gian chuyển đổi l à 110 µs. Ngắt INTR (Interupt): Chân số 5, là chân ra tích c ực mức thấp. Bình thường chân này ở trạng thái cao v à khi việc chuyển đổi ho àn tất thì nó xuống thấp để báo cho CPU biết l à dữ liệu chuyển đổi sẵn  sàng  để  lấy  đi.  Sau  khi INTR  xuống  thấp,  cần  đặt  CS  =  0  và  gửi  một  xung  cao xuống thấp tới chân RD để đ ưa dữ liệu ra. Vin (+) và Vin (-): Chân số 6 và chân số 7, đây là 2 đầu vào tương tự vi sai, trong đó V in = Vin(+) – Vin(-). Thông thường Vin(-) được nối tới đất và Vin(+) được dùng làm đầu vào tương tự và sẽ được chuyển đổi về dạng số. Vcc: Chân số 20, là chân nguồn nuôi +5V. Chân này còn được dùng làm điện áp tham chiếu khi đầu vào Vref/2 để hở. Vref/2: Chân  số 9,  là  chân  điện  áp  đầu  vào  được  dùng  làm điện  áp tham chiếu. Nếu chân này hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải 0 đến +5V.Tuy nhiên, có nhiều ứng dụng mà đầu vào  tương tự  điện áp đến  Chân  Vref/2  được  dùng  để  thực  hiện  các  điện  áp  đầu  ra  khác  0  đến +5V Vref/2 (V) Vin (V) Kích thước bước (mV) Hở 0–5 5/256 = 19.53 2.0 0–4 4/256 = 15.62 1.5 0–3 3/256 = 11.71 1.28 0 – 2.56 2.56/256 = 10 1.0 0–2 2/256 = 7.81 0.5 0–1 1/256 = 3.90 Bảng 1 – Quan hệ điện áp V ref/2 với Vin D0 - D7: D0 - D7, chân số 18 – 11, là các chân ra d ữ liệu số (D7 là bit  cao  nhất  MSB  và  D0  là bit  thấp  nhất  LSB).  Các  chân  này  được  đệm  ba trạng thái và dữ liệu đã  được  chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xu ống mức thấp. Để tính điện áp đầu ra ta tính theo công thức sau: Dout = Vin / Kích thước bước 3.Cảm biến LM35 Đây là cảm biến nhiệt được tích hợp chính xác cao của hãng  National Semiconductor. Điện áp đầu ra của nó tỉ lệ tuyến tính với nhiệt độ theo thang độ Celsius. Điện áp ngõ ra thay đổi 10mv (điện áp bước) cho mỗi sự thay đổi 1C. Chúng không yêu cầu cân chỉnh ngoài. LM35  có  4  dạng:  TO-46,  SO-8,  TO-92,  TO-220.  Nhưng  thường  dùng nhất là dạng TO-92 như hình dưới: Đặc điểm cơ bản của LM35: + Điện áp nguồn từ -0.2V đến +35V + Điện áp ra từ -1V đến +6V + Dải nhiệt độ đo được từ -55°C đến +150°C + Điện áp đầu ra thay đổi 10mV mỗi khi có sự thay đổi 1°C. . III. Phần mềm lập trình Visual basic 6.0. - Visual basic là ngôn ngữ lập trình hướng đối tượng, mỗi đối tượng lập trình như nút nhấn, textbox… sẽ có một chương trình riêng bên trong, các đối tượng này có các thuộc tính và các phương thức riêng để hoạt động. 1. Truyền thông nối tiếp của Visual basic. - Việc truyền thông nối tiếp trên Windows được thực hiện thông qua một ActiveX có sẵn là Microsoft Comm Control. ActiveX này được lưu trữ trong file MSCOMM32.OCX. Quá trình này có hai khả năng thực hiện điều khiển trao đổi thông tin: -  Điều khiển sự kiện: Truyền thông điều khiển sự kiện là phương pháp tốt nhất trong quá trình điều khiển việc trao đổi thông tin. Quá trình điều khiển thực hiện thông qua sự kiện OnComm. -  Hỏi vòng: Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra các giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự kiện nào xảy ra hay không. Thông thường phương pháp này sử dụng cho các chương trình nhỏ. - ActiveX  MsComm  được  bổ  sung  vào  một  Visual  Basic  Project  thông  qua menu Project > Components: - Biểu tượng của MsComm và các thuộc tính cơ bản mô tả  như sau: Settings: Xác định các tham số cho cổng nối tiếp. Cú pháp: MSComm1.Settings = ParamString MSComm1: tên đối tượng ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S" BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là: 110 2400 38400 300 9600(mặc định) 56000 600 14400 188000 1200 19200 256000  P: kiểm tra chẵn lẻ, với các giá trị: Giá trị Mô tả O Kiểm tra lẻ E Kiểm tra chẵn M Luôn bằng 1 S Luôn bằng 0 N Không kiểm tra D:  số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bit trong  khung truyền. S: số bit stop (1, 1.5, 2) . CommPort: Xác định số thứ tự của cổng truyền thông, cú pháp: MSComm1.CommPort = PortNumber PortNumber là giá trị nằm trong khoảng từ 1 đến 99, mặc định là 1 PortOpen: Đặt  trạng thái  hay kiểm tra  trạng thái  đóng  /  mở  của  cổng nối  tiếp.Cú pháp: MSComm1.PortOpen = True / False Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng thời xoá nội dung của các bộ đệm truyền, nhận. Các thuộc tính nhận dữ liệu: Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm. Cú pháp: InputString = MSComm1.Input Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào. Nếu InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm. Các thuộc tính xuất dữ liệu: Bao  gồm các  thuộc  tính  Output, chức  năng của các thuộc tính này giống như các thuộc tính nhập.VD: MSComm1.Output=giá trị cần xuất ra. CommEvent: Trả lại các sự kiện xảy ra tại cổng nối tiếp như sau: Sự kiện Giá trị Mô tả ComEvSend 1 Đã truyền ký tự ComEvReceive 2 Khi có ký tự trong bộ đệm nhận ComEvCTS 3 Có thay đổi trên CTS (Clear To Send) ComEvDSR 4 Có thay đổi trên DSR (Data Set Ready) ComEvCD 5 Có thay đổi trên CD (Carrier Detect) ComEvRing 6 Phát hiện chuông ComEvEOF 7 Nhận ký tự kết thúc file 2. Sự kiện OnComm. Sự  kiện  OnComm  xảy  ra  bất  cứ  khi  nào  giá  trị  của  thuộc  tính  CommEvent thay đổi. Các thuộc tính RThreshold và SThreshold = 1 sẽ cho  phép  sự kiện OnComm khi thực hiện nhận hay gửi dữ liệu. CHƯƠNG III.THIẾT KẾ HỆ THỐNG Sơ đồ nguyên lí của hệ thống. 1. Mạch nguyên lý: Mạch in Chương trình điều khiển. Lưu đồ thuật toán:  Chương trình VB trên máy tính Chương trình điều khiển trên máy tính được viết bởi phần mềm visual basic 6.0 có giao diện như sau: - Chương trình chạy VB: Dim Max, Min, NhietDo, N As Integer Private Sub CndApply_Click() Max = CInt(Text2.Text) Min = CInt(Text3.Text) End Sub Private Sub CndConnect_Click() On Error GoTo loi If MSComm1.PortOpen = False Then MSComm1.PortOpen = True End If loi: errors If MSComm1.PortOpen = True Then TimerStart.Enabled = True End If End Sub Private Sub CndDisconnect_Click() Unload FrmGraph If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If Text1.Text = "" Timer1.Enabled = False LblTrangThai.Caption = "Ngat Ket Noi!" End Sub Private Sub CndExit_Click() End End Sub Private Sub CndGraph_Click() If Not Text1.Text = "" Then FrmGraph.Show End If End Sub Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 2 MSComm1.InputMode = comInputModeText Call CndApply_Click End Sub Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single) End Sub Private Sub mnuAbout_Click() FrmAbout.Show End Sub Private Sub mnuComport_Click() TimerStart.Enabled = False Call CndDisconnect_Click Unload FrmGraph FrmComPort.Show End Sub Private Sub MSComm1_OnComm() If MSComm1.CommEvent = comEvReceive Then MSComm1.InputLen = 2 Text1.Text = MSComm1.Input NhietDo = CInt(Text1.Text) If CInt(Text1.Text) > Max Then MSComm1.Output = "a" ElseIf CInt(Text1.Text) < Min Then MSComm1.Output = "b" Else MSComm1.Output = "c" LblWaring.ForeColor = &HFF00& LblWaring.Caption = "BINH THUONG!" Shape1.BackColor = &HFF8080 Shape2.BackColor = &HFF00& Shape3.BackColor = &HFF8080 End If End If End Sub Private Sub Timer1_Timer() If N = 0 Then If NhietDo > Max Then Shape1.BackColor = &HFF& Shape2.BackColor = &HFF8080 Shape3.BackColor = &HFF8080 LblWaring.ForeColor = &HFF& LblWaring.Caption = "NGUY HIEM!" ElseIf NhietDo < Min Then Shape1.BackColor = &HFF8080 Shape2.BackColor = &HFF8080 Shape3.BackColor = &HFFFF& LblWaring.ForeColor = &HFFFF& LblWaring.Caption = "NHIET DO THAP" End If N = N + 1 ElseIf N = 1 Then If NhietDo > Max Then Shape1.BackColor = &HFF8080 Shape3.BackColor = &HFF8080 LblWaring.Caption = "" ElseIf NhietDo < Min Then Shape1.BackColor = &HFF8080 Shape3.BackColor = &HFF8080 LblWaring.Caption = "" End If N = 0 End If End Sub Private Sub TimerStart_Timer() MSComm1.Output = "@" If Not (Text1.Text = "") Then Timer1.Enabled = True LblTrangThai.Caption = "§· KÕt Nèi!" TimerStart.Enabled = False End If End Sub Private Sub TimerWatch_Timer() LblWatch.Caption = Format(Now, "hh:mm:ss AM/PM") Label1.Caption = Right(Label1.Caption, Len(Label1.Caption) - 1) & Left(Label1.Caption, 1) End Sub Private Sub errors() If Err.Number = 8002 Then MsgBox "CONG COM DANG BAN HOAC KHONG TON TAI. MOI BAN CHON CONG COM KHAC" End If If Err.Number = 8005 Then MsgBox "MOI BAN CHON LAI CONG COM!" End If If Err.Number = 8012 Then MsgBox "HAY CHON CONG COM !" End If If Err.Number = 8018 Then MsgBox "BAN CHUA CHON CONG COM !" End If If Err.Number = 13 Then MsgBox "out of range!" End If End Sub Chương trình vi điều khiển #include #include sbit INTR = P3^5; sbit WR_ADC = P3^6; sbit RD_ADC = P3^7; unsigned char n; unsigned char m[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned int chuc,donvi,nhiet_do,x; /********************** ham tre ******************/ void delay(unsigned char time) { unsigned char i,j; for(i=1;i<=10;i++) for(j=1;j<=time;j++) {} } /********************** ham chuyen doi **************/ void chuyen_doi(void) { RD_ADC = 1; //RD=1 WR_ADC = 0; //RW=0 delay(2); WR_ADC = 1; // bat dau qua trinh bien doi while(!INTR); // cho bien doi xong RD_ADC=0; // dua du lieu ra P0 n=P2; // doc gia tri bien doi duoc nhiet_do=n; } /********************** tính toán **************/ void Tinh_Toan() { if (nhiet_do > 99) nhiet_do = 99; if (nhiet_do< 0) nhiet_do = 0; chuc=nhiet_do/10; donvi=nhiet_do%10; } /********************** hàm truyen **************/ void ham_truyen() { putchar(m[chuc]); putchar(m[donvi]); } /************************** ham chinh********************/ void main(void) { SCON = 0x52; // port noi tiep che do 1 TMOD = 0x20; // time1 mode 2, TH1=TL1=-3 ; // toc do baud 9600 IE = 0x90; // cho phep ngat do port noi tiep TR1 = 1 ; // khoi dong time 1 P2 = 0xff; INTR=1; while(1) { chuyen_doi(); Tinh_Toan(); if(x=='@') { ham_truyen(); } if (x=='a') { P0_0=0; P0_1=1; // nhiet do cao P0_2=1; ham_truyen(); } if(x=='c') { P0_0=1; // nhiet do binh thuong P0_1=0; P0_2=1; ham_truyen(); } if(x=='b') { P0_0=1; P0_1=1; P0_2=0; // nhiet do thap ham_truyen(); } delay(200); } } /**************************ham ngat nhan****************/ void ngatnhan(void) interrupt 4 { x=SBUF; RI=0; } CHƯƠNGIV : KẾT LUẬN * Ưu điểm: - Hệ thống đo, điều khiển và giám sát nhiệt độ phòng này có tính ứng dụng thực tế cao, có thể ứng dụng để điều khiển nhiệt độ trong phòng. - Hệ thống đơn giản, dễ vận hành bằng việc sử dụng máy tính để điều khiển và tự động hóa quá trình giám sát các thiết bị. * Nhược điểm: - Hệ thống chỉ mang tính mô phỏng nên còn đơn giản, chỉ dừng lại ở việc đo và hiển thị Nhiệt độ. * Hướng cải thiện: - Ta có thể kết hợp hệ thống với các loại cảm biến để tăng khả năng điều khiển và giám sát nhiệt độ phòng - Ta có thể đưa mô hình này ra ứng dụng thực tế với mô hình lớn hơn, hoàn thiện hơn. TÀI LIỆU THAM KHẢO Giáo trình ghép nối máy tính_trường đại học công nghiệp Hà Nội

Các file đính kèm theo tài liệu này:

  • docxbao_cao_do_luong_3688.docx