Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi và thâm nhập ngày càng nhiều trong lĩnh vực kĩ thuật và đời sống xã hội. Hầu hết các thiết bị từ đơn giản đến phức tạp như thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình đều có dùng các thiết bị vi điều khiển.
Qua đó, để có thể thấy rõ được ứng dụng của vi điều khiển, nhóm em xin được trình bày về chủ đề : Dùng vi điều khiển 8051 để điều khiển led matrix 5x7 hiển thị từ 0-9 và từ A-L. Sau khi xem qua bài báo cáo này, bạn đọc có thể cũng cố lại kiến thức và có thể dựa trên ý tưởng của nhóm để nguyên cứu sáng tạo, tự lập trình, thiết kế cho những bài toán phức tạp hơn để ứng dụng vào mục đích của mình.
11 trang |
Chia sẻ: ngtr9097 | Lượt xem: 5698 | Lượt tải: 5
Bạn đang xem nội dung tài liệu Báo cáo bài tập lớn Dùng vi điều khiển 8051 để điều khiển led matrix hiển thị từ 0-9 và từ A-L, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
KHOA CÔNG NGHỆ THÔNG TIN
ĐIỆN TỬ VIỄN THÔNG
BÀI TẬP LỚN:
Dùng vi điều khiển 8051 để điều khiển led matrix hiển thị từ 0-9 và từ A-L.
DANH SÁCH THÀNH VIÊN THAM GIA:
1.Trần Long Vân
2.Nguyễn trí Quyết
3.Lê Công Hữu
4.Lê Tiến Đạt
5.Nguyễn Thị Thoa
6.Đỗ Thế Hiển
7.Lê Đức Minh
MỞ ĐẦU
Ngày nay, các bộ vi điều khiển đang có ứng dụng ngày càng rộng rãi và thâm nhập ngày càng nhiều trong lĩnh vực kĩ thuật và đời sống xã hội. Hầu hết các thiết bị từ đơn giản đến phức tạp như thiết bị điều khiển tự động, thiết bị văn phòng cho đến các thiết bị trong gia đình đều có dùng các thiết bị vi điều khiển.
Qua đó, để có thể thấy rõ được ứng dụng của vi điều khiển, nhóm em xin được trình bày về chủ đề : Dùng vi điều khiển 8051 để điều khiển led matrix 5x7 hiển thị từ 0-9 và từ A-L. Sau khi xem qua bài báo cáo này, bạn đọc có thể cũng cố lại kiến thức và có thể dựa trên ý tưởng của nhóm để nguyên cứu sáng tạo, tự lập trình, thiết kế cho những bài toán phức tạp hơn để ứng dụng vào mục đích của mình.
Nhân dịp này, nhóm em xin bày tỏ lời cảm ơn chân thành nhất đến những người đã có hướng dẫn chỉ bảo cho chúng em trong quá trình hoàn thành bài tập.
Thái Nguyên, ngày 30 tháng 5 năm 2010
Tập thể nhóm.
I.SƠ LƯỢC VỀ 8051
Phần 1: Giới thiệu chung:
AT8951 là phiên bản 8051 có ROM trên chip là bộ nhớ Flash. Phiên bản này rất thích hợp cho các ứng dụng nhanh vì bộ nhớ Flash có thể được xóa trong vài giây. Dĩ nhiên là để dùng AT8951 cần phải có thiết bị lập trình PROM hổ trợ bộ nhớ Flash nhưng không cần đến thiết bị xóa ROM vì bộ nhớ Flash được xóa bằng thiết bị lập trình PROM. Phần 2: Sơ đồ giải thuật: Mô tả chân của 8051: Mặc dù các thành viên của họ 8051 đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP, dạng vỏ dẹp vuông QFP, và dạng chíp không có chân đỡ LLC thì chúng đều có 40 chân cho các chức năng khác nhau như vào, ra I/O, đọc RD, ghi WR,địa chỉ, dữ liệu và ngắt. Cần phải lưu ý rằng một số hãng cung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho các ứng dụng yêu cầu thấp hơn. Tuy nhiên vì hầu hết các nhà phát triển chính sử dụng chíp đóng vỏ 40 chân với 2 hàng chân DIP nên ta chỉ tập trung mô tả phiên bản này.
1. Giới thiệu IC 8051: 1.1Giới thiệu họ MSC-51:
MCS-51 là họ IC vi điều khiển do hãng Intel sản xuất. Các IC tiêu biểu cho họ là 8051 và 8031. Các sản phẩm MSC-51 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệu nhanh trên RAM nội. AT89C51 cung cấp những đặc tính chuẩn như sau : 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit, vecto ngắt có cấu trúc 2 mức ngắt, 1 mạch dao động tạo xung Clock và dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiện công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngát tiếp tục hoạt động. Chế độ giảm công suất sẽ lưu nội dung RAM những sẽ treo bộ dao động làm khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống.
1.2 Sơ đồ khối của AT89C51 : 1. 3 Sơ đồ chân của AT89C511.4 : Chức năng các chân của AT89C51 - 89C51 có tất cả 40 chân có chức năng như các đường xuất nhập. trong đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi dường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ. Các port: a.Port 0: - Port 0 là port có hai chức năng ở các chân 32-39 của 89C51. trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng, nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu. b.Port 1: - Port 1 là port IO trên các chân 1-8. các chân được kí hiệu p1.0, p1.1, p1.2, có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài. c.Port 2: - Port 2 là 1 port có tác dụng kép trên các chân 21-28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng. d.Port 3: -Port 3 là port có tác dụng kép trên các chân 10-17. các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính dặt biệt của 89C51như ở bản sau:
* Các ngõ tín hiệu điều khiển:Ngõ tín hiệu PSEN: - PSEN là tín hiêu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đén chân OE của Eprom cho phép đọc các byte mở rộng . - PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt từ thanh ghi lệnh bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1.Ngõ tín hiệu điều khiển ALE(Address latch Enable): - Khi 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt. - Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động. - Bộ dao động được tích hợp bên trong 89C51, khi sử dụng 89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho 89C51 là 12Mhz. - Chân 40 (vcc)được nối lên nguồn.các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chíp và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 89C51.Ngõ tín hiệu EA\(External Access): - Tín hiệu vào EA\ ở chân 31 thường được mất lên mức 1 hoặc mức 0. nếu ở mức 1, 89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8KB. Nếu ở mức 0, 89c51 sẽ thi hành chương trình từ bộ nhớ mở rộng. chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89c51.Ngõ tín hiệu RST (Reset): - Ngõ vào RST ở chân 9 là ngõ vào reset của 89C51. khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống. khi cấp điện mạch tự động Reset. II.Các linh kiện sử dụng trong mạch:
- AT89S52
- Thạch Anh 12MHz
- Tụ gốm 33pF
- Tụ hóa 10μF
- Trở 220 Ω
- 74LS244
- Led matrix 5x7
Hình ảnh và chức năng của các linh kiện:
1.AT89S52
Là vi điều khiển chính của mạch.
2.Thạch anh 12 MHz
Chức năng: Là nguồn tạo xung nhịp dao động clock ổn định (12 MHz) cho dao động của 8051. Thạch anh sẽ được gắn vào chân XTAL1 và XTAL2 (Chân số 18 và 19 )
của 8051
3.Tụ gốm 33pF
Chức năng:
Lọc nhiễu cho dao động Thạch Anh .2 tụ gốm 33pF sẽ được nối một đầu với chân của thạch anh, đầu còn lại đấu ra Mass.
4.Tụ hóa 10μF
Chức năng: Tụ hóa 10μF được gắn đầu âm vào chân reset, đầu dương lên nguồn. Khi cấp điện cho mạch, tụ sẽ phóng điện khiến chân reset bật lên mức cao, khi đó toàn bộ hệ thống sẽ được nạp lại từ đầu. Khi đang vận hành thì tụ hóa ngăn dòng đi vào chân reset.
5. Điện trở :
Có tác dụng hạn chế dòng điện
6. 74LS244: Làm bộ đệm 2 chiều
7.Matrix LED 5x7:
Hình dạng thực tế :
Cấu tạo của LED 7 x 5:
Nhìn trên hình chúng ta có thể thấy được ma trận này gồm 5 cột và 7 hàng. Các hàng được nối với nhau và các cột được nối với nhau. Tại mỗi điểm giao giữa các hàng và các cột có gắn vào đó 1 con Diode phát quang. Nên do đó phải đưa tín hiệu vào hàng ở mức 1 và cột ở mức 0 thì LED mới sáng được.
Ví dụ : Muốn cho con LED D12 sáng thì như vậy tôi phải đưa tín hiệu mức 1 vào hàng 5 và mức 0 vào cột 2. Như vậy LED đó mới sáng được
• Sơ đồ nguyên lý của mạch:
Dưới đây là hình ảnh sau khi mạch hoàn thành :
.Nguyên lý quét ma trận:
+ Ở trong bài này thì nguyên lý quét của nó khá là đơn giản. Dựa vào hiện tượng lưu ảnh trên võng mạc và con người chỉ nhìn được 24h/s.Tại mỗi thời điểm chỉ có 1 điểm sáng Do quét với tần số nhanh nên con nguời sẽ cảm nhận được các LED được quét đồng thời.Trong bài này tôi quét cột và đưa các dữ liệu hiện thị ra các hàng. + Tại thời điểm thứ nhất ta chỉ cho cột 1 ở mức 1 và tính các dữ ở liệu của hàng mức 0 . Sau đó phải tắt tất cả các hàng và các cột đó đi ==> LED trở về không sáng LED nào cả + Tại thời điểm thứ 2 ta cho cột 2 ở mức 1 và dữ liệu sáng các điểm LED ở hàng ( Tính ở mức 0) của cột này.Như vậy khi cột 2 ở mức 1 thì các điểm LED cấu tạo lên chữ hoặc số sẽ được tính trên hàng ( Đây chỉ là 1/5 của chữ hoặc số thôi) Sau đó tắt tất cả các hàng và các cột đi. + Tại thời điểm thứ 3,4,5 cũng tương tự như kiểu 1 và 2.Như vậy tại mỗi thời điểm tôi chỉ cho sáng 1 phần của chữ và của số thôi (1/5) . Có 5 thời điểm tôi sẽ ghép nó lại thành một chữ hoặc 1 số. Các thời điểm này được quét nhanh nên ta sẽ nhìn thấy được rằng tất cả các LED đó được sáng đồng thời
MÃ CHƯƠNG TRÌNH:
#include
unsigned char m,n,lap;
void delay(unsigned int x)
{
while(x--){}
}
unsigned char quetcot[5]={0x01,0x02,0x04,0x08,0x10};
unsigned char codeled[21][5]={{0xc1,0xbe,0xbe,0xbe,0xc1}, // so 0
{0xfb,0xfd,0x80,0xff,0xff}, // so 1
{0x9d,0xae,0xb6,0xb8,0xff}, // so 2
{0xff,0xbe,0xb6,0xb6,0xc9}, // so 3
{0xf7,0xf3,0xf5,0xf6,0x80}, //so 4
{0xff,0xb8,0xba,0xba,0xc7}, //so 5
{0xc1,0xb6,0xb6,0xb6,0xcf}, //so 6
{0xbe,0xde,0xee,0xf6,0xf8}, //so 7
{0xc9,0xb6,0xb6,0xb6,0xc9}, // so 8
{0xf9,0xb6,0xb6,0xb6,0xc1}, //so 9
{0x83,0xf5,0xf6,0xf5,0x83}, // A
{0x81,0xb6,0xb6,0xb6,0xc9}, // B
{0xc1,0xbe,0xbe,0xbe,0xdd}, // C
{0x80,0xbe,0xbe,0xbe,0xc1}, //D
{0x80,0xb6,0xb6,0xb6,0xff}, // E
{0x80,0xf6,0xf6,0xf6,0xff}, // F
{0xc1,0xbe,0xae,0xae,0xcd}, // G
{0x80,0xf7,0xf7,0xf7,0x80}, //H
{0xbe,0xbe,0x80,0xbe,0xbe}, //I
{0x80,0xf3,0xfd,0xde,0xbf}, // K
{0x80,0xbf,0xbf,0xbf,0xff}}; //L
void dislay()
{
for(m=0;m<21;m++)
{
for(lap=0;lap<250;lap++)
{
for(n=0;n<5;n++)
{
P2=quetcot[n];
P1=codeled[m][n];
delay(10);
P1=0xff; // Tat tat ca cac hang
P2=0x00; // tat tat ca cac cot
}
}
delay(65535);
delay(65535);
}
}
void main()
{
while(1)
{
dislay();
}
}
//end
II .KẾT LUẬN:
Sau khi làm xong bài tập lớn này chúng em đã thấy rõ hơn những gì thầy giáo dậy là gắn liền với thực tiễn, học đi đôi với hành. Thầy giáo là định hướng để chúng em tự tìm tòi sáng tạo giúp chúng em có sự chủ động trong học tập, tạo cho chúng em có thêm kĩ năng về vấn đề thực hành. Chúng em thấy rằng môn học này thật bổ ích và là thiết thực
Qua đó , chúng ta cũng hiểu thêm về nguyên lý hoạt động của vi điều khiển 8051 cũng như tầm quan trọng của nó và các linh kiện đi kèm trong mạch trên.
Bài toán này là tiền đề để chúng em đi giải quyết những bài phức tạp hơn.
………………..**** END *****………………
Các file đính kèm theo tài liệu này:
- Bài báo cáo Bài tập lớn môn kĩ thuật LT nhúng.doc
- Bài báo cáo nhúng Bài tập lớn KT LT Nhúng.ppt