You are on page 1of 76

Kỹ thuật vi xử lý

ĐỀ TÀI:

THIẾT KẾ BẢNG CHỮ CHẠY


DÙNG VĐK AT89S52

1 BKFET Group
Kỹ thuật vi xử lý

MỤC LỤC

PHẦN I:LỜI NÓI ĐẦU.

PHẦN II: GIỚI THIỆU ĐỀ TÀI VÀ LÝ DO CHỌN VĐK AT89S52.

II.1. Giới thiệu đề tài.


II.2. Lý do chọn vi điều khiển AT89S52.

PHẦN III: GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52.

III.1. Tổng quan về họ vi điều khiển 8051.


III.2. Cấu trúc bên trong của bộ vi điều khiển 8051.
III.3. Chức năng các chân của vi điều khiển 8051.
II.3.1. Các Port xuất nhập.
II.3.2. Chân cho phép bộ nhớ chương trình .
II.3.3. Chân cho phép chốt địa chỉ ALE.
II.3.4. Chân truy xuất ngoài EA.
II.3.5. Chân RESET.
III.4. Tổ chức bộ nhớ.
II.4.1. Vùng RAM đa mục đích.
II.4.2. Vùng RAM định địa chỉ
II.4.3. Các dãy thanh ghi
II.4.4. Các thanh ghi chức năng đặc biệt (SFR)

PHẦN IV: SƠ ĐỒ KHỐI MẠCH BẢNG CHỮ CHẠY

VI.1. Sơ đồ khối mạch bảng chữ chạy.


VI.2. Chức năng các khối.
VI.2.1. Khối điều khiển trung tâm.
VI.2.2. Khối xuất và đệm ngõ ra hàng.
VI.2.3. Khối giải mã cột (quét cột).
VI.2.4. Khối ma trận LED.
VI.2.5. Khối bàn phím.
VI.2.6. Khối hiển thị LCD.

PHẦN V: THIẾT KẾ PHẦN CỨNG

V.1. Thiết kế khối điều khiển trung tâm.


V.2. Thiết kế khối xuất và đệm ngõ ra hang.

2 BKFET Group
Kỹ thuật vi xử lý

V.3. Thiết kế khối giải mã cột.

V.4. Thiết kế khối ma trận LED.


V.5. Thiết kế khối bàn phím.
V.6. Thiết kế khối hiển thị LCD.
V.7. Kết quả mạch in thực tế

PHẦN VI: THIẾT KẾ CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN


VI.1. Tóm tắt thuật toán.
VI.2. Chương trình Assembly.

PHẦN VII: KẾT LUẬN

3 BKFET Group
Kỹ thuật vi xử lý

PHẦN I:

LỜI NÓI ĐẦU

Ngày nay kỹ thuật điện tử đã và đang không ngừng len lỏi vào cuộc sống.
Các công nghệ mới liên tục ra đời đem lại những ứng dụng vô cùng to lớn. Có
thể nói một trong những đỉnh cao công nghệ đó là sự ra đời của các bộ vi xử lý.
Có lẽ ngay cả những người sáng chế ra những bộ vi xử lý đầu tiên cũng không
thể tưởng tượng hết được tương lai phát triển huy hoàng của chúng.

Các bộ vi xử lý ngày nay không đơn thuần chỉ là các con chip thế hệ
VLSI với khả năng tích hợp rất lớn mà chúng thực sự là những bộ não thu nhỏ.
Chúng có mặt ở khắp nơi để giúp con người xử lý vô vàn các công việc, từ việc
nhỏ như xử lý lệnh trong chiếc điều khiển từ xa tivi, chiếc ôtô đồ chơi trẻ em
đến những việc lớn hơn như trong chiếc điện thoại di động, máy ảnh số hay
thậm chí trong máy bay, tên lửa cũng do những bộ vi xử lý điều khiển. Mặc dù
kích thước vật lý của các bộ vi xử lý khá nhỏ nhưng bên trong nó chứa đựng rất
nhiều công trình khoa học do hàng nghìn kỹ sư nghiên cứu trong hàng vài năm
trời. Vì vậy việc nắm bắt các công nghệ đó là vô cùng cần thiết cho những ứng
dụng của cuộc sống nhưng cũng cũng không hề dễ dàng.

Một trong những cách tiếp cận với công nghệ vi xử lý là chúng ta tìm hiểu
về vi điều khiển vì bên trong các bộ vi xử lý cỡ nhỏ. Và không có cách học tập
nào hiệu quả hơn là học phải đi đôi với làm sản phẩm thật. Đó chính là vấn đề sẽ
được chúng em trình bày trong bài báo cáo này.

4 BKFET Group
Kỹ thuật vi xử lý

PHẦN II:

GIỚI THIỆU ĐỀ TÀI VÀ


LÝ DO CHỌN VĐK AT89S52

II.1. Giới thiệu đề tài:

Trong thời đại hiện nay có rất nhiều hình thức thông tin quảng cáo. Một
trong số những hình thức có hiệu quả nhất và đang được sử dụng rộng rãi nhất
đó là quảng cáo bằng bảng điện tử. Quảng cáo bằng bảng điện tử luôn thể hiện
những ưu điểm vượt trội so với các bảng quảng cáo truyền thống như:
- Thông tin trên bảng có thể thay đổi dễ dàng.
- Cùng một lúc có thể quảng cáo nhiều thông tin theo kiểu luân phiên,
chạy, nháy…
- Màu sắc phong phú, bắt mắt.
- Nổi bật vì có khả năng tự phát sáng.
- Thể hiện phong cách hiện đại, chuyên nghiệp.
- …

Để làm được một bảng điện tử chúng ta có thể dùng vi xử lý, dùng vi điều
khiển, PSoC, PLD, PLC … Với mục đích làm quen với các bộ vi điều khiển nói
riêng và công nghệ vi xử lý nói chung, trong bài báo cáo này, chúng em xin trình
bày phương án thiết kế mạch quảng cáo sử dụng vi điều khiển AT89S52.

II.2. Lý do chọn vi điều khiển AT89S52:

Như đã nói trên, việc điều khiển bảng chữ chạy sẽ là khá phức tạp nếu ta
chỉ sử dụng các IC số, nhưng nếu sử dụng các hệ mạch tổ hợp khả trình thì công
việc trở nên nhẹ nhàng hơn khá nhiều. Trong điều kiện mới được tiếp cận với
môn học vi xủ lý, chưa đủ kiến thức để làm việc với các hệ mạch khả trình phức
tạp. Chúng em quyết định dùng vi điều khiển để điều khiển mạch bảng chữ chạy
của mình.

Trên thị trường hiện nay có bán khá nhiều chủng loại vi điều khiển của
nhiều hãng khác nhau. Nổi tiếng nhất là các dòng vi điều khiển 89, AVR, PIC
của hai hãng Atmel và Microchip. Trong đó hai dòng vi điều khiển AVR và PIC
là hai dòng vi điều khiển khá mạnh về cả tính năng lẫn tốc độ nhưng cũng là
dòng vi điều khiển khá đắt tiền. Vì vậy chúng em quyết định sử dụng vi điều
khiển họ 89 mà cụ thể là vi điều khiển AT89S52 cho mục đích điều khiển bảng
chữ chạy của mình. Đây là loại IC vi điều khiển khá thông dụng cho các mục

5 BKFET Group
Kỹ thuật vi xử lý

đích không yêu cầu tốc độ và tính năng cao vì dễ sử dụng và lập trình. Đặc biệt
với khả năng có thể được lập trình trong hệ thống (ISP) việc nạp xoá chương
trình là khá đơn giản và tiện lợi.

6 BKFET Group
Kỹ thuật vi xử lý

PHẦN III:

GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89S52


III.1. Tổng quan về họ vi điều khiển 8051:

Vi điều khiển AT89S52 là một trong những IC thuộc họ vi điều khiển


8051 do hãng Almel thiết kế và chế tạo. Tuy có nhiều ưu việt hơn so với vi điều
khiển 8051 nguyên bản nhưng về cơ bản cấu trúc và cách lập trình cho vi điều
khiển AT89S52 là giống với vi điều khiển 8051. Vì vậy chúng ta sẽ đi sâu tìm
hiểu họ vi điều khiển 8051 để phục vụ cho việt thiết kế của đề tài.

8051 Là bộ vi điều khiển do hãng Intel chế tạo đầu tiên vào năm 1981 và
sau đó được các hãng sản xuất vi điều khiển khác phát triển lên thành rất nhiều
loại IC vi điều khiển khác nhau. Bộ vi điều khiển 8051 đầu tiên có các đặc điểm:
Có 4 kByte ROM và hỗ trợ tối đa lên tới 64 kByte.
Có 128 byte RAM.
Có 4 cổng xuất nhập (I/O), mỗi cổng rộng 8 bit.
2 bộ định thời 16 bit.
Có giao tiếp nối tiếp RS232.
Là bộ xử lý bit, tức là có thể thao tác với từng bit.

III.2. Cấu trúc bên trong của bộ vi điêù khiển 8051:

Sơ đồ khối vi điều khiển 8051:

7 BKFET Group
Kỹ thuật vi xử lý

EXTERNAL
INTERRUPTS
ETC
TIMER

COUNTER
INTERRUP ON -

INPUTS
0
T CHIP TIMER
CONTROL RAM 1

CPU

OS BUS SERIAL
4 I/O
C CONTRO PORT
PORTS
L

P P PP RX
TXD
01 23 D
ADDRESS/DA
TA

8 BKFET Group
Kỹ thuật vi xử lý

III.3. Chức năng các chân của vi điều khiển 8051:

III.3.1. Các port xuất nhập:

Sơ đồ chân:

S¬ ®å ch©n 89S52.

Trong đó:

Port 0:
- Từ chân số 32 đến số 39.
- Vì được thiết kế theo kiếu cực máng hở nên cần có điện trở kéo lên
nguồn dương.
Làm nhiệm vụ xuất/ nhập (với các thiết kế có tối thiểu thành phần).

9 BKFET Group
Kỹ thuật vi xử lý

- Với các thiết kế lớn có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và
bus dữ liệu đa hợp (là byte thấp nếu là bus địa chỉ ).

Port 1:
- Từ chân số 1 đến số 8.
- Đã có sẵn điện trở kéo bên trong IC.
- Chỉ cố tác dụng xuất/ nhập, dùng giao tiếp với các thiết bị ngoại vi khi
cần.

Port 2:
- Từ chân số 21 đến số 28.
- Đã có sẵn điện trở kéo bên trong IC.
- Làm nhiệm vụ xuất/ nhập.
- Với các thiết kế lớn yêu cầu cần có bộ nhớ ngoài thì nó là byte địa chỉ
cao của bus địa chỉ 16-bit.

Port 3:
- Từ chân số 10 đến chân số 17.
- Làm nhiệm vụ xuất/ nhập.
- Thường sử dụng để tác động tín hiệu điều khiển. Ngoài ra mỗi chân
của Port3 có một chức năng riêng:

Bit Tên Địa chỉ bit Chức năng


P3.0 RXD B0H Chân nhận dữ liệu của port nối tiếp
P3.1 TXD B1H Chân phát dữ liệu của port nối tiếp
P3.2 INT0 B2H Ngõ vào ngắt ngoài 0
P3.3 INT1 B3H Ngõ vào ngắt ngoài 1
P3.4 T0 B4H Ngõ vào của bộ định thời/đếm 0
P3.5 T1 B5H Ngõ vào của bộ định thời/đếm 1
P3.6 WR B6H Điều khiển ghi bộ nhớ ngoài
P3.7 RD B7H Điều khiển đọc bộ nhớ ngoài

III.3.2. Chân cho phép bộ nhớ chương trình:

8051 cung cấp cho ta 4 tín hiệu điều khiển bus. Tín hiệu cho phép bộ nhớ
chương trình PSEN (Program Store Enable) là tín hiệu xuất trên chân 29. Đây
là tín hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài. Chân này
thường nối với chân cho phép xuất OE của EPROM (hoặc ROM) để cho phép
đọc các Byte lệnh. Tín hiệu PSEN ở logic 0 trong suốt thời gian tìm nạp lệnh.
Khi thực thi một chương trình chứa ở ROM nội, PSEN được duy trì ở mức 1.

10 BKFET Group
Kỹ thuật vi xử lý

III.3.3. Chân cho phép chốt địa chỉ ALE/PROG:

Là chân số 30, chân này xuất tín hiệu cho phép chốt địa chỉ ALE để giải
đa hợp bus dữ liệu và bus đia chỉ. Khi port 0 được sử dụng làm bus địa chỉ/ dữ
liệu đa hợp, chân ALE xuất tín hiệu để chốt địa chỉ (byte thấp của địa chỉ 16-bit)
vào một thanh ghi ngoài trong suốt 1/2 đầu của chu kì bộ nhớ . Sau khi điều này
đã được thực hiện, các chân của Port 0 sẽ xuất/nhập dữ liệu hợp hệ trong suốt
1/2 còn lại của chu kỳ bộ nhớ.

III.3.4. Chân truy xuất ngoài EA:

Là chân 31 có thể nối với 5V (logic 1) hoặc với GND (logic 0). Nếu chân
này nối lên 5V, 8051 thực thi chương trình trong ROM nội ( chương trình nhỏ
hơn 8K). Nếu chân này nối với GND ( và chân PSEN cũng ở logic 0), chương
trình cần thực thi chứa ở bộ nhớ ngoài.

III.3.5. Chân RESET:

Ngõ vào RST (chân 9) là ngõ vào xoá chính (master reset) của 8051 dùng
để thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống Khi
ngõ vào này được treo ở logic 1 tối thiểu hai chu kỳ máy, các thanh ghi bên
trong của 8051 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống.
Khi đó, toàn bộ các cổng đều ở mức logic 1.

III.4. Tổ chức bộ nhớ:

Bộ nhớ bên trong chip bao gồm ROM, RAM va EPROM. RAM trên chip
bao gồm vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ,
các dây thanh ghi (bank) và các thanh ghi chức năng đặc biệt.

Có 2 đặc tính đáng lưu ý:


+ Các thanh ghi và các port I/O được định địa chỉ theo kiểu ánh xạ bộ
nhớ và được truy xuất như một vị trí nhớ trong bộ nhớ.
+ Vùng track thường trú trong RAM trên chip thay vì ở trong RAM
ngoài như đối với các bộ vi xử lý.

III.4.1. Vùng RAM đa mục đích:

Có 80 byte. Bất cứ vị trí nào trong vùng RAM ta đều có thể truy xuất tự
do bằng cách sử dụng định địa chỉ trực tiếp hoặc gián tiếp.
Ví dụ:
Để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích luỹ lệnh
sau sẽ được dùng.
- Kiểu định địa chỉ trực tiếp:
11 BKFET Group
Kỹ thuật vi xử lý

MOV A,5FH ; Đọc nội dung tại địa chỉ 5FH của RAM.
; vào thanh chứa A.

- Kiểu định địa chỉ gián tiếp: (Qua các thanh ghi R0,R1):
MOV R0,#5FH ; Di chuyển giá trị 5FH vào thanh ghi R0
MOV A,@R0 ; Dùng địa chỉ trực tiếp để di chuyển dữ liệu
; “được trỏ bởi R0” vào thanh ghi tích luỹ.

III.4.2. Vùng RAM định địa chỉ:

Chip 8051 chứa khá nhiều vị trí định địa chỉ trong đó có 128 byte chứa
trong các byte ở địa chỉ 20H đến 2FH (16 byte x 8 = 128 bits), phần còn lại chứa
trong các thanh ghi chức năng đặc biệt. Ý tưởng truy xuất từng bit riêng rẽ bằng
phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung.

Công dụng:
- Truy xuất các bit riêng rẽ thông qua các phần mềm.
- Các port có thể định địa chỉ từng bit, làm đơn giản việc giao tiếp bằng
phần mềm với các thiết bị xuất nhập đơn bit.

III.4.3. Các dãy thanh ghi:

Có địa chỉ từ 00H đến 1FH, 32 vị trí thấp nhất của bộ nhớ nội chứa các
dãy thanh ghi. Các lệnh của 89S52 hỗ trợ 8 thanh ghi tử R0 đến R7 (mặc định
thuộc bank 0 sau khi reset hệ thống)

III.4.4. Các thanh ghi chức năng đặc biệt (SFR):

12 BKFET Group
Kỹ thuật vi xử lý

13 BKFET Group
Kỹ thuật vi xử lý

FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B

E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC

D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW

B8 - - - BC BB BA B9 B8 IP

B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
A8 A - - AC AB AA A9 A8 IE
F
A0
A7 A6 A5 A4 A3 A2 A1 A0 P2

99 SBUF
Not bit addressable
98
9F 9E 9D 9C 9B 9A 99 98 SCON
90
97 96 95 94 93 92 91 90 P1

8D TH1
8C Not bit addressable TH0
8B
8A Not bit addressable TL1
89 TL0
Not bit addressable TMOD

Not bit addressable

Not bit addressable


88 8F 8E 8D 8C 8B 8A 89 88 TCON
87 PCON
Not bit addressable
DPH
83 DPL
82 Not bit addressable SP
81
80 Not bit addressable

Not bit addressable


87 86 85 84 83 82 81 80 PO

Thanh ghi chøc n¨ng ®Æc biÖt SFR.

14 BKFET Group
Kỹ thuật vi xử lý

Không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà
chỉ có 21 địa chỉ được định nghĩa. Các thanh ghi chức năng đặc biệt bao gồm:

+ Từ trạng thái chương trình PSW: có địa chỉ là D0H

Địa chỉ Mô tả
Bit Kí
hi

u
PSW.7 CY D7H Cờ Nhớ
PSW.6 AC D6H Cờ nhớ phụ
PSW.5 F0 D5H Cờ 0
PSW.4 RS1 D4H Chọn dãy thanh ghi 1
PSW.3 RS0 D3H Chọnh dãy thanh ghi 0
00 = bank 0: địa chỉ từ 00F đến 07H
01 = bank 1: địa chỉ từ 08F đến 0FH
10 = bank 2: địa chỉ từ 00F đến 07H
11 = bank 3: địa chỉ từ 00F đến 07H
PSW.2 OV D2H Cờ tràn
PSW.1 - D1H Dự trữ
PSW.0 P D0H Cờ kiểm tra chẵn lẻ

+ Thanh ghi B: Có địa chỉ F0H được dùng chung với thanh chứa A trong
các phép toán nhân và chia.
+ Con trỏ Stack (SP) : là thanh ghi 8 bit ở địa chỉ 81H, nó chứa địa chỉ
của dữ liệu hiện đang ở đỉnh của stack.
+ Con trỏ dữ liệu DPTR:
- Dùng để truy xuất bộ nhớ chương trình ngoài hoặc bộ nhớ dữ liệu
ngoài.
- DPTR là thanh ghi 16 bit có địa chỉ 82H (byte thấp) và 83H (byte
cao).
+ Các thanh ghi port:
- Port 0 : địa chỉ 80H
- Port 1 : địa chỉ 90H
- Port 2 : địa chỉ A0H
- Port 3 : địa chỉ B0H
+ Các thanh ghi định thời:
8951 có 2 bộ định thời/đếm dùng để định khoảng thời gian hoặc đếm các
sự kiện.
- Bộ định thời 0: địa chỉ 8AH (TL0 ) và 8CH (TH0)
- Bộ định thời 1: địa chỉ 8BH (TL1 ) và 8DH (TH1)

15 BKFET Group
Kỹ thuật vi xử lý

Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời
TMOD ở địa chỉ 89H và thanh ghi ®iÒu khiển bộ định thời TCON ở địa chỉ
88H (chỉ có TCON được định địa chỉ từng bit)
+ Các thanh ghi của port nối tiếp: Chip 8951 có 1 port nối tiếp để truyền
thông với các thiết bị như các thiết bị đầu cuối hoặc modem...
+ Các thanh ghi ngắt: có một cấu trúc ngắt với 2 mức ưu tiên và
5 nguyên nhân ngắt. Các ngắt bị vô hiệu hoá sau khi Reset hệ thống và được
phép bằng cách vào thanh ghi IE ở địa chỉ A8H.
Mức ưu tiên ngắt được thiết lập bởi thanh ghi IP ở địa chỉ B8H.
+ Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H.

16 BKFET Group
Kỹ thuật vi xử lý

PHẦN IV:

SƠ ĐỒ KHỐI MẠCH BẢNG CHỮ CHẠY

IV.1. Sơ đồ khối mạch bảng chữ chạy:

Hiển thị LCD

Khối điều khiển Bảng ma


trung tâm Xuất và đệm ngõ ra hàng trận LED

Giải mã cột

Khối
bàn phím

IV.2. Chức năng các khối:

IV.2.1. Khối điều khiển trung tâm:

Chương trình lập trình sẵn được nạp vào trong vi điều khiển AT89S52 sẽ
nhận các lệnh từ khối bàn phím và đưa tín hiệu điều khiển tương ứng ra LCD
cũng như điều khiển các khối xuất dữ liệu hàng, và giải mã cột ra các Port của vi
điều khiển để làm sáng, tắt các LED tương ứng.

IV.2.2. Khối xuất và đệm ngõ ra hàng:

17 BKFET Group
Kỹ thuật vi xử lý

Khối này làm nhiệm vụ nhận dữ liệu điều khiển hàng từ vi điều khiển ra,
thông qua bộ đệm để đảm bảo đủ dòng và áp cung cấp cho Anod (các hàng) của
bảng ma trận LED. Ngoài ra mạch đệm còn là các bộ đảo để chuyển mức logic
ra tích cực thấp từ vi điều khiển thành các tín hiệu mức logic 1.

IV.2.3. Khối giải mã cột (quét cột):

Tại mỗi thời điểm chỉ các đèn ở một cột nào đó được sáng tương ứng với
dữ liệu xuất ra trên các hàng. Như vậy cần tạo ra một khối quét cột làm nhiệm
vụ giải mã địa chỉ cột để “mở” cột cần thiết, nối K các LED hàng đó xuống
mass.
Khối này sẽ nhận điều khiển trực tiếp từ vi điều khiển dưới dạng địa chỉ
nhị phân của cột được chọn. Để ma trận hiển thị đúng dòng thông báo mong
muốn, dữ liệu xuất ra ở hàng phải đồng bộ với hoạt động của khối giải mã cột.

IV.2.4. Khối ma trận LED:

Đây là khối hiển thị thông tin quảng cáo. Bảng đèn LED sẽ nhận đồng
thời tín hiệu điều khiển từ khối đệm hàng (xuất dữ liệu và bộ đệm hàng) và khối
giải mã cột (khối quét cột). Điều đó quyết định LED nào sáng, LED nào tắt,
nhằm hiển thị ra những thông tin quảng cáo mong muốn.

IV.2.5. Khối bàn phím:

Khối này gồm các phím bấm, có chức năng tác động điều khiển từ bên
ngoài vào vi điều khiển để điều khiển hoạt động của bảng đèn như tốc độ chạy,
kiểu chạy, dừng, xoá, …

IV.2.6. Khối hiển thị LCD:

Khối này sẽ hiển thị các thông tin chỉ dẫn cho người dùng khi thay đổi nội
dung dòng chữ hay có bất kỳ tác động nào tới việc chạy chữ. Ngoài ra khối này
còn hiển thị dòng chữ đang chạy trên bảng giúp cho việc thay đổi đơn giản hơn.

18 BKFET Group
Kỹ thuật vi xử lý

PHẦN V:

THIẾT KẾ PHẦN CỨNG:


V.1. Thiết kế khối điều khiển trung tâm:

Khối điều khiển trung tâm gồm thành phần chính là IC vi điều khiển
AT89S52 kèm theo các linh kiện phụ trợ như khuyến cáo của nhà sản xuất:
- Thạch anh 11.0592MHz (thường dùng) kèm theo hai tụ
33pF.
- Chân số 9 được mắc tụ 10µ F lên Vcc để IC được reset
mỗi khi bật nguồn. Bình thường chân này được kéo xuống mass bởi điện
trở thị số 10K.

Ngoài ra còn có:


- Hai nút ấn mắc vào chân 9 để Reset (Một nút phụ dùng
đến khi dùng vi điều khiển AVR, vì dòng IC vi điều khiển AVR Reset
bằng mức 0).

19 BKFET Group
Kỹ thuật vi xử lý

- Jack nạp 6 chân cho mạch nạp ISP.


- Cả cổng P0 được mắc điện trở kéo 10K lên nguồn. (các
cổng khác không cần vì đã có sẵn bên trong IC)
- Hai tụ lọc có giá trị 10µ F và .1µ F mắc ngay tại chân
nguồn của IC vi điều khiển một lọc nhiễu tần số thấp và một lọc nhiễu tần
số cao cho nguồn vào IC. Đảm bảo IC luôn hoạt động ổn định.

V.2. Thiết kế khối xuất và đệm ngõ ra hàng:

Bảng LED ma trận trong thiết kế này có kích thước 8 hàng x 32 cột. Để
có thể xuất dữ liệu của cả 8 hàng cùng một lúc cách đơn giản nhất là dùng luôn 1
Port của vi điều khiển để xuất. Việc này sẽ rất thuận lợi cho công việc lập trình.
Trong thiết kế này Port 0 được chọn làm Port xuất dữ liệu hàng. Như vậy khối
xuất dữ liệu hàng thực chất là Port 0 của vi điều khiển (có 8 chân tương ứng với
8 hàng của ma trận LED). Dữ liệu xuất này được điều khiển bởi chương trình
nạp trong vi điều khiển và đưa ra các mạch đệm hàng.

Tại sao ta lại phải dùng mạch đệm hàng mà không nối thẳng các hang vào
Port0 của IC vi điều khiển. Để trả lời câu hỏi này trước hết chúng ta phải hiểu
nguyên lý để làm cho một LED trong ma trận sáng. Để làm sang một LED trong
ma trận, chân A của nó phải nối lên +5V (thông qua một điện trở) và chân K của
nó phải nối xuống 0V. Trong ma trận LED, tất cả các LED cùng hang có các
chân A được nối với nhau, tất cảc các LED cùng cột có các chân K được nối với
nhau. Vì vậy muốn một LED sáng hàng phải ở mức 1 và cột phải ở mức 0.

Một
phần tử
đệm hàng

Chúng ta không thể nối trực tiếp các chân từ Port0 của vi điều khiển vào
các chân Anod (hàng) của ma trận LED mà cần nối qua một khối đệm. Mạch
đệm này làm nhiệm vụ tăng dòng điện đủ cho LED sang và đảo mức tín hiệu

20 BKFET Group
Kỹ thuật vi xử lý

logic điều khiển từ mức 0 (vì vi điều khiển AT89S52 thường điều khiển bằng
mức tích cực thấp) thành mức 1 (ra LED).

Trong thiết kế này, chúng ta sử dụng transistor A564 là transistor thuận


hoạt động ở chế độ cắt – bão hoà để thực hiện nhiệm vụ đó. Transistor A564 là
loại transistor khá phổ biến trên thị trường có dòng tải IC tối đa khoảng 50mA
đảm bảo đủ khả năng cấp dòng cho một LED (khoảng 5 – 10 mA). Để hạn chế
dòng cho LED ta dung điện trở có giá trị 560Ω mắc từ cực C của transistor tới
chân A của LED. Như vậy với sụt áp qua LED bình thường cỡ 2V thì dòng chạy
qua LED khoảng:

ILED = (5 – 2)/ 560


= 5.4 mA

Đó cũng chính là dòng IC. Như vậy với hệ số khuếch đại khoảng 200 thì
dòng IB cần thiết cấp cho transistor là:

IB = 5.4/ 200
= 0.027 mA

Với sụt áp trên mối EB của transistor khoảng 0.7V và điện áp mức 0 tại
chân của IC vi điều khiển khoảng 0.5V thì điện trở RB có giá trị:

RB = (5 – 0.7 – 0.5)/ 0.027


= 140 K

Ở đây nếu ta dùng RB = 33K thì hệ số bão hoà sâu sẽ là 4.2 đảm bảo các
LED sang hết công suất và các transistor hầu như không nóng do không có sụt
áp ngang qua tiếp giáp EC.

Như vậy khối xuất và đệm ngõ ra hang gồm 8 mạnh đệm, mỗi mạch gồm
một transistor loại A564 có cực B nối tới chân IC vi điều khiển thông qua một
địên trở 33K. Cực C nối tới Anod của LED thông qua một điện trở 560Ω . Cực
E nối lên +5V.

V.3. Thiết kế khối giải mã cột:

Như đã nói ở trên, bang LED có 32 cột và các cột được nối tới chân K của
các LED. Tại mỗi thời điểm chỉ có duy nhất một cột được “mở” (nếu hai cột thì
hai cột sẽ luôn sang giống nhau) vì vậy yêu cầu của mạch giải mã cột là với mỗi
tín hiệu địa chỉ vào phải giải mã được ra duy nhất 1 trong 32 cột và phải có tín
hiệu điều khiển ra LED ở mức logic 0

21 BKFET Group
Kỹ thuật vi xử lý

Để thực hiện được chức năng này, chúng ta sẽ sử dụng 1 IC 74LS138 cho
mỗi ma trận LED (4 IC cho 4 ma trận). Vì IC 74LS138 có 8 ngõ ra rất phù hợp
với ma trận LED 8x8. Có thể nói đây là phần tử quan trọng nhất của mạch giải
mã cột.

V.3.1. Giới thiệu IC 74LS138:

IC 74LS138 là loại IC dùng giải mã/ giải đa hợp (Decoder/Demultiplexer)


làm việc được với tần số cao, nó đặc biệt thích hợp khi dùng làm bộ giải mã địa
chỉ tác động vào chân chọn IC (Chip Select) của các IC nhớ lưỡng cực.

V.3.1.1. Sơ đồ và chức năng các chân của IC 74LS138:

16 15 14 13 12 11 10 9
O \ O \ O \ O \ O \ O5\ O6\
VCC 0 1 2 3 4
74138
O\
A B C G2 G2 G 7 GND
1 2 3 4 5 6 7 8
Sơ đồ chân IC 74LS138

VCC, GND: Dùng cấp nguồn cho IC hoạt động. VCC được nối đến cực
dương của nguồn (+5V), GND được nối đến cực âm của nguồn (0V).

A, B, C: Các ngõ vào chọn trạng thái ngõ ra (có thể coi như đây là các
đường địa chỉ của IC 74LS138). Tổ hợp trạng thái logic của 3 ngõ vào này ta sẽ
được 8 trạng thái logic khác nhau ở 8 ngõ ra của IC (23 = 8). Với A là bit có
trọng số thấp nhất.

G2A, G2B, G1: Là 3 ngõ vào điều khiển IC. IC chỉ được phép hoạt động
khi cả 3 chân này đều ở mức logic phù hợp (cụ thể là G2A, G2B ở mức logic 0,
G1 ở mức logic 1). Chỉ cần 1 trong 3 chân này ở mức logic không phù hợp thì
IC sẽ bị cấm ngay lập tức (tất cả các ngõ ra đều ở mức logic cao) bất chấp trạng
thái ở các ngõ vào còn lại.

O0 – O7: Các ngõ ra của IC. Tùy thuộc vào trạng thái của các đường
địa chỉ mà ta có trạng thái ở ngõ ra tương ứng. Khi IC đang hoạt động bình
thường (cả 3 chân điều khiển G đều ở mức logic phù hợp) thì tại một thời điểm

22 BKFET Group
Kỹ thuật vi xử lý

nhất định chỉ có một ngõ ra duy nhất ở mức logic 0, tất cả các ngõ còn lại đều ở
mức logic 1.

V.3.1.2. Sơ đồ mô tả hoạt động bên trong IC 74LS138:

23 BKFET Group
Kỹ thuật vi xử lý

V.3.1.3. Bảng trạng thái của IC 74138:

VÀO RA
G2A\ G2B\ G1 A B C O0\ O1\ O2\ O3\ O4\ O5\ O6\ O7\
H x x x x x H H H H H H H H
x H x x x x H H H H H H H H
x x L x x x H H H H H H H H
L L H L L L L H H H H H H H
L L H H L L H L H H H H H H
L L H L H L H H L H H H H H
L L H H H L H H H L H H H H
L L H L L H H H H H L H H H
L L H H L H H H H H H L H H
L L H L H H H H H H H H L H
L L H H H H H H H H H H H L

H: Mức 1
L: Mức 0.
x: Tuỳ ý

V.3.1.4. Nguyên tắc hoạt động của IC 74LS138:

Dựa vào bảng trạng thái ta thấy: Chỉ cần 1 trong 3 chân cho phép (G2A,
G2B, G1) ở trạng thái không đúng (không cho phép IC hoạt động) thì tất cả các
ngõ ra của IC 74LS138 đều ở mức logic cao bất chấp trạng thái logic của các
chân địa chỉ (A, B, C). Chẳng hạn như khi chân G2A ở mức logic cao thì tất cả
các ngõ ra của IC đều ở mức logic cao, bất chấp trạng thái của các chân còn lại
như: G2B, G1, A, B, C.

24 BKFET Group
Kỹ thuật vi xử lý

Ta nhận thấy với 3 đường địa vào IC sẽ giải mã tối đa được 8 ngõ ra. Giả
sử CBA = 000 (với điều kiện là các ngõ vào điều khiển đều phải ở mức logic
thích hợp để IC hoạt động) thì chỉ có duy nhất một ngõ ra đầu tiên là ở mức
logic thấp, tất cả các ngõ ra còn lại đều ở mức logic cao.

Khi địa chỉ đưa vào IC tăng lên một (001) thì mức logic thấp này được
chuyển đến ngõ ra thứ hai và cũng chỉ có duy nhất ngõ ra này ở mức logic thấp.
Khi địa chỉ đưa vào IC là 111 thì mức logic thấp sẽ ở ngõ ra cuối cùng (O 7). Như
vậy, mức logic thấp ở ngõ ra sẽ di chuyển tương ứng với địa chỉ đưa vào IC.

V.3.2. Mạch giải mã cột:

25 BKFET Group
Kỹ thuật vi xử lý

Mạch giải mã cột

Vì bảng đèn có 32 cột, nên chúng ta cần 32 đầu ra, bởi vậy cần dùng 4 IC
74LS138, mỗi IC giải mã cho một ma trận khác nhau. Để đảm bảo các IC không
đồng thời giải mã cột một lúc, mà tại mỗi thời điểm chỉ có một IC đuợc phép
giải mã nên các IC này được mắc như trên hình vẽ. 4 IC 74LS138 được điều
khiển bởi một IC 74LS139 có vừa đúng 4 đầu ra. Với mỗi tổ hợp hai bít địa chỉ
vào thì tương tự như IC 74LS138, tại ngõ ra IC 74LS139 chỉ có một ngõ có mức
logic 0 còn lại là mức 1. Các đầu ra này được dùng để chọn IC (74LS138).
Muốn vậy, chúng được nối trực tiếp với một trong hai đầu G2 của mỗi IC
74LS138 (G2 là chân cho phép khi ở mức 0). Các đầu G2 còn lại nối xuống
mass và G1 nối lên +5V để luôn ở trạng thái cho phép.
26 BKFET Group
Kỹ thuật vi xử lý

Vậy chúng ta có tất cả là 5 bit địa chỉ trong đó, ba bit có trọng số thấp
nhất chính là ba chân địa chỉ CBA của các IC 74LS138 (các chân địa chỉ của các
IC mắc song song nhau). Hai bit trọng số cao nhất chính là hai bit địa chỉ vào
của IC 74LS139.

Các chân địa chỉ này được nối trực tiếp với các chân của IC vi điều khiển.
Cụ thể, chúng được nối vào 5 bit có trọng số thấp của Port 2 của IC vi điều
khiển để thuận tiện cho việc lập trình. Muốn “mở” cột nào, chúng ta chỉ cần gửi
địa chỉ của cột đó ra Port 2 là được.

Ngoài ra chúng ta còn có thể điều khiển cho cả bảng LED tắt bằng cách
treo chân P2.5 của IC vi điều khiển lên mức 1. Điều đó có được là vì chân này
được nối tới chân cho phép (G) của IC 74LS139. Chân này được điều khiển
bằng mức 0 vì vậy khi bị treo lên 1 nó sẽ ngừng việc giải mã của IC 74LS139 và
cả 4 đầu ra đều ở mức 1. Đương nhiên điều đó sẽ làm ngừng cả quá trình giải
mã của 4 IC 74LS138 làm cả 32 cột đều bị “đóng” (kéo lên mức 1) và cả ma
trận LED tắt ngay lập tức.

27 BKFET Group
Kỹ thuật vi xử lý

V.4. Thiết kế khối ma trận LED:

Ma trận LED trong thiết kế được ghép bởi 4 ma trận LED 8x8 (8 hàng x
32 cột). Mỗi ma trận LED 8x8 có 16 chân, trong đó 8 Anod và 8 Cathod. Để
ghép được thành 1 ma trận 8x32 và điều khiển được bảng đèn hiện chữ, chạy
chữ, như đã nói ở trên chúng ta cần phải ghép nối như sau:

- Nối 4 chân Anod có cùng vị trí trong mỗi LED lại với nhau và lấy đó
làm một chân Anod chung cho bảng ma trận mới. Như thế ta sẽ được 8
chân Anod (là chân hàng) của ma trận LED.
- 32 chân Cathod của 4 ma trận 8x8 sẽ là 32 Cathod của ma trận LED
8x32.
Trong mỗi LED ma trận 8x8 có:

- Các chân Anod theo thứ tự từ trên xuống là: 8,3,16,5,9,15,10,13.


- Các chân Cathod theo thứ tự từ phải qua trái là: 1,2,6,14,7,12,11,4.
1 2 3 4 5 6 7 8

28 BKFET Group

9 10 11 12 13 14 15 16
Kỹ thuật vi xử lý

Hình vẽ LED ma trận 8x8 và các chân

V.5. Thiết kế khối bàn phím:

Khối này gồm có 8 phím bấm. Các phím không được nối ghép theo
kiểu ma trận truyền thống mà đơn giản chỉ là nối vào 8 chân của 1 Port
của IC vi điều khiển. Việc này sẽ thuận tiện cho việc lập trình giải mã bàn
phím mà vẫn đủ để thực hiện các công việc cần thiết. Port 0 được chọn
cho mục đích này. Như vậy Port 0 vừa là cổng xuất vừa là cổng nhập dữ
liệu.

Điều này là được phép vì bình thường trong quá trình hoạt động,
các phím không dùng đến nên sự có mặt hay không của chúng là như
nhau. Mục đích của việc thiết kế cho bàn phím vào cổng P0 là để chứng
minh khả năng đa nhiệm của các chân vi điều khiển.

V.6. Thiết kế khối hiển thị LCD:

29 BKFET Group
Kỹ thuật vi xử lý

Trên thực tế, khối LCD là khối đơn giản nhất trong mạch, khối này chỉ gồm
một Jack cắm 16 chân vào một màn hiển thị LCD cỡ 2 dòng 16 cột. Theo chuẩn chung
chân 1 và 2 của Jack là hai chân cấp nguồn. Tiếp theo, chân 3 là chân điều khiển độ
tương phản được mắc vào một biến trở 10K để phân áp. Điều chỉnh biến trở ta có thể
điều chỉnh được độ tương phản của các dòng chữ hiện trên màn LCD.

Tiếp theo là 3 chân điều khiển việc vào ra dữ liệu cho LCD. Các chân này được
nối trực tiếp với 3 chân 6,7,8 của vi điều khiển. Tiếp theo nữa là 8 chân dữ liệu của
LCD từ D0 đến D7 được nối trực tiếp với Port 3 của vi điều khiển để thuận tiện cho
việc gửi dũ liệu ra LCD. Sau cùng là hai chân cho đèn nền. Ở đây ta nối thẳng với
nguồn 5V để có độ sang tối đa.

Như vậy thành phần chủ yếu của khối LCD là màn hình LCD được thiết kế có
thể rút ra cắm vào để tiện lợi vì chỉ cần đến khi có sự điều chỉnh dòng chữ.

30 BKFET Group
Kỹ thuật vi xử lý

V.7. Kết quả mạch in thực tế:

31 BKFET Group
Kỹ thuật vi xử lý

PHẦN VI:

THIẾT KẾ CHƯƠNG TRÌNH CHO VI ĐIỀU KHIỂN


VI.1. Tóm tắt thuật toán:

Theo nguyên lý và thiết kế phần cứng của mạch quảng cáo, chúng ta sẽ
xây dựng thuật toán cho chương trình điều khiển để nạp vào vi điều khiển
AT89S52.

Trong sơ đồ nguyên lý, dữ liệu từ Port 0 sẽ được xuất ra hàng, còn Port 2
sẽ có 5 chân được sử dụng làm 5 chân địa chỉ đưa vào 4 IC 74LS138 để tiến
hành giải mã cột. Bàn phím nối tới P0. Chân điều khiển LCD nối tới 3 chân
thuộc Port 1. Các chân dữ liệu của LCD nối tới cổng P3. Như vậy nhiệm vụ của
chương trình sẽ là:

- Đầu tiên quét bàn phím để phát hiện tín hiện điều khiển.

- Khi phát hiện phím ấn thì thực hiện lệch tương ứng và gửi thông báo ra
LCD.

- Thực hiện việc quét ma trận LED. Đầu tiên xuất địa chỉ cột ra P2 để
“mở” các cột lần lượt từ cột 0 tới 31. Ngay sau khi “mở” các cột, lập tức
xuất dữ liệu hàng được đọc từ ROM ra P0 để làm sáng các LED thích hợp
trên cột. Trễ một vài chu kỳ máy để cho mắt lưu lại cảm giác sáng rồii
lập tức ngừng xuất dữ liệu hàng và chuyển sang cột tiếp theo và xuất dữ
liệu hàng khác. Công việt mở cột và xuất dữ liệu hang phải đồng bộ, nhịp
nhàng và nhanh để chốnh hiện tượng nháy, giật dòng chữ.

- Sau khi quét hết cả khung hình là 32 cột, thực hiện quét lại chính khung
hình ấy nhiều lần để cho chúng ta có thể nhìn thấy rõ nội dung dòng chữ
chạy. Điều chỉnh số lần quét lại có thể điều chỉnh tốc độ chạy chữ.

- Sau khi quét một khung hình vói số lần thích hợp, cho dòng chữ dịch
sang bên trái bằng cách: Khi mở cột 0 thì xuất dữ liệu hàng ứng với cột 1
khung hình trước. Mở cột 1 thì xuất dữ liệu ứng với cột 2 khung hinh
trước…. Cứ như thế tạo thành khung hình mới là tịnh tiến của toàn bộ
khung hình trước sang bên trái một cột LED.

Để có thể xuất dữ liệu hàng một các dễ dàng và nhanh chóng, chúng ta
khai báo dữ liệu theo từng Byte để tạo thành một chuỗi các Byte trong ROM.
Sau đó mỗi khi xuất dữ liệu hàng, chỉ cần đọc trong ROM ra theo từng Byte rồi
32 BKFET Group
Kỹ thuật vi xử lý

đưa thẳng ra P0. Bit 0 ứng với LED sáng, bit 1 ứng với LED tối. Chúng ta hoàn
toàn có thể biêt được địa chỉ bắt đầu của chuỗi những Byte ROM này. Vì vậy
các Byte ROM được truy xuất theo nguyên tắc:

Địa chỉ = Bộ đếm + Con trỏ

Con trỏ mà chúng ta sử dụng ở đây là con trỏ dữ liệu DPTR. Đầu tiên con
trỏ sẽ được đặt ở địa chỉ đầu bảng dữ liệu, bộ đếm là đếm địa chỉ offset, chúng ta
sẽ dùng thanh chứa A chứa địa chỉ này. Và lệnh sau sẽ truy xuất vào dữ liệu:

MOVC A, @A+DPTR

Khi đó chỉ việc xuất dữ liệu từ thanh chứa A ra Port 0 là được.


Ở đây bộ đếm được dùng là bộ đếm giảm, giá trị thanh chứa được gán đầu tiên
là 32. Một khung 32 cột (32 byte dữ liệu ) sẽ được quét rất nhanh và quét làm
nhiều lần để mắt ta có thể thấy được hình ảnh một cách rõ nét ( hiện tượng lưu
ảnh trên võng mạc ). Khi quét xong số lần quét đã định, con trỏ sẽ tăng lên 1, và
công việc sẽ được lặp lại. Lúc đó hình ảnh sẽ dịch chuyển (đó là do dữ liệu đã
dịch đi ). Khi con trỏ đến một vị trí mà dữ liệu đã được truy xuất hết, chúng ta sẽ
đặt nó quay trở về vị trí ban đầu. Và công việc cứ thế được lặp lại. Trên bảng
quảng cáo chúng ta sẽ được thấy một dòng chữ chạy từ phải qua trái, rồi mất đi
và lại hiện ra
Đồng thời với việc xuất dữ liệu ra hàng chúng ta cũng phải tạo một bộ
đếm 32 để giải mã cột, bộ đếm hoạt động gần như cùng lúc với xuất dữ liệu

33 BKFET Group
Kỹ thuật vi xử lý

VI.2. Chương trình Assembly:

Chương trình được lập trình bằng ngôn ngữ lâp trình là Assembly. Sau
đây là mã nguồn của chương trình:

34 BKFET Group
Kỹ thuật vi xử lý

; ------------- READS51 generated header --------------


; module : C:\Program Files\Rigel\Reads51\Work\code vxl\code.asm
; created : 02:20:13, Tuesday, May 08, 2007
; -----------------------------------------------------
#include <sfr52.inc>
#define RS P1.5
#define RW P1.6
#define E P1.7
ORG 0 ; Khoi dong chuong trinh tai day
LJMP MAIN ; nhay toi chuong trinh chinh
TOCDO DATA 100
CACHE DATA 0
; Khai bao du lieu voi dong thong tin
; DONG CHU 'DESIGNED BY BKFET GROUP-NHOM4-DT9-10-K49
KHOA DTVT-DH BACHKHOA HN'
;; GOM 76 KI TU CAN 456 BYTE
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG

35 BKFET Group
Kỹ thuật vi xử lý

DB 255,255,255,255,255,255 ;KY TU TRONG


DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,126,126,189,195 ;D
DB 255,0,102,102,126,126 ;E
DB 255,185,118,110,94,189 ;S
DB 255,126,126,0,126,126 ;I
DB 255,129,126,110,110,141 ;G
DB 255,0,243,231,207,0 ;N
DB 255,0,102,102,126,126 ;E
DB 255,0,126,126,189,195 ;D
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,102,102,102,153 ;B
DB 255,252,251,7,251,252 ;Y
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,102,102,102,153 ;B
DB 255,0,231,219,189,126 ;K
DB 255,0,246,246,246,254 ;F
DB 255,0,102,102,126,126 ;E
DB 255,254,254,0,254,254 ;T
DB 255,255,255,255,255,255 ;KY TU TRONG

36 BKFET Group
Kỹ thuật vi xử lý

DB 255,129,126,110,110,141 ;G
DB 255,0,230,214,182,121 ;R
DB 255,129,126,126,126,129 ;0
DB 255,128,127,127,127,128 ;U
DB 255,0,246,246,246,249 ;P
DB 255,255,247,247,247,255 ;DAU -
DB 255,0,243,231,207,0 ;N
DB 255,0,231,231,231,0 ;H
DB 255,129,126,126,126,129 ;0
DB 255,0,251,231,251,0 ;M
DB 255,224,239,239,1,239 ;4
DB 255,255,247,247,247,255 ;DAU -
DB 255,0,126,126,189,195 ;D
DB 255,254,254,0,254,254 ;T
DB 255,177,110,110,110,129 ;9
DB 255,255,247,247,247,255 ;DAU -
DB 255,255,251,125,0,127 ;1
DB 255,129,126,126,126,129 ;0
DB 255,255,247,247,247,255 ;DAU -
DB 255,0,231,219,189,126 ;K
DB 255,224,239,239,1,239 ;4

37 BKFET Group
Kỹ thuật vi xử lý

DB 255,177,110,110,110,129 ;9
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,231,219,189,126 ;K
DB 255,0,231,231,231,0 ;H
DB 255,129,126,126,126,129 ;0
DB 255,3,237,238,237,3 ;A
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,126,126,189,195 ;D
DB 255,254,254,0,254,254 ;T
DB 255,224,159,127,159,224 ;V
DB 255,254,254,0,254,254 ;T
DB 255,255,247,247,247,255 ;DAU -
DB 255,0,126,126,189,195 ;D
DB 255,0,231,231,231,0 ;H
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,102,102,102,153 ;B
DB 255,3,237,238,237,3 ;A
DB 255,129,126,126,126,189 ;C
DB 255,0,231,231,231,0 ;H
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,231,219,189,126 ;K

38 BKFET Group
Kỹ thuật vi xử lý

DB 255,0,231,231,231,0 ;H
DB 255,129,126,126,126,129 ;0
DB 255,3,237,238,237,3 ;A
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,231,231,231,0 ;H
DB 255,0,243,231,207,0 ;N
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
;;------------------------------------------------------------------------
;; DONG CHU 'GVHD PHAM NGOC NAM-SV DAO VIET HUNG - DANG
MINH SON - HOANG MINH CHAU - PHAM NGOC TUNG -
HA MINH CHI DUNG - NGUYEN NGOC ANH'
;; GOM 132 KI TU CAN 792 BYTE
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,129,126,110,110,141 ;G
DB 255,224,159,127,159,224 ;V

39 BKFET Group
Kỹ thuật vi xử lý

DB 255,0,231,231,231,0 ;H
DB 255,0,126,126,189,195 ;D
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,246,246,246,249 ;P
DB 255,0,231,231,231,0 ;H
DB 255,3,237,238,237,3 ;A
DB 255,0,251,231,251,0 ;M
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,129,126,126,126,129 ;0
DB 255,129,126,126,126,189 ;C
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,243,231,207,0 ;N
DB 255,3,237,238,237,3 ;A
DB 255,0,251,231,251,0 ;M
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,247,247,247,255 ;DAU -
DB 255,185,118,110,94,189 ;S
DB 255,224,159,127,159,224 ;V
DB 255,255,255,255,255,255 ;KY TU TRONG

40 BKFET Group
Kỹ thuật vi xử lý

DB 255,0,126,126,189,195 ;D
DB 255,3,237,238,237,3 ;A
DB 255,129,126,126,126,129 ;0
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,224,159,127,159,224 ;V
DB 255,126,126,0,126,126 ;I
DB 255,0,102,102,126,126 ;E
DB 255,254,254,0,254,254 ;T
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,231,231,231,0 ;H
DB 255,128,127,127,127,128 ;U
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,247,247,247,255 ;DAU -
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,126,126,189,195 ;D
DB 255,3,237,238,237,3 ;A
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,255,255,255,255,255 ;KY TU TRONG

41 BKFET Group
Kỹ thuật vi xử lý

DB 255,0,251,231,251,0 ;M
DB 255,126,126,0,126,126 ;I
DB 255,0,243,231,207,0 ;N
DB 255,0,231,231,231,0 ;H
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,185,118,110,94,189 ;S
DB 255,129,126,126,126,129 ;0
DB 255,0,243,231,207,0 ;N
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,247,247,247,255 ;DAU -
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,231,231,231,0 ;H
DB 255,129,126,126,126,129 ;0
DB 255,3,237,238,237,3 ;A
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,251,231,251,0 ;M
DB 255,126,126,0,126,126 ;I
DB 255,0,243,231,207,0 ;N
DB 255,0,231,231,231,0 ;H

42 BKFET Group
Kỹ thuật vi xử lý

DB 255,255,255,255,255,255 ;KY TU TRONG


DB 255,129,126,126,126,189 ;C
DB 255,0,231,231,231,0 ;H
DB 255,3,237,238,237,3 ;A
DB 255,128,127,127,127,128 ;U
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,247,247,247,255 ;DAU -
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,246,246,246,249 ;P
DB 255,0,231,231,231,0 ;H
DB 255,3,237,238,237,3 ;A
DB 255,0,251,231,251,0 ;M
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,251,231,251,0 ;M
DB 255,3,237,238,237,3 ;A
DB 255,0,243,231,207,0 ;N
DB 255,0,231,231,231,0 ;H
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,254,254,0,254,254 ;T
DB 255,128,127,127,127,128 ;U
DB 255,0,243,231,207,0 ;N

43 BKFET Group
Kỹ thuật vi xử lý

DB 255,129,126,110,110,141 ;G
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,247,247,247,255 ;DAU -
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,231,231,231,0 ;H
DB 255,3,237,238,237,3 ;A
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,251,231,251,0 ;M
DB 255,126,126,0,126,126 ;I
DB 255,0,243,231,207,0 ;N
DB 255,0,231,231,231,0 ;H
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,129,126,126,126,189 ;C
DB 255,0,231,231,231,0 ;H
DB 255,126,126,0,126,126 ;I
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,126,126,189,195 ;D
DB 255,128,127,127,127,128 ;U
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,255,255,255,255,255 ;KY TU TRONG

44 BKFET Group
Kỹ thuật vi xử lý

DB 255,255,247,247,247,255 ;DAU -
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,128,127,127,127,128 ;U
DB 255,252,251,7,251,252 ;Y
DB 255,0,102,102,126,126 ;E
DB 255,0,243,231,207,0 ;N
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,0,243,231,207,0 ;N
DB 255,129,126,110,110,141 ;G
DB 255,129,126,126,126,129 ;0
DB 255,129,126,126,126,189 ;C
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,3,237,238,237,3 ;A
DB 255,0,243,231,207,0 ;N
DB 255,0,231,231,231,0 ;H
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG

45 BKFET Group
Kỹ thuật vi xử lý

DB 255,255,255,255,255,255 ;KY TU TRONG


; CAC CHU CAI
; GOM 49 CHU CAI CAN 286 BYTE
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,3,237,238,237,3 ;A
DB 255,0,102,102,102,153 ;B
DB 255,129,126,126,126,189 ;C
DB 255,0,126,126,189,195 ;D
DB 255,0,102,102,126,126 ;E
DB 255,0,246,246,246,254 ;F
DB 255,129,126,110,110,141 ;G
DB 255,0,231,231,231,0 ;H
DB 255,126,126,0,126,126 ;I
DB 255,190,126,128,254,254 ;J
DB 255,0,231,219,189,126 ;K
DB 255,0,127,127,127,127 ;L
DB 255,0,251,231,251,0 ;M

46 BKFET Group
Kỹ thuật vi xử lý

DB 255,0,243,231,207,0 ;N
DB 255,129,126,126,126,129 ;0
DB 255,0,246,246,246,249 ;P
DB 255,129,126,94,190,65 ;Q
DB 255,0,230,214,182,121 ;R
DB 255,185,118,110,94,189 ;S
DB 255,254,254,0,254,254 ;T
DB 255,224,159,127,159,224 ;V
DB 255,128,127,127,127,128 ;U
DB 255,24,231,231,231,24 ;X
DB 255,252,251,7,251,252 ;Y
DB 255,62,94,102,122,124 ;Z
DB 255,0,191,207,191,0 ;W
DB 255,253,254,78,246,249 ;DAU?
DB 255,64 ;DAU !
DB 255,127 ;DAN .
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,129,126,126,126,129 ;0
DB 255,255,251,125,0,127 ;1
DB 255,61,94,110,118,121 ;2
DB 255,190,118,114,116,142 ;3

47 BKFET Group
Kỹ thuật vi xử lý

DB 255,224,239,239,1,239 ;4
DB 255,112,118,118,118,142 ;5
DB 255,129,118,118,118,143 ;6
DB 255,255,254,254,254,0 ;7
DB 255,153,102,118,102,153 ;8
DB 255,177,110,110,110,129 ;9
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
;;----------------------------------------------------------
; TEST MA TRAN
; QUET TAT CA CAC LED CAN 288 BYTE
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255,255,255,255,255 ;KY TU TRONG
DB 255,255
DB 254,254,254,254,254,254

48 BKFET Group
Kỹ thuật vi xử lý

DB 254,254,254,254,254,254
DB 254,254,254,254,254,254
DB 254,254,254,254,254,254
DB 254,254,254,254,254,254
DB 254,254
DB 253,253,253,253,253,253
DB 253,253,253,253,253,253
DB 253,253,253,253,253,253
DB 253,253,253,253,253,253
DB 253,253,253,253,253,253
DB 253,253
DB 251,251,251,251,251,251
DB 251,251,251,251,251,251
DB 251,251,251,251,251,251
DB 251,251,251,251,251,251
DB 251,251,251,251,251,251
DB 251,251
DB 247,247,247,247,247,247
DB 247,247,247,247,247,247
DB 247,247,247,247,247,247
DB 247,247,247,247,247,247

49 BKFET Group
Kỹ thuật vi xử lý

DB 247,247,247,247,247,247
DB 247,247
DB 239,239,239,239,239,239
DB 239,239,239,239,239,239
DB 239,239,239,239,239,239
DB 239,239,239,239,239,239
DB 239,239,239,239,239,239
DB 239,239
DB 223,223,223,223,223,223
DB 223,223,223,223,223,223
DB 223,223,223,223,223,223
DB 223,223,223,223,223,223
DB 223,223,223,223,223,223
DB 223,223
DB 191,191,191,191,191,191
DB 191,191,191,191,191,191
DB 191,191,191,191,191,191
DB 191,191,191,191,191,191
DB 191,191,191,191,191,191
DB 191,191
DB 127,127,127,127,127,127

50 BKFET Group
Kỹ thuật vi xử lý

DB 127,127,127,127,127,127
DB 127,127,127,127,127,127
DB 127,127,127,127,127,127
DB 127,127,127,127,127,127
DB 127,127
;;***************************************************************
*******************************************
;CHUONG TRINH CHINH
ORG 0800H
MAIN:
MOV P0,#FFH
MOV P1,#255
MOV P3,#255
ANL P2,#31
SETB P2.5
LCALL HIENLCD1 ; hien loi chao
CHO: ; ham cho den khi co phim nhan
LCALL DELAY
MOV P0, #255
MOV R0,P0
CJNE R0,#255,CHO1
SJMP CHO

51 BKFET Group
Kỹ thuật vi xử lý

CHO1:
JNB P0.7, M1 ; nhan phim 8
JNB P0.0, NHANPHIM1 ; nhan phim 1
JNB P0.2, NHANPHIM2 ; nhan phim 2
JNB P0.4, NHANPHIM3 ; nhan phim 3
JNB P0.6, NHANPHIM4 ; nhan phim 4
JNB P0.1, TOCDO1 ; nhan phim 5
JNB P0.3, TOCDO2 ; nhan phim 6
NHANPHIM1:
MOV R0,P0
CJNE R0,#255,NHANPHIM1
LCALL M1
LCALL CHO
NHANPHIM2:
MOV R0,P0
CJNE R0,#255,NHANPHIM2
LCALL M2
LCALL CHO
NHANPHIM3:
MOV R0,P0
CJNE R0,#255,NHANPHIM3

52 BKFET Group
Kỹ thuật vi xử lý

LCALL M3
LCALL CHO
NHANPHIM4:
MOV R0,P0
CJNE R0,#255,NHANPHIM4
LCALL M4
LCALL CHO
TOCDO1:
MOV R0,P0
CJNE R0,#255,TOCDO1
MOV TOCDO,#40 ; toc do quet nhanh
LCALL HIENLCD2
LCALL HIENTOCDO1
LCALL CHO
TOCDO2:
MOV R0,P0
CJNE R0,#255,TOCDO2
MOV TOCDO,#150 ; toc do quet cham
LCALL HIENLCD2
LCALL HIENTOCDO2
LCALL CHO

53 BKFET Group
Kỹ thuật vi xử lý

M1: ; hien thi message 1


LCALL HIENLCD2
LCALL HIENLCD3
LCALL DELAY1S
MOV P0,#255
MOV DPTR, #03H ; con tro du lieu
CLR P2.5
MAIN1:
MOV A, #0
MOV B, A
MOV R6, #00H ; So lan quet mot hinh
MOV R0, #0
SCAN1:
MOV A,CACHE
INC R6 ; Tang so lan quet
; MOT LAN QUET
ONESCAN1:
CLR A
MOV A, B
LCALL TABLE

54 BKFET Group
Kỹ thuật vi xử lý

MOV P0,#255
LCALL DELAY1
MOV P2, R0
MOV P0, A ; Hien thi du lieu
LCALL DELAY
INC R0 ; Tang bo dem giai ma cot
CJNE R0, #32, ONESCAN1 ; Kiem tra dieu kien dem cua bo dem
32
LCALL SETCOUNTER
MOV CACHE,A
MOV A,R6
SUBB A,TOCDO
CJNE A,0, SCAN1
LCALL DELAY1
MOV R6,#0
INC DPTR ; tang con tro du lieu de dich anh
MOV R1, DPH
MOV R4, DPL
CJNE R1,#01,MAIN1
CJNE R4, #0AAH, MAIN1 ; Kiem tra da ket thuc message chua
LJMP M1
;---------------------------------------------------------------------------

55 BKFET Group
Kỹ thuật vi xử lý

M2: ; hien thi message 2


LCALL HIENLCD2
LCALL HIENLCD4
LCALL DELAY1S
MOV P0,#255
MOV DPTR, #01CBH
CLR P2.5
MAIN2:
MOV A, #0
MOV B, A
MOV R6, #00H ; So lan quet mot hinh
MOV R0, #0
SCAN2:
MOV A,CACHE
INC R6 ; Tang so lan quet
; MOT LAN QUET
ONESCAN2:
CLR A
MOV A, B
LCALL TABLE
MOV P0,#255

56 BKFET Group
Kỹ thuật vi xử lý

LCALL DELAY1
MOV P2, R0
MOV P0, A ; Hien thi du lieu
LCALL DELAY
INC R0 ; Tang bo dem giai ma cot
CJNE R0, #32, ONESCAN2 ; Kiem tra dieu kien dem cua bo dem
32
LCALL SETCOUNTER
MOV CACHE,A
MOV A,R6
SUBB A,TOCDO
CJNE A, 0, SCAN2
LCALL DELAY1
MOV R6,#0
INC DPTR ; tang con tro de dich anh
MOV R1, DPH
MOV R4, DPL
CJNE R1,#04,MAIN2
CJNE R4, #0C2H, MAIN2 ; Kiem tra da ket thuc message chua
LJMP M2
;;-------------------------------------------------------------------------------
M3: ; hien thi message 3

57 BKFET Group
Kỹ thuật vi xử lý

LCALL HIENLCD2
LCALL HIENLCD5
LCALL DELAY1S
MOV P0,#255
MOV DPTR, #4E3H
CLR P2.5
MAIN3:
MOV A, #0
MOV B, A
MOV R6, #00H ; So lan quet mot hinh
MOV R0, #0
SCAN3:
INC R6 ; Tang so lan quet
; MOT LAN QUET
ONESCAN3:
CLR A
MOV A, B
LCALL TABLE
MOV P0,#255
LCALL DELAY1
MOV P2, R0

58 BKFET Group
Kỹ thuật vi xử lý

MOV P0, A ; Hien thi du lieu


LCALL DELAY
INC R0 ; Tang bo dem giai ma cot
CJNE R0, #32, ONESCAN3 ; Kiem tra dieu kien dem cua bo dem
32
LCALL SETCOUNTER
CJNE R6,#100, SCAN3
LCALL DELAY1
MOV R6,#0
INC DPTR ; tang con tro de dich anh
MOV R1, DPH
MOV R4, DPL
CJNE R1,#05,MAIN3
CJNE R4, #0E0H, MAIN3 ; Kiem tra da ket thuc message chua
LJMP M3
;;---------------------------------------------------------------------
M4: ; hien thi test ma tran led
LCALL HIENLCD6
LCALL DELAY1S
MOV P0,#255
MOV DPTR, #601H
CLR P2.5

59 BKFET Group
Kỹ thuật vi xử lý

MAIN4:
MOV A, #0
MOV B, A
MOV R6, #00H ; So lan quet mot hinh
MOV R0, #0
SCAN4:
INC R6 ; Tang so lan quet
; MOT LAN QUET
ONESCAN4:
CLR A
MOV A, B
LCALL TABLE
MOV P0,#255
LCALL DELAY1
MOV P2, R0
MOV P0, A ; Hien thi du lieu
LCALL DELAY
INC R0 ; Tang bo dem giai ma cot
CJNE R0, #32, ONESCAN4 ; Kiem tra dieu kien dem cua bo dem
32
LCALL SETCOUNTER
CJNE R6,#100, SCAN4

60 BKFET Group
Kỹ thuật vi xử lý

LCALL DELAY1
MOV R6,#0
INC DPTR ; tang con tro de dich anh
MOV R1, DPH
MOV R4, DPL
CJNE R1,#07,MAIN4
CJNE R4, #14, MAIN4 ; Kiem tra da ket thuc message chua
LJMP M4
; Bang truy xuat du lieu
TABLE:
INC A
MOV B, A
MOVC A, @A+DPTR
RET

SETCOUNTER: ;Reset bo dem giai ma cot


CLR A
MOV R0, A
MOV B, #0
RET

61 BKFET Group
Kỹ thuật vi xử lý

KHOIDONGLCD:
MOV A,#38H
LCALL LENH
MOV A,#0eh
LCALL LENH
MOV A,#1H
LCALL LENH
MOV A,#80h
LCALL LENH
RET

HIENLCD1: ; hien thi 'Xin chao!!! Chon dong chu'


LCALL KHOIDONGLCD
MOV A,#'X'
LCALL HIENTHI
MOV A,#'i'
LCALL HIENTHI
MOV A,#'n'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI

62 BKFET Group
Kỹ thuật vi xử lý

MOV A,#'c'
LCALL HIENTHI
MOV A,#'h'
LCALL HIENTHI
MOV A,#'a'
LCALL HIENTHI
MOV A,#'o'
LCALL HIENTHI
MOV A,#'!'
LCALL HIENTHI
MOV A,#'!'
LCALL HIENTHI
MOV A,#'!'
LCALL HIENTHI
MOV A,#0C0H
LCALL LENH
MOV A,#'C'
LCALL HIENTHI
MOV A,#'h'
LCALL HIENTHI
MOV A,#'o'

63 BKFET Group
Kỹ thuật vi xử lý

LCALL HIENTHI
MOV A,#'n'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'d'
LCALL HIENTHI
MOV A,#'o'
LCALL HIENTHI
MOV A,#'n'
LCALL HIENTHI
MOV A,#'g'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'c'
LCALL HIENTHI
MOV A,#'h'
LCALL HIENTHI
MOV A,#'u'
LCALL HIENTHI

64 BKFET Group
Kỹ thuật vi xử lý

RET

HIENLCD2: ; hien thi 'Da chon'


LCALL KHOIDONGLCD
MOV A,#'D'
LCALL HIENTHI
MOV A,#'a'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'c'
LCALL HIENTHI
MOV A,#'h'
LCALL HIENTHI
MOV A,#'o'
LCALL HIENTHI
MOV A,#'n'
LCALL HIENTHI
MOV A,#0C0H
LCALL LENH
RET

65 BKFET Group
Kỹ thuật vi xử lý

HIENLCD3:
MOV A,#'D'
LCALL HIENTHI
MOV A,#'E'
LCALL HIENTHI
MOV A,#'S'
LCALL HIENTHI
MOV A,#'I'
LCALL HIENTHI
MOV A,#'G'
LCALL HIENTHI
MOV A,#'N'
LCALL HIENTHI
MOV A,#'E'
LCALL HIENTHI
MOV A,#'D'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'B'

66 BKFET Group
Kỹ thuật vi xử lý

LCALL HIENTHI
MOV A,#'Y'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
RET

HIENLCD4:
MOV A,#'G'
LCALL HIENTHI
MOV A,#'V'
LCALL HIENTHI
MOV A,#'H'
LCALL HIENTHI
MOV A,#'D'
LCALL HIENTHI
MOV A,#' '

67 BKFET Group
Kỹ thuật vi xử lý

LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
RET

HIENLCD5:
MOV A,#'A'
LCALL HIENTHI
MOV A,#'B'
LCALL HIENTHI
MOV A,#'C'
LCALL HIENTHI
MOV A,#'D'
LCALL HIENTHI
MOV A,#'E'
LCALL HIENTHI
MOV A,#'.'

68 BKFET Group
Kỹ thuật vi xử lý

LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
RET

HIENLCD6:
LCALL KHOIDONGLCD
MOV A,#'D'
LCALL HIENTHI
MOV A,#'a'
LCALL HIENTHI
MOV A,#'n'
LCALL HIENTHI
MOV A,#'g'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'T'
LCALL HIENTHI

69 BKFET Group
Kỹ thuật vi xử lý

MOV A,#'e'
LCALL HIENTHI
MOV A,#'s'
LCALL HIENTHI
MOV A,#'t'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
MOV A,#'.'
LCALL HIENTHI
RET

HIENTOCDO1:
MOV A,#'T'
LCALL HIENTHI
MOV A,#'O'
LCALL HIENTHI
MOV A,#'C'
LCALL HIENTHI

70 BKFET Group
Kỹ thuật vi xử lý

MOV A,#' '


LCALL HIENTHI
MOV A,#'D'
LCALL HIENTHI
MOV A,#'O'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'N'
LCALL HIENTHI
MOV A,#'H'
LCALL HIENTHI
MOV A,#'A'
LCALL HIENTHI
MOV A,#'N'
LCALL HIENTHI
MOV A,#'H'
LCALL HIENTHI
RET

HIENTOCDO2:

71 BKFET Group
Kỹ thuật vi xử lý

MOV A,#'T'
LCALL HIENTHI
MOV A,#'O'
LCALL HIENTHI
MOV A,#'C'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'D'
LCALL HIENTHI
MOV A,#'O'
LCALL HIENTHI
MOV A,#' '
LCALL HIENTHI
MOV A,#'C'
LCALL HIENTHI
MOV A,#'H'
LCALL HIENTHI
MOV A,#'A'
LCALL HIENTHI
MOV A,#'M'

72 BKFET Group
Kỹ thuật vi xử lý

LCALL HIENTHI
RET

HIENTHI:
MOV P3,A
SETB RS
CLR RW
SETB E
CLR E
LCALL DELAYLCD
RET

LENH:
MOV P3,A
CLR RS
CLR RW
SETB E
LCALL DELAY
CLR E
LCALL DELAY50
RET

73 BKFET Group
Kỹ thuật vi xử lý

;Tao tre thoi gian


DELAY:
MOV R1, #1
LOOP1: MOV R2, #1
LOOP2: MOV R3, #5
LOOP3: DJNZ R3, LOOP3
DJNZ R2, LOOP2
DJNZ R1, LOOP1
RET

DELAY1:
MOV R1,#2
LOOP4: DJNZ R1,LOOP4
RET

DELAY1S:
MOV R1,#10
LOOP5:
MOV R2,#100
LOOP6:

74 BKFET Group
Kỹ thuật vi xử lý

MOV R3,#100
LOOP7:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3,LOOP7
DJNZ R2,LOOP6
DJNZ R1,LOOP5
RET

DELAYLCD:
MOV R2,#4
HERE6: MOV R3,#2
HERE5: MOV R4,#255
HERE4: DJNZ R4,HERE4
DJNZ R3,HERE5
DJNZ R2,HERE6
RET

DELAY50:
MOV R2,#4
HERE3: MOV R3,#5
HERE2: MOV R4,#255
HERE: DJNZ R4,HERE
DJNZ R3,HERE2
DJNZ R2,HERE3
RET
END

75 BKFET Group
Kỹ thuật vi xử lý

PHẦN VII:

KẾT LUẬN

Trong giới hạn là một bài tập lớn, bảng quảng cáo mà chúng em đưa ra
chỉ với kích thước nhỏ. Thiết kế của chúng em nhằm mục đích tìm hiểu và ứng
dụng vi điều khiển AT89S52. Tuy chưa đáp ứng hết các yêu cầu do chúng em
đặt ra lúc đầu như chưa thể thay đổi một cách tuỳ ý nội dung dòng chữ mà
không cần nạp lai cho IC vi điều khiển. Nhưng chúng em đã cho ra một sản
phẩm thật chạy được và hơn hết, qua bài tập này chúng em đã thu được rất nhiều
kiến thức thực tế về lĩnh vực điện tử cũng như về lĩnh vực vi điều khiển. Đây là
sự khích lệ ban đầu cho chúng em thêm tự tin tìm hiểu sâu thêm về môn học vi
xử lý nói riêng và tất cảc các môn học nói chung. Chúng em rất mong muốn
trong những năm học tiếp theo sẽ được thực hiện nhiều bài tập lớn thú vị và bổ
ích như bài tập môn học Kỹ thuật vi xử lý.

Một số hướng phát triển cho thiết kế:

Chúng ta có thể thiết kế những bảng quảng cáo:


- Có kích thước lớn hơn.
- Hiển thị được nhiều thông tin.
- Không chỉ hiển thị chữ mà còn hiển thị hình ảnh đơn giản.
- Có nhiều chế độ chạy.
- Dễ dàng thay đổi thông tin, kiểu chạy.
- Nhiều màu sắc đẹp mắt.
-…

76 BKFET Group

You might also like