24
Khi đọc qua tài liu này, nếu phát hin sai sót hoc ni dung kém chất lượng xin hãy thông báo để chúng tôi sa cha hoc thay thế bng mt tài liu cùng chđề ca tác gikhác. Bn có ththam kho ngun tài liệu được dch ttiếng Anh tại đây: http://mientayvn.com/Tai_lieu_da_dich.html Thông tin liên h: Yahoo mail: [email protected] Gmail: [email protected]

Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Khi đọc qua tài liệu này, nếu phát hiện sai sót hoặc nội dung kém chất lượng

xin hãy thông báo để chúng tôi sửa chữa hoặc thay thế bằng một tài liệu

cùng chủ đề của tác giả khác.

Bạn có thể tham khảo nguồn tài liệu được dịch từ tiếng Anh tại đây:

http://mientayvn.com/Tai_lieu_da_dich.html

Thông tin liên hệ:

Yahoo mail: [email protected]

Gmail: [email protected]

Page 2: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

I GIỚI THIỆU SƠ QUA :

Trong proteus có rất nhiều loại led ma trận , ví dụ như loại 8x8 hoặc 5x8.Tôi

chỉ nói về led matrix loại 8x8 vì nó phổ biến và thường hay được dung ,các

loại led matrix khác nguyên lý đều tượng tự như nhau .

Led ma trận trong proteus thì có nhiều màu khác nhau ,có 3 loại chính là màu

đỏ ,màu xanh lá cây ,và màu xanh da trời .

Mỗi loại này lại có sự khác biệt nhau về chân để xác định đâu là hàng đâu là

cột .

Do đó để đơn giản tui ,nói về loại màu xanh lá cây ,vì loại này trông nó đẹp .

Led ma tran màu xanh lá cây có hình dạng như sau :

II CÁCH XÁC ĐỊNH HÀNG CỘT ,THAY ĐỔI THÔNG SỐ

Khi chúng ta làm việc với led matrix , điều quan tâm lớn nhất của chúng ta là

phải xác định xem ,chân của nó thế nào ,tức là đâu là chân hàng , đâu là

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 3: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

chân cột ,trong các chân hàng ,thì chân nào là chân ứng với hàng đầu ,và

chân nào ứng với hàng cuối để chúng ta xác định bít cao ,bít thấp .

- Dùng nguồn 5V và mass để thử và rút ra kết luận như hình vẽ sau

Ta thấy các chân ở trên là chân hàng và được nối với mass suy ra trong cấu

tạo nó được nối với catốt của led .

ngược lại chân ở dưới là chân cột .

- Ta thấy các chân ở trên là chân hàng có 1 chân ko nối mass thì hàng trên

cùng ko sáng suy chân đầu tiên bên trai của led sẽ ứng với hàng đầu tiên tính

từ trên .

- Và đương nhiên các chân phía dưới là chân cột thì chân đầu tiên bên trái sẽ

ứng ngay với cột đầu tiên bên trái .

Như vậy chúng ta xác định được rõ rang các chân của led.

Tuy nhiên giả sử chúng ta muốn thay đổi theo các kiểu như sau :

a: chân trên của led vẫn là hàng ,chân dưới vẫn là cột ,nhưng lúc này hàng

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 4: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

được tich cực với bít 1 (5v) còn cột tich cực mức 0 .(ngược với trên ) ta làm

như sau:

Kich chuột phải vào led chọn edit properties sau đó đánh dấu vào

edit all properties as text thay đổi A,B,C,D,E,F,G,H thanh 1,2,3,4,5,6,7,8.

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 5: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Ta được như sau :

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 6: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

b.Nếu chúng ta muốn thay đổi cho cột lên trên,hàng xuống dưới và cực tính

không đổi thì dung quay 1800 là ok

III : CÁCH TÍNH MÃ LED HIỆN THỊ

Chúng ta nhìn vào hình vẽ sau :

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 7: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Chúng ta sử dụng phần mềm xác định mã led của led ma trận , để đỡ mất

thời gian ngồi tính toán ,và có thể dẫn đến sai . Phần mềm này có trong trang

web www.hoiquandientu.com. Ai chưa có vào đó down hoặc liên hệ với tui

quan mai của tui ở trên ,hj

Chú ý : Khi xây dựng ma trận led ,nếu ta chọn hàng la các chân ở trên và

mức tich cực là dương,tức là với bít 1 thì nó sang ,còn bít 0 thì nó tắt ,do đó

nếu ta dung mã 0ff thì có nghĩa là cả 8 led cùng sang .Xét theo hình vẽ trên

ta thấy 1 ma trận 8x8 ,với hàng là chân ở trên tích cực dương ,cột chân ở

dưới tích cực âm .1 chữ T như thế kia thì tương đương với mã led là : 0h,02h

,02h,7eh,2h,2h,0h,0h

Phải chú ý maled tính theo hàng nhưng có dạng cột như hình vẽ (data cũng

đẩy vào hàng )

Với chữ T đầu tiên là 00h ,tức là cột đầu tiên ko sáng ,tương đương với 8 led

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 8: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

đầu ở 8 hàng không sáng nên suy ra nó có dạng 0000 0000 b = 00h.Tiếp

theo là 02h ,ta thấy tại cột 2 chỉ có mỗi led ỏ hàng 2 sáng mà mã có dạng

02h = 0000 0010 .b từ đó ta suy ra được thứ tự led trong 8 bít .Giả sử một

chuỗi 8 bít như sau : d7 d6 d5 d4 d3 d2 d1 d0

Với d7 là bít có trọng số cao nhất tức là MSB còn d0 là LSB

trường hợp cần lưu ý ,ma trận led chia 8 bít thanh 2 chuỗi 4 bít và cả 2 chuỗi

4 bít này đều có LSB và MSB .

Xét 4 chuỗi bít đầu ứng với 4 hàng đầu tính từ trên xuống (4 bít thấp trong 8

bít ) Giả sử là d3d2d1d0 tương đương với 0010 trong chuỗi 8 bít trên thì

MSB LÀ D3 ,LSB là d1 : Với chuỗi 4 bít cao d7d6d5d4 thì MSB LÀ D7 ,còn LSB

là d4

MSB LSB MSB LSB

D7 D6 D5 D4 D3 D2D1 D0

Ví dụ với dòng thứ 3 của chữ T LÀ 7eh = 0 111 111 0

( Led cuối cùng -> led đầu tiên)

(Tính từ trên xuống )

Tóm lại với trường hợp như trên (led matran như tren )

Thì hàng led đầu tiên tính từ trên xuống là ứng với bít thấp nhất trong 4 bít

thấp

Hàng led thứ tư là bít cao nhất trong 4 bít thấp

Hàng led thứ 5 là bít thấp nhất trong 4 bít cao

Hàng led cuối cùng là bít thấp cao nhất trong 4 bít cao . và cả 8 bít luôn .

IV : TRÌNH BIÊN DỊCH TRONG PROTUES

Trong isi (proteus) có sẵn trình biên dich để chúng ta viết code lập trình vào

,có thể viết code của ngôn ngữ c hoặc asem .asem có ưu điểm là dung lượng

nhẹ , hiểu được rõ bản chất của cấu trúc 8051 và dữ liệu hoạt động trong

từng cấu trúc của 8051 ,vì asem là họ hàng gần nhất với ngôn ngữ máy.

Nhưng asem lập trình khó hơn và đỏi hỏi hiểu bản chất về cấu trúc của 8051

Ngôn ngữ c cấp cao hơn ,lập trình đơn giản hơn và ngày này là đựơc ưu tiên

dùng hơn.nhưng phải thanh thạo thì mới đạt hiệu quả cao .

Để viết code lập trình cho chip ta làm như sau .

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 9: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

1 Vào source :

A : Chọn define code generation too : Đối với isi p.5 sp3 thì chúng ta cứ để

nguyên và nhấn ok ,còn các phiên bản thấp hơn thì có chỉnh sửa chút ,nhưng

thời điểm này nếu có dung proteus thì chả ai ko dung bản mới nhất là 7.5 (

7.6 còn đang bị lỗi )

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 10: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Cứ chọn ok luôn

B .sau đó chúng ta lại chọn tiếp add /remove source file :

Đổi none trong phần code generation tool thanh asem 51 (để viết bằng ngôn

ngữ asem ) Sau đó chọn new bên dưới ra một bảng mới ,chọn ten cho file lập

trình : ví dụ ở đây tui chọn là lednhay.asm rồi chọn open

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 11: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Mở open chọn yes rồi lại chọn ok ,thế là ta đã tạo xong được tên của file lập

trình bằng asm

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 12: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Giả sử chúng ta làm cho một trai tim led nhấp nháy theo ý muốn ,như hình

sau :

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 13: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Phần cứng thiết kế không khó ,

2 .Phần lập trình :

Lại vào source ,ta thấy có file lednhay.asm ở phia dưới (nó là một dạng

notpade) chúng ta kich vào nó và bắt đầu lập trình bằng asm.

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 14: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

CODE LẬP TRÌNH VÍ DỤ NHƯ SAU : (THEO CÁCH SANG CỦA TÔI ,CÒN CÁC

BẠN THÍCH SÁNG THEO KIỂU NÀO LÀ DO MÌNH LẬP TRÌNH THUI ,HJHJ )

Lập trình rất dễ :

ORG 0000H

BATDAU:

MOV R1,#4

MOV A,#00

MOV P1,A

MOV P2,A

MAIN1:

SETB P1.1

ACALL DELAY

SETB P1.0

SETB P1.2

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 15: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

ACALL DELAY

SETB P1.3

SETB P2.1

ACALL DELAY

SETB P1.4

SETB P2.0

ACALL DELAY

SETB P1.5

SETB P1.7

ACALL DELAY

SETB P1.6

ACALL DELAY

MAIN2:

MOV P1,#00H

MOV P2,#00H

ACALL DELAY

MAIN3 :

MOV P1,#0FFH

MOV P2,#0FFH

ACALL DELAY

DJNZ R1,MAIN2

SJMP BATDAU

DELAY :

MOV R2,#50

N1:MOV R3,#50

N2:MOV R4,#70

N3:DJNZ R4,N3

DJNZ R3,N2

DJNZ R2,N1

RET

END

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 16: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

V: Nguyên lý quét LED ma trận

Vì các led ma trận được bố trí bởi rất nhiều led đơn ,và các led đựoc đấu

chung chân với nhau ,do đó nếu cắm điện vào bình thường thì các led đều

cùng sáng ,

Do đó để hiện thị led sang theo mong muốn thì người ta dung cách ,cho led

đơn này sáng trước ,rồi tắt nó và cho led kia sang ,khoảng thời gian chuyển

giao như vậy là rất ngắt để mắt người ko nhận ra được đó là sự rời rạc ngắt

quãng mà là một sự chuyển động ,do đó led matranxix kô thể hiển thị theo

kiểu tĩnh được mà theo kiểu động ,tức là cái gì được hiển thị sẽ chạy liên tục.

Xét một ví dụ sau đây .

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 17: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 18: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 19: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

-Nhìn vào ví dụ trên ,tôi cho chạy dòng chữ hội quán điện tử ,bằng cách

quýet led ma trận ,

- sử dụng 1 con 89c51 ,có nguồn xung thạch anh để làm xung clock cho

89c51. Sử dụng 4 matran led (nhiều hay ít do mình dung )

vì sử dụng trên 2 ma trận led cho nên chúng ta cần sử dụng IC đệm

74ls541 .ic này có tác dụng là đầu vào thế nào thì đầu ra y hệt như thế

nhưng nó điều khiển được ,tức là nó sẽ cho ra data khi có 1 điều kiện nào đó:

- Điều kiện đó là khi chân oe1 và 0e2 đều tích cực mức 0 thì ic này hoạt động

,(do đó ta để một chân nối mass còn 1 chân nối vào port của 89c51 để điều

khiển bằng câu lệnh lập trình )

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 20: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

Khi quét led thông thường chúng ta sẽ để led chạy theo chiều ngang như ở

trên ,do đó phương pháp này gọi là quét cột ,tức là cột của led sẽ được chọn

tích cực lần lượt còn dữ liệu thì được đẩy theo hàng ,do đó dữ liệu sẽ là dữ

liệu 8 bít tính theo hàng và quy ra 1 ma hexa .

Do yếu tố trên thì người ta thường chọn sao cho led có hàng ở trên và được

tích cực mức dương ,còn cột ở dưới tích cực mức âm ,

chọn port 1 để quét cho cột ,còn dữ liệu tính theo mã hàng thì được đưa vào

port 2. 4 bit của port 3 để cho 4 chân oe1 của 4 con led ma trận .

Và để có được những điều trên thì chúng ta phải thử led trước ,ví dụ với led

xanh như trên thì phải chỉnh sửa theo kiểu mà tôi vừa trình bày ở trên .

Code lap trình tôi viết bằng asem ,chỉ cần học qua về asem bly một chút là có

thể hiểu được nguyên lý quyet trong code :

Code như sau :

org 0000h ; chọn ngăn nhớ đầu tiên của rom để nạp mã lệnh

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 21: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

batdau:

mov DPTR,#maled ; nạp dữ liệu của nhãn maled vào thanh ghi dptr

lap:mov r0,#30

main1 :

mov r2,#24 ;ban đầu trong phần maled có 3 hàng ứng với 24 chuỗi 0h

mov r1,#16 ; nạp vào ma tran 2 vì nó chạy muộn hơn ma tran 1 b cột nên

=16

mov r7,#8

mov b ,#0

mov r3,#7fh

main2:

mov a,r3 ; nạp dữ liệu từ r3 vào a ,a chứa 0111 1111 b

rl a ; thực hiện quay trái a để cho từng cột nhận giá trị 0

mov r3,a

mov p1,a

setb p3.3 ; tắt các matrận 2,3,4

setb p3.2

setb p3.3

clr p3.0 ; cho matrận 1 tích cực

mov a,r2 ; nạp R2 vào a

movc a,@a+DPTR ; nạp data của a + dptr ->địa chỉ 16b rồi để vào a

mov p2,a ;……..

inc r2

acall delay ;gọi trễ

cjne r3,#07fh,main2 ; khi quét đủ 8 cột thì của 1 ma trận thì chuyển

main3:

mov a,r3

rl a

mov r3,a

mov p1,a

clr p3.1

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 22: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

setb p3.0

setb p3.2

setb p3.3

mov a,r1

movc a,@a+DPTR

mov p2,a

inc r1

acall delay

cjne r3,#07fh,main3

main4:

mov a,r3

rl a

mov r3,a

mov p1,a

clr p3.2

setb p3.0

setb p3.1

setb p3.3

mov a,r7

movc a,@a+DPTR

mov p2,a

inc r7

acall delay

cjne r3,#07fh,main4

main5:

mov a,r3

rl a

mov r3,a

mov p1,a

clr p3.3

setb p3.2

setb p3.0

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 23: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

setb p3.1

mov a,b

movc a,@a+DPTR

mov p2,a

inc b

acall delay

cjne r3,#07fh,main5

djnz r0,main1

inc DPTR

mov a,DPL

cjne a,#144,lap ; 144 là = (số hàng db x8 ,để giới hạn và quay về )

sjmp batdau

delay :

push 04 ; cất vào sactk để tý còn lấy ra dung lần thư 2

push 05

push 06

mov r4,#4

n1:mov r5,#4

n2:mov r6,#4

n3:djnz r6,n3

djnz r5,n2

djnz r4,n1

pop 06

pop 05

pop 04

ret

delay2: ; tạo trễ thời gian ,t= 4X4X4x2us = 128us

mov r4,#4

m1:mov r5,#4

m2:mov r6,#4

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 24: Khi đọ ệu này, nế ệ ặ ộ xin hãy thông báo để ử ữ ặ ế ằ ộ ệ

m3:djnz r6,m3

djnz r5,m2

djnz r4,m1

ret

org 800h ;chọn địa chỉ này để tránh data bị đè lên nhau

maled: db 0h, 0h, 0h, 0h, 0h, 0h ,0h, 0h

db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h

db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h

db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h

db 0h, 0h, 7eh, 10h, 8h, 70h, 0h,8h

db 3eh, 48h, 20h,0h,8h,3eh,48h,20h

db 0h ,0fch, 14h, 14h ,8h, 0h,0h, 24h

db 0h, 40h, 0a0h, 50h, 28h, 14h,0ah, 4h

db 0h, 7eh, 8h, 8h, 8h,7eh,0h,3ch

db 42h,42h,42h,3ch,0h,7eh,0h, 0h

db 3ch, 42h, 42h, 62h, 7ch,80h,0h,3eh

db 40h, 40h, 3eh, 0h,7ch,0ah,0ah, 0ah

db 7ch, 0h, 7eh, 4h, 8h,10h ,7eh, 0h

db 0h, 8h, 7eh, 4ah, 4ah, 42h, 3ch, 0h

db 7eh, 0h, 7eh,4ah, 4ah, 42h ,0h, 7eh

db 4h, 8h, 10h, 7eh, 0h, 0h, 2h, 2h

db 7eh, 2h, 2h,0h ,3eh, 40h ,40h, 40h

db 3eh, 3h ,0h, 0h, 0h, 0h ,0h, 0h

end

Vì không có thời gian để giải thích hết các lệnh và phân tich đến bản chất mong các bạn thông cảm nha. Co ji thi mail cho minh ([email protected] hay 0984040941) Khi làm phải chuý các chân của led ma trận và mã để quýet led theo hàng ,chân nào ứng với MSB và chân nào ứng với LSB .

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.