ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG CAO ĐẲNG KINH TẾ - KĨ THUẬT
BÀI TẬP LỚN NGOẠI VI GHÉP NỐI
Đề tài:
TÌM HIỂU VỀ LED MATRIX
(MẠCH QUẢNG BÁ)
Sinh viên thực hiện: Hà Anh Dũng
Lương Văn Dũng
Giáo viên hướng dẫn: Lê Minh Tân
Vũ Đình Thanh
Tháng 12 Năm 2012
MỤC LỤC
LỜI NÓI ĐẦU 2
CHƯƠNG I: Giới thiệu đề tài mạch quảng bá 4
CHƯƠNG II: Linh kiện cơ bản sử dụng trong mạch 6
2.1. Giới thiệu về vi điều khiển 89C51 6
2.1.1. Các đặc điểm của hệ vi xử lý 89C51 6
2.1.2. Cơ bản về cấu tạo của AT89C51 7
2.1.3. Các thanh ghi chức năng đặc biệt (SFR) 12
2.2. Giới thiệu về Led Ma trận 16
2.2.1. Sơ đồ cấu tạo của Led Ma trận 16
2.2.2. Nguyên tắc làm sáng đèn trên bảng Led Matrix 18
2.2.3. Nguyên tắc quét bảng ma trận led 18
2.2.4. Nguyên tắc tạo hiệu ứng chạy từ phải sang trái 21
3.1. Sơ đồ mạch 23
3.1.2. Giới thiệu về phần mềm hỗ trợ 23
3.1.3. Phần mềm giới thiệu viết code 26
3.1.4. Sản phẩm mạch trên mô phỏng 27
KẾT LUẬN 29
1
LỜI NÓI ĐẦU
vào các nhu cầu của con người.Chúng ta sẽ không phải thấy những biển quảng
cáo thô cứng thụ động bằng việc cắt dán chữ mà thay vào đó là những biển
quảng cáo sinh động,bắt mắt và đặc biệt có thể linh động trong quảng cáo.
Để thiết kế một mạch quảng bá thì có nhiều phương án để lựa chọn như:
dùng EEPROM, dùng máy tính điều khiển trực tiếp, dùng vi xử lý, vi điều
khiển.
Khi sử dụng EEPROM để lưu trữ thông tin hiển thị kết hợp với các IC giải
đa hợp (Demultiplexer) để điều khiển quá trình hiển thị trên màn hình. ưu điểm
của EEPROM là thông tin không bị mất khi không có nguồn cấp và khi muốn
thay đổi nội dung bản tin ta chỉ việc lập trình lại cho EEPROM (thay đổi phần
mềm). Việc thay đôi như vậy xem ra có vẻ đơn giản, nhưng ta cần có mạch nạp
và phần mềm điều khiển. Việc tháo lắp nhiều sẽ dẫn đến hỏng hóc không đáng
có.
Khi vi xử lý được sử dụng trong mạch thì mạch sẽ có thêm nhiều tính năng
hơn nhưng giá thành cho một sản phẩm cũng vì thế mà tăng lên. Một mạch vi
xử lý cần có thêm EEPROM(để lưu chương trình điều khiển), RAM và các IC
giao tiếp ngoại vi khác(8255, 74373…). Một kít vi xử lý như vậy sẽ đem lại
cho bảng thông tin những tính năng như: việc cập nhật nội dung hiển thị sẽ dễ
dàng hơn(không cần tháo IC ra) bằng các nhập chương trình mới vào RAM,
3
các hiệu ứng đặc biệt về màu sắc cũng được thực hiện dễ dàng. Tuy nhiên như
đã nói ở trên, do vấn đề giá thành cao nên phương án này không được chọn.
Dùng máy tính để điều khiển bảng tin cũng là một phương án. Nhưng do
kích thước máy tính lớn chiếm nhiều diện tích, lại đắt tiền nên ta không sử
dụng.
Phương án được lựa chọn là dùng Vi Điều Khiển. Vì sao lại chọn Vi Điều
Khiển?
Thứ nhất: Ngày nay Vi Điều Khiển được sử dụng rộng rãi trong các ứng
dụng hướng điều khiển do kích thước gọn, khả năng tích hợp cao nhiều tính
năng trong một con Vi Điều Khiển khiến cho mạch điện tử trở nên đơn giản
+ Bộ xử lý bit thao tác trên các bit riêng.
+ 210 vị trí nhớ định địa chỉ, mỗi vị trí một bit.
+ Các thanh ghi chức năng, cơ chế điều khiển ngắt .
+ Các bộ thời gian dùng trong limh vực chia tần số và tạo thời gian thực.
+ Bộ vi điều khiển có thể nạp chương trình để điều khiển các thiết bị thông tin,
viễn thông thiết bị đo lường,thiết bị điều chỉnh cũng như các ứng dụng trong công
nghệ thông tin và kỹ thuật điều khiển tự động. có thể xem bộ VĐK như một hệ
VXL on-chíp đối với AT89C51, nó có đầy đủ chức năng của một hệ VXL 8 bit,
được điều khiển bởi một hệ lệnh, có số lệnh đủ mạnh, cho phép lập trình bằng hợp
ngữ (Assemply).
5
2. 1.2 CƠ BẢN VỀ CẤU TẠO CỦA AT89C51
Hình 1.1 : Sơ đồ chân của 89C51
6
Hình 1.2 : Sơ đồ khối của 89C51
+ GND(chân 20): Chân nối với 0v
+ Port 0(chân 32 – chân 29)
7
+ Port 0 là port xuất nhập 8 bit hai chiều. Port 0 còn được cấu hình làm bus địa
chỉ( byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và
bộ nhớ chương trình ngoài. Port cũng nhận các byte mã trong khi lập trình cho.
Flash và xuất các byte mã trong khi kiểm tra chương trình ( các điện trở kéo lên
bên ngoài được cần đến trong khi kiểm tra chương trình).
+ Port 1( chân 1- 8): port 1 là port xuất nhập 8 bit hai chiều. Port1 cũng nhận byte
địa chỉ thấp trong thời gian lập trình cho Flash.
+ Port 2 ( chân 21 – 28): Port 2 là port xuất nhập 8 bit hai chiều. Port 2 tạo ra các
byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài
và trong thời gian truy xuất bộ nhớ dữ liệu ngoài, sử dụng các địa chỉ 16 bit. Trong
thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8 bit, port 2 phát các
nội dung của các thanh ghi đặc biệt, port 2 cũng nhận các bits địa chỉ cao và vài tín
PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài.
+ EA vpp(chân 31): Là chân cho phép truy xuất bộ nhớ chương trình ngoài ( địa chỉ
từ 0000h tới FFFFH). EA = 0 cho phép truy xuát bộ nhớ chương trình ngoài, ngược
lại EA = 1 sẽ thực thi chương trình bên trong chip. Tuy nhiên, lưu ý rằng nếu bít
khoá 1 được lập trình EA được chốt bên trong khi reset
+ XTAL1& XTAL2: Là hai ngõ vào ra của hai bộ khuyếch đại đảo của mạch dao
động, được cấu hình để dùng như một bộ tạo dao động trên chip
Hình1.3: Bộ tạo dao động
9
Bộ nhớ bên trong chip bao gồm ROM, RAM va EPROM. RAM trên chip
bao gồm vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ, các
dây thanh ghi (bank) và các thanh ghi chức năng đặc biệt.
Có 2 đặc tính đáng lưu ý:
+ Các thanh ghi và các port I/O được định địa chỉtheo kiểu ánh xạ bộ nhớ và được
truy xuất như một vị trí nhớ trong bộ nhớ.
+ Vùng track thường trú trong RAM trên chip thay vì ở trong RAM ngoài như đối
với các bộ vi xử lý.
Vùng RAM đa mục đích:
Có 80 byte, địa chỉ từ 30H đến 7FH
Bất cứ vị trí nào trong vùng RAM ta đều có thể truy xuấttụ do bằng cách sử dụng
định địa chỉ trực tiếp hoặc gián tiếp.
Ví dụ:
+ Kiểu định địa chỉ trực tiếp:
MOV A,5FH ;Đọc nội dung tại địa chỉ 5FH của RAM
+ Kiểu định địa chỉ gián tiếp: (Qua các thanh ghi R0,R1)
MOV R0,#5FH ; Di chuyển giá trị5FH vào thanh ghi R0
MOV A,@R0 ; Di chuyển dữ liệu trỏ tới R0 và thanh chứa A
Vùng RAM định địa chỉ:
Chip 8951 chứa 210 vi trí định địa chỉ in đó có 128 byte chứa trong các byte ở địa
chỉ 20H đến 2FH (16 byte x 8 = 128 bits), phần còn lại chứa trong các thanh ghi
- Port 3 : địa chỉ B0H
+ Các thanh ghi định thời:
IC 8951 có 2 bộ định thời/đếm dùng để định khoảng thời gian hoặc đếm các sự
kiện.
- Bộ định thời 0: địa chỉ 8AH (TL0 ) va 8CH (TH0)
- Bộ định thời 1: địa chỉ 8bH (TL1 ) va 8DH (TH1)
11
Hoạt động của bộ định thời được thiết lậpbởi thanh ghi chế độ định thời TMOD ở
địa chỉ 89H và thanh ghi đieèu khiển bộ định thời TCON ở địa chỉ 88H (chỉ có
TCON được định địa chỉ từng bit)
+ Các thanh ghi của port nối tiếp: Chip 8951 có 1 port nối tiếp để truyền thông với
các thiết bị như các thiết bị đầu cuối hoặc model
+ Các thanh ghi ngắt: có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân
ngắt. Các ngắt bị vô hiệu hoá sau khi Reset hệ thống và được phép bằng cách vào
thanh ghi IE ở địa chỉA8H. Mức ưu tiên ngắt được thiết lập bơit thanh ghi IP ở địa
chỉ B8H.
+ Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H
Bảng vector ngắt của 8051
Ngắt Đỉa chỉ ROM (Hexa) Chân
RESET 0000 9
Ngắt phần cứng ngoài (INTO) 0003 12 (P3 : 2)
Ngắt bọ timer 0 (TFO) 0008
Ngắt phần cứng ngoài 1 (INT1) 0013 12 (P3 : 3)
Ngắt bộ timer 1 (TF1) 0018
Ngắt COM nối tiếp (R1 và T1) 0023
Bảng 1: Bảng vector ngắt của 8051
- Cho phét ngắt và cấm ngắt
Khi reset thì tất cả mọi ngắt bị cấm, có nghĩa là không có ngắt nào được bộ
vi điều khiển đáp ứng nếu chúng được kích hoạt. các ngắt phải được cho phép bằng
phần mềm để bộ vi điều khiển có thể đáp ứng được. Có 1 thanh ghi được gọi là cho
Bộ đếm chương trình 0000H
Thanh chứa A 00H
Thanh ghi B 00H
PSW 00H
SP 07H
DPTR 0000H
Port 0 – 3 xxx00000B
IP
xx000000B
0xx00000B
Các thanh ghi định
00H
SCON 00H
SBUF 00H
PCON (HMOS) 0xxxxxxxB
PCON (CMOS) 0xxx0000B
Bảng 2: Bảng giá trị của các thanh ghi sau khi RESET hệ thống
2.2 . GIỚI THIỆU VỀ LED MA TRẬN
2.2.1. SƠ ĐỒ CẤU TẠO CỦA LED MA TRÂN
Bảng hiển thị ma trận LED (diot-matrix display) có rất nhiều loại và đủ kích
cỡ to nhỏ khác nhau, mỗi bảng gồm có rất nhiều LED đơn được ghép lại với nhau
trong một khối. Trong khối đó các LED đơn được sắp sếp theo các hàng và các cột,
tại mỗi giao điểm của hàng với cột là một LED đơn, và người ta thường phân biệt
các loại bảng LED theo số hàng và cột. Một bảng LED 5x7 tức là có 5 cột dọc và 7
hàng ngang, tổng cộng sẽ có 5x7=35 LED đơn được ghép lại. Cũng như vậy một
bảng 8x8 là có 8 hàng và 8 cột, do 64 LED đơn ghép lại. Và nhiều loại cỡ to hơn
14
như16x16hay32x32…
Hình 2.1: Minh họa một bảng led matrix 8x8:
Sơ đồ cấu tạo: một ma trận led có 16 chân được sắp xếp theo thứ tự 8 hàng
- Kích hoạt cột thứ nhất và các LED tương ứng sẽ sáng. Tạo một thời gian trễ, sau
đó tắt cột thứ nhất.
- Gửi tiếp giá trị dữ liệu 7 hàng của cột thứ 2, kích hoạt cột thứ 2, tạo trễ và lại tắt
cột thứ 2.
- Quá trình quét đó cứ tiếp diễn cho đến khi quét hết 32 cột của bảng LED. Việc
quét hiển thị này diễn ra trong thời gian rất ngắn, cỡ vài chục ms, ta sẽ thấy hình
ảnh hay chữ hiển thị trên bảng LED. Tuy rằng trong mỗi thời điểm chỉ có một cột
được sáng nhưng do thời gian quét rất nhanh và do hiện tương lưu ảnh trong võng
mạc của mắt nên ta thấy hình ảnh xuất hiện liên tục. Tần số quét cần phải đảm bảo
sao cho đủ hoặc lớn hơn 24hình/s. Thường ta chọn tần số quét từ 40Hz đến 100Hz
hoặc có thể lớn hơn.
Dữ liệu hiển thị của hàng được lấy từ EEPROM hoặc từ Flash ROM của Vi Điều
Khiển hay từ ROM ngoài.
Trạng thái của một LED sẽ được quyết định bởi tín hiệu điện áp đi vào đồng
thời cả 2 chân. Ví dụ để LED sáng thì điện áp 5V phải đưa vào chân dương và
chân âm phải được nối mass, LED sẽ tắt khi chân âm nối với điện áp mức cao.
Với đề tài này, chúng em chọn loại ma trận LED 8x8 để hiển thị.Ta có sơ đồ
nguyên lý của Ma trận LED 8x8:
17
Hình 2.3: Sơ đồ nguyên lý led matric
Để ma trận có thể sáng như hình vẽ (hiển thị một phần của chữ ABCD):
Hình 2.4: hiển thị chữ trên Led matric
Một minh họa: Cho xuất mã quét nhanh , các mã hình lần lượt cho xuất trên Port p2,
Port p3, Port p0 ( LED 1,LED 2, LED 3)
18
Đèn LED thứ nhất Đèn LED thứ hai Đèn LED thứ ba
Hình 2.5 Mô phỏng về 3 đèn LED
2.2.4. NGUYÊN TẮC TẠO HIỆU ỨNG CHẠY TỪ PHẢI SANG TRÁI VÀ
TỪ PHẢI SANG TRÁI
Sau khi đã hiển thị được hình ảnh lên bảng LED. Bây giờ ta sẽ tìm hiểu
#11111111b ; tắt 8 bit trên Port p1 mov p0,
#00h ; tắt 8 bit trên Port p0 mov p2,
#00h ; tắt 8 bit trên Port p2 mov p3,
#00h ; tắt 8 bit trên Port p3 call del1 ; gọi chương trình làm chậm cjne r0,
#11111110b, ll1b ; so sánh mã quét để chọn hướng nhẩy
ret ; quay lại sau lệnh call
VD: Di chuyển ký tự trên ma trận Led
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:
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. Dung lượng này có thể thay đổi tùy theo người lập trình.
21
3.1 SƠ ĐỒ MẠCH
3.1.2, Giới Thiệu Về Phần Mền Hỗ Trợ
Phần mềm Proteus là phần mềm cho phép mô phỏng hoạt động của mạch
điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi