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 t
Trang 1I 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à
Trang 2châ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
Trang 3đượ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
Trang 4Ta được như sau :
Trang 5b.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 :
Trang 6Chú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 trangweb 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à :
Trang 7đầ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
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
Trang 8dù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
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ưngthờ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 )
Trang 9
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ônngữ asem ) Sau đó chọn new bên dưới ra một bảng mới ,chọn ten cho file lậptrình : ví dụ ở đây tui chọn là lednhay.asm rồi chọn open
Trang 10Mở open chọn yes rồi lại chọn ok ,thế là ta đã tạo xong được tên của file lậptrình bằng asm
Trang 11Giả sử chúng ta làm cho một trai tim led nhấp nháy theo ý muốn ,như hìnhsau :
Trang 12Phần cứng thiết kế không khó ,
Lại vào source ,ta thấy có file lednhay.asm ở phia dưới (nó là một dạngnotpade) chúng ta kich vào nó và bắt đầu lập trình bằng asm
Trang 13CODE LẬP TRÌNH VÍ DỤ NHƯ SAU : (THEO CÁCH SANG CỦA TÔI ,CÒN CÁCBẠN THÍCH SÁNG THEO KIỂU NÀO LÀ DO MÌNH LẬP TRÌNH THUI ,HJHJ )
Trang 15V: 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
Trang 18-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 )
Trang 19Khi 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
Trang 20mov 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 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 amov 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:
Trang 21inc r1
acall delay
cjne r3,#07fh,main3main4:
inc r7
acall delay
cjne r3,#07fh,main4main5:
Trang 23db 0h, 8h, 7eh, 4ah, 4ah, 42h, 3ch, 0h
db 7eh, 0h, 7eh,4ah, 4ah, 42h ,0h, 7eh
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