BỘ GIÁO DỤC & ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ VIỄN THÔNG
---------------------
ĐỒ ÁN MÔN HỌC 1
NGÀNH: ĐIỆN TỬ VIỄN THÔNG
Đề tài:
LED CUBE 8X8X8 DÙNG VI
ĐIỀU KHIỂN ATMEGA32
GVHD : TS. PHAN VĂN CA
SVTH : NGUYỄN TẤN NGUYÊN – MSSV: 11141146
TP. HỒ CHÍ MINH – 06/2014
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
MỤC LỤC
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
trang 2
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 3
LỜI NÓI ĐẦU
Ngày nay xã hội đang ngày càng phát triển một cách nhanh chóng về mọi mặt.Trong đó,
điện tử, cơ khí, tự động hóa đóng vai trò hết sức quan trọng trong sự nghiệp công nghiệp
hóa hiện đại hóa như đất nước ta hiện nay.Phần lớn điện tử đã góp phần làm thay đổi
nhanh chóng về mọi mặt trong cuộc sống sinh hoạt hàng ngày.
Vận dụng những kiến thức đã được học trong quá trình học tập em thực hiện đề tài này.
Đồ án này chủ yếu dựa vào những kiến thức về vi điều khiển, ic số. Cụ thể là vi điều
khiển AVR, nhằm mục đích giúp em hiểu tường tận hơn về những gì về vi điều khiển,
cách lập trình, cách đọc tài liệu datasheet mà em đã được học từ thầy cô trong trường.
Trên thực tế, các ứng dụng của vi điều khiển rất đa dạng và phong phú. Từ những ứng
dụng đơn giản đến những hệ thống điều khiển phức tạp. Tuy nhiên, do điều kiện về trình
độ còn hạn chế, nên việc nghiên cứu và tìm hiều về vi điều khiển còn hạn hẹp. Bài viết
này em xin giới thiệu ứng dụng của vi điều khiển để điều khiển led đơn, cụ thể là khối
LED 3D.
Trong quá trình thực hiện đề tài do trình độ còn hạn chế nên khó tránh những sai sót,
mong thầy cùng các bạn góp ý bổ sung thêm để sau này có thể có hướng giải quyết tốt
hơn.
Xin chân thành cảm ơn !
TP. HỒ CHÍ MINH, ngày 15/06/2014
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 4
CHƯƠNG 1: GIỚI THIỆU
1
GIỚI THIỆU
Ngày nay, trong lĩnh vực quảng cáo, đèn LED chiếm một vai trò quan trọng , đáp ứng
được nhu cầu của nhiều công ty, doanh nghiệp, thậm chí cả một cửa hàng hay quáng
bar… Đã và đang dùng bảng quảng cáo bằng đèn LED ,vì sự đơn giản, hiện đại và bắt
mắt của nó. Những bảng thông tin, bảng chào hay những bảng quảng cáo với màu sắc rực
rở, gây nhiều chú ý chắc hẳn đã không còn xa lạ đối với mọi người nữa, nhất là đối với
các thành phố đang ngày càng phát triển. Hơn hẳng các bảng quảng cáo LED đơn 2D
thông thường, 3D là công nghệ tiên tiến hơn. Thể hiện được các hiệu ứng phức tạp,
phong phú và vô cùng đẹp mắt.
Là cả một thử thách thật sự đối với những ai muốn làm nó.Không chỉ vì sự phức tạp
ở những hiệu ứng, mà còn ở sự linh động của nó, có thể thay đổi hiệu ứng một cách linh
hoạt sao cho phù hợp với nhu cầu của khách hàng. Mô hình LED cube 8x8x8 mô tả được
đầy đủ những tính năng của một con LED. Qua những con LED đơn thuần mà ta có thể
phát triển thành một khối LED với không gian 3 chiều. Được tạo bởi 512 con LED, tùy
thuộc vào ý thích và khả năng sáng tạo của mỗi người mà chọn màu sắc của LED khác
nhau. LED thường được chọn là LED vỏ đục, đảm bảo được độ phát sang ra xung quanh
tốt nhất.
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 5
CHƯƠNG 2: NGHIÊN CỨU LÝ THUYẾT
2
NGHIÊN CỨU LÝ THUYẾT
2.1 Họ vi điều khiển AVR - Vi điều khiển Atmega32
2.1.1
Họ vi điều khiển AVR
2.1.1.1 Sơ lược
Vi điều khiển AVR thuộc họ vi điều khiển do Atmel sản xuất (Atmel cũng là nhà
sản xuất các vi điều khiển họ 8051). Đây là họ vi điều khiển được chế tạo theo
kiến trúc RISC (Reduced Intruction Set Computer) có cấu trúc tập lệnh rút gọn.
Ngoài các tính năng như các họ họ vi điều khiển khác, nó còn tích hợp nhiều tính
năng mới rất tiện lợi cho người thiết kế và lập trình. Sự ra đời của AVR bắt nguồn
từ yêu cầu thực tế là hầu hết khi cần lập trình cho vi điều khiển, chúng ta thường
dùng những ngôn ngữ bậc cao HLL (Hight Level Language) để lập trình ngay cả
với loại chip xử lí 8 bit trong đó ngôn ngữ C là ngôn ngữ phổ biến nhất. Tuy nhiên
khi biên dịch thì kích thước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ
Assembly.Hãng Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt
cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã đã nói trên. Và kết quả
là họ vi điều khiển AVR ra đời với việc làm giảm kích thước đoạn mã khi biên
dịch và thêm vào đó là thực hiện lệnh đúng đơn chu kỳ máy với 32 thanh ghi tích
lũy và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đến 12 lần.
2.1.1.2 Đặc điểm vi điều khiển AVR
Vi điều khiển AVR được thiết kế theo kiểu kiến trúc RISC: Kiến trúc RISC với
hầu hết các lệnh có chiều dài cố định, truy nhập bộ nhớ nạp lưu trữ (load-store) và
32 thanh ghi đa năng.
Kiến trúc RISC (viết tắt của Reduced Instructions Set Computer – máy tính với
tập lệnh đơn giản hoá) là một phương pháp thiết kế các bộ vi xử lý hoặc vi điều
khiển theo hướng đơn giản hoá tập lệnh, trong đó thời gian thực thi của hầu hết
các lệnh đều như nhau. Hiện nay các bộ vi xử lý RISC phổ biến là PIC, ARM.
DEC Alpha, AVR của Atmel, . . . Triết lý cho phát triển RISC đó là cắt giảm bộ vi
xử lý để chỉ còn lại những bộ phận thiết yếu của nó. Những gì không thực sự cần
thiết sẽ bị vứt bỏ. Với các nhà lập trình thì đó có nghĩa là các chíp RISC thường
không thể thực hiện một phép nhân đơn giản. Lý thuyết của phép nhân là thực
hiện liên tiếp nhiều phép cộng, do đó lệnh ADD là đủ.Một ý khác của RISC đó là
các chức năng phức tạp thích hợp thực hiện bằng phần mềm hơn là bằng phần
cứng.Phần mềm thì dễ thay đổi, dễ cập nhật, và tạo ra nhanh hơn.Viết mã mới
nhanh hơn là thiết kế và xây dựng một chíp mới. Do đó các máy tính dựa trên
RISC có thể được nâng cấp nhanh hơn. Các chương trình và các thuật toán có thể
điều chỉnh và cải tiến. Tốt nhất là phần cứng RISC phải được đơn giản hóa, tối ưu
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 6
hóa sao cho nó chạy nhanh hơn. Các tạp chí kỹ thuật và các xuất bản thương mại
đã quảng cáo sâu rộng RISC như là một lĩnh vực mới cho máy tính.
- So với các chip vi điều khiển khác, AVR có nhiều đặc tính hơn hẳn, hơn cả trongtính
ứng dụng (dễ sử dụng) và đặc biệt là về chức năng.
- Gần như chúng ta không cần lắp thêm bất kỳ linh kiện phụ nào khi sử dụng AVR,thậm
chí không cần nguồn tạo xung clock cho chip (thường là các khối thạch anh).
- Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ cần vàiđiện
trở là có thể làm được. Một số AVR còn hỗ trợ lập trình on-chip bằng bootloaderkhông
cần mạch nạp.
- Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích với C
Một số chip AVR
- AT90S8535: Không có lệnh nhân hoặc chia trên thanh ghi.
- ATmega 8, 16, 32, 64, 128 (AVR loại 8 bit, 16 bit, 32 bit): Là loại AVR tốc độ
cao, tích hợp sẵn ADC 10 bit.
- Atmega169, 329: AVR tích hợp sẵn LCD driver.
- AT90PWM: Là loại AVR có tích hợp SC (power stage controller), thường dùng
trong các ứng dụng điều khiển động cơ hay chiếu sáng nên còn gọi là lighting
AVR.
- Attiny11, 12, 15: AVR loại nhỏ.
2.1.1.3 Lựa chọn vi điều khiển AVR
Có rất nhiều họ vi điều khiển của các hãng nổi tiếng trên Thế giới như: 8048 và 8051 của
Intel, 68HC11 của Motorola, Z8 của Zilog, PIC của Microchip, H8 của Hitachi, . . . Lựa
chọn họ vi điều khiển AVR của hãng Atmel vì các lý do sau:
- Được chế tạo theo kiến trúc RISC, hiệu suất cao và điện năng tiêu thụ thấp.
- Có kiến trúc đơn giản và hợp lý.
- Bộ nhớ chương trình, dữ liệu và nhiều bộ phận ngoại vi được tích hợp ngay trên
chip.
- Tốc độ xử lý lớn hơn đến 12 lần so với các vi điều khiển thông thường, vi điều
khiển AVR có khả năng đạt đến tốc độ xử lý 12MPIS(triệu lệnh trong một giây).
- Khả năng lập trình được và hỗ trợ cho việc lập trình bằng ngôn ngữ cấp cao.
- Có trên thị trường ở Việt Nam.
- Chi phí thấp.
2.1.2
Kiến trúc vi điều khiển ATMEGA32
Cũng giống như các loại chip AVR khác, chip ATmega32 cũng được thiết kế dựa
trên kiến trúc RISC (viết tắt của Reduced Instructions Set Computer- dịch là máy
tính với tập lệnh đơn giản hóa), khác với kiến trúc CISC(viết tắt của Complex
Instructions Set Computer- dịch là máy tính với tập lệnh phức tạp) kiến trúc RISC
với tập lệnh ngắn gọn và đơn giản hơn, thời gian thực thi nhanh hơn. Hiện nay các
bộ vi xử lý và vi điều khiển có kiến trúc RISC phổ biến là PIC, ARM. DEC Alpha,
AVR của Atmel . . . Kiến trúc RISC có những chức năng thích hợp cho việc sử
dụng phần mềm hơn là phần cứng vì phần mềm dễ thay đổi, dễ cập nhật và tạo ra
nhanh hơn so với phần cứng. Do đó các máy tính dựa trên kiến trúc RISC có thể
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 7
được nâng cấp nhanh hơn, các chương trình và các thuật toán có thể điều chỉnh và
cải tiến một cách hiệu quả.
Hình 1: Sơ đồ chân Atmega32
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
2.1.2.1 Kiến trúc bên trong vi điều khiển Atmega32
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
trang 8
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
trang 9
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 10
Hình 2: sơ đồ khối bên trong vi điều khiển Atmega32
Các bộ phận ngoại vi được tích hợp ngay trên chip, bao gồm cổng I/O số, bộ biến đổi
ADC, bộ nhớ EFPROM, bộ định thời, UART, bộ định thời RTC, bộ điều chế độ rộng
xung (PWM), . . . Đặc điểm này được xem là nổi bật so với nhiều vi điều khiển khác vì
trong khi nhiều bộ xử lý khác phải tạo bộ truyền nhận UART hoặc giao diện SPI bằng
phần mềm hay “máy ảo” thì trên vi điều khiển AVR lại được thực hiện bằng phần cứng.
2.1.2.2 Một số đặc điểm của Atmega32
Chân VCC: chân số 10 là chân cấp nguồn cho vi điều khiển.
Chân GND: chân số 11 và chân số 31 là 2 chân nối mass.
PORT A (PA7…PA0): gồm 8 chân(từ chân 33 đến chân 40): đầu vào cho chuyển đổi
ADC.
PORT B (PB7…PB0): gồm 8 chân(từ chân 1 đến chân 8): ngoài các chức năng làm
đường xuất nhập còn có một số chức năng khác.
PORTC (PC7…PC0): gồm 8 chân(từ chân 22 đến chân 29): Nếu giao tiếp JTAG được
kích hoạt điện trở trên các PC5(TDI), PC3(TMS), PC2(TCK) sẽ được kích hoạt ngay cả
khi khởi động lại(reset).
PORT D(PD7…PD0): gồm 8 chân(từ chân 14 đến chân 21): chức năng xuất nhập, truyền
nhận dữ liệu(chân 14 và chân 15), timer…
Chân RESET: ngõ vào RST ở chân số 9 là ngỏ vào reset dùng để thiết lập trạng thái ban
đầu cho vi điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngỏ này ở
mức 1 tối thiểu 2 chu kỳ máy.
Chân XTAL1 và chân XTAL2: 2 chân này ở vị trí 13 và 12: có chức năng nhận nguồn
xung clock từ bên ngoài để hoạt động, thường được nối với thạch anh và tụ điện để hoạt
động ổn định hơn.
Chân AVCC: nguồn cấp cho cổng A và bộ chuyển đổi ADC,được nối với nguồn VCC
bên ngoài, ngay khi bộ chuyển đổi ADC không được sử dụng.
Chân AREF: chân chuẩn analog cho bộ chuyển đổi ADC.
2.1.2.3 Các thanh ghi chức năng:
Thanh ghi trạng thái-SREG(stratus resgister):
Đây là một trong những thanh ghi quan trọng nhất của chip AVR, có 8 bit cờ báo
hiệu trạng thái hiện tại của vi điều khiển, tất cả các bit này sẽ bị xóa khi reset.
Bit 7 – I: Global Interrupt Enable: cho phép ngắt toàn cục hoặc cấm tất cả các ngắt.
Bit 6–T : Bit Copy Storage : dùng nạp bit BLD (bit load) và lưu trữ bit BST (bit store)
để nạp và lưu trữ các bit từ một thanh ghi này vào thanh ghi khác.
Bit 5 – H: Half Carry Flag: báo cho thấy sự nhớ một nửa trong một số lệnh số học.
Bit 4- S: Sing Flag: cờ dấu, bit này là kết quả EX-OR giữa cờ phủ định N và cờ tràn
(overflow).
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 11
Bit 3- V: cờ tràn lấy bù nhị phân.
Bit 2 – N:Negative Flag: cờ phủ định.
Bit 1 – Z: Zero Flag: cờ số không, chỉ báo một kết quả bằng 0 sau khi thực hiện một
phép tính số học hoặc logic.
Bit 0 – C: Carry Flag: cờ nhớ, chỉ cho sự nhớ trong trong phép tính số học hoặc logic.
Thanh ghi con trỏ ngăn xếp-SP(stack pointer):
Có độ rộng 2 byte, được dùng để chỉ đến vùng trong bộ nhớ SRAM ở đỉnh ngăn
xếp và lưu trữ địa chỉ mà bộ xử lý trả trở lại sau khi gọi ngắt hoặc gọi thủ tục hoặc
có thể lưu các biến cục bộ. Khi sử dụng SP cần tạo giá trị hợp lý vì địa chỉ bắt đầu
của SRAM là 0x0060 chứ không phải là 0x0000. Các giá trị khởi tạo thường là 0.
Thanh ghi điều khiển toàn bộ vi điều khiển – MCUCR (MCU Control Register):
Bit 7- SE: Cho phép ngủ(sleep enable), việc đặt bit này thành “1” cho phép bộ xử lý
chuyển sang chế độ ngủ. Sau khi đặt bit này thành “1” chương trình cần phải thực thi
lệnh SLEEP.
Bit 6…4- SM2…0: Đây là những bit chọn chế độ ngủ, có 6 chế độ sleep được thể hiện
trong hình 1.14
Bit 3,2- ISC11,ISC10: Bit điều khiển nhạy cảm ngắt dùng cho INT1.
Bit 1,0- ISC01,ISC00: Bit điều khiển nhạy cảm ngắt dùng cho INT0.
SM2
0
0
0
0
1
1
1
1
Bảng 1:các chế độ sleep của AVR
SM1
SM0
Sleep Mode
0
0
Idle
0
1
ADC noise reduction
1
0
Power- down
1
1
Power- save
0
0
Reserved
0
1
Reserved
1
0
standby
1
1
Extended standby
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 12
Thanh ghi các PORT:
Đối với mỗi cổng (PORT) của vi điều khiển đều chứa 3 thanh ghi chức năng liên quan
đến các cổng
- Thanh ghi DDRx( thanh ghi hướng dữ liệu ): là thanh ghi 8 bit có tác dụng điều
khiển hướng của cổng (cổng ra hay cổng vào). Nếu có 1 bit nào đó trong thanh ghi
này bật lên 1 thì cổng này được định nghĩa là cổng ra, ngược lại nếu không có bit
nào được đặt là 0 thì quy định đó là cổng vào.
VD: DDRA=0xFF có nghĩa là PORTA được định nghĩa là PORT xuất DDRA=0x00 có
nghĩa là PORTA được định nghĩa là PORT nhập.
- Thanh ghi PORTx(thanh ghi dữ liệu cổng): là một thanh ghi 8 bit, nếu bit nào
trong thanh ghi mà được set lên 1 thì giá trị đưa ra tại bit đó là mức logic 1.
VD: PORTA = 0x01 có nghĩa là giá trị xuất ra PORTA.0 là 1.
- Thanh ghi PINx(thanh ghi địa chỉ chân vào): cho phép truy nhập trực tiếp đến
các chân của vi điều khiển, chỉ cho phép đọc dữ liệu mà không thể ghi.
2.2 IC thanh ghi dịch 74HC595
IC74HC595 là IC ghi dịch 8 bits kết hợp chốt dữ liệu, đầu vào nối tiếp, đầu ra
song song. Thường dùng trong các mạch điều khiển LED 7 đoạn, quét LED ma
trận,… để tiết kiệm số chân vi điều khiển tối đa (chỉ dùng 3 chân). Có thể mở rộng
số ngõ ra của vi điều khiển bao nhiêu tùy thích bằng việc mắc nối tiếp đầu vào dữ
liệu các IC với nhau.
Hình 3: hình dạng IC74HC595
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
2.2.1
trang 13
Sơ đồ chân
Hình 4: sơ đồ chân IC74HC595
DS: Data Shift
SH_CP: SHift Clock Pulse
ST_CP: STorage Clock Pulse
OE: Output Enable
MR: Master Reset
2.2.2
Sơ đồ khối
IC 74HC595 có 2 tầng thanh ghi 8 bit: tầng thanh ghi dịch (8 –stage shift register)
và tầng thanh ghi lưu trữ (8-bit store register).
Hình 5: sơ đồ khối IC74HC595
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 14
Chức năng
Chân tín hiệu SER là ngõ vào nhận dữ liệu nối tiếp.
Chân tín hiệu SCK dùng để nhận xung clock để đẩy dữ liệu vào thanh ghi dịch.
Chân tín hiệu SCL dùng để xóa dữ liệu trong thanh ghi dịch nối tiếp.Tín hiệu này
không dùng thì nối với mức 1.
Chân tín hiệu QH dùng để kết nối với thanh ghi dịch tiếp theo.
Tín hiệu RCK dùng để nạp dữ liệu từ thanh ghi dịch bên trong sang thanh ghi lưu trữ
và nếu cho phép thì xuất dữ liệu ra ngoài.
Chân tín hiệu G dùng để mở bộ đệm 3 trạng thái xuất tín hiệu ra ngoài.
2.2.3
Hoạt động
Ta đặt dữ liệu vào chân DS, và tạo một xung SHCP thì dữ liệu tại chân DS sẽ được dịch
vào thanh ghi 8-STAGE SHIFT REGISTER.
Lần lượt làm như trên 8 lần (dịch bit cao trước), thì ta được 8 bit trong thanh ghi 8
STAGE SHIFT REGISTER.
Sau đó ta tạo một xung STCP thì 8 bit trong thanh ghi 8-STAGE SHIFT REGISTER sẽ
được sao chép sang thanh ghi 8-BIT STORAGE REGISTER. Lúc này nếu chân OE ở
mức thấp thì ngõ ra sẽ bằng với giá trị thanh ghi 8-BIT STORAGE REGISTER, còn nếu
chân OE ở mức cao thì ngõ ra ở trạng thái tổng trở cao (Hi-Z).
Lưu ý:
2.2.4
Khi dịch dữ liệu vào thanh ghi 8-STAGE SHIFT REGISTER, và chưa tạo xung STCP
thì thanh ghi 8-BIT STORAGE REGISTER sẽ giữ nguyên trạng thái và ngõ ra cũng
giữ nguyên trạng thái.
Khi chân MR ở mức 0 thì dữ liệu trên thanh ghi 8-STAGE SHIFT REGISTER sẽ bị
xóa, còn thanh ghi 8-BIT STORAGE REGISTER sẽ giữ nguyên trạng thái và ngõ ra
cũng giữ nguyên trạng thái.
Ghép nhiều IC thanht ghi dịch 74HC595
Để mở rộng nhiều ngỏ ra ta có thể ghép nối tiếp nhiều IC như sau:
2.2.5
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 15
Hình 6: cách ghép nối tiếp các IC74HC595
2.3 IC đệm dòng 74HC245
Là IC xuất nhập 2 chiều có thể dùng để mở rộng port cho các vi điều khiển có
ít I/O.
Ngỏ ra 3 trạng, thời gian trễ tín hiệu 8ns, dòng ngỏ ra 24 mA(low), 14
mA(high)
Sơ đồ chân :
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 16
Hình 7: sơ đồ chân ic 74HC245
Hoạt động:
Chân 19: tích cực mức thấp, cho phép IC hoạt động. Khi ở mức cao, tất cả các
chân của 2 bus A và B ở trạng thái cao trở hi-Z.
Chân 1: điều hướng xuất nhập I/O của 2 bus A và B:
+ Ở mức cao, vào A ra B.
+ Ở mức thấp, vào B ra A.
2.4 LED đơn
LED, viết tắt của Light-Emitting-Diode có nghĩa là “đi-ốt phát sáng”, là một
nguồn sáng phát sáng khi có dòng điện tác động lên nó. Được biết tới từ những
năm đầu của thế kỷ 20, công nghệ LED ngày càng phát triển, từ những diode phát
sáng đầu tiên với ánh sáng yếu và đơn sắc đến những nguồn phát sáng đa sắc,
công suất lớn hay phát ra các tia hồng ngoại hoặc tử ngoại.
Lựa chọn và định dạng chân LED
LED để làm khối LED 3D thường là loại led đục có khả năng phát ánh sáng với
góc càng rộng càng tốt(led 5mm hoặc 3mm).
Chân led dương thường dài hơn so với chân âm.
2.5 Các công cụ làm việc với AVR
CodeVisionAvr: đây là một chương trình hỗ trợ lập trình cho vi điều khiển AVR
bằng ngôn ngữ C, nó hỗ trợ nhiều thư viện lập trình. Ngoài ra còn có một số công cụ lập
trình khác dành cho AVR như là: avrstudio, wavrasm,winAvr hay avrgcc, ICCAVR ,
BascomAVR .v.v..
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 17
CHƯƠNG 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
3
SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
3.1 Sơ đồ khối
PORTA
Cấp nguồn cho khối led
Khối nguồn
Vi điều khiển
ATMEGA32
Khối tạo xung
PORTD
Khối mở rộng
port dùng IC
thanh ghi dịch
74HC595
Hình 8: sơ đồ khối tổng quát.
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Khối led 3D
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 18
3.2 Sơ đồ nguyên lý
VC C
Q 1
T IP 4 1 C
R 2
30
Q 2
T IP 4 1 C
R 3
30
R 4
30
U 10
7805
Q 4
T IP 4 1 C
1
2
3
1
2
3
C 3
100uF
1
2
3
4
5
6
7
8
30
VC C
VC C
U 12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
J10
2
1
J11
R 5
C 4
0.1u F
C 5
0 .1 u F
R 1
R
C 6
100uF
VC C
N G U O N 9V C C
C 7
C AP
C 1
22pF
C 2
Y 1
16M H Z
22pF
J12
3
2
1
P B 0 (XC K /T 0 )
P B 1 (T1 )
P B 2 (IN T 2 /A IN O )
P B 3 (O C 0 /A IN 1 )
P B 4 (S S )
P B 5 (M O S I)
P B 6 (M IS O )
P B 7 (S C K )
R ESET
VC C
G N D
XTA L2
XTA L1
P D 0 (R X D )
P D 1 (T X D )
P D 2 (IN T 0 )
P D 3 (IN T 1 )
P D 4 (O C 1 B )
P D 5 (O C 1 A )
P D 6 (IC P 1 )
ATMEGA32
4
3
3
3
3
3
3
3
3
3
3
2
2
2
2
2
2
2
2
2
(A D C 0 ) P A 0
(A D C 1 ) P A 1
(A D C 2 )P A 2
(A D C 3 ) P A 3
(A D C 4 ) P A 4
(A D C 5 ) P A 5
(A D C 6 ) P A 6
(A D C 7 ) P A 7
VR EF
G N D 1
AVC C
(T O S C 2 ) P C 7
(T O S C 1 ) P C 6
(T D I) P C 5
(T D O ) P C 4
(T M S ) P C 3
(T C K ) P C 2
(S D A ) P C 1
(S C L ) P C 0
(O C 2 ) P D 7
0
9
8
7
6
5
4
3
2
1
0
9
8
7
6
5
4
3
2
1
2
3
4
5
6
7
8
9
A
A
A
A
A
A
A
A
1
19
VC C
0
1
2
3
4
5
6
7
B
B
B
B
B
B
B
B
0
1
2
3
4
5
6
7
1
1
1
1
1
1
1
1
Q 5
T IP 4 1 C
8
7
6
5
4
3
2
1
30
Q 6
T IP 4 1 C
D IR
O E
C 8
10uF
R 6
R 7
30
74H C 245
Q 7
T IP 4 1 C
VC C
R 8
30
Q 8
T IP 4 1 C
SC K
SD A
STR
R 9
30
C O N 3
J13
C O N 3
J7
LAY O U T 7
J6
LAY O U T 6
J5
LAY O U T 5
J4
LAY O U T 4
J3
LAY O U T 3
J2
LA Y O U T 2
J1
LAY O U T 1
NGO RA NOI VAO CHAN AM CUA LED
Hình 9: sơ đồ nguyên lý mạch led cube.
Để điều khiển khối LED 3D cần có các khối điều khiển như sơ đồ nguyên lý trên, bao
gồm: khối nguồn, khối điều khiển chính, khối mở rộng port và tải là khối LED 3D 8x8x8.
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
SD A
SC K
14
SD I
SD O
11
12
J8
LA Y O U T 8
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 2
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
14
11
12
SR C LK
R C LK
SD I
SD O
G
C LR
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
7
6
5
4
3
2
1
15
U 3
74H C 595
8
7
6
5
4
3
2
1
9
13
10
14
11
12
SR C LK
R C LK
SD I
SD O
9
13
10
G
C LR
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 4
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
14
11
12
SR C LK
R C LK
SD I
SD O
9
13
10
G
C LR
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 5
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 6
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
14
11
12
SR C LK
R C LK
SD I
SD O
9
13
10
G
C LR
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 7
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
G
C LR
U 8
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
Q
Q
Q
Q
Q
Q
Q
Q
H
G
F
E
D
C
B
A
SR C LK
R C LK
13
10
ST R
1
2
3
VC C
U 1
74H C 595
C AP N G U O N D U O N G C H O KH O I LED
Q 3
T IP 4 2 C
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
3.2.1
trang 19
Khối nguồn
1
2
3
1
2
3
U 10
7805
VC C
J10
2
1
C 3
100uF
C 4
0 .1 u F
C 5
0 .1 u F
C 6
100uF
N G U O N 9VC C
Hình 10: sơ đồ mạch nguồn.
Đây là khối nguồn dùng để cung cấp cho toàn mạch. Sử dụng ic ổn áp 7805 để tạo nguồn
5v chuẩn và gắn thêm tụ ở ngỏ vào và ngỏ ra 7805 để tăng thêm sự ổn định. Đầu vào là
nguồn 9 Volt, 1Ampe, có thể dùng các bộ sạc adapter 1 chiều có sẵn để cấp nguồn, để tạo
sự gọn nhẹ và tính thẩm mỹ cho khối led.
Khối led 3D
LED 3D 8x8x8 là khối led bao gồm 8 hàng 8 cột và 8 lớp. Các chân dương của led được
nối chung lại với nhau thành 8 hàngtrên 1 lớp +8 lớp thành 8 mãng dương, 8 chân âm còn
lại (không nối chung)+ 8 lớp thành 64 chân âm được điều khiển bởi các ic thanh ghi dịch
ở khối mở rộng port.
3.2.2
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 20
Khối điều khiển
3.2.3
VC C
Q 1
TIP 4 1 C
R 2
30
Q 2
TIP 4 1 C
R 3
30
R 4
30
Q 4
TIP 4 1 C
J11
R 5
1
2
3
4
5
6
7
8
30
VC C
U 12
R 1
R
VC C
C 7
C AP
C 1
22pF
C 2
Y 1
16M H Z
22pF
J12
3
2
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
P B 0 (X C K /T 0 )
P B 1 (T 1 )
P B 2 (IN T 2 /A IN O )
P B 3 (O C 0 /A IN 1 )
P B 4 (S S )
P B 5 (M O S I)
P B 6 (M IS O )
P B 7 (S C K )
R ESET
VC C
G N D
XTA L2
XTA L1
P D 0 (R X D )
P D 1 (T X D )
P D 2 (I N T 0 )
P D 3 (I N T 1 )
P D 4 (O C 1 B )
P D 5 (O C 1 A )
P D 6 (I C P 1 )
ATMEGA32
(A D C 0 ) P A 0
(A D C 1 ) P A 1
(A D C 2 )P A 2
(A D C 3 ) P A 3
(A D C 4 ) P A 4
(A D C 5 ) P A 5
(A D C 6 ) P A 6
(A D C 7 ) P A 7
VR EF
G N D 1
AVC C
(T O S C 2 ) P C 7
(T O S C 1 ) P C 6
(T D I) P C 5
(T D O ) P C 4
(T M S ) P C 3
(T C K ) P C 2
(S D A ) P C 1
(S C L ) P C 0
(O C 2 ) P D 7
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
2
3
4
5
6
7
8
9
VC C
C 8
10uF
1
19
A
A
A
A
A
A
A
A
0
1
2
3
4
5
6
7
B
B
B
B
B
B
B
B
0
1
2
3
4
5
6
7
1
1
1
1
1
1
1
1
8
7
6
5
4
3
2
1
Q 5
TIP 4 1 C
30
Q 6
TIP 4 1 C
D IR
O E
74H C 245
R 6
C AP N G U O N D U O N G C H O KH O I LED
Q 3
TIP 4 2 C
R 7
30
Q 7
TIP 4 1 C
R 8
VC C
SC K
SD A
S TR
30
Q 8
TIP 4 1 C
R 9
30
C O N 3
Hình 11.sơ đồ mạch điều khiển khối led.
Khối xử lý trung tâm, sử dụng chip Atmega như đã sơ lược ở phần nghiên cứu lý thuyết
trên.Bộ tạo dao động cho chip sử dụng thạch anh 16MHz, và gắn thêm 2 tụ 22pF để tăng
sự ổn định khi dao động.
Điều khiển cấp nguồn cho khối led sử dụng PORT A của vi điều khiển. Điện áp ngỏ ra
của port vi điều khiển là 5volt, dòng ra khoảng từ 12mA đến 15mA(theo tài liệu
datasheet).
Để điều khiển được khối led được sáng rỏ thì yêu cầu phải cấp đủ dòng cho từng led
trong khối led, trong 1 mãng dương các led ghép song song nên để led sáng rỏ nhất thì
dòng qua mổi led là 10mA, mà 1 mãng dương thì có 64 con led được ghép song song nên
khi cho led sáng hết trên 1 mãng thì có 64 led sáng cùng lúc nên dòng tổng qua 1 mãng là
640mA.
Để đáp ứng được yêu cầu trên cần phải sử dụng transistor để đệm dòng. Transistor được
sử dụng ở đây là TIP41C, đây là loại trans được sử dụng nhiều trong các mạch quảng cáo
led với khả năng chịu dòng tới 6A.Như đã nói trên thì TIP41C thể chịu được dòng
640mA. Trong trường hợp này trans hoạt động ở chế độ tắt và dẫn bảo hòa, để trans dẫn
bảo hòa cần phải kích đủ dòng thì trans mới dẫn, cụ thể là dòng kích là khoảng 20mA.
Dòng ra của vi điều khiển không đủ để kích cho trans dẫn nên phải dùng đếm ic đệm
dòng 74HC245.
Tính toán trở hạng dòng cho từng led trong khối led:
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
Rhangdong =
Vcc − Vce(TIP 41) − V( LED )
I ( LED )
=
trang 21
5 − 1 . 5 − 3 .2
= 30(om)
10mA
Vled=3.2(volt): led sáng ở điện áp từ 2.5volt đến 3.5 volt, ở đây chọn 3.2 là
led sáng ổn định nhất.
Vce(TIP41)=1.5(volt): theo tài liệu datasheet.
Phần điều khiển cho ic thanh ghi dịch sử dụng 3 chân của PORT D là PD0, PD1,PD2.
Khối mở rộng port
3.2.4
J13
C O N 3
J7
LAY O U T 7
J6
LAY O U T 6
J5
LAY O U T 5
J4
LAY O U T 4
J3
LAY O U T 3
J2
LAY O U T 2
J1
LAY O U T 1
SD A
SC K
14
SD I
SD O
11
12
J8
LAY O U T 8
U 1
74H C 595
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 2
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 3
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 4
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 5
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 6
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
13
10
G
C LR
SR C LK
R C LK
H
G
F
E
D
C
B
A
Q
Q
Q
Q
Q
Q
Q
Q
U 7
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
11
12
14
SD I
SD O
9
G
C LR
U 8
74H C 595
8
7
6
5
4
3
2
1
7
6
5
4
3
2
1
15
Q
Q
Q
Q
Q
Q
Q
Q
H
G
F
E
D
C
B
A
SR C LK
R C LK
13
10
STR
1
2
3
VC C
NGO RA NOI VAO CHAN AM CUA LED
Hình 12.sơ đồ mạch ic thanh ghi dịch 74HC595.
Dùng 8 ic thanh ghi dịch 74HC595 ghép nối tiếp để điều khiển cấp mã cho 64 cột âm của
khối led. Vì cấp mã âm nên không cần quan tâm đến dòng áp ngỏ ra của ic.
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 22
3.3 Sơ đồ thi công
MODUL ATMEGA
MODUL74HC595
3.4 Thiết kế khối LED 3D
Led được sử dụng là led siêu sáng xanh dương, 5mm.
Cách bẻ chân led:
Chân dương bẻ nằm ngang so với LED.
Chân âm để thẳng.
Ghép các led theo hàng: khoảng cách giữa 2 led là 2.5cm. Suy ra, kích thước khối led là
20x20x20(cm).
Chân dương nối chung tạo thành 1 hàng dương.
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 23
Ghép hàng led ở trên lại với nhau, thành 1 lớp: gồm 8 hàng dương và 8 cột âm.
Dựng đứng 8 lớp như trên lại với nhau sẽ tạo nên khối LED 3D hoàn chỉnh.
3.5 Lưu đồ giải thuật
Để tạo được 1 hiệu ứng hiển thị trên khối LED cần phải quét nhiều trạng thái hiển thị của
hiệu ứng đó. Giả sử muốn hiện thị chữ A bên trong khối LED cần phải có mã của chữ A,
sau đó quét mã đó cho hiển thị trên 1 lớp. Ở đây mới hiện thị 2D ở 1 lớp, muốn hiển thị
3D thì phải quét 8 lớp với tần số cùng với tần số khi quét hàng.
Giải thuật quét mã của hiệu ứng:
Bắt đầu
Biến tạo trể j=0
Biến tạo trể j< số lần muốn hiển thị 1
trạng thái
Biến quét từng mã
i=0
Biến quét mã i
n là mã của 1 hiệu ứng(thường n=8)
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 24
Quét hàng
E
E
D
D
AA
B
B
C
C
Hàm quét cột
Delay(ms)
Tắt led(chống
lem)
Delay(ms)
Tăng biến quét
mã i
Tăng biến tạo
trể j
Kết thúc
3.6 Code chương trình
Sau đây là code của hiệu ứng “chữ chạy” và hiệu ứng “tam giác trượt”, còn các hiệu ứng
khác thì tương tự:
#include <mega32.h>
#define SCK PORTD.0
#define SDA PORTD.1
#define STR PORTD.2
#define LED PORTA
void delay(unsigned int t)
{
unsigned int y;
for(y=0;y
}
void XUATBYTE(unsigned char BYTE)
{
unsigned char Q,l;
Q=BYTE;
for(l=0;l<8;l++)
{
SDA=Q&0x80;
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED
Đồ án môn học 1 – LED CUBE 8X8X8 dùng vi điều khiển AVR
trang 25
SCK=0;
SCK=1;
Q=Q<<1;
}
}
void TRUYEN(unsigned char byte_1,unsigned char byte_2,unsigned char
byte_3,unsigned char byte_4,unsigned char byte_5,unsigned char byte_6,unsigned char
byte_7,unsigned char byte_8)
{
XUATBYTE(byte_1);
XUATBYTE(byte_2);
XUATBYTE(byte_3);
XUATBYTE(byte_4);
XUATBYTE(byte_5);
XUATBYTE(byte_6);
XUATBYTE(byte_7);
XUATBYTE(byte_8);
STR=0;
STR=1;
}
unsigned char hang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char i,j,k;
// hiệu ứng chữ chạy
unsigned char flash cotCHU[]={
0XFF,0XBF,0XBF,0XBF,0XBF,0XBF,0XBF,0X81,
// L
0XFF,0X83,0XBF,0XBF,0X87,0XBF,0XBF,0X83,
// E
0XFF,0X83,0XBD,0XBD,0XBD,0XBD,0XBD,0X83,
// D
0XFF,0XE3,0XDD,0XBF,0XBF,0XBF,0XDD,0XE3,
// C
0XFF,0XBD,0XBD,0XBD,0XBD,0XBD,0XBD,0XC3,
// U
0XFF,0X83,0XBD,0XBD,0X83,0XBD,0XBD,0X83,
// B
0XFF,0X83,0XBF,0XBF,0X87,0XBF,0XBF,0X83};
// E
void chuchay()
{
for(k=0;k<7;k++)
// chọn hàng trong mãng
{
for(j=0;j<5;j++)
// tạo trể
{
for(i=0;i<8;i++)
// quét từ bit 0 đến bit 7
{
LED=hang[i];
TRUYEN(0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,cotCHU[i+8*k],cotCHU[i
+8*k]);
Chương 3: SƠ ĐỒ MẠCH VÀ THIẾT KẾ KHỐI LED