Địa chỉ của mỗi điểm ảnh này được xác địnhđồng thời bởi mạch giải mã hàng và giải mã cột, điểm ảnh này sẽ được xác định trạng thái nhờ dữ liệu đưa ra từ bộ vi điều khiển AVR ATMEGA32.. V
Trang 1Contents
Trang 2LỜI NÓI ĐẦU
Ngày nay khi nhu cầu về thông tin quảng cáo rất lớn, việc áp dụng cácphương tiện kĩ thuật mới vào các lĩnh vực trên là rất cần thiết
Khi bạn đến các nơi công cộng,khu giải trí bạn dễ dàng bắt gặp những ápphích quảng cáo điện tử.các hệ thống đèn chiếu LED chạy theo các hướng khácnhau với nhiều hiệu ứng, hình ảnh và màu sắc rất ấn tượng
Từ yêu cầu của môn học kĩ thuật vi xử lý trong đo lường điều khiển và
thực tiễn như trên, chúng em quyết định chọn đề tài cho đồ án môn học là: Hiển
thị ma trận LED khối 8x8x8
Khi đề tài được mở rộng thì sẽ có khả năng ứng dụng thực tiễn rất lớn
Dưới đây em xin trình bày toàn bộ nội dung đồ án: “Hiển thị ma trận LED khối 8x8x8”.do cô Ths.LÊ THỊ VÂN ANH giảng viên Trường Đại Học Điện
Lực hướng dẫn
Nhờ sự chỉ bảo hướng dẫn tận tình của các thầy cô giáo bộ môn đặc biệt là
cô Lê Thị Vân Anh và sự cố gắng tìm hiểu thực tế, tham khảo các tài liệu liênquan mà nhóm em đã hoàn thành đồ án này.
Em xin chân thành cảm ơn! Nhóm sinh viên
Hoàng Đức Nhân
Vũ Thái Long
Đỗ Nhật Anh Nguyễn Duy
Trang 3CHƯƠNG 1 TỔNG QUAN VỀ LÝ THUYẾT
Dựa trên nguyên tắc như quét màn hình, ta có thể thực hiện việc hiển thị
ma trận đèn bằng cách quét theo hàng và quét theo cột Mỗi Led trên ma trậnLED có thể coi như một điểm ảnh Địa chỉ của mỗi điểm ảnh này được xác địnhđồng thời bởi mạch giải mã hàng và giải mã cột, điểm ảnh này sẽ được xác định
trạng thái nhờ dữ liệu đưa ra từ bộ vi điều khiển AVR ATMEGA32.
Như vậy tại mỗi thời điểm chỉ có trạng thái của một điểm ảnh được xácđịnh Tuy nhiên khi xác định địa chỉ và trạng thái của điểm ảnh tiếp theo thì cácđiểm ảnh còn lại sẽ chuyển về trạng thái tắt (nếu LED đang sáng thì sẽ tắt dần)
Vì thế để hiển thị được toàn bộ hình ảnh của ma trận đèn, ta có thể quét ma trậnnhiều lần với tốc độ quét rất lớn, lớn hơn nhiều lần thời gian kip tắt của đèn Mắtngười chỉ nhận biết được tối đa 24 hình /s do đó nếu tốc độ quét rất lớn thì sẽkhông nhận ra được sự thay đổi nhỏ của đèn mà sẽ thấy được toàn bộ hình ảnhcần hiển thị
Sơ đồ khối:
Data
Khối LED 8x8x8 gồm 8 tầng ma trận LED,mỗi tầng gồm 64 LED đượcchia thành 8 hàng ngang và 8 hàng dọc 64 LED trong 1 tầng được nối chungchân âm catot và 8 tầng được nối chung anot tạo thành 64 cột
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 đồngthờ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 đất, LED sẽ tắt khi không có điện áp đưa vào chândương
Ma trận đèn LED
Giải mã cột
Giải mã hàng
Trang 42.1 THIẾT KẾ MẠCH LỰC
Đồ án gồm hai mạch lực :
- Mạch thứ nhất tạo điện áp +5V cấp nguồn cho VĐK AT Mega32
- Mạch thứ hai tạo điện áp +5V cấp nguồn cho 8 IC 74HC59; IC ULN2803 và
Trang 52.2 THIẾT KẾ MẠCH ĐIỀU KHIỂN
2.2.1 Vi điều khiển ATMEGA32.
Atmega32 là vi điều khiển thuộc họ AVR của hãng Atmel,có 40 chân trong
đó có 32 chân I/O,có 4 kênh điều xung PWM,sử dụng thạch anh ngoài 12MHz
Nhân AVR kết hợp tập lệnh đầy đủ với 32 thanh ghi đa năng Tất cả các thanh ghi liên kết trực tiếp với khối xử lý số học và logic (ALU) cho phép 2 thanh ghi độc lập được truy cập trong một lệnh đơn trong 1 chu kỳ đồng hồ
Kết quả là tốc độ nhanh gấp 10 lần các bộ vi điều khiển CISC thường.
Dưới đây là hình vẽ sơ đồ chân của VĐK At mega32:
Hình 3.1 :Sơ đồ chân Atmega32
At mega32 gồm có 4 port :port A,port B,port C và port D
Port A gồm 8 chân từ PA0 đến PA7:là cổng vào tương tự cho chuyển đổitương tự sang số.Nó cũng là cổng vào/ra hai hướng 8 bít trong trường hợpkhông sử sụng làm cổng chuyển đổi tương tự,có điện trở nối lên nguồn dươngbên trong.Port A cung cấp đường địa chỉ dữ liệu vao/ra theo kiểu hợp kênh khidùng bộ nhớ bên ngoài
Port B gồm 8 chân từ PB0 đến PB7:là cổng vào/ra hai hướng 8 bít,có điệntrở nối lên nguồn dương bên trong.Port B cung cấp các chức năng ứng với cáctính năng đặc biệt của Atmega32
Port C gồm các chân từ PC0 đến PC7:là cổng vào/ra hai hướng 8 bit,có điệntrở nối lên nguồn dương bên trong,Port C cung cấp các địa chỉ lối ra khi sửdụng bộ nhớ bên ngoài và đồng thời cung cấp ứng với các tính năng đặc biệtcủa Atmega32
Port D gồm các chân từ PD0 đến PD7:là cổng vào/ra hai hướng 8 bít,cóđiện trở nối lên nguồn dương bên trong Port D cung cấp các chức năng ứngvới các tính năng đặc biệt của Atmega32
Trang 6 Chân nguồn Vcc (chân số 10 và chân số 30):điện áp nguồn nuôi củaAtmega32 từ 4.5v đến 5.5v.
Chân Reset (chân số 9):lối vào đặt lại
Chân GND (chân số 11 và chân 31):chân nối mas
Chân XTAL1,XTAL2 là hai chân nối thạch anh ngoài (chân số 12
và chân số 13).Atmega32 sử dụng thạch anh ngoài là 12MHz
Chân ICP(chân số 20):là chân vào cho chức năng bắt tín hiệu cho
• 32 đường I/O đa năng
• 32 thanh ghi đa năng
• JTAG interface
• On-chip Debug and Program
• 3 bộ định thời phức hợp với chế độ so sánh
• Ngắt ngoài và trong
• Bộ truyền nhận nối tiếp USART lập trình được
• Bộ giao tiếp nối tiếp định hướng 2 dây
• 8 kênh, 10bit ADC với ngưỡng vào lựa chọn khác nhau độ lợilập trình được
• Bộ WatchDog Timer khả trình với dao động nội
• Port SPI nối tiếp
Trang 7Hình 3.2: Sơ đồ cấu trúc bên trong của Atmega32.
Trang 8 ATmega32 có các chế độ tiết kiệm năng lượng như sau:
Chế độ nghỉ (Idle) CPU trong khi cho phép bộ truyền tin nối tiếp đồng
bộ USART, giao tiếp 2 dây, chuyển đổi A/D, SRAM, bộ đếm bộ định thời,cổng SPI và hệ thống các ngắt vẫn hoạt động
Chế độ Power-down lưu giữ nội dung của các thanh ghi nhưng làmđông lạnh bộ tạo dao động, thoát khỏi các chức năng của chip cho đến khi
có ngắt ngoài hoặc là reset phần cứng
Chế độ Power-save đồng hồ đồng bộ tiếp tục chạy cho phép chươngtrình sử dụng giữ được đồng bộ thời gian nhưng các thiết bị còn lại là ngủ
Chế độ ADC Noise Reduction dừng CPU và tất cả các thiết bị còn lạingoại trừ đồng hồ đồng bộ và ADC, tối thiểu hoá switching noise trong khiADC đang hoạt động
Chế độ standby, bộ tạo dao động (thuỷ tinh thể/bộ cộng hưởng) chạytrong khi các thiết bị còn lại ngủ Các điều này cho phép bộ vi điều khiểnkhởi động rất nhanh trong chế độ tiêu thụ công suất thấp
Thiết bị được sản xuất sử dụng công nghệ bộ nhớ cố định mật độ cao củaAtmel Bộ nhớ On-chip ISP Flash cho phép lập trình lại vào hệ thống quagiao diện SPI bởi bộ lập trình bộ nhớ cố định truyền thống hoặc bởi chươngtrình On-chip Boot chạy trên nhân AVR Chương trình boot có thể sử dụngbất cứ giao điện nào để download chương trình ứng dụng trong bộ nhớ Flashứng dụng Phần mềm trong vùng Boot Flash sẽ tiếp tục chạy trong khi vùngApplication Flash được cập nhật, cung cấp thao tác Read-While-Write thực
sự Bằng việc kết hợp 1 bộ 8-bit RISC CPU với In-System Programmable Flash trong chỉ nguyên vẹn 1 chip ATmega32 là một bộ viđiều khiển mạnh có thể cung cấp giải pháp có tính linh động cao, giá thành rẻcho nhiều ứng dụng điều khiển nhúng
Self-2.2.2 ULN2803
ULN2803 là IC đệm đảo có 16 chân trong đó có 8 ngõ vào và 8 ngõ ra,
Trang 9
Bộ đệm đảo dùng IC ULN2803 nhằm đảo bít nếu ngõ vào ở mức cao qua
2803 ra sẽ là mức thấp ULN2803 chịu đựng mức điện áp từ 6V-15V
Trang 11ra và chỉ được xuất ra khi ta tác động vào chân LATCH CLOCK Có thể xuất dữliệu bất cứ lúc nào không phải cần chuẩn bị đến bit cuối cùng.
2.2.4 Mạch nguyên lý
Trang 14TT Tên thiết bị Số lượng
Trang 152.3 THIẾT KẾ MẠCH IN
2.3.1 Bố trí linh kiện
Trang 162.3.2 Mạch in
Trang 17CHƯƠNG 3 THIẾT KẾ PHẦN MỀM
Sử dụng trình biên dich Codevision để soạn thảo chương trình
#include <mega32.h>
#include <delay.h>
#define DATA PORTC.0
#define chot PORTC.1
#define xung PORTC.2
#define mat PORTA
unsigned char temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8,;
unsigned int i,j;//k,c;
temp=temp&0x80;//lay ra bit dau tien (bit 7)
if(temp==0x80)//so sanh bit
else
x*=2; //dich bit lay bit trong so thap
Trang 19temp1=0x10;temp2=0x10;temp3=0x10;temp4=0x10;temp5=0x10;temp6=0x10;temp7=0x10;temp8=0x10;xuat();delay_ms(ms);
temp1=0x20;temp2=0x20;temp3=0x20;temp4=0x20;temp5=0x20;temp6=0x20;temp7=0x20;temp8=0x20;xuat();delay_ms(ms);
temp1=0x40;temp2=0x40;temp3=0x40;temp4=0x40;temp5=0x40;temp6=0x40;temp7=0x40;temp8=0x40;xuat();delay_ms(ms);
temp1=0x80;temp2=0x80;temp3=0x80;temp4=0x80;temp5=0x80;temp6=0x80;temp7=0x80;temp8=0x80;xuat();delay_ms(ms);
temp1=0x40;temp2=0x40;temp3=0x40;temp4=0x40;temp5=0x40;temp6=0x40;temp7=0x40;temp8=0x40;xuat();delay_ms(ms);
temp1=0x20;temp2=0x20;temp3=0x20;temp4=0x20;temp5=0x20;temp6=0x20;temp7=0x20;temp8=0x20;xuat();delay_ms(ms);
temp1=0x10;temp2=0x10;temp3=0x10;temp4=0x10;temp5=0x10;temp6=0x10;temp7=0x10;temp8=0x10;xuat();delay_ms(ms);
temp1=0x08;temp2=0x08;temp3=0x08;temp4=0x08;temp5=0x08;temp6=0x08;temp7=0x08;temp8=0x08;xuat();delay_ms(ms);
temp1=0x04;temp2=0x04;temp3=0x04;temp4=0x04;temp5=0x04;temp6=0x04;temp7=0x04;temp8=0x04;xuat();delay_ms(ms);
temp1=0x02;temp2=0x02;temp3=0x02;temp4=0x02;temp5=0x02;temp6=0x02;temp7=0x02;temp8=0x02;xuat();delay_ms(ms);mat=0x00;
Trang 20temp1=0x00;temp2=0xff;temp3=0x00;temp4=0x00,temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x00;xuat();delay_ms(ms);
temp1=0x00;temp2=0x00;temp3=0xff;temp4=0x00,temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x00;xuat();delay_ms(ms);
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0xff,temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x00;xuat();delay_ms(ms);
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0xff;temp6=0x00;temp7=0x00;temp8=0x00;xuat();delay_ms(ms);
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0xff;temp7=0x00;temp8=0x00;xuat();delay_ms(ms);
temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0xff;temp8=0x00;xuat();delay_ms(ms);mat=0x00;
Trang 22temp1=0x00;temp2=0x41;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x41;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x00;temp2=0x41;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x41;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x00;temp2=0x41;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x41;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x00;temp2=0x41;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x41;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0x7f;temp3=0x41;temp4=0x41;temp5=0x41;temp6=0x41;temp7=0x41;temp8=0x7f;xuat();L7=1;delay_ms(1);L7=0;
Trang 23temp1=0x00;temp2=0x82;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x00;temp7=0x00;temp8=0x82;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x00;temp2=0xfe;temp3=0x82;temp4=0x82;temp5=0x82;temp6=0x82;temp7=0x82;temp8=0xfe;xuat();L7=1;delay_ms(1);L7=0;
Trang 24//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L3=1;delay(1);L3=0;
temp1=0x80;temp2=0x80;temp3=0x80;temp4=0x80;temp5=0x80;temp6=0x80;temp7=0x80;temp8=0x80;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x41;temp2=0x41;temp3=0x41;temp4=0x41;temp5=0x41;temp6=0x41;temp7=0x41;temp8=0x41;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x22;temp2=0x22;temp3=0x22;temp4=0x22;temp5=0x22;temp6=0x22;temp7=0x22;temp8=0x22;xuat();L6=1;delay_ms(1);L6=0;
Trang 25temp1=0x08;temp2=0x08;temp3=0x08;temp4=0x08;temp5=0x08;temp6=0x08;temp7=0x08;temp8=0x08;xuat();L8=1;delay_ms(1);L8=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L2=1;delay(1);L2=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L3=1;delay(1);L3=0;
temp1=0x01;temp2=0x01;temp3=0x01;temp4=0x01;temp5=0x01;temp6=0x01;temp7=0x01;temp8=0x01;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x82;temp2=0x82;temp3=0x82;temp4=0x82;temp5=0x82;temp6=0x82;temp7=0x82;temp8=0x82;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x44;temp2=0x44;temp3=0x44;temp4=0x44;temp5=0x44;temp6=0x44;temp7=0x44;temp8=0x44;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x28;temp2=0x28;temp3=0x28;temp4=0x28;temp5=0x28;temp6=0x28;temp7=0x28;temp8=0x28;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x10;temp2=0x10;temp3=0x10;temp4=0x10;temp5=0x10;temp6=0x10;temp7=0x10;temp8=0x10;xuat();L8=1;delay_ms(1);L8=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L2=1;delay(1);L2=0;
temp1=0x01;temp2=0x01;temp3=0x01;temp4=0x01;temp5=0x01;temp6=0x01;temp7=0x01;temp8=0x01;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x02;temp2=0x02;temp3=0x02;temp4=0x02;temp5=0x02;temp6=0x02;temp7=0x02;temp8=0x02;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x04;temp2=0x04;temp3=0x04;temp4=0x04;temp5=0x04;temp6=0x04;temp7=0x04;temp8=0x04;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x88;temp2=0x88;temp3=0x88;temp4=0x88;temp5=0x88;temp6=0x88;temp7=0x88;temp8=0x88;xuat();L6=1;delay_ms(1);L6=0;
temp1=0x50;temp2=0x50;temp3=0x50;temp4=0x50;temp5=0x50;temp6=0x50;temp7=0x50;temp8=0x50;xuat();L7=1;delay_ms(1);L7=0;
Trang 26temp1=0x01;temp2=0x01;temp3=0x01;temp4=0x01;temp5=0x01;temp6=0x01;temp7=0x01;temp8=0x01;xuat();L2=1;delay_ms(1);L2=0;
temp1=0x02;temp2=0x02;temp3=0x02;temp4=0x02;temp5=0x02;temp6=0x02;temp7=0x02;temp8=0x02;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x04;temp2=0x04;temp3=0x04;temp4=0x04;temp5=0x04;temp6=0x04;temp7=0x04;temp8=0x04;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x08;temp2=0x08;temp3=0x08;temp4=0x08;temp5=0x08;temp6=0x08;temp7=0x08;temp8=0x08;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x10;temp2=0x10;temp3=0x10;temp4=0x10;temp5=0x10;temp6=0x10;temp7=0x10;temp8=0x10;xuat();L6=1;delay_ms(1);L6=0;
temp1=0xa0;temp2=0xa0;temp3=0xa0;temp4=0xa0;temp5=0xa0;temp6=0xa0;temp7=0xa0;temp8=0xa0;xuat();L7=1;delay_ms(1);L7=0;
temp1=0x40;temp2=0x40;temp3=0x40;temp4=0x40;temp5=0x40;temp6=0x40;temp7=0x40;temp8=0x40;xuat();L8=1;delay_ms(1);L8=0;
Trang 27//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L8=1;delay(1);L8=0;
}
//FAMER 8
for(j=0;j<(ms+1);j++)
Trang 28temp1=0x14;temp2=0x14;temp3=0x14;temp4=0x14;temp5=0x14;temp6=0x14;temp7=0x14;temp8=0x14;xuat();L2=1;delay_ms(1);L2=0;
temp1=0x22;temp2=0x22;temp3=0x22;temp4=0x22;temp5=0x22;temp6=0x22;temp7=0x22;temp8=0x22;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x48;temp2=0x48;temp3=0x48;temp4=0x48;temp5=0x48;temp6=0x48;temp7=0x48;temp8=0x48;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x80;temp2=0x80;temp3=0x80;temp4=0x80;temp5=0x80;temp6=0x80;temp7=0x80;temp8=0x80;xuat();L5=1;delay_ms(1);L5=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L6=1;delay(1);L6=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L7=1;delay(1);L7=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L8=1;delay(1);L8=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L7=1;delay(1);L7=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L8=1;delay(1);L8=0;
Trang 29temp1=0x88;temp2=0x88;temp3=0x88;temp4=0x88;temp5=0x88;temp6=0x88;temp7=0x88;temp8=0x88;xuat();L3=1;delay_ms(1);L3=0;
temp1=0x04;temp2=0x04;temp3=0x04;temp4=0x04;temp5=0x04;temp6=0x04;temp7=0x04;temp8=0x04;xuat();L4=1;delay_ms(1);L4=0;
temp1=0x02;temp2=0x02;temp3=0x02;temp4=0x02;temp5=0x02;temp6=0x02;temp7=0x02;temp8=0x02;xuat();L5=1;delay_ms(1);L5=0;
temp1=0x01;temp2=0x01;temp3=0x01;temp4=0x01;temp5=0x01;temp6=0x01;temp7=0x01;temp8=0x01;xuat();L6=1;delay_ms(1);L6=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L7=1;delay(1);L7=0;
//temp1=0x00;temp2=0x00;temp3=0x00;temp4=0x00;temp5=0x00;temp6=0x0 0;temp7=0x00;temp8=0x00;xuat();L8=1;delay(1);L8=0;