Trong khuôn khổ của đề tài, trên cơ sở những kiếnthức đã được học trong môn học, chúng em đã thiết kế một mạch điện tử với tên đề tài đầy đủ là: Mô phỏng mạch led ma trận trên phần mềm P
Trang 1Lời nói đầu
Trong sự phát triển của kỹ thuật điện tử ngày nay, kỹ thuật số đang dầnchiếm ưu thế về số lượng các ứng dụng của nó trên nhiều thiết bị điện tử từdân dụng cho đến chuyên động, trong nhiều lĩnh vực như đo lường, điềukhiển, v v… nhờ vào nhiều ưu điểm của nó Có thể nói, nền tảng của kỹ thuật
số là các mạch logic sè dựa trên sự kết hợp của các cổng logic cơ bản mà ngàynay đã được tích hợp trong các IC sè Các mạch logic sè sử dụng ma trận LED
để hiển thị thông tin nhằm mục đích thông báo, quảng cáo, … tại các nơi côngcộng đã được sử dụng rất rộng rãi
Việc thiết kế hoàn thiện một mạch quảng cáo cần nhiều công sức cũngnhư kiến thức nhất định Trong khuôn khổ của đề tài, trên cơ sở những kiếnthức đã được học trong môn học, chúng em đã thiết kế một mạch điện tử với
tên đề tài đầy đủ là: Mô phỏng mạch led ma trận trên phần mềm Proteus Mục đích của đề tài là tìm hiểu thêm về lĩnh vực kỹ thuật số, nâng
cao kiến thức của mình
Do kiến thức còn hạn hẹp và thời gian thực hiện không được nhiều nên đềtài của chúng tôi còn rất nhiều sai sót, hạn chế Mặc dù đã cố gắng phần nàothiết kế và tính toán một các chi tiết các mạch, các thông số nhưng đôi khi cònmang tính lý thuyết, chưa thực tế Chúng tôi mong có sự góp ý và sửa chữa để
đề tài này có tính khả thi hơn về cả phương diện kinh tế cũng như kỹ thuật
Chúng em xin chân thành cảm ơn thầy giáo Nguyễn Nam Quân đã hướngdẫn và giúp đỡ chúng em thiết kế và hoàn thành đề tài này
Hà Nội 12/ 2001 Nhóm sinh viên thựchiện:
Trang 2CHƯƠNG I: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ THƯ
I Đặt vấn đề.
Quang báo là hình thức thông báo trên bảng đèn Bảng đèn quang báogồm nhiều ma trận LED ghép lại, mỗi một ma trận biểu diễn một kí tự Tùychiều dài của bảng đèn mà có thể hiển thị những bản tin có độ dài khácnhau.Với sự ra đời của máy tính điện tử đặc biệt là máy vi tính, chúng cónhững tính năng ưu việt như khả năng xử lý dữ liệu nhanh chóng, độ tin cậycao, lưu trữ lượng thông tin lớn và quan trọng hơn cả là máy tính có thể kếthợp với nhiều thiết bị ngoại vi tùy theo mục đích ứng dụng cụ thể, mà việctrao đổi và điều khiển trở nên đơn giản, chúng phụ thuộc vào phần mềm điềukhiển Dựa vào tính đa dạng và mềm dẻo của máy tính người ta tìm cách ứngdụng nó vào mục đích quảng cáo, chẳng hạn như dùng trong quang báo Nhờvậy, việc thiết kế phần cứng cho quang báo trở thành ít phức tạp hơn, nhưng
độ tin cậy cao hơn Trong thực tế để hiển thị các văn bản, người ta dùng cáckiểu chữ là các Ma Trận LED 8x32, 8x12 hoặc 8x14 tuỳ thuộc vào mục đích
ta thường phân biệt các loại bảng LED theo số hàng và cột Môt bảng led 5x7tức là có 5 cột dọc và 7 hàng ngang, tổng cộng sẽ có 5x7=35 led đơn được
Trang 3ghép lại.Cũng như vậy một bảng led 8x8 là có 8 hàng và 8 cột,do đó có 64led đơn ghép lại.Và nhiều loại cỡ to hơn như 16x16 hay 32x32.Trong đề tàinày chúng em sử dụng 2 led ma trận 2 màu 8x8 tức là có 8 hàng và 16 cột, do
đó có 8x16x2 = 256 led đơn ghép lại
II TẦM QUAN TRỌNG CỦA ĐỀ TÀI
- Đây là một đề tài nghiên cứu mang tính thực tiễn trong việc vận dụngcác kiến thức đã được học vào trong thực tế
- Về mặt khoa học, đề tài sẽ giúp cho nhóm sinh viên thực hiện hiểu rõthêm về cấu tạo led ma trận và nguyên lí điều khiển led ma trận trongthực tế
- Về mặt thực tiễn, đề tài này có thể áp dụng vào thực tế để thiết kế các
hệ thống quang báo với kích thước lớn hơn, mở rộng điều khiển hệthống quang báo bằng các phương pháp khác như giao tiếp máy tính,điều khiển từ xa v v
III GIỚI HẠN ĐỀ TÀI
Do thời gian thực hiện đề tài có hạn và kiến thức còn hạn chế nênnhóm sinh viên thực hiện đã đưa ra những giới hạn sau:
1 Điều khiển 2 led ma trận 2 màu xanh đỏ, việc kết hợp
đồng thời hai màu xanh đỏ để tạo thành màu thứ 3
2 Mạch phải hoạt động tốt không bị nhiễu khi quét led và bànphím
3 Mạch phải chạy ổn định trong quá trình làm việc
IV ĐỐI TƯỢNG NGHIÊN CỨU
Đối tượng nghiên cứu của đề tài này chính là:
- Cách thức giao tiếp giữa vi điều khiển và led ma trận
- Cách thức giao tiếp giữa vi điều khiển và ma trận phím
- Cách lập trình cho vi điều khiển để lưu dữ liệu và hiển thị lên led matrận
Trang 4V PHƯƠNG PHÁP NGHIÊN CỨU
Trong quá trình nghiên cứu, nhóm sinh viên thực hiện chủ yếu dựa vàohai phương pháp chính:
- Phương pháp tham khảo tài liệu: Thu thập các tài liệu liên quan đến
vi điều khiển, Kỹ thuật mạch điện tử, Thiết kế mạch điện tử vàPhương pháp nghiên cứu khoa học Sau đó, nhóm sinh viên vậndụng các kiến thức hiện có để tổng hợp các tài liệu, sau cùng thiết
kế ra mạch điện phù hợp với các yêu cầu mà ban đầu nhóm đã đề ra
- Phương pháp quan sát và thực nghiệm: Sau khi đã có mạch theotính toán lý thuyết, nhóm sinh viên thực hiện đã thi công mạchthực tế theo đúng sơ đồ nguyên lý đã vạch ra Do có hạn chế trongviệc tính toán lí thuyết nên nhóm đã sử dụng kết quả chạy thực tế đểđiều chỉnh lại lý thuyết một cách hợp lý
PHẦN II: TỔNG QUAN VỀ PHƯƠNG PHÁP ĐIỀU KHIỂN
I Cơ sở lí thuyết chung.
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ị matrận đèn bằng cách quét theo hàng và quét theo cột Mỗi Led trên ma trận LED
có thể coi như một điểm ảnh Địa chỉ của mỗi điểm ảnh này được xác định đồngthời bởi hàng và 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 8951
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 kịp 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ị
Trang 5II Nguyên lí phần cứng.
1 Vi điều khiển At89s52
1.1 Tổng quan vè họ vi điều khiển 8051
AT8951 là phiên bản 8051 có ROM trên chip là bộ nhớ Flash Phiên bảnnày rất thích hợp cho các ứng dụng nhanh vì bộ nhớ Flash có thể được xóatrong vài giây Dĩ nhiên là để dùng AT8951 cần phải có thiết bị lập trìnhPROM 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
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ípkhông có chân đỡ LLC thì chúng đều có 40 chân cho các chức năng khácnhau 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 tachỉ tập trung mô tả phiên bản này
1.2 Vi điều khiển At89S52
AT89C52 là một hệ vi tính 8 bit đơn chip CMOS có hiệu suất cao, công
suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoá được/lập trìnhđược Chip này được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung
có độ tích hợp cao
AT89S52 có các đặc trưng chuẩn sau: 4Kbyte Flash, 128 byte RAM, 32đường xuất nhập, hai bộ định thời/đếm 16 bit, một cấu trúc ngắt hai mức ưutiên và 5 nguyên nhân ngắt, một port nối tiếp song công, mạch tạo dao động
và tạo xung Clock trên Chip
Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ địnhthời/đếm, Port nối tiếp và hệ thống ngắt hoạt động
Mô tả các chân của IC 8951:
Trang 6- Vcc: Chân cung cấp điện.
- GND: Chân nối đất.
- Port 0: Port 0 là port xuất nhập 8 bit 2 chiều cực D hở Port 0 còn
được cấu hình làm bus địa chỉ (byte thấp) và làm bus dữ liệu đahợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chươngtrình ngoài Port 0 cũng nhận các byte mã trong khi lập trình choFlash và xuất các byte mã trong khi kiểm tra chương trình
- Port 1: Port 1 là port xuất nhập 8 bit hai chiều có các điện trở kéo
lên bên trong Khi các logic 1 được ghi lên các chân của port 1,các chân này được kéo lên mức cao bởi các điện trở kéo lên bêntrong và có thể được sử dụng như là các ngõ vào Khi làm nhiệm
vụ là các port nhập, các chân của port 1 đang được kéo xuốngmức thấp do tác động bên ngoài sẽ cấp dòng do có các điện trởkéo lên bên trong
- Port 2: Port 2 là port xuất nhập 8 bit hai chiều có các điện trở kéo
lên bên trong Khi các logic 1 được ghi lên các chân của port 2,các chân này được sử dụng như là các ngõ vào Khi làm nhiệm vụport nhập, các chân của port 2 đang được kéo xuống mức thấp dotác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bêntrong Port 2 tạo ra byte cao của bus địa chỉ trong thời gian tìmnạp lệnh từ bộ nhớ chương trình ngoài, và trong thời gian truyxuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16 bit
- Port 3: Là port xuất nhập 8 bit hai chiều có các điện trở kéo lên
bên trong Khi các logic 1 được ghi lên các chân của port 3, cácchân này được kéo lên mức cao bởi các điện trở kéo lên bên trong
và có thể được sử dụng như là các ngõ vào Khi làm nhiệm vụport nhập, các chân của port 3 đang được kéo xuống mức thấp dotác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bêntrong Port 3 còn được sử dụng làm các chức năng khác củaAT89S52:
Trang 7n
P3.0 RxD Ngõ vào Port nối tiếp
P3.1 TxD Ngõ ra Port nối tiếp
P3.2 INT0 Ngõ vào ngắt ngoài 0
P3.3 INT1 Ngõ vào ngắt ngoài 1
P3.4 T0 Ngõ vào bên ngoài của bộ định thời
1
P3.5 T1 Ngõ vào bên ngoài của bộ định thời
0P3.6 WR Điều khiển ghi bộ nhớ dữ liệu ngoàiP3.7 RD Điều khiển đọc bộ nhớ dữ liệu ngoài
- RST: Ngõ vào Reset Mức cao trên chân này trong 2 chu kỳ máy
trong khi bộ dao động đang hoạt động sẽ Reset AT89S52
Trang 8Mạch Reset tự động khi khởi động máy
“Với bài này chúng em thực hiện Reset bằng cách nối chân 9 của 8951với nguồn 5V”
ALE: ALE là một xung ngõ ra cho phép chốt địa chỉ ALE
(Address Latch Enable) cho phép chốt byte thấp của địa chỉ trongthời gian truy xuất bộ nhớ ngoài Chân này cũng được dùng làmngõ vào xung lập trình (PROG) trong thời gian lập trình choFlash
Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số
bằng 1/6 tần số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời từ bên ngoài và tạo xung Clock Tuy nhiên cần lưu ý là
một xung ALE sẽ bị bỏ qua trong mỗi chu kì truy xuất của bộ nhớ dữ liệungoài
Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ được vô hiệu
hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ byte là
8E(h) Khi bit này được set, ALE chỉ tích cực trong thời gian thực thi lệnh
MOVX hoặc MOVC Ngược lại chân này sẽ được kéo lên mức cao Việc set
bit không cho phép hoạt động chốt byte thấp của địa chỉ sẽ không có tác dụngnếu bộ vi điều khiển đang ở chế độ thực thi chương trình ngoài
- XTAL1: Ngõ vào đến mạch khuếch đại đảo của mạch dao động
và ngõ vào đến mạch tạo xung Clock bên trong chip
- XTAL2: Ngõ ra từ mạch khuếch đại đảo của mạch dao động.
Trang 9Để tạo mạch dao động cho vi điều khiển 8951 hoạt động, chúng em chọnmạch tạo dao động như hình vẽ dưới đây, với các giá trị của linh kiện là:C1 = C2 =30pF;
Thạch anh dao động có tần số 12MHz
Kết nối của mạch dao dộng
Sơ đồ chân của IC AT89C51:
Trang 102 Module led ma trận Led Ma Trận thực ra bao gồm nhiều Led đơn ghéplại mà thành.
Nhìn vào hình ta thấy rằng: các Anode của các đèn Led đơn được mắcnối với nhau, và các Cathode cũng vậy, tạo thành môt bảng Led Ma Trận.Kích cở của Led Ma Trận còn tùy thuộc vào người thiết kế Chúng ta có thểghép các Led đơn lại với nhau để tạo được Bảng Led ma trận, nhưng côngviệc này gây mất nhiều thời gian nên để đơn giản thì ta mua trên thị trườngcác con Led Ma Trận đã được đóng gói sẵn
*) Nguyên lí quét led ma trận 8x8
Để ma trận có thể sáng như hình vẽ (hiển thị một phần của chữADIDAS):
Trang 11Đèn LED thứ nhất Đèn LED thứ hai Đèn Led thứ ba
Thực hiện quét dòng và cột:
- Chọn cột 1, đưa điện áp cột 1 về 0
- Sau đó chọn và quét lần lượt các hàng 1,2,3,4,5,6,7,8 như sau:
+ Đèn 1 tắt => Điện áp đưa vào hàng 1 là 0V
+ Đèn 2 tắt => Điện áp đưa vào hàng 2 là 0V
+ Đèn 3 sáng => Điện áp đưa vào hàng 3 là 5V
+ Đèn 4 sáng => Điện áp đưa vào hàng 4 là 5V
+ Đèn 5 sáng => Điện áp đưa vào hàng 5 là 5V
+ Đèn 6 sáng => Điện áp đưa vào hàng 6 là 5V
+ Đèn 7 sáng => Điện áp đưa vào hàng 7 là 5V
+ Đèn 8 sáng => Điện áp đưa vào hàng 8 là 5V
Chọn cột 2, nối đất Sau đó quét lần lượt các hàng 1,2,3,4,5,6,7,8 + Đèn 1 tắt => Điện áp đưa vào hàng 1 là 0V
+ Đèn 2 sáng => Điện áp đưa vào hàng 2 là 5V
+ Đèn 3 tắt => Điện áp đưa vào hàng 3 là 0V
+ Đèn 4 sáng => Điện áp đưa vào hàng 4 là 5V
+ Đèn 5 tắt => Điện áp đưa vào hàng 5 là 0V
+ Đèn 6 tắt => Điện áp đưa vào hàng 6 là 0V
Trang 12+ Đèn 7 tắt => Điện áp đưa vào hàng 7 là 0V
+ Đèn 8 tắt => Điện áp đưa vào hàng 8 là 0V
- Tiếp tục quét với các cột từ 3 đến 8 bằng cách như trên, sau đó chuyểnsang quét đèn LED thứ hai và thứ ba một cách tương tự
- Để mắt người nhận biết được toàn bộ hình ảnh của ma trận ta phải tiếnhành quét nhiều lần Do mắt người không phân biệt được sự thay đổi ảnh nếuảnh đó được quét với tốc độ 24 hình/s nên nếu ta quét ảnh với tốc độ lớn hơnhoặc bằng 24 hình/s thì ảnh sẽ chạy liên tục và không bị giật
CHƯƠNG IV: THIẾT KẾ PHẦN MỀM
3.Add File.C vào Project
4.Biên dịch và tạo File Hex
5.Gỡ lỗi chương trình (nếu có)
6.Nạp chương trình cho Vi điều khiển
1. 1 Tạo mới 1 Project
Chạy chương trình Keil C:
Trang 13Vào Project->New Project:
Trang 14Chọn đường dẫn để lưu và đặt tên cho project:
Trang 15Sau đó ấn Save.
Tiếp theo ta chọn loại Chip: ở đây ta lựa chọn Atmel->chọn AT89C51
Trang 18Ấn Yes và ta đã hoàn thành bước 1 – tạo 1 project mới.
Trang 192. 2 Tạo File.C
Tiếp theo ta cần tạo 1 File.C để viết chương trình cho Chip lên file đó.Vào File->New:
Trang 21Sau đó chọn Save:
Trang 22Chọn đường dẫn vào cùng thư mục với Project vừa tạo ở bước 1 Sau đó đặt tên, với phần đuôi mở rộng là C:
Trang 23Chọn Save, và ta đã hoàn thành xong bước 2 – Tạo File.C.
3. 3 Add File.C vào Project
Ta cần phải liên kết File.C với Project vừa tạo với nhau:
Trong giao diện Keil C, ở không gian làm việc của Project: Chuột phải vào phần
“Source Group 1” -> Add files to Group “Source Group 1”:
Trang 24Chọn đường dẫn đến thư mục Project -> chọn file.C vừa tạo ở bước 2 -> Add:
Trang 25Và ta đã hoàn tất giai đoạn tạo Project, chuẩn bị viết code nào
Trang 264. 4 Biên dịch và tạo file Hex
Sau khi tạo xong project ta tiến hành soạn thảo chương trình
Trang 27{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* D - 0x44 - 68 */ { 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* E - 0x45 - 69 */ { 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* F - 0x46 - 70 */ { 0x3e, 0x41, 0x49, 0x49, 0x7a }, /* G - 0x47 - 71 */ { 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* H - 0x48 - 72 */ { 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* I - 0x49 - 73 */ { 0x20, 0x40, 0x41, 0x3f, 0x01 }, /* J - 0x4a - 74 */ { 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* K - 0x4b - 75 */ { 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* L - 0x4c - 76 */ { 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 1 - 0x31 - 49 */ { 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 2 - 0x32 - 50 */ { 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 3 - 0x33 - 51 */ { 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 4 - 0x34 - 52 */ { 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 5 - 0x35 - 53 */ { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 6 - 0x36 - 54 */ { 0x01, 0x71, 0x09, 0x05, 0x03 }, /* 7 - 0x37 - 55 */ { 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 8 - 0x38 - 56 */ { 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 9 - 0x39 - 57 */ };
void timer0(void) interrupt 1 //thoi gian ngat tran la 5ms