Tải bản đầy đủ (.pdf) (16 trang)

BÁO CÁO THÍ NGHIỆM VI XỬ LÝ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (300.31 KB, 16 trang )

ĐẠI HỌC BÁCH KHOA TP. HỒ CHÍ MINH
KHOA ĐIỆN ĐIỆN TỬ
----------

BÁO CÁO THÍ NGHIỆM
VI XỬ LÝ
GVHD: VŨ QUANG THỜI
Sinh viên thực hiện: Hồ Hoàng Thi
MSSV
: 1513157
Nhóm
:8
Buổi học: Thứ sáu, tiết 2-5

Tp.Hồ Chí Minh, ngày 10 tháng 5 năm 2019


MỤC LỤC
BÀI 1: LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN ……… 3
Thí nghiệm 1: Viết chương trình thực hiện việc đọc liên tục trạng thái của nút nhấn
được nối đến P1.0 va hiển thị ra led được nối tại chân P1.7( bit thứ 0 của led thanh
BL202) ………………………………………………………………………..3
Thí nghiệm 2: Viết chương trình tạo xung vuông 1kHz, chu kỳ nhiệm vụ 50% trên
P3.0 ……………………………………………………………………………3

BÀI 2: HIỂN THỊ LED 7 ĐOẠN ………………………………………6
Thí nghiệm 1: Viết chương trình con DisplayLed0 hiển thị lên LED 7 đoạn số 0 bằng
giá trị chứa trong thanh ghi R0 ………………………………………………..6
Thí nghiệm 2: Viết chương trình hiển thị lên LED 7 đoạn số 0 các con số từ 0 đến 9
sau các khoảng thời gian 1s ……………………………………………………7


BÀI 3: GIAO TIẾP LCD VÀ ADC ……………………………………..8
Thí nghiệm 1: Viết chương trình hiển thị tên sinh viên lên hàng đầu. …………8
Thí nghiệm 2: Viết chương trình hiển thị điện áp đo được lên LCD. ………….12

BÀI 4: LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL PORT …………15
Thí nghiệm 1:Viết chương trình tạo song vuông 1Hz trên chân P1.0 sử dụng timer 0 ở
chế độ 1 …………………………………………………………………………15
Thí nghiệm 2: Viết chương trình tạo song vuông 1 Hz trên chân P1.0 sử dụng timer0
ở chế độ 2 ………………………………………………………………………..16
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 bps mỗi khi SW310 (gắn vào P1.0) được
nhấn ……………………………………………………………………………..17

2


BÀI 1: LẬP TRÌNH GIAO TIẾP PHÍM ĐƠN VÀ LED ĐƠN
Thí nghiệm 1: Viết chương trình thực hiện việc đọc liên tục
trạng thái của nút nhấn được nối đến P1.0 va hiển thị ra led được
nối tại chân P1.7( bit thứ 0 của led thanh BL202)
CODE:
ORG 2000H
LOOP: MOV C, P1.0
MOV P1.1, C
SJMP LOOP

END

Thí nghiệm 2: Viết chương trình tạo xung vuông 1kHz, chu kỳ
nhiệm vụ 50% trên P3.0

CODE:
ORG 2000H
LOOP: SETB P3.0
ACALL DELAY
CLR P3.0
LCALL DELAY1
SJMP LOOP
DELAY: PUSH 07
PUSH 06
PUSH 05

3


MOV R5,#2
L1_2: MOV R6,#150
L1_1: MOV R7,#250
DJNZ R7,$
DJNZ R6,L1_1
JNZ R5,L1_2
POP 05
POP 06
POP 07
RET
DELAY1: PUSH 07
PUSH 06
PUSH 05
MOV R5,#7
L2_2: MOV R6,#150
L2_1: MOV R7,#250

DJNZ R7,$
DJNZ R6,L1_1
JNZ R5,L1_2
POP 05
POP 06
POP 07
RET
END

4


DELAY1SINS: MOV R5,A
MOV R6,#150
MOV R7,#250
DJNZ R7,$
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
CPL P1.0
RET
END

5


BÀI 2: HIỂN THỊ LED 7 ĐOẠN
Thí nghiệm 1: Viết chương trình con DisplayLed0 hiển thị lên
LED 7 đoạn số 0 bằng giá trị chứa trong thanh ghi R0

CODE:

ORG 2000H
MOV TMOD, #01H
AGAIN: MOV DPTR, #0000H
MOV A,#71H
MOVX @DPTR, A
LCALL DELAY
SJMP AGAIN
DELAY: MOV TH0, #HIGH(-1000)
MOV TL0, #LOW(-1000)
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
RET
END

Viết chương trình chính hiển thị số 9 lên LED 7 đoạn số 0 bằng
cách cho R0 bằng 9 và gọi chương trình con DisplayLed0
CODE:

6


ORG 2000H
MOV TMOD , #01H
AGAIN: MOV A,#0E4H
MOV A,#71H
MOVX @DPTR, A

LCALL DELAY
SJMP AGAIN
DELAY: MOV TH0, #HIGH(-1000)
MOV TL0, #LOW(-1000)
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
RET
END

Thí nghiệm 2: Viết chương trình hiển thị lên LED 7 đoạn số 0
các con số từ 0 đến 9 sau các khoảng thời gian 1s
CODE:

7


ORG 2000H
MOV TMOD, #01H
MOV DPTR, #0000H
AGAIN:
MOV A, #0E0H
NEXT: MOVX @DPTR, A
LCALL DELAY
INC A
CJNE A, #0EAH, NEXT
SJMP AGAIN
DELAY:MOV R7, #40
DELAY1: MOV TH0, #HIGH(-50000)

MOV TL0, #LOW(-50000)
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
DJNZ R7, DELAY1
RET
END

8


BÀI 3: GIAO TIẾP LCD VÀ ADC
Thí nghiệm 1: Viết chương trình hiển thị tên sinh viên lên hàng
đầu.
CODE:

ORG 2000H
MOV A,#01H
ACALL WRITE_COMMAND
EN BIT P3.4
RS BIT P3.5
MAIN:MOV DPTR, #8000H
ACALL LCD_INIT
MOV A, #01H
ACALL WRITE_COMMAND
MOV A, #90H
ACALL WRITE_COMMAND
MOV R1, #11
MOV A, #0

PUSH ACC
LOOP: ACALL TRABANG
ACALL WRITE_TEXT
POP ACC
INC A
PUSH ACC
DJNZ R1, LOOP
MOV R1,#27
LOOP1:MOV A, #18H
ACALL WRITE_COMMAND
ACALL DELAY
DJNZ R1,LOOP1
SJMP MAIN

9


TRABANG: MOV DPTR, #TABLE1
MOVC A, @A+DPTR
RET
;========================================
=======================;
LCD_INIT: KHOI DONG LCD
;========================================
=======================;
LCD_INIT:MOV A, #38H
ACALL WRITE_COMMAND
MOV A, #0EH
ACALL WRITE_COMMAND
MOV A, #06H

ACALL WRITE_COMMANDRET
;========================================
=======================;
========================================
=======================; CHO 50MS DE LCD
THUC HIEN XONG LENH;===================
========================================
====;
WAIT_LCD: MOV R7, #100
LL1: MOV R6, #250
DJNZ R6, $
DJNZ R7, LL1
RET
;========================================
=======================;
DELAY: MOV R5, #20
LLL1: MOV R7, #10
LLL2: MOV R6, #250
DJNZ R6, $
DJNZ R7, LLL2
DJNZ R5, LLL1
RET
;========================================
=======================;=================
========================================
======

10



; TRUYEN DU LIEU CHO LCD - RS=1
;====================================
===========================
WRITE_TEXT: MOV DPTR, #8000H
LCALL WAIT_LCD
SETB RS
MOVX @DPTR, A
SETB EN
CLR EN
RET
;====================================
===========================; TRUYEN L
ENH CHO LCD - RS=0
;====================================
===========================
WRITE_COMMAND:MOV DPTR, #8000H
LCALL WAIT_LCD
CLR RS
MOVX @DPTR, A
SETB EN
CLR EN
RET
;====================================
===========================
TABLE1:DB ‘HO HOANG THI’
END

11



Thí nghiệm 2: Viết chương trình hiển thị điện áp đo được lên
LCD.
CODE:

ORG 2000H
MAIN: ACALL LCD_INIT
MOV TMOD,#21H
LOOP:MOV DPTR,#4000H
MOV A,#0
MOVX @DPTR,A
ACALL DELAY100US
MOVX A,@DPTR
ACALL BINTOASCII
ACALL CLR_LCD
MOV A,R4
ACALL WRITE_TEXT
AMOV A,R3
ACALL WRITE_TEXT
MOV A,R2
ACALL WRITE_TEXT
ACALL DELAY3MS
ACALL DELAY3MS
SJMP LOOP
DELAY100US: MOV TH1,#-100
MOV TL1,#-100
SETB TR1
JNB TF1,$
CLR TF1
CLR TR1
RET

BINTOASCII:

MOV B,#10
DIV AB
MOV R2,B
MOV B,#10

12


ACALL DELAY3MS
RET
WRITE_TEXT: MOV DPTR,#8000H
SETB P3.4
SETB P3.5
MOVX @DPTR,A
CLR P3.4CALL DELAY3MS
RET
CLR_LCD:MOV DPTR,#8000H
SETB P3.4
CLR P3.5
MOV A,#01H
MOVX @DPTR,A
CLR P3.4
ACALL DELAY3MS
RET
END

13



BÀI 4: LẬP TRÌNH GIAO TIẾP TIMER VÀ SERIAL
PORT
Thí nghiệm 1:
Viết chương trình tạo song vuông 1Hz trên chân P1.0 sử
dụng timer 0 ở chế độ 1
CODE:

ORG 2000H
LOOP: CPL P1.0
ACALL DL500
SJPM LOOP
DL500: MOV TMOD, #01H
PUSH 05
MOV R5, #10
LOOP1: MOV TH0, #HIGH(-50000)
MOV TL0, #LOW(-50000)
SETB TR0
JNB TF0, $
CLR TF0
CLR TR0
DJNZ R5, LOOP
POP R5
RET
END

14


Thí nghiệm 2: Viết chương trình tạo song vuông 1 Hz trên chân

P1.0 sử dụng timer0 ở chế độ 2
CODE:

ORG 2000H
LJMP MAIN
ORG 200BH
INC R5
CJNE R5, #10, ISRT0
MOV R5, #1
CPL P1.0
ISRT0: CLR TR0
CLR TF0
MOV TH0, #HIGH(-50000)
MOV TL0, #LOW(-50000)
SETB TR0
RETI
ORG 2030H
MAIN: MOV TMOD ,#01H
SETB TF0
MOV IE, #82H
SJMP $
END

15


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 bps mỗi khi SW310 (gắn vào P1.0) được nhấn
CODE:


ORG 2000H
MOV SCON,#52H
MOV TMOD,#20H
MOV TH1,#-3
SETB TR1
MOV R7,#11
MOV A,#0
PUSH ACC
LOOP: MOV DPTR, #TABLE
MOVC A, @A+DPTR
CALL OUT_CHAR
POP ACC
INC ACC
PUSH ACC
DJNZ R7, LOOP
SJMP $
OUT_CHAR: JNB TI, $
CLR TI
MOV SBUF, A
RET
TABLE:DB 'Hello world'
END

16



×