Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Mục lục
Trang
Lời nói đầu2
Chơng 1-Cơ sở lỹ thuyết Sơ đồ khối 3
I.Tổng quan 3
II.Chức năng từng khối 6
Chơng 2 Một số phơng bán thực hiện mạch 7
I. Mạch quang báo dùng EEPROM 7
II. Mạch quang báo dùng Vi Điều Khiển 10
Chơng 3 Mạch quang báo dùng PIC16F88 14
I. Nguyên lý làm việc mạch quang báo 14
I.1 Gới thiệu về bảng đèn LED ma trận 14
I.2 Nguyên tắc làm sáng LED trên bảng LED 8x8 17
I.3 Nguyên tắc quét bảng ma trận LED 18
I.4 Phơng pháp tạo hiệu ứng chữ chạy 19
II. Nguyên lý làm việc mạch quang báo 19
III. Sơ đồ nguyên lý 21
IV. Linh kiện sử dụng trong mạch 22
V. Mã nguồn chơng trình 22
Chơng 4 Giới thiệu các IC liên quan đến mạch 28
I. Vi điều khiển PIC16F88 28
II. IC 74154 35
III. IC 74HC595 37
IV. IC MAX232 39
V. IC KA7805 40
Chơng 5 - Kết luận 41
Tài liệu tham khảo 43
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Lời nói đầu
Ngày nay, cùng với sự phát triển của khoa học kỹ thuật, nhất là trong lĩnh vực
Điện tử - Tin học Viễn thông, việc đa thông tin quảng cáo đến với ngời tiêu dùng,
đến với xã hội trở nên dễ dàng và nhanh chóng. Thông qua nhiều hình thức quảng cáo
khác nhau mà các doanh nghiệp giới thiệu sản phẩm của mình đến mọi ngời.
Trong nhiều hình thức đa dạng của Thông tin quảng cáo nh: báo, đài, tivi, tờ
rơi, áp phích thì việc dùng Bảng thông tin điện tử là một cách đơn giản và
hiệu quả để quảng cáo. Chúng ta bắt gặp rất nhiều bảng thông tin nh vậy trong thực
tế. Khi đi vào một hiệu sách, bạn có thể biết đợc hiệu sách đó bán loại sách gì, giá cả
ra sao là nhờ vào bảng đèn quang báo rất bắt mắt trớc cửa hiệu. Hoặc khi vào sân
bay, bạn biết đợc giờ giấc các chuyến bay, các thông báo ngắn của phi trờng,
cũng là nhờ vào quang báo. Và khi đi trên đờng phố lúc về đêm, bạn sẽ bắt gặp cùng
với ánh đèn màu là rất nhiều các bảng quang báo lớn với các hình ảnh sinh động nh
ly bia Tiger đang trào bọt, hay các hình ảnh, logo hiện lên với đủ kiểu (từ trên xuống,
từ trái sang,).
Qua đó ta thấy rằng, bảng thông tin điện tử đã đợc ứng dụng rộng rãi trong
nhiều lĩnh vực khác nhau nh: giới thiệu sản phẩm, thông báo tin tức, làm biển hiệu
Với ứng dụng rộng rãi nh vậy, việc tìm hiểu và thiết kế một bảng thông tin nh vậy
đã thôi thúc em thực hiện đề tài thiết kế mạch quang báo dùng Vi Điều
Khiển
Giới hạn đề tài
Nh đã giới thiệu, bảng thông tin điên tử có thể hiển thị đợc các hình ảnh cử
động, chứ không chỉ gới gọn trong việc hiển thị chữ. Tuy nhiên, do điều kiện có hạn
nên đề tài chỉ giới hạn ở việc hiển thị chữ chạy, kết nối máy tính đề thay đổi thông tin
hiển thị và một số hiệu ứng khác nh thay đổi tốc độ chữ chạy, hiển thị nhiệt độ trên
bảng đèn v.v
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Chơng 1
Giới thiệu mạch quang báo
II. Tổng quan
Để thiết kế một mạch quang báo 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 để lu 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 qua 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, nhng 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
nhng 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(để lu 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ý snh 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, 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. Nhng 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 hơn nhiều.
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Thứ hai: Giá thành của Vi Điều Khiển không quá đắt nh Vi xử lý. Trên thế giới
hiện có rất nhiều nhà sản xuất Vi Điều Khiển (ATMEL, ZILOG, MicroChip,
Motorola, Cypress). Sự cạnh tranh của các nhà sản xuất về giá thành và khả năng
tích hợp đem lại lợi ích cho ngời sử dụng.
Thứ ba: Vi Điều Khiển đợc coi nh một small computer hay System On Chip
(SoC). Bên trong vi điều khiển đã bao gồm CPU, ROM , RAM, EEPOM, các giao tiếo
ngoại vi, các khối số học và tơng tự (ADC,DAC, op-amp, bộ so sánh) tuỳ theo
từng loại.
Tại Viêt Nam, thị trờng Vi Điều Khiển khá sôi động. Chỉ cần vào một của hàng
điện tử bất kỳ ta đều có thể mua đợc một con Vi Điều Khiển ng ý. Về công cụ phát
triển cho Vi Điều Khiển ta có thể tìm thấy rất nhiều trên mạng Internet, trên các diễn
đàn về điện tử trong và ngoài nớc, hầu hết đều là các tiện ích miễn phí dành cho
ngời sử dụng
Sau một thời gian nghiên cứu về Vi Điều Khiển, mà cụ thể là dòng Vi Điều
Khiển 8051 và PIC, em quyết định chọn Vi Điều Khiển để thực hiện đề tài thiết
kế mạch quang báo dùng Vi Điều Khiển .
Vi Điều Khiển đợc chọn là Vi Điều Khiển PIC dòng Mid-range của hãng
MicroChip: PIC16F88. Đây là một dòng Vi Điều Khiển mạnh, phát triển từ lâu ở
nhiều nớc trên thế giới. Tại Việt Nam, tuy xuất hiện sau dòng 89C (ATMEL), nhng
với những tính năng nổi bật, nó dần đã có đợc một vị trí nhất định trong các loại Vi
Điều Khiển. Khi PIC đợc sử dụng trong mạch quang báo, việc thiết kế phần cứng sẽ
đơn giản đi nhiều mà hiệu năng của mạch vẫn luôn đợc đảm bảo (sự linh hoạt trong
việc hiển thị, các hiệu ứng, khả năng nâng cấp phần cứng và phần mềm)
Dới đây là sơ đồ khối của mạch quang báo
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Sơ đồ khối mạch điện quang báo
Nguồn cấp cho mạch
Khối điều khiển
trung tâm
Bảng đèn
(ma trận LED 16x8)
Giải mã hàng
và Chốt dữ
liệu hàng
Giải mã địa
chỉ cột
Đệm dòng
cho cột
đệm dòng
cho hàng
Khối giao
tiếp với máy
tính (rs232)
Máy tính
Dao
động
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
II. Chức năng từng khối (giới thiệu chung).
- Dao động: tạo xung nhịp dao động cho Vi Điều Khiển. Sử dụng thạch anh tần
số 20MHz cùng với hai tụ 22pF
- Giải mã địa chỉ cột : nhận tín hiệu từ Vi Điều Khiển, tạo địa chỉ, từ đó đa
ra tín hiệu cho phép cột LED nào trên bảng đèn (ma trận LED) đợc phép sáng.
Tại mỗi thời điểm chỉ có một cột LED đợc phép sáng. Tín hiệu này đợc đa
đến bộ đệm dòng cho. IC đợc sử dụng là 74HC154 decoder/demux1 16.
- Giải mã hàng và chốt dữ liệu hàng: Nhận tín hiệu từ Vi Điều Khiển
là tín hiệu quy định LED nào trong cột đợc sáng, LED nào tắt khi một cột đợc
cho phép. Tín hiệu sau đó đợc đa qua bộ đệm dòng cho hàng. IC đợc sử dụng
cho bộ giải mã hàng là 74HC595 Ghi dịch 8 bit vào nối tiếp ra song song
- Các bộ đệm dòng cho hàng và cột đợc sử dụng đề đảm bảo độ sáng của
các LED trân màn hình là đồng đều khi chỉ 1 LED sáng hay cả 8 LED của một
cột đều sáng(ở một mức độ nào đó). Sử dụng transistor và các IC đệm chuyên
dụng(ULN2803).
- Khối giao tiếp với máy tính đợc dùng để kết nối giữa Vi Điều Khiển
với máy tính khi cần cập nhật dữ liệu, thay đổi thông tin hiển thị. Giao tiếp đợc
dùng là thông qua cổng COM của máy tính. Dùng IC đệm cổng MAX232
- Khối điều khiển trung tâm (PIC16F88): Là một Vi Điều Khiển
PIC16F88. Đây là phần tử điều khiển chính trong mạch điện. Nó chứa trong
ROM phần mềm điều khiển bao gồm việc giải mã ký tự từ ASCII để đa ra bảng
LED, chứa bộ font cho bảng LED mã hoá cho các chữ cái và các số, ký tự đặc
biệt khác. Ngoài ra còn chứa phần mềm điều khiển tốc độ chữ hiên thị trên bảng
LED, phần giao tiếp với máy tính cho việc cập nhật dữ liệu. Nội dung hiển thị
đợc lu trong EEPROM của Vi Điều Khiển (có 256 byte).
- Khối nguồn cấp: có nhiệm vụ cấp đủ nguồn cho mạch điện nhng bản thân
nó không bị quá dòng.
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Chơng 2
Một số phơng án thực hiện mạch quang báo
Nh đã trình bày ở trên, để thực hiện một mạch quang báo ta 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ểnSau đây xin giới thiệu qua một vài phơng án để làm một bảng thông tin
điên tử.
I. Mạch quang báo dùng EEPROM
EEPROM Electrically Erasable Programmable Read-Only-Memory - Đây là
loại bộ nhớ chỉ đọc lập trình và xoá đợc bằng điện. EEPROM có đặc điểm là kích
thớc chip hầu nh không tăng theo dung lợng bộ nhớ của nó. Mạch quang báo dùng
EEPROM có đặc điểm là nội dung hiển thị không bị mất khi mất điện, việc thay đổi
nội dung hiển thị cũng dễ dàng hơn bởi chỉ cần lập trình lại cho EEPROM (nạp một
chơng trình mới, nội dung hiển thị mới). Tuy vậy đấy chính là nhợc điểm của mạch
quang báo dùng EEPROM vì khi muốn thay đổi ta lại phải tháo bảng dèn xuống, thay
IC, nh vậy sẽ tốn nhiều thời gian và công sức. Hơn nữa việc tạo các hiệu ứng đậc biệt
sẽ khó khăn.
Nguyên lý làm việc của mạch: Mạch dao động tạo ra tần số dao động đa đến
EEPROM và khối giải mã địa chỉ. Trong EEPROM chứa nội dung cần hiển thị, gồm
có nội dung bản tin, các tín hiệu điều khiển màuTừ đó chúng đợc đa đến lần lợt
các mạch điểu khiển màu, mạch chốt địa chỉ cột, hàng và đa ra bảng LED để hiển
thị.
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¶ng viªn: Ngun Nam Qu©n
Sinh viªn: Ngun ChÝ Linh – DT8 K47 - DHBKHN
S¬ ®å khèi m¹ch quang b¸o dïng EEPROM
NhËn xÐt:
- M¹ch tËn dơng ®−ỵc kh¶ n¨ng cđa EEPROM vµ c¸c m¹ch sè
- Linh kiƯn dƠ mua, dƠ t×m
- Khi cÇn thay ®ỉi th× ta ph¶i lËp tr×nh l¹i cho EEPROM, ®©y lµ nh−ỵc ®iĨm chÝnh
- Kh¶ n¨ng ph¸t triĨn cđa hƯ thèng ch−a linh ho¹t. M¹ch cÇn nhiỊu bé gi¶i m·,
kÝch th−íc m¹ch t¨ng lªn, sè l−ỵng IC còng t¨ng khi ta t¨ng kÝch th−íc b¶ng
th«ng tin.
DAO ĐỘNG
TẠO ĐỊA CHỈ
GIẢI MÃ
ĐỊA CHỈ
GIẢI MÃ
HIỂN THỊ
(
EPROM
)
ĐIỀU
KHIỂN
MÀU
CHỐT DỮ
LIỆU (I)
CHỐT DỮ
LIỆU (II)
Đ
ỆM NGÕ
RA (HÀNG)
THÚC CÔNG
SUẤT
(HA
Ø
NG)
ĐỆM NGÕ
RA CỘT (I)
ĐỆM NGÕ
RA CỘT
THÚC CÔNG
SUẤT CỘT
THÚC CÔNG
SUẤTCỘT
BẢNG ĐÈN
(MA TRẬN
LED)
NGUỒN
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¶ng viªn: Ngun Nam Qu©n
Sinh viªn: Ngun ChÝ Linh – DT8 K47 - DHBKHN
Mét sè lo¹i EEPROM trªn thÞ tr−êng.
1. EPROM 2732:
EPROM 2732 là một IC nhớ có dung lượng 4 Kbyte, gồm 12 đường đòa chỉ,
24 chân. Các chân được sắp xếp như sau:
SƠ ĐỒ CHÂN EPROM 2732
- A0 ~ A11 lµ c¸c ch©n ®Þa chØ cđa EEPROM, khi n¹p hay truy xt ®Ịu cÇn
c¸c ®−êng ®Þa chØ nµy
- D0 ~ D7 : c¸c ®−êng vµo/ra d÷ liƯu cđa EEPROM,
2. EPROM 2764:
EPROM 2764 có dung lượng nhớ lớn gấp đôi EPROM 2732 (8 Kbyte), nó có
tất cả là 28 chân. Trong đó có 13 chân được dùng làm đường đòa chỉ, 8 chân làm
đường dữ liệu, các chân còn lại dùng cấp nguồn và điều khiển.
EPROM 2764 có sơ đồ chân như sau:
SƠ ĐỒ CHÂN EPROM 2764
Ngoµi ta cßn nhiỊu lo¹i EEPROM kh¸c nh− 27128, 27256… C¸c EEPROM kh¸c hä
28xxx, 29xxx.
1 2 3 5
16
4
6
7
8
15 14 13
12
21
9 10
V
CC
GND
D
2
D
1
A
1
A
2
A
3
D
3
A
8
D
0
D
7
A
7
A
6
D
6
D
5
2732
20 19 1718
D
4
A
4
A
5
3
2
1
5
11
23 24 22
A
9
A
11
A
10
A
0
OE/V
PP
CE
1
2 3 5
16
4
6
7
8
15
14
13
12
21
9 10
V
CC
GND
D
2
D
1
A
1
A
2
A
3
D
3
A
8
D
0
D
7
A
7
A
6
D
6
D
5
2764
20 19 1718
D
4
A
4
A
5
PGM
\
3
2
1
5
11
2326 27 2428 2225
V
PP
NC
A
12
A
9
A
11
A
10
A
0
OE
CE
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
II. Mạch quang báo dùng Vi Điều Khiển
Vi Điều Khiển nh một máy vi tính thu nhỏ Small Computer với đầy đủ
ROM, RAM và các ngoại vi giao tiếp khác. Ngày nay Vi Điều Khiển đợc sử dụng
khá rộng rãi và tỏ ra rất phù hợp cho các hệ thống hớng điều khiển, yêu cấu về chi
phí thấp. Việc sử dụng Vi Điều Khiển cho mạch quang báo có thêm nhiều chức năng
hơn. Hệ thống tỏ ra linh hoạt, khả năng giao tiếp với ngoại vi bên ngoài mạnh. Việc
kết hợp giữa Vi Điều Khiển và EEPROM sẽ tận dụng đợc những u điểm của cả
EEPROM và Vi Điều Khiển.
Tính năng của mạch:
- Dữ liệu hiển thị lu trong EEPROM, không bị mất khi mất nguồn cấp
- Chơng trình điều khiển chứa trong ROM của Vi Điều Khiển điềukhiển việc
giải mã và điều khiển màu, các giao tiếp với EEPROM
- Giao tiếp với bàn phím bên ngoài hay máy tính đề thay đổi nội dung bản tin
trực tiếp
- Tốc độ chữ chạy thay đổi linh hoạt
Hiện nay trên thị trờng có khá nhiều loại Vi Điều Khiển để ta lựa chọn của
hãng nh ATMEL, ZILOG, MicroChip, Motorola Mỗi loại, mỗi dòng có những tính
năng riêng. Trong đề tài này em đa ra hai phơng án sử dụng Vi Điều Khiển.
1. Mạch quang báo dùng Vi Điều Khiển AT89S52
2. Mạch quang báo dùng Vi Điều Khiển PIC16F88
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
A. Mạch quang báo dùng Vi Điều Khiển AT89S52
Sơ đồ khối
Sơ đồ khối của mạch dùng AT89S52 về cơ bản giống với mạch dùng cho PIC,
chi khác ở chỗ thêm phần giao tiếp với EEPROM. Nếu không sử dụng EEPROM thì
nội dung hiển thị cùng với chơng trình điều khiển đợc lu trong ROM của Vi Điều
Khiển AT89S52. Khi cần thay đổi nội dung hiển thị thì ta buộc phải lập trình lại cho
AT89S52.
Về chi tiết của mạch điện đợc trình bày bên dới. Sau đây em giới thiệu qua về
Vi Điều Khiển AT89S52.
AT89S52 là VĐK thuộc họ 8051, một dòng VĐK khá phổ biến trên thế giới,
ngày nay đã phát triển thành nhiều phiên bản khác nhau.
Nguồn cấp cho mạch
Khối điều khiển
trung tâm
AT89S52
Bảng đèn
(ma trận LED 16x8)
Giải mã hàng
và Chốt dữ
liệu hàng
Giải mã địa
chỉ cột
Đệm dòng
cho cột
đệm dòng
cho hàng
Khối giao
tiếp với máy
tính (rs232)
Máy tính
Dao
động
EEPROM
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Đặc điểm của AT89S52
- Vi Điều Khiển 8 bit họ MCS-51, tần số hoạt động 0 Hz ~ 33MHz
- Bộ nhớ chơng trình 8K Bytes, nạp ISP, ghi/xóa 1000 lần, RAM 256 Bytes
- Dải điện áp hoạt động 4.0V ~ 5.5V
- 32 đờng vào/ra cở bản
- 3 bộ dếm/định thời 16 bit
- 8 nguồn ngắt (2 ngắt ngoài, ngắt Timer, ngắt USART)
- Giao tiếp nối tiếp USART (RS - 232)
Sơ đồ chân của AT89S52
AT89S52 ngoài 8KB bộ nhớ trên chíp, khi muốn mở rộng bộ nhớ ta có thể ghép
nối thêm với các bộ nhớ ngoài. AT89S52 có thể quản lý đợc tối đa 64KB ROM và
64KB RAM (16 bit địa chỉ).
Tập lệnh của AT89S52 khá phong phú với các lệnh xử lý bit, xử lý byte, các
phép toàn số học và logic, các lệnh nhảy, lệnh gọi chơng trình con giúp cho ngời
lập trình làm việc với AT89S52 một cách thuận lợi.
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¶ng viªn: NguyÔn Nam Qu©n
Sinh viªn: NguyÔn ChÝ Linh – DT8 K47 - DHBKHN
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Chơng 3
Mạch quang báo dùng Vi Điều Khiển PIC16F88
II. Nguyên lý làm việc của mạch quang báo
1. Giới thiệu về bảng LED ma trận
Trớc khi đi vào nguyên lý hoạt động của mạch ta tìm hiểu qua về bảng ma trận
LED đợc sử dụng trong đề tài.
Bảng hiển thị ma trận LED (dot-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 nh 16x16 hay
32x32
Trên thị trờng ta thờng thấy các bảng LED cỡ lớn, dài hàng mét với đủ kích cỡ.
Các bảng LED đó là do hàng nghìn LED đơn ghép lại. Khi thiết kế những bảng LED
to nh vậy ta cần chú ý đến sự đồng đều về độ sáng của các LED để việc hiển thị đợc
đồng đều. Bên cạnh đó vấn đề cấp nguồn cho mạch cũng cần đợc chú ý và thiết kế
cho phù hợp. Trong đề tài này em sử dụng hai bảng LED 8x8 cho việc hiển thị, sử
dụng ma trận 5x7 cho việc hiển thị mỗi một ký tự.
Sau đây là sơ đồ ghép nối của hai loại bảng LED thông dụng là 5x7 và 8x8.
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
H1.1 Bảng LED 8x8
Bảng ma trận LED có hai loại, loại có các cột là các chân Anode, còn hàng là các
chân Cathode và loại kia thì ngợc lại các cột là Cathode, hàng là Anode. Khi sử dụng
LED ta cần chú ý điều này để điều khiển cho đúng. Khi đóng vỏ, sự phân bố chân các
hàng và cột là không theo thứ tự (do tính phức tạp trong ghép nối), do đó ta cần tìm
hiểu kỹ để mắc mạch cho đúng.
Dới đây là sơ đồ chân của bảng LED 8x8 đợc dùng trong đề tài.
Các số gạch chân là hàng
Các số không gạch chân là cột
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¶ng viªn: NguyÔn Nam Qu©n
Sinh viªn: NguyÔn ChÝ Linh – DT8 K47 - DHBKHN
6 3 4 1 6 7 2 4
Hµng
Cét
8
5 3 5 8 7 2 1
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
H1.2 Bảng LED 5x7
Nguyên tắc làm sáng đèn LED trên bảng LED
Khi muốn làm sáng LED dơn, ta cần đa điên áp dơng vào chân Anode và điện áp
âm vào chân Cathode với giá trị thích hợp, khi đó LED sáng. Giá trị điện áp và dòng
điện tuỳ thuộc vào màu sắc từng loại LED. Dòng chảy qua các LED để đảm bảo độ
sáng bình thờng là từ 10mA cho đến 25mA. Về điện áp ta có bảng sau.
Màu LED\Điện áp Vmin V Vmax
Đỏ 1.88 1.9 1.93
Xanh 2.08 2.1 2.12
Vàng 1.98 2.0 2.02
Khi ta muốn làm sáng một điểm trên bảng ma trận LED ta cũng làm tơng tự. Xét
với bảng LED 5x7 dới đây (H1.3).
H1.3 Bảng LED 5x7
Ta muốn làm sáng LED tại vị trí hàng 5 - cột 3 (Row = 5 : Col = 3), ta đa mức
điện áp dơng (mức logic 1) đến chân số 4 tức hàng thứ 5 và nối chân số 10 tức cột 3
xuống đất (GND hay mức logic 0), đèn LED tại vị trí đó sẽ sáng.
Việc hiển thị thông tin trên bảng LED ta cũng làm tơng tự, cho sáng những điểm
theo sự điều khiển của ta để tạo ra chữ và hình ảnh. Việc điều khiển hiển thị sẽ đợc
trình bày trong phần dới dây.
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
2. Nguyên tắc quét bảng ma trận LED
Trong đề tài này em sử dụng hai bảng LED 8x8 ghép lại thành một bảng cỡ 8x16
(8 hàng và 16 cột). Mỗi ký tự sẽ đợc hiển thị trong một khung cỡ 5x7. Dới đây là
nguyên tắc quét và hiển thị một ký tự (giả thiết là chữ R) trên khung hình 5x7.
Để hiển thị ký tự lên bảng LED, ở đây ta dùng phơng pháp quét cột và xuất dữ
liệu hàng. Quá trình quét cột là ta gửi tín hiệu cho phép đến từng cột trong từng thời
điểm. Cùng lúc đó ta gửi dữ liệu hàng đến 7 hàng. Trong đề tài này tín hiệu cho phép
cột là mức logic 1, và dữ liệu hàng tơng ứng là mức 0 hay 1 của từng hàng, mức
0 ứng với LED sáng (on) và mức 1 là tắt (off).
- Đầu tiên ta đa dữ liệu cần hiển thị đến 7 hàng, ví dụ 11100110
- 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 16 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 mili giây, 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 nhng do thời gian quét rất nhanh và do hiện tơng
lu ả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. Trong đề tài này ban đầu dữ liệu đợc lấy từ ROM trong
PIC16F88, khi câp nhật dữ liệu từ máy tính thì dữ liệu sẽ đợc lấy từ EEPROM trong
PIC16F88 (256 byte).
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
3. Phơng pháp tạo hiệu ứng chữ chạy từ phải qua trái trên bảng LED
Sau khi đã hiển thị đợc hình ảnh lên bảng LED. Bây giờ ta sẽ tìm hiểu cách tạo
hiệu ứng chữ chạy trên bảng LED. Thủ thuật ở đây là quét và hiển thị một hình ảnh
trong một thời gian nhất định, sau đó ta dịch dữ liệu của các cột sang trái một vị trí,
khi đó ta sẽ tạo đợc hiệu ứng chữ chạy trên bảng LED.
Đề tài này ta sử dụng mạch mẫu là bảng LED 8x16, sử dụng 16 byte RAM làm bộ
đệm cho màn hình, lu giá trị dữ liệu hàng của 16 cột. Bộ đệm đợc khai báo trong
RAM nội của chip PIC16F88 là một mảng gồm 17 phần tử. Chơng trình hiển thị làm
nhiệm vụ đọc dữ liệu từ các vị trí 0 đến 16 của bộ đệm và đa ra màn hình hiển thị.
Hiệu ứng chữ chạy đợc tạo ra bằng cách dịch giá trị các phần tử đi một vị trí (15 -
>16, 14 ->15, 13 ->12). Sau mỗi lần dịch ta lại gọi chơng trình hiển thị. Khi đó
trên bảng LED ta sẽ quan sát đợc hiệu ứng chữ chạy.
4. Nguyên lý làm việc của mạch quang báo
Mạch điện sử dụng Vi Điều Khiển PIC nên về phần cứng khá đơn giản. Mạch gồm
có 3 khối chính với 3 IC chính đợc sử dụng.
Khối điều khiển trung tâm sử dụng Vi Điều Khiển PIC16F88. Vi Điều
Khiển này có 18 chân (kích thớc nhỏ nhất của dòng PIC Mid-range). Tuy vậy, với
nhiều tính năng mạnh đợc tích hợp sẵn nên PIC16F88 đợc chọn.
Khối giải mã địa chỉ cột sử dụng IC 74HC154 là IC giải mã/giả đa hợp.
Chíp CMOS này đợc dùng để giải mã cột, 4 đờng vào và 16 đớng ra. 16 đờng ra
này đợc nối đến 16 cột để làm nhiệm vụ đa tín hiệu cho phép cột.
Quét cột
D liu
hn
g
Tín hiệu kích hoạt
cột (C1 -> C5)
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
KhốI giải mã dữ liệu hàng sử dụng IC 74HC595, đây là thanh ghi dịch 8-
bit vào nối tiếp ra song song. Ta sử dụng IC này nhằm mục đích tiết kiệm chân giao
tiếp giữa IC giải mã với Vi Điều Khiển. Chân DATA-IN (14) để đa dữ liệu nối tiếp
vào, chân CLK (11) đa xung đồng hồ dịch bit, chân LATCH(12) để chốt dữ liệu đợc
gửi ra. 8 đầu ra đợc nối đến 8 hàng của bang LED thông qua mạch đệm dòng.
Nguyên lý hoạt động: Chơng trình phần mềm chứa trong Vi Điều Khiển làm
nhiệm vụ điều khiển chính mọi hoạt động của mạch. Chơng trình phần mềm gồm có
nhiều chơng trình con: chơng trình hiển thị, chơng trình cập nhật EEPROM
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
Lu đồ thuật toán:
YES
NO
YES
NO
Khởi tạo ban đầu:
- Định nghĩa các chân vào ra
- Thiết lập cho ADC(kênh,tốc độ)
- Lu bản tin vào EEPROM)
Xoá bộ đệm
màn hình
Đọc giá trị
ADC
Trở về
Update_flag ?
Gọi chơng trình cập nhật:
- Số từ hiển thị mới
- Vị trí EEPROM
- Số ký tự thêm vào
- Nhập
Chơng trình
hiển thị trên
bảng LED
Nhập bản
tin mới ?
START
Hiển thị nội dung:
- Bản tin
- EEPROM
Cập nhật bản tin
END
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
5. Sơ đồ nguyên lý mạch điện.
- Khối mạch chính và hiển thị.
U6
PIC16F88
14
15
4 16
17
18
1
2
3
6
7
8
9
10
11
12
13
VDD
OSC2/CLKOUT
MCLR
OSC1/CLKIN
RA0
RA1
RA2
RA3
RA4/TOCKI
RB0/INT
RB1
RB2/RX
RB3
RB4
RB5/TX
RB6
RB7
R1
4k7
Col4 Col8
row4
Col7
XTAL2
R9
4k7
VCC
row5
Col1
Q7
A1015
Col10
A3
VCC
Ma
tran
8x8
Q8
A1015
A0
A1015
Dieu chinh toc do
10K
Q1
A1015
Col0
A1015
U4
74HC595
14
11
10
12
13
15
1
2
3
4
5
6
7
9
SER
SRCLK
SRCLR
RCLK
G
QA
QB
QC
QD
QE
QF
QG
QH
QH'
row6
Col13
U5
74154
1
2
3
4
5
6
7
8
9
10
11
13
14
15
16
17
23
22
21
20
18
19
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
Y12
Y13
Y14
Y15
A
B
C
D
G1
G2
XTAL1
A2
Ma
tran
8x8
A0
Col6 Col12
R2
4k7
row8
A1015
A2
row1
R9
4k7
Col3 Col9
Q3
A1015
VCC
R3
4k7
VCC
Col5
A3
R3
4k7
row2
R1
4k7
A1
R2
4k7
A1
Col11 Col15
Col2
row3
Col14
row7
A1015
- Khối tạo dao động, mạch Reset
C5
22p
10MHz
XTA L2XTAL 1
C6
22p
C4 10u
VCC
RST
R15
10k
- Khối giao tiếp máy tính
MAX232
1
3
4
5
2
6
12
9
11
10
13
8
14
7
C1+
C1-
C2+
C2-
V+
V-
R1OUT
R2OUT
T1I N
T2I N
R1IN
R2IN
T1OU T
T2OU T
C2 10uF
C3
C7
VCC
TX (R B5)
C1
COM on PC
5
9
4
8
3
7
2
6
1
RX (RB2)
Nối đến chân
MCLR(1)
Đồ án môn Thiết kế mạch Logic Giảng viên: Nguyễn Nam Quân
Sinh viên: Nguyễn Chí Linh DT8 K47 - DHBKHN
- Khối nguồn
7805
1 3
2
VIN VOUT
GND
100uF
+5V
10uF
+9V +12V
10447uF
6. Linh kiện sử dụng trong mạch
- Khối điều khiển trung tâm: Vi điều khiển PIC16F88
- GiảI mã dữ liệu hàng: IC 74HC595
- GiảI mã địa chỉ cột: IC 74HC154
- Giao tiếp máy tính: IC MAX232 (MAXIM-DALLAS)
- Điện trở 4K7, 10K, tụ 10àF, 100àF, 47àF, IC 7805 (ổn áp 5
V
) Tran A1015
- Bảng LED 8x8 (2 bảng)
II. Mã nguồn chơng trình
Dới đây là mã nguồn của chơng trình hiển thị LED. Chơng trình sử dụng
ngôn ngữ C, sử dụng trình biên dịch PCWH Compiler của hãng Custom Computer
Services, Inc (CCS), phiên bản 3.227. Đây là phần mềm chuyên dụng trong việc lập
trình PIC các dòng PIC16F và PIC18F
Để lập trình cho PIC ta có thể sử dụng rất nhiều ngôn ngữ khác nhau nh C,
C++, BASIC, ASM Mỗi ngôn ngữ lại có một trình biên dịch khac nhau. Riêng nhà
cung cấp chip là hãng MicroChip thì hỗ trợ ngời dùng trình dịch bằng ASM là
MPLAB IDE (phiên bản mới nhất là 7.21). Đây là phần mềm hoàn toàn miễn phí, cho
phép ngời dùng phát triển trên môi trờng ASM các ứng dụng. Tuy vậy trong đề tài
này em chọn dùng ngôn ngữ C để viết mã chơng trình vì C là ngôn ngữ bậc cao, cho
phép ta thực hiện nhiều phép toàn phức tạp với câu lệnh đơn giản. Trong trình biên
dịch PCWH Compiler có hỗ trợ khá nhiều hàm cho phép ta lập trình với PIC một cách
nhanh chóng nh: các hàm giao tiếp I2C, RS232, SPI, các hàm xử lý với EEPROM
nh write_eeprom, read_eeprom,
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¶ng viªn: NguyÔn Nam Qu©n
Sinh viªn: NguyÔn ChÝ Linh – DT8 K47 - DHBKHN
//+===Chuong trinh LED matrix display===========+
//| Thiet ke: Nguyen Chi Linh - DT8K47 - DHBKHN |
//| MCU: PIC16F88 (4K FLASH ROM, 256K EEPROM) |
//| Cac IC khac: 74154 - demux/decoder 1-of-16 |
//| 74595 - Ghi dich 8bit |
//+=============================================+
#include <16f88.h>
#include <defs_88.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, MCLR, NOBROWNOUT, NOLVP, NOCPD,
NOWRT, NODEBUG, NOPROTECT, NOFCMEN, NOIESO
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9)
#include <input.c>
#include <font_ascii.c> //File chua bo font ma hoa ky tu ASCII
// Dinh nghia cac chan cho ket noi 74595
#bit clk = 0x06.1 //RB0
#bit data = 0x06.3 //RB1
#bit latch = 0x06.4 //RB3
// Bo nho dem man hinh hien thi
int8 buff_disp[25]; //Bo nho dem cho man hinh LED
int8 max_char=117; //SO ky tu hien thi toi da
int8 time=5; //Bien quy dinh toc do chu chay
int1 text_on_rom=0;
int8 chon=0;
int8 address;
int8 choose_text;
//=========KHAI BAO CAC CHUONH TRINH CON================
int8 doc_eeprom(int8 addr);
void send_2_595(int8 temp);
void display();
void copy_2_ram1(int8 index_char);
void copy_2_ram2(int8 index_char);
void update_eeprom();
void convert_bcd(int8 x);
//=============================================
#INT_EXT
EXT_ISR() {
disable_interrupts(GLOBAL);
clear_interrupt(int_ext);
chon++;
if(chon==3) chon = 0;
choose_text = 0;
text_on_rom = 0;
§å ¸n m«n ThiÕt kÕ m¹ch Logic Gi¶ng viªn: NguyÔn Nam Qu©n
Sinh viªn: NguyÔn ChÝ Linh – DT8 K47 - DHBKHN
enable_interrupts(GLOBAL);
}
//===========Chuong trinh chinh================
void main() {
int8 i,j,k;
#bit update_rom = 0x06.6
char const a[119]= " Hello World.LED Matrix PIC16F88 - 74154 - 74595. Bang thong
tin dien tu.Nguyen Chi Linh-DT8 DAI HOC BACH KHOA HA NOI ";
char const b[119]= " HAPPY NEW YEAR *2006* - CHUC MUNG NAM MOI - Chuc
Mung Nam Moi - Happy new year. 1234567890 ";
char const c[119]= " You like a little flame in my heart. When I see you, the flame is like
up. Because I love you. Because I LOVE YOU ";
char const adc[6] = " ADC=";
//===========================================
TRISA=0x10; // Thiet lap chan vao ra
TRISB=0b00100101;
//==Thiet lap ngat ngoai 0 ==================
enable_interrupts(INT_EXT);
ext_int_edge(H_TO_L);
enable_interrupts(GLOBAL);
//===========================================
setup_adc_ports(sAN4);
setup_adc(ADC_CLOCK_INTERNAL);
chs0=0; //Clear bit 1f.3
chs1=0; //Clear bit 1f.4
chs2=1; //Clear bit 1f.5
delay_ms(10);
//======= HIEN THI TRAI TIM =======
//==============================
//======= HIEN THI BAN TIN ========
for(i=0;i<6;++i)
write_eeprom(0xf0+i,adc[i]);
for(i=0;i<117;++i)
write_eeprom(i,a[i]);
write_eeprom(0xff,max_char); // Luu so ky tu toi da vao ROM
if(update_rom==1) //Kiem tra cong tac cap nhat du lieu
update_eeprom(); //Goi chuong trinh con cap nhat(giao tiep qua cong COM)
for (i=0;i<=24;i++) // Clear RAM of buff_disp
buff_disp[i]=0xff;
//Doanchuong trinh nay se hien thi noi dung ban tin luu trong EEPROM
while(1) {
for (i=0;i<=max_char;i++) // Begin of text
{
if(choose_text==0) {choose_text=1; goto hien_thi;}
if(text_on_rom==0)