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  
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 đủ
pdf 40 trang myanh 19220 Free
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:

  • pdfbao_cao_thi_nghiem_vi_xu_ly_nguyen_phuoc_loc.pdf