đồ án môn học 1 led cube 8x8x8 sử dụng vi điều khiển atmega32, IC thanh ghi dịch 74HC595 mở rộng port. code lập trình với nhiều hiệu ứng khác nhau và khá phức tạp. Đượ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.
Trang 1KHOA Đ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
Trang 2MỤC LỤC
Trang 3LỜI NÓI ĐẦUNgà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
Trang 4CHƯƠ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
Trang 5CHƯƠ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
Trang 6hó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
- 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ể
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
Trang 82.1.2.1 Kiến trúc bên trong vi điều khiển Atmega32
Trang 10Hì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)
Trang 11Bit 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.
Bảng 1:các chế độ sleep của AVR
Trang 12Thanh 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
Trang 132.2.1 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
Trang 142.2.3 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.4 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 ý:
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
2.2.5 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:
Trang 15Hình 6: cách ghép nối tiếp các IC74HC595
Trang 16Lự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
Trang 17CHƯƠ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
Hình 8: sơ đồ khối tổng quát.
Cấp nguồn cho khối led Khối nguồn
PORTA
Vi điều khiển ATMEGA32
PORTD
Khối mở rộng port dùng IC thanh ghi dịch 74HC595
Khối led 3DKhối tạo xung