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

báo cáo bài tập lớn 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 (602.9 KB, 20 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA ĐIỆN- ĐIỆN TỬ
----------

BÁO CÁO BÀI TẬP LỚN
VI XỬ LÝ
---Nhóm 1---

Giáo viên hướng dẫn: Đoàn Ngọc Cẩm
Lớp: L16


BẢNG PHÂN CHIA CƠNG VIỆC CỦA CÁC THÀNH VIÊN TRONG
NHĨM
ST
T
1
2
3

MSSV
201017
9
201056
3
201055
3

Họ và Tên


Công việc thực hiện

Đinh Bá Duy

Thực hiện Proteus, code KeilC,
báo cáo

Nguyễn Vương Quốc

Thiết kế mạch, báo cáo

Nguyễn Hữu Quang Vinh

Tìm giải thuật code KeilC, báo
cáo

Ghi
chú


1. ĐỀ TÀI [SỐ THỨ TỰ CỦA ĐỀ TÀI]
Thiết kế mạch điện tử sử dụng vi xử lý 8051 và một vi mạch 74’138 cùng các cổng
logic cần thiết để điều khiển một bảng LED ma trận có kích thước 16x16 (được ghép từ 4
LED ma trận 8x8) với địa chỉ truy suất được cho ở bảng dưới đây.
Địa chỉ truy suất
Ngoại vi giao tiếp
0000H - 17FFH
8 bit cao của cột
1800H – 3FFFH
8 bit thấp của cột

4000H – 8FFFH
8 bit cao của hàng
9000H - AFFFH
8 bit thấp của hàng
Đồng thời thiết kế để giao tiếp với 4 nút nhấn UP, DOWN, LEFT, RIGHT.
u cầu:
Vẽ mơ phỏng trên Proteus, lập trình cho 8051 sáng 1 điểm ảnh tại vị trí giao nhau của
cột 0, hàng 0 (trọng số thấp). Nhận dữ liệu từ 4 nút nhấn để di chuyển điểm ảnh
lên/xuống/trái/phải tương ứng.
P/s: Khi thiết kế bảng LED trên Proteus, sinh viên cứ nối dây bằng cách đặt tên, nối
dây xong rồi kéo bảng LED lại. Chú ý, sinh viên thiết kế sao cho trọng số thấp của hàng
nằm phía tay trái, trọng số thấp của cột nằm ở dưới.


2. THIẾT KẾ MÔ PHỎNG TRÊN PROTEUS.
2.1. Sơ đồ khối tổng quan
2.1.1. Sơ đồ khối tổng quan
Sơ đồ giao tiếp giữa 8051 với LED ma trận.

Giải thích các khối:
- 8051: Vi xử lý trung tâm
- Mạch giải mã địa chỉ: Giải mã phân vùng địa
chỉ
- 74LS138: Để phân vùng địa chỉ
- 74HC573: Chốt dữ liệu gửi qua LED ma trận
- LED ma trận: ngoại vi cần giao tiếp


2.2. Sơ đồ khối chi tiết của từng phần.
2.2.1. Phần 8051


Chân
(Pin)
Port 0

Kiểu
chân
Input/
Ouput

Port 2

Output

P3.6
P1.0
P1.1
P1.2
P1.3

Input
Input
Input
Input

Chức năng
Nhận và đưa dữ liệu ra 4 khối 74HC573 để hiện thị các cột, hàng
tương ứng của LED ma trận
Ta chỉ sử dụng chân P2.7, P2.6, P2.5, P2.4, P2.3. Trong đó các chân
P2.7, P2.6, P2.5 dùng làm ngõ vào của khối 74LS138, từ ngõ ra của

khối 74LS138 kết hợp với chân P2.4, P2.3 làm mạch giải mã địa
chỉ để chọn Chip
Cùng với ngõ ra của mạch giải mã địa chỉ để chọn vùng địa chỉ
Nhận dữ liệu để điểm ảnh di chuyển LÊN
Nhận dữ liệu để điểm ảnh di chuyển XUỐNG
Nhận dữ liệu để điểm ảnh di chuyển PHẢI
Nhận dữ liệu để điểm ảnh di chuyển TRÁI

2.2.2. 74HC573
Sơ đồ mạch phía cột và hàng của khối LED ma trận
 Các tín hiệu dữ liệu hàng và cột được thiết kế theo phương pháp 3 bus. Do đó,
LED ma trận 16x16 được điều khiển thông qua 4 vi mạch chốt 74HC573, hai chốt


dữ liệu của 2 hàng và 2 để chọn quét cột. Tín hiệu cho phép chốt dữ liệu LE được
tổ hợp từ tín hiệu giải mã địa chỉ và tín hiệu cho phép ghi WR\
 LED ma trận trên kit là LED có kích thước 16x16 (gồm 4 LED 8x8 ghép với
nhau) với phương pháp quét LED là quét cột nên mỗi cột đã được đệm với dãy
transitor ULN2803 có dịng tối đa lên đến 500mA. LED có cột là cathode. Thiết kế
sử dụg vi mạch ULN2803 cho phép kéo dịng lên đến 500mA ở phía cột. Dữ liệu
xuất trên cột sẽ là mức 1 vì ULN2803 hoạt động như cổng đảo nên tín hiệu lái cột
sẽ có điện áp là mức 0 (tức là gần GND) cho phép các LED trên cột tương ứng
được sáng. Dữ liệu xuất ra trên hàng là mức 1 khi đó hàng được cấp điện áp
nguồn.


a) Sơ đồ mạch 8 bit cao của cột

b) Sơ đồ mạch 8 bit thấp của cột



c) Sơ đồ mạch 8 bit cao của hàng

d) Sơ đồ mạch 8 bit thấp của hàng


2.2.3. Trình bày các bước thiết kế mạch giải mã địa chỉ.
Địa chỉ truy
xuất
0000
17FF
1800
3FFF
4000
8FFF
9000
AFFF

A15 A14 A13 A12 A11 … … … A2 A1 A0
0
0
0
0
0
1
1
1

0
0

0
0
1
0
0
0

0
0
0
1
0
0
0
1

0
1
1
1
0
0
1
0

0
0
1
1
0

1
0
1





























0
1
0
1
0
1
0
1

0
1
0
1
0
1
0
1

0
1
0
1
0
1
0
1

- Ta dùng A15, A14, A13, A12, A11 là các bit để chọn vùng địa truy xuất cho ma trận.
- Sử dụng IC 74LS138 với ngõ vào là A15, A14, A13 (A15 là MSB). Khi A15 A14 A13 = 000 thì

ngõ ra là Y0, khơng thể phân biệt hai vùng địa chỉ 0000H-17FFH với 1800H-3FFFH nên
cần sử dụng thêm bit A12, A11 để phân biệt các vùng địa chỉ
- Với địa chỉ truy xuất là 0000H thì tương ứng với tổ hợp A15 A14 A13 = 000, ngõ ra Y0 tích
cực, tiếp tục lấy Y0 + A12 + A11, ta được địa chỉ truy xuất là 0000H. Để truy xuất tới địa
chỉ 17FFH, tương ứng khi ngõ vào A15 A14 A13 = 000, ngõ ra Y0 tích cực, lấy , ta được địa
chỉ truy xuất là 17FFH. Ta đã có được vùng địa chỉ 0000H- 17FFH

Mạch giải mã vùng địa chỉ 0000H- 17FFH

-Ở địa chỉ 1800H thì tương ứng với tổ hợp A15 A14 A13 = 000, ngõ ra Y0 tích cực, lấy ,
ta thu được địa chỉ truy xuất là 1800H. Khi tổ hợp ngõ vào A15 A14 A13 = 001, thì duy
nhất ở vùng địa chỉ này có tổ hợp ngõ vào trên, khi qua 74LS138 thì ngõ ra Y1 tích
cực, nên ngõ ra Y1 tương ứng với địa chỉ 3FFFH. Ta thu được mạch giải mã vùng địa
chỉ 1800H- 3FFFH


Mạch giải mã vùng địa chỉ 1800H- 3FFFH

- Khi tổ hợp ngõ vào A15 A14 A13 = 010, thì duy nhất ở vùng địa chỉ này có tổ hợp ngõ
vào trên, khi qua 74LS138 thì ngõ ra Y2 tích cực, nên ngõ ra Y2 tương ứng với địa chỉ
4000H. Với địa chỉ 8FFFH thì tương ứng với tổ hợp A15 A14 A13 =100, ngõ ra Y4 tích cực,
lấy , ta thu được địa chỉ truy xuất là 8FFFH. Ta có được mạch giải mã vùng địa chỉ
4000H- 8FFFH.

Mạch giải mã địa chỉ 8FFFH

- Với địa chỉ 9000H thì tương ứng với tổ hợp A15 A14 A13 =100, ngõ ra Y4 tích cực, lấy ,
ta thu được địa chỉ truy xuất là 9000H. Khi tổ hợp ngõ vào A15 A14 A13 =101, thì duy nhất
ở vùng địa chỉ này có tổ hợp ngõ vào trên, khi qua 74LS138 thì ngõ ra Y5 tích cực, nên
ngõ ra Y5 tương ứng với địa chỉ AFFFH. Ta thu được mạch giải mã vùng địa chỉ 9000HAFFFH.


Mạch giải mã vùng địa chỉ 9000H- AFFFH


3. ASSEMBLY CODE FOR 8051
3.1. Sơ đồ giải thuật chương trình chính.

Sau khi Bắt đầu (là mới nạp lại code, chạy từ đầu), chương trình chạy qua phần Setup là bước khởi tạo điểm ảnh ở vị trí bắt đầu.

Điểm ảnh ở vị trí bắt đầu

Sau đó chương trình vào vịng lập vơ tận, trong vịng lập này làm nhiệm vụ:
- Kiểm tra nút nhấn nào được nhấn (thuật toán xử lý điểm khi được nhấn một nút nhất


tương tự nhau)
- Chương trình tạo trễ để điểm ảnh đảm bảo di chuyển duy nhất 1 điểm ảnh trong một
lần bấm nút nhấn
- Xử lý để điểm ảnh di chuyển theo hướng nút nhất được nhấn:
 Kiểm tra vị hiện tại của điểm ảnh có ở những vị trí ngoài cùng của 1 LED ma
trận 8x8. Đây là một vài ví dụ trường hợp trên

 Kiểm tra vị ngồi cùng của điểm ảnh ở 1 ma trận 8x8 để thay đổi bit kiểm tra
vùng địa chị của điểm ảnh. P2.1 là bit kiểm tra điểm ảnh ở 8 bit cao hoặc thấp
của hàng. P2.2 là bit kiểm tra điểm ảnh ở 8 bit cao hoặc thấp của cột. P2.1 và
P2.2 sẽ đảo bit nếu điểm ảnh ở vị trị ngoài cùng của 1 ma trận 8x8 và điểm ảnh
di chuyển qua LED ma trận 8x8 khác.
Ở vị trí này của điểm ảnh, P2.1=1 và
P2.2=1. Nếu điểm ảnh di chuyển sang
trái, P2.1=1 và P2.2 lúc này sẽ bằng 0.

P2.1 = 1, nếu điểm ảnh ở 8 hàng trên
P2.1 = 0, nếu điểm ảnh ở 8 hàng dưới
P2.2 = 1, nếu điểm ảnh ở 8 cột trái
P2.2 = 0, nếu điểm ảnh ở 8 cột phải
 Vị trí hàng của điểm ảnh trong 1 LED ma trận 8x8 được chứa trong thanh ghi


R6, vị trí cột của điểm ảnh trong 1 LED ma trận 8x8 được chứa trong thanh ghi
R7. Đối với điểm ảnh di chuyển LÊN thì dịch trái (RL) thanh ghi R6 thông qua
thanh ghi A trung gian. Điểm ảnh di chuyển XUỐNG thì dịch phải thanh (RR)
thanh ghi R6 thông qua thanh ghi A trung gian. Điểm ảnh di chuyển PHẢI thì
dịch trái thanh ghi R7 thơng qua thanh ghi A trung gian. Điểm ảnh di chuyển
TRÁI thì dịch phải (RR) thanh ghi R7 thông qua thanh ghi A trung gian.
- Xuất vị trí mới của điểm ảnh ra LED


4. Phụ lục
4.1. Bản thiết kế mạch điện trên Proteus

4.2. Code chương trình theo yêu cầu
ORG 0000H
START: ;Tạo điểm ảnh bắt đầu
MOV R7, #10000000B


; R7 là vị trị hàng ngang của điểm ảnh trong 8 bit của cột
; vd: R7=01000000B- hiển thị vị trí thứ 2 từ phải qua trong 8 bit của cột
MOV R6, #00000001B
; R6 là vị trí hàng dọc của điểm ảnh trong 8 bit của hàng
; vd: R6=00000010B- hiển thị vị trí thứ 2 từ dưới lên trong 8 bit của hàng

; R7=80H, R6=01H, hiển thị điểm ảnh thứ nhất trong 8 bit của cột từ phải qua, vị trí
thứ nhất từ dưới lên trong 8 bit hàng
CLR P2.1
; P2.1 là bit kiểm tra 8 bit hàng của điểm ảnh
; P2.1=0: điểm ảnh ở hàng dưới, P2.1=1: điểm ảnh ở hàng trên
CLR P2.2
; P2.2 là bit kiểm tra 8 bit cột của điểm ảnh
; P2.2=1: điểm ảnh ở cột bên trái, P2.2=0: điểm ảnh ở cột bên phải
MOV DPTR, #0000H ; chốt địa chỉ 8 bit cao của cột
MOV
A, R7
MOVX
@DPTR,A
MOV DPTR, #9000H ; chốt địa chỉ 8 bit thấp của hàng
MOV A, R6
MOVX
@DPTR, A
MAIN:
JB P1.0, KHAC_1 ; Kiểm tra nút nhấn LÊN (UP)
ACALL DELAY
ACALL UP ; Nếu nút nhấn được nhấn thì điểm ảnh di chuyển LÊN
SJMP MAIN
KHAC_1:
JB P1.1, KHAC_2 ; Kiểm tra nút nhấn XUỐNG (DOWN)
ACALL DELAY
ACALL DOWN ; Nếu nút nhấn được nhấn thì điểm ảnh di chuyển XUỐNG
SJMP MAIN
KHAC_2:
JB P1.2, KHAC_3 ; Kiểm tra nút nhấn PHẢI (RIGHT)
ACALL DELAY

ACALL RIGHT ; Nếu nút nhấn được nhấn thì điểm ảnh di chuyển PHẢI
SJMP MAIN
KHAC_3:
JB P1.3, MAIN ; Kiểm tra nút nhấn TRÁI (LEFT)
ACALL DELAY
ACALL LEFT ; Nếu nút nhấn được nhấn thì điểm ảnh di chuyển TRÁI
SJMP MAIN
UP: ; Thuật toán điểm ảnh di chuyển LÊN
CJNE R6, #80H, TT_UP ; Kiểm tra điểm ảnh có ở vị trí trên cùng theo hàng ngang


; Khi điểm ảnh ở vị trên cùng theo hàng ngang, nếu điểm ảnh tiếp tục di chuyển lên thì
sẽ điểm ảnh sẽ đổi hàng
SJMP DOI_HANG_UP
DOI_HANG_UP:
CPL P2.1 ; Đảo bit kiểm tra hàng của điểm ảnh
TT_UP: ; Di chuyển điểm ảnh và xuất ra LED
MOV A, R6 ; Thanh ghi A chứa vị trí hiện tại của điểm ảnh
RL A ; Dịch trái thanh ghi A = Di chuyển điểm ảnh lên trên
MOV R6, A ; R6 chứa vị trí mới của điểm ảnh
JB P2.1, HANG_TREN_UP
; Kiểm tra bit hàng của điểm ảnh
HANG_DUOI_UP: ; Xuất điểm ảnh nếu điểm ảnh vẫn ở hàng dưới
MOV DPTR, #4000H ; Chốt địa chỉ 8 bit ở hàng trên
MOV A, #00H ; Đảm bảo không hiển thị điểm ảnh ở hàng trên
MOVX
@DPTR, A
MOV DPTR, #9000H ; Chốt địa chỉ 8 bit ở hàng dưới
MOV A, R6
MOVX

@DPTR, A
SJMP MAIN
HANG_TREN_UP: ; Xuất điểm ảnh nếu điểm ảnh vẫn ở hàng trên
MOV DPTR, #9000H ; Chốt địa chỉ 8 bit ở hàng dưới
MOV A, #00H ; Đảm bảo không hiển thị điểm ảnh ở hàng dưới
MOVX
@DPTR, A
MOV DPTR, #4000H ; Chốt địa chỉ 8 bit ở hàng trên
MOV A, R6
MOVX
@DPTR, A
SJMP MAIN
RET
; Tương tự với thuật toán TRÊN đối với điểm ảnh di chuyển XUỐNG
DOWN:
CJNE R6, #01H, TT_DOWN
SJMP DOI_HANG_DOWN
DOI_HANG_DOWN:
CPL P2.1
TT_DOWN:
MOV A, R6
RR
A
MOV
R6, A
JB
P2.1, HANG_TREN_DOWN
HANG_DUOI_DOWN:
MOV DPTR, #4000H
MOV A, #00H



MOVX
@DPTR, A
MOV DPTR, #9000H
MOV A, R6
MOVX
@DPTR, A
SJMP MAIN
HANG_TREN_DOWN:
MOV DPTR, #9000H
MOV A, #00H
MOVX
@DPTR, A
MOV DPTR, #4000H
MOV A, R6
MOVX
@DPTR, A
SJMP MAIN
RET
RIGHT: ; Thuật toán điểm ảnh di chuyển PHẢI
CJNE R7, #80H, TT_RIGHT ; Kiểm tra điểm ảnh có ở vị trí ngồi cùng bên phải của 8
bit cột
; Khi điểm ảnh ở vị trí ngồi cùng bên phải của 8 bit cột, nếu điểm ảnh tiếp tục di
chuyển qua PHẢI thì sẽ đổi cột cho điểm ảnh
SJMP DOI_COT_RIGHT
DOI_COT_RIGHT:
CPL P2.2 ; Đổi bit kiểm tra cột của điểm ảnh
TT_RIGHT: ; Di chuyển điểm ảnh và xuất ra LED
MOV A, R7 ; Thanh ghi A chứa vị trí hiện tại của điểm ảnh

RL A ; Dịch trái thanh ghi A = Di chuyển điểm ảnh qua PHẢI
MOV R7, A
JB P2.2, COT_TRAI_RIGHT ; Kiểm tra bit cột của điểm ảnh
COT_PHAI_RIGHT:
MOV DPTR, #1800H ; Chốt địa chỉ 8 bit cột trái
MOV
A, #00H ; Đảm bảo cột trái không hiển thị LED
MOVX
@DPTR,A
MOV DPTR, #0000H ; Chốt địa chỉ 8 bit cột phải
MOV
A, R7
MOVX
@DPTR,A
JMP MAIN
COT_TRAI_RIGHT:
MOV DPTR, #0000H ; Chốt địa chỉ 8 bit cột phải
MOV
A, #00H ; Đảm bảo cột phải không hiển thị LED
MOVX
@DPTR,A
MOV DPTR, #1800H ; Chốt địa chỉ 8 bit cột trái
MOV
A, R7
MOVX
@DPTR,A


JMP MAIN
RET

; Tương tự với thuật toán PHẢI đối với điểm ảnh di chuyển TRÁI
LEFT: ; Thuật toán điểm ảnh di chuyển TRÁI
CJNE R7, #01H, TT_LEFT
SJMP DOI_COT_LEFT
DOI_COT_LEFT:
CPL P2.2
TT_LEFT:
MOV A, R7
RR A
MOV R7, A
JB P2.2, COT_TRAI_LEFT
COT_PHAI_LEFT:
MOV DPTR, #1800H
MOV
A, #00H
MOVX
@DPTR,A
MOV DPTR, #0000H
MOV
A, R7
MOVX
@DPTR,A
JMP MAIN
COT_TRAI_LEFT:
MOV DPTR, #0000H
MOV
A, #00H
MOVX
@DPTR,A
MOV DPTR, #1800H

MOV
A, R7
MOVX
@DPTR,A
JMP MAIN
RET
DELAY:
PUSH 1
PUSH 2
PUSH 3
MOV R3, #3
DL2: MOV R1,#255
DL:
MOV R2,#255
DJNZ R2, $
DJNZ R1, DL
DJNZ R3, DL2
POP 3


POP 2
POP 1
RET
END

4.3. Video chạy mô phỏng.
BTLVXL - Proteus 8 Professional - Schematic Capture 2022-06-13 22-20-13.mp4




×