Báo cáo thí nghiệm Vi xử lý - Nguyễn Phước Lộc
1
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
ĐẠ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Ử
Public by Nguyễn Phước Lộc – K09 – Tự động hóa
Email: [email protected]om
Nguyễn Phước Lộc
40901457
Thí nghiệm Vi Xử Lý | 1
2
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
PHỤ LỤC
PHẦN A: THÍ NGHIỆM VI ĐIỀU KHIỂN 89S52
5
Bài 1: Thí nghiệm với nút nhấn và Led đơn.............................................................. 5
Thí nghiệm 1: Viết chương trình thực hiện việc đọc liên tục trạng trạng thái của
nút nhấn P1.0 và hiển thị ra LED được nối tại chân P1.1 ...................................................5
Thí nghiệm 2.1: Viết chương trình tạo xung vuông 1Hz ra chân P1.0,biết tần số dao
động được dùng trong KIT là 11.059MHz.................................................................................5
Thí nghiệm 2.2: ....................................................................................................................................5
Thay đổi tần số xung vuông thành 0.5Hz, với chu kì nhiệm vụ là 30%............................5
Thí nghiệm 3.1: ....................................................................................................................................6
Viết chương trình tạo xung vuông 1 Hz dùng Timer0 ............................................................6
Thí nghiệm 3.2: ....................................................................................................................................6
Sử dụng ngắt Timer để tạo xung ....................................................................................................6
Thí nghiệm 4:........................................................................................................................................7
Viết chương trình làm cho LED nối đến chân P1.0 chớp tắt với tần số có thể thay
đổi được bằng cách nhấn P1.1 (tăng) hoặc P1.2 (giảm) ......................................................7
Bài 2: Thí nghiệm hiển thị dùng LED 7 đoạn........................................................... 8
Thí nghiệm 1:........................................................................................................................................8
Viết chương trình thực hiện bộ đếm từ 0 đến 9 và hiển thị ra LED 7 đoạn,mỗi lần
cách nhau 2s..........................................................................................................................................8
Thí nghiệm 2:........................................................................................................................................8
Viết chương trình hiển thị giá trị 1234 ra LED 7 đoạn.........................................................8
Thí nghiệm 3: Viết chương trình thể hiện giá trị nhị phân trong thanh ghi R7 ra
LED 7 đoạn. ..........................................................................................................................................9
Bài 3: Thí nghiệm hiển thị dùng LCD..................................................................... 10
Thí nghiệm : Hiển thị dịch trái chuỗi “DHBK Tp.HCM” ..................................................10
Bài 4: Thí nghiệm giao tiếp qua cổng nối tiếp......................................................... 12
Thí nghiệm 1: Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính thông
qua Hyper Terminal với tốc độ 19200pbs................................................................................12
Thí nghiệm 2: Viết chương trình nhận các ký tự từ máy tính gửi đến EME-MC8
thông qua Hyper Terminal (bằng cách gõ các ký tự trên bàn phím khi đang ở trong
chương trình Hyper Terminal) và hiển thị lên LCD. ............................................................13
Bài 5: Thí nghiệm điều khiển ADC......................................................................... 15
Thí nghiệm 1: Viết chương trình thực hiện đọc điện áp của biến trở trên kênh 0 và
hiển thị ra led 7 đoạn.......................................................................................................................15
Thí nghiệm 2: Viết chương trình thực hiện đọc điện áp của biến trở trên kênh 0 và
hiển thị ra LCD..................................................................................................................................16
Bài 6: Thí nghiệm với LED ma trận........................................................................ 18
Thí nghiệm 1: Viết chương trình hiển thị chữ A ra LED ma trận ....................................18
Thí nghiệm Vi Xử Lý | 2
3
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
Thí nghiệm 2: Viết lại chương trình hiển thị chữ A ra LED ma trận có sử dụng
chương trình con................................................................................................................................19
Bài 7: Thí nghiệm với động cơ DC.......................................................................... 20
Thí nghiệm1: Viết chương trình cho phép động cơ chạy theo chiều thuận trong
vòng 2s, nghỉ 2s, chạy theo chiều ngược 2s, nghỉ 2s và lặp lại........................................20
Thí nghiệm2: Viết chương trình điều khiển động cơ với phương pháp PWM, trong
đó thời gian bật của xung là 50% chu kỳ..................................................................................21
Thí nghiệm Vi Xử Lý | 3
4
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
PHẦN B: LÀM VIỆC VỚI PIC 16F690
23
Bài 8: Thí nghiệm với LED đơn.............................................................................. 23
Thí nghiệm1: Viết chương trình chớp tắt LED được nối đến chân RC2 của PIC
16F690 với tần số chớp tắt là 1Hz..............................................................................................23
Thí nghiệm2: Viết chương trình thực hiện mạch LED chạy được nối đến 4 LED
port C của PIC 16F690 như sau, biết thời gian giữa các trạng thái S (sáng) và T
(tắt) là 0.5s: STTT->TSTT->TTST->TTTS->STTT->… .....................................................23
Thí nghiệm3: Viết chương trình đếm số lần nhấn của SW2, kết quả được xuất ra 4
LED đơn được nối đến port C. .....................................................................................................24
Thí nghiệm4: Viết chương trình thực hiện mạch đếm lên hoặc xuống cách nhau 1s.
(SW2=1 đếm lên, SW2=0 đếm xuống).......................................................................................24
Bài 9: Thí nghiệm với LED 7 đoạn ......................................................................... 25
Thí nghiệm1: Viết chương trình thực hiện mạch đếm lên từ 0 đến F (số Hex), kết
quả xuất ra LED 7 đoạn, giá trị bộ đếm tăng lên 1 đơn vị cách nhau mỗi 0.5s.........25
Bài 10: Thí nghiệm với ADC................................................................................... 26
Thí nghiệm1: Viết chương trình đọc giá trị điện áp của biến trở RP1 và xuất mức
điện áp tương ứng với giá trị điện áp đọc được ra LED 7 đoạn ( dung ADC với độ
phân giải 10 bits) được cho bởi bảng sau:...............................................................................26
Thí nghiệm2: Viết chương trình đọc giá trị ngõ ra ADC với độ phân giải 10 bits
dung để điều khiển thời gian chớp tắt LED đơn được nối đến chân RC0 của PIC
16F690..................................................................................................................................................28
PHẦN C: BÀI TẬP LỚN
29
Viết chương trình mô phỏng máy tính mini với các phép toán +, - *, / số 3 chữ số.29
Thí nghiệm Vi Xử Lý | 4
5
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
Phần A:
Thí nghiệm Vi điều khiển 89s52
Bài 1: Thí nghiệm với nút nhấ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 trạng thái
của nút nhấn P1.0 và hiển thị ra LED được nối tại chân P1.1
Code:
ORG 2000H
LOOP:
MOV C, P1.0
MOV P1.1, C
SJMP LOOP
END
Thí nghiệm 2.1: Viết chương trình tạo xung vuông 1Hz ra chân P1.0,biết tần số
dao động được dùng trong KIT là 11.059MHz.
Code:
ORG 2000H
LAP:
CPL P1.0
CALL DL500
SJMP LAP
PUSH 05
DL500:
PUSH 06
PUSH 07
MOV R5, #10
MOV R6, #100
MOV R7, #250
DJNZ R7, $
DJNZ R6, L1
DJNZ R5, L2
POP 07
L2:
L1:
POP 06
POP 05
RET
END
Thí nghiệm 2.2:
Thay đổi tần số xung vuông thành 0.5Hz, với chu kì nhiệm vụ là 30%
Code:
ORG 2000H
LAP:
SETB P1.0
CALL DL150
CLR P1.0
LCALL DL350
SJMP LAP
DL150: PUSH 07
PUSH 06
Thí nghiệm Vi Xử Lý | 5
6
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
PUSH 05
MOV R5, #2
MOV R6, #150
MOV R7, #250
DJNZ R7, $
L1_2:
L1_1:
DJNZ R6, L1_1
DJNZ R5, L1_2
POP 05
POP 06
POP 07
RET
DL350: PUSH 07
PUSH 06
PUSH 05
MOV R5, #7
L2_2:
L2_1:
MOV R6, #100
MOV R7, #250
DJNZ R7, $
DJNZ R6, L2_1
DJNZ R5, L2_2
POP 05
POP 06
POP 07
RET
END
Thí nghiệm 3.1:
Viết chương trình tạo xung vuông 1 Hz dùng Timer0
Code:
ORG 2000H
;Tao xung vuong 1Hz tren P1.0 su dung Timer0
LAP:
CPL P1.0
CALL DL500
SJPM LAP
DL500: MOV TMOD, #01H ;Goi Timer0, Mode1
PUSH 05
MOV R5, #10
LOOP:
MOV TH0, #HIGH(-50000)
MOV TL0, #LOW(-50000)
SETB TR0
JNB TF0, $
CLR TF0
CLR TR0
DJNZ R5, LOOP
POP R5
RET
END
Thí nghiệm 3.2:
Sử dụng ngắt Timer để tạo xung
Code:
Thí nghiệm Vi Xử Lý | 6
7
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
ORG 2000H
;Tao xung 1Hz tren P1.0 dung ngat Timer0
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
Thí nghiệm 4:
Viết chương trình làm cho LED nối đến chân P1.0 chớp tắt với tần số có thể
thay đổi được bằng cách nhấn P1.1 (tăng) hoặc P1.2 (giảm)
Code:
ORG 2000H
MOV TMOD, #01H
MOV A,#10
LOOP:
JNB P1.1,TANG
JNB P1.2,GIAM
CALL XUNG
SJMP LOOP
TANG:
CJNE A, #255, TANG1
SJMP LOOP
TANG1:
INC A
CALL XUNG
SJMP LOOP
GIAM:
CJNE A, #1, GIAM1
SJMP LOOP
GIAM1:
DEC A
CALL XUNG
SJMP LOOP
XUNG:
MOV R5, A
DL50:
MOV TH0, #HIGH(-50000)
MOV TL0, #LOW(-50000)
SETB TR0
Thí nghiệm Vi Xử Lý | 7
8
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
JNB TF0, $
CLR TR0
CLR TF0
DJNZ R5, DL50
CPL P1.0
RET
END
Bài 2: Thí nghiệm hiển thị dùng LED 7 đoạn
Thí nghiệm 1:
Viết chương trình thực hiện bộ đếm từ 0 đến 9 và hiển thị ra LED 7 đoạn,mỗi
lần cách nhau 2s.
Code:
ORG 2000H
MOV
MOV
TMOD, #01H
DPTR, #0000H
AGAIN:
NEXT:
MOV
A, #0E0H
@DPTR, A
DELAY
MOVX
LCALL
INC
A
CJNE
SJMP
A, #0EAH, NEXT
AGAIN
DELAY:
DEL1:
MOV
MOV
MOV
SETB
JNB
CLR
CLR
DJNZ
RET
R7, #40
TH0, #HIGH(-50000)
TL0, #LOW(-50000)
TR0
TF0, $
TR0
TF0
R7, DEL1
END
Thí nghiệm 2:
Viết chương trình hiển thị giá trị 1234 ra LED 7 đoạn.
Code:
ORG 2000H
MOV
TMOD,#01H
AGAIN:
Thí nghiệm Vi Xử Lý | 8
9
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
MOV
MOV
MOVX
LCALL
DPTR, #0000H
A,#71H
@DPTR, A
DELAY
MOV
MOVX
LCALL
A,#0B2H
@DPTR, A
DELAY
MOV
MOVX
LCALL
A,#0D3H
@DPTR, A
DELAY
MOV
MOVX
LCALL
A,#0E4H
@DPTR, A
DELAY
SJMP
AGAIN
DELAY:
MOV
MOV
SETB
JNB
CLR
CLR
RET
TH0, #HIGH(-1000)
TL0, #LOW(-1000)
TR0
TF0, $
TR0
TF0
END
Thí nghiệm 3: Viết chương trình thể hiện giá trị nhị phân trong thanh ghi R7 ra
LED 7 đoạn.
Code:
ORG 2000H
MOV
CALL
R7, #128 ; Giá trị ví dụ
BI2BCD
AGAIN:
; HIEN THI HANG DON VI
MOV
A, 21H
MOV
MOVC
MOV
MOVX
LCALL
DPTR, #DONVI
A, @A+DPTR
DPTR, #0000H
@DPTR, A
DELAY
; HIEN THI HANG CHUC
MOV
A, 22H
MOV
MOVC
MOV
MOVX
LCALL
DPTR, #CHUC
A, @A+DPTR
DPTR, #0000H
@DPTR, A
DELAY
; HIEN THI HANG TRAM
MOV
A, 23H
MOV
MOVC
MOV
MOVX
LCALL
DPTR, #TRAM
A, @A+DPTR
DPTR, #0000H
@DPTR, A
DELAY
Thí nghiệm Vi Xử Lý | 9
10
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
SJMP
EXIT
DELAY:
MOV
MOV
SETB
JNB
CLR
CLR
RET
RET
TH0, #HIGH(-1000)
TL0, #LOW(-1000)
TR0
TF0, $
TR0
TF0
BI2BCD:
MOV
MOV
DIV
MOV
MOV
DIV
MOV
MOV
RET
A, R7
B, #10
AB
21H, B ; LUU HANG DON VI
B, #10
AB
22H, B ; LUU HANG CHUC
23H, A ; LUU HANG TRAM
DONVI:
CHUC:
TRAM:
EXIT:
END
DB 0E0H, 0E1H, 0E2H, 0E3H, 0E4H, 0E5H, 0E6H, 0E7H, 0E8H, 0E9H
DB 0D0H, 0D1H, 0D2H, 0D3H, 0D4H, 0D5H, 0D6H, 0D7H, 0D8H, 0D9H
DB 0B0H, 0B1H, 0B2H, 0B3H, 0B4H, 0B5H, 0B6H, 0B7H, 0B8H, 0B9H
NOP
Bài 3: Thí nghiệm hiển thị dùng LCD
Thí nghiệm : Hiển thị dịch trái chuỗi “DHBK Tp.HCM”
Code:
ORG
MOV
CALL
EN
2000H
A,#01H
WRITE_COMMAND
BIT
BIT
P3.4
P3.5
RS
MAIN:
MOV
CALL
DPTR, #8000H
LCD_INIT
MOV
CALL
A, #01H
WRITE_COMMAND
MOV
A, #90H
CALL
WRITE_COMMAND
MOV
MOV
PUSH
R1, #11
A, #0
ACC
LOOP:
CALL
TRABANG
Thí nghiệm Vi Xử Lý | 10
11
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
CALL
POP
WRITE_TEXT
ACC
INC
A
PUSH
DJNZ
MOV
ACC
R1, LOOP
R1,#27
LOOP1:
MOV
A, #18H
CALL
CALL
DJNZ
WRITE_COMMAND
DELAY
R1,LOOP1
SJMP
MAIN
TRABANG:
MOV
MOVC
DPTR, #TABLE1
A, @A+DPTR
RET
;===============================================================
LCD_INIT: KHOI DONG LCD
;
;===============================================================
LCD_INIT:
MOV
A, #38H
CALL
WRITE_COMMAND
MOV
CALL
A, #0EH
WRITE_COMMAND
MOV
CALL
A, #06H
WRITE_COMMAND
RET
;===============================================================
;===============================================================
;
CHO 50MS DE LCD THUC HIEN XONG LENH
;===============================================================
WAIT_LCD:
MOV
R7, #100
R6, #250
R6, $
LL1:
RET
MOV
DJNZ
DJNZ
R7, LL1
;===============================================================
DELAY:
MOV
MOV
MOV
DJNZ
DJNZ
DJNZ
R5, #20
R7, #10
R6, #250
R6, $
R7, LLL2
R5, LLL1
LLL1:
LLL2:
RET
;===============================================================
;===============================================================
Thí nghiệm Vi Xử Lý | 11
12
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
;
TRUYEN DU LIEU CHO LCD - RS=1
;===============================================================
WRITE_TEXT:
MOV
DPTR, #8000H
LCALL
SETB
MOVX
SETB
CLR
WAIT_LCD
RS
@DPTR, A
EN
EN
RET
;===============================================================
TRUYEN LENH CHO LCD - RS=0
;
;===============================================================
WRITE_COMMAND:
MOV
LCALL
CLR
DPTR, #8000H
WAIT_LCD
RS
MOVX
SETB
CLR
@DPTR, A
EN
EN
RET
;===============================================================
TABLE1:
DB
'DHBK Tp.HCM'
END
Bài 4: Thí nghiệm giao tiếp qua cổng nối tiếp
Thí nghiệm 1: Viết chương trình phát chuỗi ký tự “Hello, world” lên máy tính
thông qua Hyper Terminal với tốc độ 19200pbs.
Code:
ORG
MOV
MOV
MOV
SETB
2000H
SCON,#52H
TMOD,#20H
TH1,#-3
TR1
MOV
MOV
PUSH
R7,#11
A,#0
ACC
LOOP:
MOV
DPTR, #TABLE
A, @A+DPTR
OUT_CHAR
ACC
MOVC
CALL
POP
INC
ACC
ACC
R7, LOOP
$
PUSH
DJNZ
SJMP
Thí nghiệm Vi Xử Lý | 12
13
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
OUT_CHAR:
JNB TI, $
CLR TI
MOV SBUF, A
RET
TABLE:
DB 'Hello world'
END
Thí nghiệm 2: Viết chương trình nhận các ký tự từ máy tính gửi đến EME-MC8
thông qua Hyper Terminal (bằng cách gõ các ký tự trên bàn phím khi đang ở
trong chương trình Hyper Terminal) và hiển thị lên LCD.
Code:
ORG 2000H
EN
RS
BIT
BIT
P3.4
P3.5
MOV
SETB
MOV
A, PCON
ACC.7
PCON,A
MOV
MOV
MOV
SETB
SCON,#52H
TMOD,#20H
TH1,#-3
TR1
MOV
A,#01H
CALL
MOV
CALL
WRITE_COMMAND
DPTR, #8000H
LCD_INIT
MAIN:
CALL
CALL
CALL
SJMP
IN_CHAR
WRITE_TEXT
OUT_CHAR
MAIN
OUT_CHAR:
JNB TI, $
CLR TI
MOV SBUF, A
RET
IN_CHAR:
JNB RI, IN_CHAR
CLR RI
MOV A, SBUF
RET
;===============================================================
LCD_INIT: KHOI DONG LCD
;
;===============================================================
LCD_INIT:
MOV
A, #38H
Thí nghiệm Vi Xử Lý | 13
14
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
CALL
WRITE_COMMAND
MOV
A, #0EH
CALL
WRITE_COMMAND
MOV
CALL
A, #06H
WRITE_COMMAND
RET
;===============================================================
;===============================================================
;
CHO 50MS DE LCD THUC HIEN XONG LENH
;===============================================================
WAIT_LCD:
MOV
R7, #100
R6, #250
R6, $
LL1:
RET
MOV
DJNZ
DJNZ
R7, LL1
;===============================================================
DELAY:
MOV
MOV
MOV
DJNZ
DJNZ
DJNZ
R5, #20
R7, #100
R6, #250
R6, $
R7, LLL2
R5, LLL1
LLL1:
LLL2:
RET
;===============================================================
;===============================================================
;
TRUYEN DU LIEU CHO LCD - RS=1
;===============================================================
WRITE_TEXT:
MOV
DPTR, #8000H
LCALL
SETB
MOVX
SETB
CLR
WAIT_LCD
RS
@DPTR, A
EN
EN
RET
;===============================================================
TRUYEN LENH CHO LCD - RS=0
;
;===============================================================
WRITE_COMMAND:
MOV
LCALL
CLR
DPTR, #8000H
WAIT_LCD
RS
MOVX
SETB
@DPTR, A
EN
Thí nghiệm Vi Xử Lý | 14
15
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
CLR
END
EN
RET
Bài 5: Thí nghiệm điều khiển ADC
Thí nghiệm 1: Viết chương trình thực hiện đọc điện áp của biến trở trên kênh 0
và hiển thị ra led 7 đoạn.
Code:
ORG 2000H
MAIN:
MOV TMOD,#20H
MOV DPTR,#4000H
MOV A,#0
LOOP:
MOVX @DPTR,A
CALL DELAY100US
MOVX A,@DPTR
CALL BINTOBCD
MOV DPTR,#0000H
MOV A,R2
ORL A,#0E0H
MOVX @DPTR,A
CALL DELAY3MS
MOV A,R3
ORL A,#0D0H
MOVX @DPTR,A
CALL DELAY3MS
MOV A,R4
ORL A,#0B0H
MOVX @DPTR,A
CALL DELAY3MS
SJMP LOOP
DELAY100US:
MOV TH1,#-100
MOV TL1,#-100
SETB TR1
JNB TF1,$
CLR TF1
CLR TR1
RET
BINTOBCD:
MOV B,#10
DIV AB
MOV R2,B
MOV B,#10
DIV AB
MOV R3,B
MOV R4,A
RET
DELAY3MS:
MOV R5,#10
Thí nghiệm Vi Xử Lý | 15
16
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
LOOP1: MOV R6,#150
DJNZ R6,$
DJNZ R5,LOOP1
RET
END
Thí nghiệm 2: Viết chương trình thực hiện đọc điện áp của biến trở trên kênh 0
và hiển thị ra LCD.
Code:
ORG 2000H
MAIN:
CALL LCD_INIT
MOV TMOD,#21H
LOOP:
MOV DPTR,#4000H
MOV A,#0
MOVX @DPTR,A
CALL DELAY100US
MOVX A,@DPTR
CALL BINTOASCII
CALL CLR_LCD
MOV A,R4
CALL WRITE_TEXT
MOV A,R3
CALL WRITE_TEXT
MOV A,R2
CALL WRITE_TEXT
CALL DELAY3MS
CALL 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
DIV AB
MOV R3,B
MOV R4,A
MOV A,#30H
ADD A,R2
MOV R2,A
MOV A,#30H
ADD A,R3
MOV R3,A
Thí nghiệm Vi Xử Lý | 16
17
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
MOV A,#30H
ADD A,R4
MOV R4,A
RET
DELAY3MS:
CLR TF0
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
JNB TF0,$
CLR TR0
RET
LCD_INIT:
MOV DPTR,#8000H
SETB P3.4
CLR P3.5
MOV A,#38H
MOVX @DPTR,A
CLR P3.4
CALL DELAY3MS
SETB P3.4
CLR P3.5
MOV A,#0EH
MOVX @DPTR,A
CLR P3.4
CALL DELAY3MS
SETB P3.4
CLR P3.5
MOV A,#06H
MOVX @DPTR,A
CLR P3.4
CALL DELAY3MS
RET
WRITE_TEXT:
MOV DPTR,#8000H
SETB P3.4
SETB P3.5
MOVX @DPTR,A
CLR P3.4
CALL DELAY3MS
RET
CLR_LCD:
MOV DPTR,#8000H
SETB P3.4
CLR P3.5
MOV A,#01H
MOVX @DPTR,A
CLR P3.4
CALL DELAY3MS
RET
END
Thí nghiệm Vi Xử Lý | 17
18
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
Bài 6: Thí nghiệm với LED ma trận
Thí nghiệm 1: Viết chương trình hiển thị chữ A ra LED ma trận
Code:
ORG
2000H
;========================================
;Xuat ky tu A tren LED ma tran
;========================================
MAIN:
MOV
MOV
ACALL
ACALL
INC
A, #01H
R0, #0
QUET_COT
QUET_HANG
R0
LAP:
ACALL
CJNE
SJMP
DELAY
R0, #5, LAP
MAIN
;-----------------------------------------
QUET_COT:
PUSH
PUSH
RR
DPH
DPL
A
MOV
MOVX
POP
POP
RET
DPTR, #
@DPTR, A
DPH
DPL
QUET_HANG:
PUSH
PUSH
PUSH
MOV
ACALL
MOVX
POP
ACC
DPH
DPL
DPTR, #
DU_LIEU_HANG
@DPTR, A
ACC
POP
DPH
POP
DPL
RET
DU_LIEU_HANG:
PUSH
PUSH
MOV
MOV
MOVC
POP
DPH
DPL
A, R0
DPTR, #CHAR_A
A, @A+DPTR
DPH
POP
DPL
RET
DELAY:
MOV
LAPC1: MOV
R7, #4
R6, #250
R6, $
DJNZ
DJNZ
R7, LAPC1
RET
Thí nghiệm Vi Xử Lý | 18
19
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
CHAR_A: DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H
END
Thí nghiệm 2: Viết lại chương trình hiển thị chữ A ra LED ma trận có sử dụng
chương trình con
Code:
ORG
2000H
;==========================================
;Xuat ky tu A tren LED ma tran (dung CTCon)
;==========================================
MAIN:
MOV
MOV
MOV
MOV
R0, #8
R1, #30H
DPTR, #CHAR_A
A, #0
LAP:
MOVC
MOV
INC
A, @A+DPTR
@R1, A
R1
INC
A
DJNZ
ACALL
R0, LAP
XUAT
;-----------------------------------------
XUAT:
PUSH
PUSH
PUSH
MOV
MOV
MOV
ACALL
ACALL
INC
ACC
R0
R1
A, #01H
R0, #0
R1, #30H
QUET_COT
QUET_HANG
R0
LAPC:
INC
R1
ACALL
CJNE
PUSH
PUSH
PUSH
SJMP
RET
DELAY
R0, #7, LAPC
ACC
R0
R1
XUAT
QUET_COT:
PUSH
DPH
DPL
A
PUSH
RR
MOV
MOVX
POP
POP
RET
DPTR, #
@DPTR, A
DPH
DPL
QUET_HANG:
PUSH
ACC
Thí nghiệm Vi Xử Lý | 19
20
Báo cáo Thí nghiệm Vi Xử Lý
Nhóm 2
PUSH
PUSH
MOV
MOV
MOVX
POP
DPH
DPL
DPTR, #
A, @R1
@DPTR, A
ACC
POP
POP
DPH
DPL
RET
DELAY:
MOV
R7, #4
LAPC1: MOV
DJNZ
R6, #250
R6, $
R7, LAPC1
DJNZ
RET
CHAR_A: DB 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H
END
Bài 7: Thí nghiệm với động cơ DC
Thí nghiệm1: Viết chương trình cho phép động cơ chạy theo chiều thuận trong
vòng 2s, nghỉ 2s, chạy theo chiều ngược 2s, nghỉ 2s và lặp lại.
Code:
ORG 2000H
MAIN:
NEXT:
MOV TMOD, #01H
MOV R1, #40
MOV DPTR, #0E000H
CLR A
CALL THUAN
MOVX @DPTR, A
CALL DELAY
CALL NGHI
MOVX @DPTR, A
CALL DELAY
CALL NGHICH
MOVX @DPTR, A
CALL DELAY
CALL NGHI
MOVX @DPTR, A
CALL DELAY
SJMP NEXT
NGHICH:
NGHI:
SETB ACC.0
CLR ACC.1
RET
CLR ACC.0
CLR ACC.1
RET
THUAN:
CLR ACC.0
Thí nghiệm Vi Xử Lý | 20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo thí nghiệm Vi xử lý - Nguyễn Phước Lộc", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bao_cao_thi_nghiem_vi_xu_ly_nguyen_phuoc_loc.pdf

