Tải bản đầy đủ (.docx) (30 trang)

Mô phỏng mạch led ma trận trên phần mềm Proteus

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.06 MB, 30 trang )

Lờ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ần
chiế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ều
khiể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ày
nay đã đượ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ông
cộ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ũng
như kiến thức nhất định. Trong khuôn khổ của đề tài, trên cơ sở những kiến
thứ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ào
thiế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òn
mang 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ướng
dẫ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ực
hiện:
CHƯƠ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áo


gồ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ùy
chiều dài của bảng đèn mà có thể hiển thị những bản tin có độ dài khác
nhau.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ậy
cao, 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ết
hợp với nhiều thiết bị ngoại vi tùy theo mục đích ứng dụng cụ thể, mà việc
trao đổi và điều khiển trở nên đơn giản, chúng phụ thuộc vào phần mềm điều
khiể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 ứng
dụ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ác
kiểu chữ là các Ma Trận LED 8x32, 8x12 hoặc 8x14 tuỳ thuộc vào mục đích
sử dụng và độ phân giải.
Ngoài thị trường có nhiều hệ thống quang báo dùng các loại led khác
nhau như led 7 thanh, led đơn, led ma trận Trong khuôn khổ đề tài, chúng
em chỉ giới thiệu mạch mô phỏng hệ thống quang báo sử dụng led ma trận.
Bảng hiển thị ma trận LED (dot-matrix display) có rất nhiều loại và đủ
kích cỡ to nhỏ khác nhau, mỗi bảng gồm có rất nhiều LED đơn được ghép lại
vời nhau thánh một khối.Trong khối đó các LED đơn được sắp xếp theo các
hàng và các cột,tại mỗi giao điểm của hàng và cột là một LED đơn,và người
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 5x7
tức là có 5 cột dọc và 7 hàng ngang, tổng cộng sẽ có 5x7=35 led đơn được
ghé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ó 64
led đơn ghép lại.Và nhiều loại cỡ to hơn như 16x16 hay 32x32.Trong đề tài
nà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ụng
cá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 trong
thự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ên
nhó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àn phí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 ma
trận
V. 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ào
hai 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ận

dụ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 theo
tính toán lý thuyết, nhóm sinh viên thực hiện đã thi công mạch
thực tế theo đúng sơ đồ
nguyên lý đã vạch ra. Do có hạn chế trong
việ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ị 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ậ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 đồng
thờ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ận
nhiề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ắt
ngườ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 ảnh
cần hiển thị.
II. 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ả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.
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.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 ưu
tiê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ộ định
thờ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:
- 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 đa
hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương
trình ngoài. Port 0 cũng nhận các byte mã trong khi lập trình cho
Flash 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ên
trong 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ống
mứ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 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 tạo ra byte cao của bus địa chỉ trong thời gian tìm
nạp lệnh từ bộ nhớ chương trình ngoài, và trong thời gian truy
xuấ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á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ê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 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 3 còn được sử dụng làm các chức năng khác của
AT89S52:
Châ
n
Tên Chức năng
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
0
P3.6
WR
Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.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.
Mạ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 8951
vớ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ỉ trong
thời gian truy xuất bộ nhớ ngoài. Chân này cũng được dùng làm
ngõ vào xung lập trình (
PROG
) trong thời gian lập trình cho
Flash.
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ệu
ngoà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ụng
nế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.
Để tạo mạch dao động cho vi điều khiển 8951 hoạt động, chúng em chọn
mạ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:
2. Module led ma trận Led Ma Trận thực ra bao gồm nhiều Led đơn ghép
lạ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ắc
nố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ông
việc này gây mất nhiều thời gian nên để đơn giản thì ta mua trên thị trường
cá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):
Đè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
+ Đè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ển
sang 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ến
hà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ơn
hoặ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
I) Phần mềm lập trình Keil C
Các bước tạo Project
Ta thực hiện 6 bước:
1.Tạo mới 1 project.
2.Tạo File.C.
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:
Vào Project->New Project:
Chọn đường dẫn để lưu và đặt tên cho project:
Sau đó ấn Save.
Tiếp theo ta chọn loại Chip: ở đây ta lựa chọn Atmel->chọn AT89C51
Ấn Yes và ta đã hoàn thành bước 1 – tạo 1 project mới.
2. 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:
Sau đó chọn Save:
Chọ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:
Chọ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”:
Chọn đường dẫn đến thư mục Project -> chọn file.C vừa tạo ở bước 2 -> Add:
Và ta đã hoàn tất giai đoạn tạo Project, chuẩn bị viết code nào 
4. 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.
#include <REG51.h>
char count=0, stt=0;

char font[21][5]=
{
{ 0x7e, 0x11, 0x11, 0x11, 0x7e }, /* A - 0x41 - 65 */
{ 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* B - 0x42 - 66 */
{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* C - 0x43 - 67 */

×