Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
2,49 MB
Nội dung
Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử Đồ Án Môn Học Đo Lường Và Điều Khiển Bằng Máy Tính Đề Tài : Đo Tần Số Xung Vuông Sử Dụng Cổng Song Song (xung cần đo có tần số <=5Khz) GVHD : Vũ Trung Kiên SVTH : Lớp : Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 1 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Lời Nói Đầu Ngày nay các thiết bị máy móc ,hệ thống nhằm vụ đời sống con người trong sinh hoat cũng như trong sản xuất phát triển nhanh và ngày càng thông minh. Sở dũ có được điều đó là nhờ ứng dụng thành tựu của khoa học kỹ thuật.Một trong vô số những thành tựu của khoa học kỹ thuật nói chung, của khoa học kỹ thuật điện tử nói riêng là bộ vi điều khiển. Trong các thiết bị điện tử trong hệ thống sản xuất tự động, trong công nghiệp ghép nối máy tính đóng vai trò quan trọng. Qua học tập và nghiên cứu môn ghép nối máy tính 1môn mà có nhiều ứng dụng trong đời sống thực tế và để tìm hiểu sâu hơn nhóm em đã là đề tài : Đo tần số xung vuông sử dụng cổng song song (xung cần đo có tần số <=10Khz). Để hoàn thành đề tài này chúng em xin cảm ơn sự hướng dẫn của thầy Vũ Trung Kiên cùng các thầy cô trong khoa Điện Tử trường Đại Học Công Nghiệp Hà Nội.Trong quá trình học tập em cũng đã cơ bản nắm được nội dung của môn học đo lường và điều khiển bằng máy tính. Do thời gian làm bài và kinh nghiệm còn hạn chế nên không tránh khỏi những thiếu sót . Vì vậy, chúng em rất mong sự góp ý chỉ bảo của các thầy cô và các bạn. Chúng em xin cảm ơn Nhóm sinh viên thực hiện Trần Văn Thắng Phạm Huy Thâm Trần Khắc Vinh Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 2 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Chương 1 :CỔNG SONG SONG Cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường dữ liệu .Các đường dẫn này đều tương thích mức TTL (0:5V) do vậy khá thuận tiện ,đơn giản cho việc ghép nối vì nhiều linh kiện ,mạch điện tương thích với mức logic trên. Khoảng cách truyền của cổng song song bị hạn chế do điện dung kí sinh, hiện tượng cảm ứng và bị suy giảm công suất. Khoảng cách này bị giới hạn trong khoảng 2m. Nếu cần ghép nối ở khoảng cách xa hơn cần có các bộ đệm, các phương pháp làm giảm điện dung kí sinh, hiện tượng cảm ứng. Hình 1: Giao diện cổng song song 25 chân và 36 chân trên máy tính PC (Cổng Cái) Hình 2: Giao diện cổng song song 25 chân (Cổng Đực) Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 3 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Trong các máy tính thế hệ cũ, cổng song song có tới 36 chân nhưng ngày nay để giảm chi phí, người ta đã chuẩn hóa thành 25 chân, trong số 25 chân này chỉ có 18 chân có ý nghĩa thực sự, số còn lại đều là các chân nối mass. Ký hiệu và ý nghĩa cảu các chân cắm trên cổng song song như sau: 25 chân 36 chân Ký hiệu Vào/Ra/(I/O) Mô tả 1 1 /STROBE Ra Tín hiệu thông báo có 1 byte sẵn sàng được in 2-9 2-9 D0-D7 Ra Các đường dũ liệu từ D0-D7 10 10 /ACK Vào Tín hiệu xác nhận đã nhận được 1 byte của máy in đối với máy tính 11 11 BUSY Vào Tín hiệu báo bận của máy in 12 12 PE Vào Tín hiệu báo hết giấy của máy in 13 13 SLCT Vào Tín hiệu báo trạng thái sẵn sàng của máy in 14 14 /AF Ra Tín hiệu yêu cầu nạp một dòng mới cảu máy tính đối với máy in 15 32 /ERROR Vào Tín hiệu thông báo nỗi của máy in đối với máy tính 16 31 INIT(RESET) Ra Tín hiệu khởi động lại của máy tính đối với máy in 17 36 SLCTIN Ra Tín hiệu lựa chọn máy in của máy tính 18-25 19- 30,33 GND Tín hiệu nối Mass 16 Tín hiệu nối Mass 17 Tín hiệu nối Mass 18 Tín hiệu nối Mass 34,35 Không sử dụng Các đường dẫn tín hiệu này được chia thành 3 nhóm: - Các đường dẫn tín hiệu xuất ra từ máy tính và điều khiển máy in được gọi là các đường điều khiển. Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 4 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - - Các đường dẫn tín hiệu đưa ra thông báo ngược lại từ máy in về máy tính được gọi là các đường dẫn trạng thái - Các đường dẫn dữ liệu :truyền các bytes ký tự cần in. Các nhóm đường dẫn tín hiệu trên có liên quan trực tiếp với các thanh ghi trong. Để có thể ghép nối các thiết bị ngoại vi, các mạch điện tử ứng dụng trong đo lường và điều khiển với cổng song song ta phải tìm hiểu cách trao đổi với các thanh ghi thông cách sắp xếp đường dẫn và địa chỉ của các thanh ghi cũng như các phần mềm liên quan. Có 3 thanh ghi sau: - Thanh ghi dữ liệu - Thanh ghi trạng thái - Thanh ghi điều khiển Các địa chỉ của cổng song song trên máy tính PC: Cổng song song (LPT) Địa chỉ thanh ghi dữ liệu Địa chỉ thanh ghi trạng thái Địa chi thanh ghi điều khiển LPT1 3BCh 3BDh 3BEh LPT2 378h 379h 37Ah LPT3 278h 279h 27Ah LPT4 2BCh 2BDh 2BEh Qua cấu trúc các thanh ghi ta thấy có 8 đường dẫn dữ liệu dẫn tới 8 ô nhớ trên thanh ghi dữ liệu còn bốn đường dẫn điều khiển Strobe, Auto Linefeed, Reset, Select Input, dẫn tới 4 ô nhớ trên thanh ghi điều khiển, cuối cùng là 5 đường dẫn trạng thái Acknowledge, Busy, Paper Emply, Select, Error nối tới 5 ô nhớ trên thanh ghi trạng thái. Riêng ở thanh ghi điều khiển cần chú ý tới 1 bit nữa được sử dụng cho mục đích ghép nối nhưng lại không được nối với ổ cắm 25 chân , bit này có thể được sử dụng để xóa môt ngắt có liên quan với đường dẫn Acknowledge. Ta có thể trao đổi với 3 thanh ghi này như thế nào ? Hệ điều hành DOS dự tính đến 4 cổng song song đặt tên là :LPT1,LPT2,LPT3,và LPT4.Tuy vậy hầu hết các máy tính vi tính PC đều chỉ có nhiều là 2 cổng song song thậm chí là 1 vì lý do kinh tế. khi bật máy , BIOS sẽ kiểm tra xem trên máy tính có trang bị mấy cổng song song. Các cổng song song được BIOS tìm thấy sẽ được sắp theo các tên lần lượt là LPT1,LPT2…Phần lớn các phiên bản của BIOS chạy trong giai đoạn khởi động (Boot phase) của máy tính, khi đó, các thông số về phần cứng cũng như các cổng song song tìm được sẽ hiển thị trong 1 khung hình chữ nhật. Ta có thể dừng lại quá trình khởi động của máy tính bằng phím (pause) để quan sát kỹ các thông số được liệt kê dưới đây: Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 5 D7 D6 D5 D4 D3 D2 D1 D0 STOBE(chân 1) AF(chân 14) INIT(chân 16) SLCIN(chân 17) IRQ-Enable Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - A, Thanh ghi dữ liệu 378h B, Thanh ghi trạng thái 379h C,Thanh ghi điều khiển 37Ah Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính D7 D6 D5 D4 D3 D2 D1 D0 Bit dữ liệu D0(chân 2) Bit dữ liệu D1(chân 3) Bit dữ liệu D2(chân 4) Bit dữ liệu D3(chân 5) Bit dữ liệu D4(chân 6) Bit dữ liệu D5(chân 7) Bit dữ liệu D6(chân 8) Bit dữ liệu D7(chân 9) D7 D6 D5 D4 D3 0 0 0 ERROR(chân 15) SLCT(chân 13) PE(chân 12) ACK(chân 10) BUSY(chân 11) 6 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Chương 2. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH VB 1,Bắt đầu với Visual Basic (VB) A,Khởi động VB Sau khi khởi động VB, một hộp thoại “new project” xuất hiện cho phép lựa chọn 1 trong các ứng dụng mà bạn muốn tạo. VB6 cho phép bạn tạo 13 loại ứng dụng khác nhau ở Tab “new”,tuy nhiên ở mức căn bản và thông thường,Standard EXE (một loại chương trình tiêu chuẩn) sẽ được chọn. B,Giao diện Visual Basic Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 7 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Giao diện cơ bản của VB gồm các phần sau: - MenuBar : Các trình đơn của Vb - Toolbar : Một số chức năng cơ bản của chương trình - Toolbox : chứa các điều khiển thông dụng - Project window : Cửa sổ hiển thị các đặc tính thiết kế của các điều khiển. - Form Layout Window : Xem trước hoặc thay đổi vị trí Form khi thực thi ứng dụng . - Workspace :Vùng là việc của chương trình…… - Ngoài ra giao diện VB còn chứa rất nhiều các thành phần khác.Để hiển thị thành phần nào bạn chọn trình đơn “View” và kích chọn thành phần bạn muốn hiển thị. 2. Ngôn ngữ lập trình Visual Basic (VB) 2.1.Thiết kế giao diện Có lẽ khâu quan trọng nhất trong lập trình là thiết kế. Sau khi thiết kế giao diện, bạn cần thiết kế cấu trúc chương trình. Cách thiết kế khác nhau sẽ dẫn đến cách hoạt động khác nhau và bảo trì, theo đó cũng khác nhau. Code trong VB được tổ chức theo dạng cây phân nhánh. Một ứng dụng thông thường chứa một hoặc nhiều mô-đun. Mỗi biểu mẫu có một mô-đun, có thể thêm những mô-đun chuẩn chứa những đoạn chương trình dùng chung, và cũng có thể có thêm mô- đun lớp. 2. 2.Viết CODE cho chương trình Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 8 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - A,Biến, kiểu và cách khai báo -Khai báo biến Để khai báo biến ta dùng lệnh Dim: Dim <Tên biến > [As<kiểu dữ liệu>] -Khai báo hằng |Public|private|Const<tên hằng>[As<kiểu dữ liệu>]= <biểu thức> -Kiểu dữ liệu Kiểm soát nội dung của dữ liệu. VB dùng kiểu Variant như là kiểu mặc định. Ngoài ra, một số kiểu dữ liệu khác cho phép tối ưu hoá về tốc độ và kích cỡ chương trình. Khi dùng Variant, ta không phải chuyển đổi giữa các kiểu dữ liệu. VB tự động làm việc đó. Một dòng lệnh có thể kết hợp nhiều kiểu khai báo : Private I as Interger, Amt as double Private YourName as String, BillsPaid as Currency Private Test,Amount, J as integer -Kiểu số Integer, Long, Double và Currency. Kiểu số tốn ít vùng chứa hơn kiểu Variant. Tất cả biến kiểu số có thể được gán cho nhau và cho biến Variant. VB làm tròn thay vì chặt bỏ phần thập phân trước khi gắn nó cho số Integer. Kiểu Integer tốn ít vùng nhớ hơn các kiểu khác, nó thường dùng làm biến đếm trong các vòng lặp For Next. Kiểu Single, Double, Currency dùng cho các số có phần thập phân. Currency hỗ trợ đến 4 chữ số phần thập phân và 15 chữ số cho phần nguyên, đùn cho các tính toán tiền tệ. Các giá trị dấu chấm động được thể hiện là :A*10 B .Ví dụ: 1.2341E12=1.2341 *10 12 3.402823E+38 cho số Single hoặc 1.7976931486232D+308 cho số Double Ta dùng các phép cộng (+), trừ(-) nhân(*), chia(/ hoặc\). Dấu / là số chia thập phân. Ví dụ: 5/3 cho kết quả là 1.66666666667. Trong khi 5/3 cho kết quả là 1, phần thập phân bị chặt bỏ. Phép tính này đặc biệt nhanh khi sử dụng trong vòng lặp. -Kiểu Byte Thường dùng đẻ chứa dữ liệu nhị phân. Tất cả các thao tác trên kiểu Integer có thể thực hiện trên kiểu Byte, ngoại trừ dấu. Vì Byte là kiểu không dấu (trong khoản từ 0-255), nó không thể nhận ra số âm. -Kiểu String Mặc định, biến hay tham số kiểu chuỗi có chiều dài thay đổi, nó có thể tăng hoặc giảm tuỳ theo ta gán dữ liệu. Ta có thể khai báo chuỗi có chiều dài cố định: Dim EmpName As String *50 Nếu ta gán một chuỗi ngắn hơn 50 ký tự, EmpName sẽ được thêm vào phần đuôi các kỹ tự khoảng trắng cho đầy 50 ký tự, nếu chuỗi gán vào dài hơn 50 ký tự, VB tự động chặt bỏ. Khi làm việc với chuỗi, ta cần dùng các ham Trim và RTrim để cắt bỏ các ký tự trắng không cần thiết. Ngoài ra một số hàm thông dụng để thao tác trên chuỗi như: a. Len: Lấy chiều dài chuỗi b. Mid$: Trích chuỗi con từ chuỗi gốc c. Left$: Trích chuỗi con từ phần đầu chuỗi gốc. Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 9 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - d. Right$:Trích chuỗi con từ phần đuôi của chuỗi gốc. e. InStr: Tìm chuỗi con trong chuỗi gốc. Nếu hàm InStr trả về 0, nghĩa là không tìm thấy. Tìm kiếm không phân biệt cõ chữ. Nhưng nếu tham số thứ 3 là vbBinaryCompare thì đây là tìm kiếm chuỗi có phân biệt chữ in hoa và chữ in thường. f. Replace: Tìm và thay thể chuỗi. Replace(“Peter PeterWright”,” Peter ”,John,6) Chuỗi kết quả là “John Wright”, bắt đầu từ vị trí thứ 6. Nếu muốn giữ lại phần đầu ta làm như sau: Left$(“Peter Peter Wright”,5)&Replace (“Peter Peter Wright”,”Peter”,”John”,6) Một tham số khác là số lần thay thế: Replace(“Peter Peter Peter Wright”,”Peter”,”Hooray”,1,2) Kết quả là “Hooray Hooray Peter Wright”, nghĩa là hai lần thay thế. Tham số này mang giá trị mặc định là -1, nghĩa là thay thế toàn bộ. Tham số cuối cùng tương tự hàm Instr(), cho biết nó có phân biệt chữ in hoa và chữ thường hay không Replace(“Peter Wright, “Peter”, “P.”,1,-1,vbTextCompare) Kết quả là “P.Wright”. Chuỗi có chiều dài cố định được khai báo Public hay Private trong mô-đun chuẩn. Trong mô-đun của biểu mẫu hoặc mô-đun lớp, nó phải được khai báo Private. VB cho phép chuyển đổi một chuỗi thành thành một số nếu chuỗi đang thể hiện một con số. Ngược lại, ta cũng có thể chuyển một số thành chuỗi. Tuy nhiên nên cẩn thận, vì chuyển đổi một chuỗi có giá trị không phải số sẽ gây lỗi chương trình thi hành. Một số lập trình viên Visual Basic thích dùng dấu + để nối chuỗi thay vì dùng dấu &. Mặc dù không khác nhau lắm, nhưng thực ra dùng dấu + có điểm bất tiện. Vì là phép toán, nó có kiểm tra kiểu. Nếu ta có một số và một chuỗi nối với nhau, nó sẽ chuyển đổi từ số sang chuỗi trước khi thực sự kết nối. Hơn nữa, việc chuyển đổi này được làm tự động, không hề báo lỗi khi biên dịch. -Kiểu Boolean Nếu ta có một biến có hai giá trị True/False, Yes/No,On/Off, ta nên dùng kiểu Boolean. Giá trị mặc định của Boolean là False. Dim blnRunning as Boolean ‘ Check to see if the tape is running. If recorder.Direction = 1 Then blnRunning = True End if -Kiểu Date Khi các kiểu dữ liệu khác được chuyển sang Date, giá trị đứng trước dấu chấm là ngày, giá trị đứng sau dấu chấm là giờ. Nửa đêm là 0, giữa ngày là 0,5. Dấu âm thể hiện ngày trước 30/12/1999. Kiểu Date đã giải quyết vấn đề Y2K Nhấn Ctrl-G để hiển thị cửa sổ Immediate. Gõ vào: “01/02/98” và nhấn Enter. Nếu hiểu theo người Mỹ, “01/02/98” có nghĩa là ngày 2 tháng Giêng năm 1998, nếu hiểu theo người Anh thì đây là ngày 1 tháng 2 năm 1998. Nếu dùng ngày như trong hình trên thì VB hiểu rằng lấy 1 chia cho 2 rồi lấy kết quả chia cho 98! Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 10 [...]... dientuvietnam.net 5)Giáo trình VB6 .0 6)Lập trình giao tiếp bằng VB - Hồ Thanh Lâm,Lê Văn Bạn – ĐH Nông Lâm TP HCM Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 18 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Mục Lục Lời Nói Đầu 2 Chương 1 Cổng Song Song 3 Chương 2 Giới Thiệu Về Ngôn Ngữ Lập Trình VB 7 1 , Bắt đầu với VB 7 2 , Ngôn ngữ lập trình Visual Basic 8 Chương 3 Mạch tạo tần số xung vuông và hiển... d=d+1 If nhan2 = 8 And nhan3 = 0 Then xung = xung + 1 End If nhan3 = nhan2 If d > 100 Then Label7.Caption = Str (xung / 1) xung = 0 d=0 End If End Sub Private Sub command2_Click() End End Sub Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 17 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Tài Liệu Tham Khảo 1) Đo lường điều khiển bằng máy tính - Ngô Diên Tập 2) Giáo trình ghép nối máy tính (lý thuyết... giá trị số Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 12 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Bước nhảy có thể là âm hoặc dương Nếu bước nhảy là dương, điểm đầu phải nhỏ hơn hoặc bằng điểm cuối, nếu bước nhảy là âm thì ngược lại C.Hàm và thủ tục Chia nhỏ chương trình thành nhiều phần logic, giúp gỡ rối dễ dàng Thủ tục có thể được sử dụng lại trong một ứng dụng khác Các loại thủ tục... thoát khỏi hàm Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 13 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - Chương 3: MẠCH TẠO TẦN SỐ XUNG VUÔNG VÀ HIỂN THỊ MÁY TÍNH 1, Sơ đồ nguyên lý 2 Sơ đồ mạch in 3,Hiển thị trên máy tính Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 14 Trường Đại Học Công Nghiệp Hà Nội Nhóm - Lớp - A,giao diện chương trình Đồ án môn học : Đo Lường & Điều Khiển Bằng... toán học Tuy nhiên, định dạng ngày tháng hiển thị phụ thuộc vào quy định của Windows Hộp thoại này hiển thị khi người sử dụng nhấp đúp chuột vào biểu tượng Regional Setting trong cửa sổ Control Panel của Windows Nó cho phép quy định kiểu ngày tháng tuỳ thuộc quốc gia Bên trong chương trình VB xử lý ngày tháng theo kiểu Mỹ #01/02/98# là ngày 2 tháng Giêng năm 1998, nhưng nếu máy đang dùng theo hệ Anh thì... - Lớp - B,Chương trình VB Option Explicit Dim nhan, nhan1, nhan2, nhan3 As Byte Dim d, xung As Integer Dim f As Double Dim t As Integer Dim dem As Integer Dim dem2 As Integer Private Sub Command1_Click() Timer2.Enabled = True Timer3.Enabled = True End Sub Private Sub Form_Load() Text1.Text = "" dem = 0 nhan1 = 0 dem2 = 0 Timer1.Enabled = True Timer2.Enabled = False Đồ án môn học : Đo Lường & Điều Khiển... Giải quyết trường hợp có quá nhiều ElseIf được dùng, giúp chương trình sáng sủa dễ đọc Biểu thức để so sánh được tính toán một lần vào đầu cấu trúc Sau đó Visual basic so sánh kết quả biểu thức với từng Case Nếu bằng nó thi hành khối lệnh trong Case đó Select Case Case Khối lệnh 1 Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 11 Trường Đại Học Công Nghiệp... dòng lệnh End sub b Hàm luôn trả về giá trị: [Private | Public | Static] Function (Tham số) [As ] Các dòng lệnh End Function Trong trường hợp không khai báo As , mặc định, VB hiểu là kiểu variant c Thủ tục thuộc tính Có thể trả về và gán giá trị, hay đặt tham chiếu đến đối tượng Xem thủ tục trong modul hiện hành Trong cửa sổ code, chọn Genaral trong hộp Object, và chọn tên... Bắt đầu với VB 7 2 , Ngôn ngữ lập trình Visual Basic 8 Chương 3 Mạch tạo tần số xung vuông và hiển thị máy tính 13 1 , Sơ đồ nguyên lý 14 2 ,Sơ đồ mạch in 14 3 ,Hiển thị trên máy tính Đồ án môn học : Đo Lường & Điều Khiển Bằng Máy Tính 15 19 . Hệ điều hành DOS dự tính đến 4 cổng song song đặt tên là :LPT1 ,LPT2 ,LPT3 ,và LPT4 .Tuy vậy hầu hết các máy tính vi tính PC đều chỉ có nhiều là 2 cổng song song thậm chí là 1 vì lý do kinh tế NGỮ LẬP TRÌNH VB 1,Bắt đầu với Visual Basic (VB) A,Khởi động VB Sau khi khởi động VB, một hộp thoại “new project” xuất hiện cho phép lựa chọn 1 trong các ứng dụng mà bạn muốn tạo. VB6 cho phép. dem = 0 End If nhan1 = nhan End Sub Private Sub Timer3_Timer() nhan2 = PortIn(&H379) And &H8 d = d + 1 If nhan2 = 8 And nhan3 = 0 Then xung = xung + 1 End If nhan3 = nhan2 If d