Tải bản đầy đủ (.doc) (17 trang)

Bài tập lớn Thiết kế mạch hiển thị chữ chạy dùng vi điều khiển 89C51

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 (225.37 KB, 17 trang )

Lời mở đầu
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống
sinh hoạt và sản xuất của con người, là một phần tất yếu không thể thiếu
trong đời sông hiện đại. Thế kỷ 21 được xem là thế kỷ của khoa học công
nghệ, là thế kỷ mà máy móc được thiết kế và lập trình một cách tự động để
thay thế các hoạt động của con người trong sản xuất, cũng như để phục vụ
các công việc trong sinh hoạt. Trong một cuộc sống mang tính tự động hoá
cao thì các mạch vi xử lý như là một công cụ đắc lực, quan trọng , hỗ trợ cho
con người thực hiện nhu cầu ngày càng cao và càng hoàn thiện của mình.
Một trong số những ứng dụng rộng rãi nhất của vi xử lý là trong ngành công
nghiệp quảng cáo. Hiện nay những mô hình quảng cáo bằng cách tạo chữ
chạy đã rất phổ biến. Vì vậy, qua quá trình học tập môn học vi điều khiển,
cùng với sự hướng dẫn của giáo viên, chúng tôi đã chọn nội dung bài tập:
“Thiết kế mạch hiển thị chữ chạy dùng vi điều khiển 89C51”
Nội dung của bài tập gồm 3 phần:
Phần I: Giới thiệu về vi điều khiển 89C51
Phần II: Phần mềm cho họ vi điều khiển MCS-51
Phần III: Sơ đồ mạch và chương trình
Do điều kiện tiếp xúc với môn học không nhiều, kiến thức còn hạn
chế nên bài tập của chúng tôi vẫn còn nhiều thiếu sót. Chúng tôi rất mong
được sự góp ý của thầy giáo và các bạn.


I. Giới thiệu vi điều khiển 80C51
1. Những vấn đề chung:
Vi điều khiển 8051 là thành viên đầu tiên của họ MCS-51 và là lõi cho
tất cả các vi điều khiển thuộc họ MCS-51 sau này. Đặc trưng của lõi 8051 là:
-CPU 8 bit được tối ưu cho các ứng dụng điều khiển
-Khả năng sử lý từng bit
-Không gian địa chỉ bộ nhớ chương trình 64K
-Không gian địa chỉ bộ nhớ dữ liệu 64K


-Có 4Kb bộ nhớ chương trình trên chip
-Có 128 byte RAM dữ liệu trên chip
-Có 32 đường vào/ra định địa chỉ riêng và 2 hướng
-Có 2 Timer/Counter 16 bit
-Cấu trúc ngắt 6 nguồn/ 5 vecto với 2 mức ưu tiên
-Bộ dao động on-chip
Cấu trúc cơ bản của lõi 8051 như sau:


1.1 Tổ chức bộ nhớ:
Tất cả các vi điều khiển họ MCS-51 đều có không gian địa chỉ riêng
cho bộ nhớ chương trình và bộ nhớ dữ liệu. Việc tách riêng bộ nhớ chương
trình và bộ nhớ dữ liệu cho phép bộ nhớ dữ liệu được truy cập bởi các địa
chỉ 8 bit và được truy cập bởi CPU 8 bit. Ngoài ra các địa chỉ bộ nhớ 16 bit
cũng có thể được tạo ra thông qua thanh ghi DPTR.
Bộ nhớ chương trình chỉ có thể đọc mà không ghi được. Có thể có đến
64Kb bộ nhớ chương trình. Trong các phiên bản ROM và EPROM của vi
điều khiển thì dung lượng 4K, 8K, hoặc 16K thuộc vùng địa chỉ thấp được
cung cấp ngay trên chip. Trong các phiên bản không chứa ROM thì toàn bộ
bộ nhớ chương trình là ở bên ngoài chip. Tín hiệu đọc bộ nhớ ngoài là
PSEN.
Bộ nhớ dữ liệu có địa chỉ tách biệt với bộ nhớ chương trình. Có đến
64Kb bộ nhớ RAM ngoài có thể được định địa chỉ trong không gian bộ nhớ
dữ liệu ngoài. CPU tạo ra các tín hiệu đọc và ghi, RD và WR, cần thiết cho
quá trình truy nhập bộ nhớ ngoài.
Có thể kết hợp bộ nhớ chương trình ngoài và bộ nhớ dữ kiệu ngoài
bằng cách sử dụng các tín hiệu RD và PSEN làm đầu vào cho mạch AND và
sử dụng đầu ra của nó như tín hiệu đọc bộ nhớ kết hợp chương trình và dữ
liệu này.
1.2 Các chế độ định địa chỉ:

Các chế độ định địa chỉ trong tập lệnh của MCS-51 gồm có:
Định địa chỉ trực tiếp:
Trong chế độ định địa chỉ trực tiếp, toán hạng được chỉ rõ bởi một
trường địa chỉ 8 bit trong lệnh. Chỉ có RAM dữ liệu trong và các thanh ghi
chức năng đặc biệt (SFR) có thể được định địa chỉ trực tiếp.


Định địa chỉ gián tiếp:
Lệnh chỉ rõ một thanh ghi mà nội dụng chứa địa chỉ của toán hạng. Cả
RAM trong và ngoài đều có thể định địa chỉ gián tiếp. Thanh ghi địa chỉ cho
các địa chỉ 8 bit có thể là R0 hoặc R1 của băng thanh ghi được chọn, hoặc là
con trỏ ngăn xếp. Thanh ghi địa chỉ cho các địa chỉ 16 bit chỉ có thể là thanh
ghi con trỏ dữ liệu 16 bit, DPTR.
1.3 Các lệnh thanh ghi:
Các băng thanh ghi, gồm các thanh ghi từ R0 đến R7, có thể được truy
nhập bởi các lệnh chứa mã thanh ghi 3 bit cùng với mã lệnh.
Các lệnh chỉ rõ thanh ghi: một vài lệnh chỉ rõ thanh ghi cần truy nhập.
Ví dụ một vài lệnh luôn làm việc với thanh chứa, hoặc con trỏ dữ liệu,…, vì
vậy không có byte địa chỉ nào cần để trỏ đến nó. Bản thân mã lệnh sữ thực
hiện điều đó và đó là các lệnh có chức năng chỉ truy nhập đến một thanh ghi
nào đó.
Hằng số tức thời: giá trị của một hằng số có thể kết hợp ngay trong lệnh.
Định địa chỉ chỉ số: chỉ có bộ nhớ chương trình là có thể truy nhập
theo cách này, và nó chỉ có thể đọc. Chế độ định địa chỉ này thay cho cách
tìm kiếm trong bảng truyền thống. Một thanh ghi cơ sở 16 bit (DPTR hoặc
bộ đếm chương trình) trỏ đến địa chỉ cơ sở của bảng, và thanh chứa sẽ lưu
chỉ số phần tử của bảng. Địa chỉ của phần tử bảng trong bộ nhớ chương trình
được tạo ra bằng cách cộng nội dung thanh chứa với con trỏ cơ sở. Một cách
sử dụng khác của chế độ định địa chỉ chỉ số là trong các lệnh nhảy, khi đó
địa chỉ đích của lệnh được tính toán bằng cách cộng con trỏ cơ sở và nội

dụng thanh chứa.
2.Cấu trúc bộ vi xử lý AT89C51 (8051):
2.1. Sơ đồ chân:


Vi xử lý AT8951 có 40 chân thì có 32 chân dnhà cho các cổng P0, P1,
P2 và P3 với mỗi cổng có 8 chân. Các chân còn lại được dành cho nguồn
Vcc, đất GND, các chân giao động XTLA1 và XTLA2, tái lập RST, cho
phép chốt địa chỉ ALE, truy cập được địa chỉ ngoài EA , cho phép cất
chương trình PSEN .
2.2. Các thanh ghi chức năng đặc biệt :
Các thanh ghi chức năng đặc biệt (SFR) là các thanh ghi đảm nhiệm các
chức năng khác nhau trong chíp. Chúng nằm ở RAM bên trong chíp chiếm
vùng không gian bộ nhớ 128 bytes được định địa chỉ từ 80h đến FFh.
a) Thanh ghi tích luỹ (Acc):
Đây là thanh ghi quan trọng trong chíp, dùng để lưu trử các toán hạng và
kết quả của phép tính. Thanh ghi Acc dài 8 bist, có địa chỉ là E0h trong
SFR.
b) Thanh ghi B :
Thanh ghi thường sử dụng khi thực hiện các phép toán nhân, chia. Đối
với các lệnh khác, thanh ghi B có thể xem như là thanh ghi đệm tạm thời.
Trong SFR thanh ghi B dài 8 bits và có địa chỉ là F0h.
c) Con trỏ ngăn xếp (SP):


Thanh ghi này dài 8 bits, có địa chỉ trong SFR là 81h, giá trị của nó được
tăng tự động trước khi thực hiện các lệnh CALL, PUSH. Ngăn xếp có thể
đặt bất cứ nơi nào trong RAM của chíp, nhưng sau khi khởi động lại ngăn
xếp thì con trỏ ngăn xếp mặc định sẽ trỏ tới địa chỉ khởi đầu là 07h, vậy
ngăn xếp sẽ được tạo ra bắt đầu từ 08h.

d) Con trỏ dữ liệu (DPTR):
Là thanh ghi dài 16 bits, gồm hai thanh ghi dài 8 bit hợp lại là thanh ghi
byte cao DPH và thanh ghi byte thấp DPL. Con trỏ dữ liệu có thể sử dụng
như là thanh ghi 16 bits hoặc hai thanh ghi 8 bits độc lập. Trong SFR
thanh ghi DPH có địa chỉ là 83h, còn thanh ghi DPL có địa chỉ là 82h.
e) Từ trạng thái chương trình (PSW):
Là thanh ghi dài 8 bits, có địa chỉ trong SFR là D0h. Thanh ghi PSW
dùng để chứa thông tin về trạng thái chương trình. Mỗi bit của PSW đảm
nhiệm một chức năng cụ thể. Thanh ghi này được phép truy cập ở dạng
mức bit.


f) Đệm dữ liệu truyền nối tiếp (SBUF):
Đệm dữ liệu truyền nối tiếp gồm 2 thanh ghi, một thanh ghi đệm phát và
một thanh ghi đệm thu. Khi dữ liệu được truyền tới SBUF, nó được
chuyển tới thanh ghi đệm thu và được giữ ở đấy để chế biến thành dạng
truyền nối tiếp. Khi dữ liệu được truyền từ SBUF nó chuyển đi từ thanh
ghi đệm thu. Địa chỉ của SBUF trong SFR là 99h.
g) Thanh ghi thời gian cơ sở :
Trong chíp 8951 có hai đôi thanh ghi là TH0, TL0 và TH1, TL1. Mỗi đôi
thanh ghi dài 16 bits dùng làm bộ đếm trong khối “thời gian/bộ đếm”
tương ứng. Địa chỉ của các thanh ghi này trong SFR là từ 8Ah đến 8Dh.
h) Thanh ghi điều khiển Mode “thời gian/bộ đếm” (TMOD):
Trong chíp sử dụng kiểu “thời gian/bộ đếm”, điều khiển chức năng “thời
gian” hay chức năng “bộ đếm” bằng thanh ghi TMOD. Thanh ghi này dài
8 bits và có địa chỉ là 89h.
i) Thanh ghi điều khiển “thời gian/bộ đếm” (TCON):
Tuy chíp hoạt động theo kiểu “thời gian” hay “bộ đếm”, nhưng trong mỗi
kiểu lại có 4 chêếđộ hoạt động, viêc chọn hoạt đọng 1 trong 4 chế độ thực
hiện bằng thanh ghi này. Trong SFR thanh ghi TCON có đia chỉ là 88h.

j) Thanh ghi điều khiển cổng nối tiếp (SCON):
Thanh ghi này giúp chíp thiết lập trạng thái và điều khiển cổng thực hiện
chức năng truyền thông nối tiếp. Thanh ghi có địa chỉ là 98h.
k) Thanh ghi cho phép ngắt (IE):
Là thanh ghi dài 1 byte, có địa chỉ là A8h. Chip có khả năng truy cập địa
chỉ mức bit tới thanh ghi IE. Trong thanh ghi này ngoài bit EA cho phép
chip làm việc ở chế độ ngắt, còn các bit khác cho phép ngắt tương ứng
khác hoạt động. Khi bit có giá trị logic 0 thì ngắt tương ứng bị cấm, bit có
mức logic 1 sẽ cho phép ngắt hoạt động.


II. Phần mềm cho họ bộ vi điều khiển MCS - 51.
Bi tp s dng ngụn ng Assembly vit cho h vi iu khin MCS-51
1. Cấu trúc của một hợp ngữ.
Một chơng trình hợp ngữ bao gồm một chuỗi các dòng
lệnh hợp ngữ. Một lệnh hợp ngữ có chứa một từ gợi nhớ và tuỳ
theo từng lệnh mà sau nó có một hoặc hai toán hạng. Các
toán hạng là các dữ liệu cần đợc thao tác và các từ gợi nhớ là
các lệnh đối với CPU nói nó làm gì với các dữ liệu.
Cấu trúc một lệnh hợp ngữ bao gồm 4 trờng sau:
[Nhãn:]

[từ gợi nhớ]

[Các toán hạng]

[;Chú giải]

Các trờng trong dấu ngoặc vuông là tuỳ chọn và không
phải dòng lệnh nào cũng có chúng. Các dấu ngoặc vuông

không đợc viết vào.
Trờng nhãn cho phép chơng trình tham chiếu đến
một dòng lệnh bằng tên. Nó không đợc viết quá 31 ký tự đối
với trình dịch ASM-51, số ký tự của trờng nhãn phụ thuộc
vào trình dịch hợp ngữ mà ta sử dụng.
Từ gợi nhớ (lệnh) và các toán hạng là các trờng kết hợp với
nhau thực thi công việc thực tế của chơng trình và hoàn
thiện các nhiệm vụ mà chơng trình đợc viết cho chúng. Trờng chú giải luôn phải bắt đầu bằng dấu chấm phẩy (;). Các
chú giải có thể bắt đầu ở đầu dòng hoặc phần còn lại của
dòng. Hợp ngữ bỏ qua không dịch các chú giải nhng ngời lập
trình nên dùng chúng để mô tả chơng trình giúp cho chơng trình sáng sủa hơn.
2. Tập lệnh mã ngữ của họ bộ vi điều khiển MCS - 51.


Tập lệnh Assembly của họ MCS - 51 đợc chia thành 5
nhóm là các lệnh số học, các lệnh logic, các lệnh chuyển số
liệu, các lệnh xử lý bit và các lệnh rẽ nhánh. Các lệnh xử lý
bit là điểm mạnh cơ bản của họ MCS -51, vì nó thích hợp
với các ứng dụng chỉ cần thay đổi giá trị 1 bít nh bật hoặc
tắt một thiết bị.
Tập lệnh mã ngữ của họ MCS - 51 đợc xây dựng trên
cơ sở mã ngữ của các bộ vi xử lý 8 bit, với những phát triển
nhằm tối u hoá cho các ứng dụng điều khiển. Mỗi lệnh mã
ngữ sẽ xử lý một byte hoặc một bit số liệu nằm ở một thanh
ghi hoặc một ô nhớ nào đó, nên trong lệnh phải có địa chỉ
của số liệu để CPU tìm đợc số liệu cần xử lý.
Cấu trúc mỗi lệnh mã ngữ của MCS - 51 gồm có một mã
lệnh 8 bit quy định thao tác xử lý, kèm theo từ 0 đến 2 byte
toán hạng là số liệu hoặc địa chỉ cần thiết cho việc thực
hiện lệnh.

Các lệnh mã ngữ sử dụng nhiều phơng pháp định địa
chỉ khác nhau. Các phơng pháp định địa chỉ đợc sử dụng
trong các lệnh mã ngữ là định địa chỉ tức thời, định địa
chỉ trực tiếp, định địa chỉ gián tiếp, định địa chỉ
thanh ghi, định địa chỉ tơng đối, định địa chỉ tuyệt
đối, định địa chỉ dài và địa chỉ chỉ số.
Các lệnh sử dụng địa chỉ tức thời có một toán hạng
(ký hiệu là #data) chính là số liệu cần xử lý, trình biên
dịch nhận biết toán hạng số liệu tức thời nhờ ký tự # đặt
trớc toán hạng đó.


Các lệnh sử dụng địa chỉ trực tiếp chỉ đợc dùng để
truy cập vùng 128 byte thấp của bộ nhớ RAM trong và các
thanh ghi chức năng đặc biệt SFR có địa chỉ ở vùng 128
byte cao của bộ nhớ RAM trong, chúng có toán hạng (ký hiệu
là Direct) là địa chỉ 8 bit của ô nhớ hoặc tên thanh ghi SFR
chứa số liệu cần xử lý.
Phơng pháp định địa chỉ gián tiếp cho phép xác
định hoặc tính toán địa chỉ của biến để truy cập đến
các ô nhớ có giá trị biến đổi khi chơng trình chạy, điều
này không thể thực hiện đợc bằng định địa chỉ trực tiếp.
Các lệnh sử dụng địa chỉ gián tiếp để truy cập bộ nhớ
RAM trong phải dùng
các thanh ghi R0 hoặc R1 làm con trỏ dữ liệu (ký hiệu là
@Ri, với i = 0 hoặc 1). Các lệnh truy cập đến bộ nhớ RAM
ngoài phải dùng các thanh ghi R0, R1 hoặc thanh ghi 16 bit
DPTR làm con trỏ dữ liệu (ký hiệu là @DPTR). Ký hiệu @Ri
đợc hiểu là ô nhớ đợc trỏ bởi Ri, nghĩa là Ri chứa địa chỉ
của ô nhớ cần tuy cập, do đó cần thiết lập địa chỉ của ô

nhớ chứa số liệu cần xử lý ở thanh ghi dùng làm con trỏ trớc
khi thực hiện lệnh dùng con trỏ.
Các lệnh sử dụng địa chỉ thanh ghi chỉ đợc dùng cho
các thanh ghi của băng thanh ghi hiện thời, chúng có toán
hạng là tên của một trong các thanh ghi R0 R7( ký hiệu Rn
là thanh ghi thứ n, với n = 0 7).
Chỉ có các lệnh nhảy sử dụng địa chỉ tơng đối,
chúng có một toán hạng (ký hiệu là Rel ) là tên nhãn của


điểm nhảy đến và sẽ đợc trình biên dịch tính thành địa
chỉ Offset bằng khoảng cách từ lệnh tiếp theo đến vị trí
của nhãn, do đó địa chỉ tuyệt đối của điểm nhảy đến sẽ
bằng giá trị hiện tại của bộ đếm chơng trình PC cộng với
giá trị Offset. Do Offset là giá trị 8 bit có dấu nên tầm nhảy
khi sử dụng địa chỉ tơng đối bị giới hạn trong khoảng cách
127 byte đến -128 byte từ vị trí của lệnh tiếp sau lệnh
nhảy.
Chỉ có các lệnh Acall và Ajmp sử dụng địa chỉ tuyệt
đối, chúng có một toán hạng là tên nhãn của điểm nhảy
đếnvà sẽ đợc trình biên dịch tính thành giá trị 11 bit
Absolute bằng khoảng cách từ lệnh tiếp theo đến vị trí của
nhãn và đó chính là 11 bit thấp của địa chỉ, còn 5 bit cao
của địa chỉ sẽ là 5 bit cao hiện thời của bộ đếm chơng
trình PC, do đó các lệnh trên chỉ có thể rẽ nhánh chơng
trình trong giới hạn 2K của bộ nhớ chơng trình.
Chỉ có các lệnh Lcall và Ljmp sử dụng kểu định địa
chỉ dài, chúng có một toán hạng là tên nhãn của điểm nhảy
đến và sẽ đợc trình biên dịch tính thành giá trị địa chỉ
16 bit, do đó các lệnh trên cho phép rẽ nhánh chơng trình

trong không gian 64K của bộ nhớ chơng trình.
Chỉ có các lệnh Movc và Jmp sử dụng địa chỉ chỉ số,
chúng có một toán hạng là địa chỉ chỉ số đợc tính bằng
tổng của chỉ số đợc cất trong thanh chứa A với một giá trị
cơ sở là nội dung hiện thời của bộ đếm chơng trình PC
hoặc con trỏ dữ liệu DPTR ( ký hiệu là @A + PC hoặc @A +


DPTR). Kiểu địa chỉ chỉ số cho phép truy cập chính xác
đến các phần tử của bảng số liệu và đợc dùng để lập bảng
rẽ nhánh chơng trình.
Tập lệnh mã ngữ của họ MCS -51 đợc chia thành 5
nhóm là nhóm các lệnh số học, nhóm các lệnh logic, nhóm
các lệnh di chuyển số liệu, nhóm các lệnh rẽ nhánh và nhóm
các lệnh xử lý bit. Mỗi dạng lệnh mã ngữ thực hiện một thao
tác nhất định đối với số liệu, nhng khi sử dụng với các kiểu
định địa chỉ khác nhau sẽ tạo ra nhiều lệnh cụ thể, mỗi
lệnh có mã lệnh và yêu cầu các toán hạng kèm theo khác
nhau. Để ngắn gọn và tiện cho sử dụng sau này, ta trình
bày tập lệnh mã ngữ của họ MCS - 51 dới dạng các bảng theo
từng nhóm lệnh ở phần phụ lục.
Họ MCS - 51 hỗ trợ các lệnh xử lý theo bit, các bit có thể
đợc set và xoá bằngmột lệnh. Điều khiển đơn bit đợc dùng
cho nhiều thiết bị xuất/nhập, bao gồm xuất ra rơ le, động
cơ,

các

LED...Lập


trình

cho

bộ

đếm/định

thời

(Coutter/Timer) dùng để định một khoảng thời gian hoặc
đếm các sự kiện, truyền thông nối tiếp và khả năng lập
trình các ngắt, từ đó cho phép ta thực hiện các ứng dụng
trong thực tế một cách mềm dẻo.
III. S mch v chng trỡnh:
Bi tp thc hin thit k mt mch in to ch chy vi 1 ni dung
nht nh, s dng vi iu khin 89C51, mch gii mó Decoder_2_4 v
Decoder_4_16. Khi hin th dựng matrn led 8x8.


Chng trỡnh c vit bng ngụn ng Assembly, sau khi vit chng
trỡnh c dch ra mó mỏy ca h MCS 51 bng trỡnh biờn dch ASM-51 sau
ú c np vo b nh chng trỡnh EEPROM bờn trong hoc bờn ngoi
MCS-51.
Để viết và nạp phần mềm cho MCS - 51, ta phải có
công cụ là máy vi tính, trình biên dịch ngôn ngữ ra mã máy
của họ MCS - 51 và bộ nạp chơng trình mã máy từ máy vi
tính vào bộ nhớ chơng trình EEPROM trong MCS - 51 hoặc
bộ nhớ EPROM ngoài.


Bng mó tng quỏt c tng hp trong bng:
Chu Cot 5
cai
A 0C0H

Cot4

Cot3

Cot2

Cot1

MA

0B7H

77H

0B7H

0C0H

00H
81H
00H
00H
00H
81H
00H


6EH
7EH
7EH
6EH
6FH
7EH
0EFH

6EH
7EH
7EH
6EH
6FH
7EH
0EFH

6EH
7EH
7EH
6EH
6FH
76H
0EFH

91H
0BDH
81H
7EH
7FH

0B0H
00H

I
J
K

0FDH
00H

7EH
7EH
0E7H

00H
01H
0DBH

7EH
7FH
0BDH

7EH

L

00H

0FEH


0FEH

0FEH

0FEH

N

00H

0DFH

0EFH

0F7H

00H

M

00H

0BFH

0DFH

0BFH

00H


0C0H,0B7H,77H,0B7H,0C
0H
00H,6EH,6EH,6EH,91H
81H,7EH,7EH,7EH,0BDH
00H,7EH,7EH,7EH,81H
00H,6EH,6EH,6EH,7EH
00H,6FH,6FH,6FH,7FH
81H,7EH,7EH,76H,0B0H
00H,0EFH,0EFH,0EFH,00
H
7EH,00H,7EH
0FDH,7EH,01H,7FH
00H,0E7H,0DBH,0BDH,7E
H
00H,0FEH,0FEH,0FEH,0F
EH
00H,0DFH,0EFH,0F7H,00
H
00H,
0BFH,0EFH,0BFH,00H

B
C
D
E
F
G
H



O
P
Q
U

81H
00H
81H
01H

7EH
77H
7EH
0FEH

7EH
77H
7EH
0FEH

7EH
77H
7CH
0FEH

81H
8FH
80H
01H


81H,7EH,7EH,7EH,81H
00H,77H,77H,77H,8FH
81H,7EH,7EH,7CH,80H
01H,0FEH,0FEH,0FEH,01
H
S 9DH
6EH
6EH
6EH
0B1H 9DH,6EH,6EH,6EH,0B1H
R 00H
67H
6BH
6DH
9EH
00H,67H,6BH,6DH,9EH
T 7FH
7FH
00H
7FH
7FH
7FH,7FH,00H,7FH,7FH
V 03H
0FDH 0FEH 0FDH
03H
03H,0FDH,0FEH,0FDH,03
H
X 38H
0D7H 0EFH 0D7H
38H

38H,0D7H,0EFH,0D7H,38
H
Y 1FH
0EFH
0F0H
0EFH
1FH
1FH,0EFH,0FH,0EFH1FH
Z 78H
76H
6EH
5EH
3EH
78H,76H,6EH,5EH,3EH
0EFH 0EFH 0EFH
0EFH,0EFH,0EFH
* 0BBH
0D7H
29H
0D7H 0BBH 0BBH,0D7H,29H,0D7H,0B
BH
+ 0EFH
0EFH
83H
0EFH 0EFH 0EFH,0EFH,83H,0EFH,0E
FH
VI 0BBH,0D7H,29H,0D7H,0BBH,0FFH,03H,0FDH,0FEH,0FDH,03H,0FFH,7
EH,00H,7EH, 0FFH,0EFH,0EFH,0EFH
DIE 0FFH,00H,7EH,7EH,7EH,81H,0FFH,7EH,00H,7EH,0FFH,00H,6EH,6EH,6
U

EH,7EH,0FFH,01H,0FEH,0FEH,0FEH,01H,0FFH,0EFH,0EFH,0EFH
KHI 0FFH,00H,0E7H,0DBH,0BDH,7EH,0FFH,00H,0EFH,0EFH,0EFH,00H,0F
EN FH,7EH,00H,7EH,0FFH,00H,6EH,6EH,6EH,7EH,0FFH,00H,0DFH,0EFH,
0F7H,00H,0FFH
Sơ đồ mạch mô phỏng được biểu diễn như trên hình vẽ:


Dưới đây là chương trình hợp ngữ viết cho vi điều khiển 89C51:

; CHUONG TRINH CHU CHAY: "* VI-DIEU-KHIEN *"
ORG 00H
MOV DPTR, #MA
MOV R3, #75
MAIN:
MOV R2, #10
LAP:
MOV R1, #48
MOV R0, #00
L:

MOV A, R0


MOVC A, @A+DPTR
MOV P1, R0
MOV P2, A
CALL TRE
MOV P2,#0FFH
NOP
NOP

INC R0
DJNZ R1, L
DJNZ R2, LAP
INC DPTR
DJNZ R3, MAIN
MOV DPTR, #MA
MOV R3, #75
SJMP MAIN
TRE: MOV R7, #3
T:

;TRE 64 COT =2*246

MOV R6, #170
DJNZ R6, $
DJNZ R7, T
RET

MA:
DB 0BBH,0D7H,29H,0D7H,0BBH,0FFH,03H
DB 0FDH,0FEH,0FDH,03H,0FFH,7EH,00H
DB 7EH, 0FFH,0EFH,0EFH,0EFH 0FFH,00H
DB 7EH,7EH,7EH,81H,0FFH,7EH,00H
DB 7EH,0FFH,00H,6EH,6EH,6EH
DB 7EH,0FFH,01H,0FEH,0FEH,0FEH,01H


DB 0FFH,0EFH,0EFH,0EFH,0FFH,00H,0E7H
DB 0DBH,0BDH,7EH,0FFH,00H,0EFH,0EFH
DB 0EFH,00H,0FFH,7EH,00H,7EH,0FFH

DB 00H,6EH,6EH,6EH,7EH,0FFH,00H
DB 0DFH,0EFH,0F7H,00H,0FFH,0BBH,0D7H
DB 29H,0D7H,0BBH,0FFH,03H,0FDH,0FEH
DB 0FDH,03H,0FFH,7EH,00H,7EH, 0FFH
DB 0EFH,0EFH,0EFH,0FFH,00H,7EH,7EH
DB 7EH,81H,0FFH,7EH,00H,7EH,0FFH
DB 00H,6EH,6EH,6EH,7EH,0FFH,01H
DB 0FEH,0FEH,0FEH,01H,0FFH,0EFH,0EFH
DB 0EFH,0FFH,00H,0E7H,0DBH,0BDH,7EH
DB 0FFH,00H,0EFH,0EFH,0EFH,00H,0FFH
DB 7EH,00H,7EH,0FFH,00H,6EH,6EH
DB 6EH,7EH,0FFH,00H,0DFH,0EFH,0F7H
DB 00H,0FFH
END



×