Đồ á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
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,
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
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ị.
Đ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 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
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
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Đồ á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ề
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
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
- 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.
Đồ á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:
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
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
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
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
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
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
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. [email protected] 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)