THÍ NGHIỆM VI XỬ LÝ
BÀI 1: IN/OUT
1. Giới thiệu chung.
IC 89C51 là họ vi điều điều khiển do hãng Intel của Mỹ sản xuất có đặc
điểm như sau:
Bộ nhớ chương trình bên trong: 4KB (ROM)
Bộ nhớ dữ liệu bên trong: 128 byte
Bộ nhớ chương trình bên ngoài: 64KB
Bộ nhớ dữ liệu bên ngoài: 64KB
4 port xuất nhập dữ liệu: 8 bit
2 bộ định thời: 16 bit
Mạch giao tiếp nối tiếp
Bộ xử lý bit
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit
Nhân chia trong 4s
2. Thực hành:
Mạch nguyên lý có sử dụng công tắc tắt/ mở led đơn
Code cho mạch nguyên lý trên:
ORG 00H
MAIN:
MOV P3,#0FFH
PACK:
MOV A,P3
MOV P2,A
SVTH: NGUYỄN MINH HIẾU
1
THÍ NGHIỆM VI XỬ LÝ
SJMP PACK
END
Mạch nguyên lý hiển thị trên led đơn.
Viết đoạn code sang dần với thời gian
delay 100ms
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#9,AAA
SJMP MAIN
BANG:
DB 00000000B
DB 00000001B
DB 00000011B
DB 00000111B
DB 00001111B
DB 00011111B
DB 00111111B
DB 01111111B
DB 11111111B
DELAY:
SVTH: NGUYỄN MINH HIẾU
Viết đoạn code tắt dần với thời gian
delay 100ms.
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#9,AAA
SJMP MAIN
BANG:
DB 11111111B
DB 11111110B
DB 11111100B
DB 11111000B
DB 11110000B
DB 11100000B
DB 11000000B
DB 10000000B
DB 00000000B
DELAY:
2
THÍ NGHIỆM VI XỬ LÝ
MOV R1,#100
LAP1:
MOV R1,#100
LAP1:
MOV R2,#100
MOV R2,#100
LAP2:
LAP2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
Viết đoạn code sang dần, rồi tắt dần với
thời gian delay 10ms
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#17,AAA
SJMP MAIN
BANG:
DB 00000000B
DB 00000001B
DB 00000011B
DB 00000111B
DB 00001111B
DB 00011111B
DB 00111111B
DB 01111111B
DB 11111111B
DB 01111111B
Viết đoạn code làm cho led sang dần
từ trong ra ngoài, rồi tắt dần từ ngoài
vào trong với thời gian delay 10ms.
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#17,AAA
SJMP MAIN
BANG:
DB 00000000B
DB 00000001B
DB 00000010B
DB 00000100B
DB 00001000B
DB 00010000B
DB 00100000B
DB 01000000B
DB 11111111B
SVTH: NGUYỄN MINH HIẾU
3
THÍ NGHIỆM VI XỬ LÝ
DB 00111111B
DB 00011111B
DB 00001111B
DB 00000111B
DB 00000011B
DB 00000001B
DB 00000000B
DELAY:
MOV R1,#10
LAP1:
MOV R2,#100
LAP2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
DB 01111111B
DB 00111111B
DB 00011111B
DB 00001111B
DB 00000111B
DB 00000011B
DB 00000001B
DB 00000000B
DELAY:
MOV R1,#10
LAP1:
MOV R2,#100
LAP2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
Bài 2: LED 7 ĐOẠN
1. Giới thiệu chung.
Có 2 loại led 7
đoạn:
Cathode chung: thanh đó được sáng nếu như mức vào của thanh là Vcc.
SVTH: NGUYỄN MINH HIẾU
4
THÍ NGHIỆM VI XỬ LÝ
Anode chung: thanh đó được sang nếu như mức vào của thanh là GND.
IC giải mã led 7 đoạn anode chung là IC 7447.
2. Thực hành.
Mạch nguyên lý hiển thị trên led 7 đoạn
Quét led 7 đoạn.
ORG 00H
MAIN:
Đoạn code hiển thị từ 0-99 sử dụng kỹ thuật tra
bảng.
ORG 00H
SVTH: NGUYỄN MINH HIẾU
5
THÍ NGHIỆM VI XỬ LÝ
MOV TMOD ,#
01100000B
MOV TL1 , #0
MOV TH1 , #0
LOOP:
SETB TR1
MOV A ,TL1
CJNE A,
#10,AAA
MOV TL1,#0
AAA:
MOV DPTR ,
#BANG
MOVC
A,@A+DPTR
MOV P2,A
JNB TF1,LOOP
CLR TR1
CLR TF1
SJMP LOOP
BANG:
DB 11000000B
DB 11111001B
DB 10100100B
DB 10110000B
DB 10011001B
DB 10010010B
DB 10000010B
DB 11111000B
DB 10000000B
DB 10010000B
DELAY:
MOV R1,#10
LAP1:
MOV R2,#100
LAP2:
MOV R3,#100
LAP3:
NOP
NOP
NOP
NOP
NOP
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV B,#10
DIV AB
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
INC R4
CJNE R4,#100,AAA
SJMP MAIN
BANG:
DB 11000000B ;0
DB 11111001B ;1
DB 10100100B ;2
DB 10110000B ;3
DB 10011001B ;4
DB 10010010B ;5
DB 10000010B ;6
DB 11111000B ;7
DB 10000000B ;8
DB 10010000B ;9
DELAY:
MOV R1,#10
LAP1:
MOV R2,#100
LAP2:
MOV R3,#100
LAP3:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SVTH: NGUYỄN MINH HIẾU
6
THÍ NGHIỆM VI XỬ LÝ
NOP
NOP
NOP
DJNZ R3,LAP3
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
Code hiển thị từ 0-99 sử
dụng IC 7447
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV B,#10
DIV AB
SWAP A
ORL A,B
MOV P2,A
ACALL DELAY
INC R4
CJNE
R4,#100,AAA
SJMP MAIN
DELAY:
MOV R1,#10
LAP1:
MOV R2,#100
LAP2:
MOV R3,#100
LAP3:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3,LAP3
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
DJNZ R3,LAP3
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
Led 7 đoạn dùng chức năng counter.
ORG 00H
MAIN:
MOV TMOD,#01100000B
MOV TL1,#0
MOV TH1,#0
SETB P3.5
LOOP1:
SETB TR1
MOV A,TL1
CJNE A,#100,LOOP
MOV TL1,#0
LOOP:
MOV DPTR,#BANG
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
JNB TF1,LOOP1
CLR TF1
CLR TR1
SJMP LOOP1
BANG:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,8
0H,90H
RET
END
SVTH: NGUYỄN MINH HIẾU
7
THÍ NGHIỆM VI XỬ LÝ
END
Bài 3: LED MA TRẬN.
1. Giới thiệu chung.
Led ma trận và IC dịch 74HC595.
2. Thực
hành
Mạch nguyên lý hiển thị trên led ma trận.
SVTH: NGUYỄN MINH HIẾU
8
THÍ NGHIỆM VI XỬ LÝ
Code hiển thị chữ A
ORG 00H
MAIN:
MOV A,#10000000B
MOV R0,#0
LOOP:
RL A
MOV P2,A
MOV R1,A
MOV DPTR,#BANG
MOV A,R0
MOVC A,@A+DPTR
MOV P3,A
CALL DELAY
MOV A,R1
INC R0
CJNE R0,#8,LOOP
SJMP MAIN
BANG:
DB
0FFH,87H,0EBH,0EDH,0EBH,87H,0
FFH,0FFH
SVTH: NGUYỄN MINH HIẾU
Code hiển thị chữ A dùng IC dịch.
ORG 00H
SJMP MAIN
CLK EQU P3.1
LATCH EQU P3.2
SERIAL EQU P3.0
MAIN:
MOV A,#0FFH
MOV DPTR,#BANG
MOV R1,#0
MOV R2,#00000001B
MOV P2,#00000000B
LOOP:
MOV P2,R2
MOV A,R1
MOVC A,@A+DPTR
CALL DICH
MOV R3,#200
DJNZ R3,$
INC R1
MOV A,R2
CJNE R1,#6,LOOP
9
THÍ NGHIỆM VI XỬ LÝ
RET
DELAY:
MOV TMOD,#01H
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
SETB TR0
JNB TF0,$
CLR TF0
CLR TR0
RET
END
SJMP MAIN
DICH:
MOV R7,#8
LAP:
RRC A
MOV SERIAL,C
CLR CLK
NOP
NOP
NOP
SETB CLK
CLR LATCH
NOP
NOP
NOP
SETB LATCH
DJNZ R7,LAP
RET
BANG:
DB 83H,0F5H,0F6H,0F5H,083H,0FFH
END
Code chạy chữ A dùng IC dịch
ORG 00H
SJMP MAIN CLK EQU P3.1
LATCH EQU P3.2
SERIAL EQU P3.0
MAIN:
MOV A,#0FFH
MOV DPTR,#BANG
MOV R2,#200
MOV R4,#00000001B LOOP:
MOV R1,#6
MOV P2,R4
CALL HIENTHI
MOV A,R4
MOV R6,A RL A
MOV R4,A
CJNE A,#10000000B,BBB
LJMP MAIN
BBB:
SVTH: NGUYỄN MINH HIẾU
10
THÍ NGHIỆM VI XỬ LÝ
MOV R1,#6
MOV P2,R6
CALL HIENTHI
MOV A,R4
MOV R5,A
LAPLAI:
MOV A,R5
RR A
MOV R5,A
CJNE A,#10000000B,AAA DJNZ
R2,BBB
LJMP LOOP
AAA:
MOV P2,R5
DEC R1
CALL HIENTHI
LJMP LAPLAI
DICH:
MOV R7,#8
LAP:
RRC A
MOV SERIAL,C
CLR CLK
NOP
NOP
NOP
SETB CLK
CLR LATCH NOP
NOP
NOP
SETB LATCH
DJNZ R7,LAP
RET
HIENTHI:
MOV A,R1
MOVC A,@A+DPTR CALL
DICH
MOV R3,#200
DJNZ R3,$ RET
BANG:
DB
SVTH: NGUYỄN MINH HIẾU
11
THÍ NGHIỆM VI XỬ LÝ
83H,0F5H,0F6H,0F5H,83H,0FFH,0FFH
END
Bài 4: ADC 0804/ LCD 16x2
1. Giới thiệu chung
LCD 16x2
Khi sản xuất LCD, người ta đã tích hợp chip điều khiển bên trong lớp vỏ và
chỉ đưa các chân giao tiếp ra ngoài.
Chức năng các chân của LCD
Chân Vss: chân nối đất
Chân Vee: điều chỉnh độ tương phản
Chân RS: chân chọn thanh ghi. RS = 1 chọn thanh ghi dữ liệu
Chân RW: chân đọc/ ghi dữ liệu.
Chân E: cho phép
Chân D0-D7: 8 đường dữ liệu để trao đổi thông tin.
2. Thực hành
Hiển thị chữ HAVE A GOOD DAY
ORG 30h
EN BIT
P3.7
RS BIT
P3.6
Hiển thị chuỗi
ORG 30h
EN BIT
P3.7
RS BIT
P3.6
LJMP MAIN
SVTH: NGUYỄN MINH HIẾU
LJMP MAIN
12
THÍ NGHIỆM VI XỬ LÝ
LCD_INIT:
MOV A,#3CH
CALL WRITE_COM
MOV A,#0EH
CALL WRITE_COM
MOV A,#06H
CALL WRITE_COM
MOV A,#01H
CALL WRITE_COM
RET
WAIT_LCD:
DELAY:
MOV R7, #100D
DEL1:MOV R6, #250D
DJNZ R6, $
DJNZ R7, DEL1
RET
WRITE_TEXT:
LCALL WAIT_LCD
MOV P2,A
SETB RS
SETB EN
CLR EN
RET
WRITE_COM:
LCALL WAIT_LCD
MOV P2,A
CLR RS
SETB EN
CLR EN
RET
BANG:
DB 'HAVE A GOOD DAY'
RET
MAIN:
CALL LCD_INIT MOV
DPTR,#BANG
CLR A
LOOP:
MOVC A,@A+DPTR
CJNE A,#'*',AAA
SJMP KETTHUC
AAA:
SVTH: NGUYỄN MINH HIẾU
LCD_INIT:
MOV A,#3CH
CALL WRITE_COM
MOV A,#0EH
CALL WRITE_COM
MOV A,#06H
CALL WRITE_COM
MOV A,#01H
CALL WRITE_COM
RET
WAIT_LCD:
DELAY:
MOV R7, #100D
DEL1:MOV R6, #250D
DJNZ R6, $
DJNZ R7, DEL1
RET
WRITE_TEXT:
LCALL WAIT_LCD
MOV P2,A
SETB RS
SETB EN
CLR EN
RET
WRITE_COM:
LCALL WAIT_LCD
MOV P2,A
CLR RS
SETB EN
CLR EN
RET
BANG1:
DB 'TDT *'
RET
BANG2:
DB 'I LOVE TDT*'
RET
MAIN:
CALL LCD_INIT
MOV A,#87H
CALL WRITE_COM
MOV DPTR,#BANG1
CLR A
LOOP:
13
THÍ NGHIỆM VI XỬ LÝ
CALL WRITE_TEXT
CLR A
INC DPTR
SJMP LOOP
KETTHUC:
SJMP $
END
MOVC A,@A+DPTR
CJNE A,#'*',NEXT
SJMP LAN2
NEXT:
CALL WRITE_TEXT
CLR A
INC DPTR
SJMP LOOP
LAN2:
MOV A,#0C3H
CALL WRITE_COM
MOV DPTR,#BANG2
CLR A
LOOP2:
MOVC A,@A+DPTR
CJNE A,#'*',NEXT2
SJMP KETTHUC
NEXT2:
CALL WRITE_TEXT
CLR A
INC DPTR
SJMP LOOP2
KETTHUC:
SJMP $
END
BÀI 5:GIỚI THIỆU VỀ KÍT THÍ NGHIỆM
1. Giới thiệu chung
SVTH: NGUYỄN MINH HIẾU
14
THÍ NGHIỆM VI XỬ LÝ
Thành phần của kít thí nghiệm.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
MicroTRAK Carrier Board
MINI-MAX/51-C2 Microcontroller board
TB-1 Training Board
PROTO-1 Prototyping Board (RTC & MMC Reader)
8051 I/O Module
LCD242 LCD
KP1-4X4 Keypad
Demo versions of BASCOM BASIC Compiler
Demo versions of Micro C Compiler/Linker/Assembler
Full version of SDCC C Compiler (open-source)
Micro-IDE Integrated Development Environment/Simulator/Offline
Debugger
Over 70 example projects
Labbook
Cables
Adapter
Training Manuals
Serial downloader (WinLoad)
Các bước thực hiện viết và chạy chương trình trên kit.
1. Sửa chữa một chương trình có sẵn hay một chương trình mới bằng trình
2.
3.
4.
2.
biên tập Micro-IDE Program Editor.
Biên dịch chương trình sử dụng ASM51 Assembler for 8051-8052 Toolkit
(công cụ biên dịch Assembler)
Nạp chương trình vào vi điều khiển trên kit thí nghiệm sử dụng công
cụ MINI- MAX/51-C Loader.
Chạy và gỡ rối chương trình trên kit thí nghiệm sử dụng công cụ MINIMAX/51-C Debugger.
Thực hành
Viết code chuyển từ port 3 sang port 2
ORG 00H
LJMP MAIN
MAIN:
SVTH: NGUYỄN MINH HIẾU
15
THÍ NGHIỆM VI XỬ LÝ
MOV P3,#0FFH
MOV A,P3
MOV P2,A
STOP: AJMP $
END
Viết đoạn code sang dần với thời gian
delay 100ms
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#9,AAA
SJMP MAIN
BANG:
DB 00000000B
DB 00000001B
DB 00000011B
DB 00000111B
DB 00001111B
DB 00011111B
DB 00111111B
DB 01111111B
DB 11111111B
DELAY:
MOV R1,#100
LAP1:
MOV R2,#100
LAP2:
NOP
NOP
NOP
NOP
NOP
SVTH: NGUYỄN MINH HIẾU
Viết đoạn code tắt dần với thời gian
delay 100ms.
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#9,AAA
SJMP MAIN
BANG:
DB 11111111B
DB 11111110B
DB 11111100B
DB 11111000B
DB 11110000B
DB 11100000B
DB 11000000B
DB 10000000B
DB 00000000B
DELAY:
MOV R1,#100
LAP1:
MOV R2,#100
LAP2:
NOP
NOP
NOP
NOP
NOP
16
THÍ NGHIỆM VI XỬ LÝ
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
Viết đoạn code sang dần, rồi tắt dần với
thời gian delay 10ms
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#17,AAA
SJMP MAIN
BANG:
DB 00000000B
DB 00000001B
DB 00000011B
DB 00000111B
DB 00001111B
DB 00011111B
DB 00111111B
DB 01111111B
DB 11111111B
DB 01111111B
DB 00111111B
DB 00011111B
DB 00001111B
DB 00000111B
DB 00000011B
DB 00000001B
DB 00000000B
DELAY:
Viết đoạn code làm cho led sang dần
từ trong ra ngoài, rồi tắt dần từ ngoài
vào trong với thời gian delay 10ms.
ORG 00H
MAIN:
MOV R4,#0
AAA:
MOV A,R4
MOV DPTR,#BANG
MOVC A,@A+DPTR
MOV P2,A
ACALL DELAY
INC R4
CJNE R4,#17,AAA
SJMP MAIN
BANG:
DB 00000000B
DB 00000001B
DB 00000010B
DB 00000100B
DB 00001000B
DB 00010000B
DB 00100000B
DB 01000000B
DB 11111111B
DB 01111111B
DB 00111111B
DB 00011111B
DB 00001111B
DB 00000111B
DB 00000011B
DB 00000001B
DB 00000000B
SVTH: NGUYỄN MINH HIẾU
17
THÍ NGHIỆM VI XỬ LÝ
MOV R1,#10
DELAY:
MOV R1,#10
LAP1:
MOV R2,#100
LAP2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
LAP1:
MOV R2,#100
LAP2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP2
DJNZ R1,LAP1
RET
END
BÀI 7: LCD 24x2 CHẾ ĐỘ 4 BIT
1. Giới thiệu chung.
LCD 24x2 chế độ 4 bit
Chế độ 4 bit: sử dụng 4 đường dữ liệu DB4-DB7
Chức năng các chân LCD 24x2
Chân Vss: chân nối đất cho LCD
Chân Vdd: chân cấp nguồn
Chân Vee: điều chỉnh độ tương phản
Chân RS: chân chọn thanh ghi. RS=1: ghi dữ liệu, RS=0: chế độ lệnh
Chân R/W: điều khiển đọc/ghi. RW=1: ghi dữ liệu, RW=0: đọc dữ liệu
Chân E: trạng thái dữ liệu/ điều khiển
2. Thực hành
Hiển thị chuỗi chữ lên LCD
ORG 00H
EN EQU P0.2
SVTH: NGUYỄN MINH HIẾU
18
THÍ NGHIỆM VI XỬ LÝ
RW EQU P0.1
RS EQU P0.0
LJMP MAIN
WRITE_COM:
MOV R3,A
ANL A,#0F0H
CLR C
ORL A,#00000100B ;EN=1,RW=0,RS=0
MOV P0,A
MOV R1,#1
ACALL DELAY1MS
CLR EN
MOV R1,#1
ACALL DELAY1MS
MOVA,R3
SWAP A
ANLA,#0F0H
CLR C
ORL A,#00000100B ;EN=1,RW=0,RS=0
MOVP0,A
MOV R1,#1
ACALL DELAY1MS
CLR EN
MOV R1,#1
ACALL DELAY1MS
RET
WRITE_TEXT:
MOV R3,A
ANL A,#0F0H
CLR C
ORL A,#00000101B ;EN=1,RW=0,RS=1
MOV P0,A
MOV R1,#1
ACALL DELAY1MS
CLR EN
MOV R1,#11
ACALL DELAY1MS
MOV A,R3
SWAP A
ANL A,#0F0H
CLR C
ORL A,#00000101B ;EN=1,RW=0,RS=1
MOV P0,A
SVTH: NGUYỄN MINH HIẾU
19
THÍ NGHIỆM VI XỬ LÝ
MOV R1,#1
ACALL DELAY1MS
CLR EN
MOV R1,#1
ACALL DELAY1MS RET
DELAY1MS:
MOV TMOD,#01H LOOP:
MOV TH0,#0FCH
MOV TL0,#18H
SETB TCON.4
JNB TCON.5,$
CLR TCON.4
CLR TCON.5
DJNZ R1,LOOP
RET
DELAY100U:
MOV R2,#10
LAP:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LAP
RET
INIT_LCD:
MOV R1,#50
ACALL DELAY1MS
MOV A,#30H
CLR C
ORL A,#00000100B ;EN=1,RW=0,RS=0
MOV P0,A
MOV R1,#1
ACALL DELAY1MS
CLR EN
MOV R1,#5
ACALL DELAY1MS
MOV A,#30H
CLR C
SVTH: NGUYỄN MINH HIẾU
20
THÍ NGHIỆM VI XỬ LÝ
ORL A,#00000100B ;EN=1,RW=0,RS=0
MOV P0,A
MOV R1,#1
ACALL DELAY1MS
CLR EN
ACALL DELAY100U
MOV A,#30H
CLR C
ORL A,#00000100B ;EN=1,RW=0,RS=0
MOV P0,A
MOV R1,#1
ACALL DELAY1MS
CLR EN
MOV A,#32H
ACALL WRITE_COM
MOV A,#28H
ACALL WRITE_COM
MOV A,#08H
ACALL WRITE_COM
MOV A,#06H
ACALL WRITE_COM
MOV A,#01H
ACALL WRITE_COM
MOV A,#0CH
ACALL WRITE_COM
RET
BANG1:
DB 'TON DUC THANG *' RET
BANG2:
DB 'HAVE A GOOD TIME *' RET
MAIN:
MOV P0,#0FFH
CLR RW
ACALL INIT_LCD
MOV DPTR,#BANG1
AGAIN:
CLR A
MOVC A,@A+DPTR
CJNE A,#'*',AAA
SJMP LAN2
AAA:
CALL WRITE_TEXT
INC DPL
SVTH: NGUYỄN MINH HIẾU
21
THÍ NGHIỆM VI XỬ LÝ
SJMP AGAIN
LAN2:
MOV A,#0C0H
CALL WRITE_COM
MOV DPTR,#BANG2
AGAIN2:
CLR
A
MOVC A,@A+DPTR
CJNE A,#'*',BBB
SJMP $
BBB:
CALL WRITE_TEXT
INC DPL
SJMP AGAIN2
END
BÀI 8: GIAO TIẾP VỚI MẠCH CÒI BUZZER
1. Giới thiệu chung.
Cái còi hay một chiếc loa đơn giản sẽ tạo ra tiếng nhạc khi một chuỗi sóng
vuông tác động vào ngõ dương của nó ( trong ngõ vào âm được nối đất). Tần
số của song vuông sẽ tạo ra những tiếng nhạc khác nhau.
Cái còi trên kit được nối với chân P1.2 của vi điều khiển. Chân này cần được
lập trình như là một ngõ ra và các song vuông với tần số và chu kỳ thay đổi
cần được tạo ra.
2. Thực hành
Đoạn code 8 nốt nhạc.
ORG 00H
MAIN:
MOV R0,#05FH
N1: LCALL DO
DJNZ R0,N1
MOV R0,#05FH
N2: LCALL RE
DJNZ R0,N2
MOV R0,#05FH
N3: LCALL MI
DJNZ R0,N3
SVTH: NGUYỄN MINH HIẾU
FA:
CPL P1.2
MOV R1,#5
LCALL DELAY
RET
SO:
CPL P1.2
MOV R1,#4
LCALL DELAY
RET
LA:
22
THÍ NGHIỆM VI XỬ LÝ
MOV R0,#05FH
N4: LCALL FA
DJNZ R0,N4
MOV R0,#05FH
N5: LCALL SO
DJNZ R0,N5
MOV R0,#05FH
N6: LCALL LA
DJNZ R0,N6
MOV R0,#05FH
N7: LCALL SI
DJNZ R0,N7
MOV R0,#05FH
N8: LCALL DOO
DJNZ R0,N8
SJMP MAIN
DO:
CPL P1.2
MOV R1,#8
LCALL DELAY
RET
RE:
CPL P1.2
MOV R1,#7
LCALL DELAY
RET
MI:
CPL P1.2
MOV R1,#6
LCALL DELAY
RET
SVTH: NGUYỄN MINH HIẾU
CPL P1.2
MOV R1,#3
LCALL DELAY
RET
SI:
CPL P1.2
MOV R1,#2
LCALL DELAY
RET
DOO:
CPL P1.2
MOV R1,#1
LCALL DELAY
RET
DELAY:
LOOP1:
MOV R2,#100
LOOP2:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R2,LOOP2
DJNZ R1,LOOP1
RET
END
23
THÍ NGHIỆM VI XỬ LÝ
SVTH: NGUYỄN MINH HIẾU
24