1. Trang chủ
  2. » Thể loại khác

Vi xử lý phkkhanh bai5

8 157 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 8
Dung lượng 514,79 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cơ sở lý thuyết Ma trận LED gồm các LED phát quang bố trí thành hàng và cột trong một võ.. Các tín hiệu điều khiển hàng PA0 - PA6 Port A nối vào Anode của tất cả các LED trên cùng một

Trang 1

BÀI 5: MA TRẬN LED

MỤC ĐÍCH

Giúp sinh viên khảo sát các vấn đề sau:

- Sử dụng phần mềm Emu8086 để mô phỏng hoạt động của vi xử lý

8086

THIẾT BỊ SỬ DỤNG

- Máy vi tính

- Phần mềm Emu8086

- Chương trình mô phỏng hoạt động của ma trận Led

1 Cơ sở lý thuyết

Ma trận LED gồm các LED phát quang bố trí thành hàng và cột trong một

võ Các tín hiệu điều khiển hàng PA0 - PA6 ( Port A ) nối vào Anode của tất cả các LED trên cùng một hàng Các tín hiệu điều khiển cột PB0 -PB4 (Port B) nối vào Cathode của tất cả cácv LED trên cùng một cột

Khi có 1 cặp tín hiệu điều khiển hàng và cột ví dụ như khi PA0 = 1 và PB0 = 1, các Anode của hàng LED thứ nhất RW1 (hàng trên cùng) được cấp điện thế cao Đồng thời các Cathode của cột LED thứ nhất CL1 (bìa trái) được cấp thế thấp.Tuy nhiên chỉ có LED 1 là sáng vì nó có đồng thời thế cao trên Anode và thế thấp trên Cathode Như vậy khi có 1 cặp tín hiệu điều khiển hàng và cột thì chí có duy nhất 1 LED tại điểm hàng và cột gặp nhau là sáng Trên cở sở cấu trúc như vậy ta có thể xây dựng được bảng ma trận LED với số lượng LED lớn hơn ví

dụ như trong các bảng quang báo

Trong trường hợp ta cần hiển thị đồng thời 1 số LED trong ma trận để có thể hiển thị một ký hiệu nào đó ví dụ chữ „L„ trên ma trận LED Khi đó ta thấy các LED ở cột bìa trái (CL1) sáng và các LED ở hàng dưới cùng (RW7) sáng Nếu trong hiển thị tĩnh ta phải đặt tất cả các PA0 đến PA6 và PB0-4 ở mức cao, lúc này sẽ làm sáng các ở hàng RW7 và cột CL1 nhưng khi đó điều gì sẽ xảy ra?

Ta thấy rõ ràng là khi đó thì các LED khác trong ma trận cũng được cấp áp cao vào Anode và áp thấp vào Cathode do đó nó sẽ sáng tất cả các LED trong ma trận Vì vậy trong điều khiển ma trận LED ta không thể sử dụng phương pháp hiển thị tĩnh mà phải dùng phương pháp quét (hiển thị động) Nnghĩa là tiến hành cấp tín hiệu điều khiển theo dạng xung theo kiểu quét cho các hàng và cột cần hiển thị Tần số quét nhỏ nhất cho một chu kỳ cần khoảng 20Hz (50ms) nhằm bảo đảm cho mắt thấy các LED sáng đều không nháy Như vậy để hiển thị được chữ L có thể điều khiển tuần tự như trong bảng sau:

Nhịp 1 : PA0 - PA6 = 1, PB0 = 1 ; Sáng cột LED thứ nhất CL1 Nhịp 2 : PA0 - PA5 = 0, PA6 = 1, PB1 = 1 ; Sáng LED hàng RW7 và cột CL2

Trang 2

Nhịp 3 : PA0 - PA5 = 0, PA6 = 1, PB2 = 1 ; Sáng LED hàng RW7 và cột CL3

Nhịp 4 : PA0 - PA5 = 0, PA6 = 1, PB3 = 1 ; Sáng LED hàng RW7 và cột CL4

Nhịp 5 : PA0 - PA5 = 0, PA6 = 1, PB4 = 1 ; Sáng LED hàng RW7 và cột CL5

Nhịp 6 : Quay lại giống nhịp 1

(từ nhịp 1 đến nhịp 6 là 1 chu kỳ quét tối thiểu phải là 20Hz)

Sơ đồ kết nối ma trận Led 5 x 7

PORT B

1

2

3

4

5

6

7

8

+5V

PORT A

1

2

3

4

5

6

7

8

Trang 3

TÍN HIỆU PB0 PB1 PB2 PB3 PB4

Tương tự cho khi hiển thị các ký hiệu hay các chữ khác

Trang 4

2 Tiến trình thực hiện

 Bài 4.1: Copy file ledmatrix.exe vào thư mục C:\Emu8086\Devices và

thực hiện chương trình sau:

#start=ledmatrix.exe#

.model small

.stack 100h

.data

pa db 7Eh,09h,09h,09h,7Eh

pb db 01h,02h,04h,08h,10h

.code

main proc

mov ax,@data mov ds,ax mov ax,02h int 10h mov dx,303h mov al,80h out dx,al ; Dinh cau hinh cho U9 start: mov ah,0Bh ; Kiem tra phim nhan

int 21h cmp al,0FFh ; Neu co nhan phim thi ket thuc

je exit ; chuong trinh

Ma trận Led

Chỉnh thời gian quét cho chương trình mô phỏng

Địa chỉ cơ sở

của 8255

Dữ liệu tại Port A và Port B

Trang 5

jmp start

exit: mov ah,4Ch

int 21h main endp

; -

mov bx,0 ; Lap 5 lan cho 5 cot cont: mov dx,300h

mov al,pa[bx] ; Xuat du lieu ra Port A (hien

; thi cot cho ma tran Led) out dx,al

mov dx,301h mov al,pb[bx] ; Chon cot cho ma tran Led out dx,al

call delay inc bx

cmp bx,5 jne cont ret

; -

delay proc

push cx mov cx,03Fh loop $ pop cx ret delay endp

end main

- Sửa đoạn chương trình trên để xuất ra ma trận Led ký tự B, C, 0, 1

- Viết chương trình xuất lần lượt các ký tự A, B, C, 0, 1 ra ma trận Led Gợi ý: tạo vòng lặp hiển thị chữ A ra ma trận Led khoảng 15 lần, sau

đó đến chữ B, …

 Bài 4.2: di chuyển chuỗi “AB” trên ma trận Led từ trái sang phải:

- Tính toán dữ liệu hiển thị

Giả sử cần hiển thị chuỗi “AB”:

Chữ „A‟: 7Eh, 09h, 09h, 09h, 7Eh

Chữ „B‟: 7Fh, 49h,49h,49h, 36h

Giữa chữ A và B có một cột trống để phân biệt

 Chuỗi “AB”: 7Eh, 09h, 09h, 09h, 7Eh, 00h, 7Fh, 49h,49h,49h, 36h

Có thể thêm khoảng trắng trước và sau chuỗi để chuỗi hiện ra từ từ

 Chuỗi “ AB ”: 00h, 00h, 00h, 00h, 00h, 7Eh, 09h, 09h, 09h, 7Eh, 00h, 7Fh, 49h,49h,49h, 36h,00h, 00h, 00h, 00h

Khai báo biến:

Trang 6

pa DB 00h, 00h, 00h, 00h, 00h

DB 7Eh, 09h, 09h, 09h, 7Eh, 00h

DB 7Fh, 49h, 49h, 49h, 36h, 00h

DB 00h, 00h, 00h Như vậy, một ký tự cần hiển thị trên ma trận Led cần 6 byte và 5 byte 00h đầu chuỗi, 3 byte 00h cuối chuỗi  một chuỗi dài 50 ký tự sẽ cần số byte lưu trữ cho mã Led là: 50*6 + 5 + 3 = 308 byte

- Hiển thị ký tự:

Quá trình hiển thị và cho chữ chạy mô tả như hình vẽ:

Pa[0] Pa[4]

Lần 0

Pa[1] Pa[5]

Lần 1

Pa[2] Pa[6]

Lần 2

Pa[15] Pa[19]

Lần 15

Trang 7

Lần 1: hiển thị từ pa[0] † pa[4]

Lần 2: hiển thị từ pa[1] † pa[5]  lần j: hiển thị từ pa[j] † pa[j+5]

Lần 16: hiển thị từ pa[15] † pa[19]

 Chuỗi “AB” gồm 2 ký tự cần lưu trữ 20 byte và quét tổng cộng 20 – 4

= 16 lần  chuỗi 50 ký tự cần lưu trữ 50*6 + 8 = 308 byte và quét 304 lần

- Chương trình chạy chuỗi ký tự:

.model small

.stack 100h

.data

pa DB 00h, 00h, 00h, 00h, 00h

DB 7Eh, 09h, 09h, 09h, 7Eh, 00h

DB 7Fh, 49h, 49h, 49h, 36h, 00h

DB 00h, 00h, 00h

pb DB 01h,02h,04h,08h,10h

.code

main proc

mov ax,@data mov ds,ax mov ax,02h int 10h mov dx,303h mov al,80h out dx,al ; Dinh cau hinh cho U9

start: mov ah,0Bh ; Kiem tra phim nhan

int 21h cmp al,0FFh ; Neu co nhan phim thi ket thuc

je exit ; chuong trinh mov si,0 ; Lan quet 0

quetled:

mov cx,3 ; led:

call ledmatrix loop led

inc si cmp si,16 ; Quet 16 lan, tu lan 0 -> 15 jne quetled

jmp start exit: mov ah,4Ch

int 21h

Trang 8

main endp

; -

mov bx,0 ; Lap 5 lan cho 5 cot cont: mov dx,300h

mov al,pa[bx+si] ; Xuat du lieu ra Port A (hien

; thi cot cho ma tran Led) out dx,al

mov dx,301h mov al,pb[bx] ; Chon cot cho ma tran Led out dx,al

call delay inc bx

cmp bx,5 jne cont ret

; -

delay proc

push cx mov cx,03Fh loop $ pop cx ret delay endp

end main

Ngày đăng: 21/01/2018, 11:37

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN