Tải bản đầy đủ (.docx) (24 trang)

code 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 (516 KB, 24 trang )

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



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×