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
53,4 KB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ - - Mơn thí nghiệm VI XỬ LÝ BÁO CÁO BÀI TN3 Giảng viên : Võ Thị Thu Hồng Sinh viên thực hiện: TP HCM, ngày 08 tháng 04 năm 2020 BÀI TN GIAO TIẾP LCD VÀ ADC THÍ NGHIỆM 1: Download chương trình mẫu LCD.A51 trang web môn điện tử Biên dịch chạy thử chương trình Sửa chương trình để hiển thị tên sinh viên lên hàng đầu ORG 2000H RS BIT P3.5 EN BIT P3.3 MAIN: LCALL INIT MOV A,#0 LAP1: PUSH ACC MOV DPTR,#TABLE MOVC A,@A + DPTR JZ TIEP LCALL OUT POP ACC INC A SJMP LAP1 TIEP: MOV A,#0C0H LCALL NHAPLENH MOV A,#0 LAP2: PUSH ACC MOV DPTR,#TABLE1 MOV A,@A+DPTR JZ EXIT LCALL OUT POP ACC INC A SJMP LAP2 EXIT: SJMP $ ; NHAPLENH: MOV DPTR,#8000H CLR EN SETB EN CLR RS MOVX @DPTR,A CLR EN LCALL DELAY5MS RET ; OUT: MOV DPTR,#8000H CLR EN SETB EN SETB RS MOVX @DPTR,A CLR EN LCALL DELAY5MS RET ; -DELAYL5MS: MOV TMOD,#10H MOV TL1,#LOW(-5000) MOV TH1,#HIGH(-5000) SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET ; -INIT: MOV A,#01H LCALL NHAPLENH MOV A,#0EH LCALL NHAPLENH MOV A,#02H LCALL NHAPLENH MOV A,#06H LCALL NHAPLENH MOV A,#38H LCALL NHAPLENH RET TABLE: DB "DO TUAN HAO",0 ; ky tu de bao ket thuc chuoi ky tu TABLE1: DB "NGUYEN MY HANG",0 END THÍ NGHIỆM 2: Viết thêm chương trình CLRSCREEN để xóa hình LCD CLEAR: MOV A, #01H LCALL NHAPLENH ;đặt giá trị cho A ứng với lệnh xóa hình LCD RET Viết thêm chương trình GOTOXY để di chuyển trỏ LCD đến hàng x, cột y, với X chứa R0 Y chứa R1 GOTOXY: CLR A MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR ORL A,R1 LCALL NHAPLENH TABLE: DB 80H,0C0H RET ;chọn hàng hiển thị LCD ;chọn cột hiển thị LCD Sửa chương trình thí nghiệm để hiển thị thêm số nhóm hàng thứ ORG 2000H RS BIT P3.5 EN BIT P3.3 MAIN: LCALL INIT MOV A,#0 LAP1: PUSH ACC MOV DPTR,#TABLE MOVC A,@A + DPTR JZ TIEP LCALL OUT POP ACC INC A SJMP LAP1 TIEP: MOV A,#0C0H LCALL NHAPLENH MOV A,#0 LAP2: PUSH ACC MOV DPTR,#TABLE1 MOV A,@A+DPTR JZ EXIT LCALL OUT POP ACC INC A SJMP LAP2 EXIT: SJMP $ ; NHAPLENH: MOV DPTR,#8000H CLR EN SETB EN CLR RS MOVX @DPTR,A CLR EN LCALL DELAY5MS RET ; OUT: MOV DPTR,#8000H CLR EN SETB EN SETB RS MOVX @DPTR,A CLR EN LCALL DELAY5MS RET ; -DELAYL5MS: MOV TMOD,#10H MOV TL1,#LOW(-5000) MOV TH1,#HIGH(-5000) SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET ; -INIT: MOV A,#01H LCALL NHAPLENH MOV A,#0EH LCALL NHAPLENH MOV A,#02H LCALL NHAPLENH MOV A,#06H LCALL NHAPLENH MOV A,#38H LCALL NHAPLENH RET ; -GOTOXY: PUSH ACC MOV A,R0 MOV DPTR,#TB MOVC A,@A+DPTR ORL A,R1 LCALL NHAPLENH POP ACC TB: DB 80H,0C0H RET TABLE: DB "DO TUAN HAO",0 ; ky tu de bao ket thuc chuoi ky tu TABLE1: DB "NGUYEN MY HANG",0 END THÍ NGHIỆM 3+4 Viết chương trình READADC thực đọc giá trị kênh trả giá trị R0 Viết chương trình hiển thị giá trị kênh ADC lên LCD dùng chương trình READADC viết RS BIT P3.5 EN BIT P3.4 ORG 2000H MAIN: LCALL KHOIDONGLCD LCALL HIENTHI LAP: MOV DPTR,#4000H MOVX @DPTR,A ACALL DELAY120US MOVX A,@DPTR MOV R5,A ACALL CALADC SJMP LAP ; DELAY120US: MOV R1,#60 DJNZ R1,$ RET ; -NHAPLENH: MOV DPTR,#6000H CLR EN SETB EN CLR RS MOVX @DPTR,A CLR EN LCALL DL5MS RET ; DL5MS: MOV TMOD,#01H MOV TL0,#LOW(-5000) MOV TH0,#HIGH(-5000) SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ; KHOIDONGLCD: MOV A,#01H LCALL NHAPLENH MOV A,#0EH LCALL NHAPLENH MOV A,#02H LCALL NHAPLENH MOV A,#06H LCALL NHAPLENH MOV A,#38H LCALL NHAPLENH RET ; XUAT1KYTU: MOV DPTR,#6000H CLR EN SETB EN SETB RS MOVX @DPTR,A CLR EN LCALL DL5MS RET ; -CALADC: MOV A,#88H LCALL NHAPLENH MOV A,R5 MOV B,#51 DIV AB ADD A,#48 ACALL XUAT1KYTU MOV A,#10 MUL AB MOV R4,B MOV B,#51 CJNE R4,#1,TIEP1 DIV AB ADD A,#5 MOV R4,A SJMP TIEP2 TIEP1: DIV AB MOV R4,A TIEP2: MOV A,#8AH ACALL NHAPLENH MOV A,R4 ADD A,#48 ACALL XUAT1KYTU RET ; -HIENTHI: MOV A,#80H ACALL NHAPLENH MOV R3,#0 LOOP: MOV A,R3 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ EXIT ACALL XUAT1KYTU INC R3 SJMP LOOP EXIT: RET TABLE: DB "VOLT: , V",0 END BÀI TN GIAO TIẾP TIMER VÀ SERIAL PORT THÍ NGHIỆM Code: TF EQU -991 ORG 2000H LOOP: MOV TMOD,#10H MOV TH1,#HIGH (TF) MOV TL1,#LOW (TF) SETB TR1 JNB TF1,$ CLR TR1 CLR TF1 CPL P1.0 SJMP LOOP END _Dạng sóng bị sai số, để hạn chế sai số, ta nên tính tốn giá trị nạp vào TH0 TL0 tần số xtal mạch THÍ NGHIỆM ORG 2000H MOV TMOD,#02H MOV TL0,#-250 MOV TH0,#-250 SETB TR0 HAO: MOV R7,#16 LOOP: MOV R6,#250 LAP: JNB TF0,$ CLR TF0 DJNZ R6,LAP DJNZ R7,LOOP CPL P1.0 SJMP HAO END - Ở chế độ 2, độ trễ gây câu lệnh đảo giá trị bit gây sai số cho dạng sóng ngõ Tuy nhiên sai số khơng lớn THÍ NGHIỆM 3: Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thơng qua HyperTerminal với tốc độ baud 19200 pbs SW 310 (gắn vào P1.0) nhấn ORG 2000H MOV TMOD,#20H MOV TH1,#-3 SETB TR1 MOV SCON,#42H MOV PCON,#80H ;cài đặt port nối tiếp vào tốc độ baud LAP: MOV R7,#0 MOV DPTR,#TABLE TTUC: JB P1.0,$ LCALL DL100MS JNB P1.0,$ MOV A,R7 INC R7 MOVC A,@A+DPTR JZ LAP LCALL XUAT SJMP TTUC ; XUAT: JNB TI,$ CLR TI MOV SBUF,A RET ; DL100MS: MOV R4,#2 LAP1: MOV TMOD,#01H MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R4,LAP1 RET ; TABLE: DB "HELLO,WORLD",0 END THÍ NGHIỆM 4: _Viết chương trình nhận ký tự từ máy tính gửi đến EME-MC8 thơng qua HyperTerminal (bằng cách gõ ký tự bàn phím chương trình HyperTerminal) hiển thị lên LCD sau: Nếu ký tự chữ hiển thị lên LCD; Enter xuống hàng; ESC xóa hình LCD; Backspace xóa ký tự bên trái dấu nháy ORG 2000H RS BIT P3.5 EN BIT P3.4 MOV TMOD,#20H MOV TH1,#-3 MOV SCON,#50H MOV PCON,#80H SETB TR1 CLR F0 ;bien trang thai hang(enter) LCALL KHOIDONGLCD MAIN: LCALL INCHAR LCALL KTRACHAR LCALL KTRAENTER LCALL KTRAESC LCALL KTRABACK SJMP MAIN ; KTRABACK: CJNE A,#08H,OUT1 LCALL XOAKYTU OUT1: RET ; -XOAKYTU: DEC R1 ; chuyển trỏ vị trí vị trí trước JB F0,H1 ; kiểm tra hàng trỏ MOV R0,#00H SJMP GOTO H1: MOV R0,#01H GOTO: LCALL GOTOXY MOV A,#0FEH ;thay ký tự ký tự trắng LCALL XUAT1KYTU DEC R1 ; trỏ tự động tăng lên nên phải giảm vị trí LCALL GOTOXY RET ; KTRAENTER: CJNE A,#13H,OUT2 ;kiểm tra mã ASCII phím enter LCALL CHUYENHANG OUT2: RET ; CHUYENHANG: CPL F0 ; đảo cờ vị trí hàng trỏ JB F0,HANG1 ;kiem tra vi tri tro LCALL KHOIDONGLCD MOV R1,#0 SJMP OUT4 HANG1: MOV R0,#01 ;cho tro len hang tren MOV R1,#00 LCALL GOTOXY OUT4: RET ; - KTRAESC: CJNE A,#27H,OUT3 ; ktra mã ASCII phím ESC LCALL CLRLCD OUT3: RET ; -CLRLCD: MOV A,#01H LCALL NHAPLENH MOV R1,#0 ; khoi dong lai đếm vị trí cột trỏ tên LCD RET ; KTRACHAR: CJNE A,#30H,$+3 ; nhận ký tự mã ASCII khoảng hiển thị JC THOAT CJNE A,#7FH,$+3 JNC THOAT CLR C LCALL XUAT1KYTU THOAT: RET ; INCHAR: JNB RI,$ ; nhận ký tự từ port nối tiếp CLR RI MOV A,SBUF RET ; NHAPLENH: MOV DPTR,#6000H CLR EN SETB EN CLR RS MOVX @DPTR,A CLR EN LCALL DL5MS RET ; XUAT1KYTU: MOV DPTR,#6000H CLR EN SETB EN SETB RS MOVX @DPTR,A CLR EN LCALL DL5MS INC R1 RET ; -DL5MS: MOV TMOD,#10H MOV TL1,#LOW(-5000) MOV TH1,#HIGH(-5000) SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET ; -KHOIDONGLCD: MOV A,#01H LCALL NHAPLENH MOV A,#0EH LCALL NHAPLENH MOV A,#02H LCALL NHAPLENH MOV A,#06H LCALL NHAPLENH MOV A,#38H LCALL NHAPLENH RET ; GOTOXY: PUSH ACC MOV A,R0 MOV DPTR,#TABLE MOVC A,@A+DPTR ORL A,R1 LCALL NHAPLENH POP ACC TABLE: DB 80H,0C0H RET END BÀI THÍ NGHIỆM LẬP TRÌNH NGẮT Thí nghiệm 1: Tạo xung cho chân P1.0 dùng ngắt timer Code: ORG 2000H LJMP MAIN ORG 200BH TO_ISR: CLR TR0 MOV TL0,#LOW(-65000) MOV TH0,#HIGH(-65000) SETB TR0 CPL P1.0 RETI ORG 2030H MAIN: MOV TMOD,#01H SETB TF0 MOV IE,#82H SJMP $ END Thí nghiệm 2: Tạo hai xung đồng thời có cki khác Code: ORG 0000H LJMP MAIN ORG 000BH LJMP T0_ISR ORG 001BH LJMP T1_ISR ORG 0030H MAIN: MOV TMOD,#11H SETB TF0 SETB TF1 SETB EA SETB ET0 SJMP $ T0_ISR: SETB ET1 CLR TR0 JNB P1.0,SKIP CLR ET1 SKIP: MOV TL0,#LOW(-65000) MOV TH0,#HIGH(-65000) SETB TR0 CPL P1.0 RETI T1_ISR: CLR TR1 MOV TL1,#LOW(-250) MOV TH1,#HIGH(-250) SETB TR1 CPL P1.1 RETI END Thí nghiệm 3: Ngắt ngồi P3.2 (INT0\) (đếm số lần bấm nút) Code: ORG 2000H LJMP MAIN ORG 2003H LJMP EX0_ISR ORG 2030H MAIN: MOV R0,#0 SETB EA SETB EX0 SETB IT0 SJMP $ ; EX0_ISR: CLR EX0 INC R0 MOV P1,R0 LCALL DELAY SETB EX0 RETI ; -DELAY: MOV R5,#8 LAP1: MOV R7,#250 LAP: MOV R6,#250 DJNZ R6,$ DJNZ R7,LAP DJNZ R5,LAP1 RET END Thí nghiệm 4:Truyền nối tiếp dùng ngắt serial port truyền bit,9600 baud, XTAL:11,0592Hz số từ 0-> Code: ORG 2000H LJMP MAIN ORG 2023H LJMP SP_ISR ORG 2030H MAIN: MOV TMOD,#20H MOV TH1,#-3 MOV TL1,#-3 SETB TR1 MOV SCON,#42H MOV A,#30H MOV IE,#90H SJMP $ SP_ISR: CJNE A,#3AH,SKIP SJMP KT SKIP: MOV SBUF,A INC A CLR TI RETI KT: END ... "NGUYEN MY HANG",0 END THÍ NGHIỆM 3+4 Vi? ??t chương trình READADC thực đọc giá trị kênh trả giá trị R0 Vi? ??t chương trình hiển thị giá trị kênh ADC lên LCD dùng chương trình READADC vi? ??t RS BIT P3.5 EN... "NGUYEN MY HANG",0 END THÍ NGHIỆM 2: Vi? ??t thêm chương trình CLRSCREEN để xóa hình LCD CLEAR: MOV A, #01H LCALL NHAPLENH ;đặt giá trị cho A ứng với lệnh xóa hình LCD RET Vi? ??t thêm chương trình... DPTR,#TABLE MOVC A,@A+DPTR ORL A,R1 LCALL NHAPLENH POP ACC TABLE: DB 80H,0C0H RET END BÀI THÍ NGHIỆM LẬP TRÌNH NGẮT Thí nghiệm 1: Tạo xung cho chân P1.0 dùng ngắt timer Code: ORG 2000H LJMP MAIN ORG 200BH