Theo nguyên lý và thiết kế phần cứng của m ạch quảng cáo, chúng ta xẽ 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 AT89C51.
Trong sơ đồ nguyên lý, dữ li ệu từ Port 2 sẽ được xuất các chân dữ li ệu tương ứng
của LCD
Ba chân p3.0,p3.1,p3.4 xẽ được nối v ới ch ân RS,EN,RW của LCD
Port 1 có 8 chân được sử dụng để l ối v ới các chân của bàn phím .Như vậy mục đí ch
chương trình sẽ là
- Đi ều khiển việc nhập dữ li ệu từ bàn phím vào vi đi ều khiển
+trước ti ên xác định phím nào được bấm bằng việc cho các hành nối đất v à các
cột được nối ở mức cao
+sau đó xác định m ã ASCII của phím đựơc ấn và gửi đến vi xử lý
- Đi ều khiển để dòng chữ nhập từ bàn phím khi nhấn phím # thì kết thúc nhập và
cho dòng chữ nhập từ bàn phím nhấp nháy trên màn hình LCD sau đó cho chữ chạy từ
trái qua ph ải
27 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2653 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Tiểu luận Màn hình quảng cáo ở chế độ văn bản sử dụng màn hình LCD có sử dụng giao tiếp bàn phím, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài tập lớn môn Vi Xử Lý
1
Tiểu luận
Màn hình quảng cáo ở chế độ văn bản sử dụng
màn hình LCD có sử dụng giao tiếp bàn phím
Bài tập lớn môn Vi Xử Lý
2
LỜI NÓI ĐẦU
Trong sự phát triển của kỹ thuật điện tử ngày nay việc sử dụng các con vi điều khiển
trong các hệ thống điện tử rất phổ biến cả 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 dụ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ùng với nó là sự phát triển kỹ thuật
số với nền tảng 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ố. Việc sử dụng màn hình LCD để 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.
Trên cơ sở những kiến thức đã được học trong môn học kỹ thuật vi xử lý và Kỹ
thuật số chúng em đã thiết kế một mạch logic số sử dụng vi điều khiển với tên đề tài
đầy đủ là: Màn hình quảng cáo ở chế độ văn bản sử dụng màn hình LCD có sử
dụng giao tiếp bàn phím với mục đích là tìm hiểu thêm về vi điều khiểnvà 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 em 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ách 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 em 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.
Hà Nội 4/2006
Nhóm sinh viên thực hiện: HOÀNG NGỌC ANH
DƯƠNG THÀNH PHAO
NGUYỄN HOÀNG HẢI A
NGUYỄN HOÀNG HẢI B
NGUYỄN HỮU HẢI
Lớp Điện Tử 2-K48 ĐHBKHN
PHẦN I:VI ĐIỀU KHIỂN 8051
Bài tập lớn môn Vi Xử Lý
3
Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051
Bố trí bên trong của sơ đồ khối 8051.
1.Bên trong 8051.
Trong phần này chúng ta nghiên cứu các thanh ghi chính của 8051 và trình bày cách
sử dụng với các lệnh đơn giản MOV và ADD.
1.1 Các thanh ghi.
Trong CPU các thanh ghi được dùng để lưu cất thông tin tạm thời, những thông tin
này có thể là một byte dữ liệu cần được sử lý hoặc là một địa chỉ đến dữ liệu cần được
nạp. Phần lớn các thanh ghi của 8051 là các thanh ghi 8 bit. Trong 8051 chỉ có một kiểu
dữ liệu: Loại 8 bit, 8 bit của một thanh ghi được trình bày như sau:
với MSB là bit có giá trị cao nhất D7 cho đến LSB là bit có giá trị thấp nhất D0. (MSB -
Most Sigfican bit và LSB - Leart Significant Bit). Với một kiểu dữ liệu 8 bit thì bất kỳ
dữ liệu nào lớn hơn 8 bit đều phải được chia thành các khúc 8 bit trước khi được xử lý.
Vì có một số lượng lớn các thanh ghi trong 8051 ta sẽ tập trung vào một số thanh ghi
công dụng chung đặc biệt trong các chương kế tiếp.
CO
U
N
TER
IN
PU
TS
OSC
INTERRUP
T
CONTROL
4 I/O
PORTS
BUS
CONTROL
SERIAL
PORT
EXTERNAL
INTERRUPTS
CPU
ON - CHIP
RAM
ETC
TIMER
0 TIMER
1
ADDRESS/DAT
A
TXD RXD P P P P
D7 D6 D5 D4 D3 D2 D1 D0
Bài tập lớn môn Vi Xử Lý
4
Các thanh ghi được sử dụng rộng rãi nhất của 8051 là A (thanh ghi tích luỹ), B,
R0 - R7, DPTR (con trỏ dữ liệu) và PC (bộ đếm chương trình). Tất cả các dữ
liệu trên đều là thanh g hi 8 bit trừ DPTR và PC là 16 bit. Thanh ghi tích luỹ A
được sử dụng cho tất cả mọi phép toán số học và lô-gíc.
2. Mô tả chân của 8051.
Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89C51, DS5000). 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 hai hàng chân DIP
nên ta chỉ tập chung mô tả phiên bản này.
Sơ đồ bố trí chân của 8051.
Trên hình là sơ đồ bố trí chân của 8051. Ta thấy rằng trong 40 chân thì có 32 chân
dành 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ângiao động XTAL1 và XTAL2 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 .
Trong 8 chân này thì 6 chân VCC , GND, XTAL1, XTAL2, RST và EA được các họ
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
P0.0 (AD0)
Vcc 1
2
3
5
6
4
7
8
9
11
12
10
13
14
15
17
18
16
19
20
40
39
38
36
35
37
34
33
32
30
29
31
28
27
26
24
23
25
22
21
8051
(8031)
P0.1 (AD1)
P0.2 (AD2)
P0.4 (AD4)
P0.5 (AD5)
P0.3 (AD3)
PSEN
P0.6 (AD6)
P2.5 (A13)
P2.3 (A11)
P2.1 (A9)
P2.7 (A15)
P2.4(A12)
P2.6 (A14)
P2.0 (AB)
P2.2 (A10)
(RXD) P3.0
(TXD) P3.1
(NT0) P3.2
(NT1) P3.3
(T0) P3.4
(T1) P3.5
(WR) P3.6
(RD) P3.7
XTAL
XTAL1
GND
P0.6 (AD6)
EA/CP
ALE/PRO
Bài tập lớn môn Vi Xử Lý
5
8031 và 8051 sử dụng. Hay nói cách khác là chúng phải được nối để cho hệ thống làm
việc mà không cần biết bộ vi điều khiển thuộc họ 8051 hay 8031. Còn hai chân khác là
PSEN và ALE được sử dụng chủ yếu trong các hệ thống dựa trên 8031.
CÁC CHẾ ĐỘ ĐÁNH ĐỊA CHỈ CỦA 8051
Các chế độ đánh địa chỉ khác nhau của bộ vi xử lý được xác định như nó được
thiết kế và do vậy người lập trình không thể đánh địa chỉ khác nhau là:
1. tức thời 2. Theo thanh ghi 3. Trực tiếp
4. gián tiếp qua thanh ghi 5. Theo chỉ số
1 Các chế độ đánh địa chỉ tức thời và theo thanh ghi
1.1 Chế độ đánh địa chỉ tức thời
Trong chế độ đánh địa chỉ này toán hạng nguồn là một hằng số. Và như tên gọi của nó
thì khi một lệnh được hợp dịch toán hạng đi tức thi ngay sau mã lệnh. Lưu ý rằng trước
dữ liệu tức thời phải được đặt dấu (#) chế độ đánh địa chỉ này có thể được dùng để nạp
thông tin vào bất kỳ thanh ghi nào kể cả thanh ghi con trỏ dữ liệu DPTR.
1.2 chế độ đánh địa chỉ theo thanh ghi:
Chế độ đánh địa chỉ theo thanh ghi liên quan đến việc sử dụng các thanh ghi để
dữ liệu cần được thao tác các ví dụ về đánh địa chỉ theo thanh ghi như sau:
MOV A, RO ; Sao nội dung thanh ghi RO vào thanh ghi A
Cũng nên lưu ý rằng các thanh ghi nguồn và đích phải phù hợp về kích thước. Hay
nói cách khác, nếu viết “ MOV DPTR, A” sẽ cho một lỗi vì nguồn là thanh ghi 8 bit và
đích lại là thanh ghi 16 bit. Xét đoạn mã sau:
MOV DPTR, #25F5H
Để ý rằng ta có thể chuyển dữ liệu giữa thanh ghi tích luỹ A và thanh ghi Rn (n từ
0 đến 7) nhưng việc chuyển dữ liệu giữa các thanh ghi Rn thì không được phép. Ví
dụ, lệnh “MOV R4, R7” là không hợp lệ.
2 Truy cập bộ nhớ sử dụng các chế độ đánh địa chỉ khác nhau.
2.1 Chế độ đánh địa chỉ trực tiếp.
Như đã nói ở chương 2 trong 8051 có 128 byte bộ nhớ RAM. Bộ nhớ RAM
được gán các địa chỉ từ 00 đến FFH và được phân chia như sau:
1. Các ngăn nhớ từ 00 đến 1FH được gán cho các băng thanh ghi và ngăn xếp.
2. Các ngăn nhớ từ 20H đến 2FH được dành cho không gian đánh địa chỉ theo bit
để lưu các dữ liệu 1 bit.
3. Các ngăn nhớ từ 30H đến 7FH là không gian để lưu dữ liệu có kích thước 1byte.
Mặc dù toàn bộ byte của bộ nhớ RAM có thể được truy cập bằng chế độ đánh địa
chỉ trực tiếp, nhưng chế độ này thường được sử dụng nhất để truy cập các ngăn nhớ
RAM từ 30H đến 7FH. Đây là do một thực tế là các ngăn nhớ dành cho băng ghi được
truy cập bằng thanh ghi theo các tên gọi của chúng là R0 - R7 còn các ngăn nhớ khác
của RAM thì không có tên như vậy. Trong chế độ đánh địa chỉ trực tiếp thì dữ liệu ở
trong một ngăn nhớ RAM mà địa chỉ của nó được biết và địa chỉ này được cho như là
Bài tập lớn môn Vi Xử Lý
6
một phần của lệnh. Khác với chế độ đánh địa chỉ tức thì mà toán hạng tự nó được cấp
với lệnh. Dấu (# 0 là sự phân biệt giữa hai chế độ đánh địa chỉ.
*Các thanh ghi có thể đánh địa chỉ theo bit.
Xét theo chế độ đánh địa chỉ trực tiếp thì cần phải lưu ý rằng giá trị địa chỉ được
giới hạn đến 1byte, 00 - FFH. Điều này có nghĩa là việc sử dụng của chế độ đánh địa chỉ
này bị giới hạn bởi việc truy cập các vị trí ngăn nhớ của RAM và các thanh ghi với địa
chỉ được cho bên trong 8051.
2.3 Ngăn xếp và chế độ đánh địa chỉ trực tiếp.
Một công dụng chính khác của chế độ đánh địa chỉ trực tiếp là ngăn xếp. Trong
họ 8051 chỉ có chế độ đánh địa chỉ trực tiếp là được phép đẩy vào ngăn xếp. Do vậy,
một lệnh như “PVSH A” là không hợp lệ. Việc đẩy thanh ghi A vào ngăn xếp phải
được viết dưới dạng “PVAH 0E0H” với 0E0H là địa chỉ của thanh ghi A. Tương tự như
vậy để đẩy thanh ghi R3 rãnh 0 vào ngăn xếp ta phải viết là “PVSH 03”. Chế độ đánh
địa chỉ trực tiếp phải được sử dụng cho cả lệnh POP. Vì dụ “POP 04” sẽ kéo đỉnh của
ngăn xếp vào thanh ghi R4 rãnh 0.
2.4 chế độ đánh địa chỉ gián tiếp thanh ghi.
Trong chế độ này, một thanh ghi được sử dụng như một con trỏ đến dữ liệu.
Nếu dữ liệu ở bên trong CPU thì chỉ các thanh ghi R0 và R1 được sử dụng
cho mục đích này. Hay nói cách khác các thanh ghi R2 - R7 không có thể
dùng được để giữ địa chỉ của toán hạng nằm trong RAM khi sử dụng chế độ
đánh địa chỉ này khi Ro và R1 được dùng như các con trỏ, nghĩa là khi chúng
giữ các địa chỉ của các ngăn nhớ RAM thì trước chúng phải đặt dấu (@) như
chỉ ra dưới đây.
MOV A, @ R0; Chuyển nội dung của ngăn nhớ RAM có địa chỉ trong RO và A
Lưu ý rằng R0 cũng như R1 luôn có dấu “@” đứng trước. Khi không có dấu
này thì đó là lệnh chuyển nội dung các thanh ghi Ro và R1 chứ không phải
dữ liệu ngăn nhớ mà địa chỉ có trong R0 và R1.
12.1 Phối ghép một LCD với 8051.
ở phần này ta sẽ mô tả các chế độ hoạt động của các LCD và sau đó mô tả cách
lập trình và phối ghép một LCD tới 8051.
12.1.2 Các chân của LCD.
Bảng 2.1: Mô tả các chân của LCD.
Chân Ký hiệu I/O Mô tả
1 VSS - Đất
2 VCC - Dương nguồn 5v
3 VEE - Cấp nguồn điều khiển phản
Bài tập lớn môn Vi Xử Lý
7
4 RS I RS = 0 chọn thanh ghi lệnh. RS = 1 chọn
thanh dữ liệu
5 R/W I R/W = 1 đọc dữ liệu. R/W = 0 ghi
6 E I/O Cho phép
7 DB0 I/O Các bít dữ liệu
8 DB1 I/O Các bít dữ liệu
9 DB2 I/O Các bít dữ liệu
10 DB3 I/O Các bít dữ liệu
11 DB4 I/O Các bít dữ liệu
12 DB5 I/O Các bít dữ liệu
13 DB6 I/O Các bít dữ liệu
14 DB7 I/O Các bít dữ liệu
15 A - Anode
16 K - Kathode
LCD được nói trong mục này có 14 chân, chức năng của các chân được cho
trong bảng 12.1. Vị trí của các chân được mô tả trên hình 12.1 cho nhiều LCD khác
nhau.
1. Chân VCC, VSS và VEE: Các chân VCC, VSS và VEE: Cấp dương nguồn - 5v và đất
tương ứng thì VEE được dùng để điều khiển độ tương phản của LCD.
2. Chân chọn thanh ghi RS (Register Select).
Có hai thanh ghi rất quan trọng bên trong LCD, chân RS được dùng để chọn các
thanh ghi này như sau: Nếu RS = 0 thì thanh ghi mà lệnh được chọn để cho phép người
dùng gửi một lệnh chẳng hạn như xoá màn hình, đưa con trỏ về đầu dòng v.v… Nếu RS
= 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên
LCD.
3. Chân đọc/ ghi (R/W).
Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên LCD khi R/W = 0 hoặc
đọc thông tin từ nó khi R/W = 1.
4. Chân cho phép E (Enable).
Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên chân dữ
liệu của nó. Khi dữ liệu được cấp đến chân dữ liệu thì một xung mức cao xuống thấp
phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liêu. Xung này phải
rộng tối thiểu là 450ns.
Bài tập lớn môn Vi Xử Lý
8
5. Chân D0 - D7.
Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội
dung của các thanh ghi trong LCD.
Để hiển thị các chữ cái và các con số thì bật RS = 1.
Cũng có các mã lệnh mà có thể được gửi đến LCD để xoá màn hình hoặc đưa con
trỏ về đầu dòng hoặc nhấp nháy con trỏ. Bảng 12.2 liệt kê các mã lênh.
Chúng ta cũng sử dụng RS = 0 để kiểm tra bít cờ bận để xem LCD có sẵn sàng
nhân thông tin. Cờ bận là D7 và có thể được đọc khi R/W = 1 và RS = 0 như sau:
Nếu R/W = 1, RS = 0 khi D7 = 1 (cờ bận 1) thì LCD bận bởi các công việc bên
trong và sẽ không nhận bất kỳ thông tin mới nào. Khi D7 = 0 thì LCD sẵn sàng nhận
thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận trước khi ghi bất kỳ dữ liệu nào lên
LCD.
12.1.3 Gửi các lệnh và dữ liệu đến LCD với một độ trễ.
Để gửi một lệnh bất kỳ từ bảng 12.2 đến LCD ta phải đưa chân RS về 0. Đối với
dữ liệu thì bật RS = 1 sau đó gửi một sườn xung cao xuống thấp đến chân E để cho phép
chốt dữ liệu trong LCD. Điều này được chỉ ra trong đoạn mã chương trình dưới đây
(xem hình 12.2).
Hình 12.2: Nối ghép LCD.
12.1.4 Gửi mã lệnh hoặc dữ liệu đến LCD có kiểm tra cờ
Bảng 2.2: Các mã lệnh LCD.
Mã (Hex) Lệnh đến thanh ghi của LCD
1 Xoá màn hình hiển thị
P2.1
D0
P1.0
P1.0
P2.2
D7
R/W E RS VSS
VEE
VCC
+5v
10K
POT
LCD
8051
Bài tập lớn môn Vi Xử Lý
9
2 Trở về đầu dòng
4 Giảm con trỏ (dịch con trỏ sang trái)
6 Tăng con trỏ (dịch con trỏ sang phải)
5 Dịch hiển thị sang phải
7 Dịch hiển thị sang trái
8 Tắt con trỏ, tắt hiển thị
A Tắt hiển thị, bật con trỏ
C Bật hiển thị, tắt con trỏ
E Bật hiển thị, nhấp nháy con trỏ
F Tắt con trỏ, nhấp nháy con trỏ
10 Dịch vị trí con trỏ sang trái
14 Dịch vị trí con trỏ sang phải
18 Dịch toàn bộ hiển thị sang trái
1C Dịch toàn bộ hiển thị sang phải
80 Đa con trỏ về đầu dòng thứ nhất
C0 Đa con trỏ về đầu dòng thứ hai
38 Hai dòng và ma trận 5 7
Đoạn chương trình trên đây đã chỉ ra cách gửi các lệnh đến LCD mà không có kiểm tra
cờ bận (Busy Flag). Lưu ý rằng chúng ta phải đặt một độ trễ lớn trong quá ảtình xuất dữ
liệu hoặc lệnh ra LCD. Tuy nhiên, một cách tốt hơn nhiều là hiển thị cờ bận trước khi
xuất một lệnh hoặc dữ liệu tới LCD. Dưới đây là một chương trình như vậy.
; Kiểm tra cờ bận trước khi gửi dữ liệu, lệnh ra LCD
Lưu ý rằng trong chương trình cờ bận D7 của thanh ghi lệnh. Để đọc thanh ghi
lệnh ta phải đặt RS = 0, R/W = 1 và xung cao - xuống - thấp cho bít E để cấp thanh ghi
lệnh cho chúng ta. Sau khi đọc thanh ghi lệnh, nếu bít D7 (cờ bận) ở mức cao thì LCD
bận và không có thông tin (lệnh) nào được xuất đến nó chỉ khi nào D7 = 0 mới có thể
gửi dữ liệu hoặc lệnh đến LCD. Lưu ý trong phương phát này không sử dụng độ trễ thời
gian nào vì ta đang kiểm tra cờ bận trước khi xuất lệnh hoặc dữ liệu lên LCD.
13.2 Phối ghép 8051 với bàn phím.
13.2.1 Phối ghép bàn phím với 8051.
ở mức thấp nhất các bàn phím được tổ chức dưới dạng một ma trận các hàng và
các cột. CPU truy cập cả hàng lẫn cột thông qua các cổng. Do vậy, với hai cổng 8 bít thì
Bài tập lớn môn Vi Xử Lý
10
có thể nối tới một bàn phím 8 8 tới bộ vi xử lý. Khi một phím được ấn thì một hàng và
một cột được tiếp xúc, ngoài ra không có sự tiếp xúc nào giữa các hàng và các cột.
Trong các bàn phím máy tính IBM PC có một bộ vi điều khiển (bao gồm một bộ vi xử
lý, bộ nhớ RAM và EPROM và một số cổng tất cả được bố trí trên một chíp) chịu trách
nhiệm phối ghép phần cứng và phần mềm của bàn phím. Trong những hệ thống như
vậy, nó là chức năng của các chương trình được lưu trong EPROM của bộ vi điều khiển
để quét liên tục các phím, xác định xem phím nào đã được kích hoạt và gửi nó đến bo
mạch chính. Trong phần này nghiên cứu về cơ cấu 8051 quét và xác định phím.
13.2.2 Quét và xác định phím.
VCC_CIRCLE
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1 2
1 2
1 2
1 2DO
D1
D1
D2
D2
D3
D3 DO
0
1
2
3
4567
89AB
CD
EF
CONG RA
CONG VAO
Hình 1.1: Nối ghép bàn phím ma trận tới các cổng.
Các hàng được nối tới một đầu ra và các cột được nối tới một cổng vào. Nếu
không có phím nào được ấn thì việc đóng cổng vào sẽ hoàn toàn là 1 cho tất cả các cột
vì tất cả được nối tới dương nguồn VCC. Nếu tất cả các hàng được nối đất và một phím
được ấn thì một trong các cột sẽ có giá trị 0 vì phím được ấn tạo đường xuống đất. Chức
năng của bộ vi điều khiển là quét liên tục để phát hiện và xác định phím được ấn.
13.2.3 Nối đất các hàng và đọc các cột.
Để phát hiện một phím được ấn thì bộ vi điều khiển nối đất tất cả các hàng bằng
cách cấp 0 tơí chốt đầu ra, sau đó nó đọc các hàng. Nếu dữ được đọc từ các cột là D3 -
D0 = 1101 thì không có phím nào được ấn và quá trình tiếp tục cho đến khi phát hiện
một phím được ấn. Tuy nhiên, nếu một trong các bít cột có số 0 thì điều đó có nghĩa là
Bài tập lớn môn Vi Xử Lý
11
việc ấn phím đã xảy ra. Ví dụ, nếu D3 - D0 = 1101 có nghĩa là một phím ở cột 1 được
ấn. Sau khi một ấn phím được phát hiện, bộ vi điều khiển sẽ chạy quá trình xác định
phím. Bắt đầu với hàng trên cùng, bộ vi điều khiển nối đất nó bằng cách chỉ cấp mức
thấp tới chân D0, sau đó nó đọc các cột. Nếu dữ liệu đọc được là toàn số 1 thì không có
phím nào của hàng này được ấn và quá trình này chuyển sang hàng kế tiếp. Nó nối đất
hàng kế tiếp, đọc các cột và kiểm tra xem có số 0 nào không? Qúa trình này tiếp tục cho
đến khi xác định được hàng nào có phím ấn. Sau khi xác định được hàng có phím được
ấn thì công việc tiếp theo là tìm ra phím ấn thuộc cột nào. Điều này thật là dễ dàng vì bộ
vi điều khiển biết tại thời điểm bất kỳ hàng nào và cột nào được truy cập.
Hình 1.2: Lưu đồ tìm phím ấn
Nối đất mọi hàng
Đọc mọi cột
Chờ nhả phím
Nối đất hàng kế
tiếp
Nối đất mọi hàng
Bắt đầu
Mọi
phím
hở
Đọc mọi cột
Có
phím
ấn
Đọc mọi cột
Có
phím
ấn
Có
phím
hở ở
hàng
này
Tìm phím nào đợc
ấn
Tìm phím nào đợc
ấn
Trở về
Có
Không
Không
Có
Không
Có
Không Có
Bài tập lớn môn Vi Xử Lý
12
2.Giới thiệu về LCD
2.1 Mô tả các chân của LCD.
Phần II: Sơ đồ khối của hệ thống
Chức năng của các khối:
Khối nhập dữ liệu: Khối này dùng để nhập các thông tin cần hiển thị trên LCD
như hình ảnh hoặc các ký tự. Việc nhập dữ liệu được thực hiện bằng bàn phím
giao tiếp trực tiếp với mạch hoặc được thực hiện trong quá trình lập trình (nạp
vào bộ nhớ của vi điều khiển).
Khối lưu trữ: chính là bộ nhớ ROM hoặc RAM, dùng để lưu trữ dữ liệu hiển
thị trên LCD.
Khối xử lý trung tâm: dùng để xử lý dữ liệu, đưa ra khối giải mã.
Khối giải mã: dùng để giải mã địa chỉ dữ liệu dược đưa từ bộ vi xử lý ra.
Khối khuếch đại: tín hiệu đưa ra từ bộ vi xử lý thường rất nhỏ nên tín hiệu
được khuyếch đại
Khối hiển thị: LCD hiển thị dữ liệu mà ta đã nhập vào.
PHẦN III: Phương án
Khối xử lý trung tâm
Khối lưu trữ
Khối giải mã
Khối khuếch đại
Khối hiển thị
Khối nhập dữ liệu
Bài tập lớn môn Vi Xử Lý
13
Do kiến thức còn hạn chế nên trong khoảng thời gian 2 học kỳ, chúng em quyết
định làm phương án
Nguyên lý làm việc của mạch:
Khi khởi động mạch, khối xử lý trung tâm sẽ lấy dữ liệu lưu trữ từ bộ nhớ ROM.
Để khối xử lý quy chiếu chính xác đến địa chỉ của dữ liệu lưu trữ trong ROM, ta dùng
bộ giải mã địa chỉ.
Sau khi bộ xử lý quy chiếu được đến dữ liệu trong ROM, dữ liệu được đưa từ
ROM về bộ xử lý. Trong bộ vi xử lý, dữ liệu sẽ được xử lý (trễ, lặp, xuất ra các
port,…)
Dữ liệu khi nhập từ bàn phím được vi điều khiển quét và xãc định phím ấn xẽ gửi mã
ASCII cuả phím ấn đến bộ vi xử lý
Sau khi dữ liệu được xử lý ở bên trong bộ vi xử lý, nó sẽ được xuất ra các port của
vi xử lý. Các port này lại được nối tới các chân tương ứng của màn hình LCD
Lựa chọn linh kiện để lắp mạch:
1 IC AT89C51.
1 BÀN PHÍM 4X4
Khối nhập dữ liệu
( Bàn phím)
Khối giải mã
Khối khuếch đại
Khối hiển thị
Khối xử lý trung tâm
Khối lưu trữ
(ROM + RAM)
Bài tập lớn môn Vi Xử Lý
14
1 LCD 16X2
1 BỘ DAO ĐỘNG THẠCH ANH TẦN SỐ 12 MHZ.
CÁC ĐIỆN TRỞ VÀ CÁC TỤ ĐIỆN
PHẦN IV : THIẾT KẾ CHƯƠNG TRìNH CHO VI ĐIỀU KHIỂN
I. 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 xẽ 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 AT89C51.
Trong sơ đồ nguyên lý, dữ liệu từ Port 2 sẽ được xuất các chân dữ liệu tương ứng
của LCD
Ba chân p3.0,p3.1,p3.4 xẽ được nối với chân RS,EN,RW của LCD
Port 1 có 8 chân được sử dụng để lối với các chân của bàn phím .Như vậy mục đích
chương trình sẽ là
- Điều khiển việc nhập dữ liệu từ bàn phím vào vi điều khiển
+trước tiên xác định phím nào được bấm bằng việc cho các hành nối đất và các
cột được nối ở mức cao
+sau đó xác định mã ASCII của phím đựơc ấn và gửi đến vi xử lý
- Điều khiển để dòng chữ nhập từ bàn phím khi nhấn phím # thì kết thúc nhập và
cho dòng chữ nhập từ bàn phím nhấp nháy trên màn hình LCD sau đó cho chữ chạy từ
trái qua phải
Đầu tiên cần phải khai báo dữ liệu(nạp dữ liệu vào các ô nhớ của Rom 8951) được
nhập theo tong byte.Các byte này xẽ được cất vào các ô nhớ liên tiếp của bộ nhớ rom
của vi điều khiển 89c51 khi chúng ta muốn truy xuất dữ liệu thì chỉ việc truy xuất vào
các ô nhớ đã đính địa chỉ
Dữ liệu được truy xuất, đưa ra Port 2 để hiển thị chữ bằng cách sau:
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 ghi
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 2 là được.
Việc nhập dữ liệu từ bàn phím trước hết cho các hàng nối đất lấy các cột làm đầu vào
xem có phím bấm chưa .Sau đó để xác định phím bấm ta cho tất cả các hàng nối ở mức
cao lấy các cột làm đầu vào,sau đó cho hàng 1 nối đất và quét tất cả các cột xem nhấn ở
đâu ,sau đó làm lại với các hàng còn lại .Rồi lấy mã ASCII của phím bấm gửi về vi điều
khiển và xuất ra LCD,lưu ý 1 phím có thể hiển thị 4 ký tự
Bài tập lớn môn Vi Xử Lý
15
SƠ ĐỒ THUẬT TOÁN CỦA CHƯƠNG TRÌNH
Khởi tạo LCD
Thông báo nhập dữ liệu
Thực hiện giao tiếp với
bàn phím
Bắt đầu
Nối đất tất cả các hàng
Đọc tất cả các cột
Tất cả các
phím thả
Đọc tất cả
các cột
Có phím nhấn
Chờ phím nhấn xong
Đọc tất cả các cột
Có phím nhấn
Xác định phím nhấn thuộc
hàng nào
Xác định phím nhấn thuộc
cột nào
Xác định vị trí phím nhấn
Xác định phím đợc nhấn
lần mấy
Xác định từ mã
Gửi lên LCD
Có nhấn phím nếu kết thúc
không
Chạy quảng cáo
Bài tập lớn môn Vi Xử Lý
16
II.SƠ ĐỒ NGUYÊN LÝ
J1
CON14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
U2
AT89C52
9
18
19
20
29
30
31
40
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
G
N
D
PSEN
ALE/PROG
EA/VPP
V
C
C
P1.0/T2
P1.1/T2-EX
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INTO
P3.3/INT1
P3.4/TO
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
R1
R
SW1
J3
CON2
1 2
J2
1
2
3
4
5
6
7
8
C1 C3 + C5
+
C6
+ C7
C4
U4
LM7805
1
2
3
VI
G
N
D
VO
Y2
1 2 3
654
8 9
=
7
+CON 0
A
B
C
D
1 2 43
D
7
14
D
6
13
D
5
12
D
4
11
D
3
10
D
2
9
D
1
8
D
0
7
E
6
R
W
5
R
S
4
V
SS
1
V
D
D
2
V
EE
3
LCD1
LM016L
II. CHƯƠNG TRÌNH
Chương trình được lập trình bằng ngôn ngữ lập trình là ASSEMBLY.
********************************************************
RS BIT P3.0 ;Bit P3.0 dung chon thanh ghi lenh/du lieu
EN BIT P3.1 ;Bit P3.1 dung lam chan 'Cho phep'
RW BIT P3.4 ;Bit P3.4 dieu khien viec doc/ghi du lieu
Bài tập lớn môn Vi Xử Lý
17
C1 BIT P1.2 ;Cac bit P1.2, P1.1, P1.0 lan luot noi voi
C2 BIT P1.1 ;cac cot tu 1 - 3 cua ban phim
C3 BIT P1.0
H1 BIT P1.3 ;Cac bit P1.3 - P1.6 lan luot noi voi
H2 BIT P1.4 ; cac hang tu 1 - 4 cua ban phim
H3 BIT P1.5
H4 BIT P1.6
ORG 0
Mainpro:
LCALL Hien_Promt
LCALL Nhap_Dulieu
LJMP QuangCao
Hien_Promt:
;1-Hien thi dau nhac nap du lieu
;Khoi tao LCD
MOV A,#38H ;Che do 2 dong ma tran 5x7
LCALL COMMAND ;Thuc hien lenh
MOV A,#0EH ;Bat hien thi nhap nhay con tro
LCALL COMMAND
MOV A,#01H ;Xoa man hinh hien thi
LCALL COMMAND
;gioi thieu cac thanh vien lam de tai
MOV DPTR,#900H ;Nap con tro du lieu
MOV R3,#7 ;R3 de chua so chuoi duoc hien thi
AGAIN: LCALL GTTIEP ; GTIEP = gioi thieu tiep
INC DPTR
DJNZ R3,AGAIN
LJMP Xoamanhinh
GTTIEP:
BACK1:
CLR A
MOVC A,@A+DPTR
MOV R7,A ;Du cat vao R7 de phuc vu cho HIENTHI1
JZ TIEPTUC ;Chuyen sang nhap chuoi tiep theo
LCALL HIENTHI1
LCALL DELAY
LCALL DELAY
INC DPTR
SJMP BACK1
TIEPTUC:
LCALL DELAY
MOV A,#01 ;Xoa man hinh de hien thi chuoi moi
Bài tập lớn môn Vi Xử Lý
18
LCALL COMMAND
LCALL DELAY
RET ; RET OF GTTIEP
;Chuong trinh con xuat lenh
COMMAND: LCALL READY ;Kiem tra co ban neu san sang
MOV P2,A ;thi chuyen ma lenh ra cong P2
CLR RS ;RS =0 Cho xuat lenh
CLR RW ;RW = O De gi lenh toi LCD
SETB EN ;Chan E nhan duoc mot xung cao
CLR EN ;xuong thap cho phep LCD chot lenh
RET ; ret of COMMAND
xoamanhinh:
;giu prompt mot luc, roi xoa man hinh de nhap du lieu
LCALL DELAY
MOV A,#01
LCALL COMMAND
LJMP Nhap_dulieu
;Chuong trinh con hien thi
HIENTHI1:
MOV A,#06H ;Chon huong hien thi sang ben phai
LCALL COMMAND
LCALL READY
MOV P2,R7
SETB RS ;RS = 1 De cho phep xuat du lieu
CLR RW ;RW = 0 De ghi du lieu ra LCD
SETB EN ;Chan Enable nha mot xung cao
CLR EN ;xuong thap de chot du lieu
RET ;RET of HIENTHI1
;Chuong trinh con tao tre
DELAY:
MOV R6,#255
VONG2:MOV R7,#255
HERE: DJNZ R7,HERE
DJNZ R6,VONG2
RET
; Kiem tra co ban
READY: SETB P2.7 ;lay P2.7- chan co ban lam dau vao
CLR RS ; RS =0 de truy cap thanh ghi lenh
SETB RW ; RW = 1 Doc thanh ghi lenh
;Doc thanh ghi lenh va kiem tra co lenh
BACK: CLR EN
SETB EN
Bài tập lớn môn Vi Xử Lý
19
JB P2.7,BACK ;cho cho den khi LCD het ban
RET ;Of ready
;CHUONG TRINH CON GIAO TIEP VOI BAN PHIM
;P1.1 P1.2 P1.3 duoc noi voi cac cot 3 2 1
;P1.4 P1.5 P1.6 P1.7 duoc noi voi cac hang 1 2 3 4
Nhap_Dulieu:
;Doan nay phuc vu cho viec luu Du lieu vao vung RAM da nang
MOV R1,#30H ;R1 dung lam con tro ram,phuc vu cho
; viec luu giu du lieu vao RAM
MOV R2,#4FH ; do lon khong gian RAM dan nang
Xoaram: MOV @R1,#20H ;20h ma ASCII cua ky tu trang ' '
INC R1
DJNZ R2,Xoaram
MOV R1,#30H
MOV R5,#0 ;dem so ky tu hien tai dang hien thi tren LCD
;doan nay chi nhan biet xem la co phim nhan chua
; nen ta tiep dat tat ca cac hang
batdau:
MOV P1,#00000111b ;De co the nhan biet duoc phim da nhan
; chua ta dat cac bit tuong ung voi
;cac cot lam dau vao va cac bit tuong
;ung voi hang duoc noi dat
MOV R0,#0 ;vi moi phim co the hien thi 4 ky tu
;ta dung R0 de xac dinh so ky tu tren
; mot phim da duoc nhan la bao nhieu
KT1:
MOV A,P1
CJNE A,#00000111b,KT1 ;Kiem tra nha phim chua,neu chua
;kiem tra lai cho den khi nha phim
KT2: LCALL DELAY
MOV A,P1 ; De doc cac cot
CJNE A,#00000111b,CHO1 ; Neu phim nhan cho xong
SJMP KT2 ; Neu khong thi kiem tra lai xem no co
duoc nhan ko
CHO1:
MOV R0,#0
LCALL DELAY ; Cho cho nhan xong
CJNE A,#00000111b,CHO2 ;Neu co phim nhan thi nhay den
;CHO2 cho hien thi phim do va
;tiep tuc kiem tra xem phim do
; co duoc nhan tiep ngay khong
Bài tập lớn môn Vi Xử Lý
20
SJMP KT2
CHO2:
INC R0 ;Da co mot phim duoc nhan 1 lan
LCALL HIEN ; hien thi ky tu do
LCALL DELAY
LCALL DELAY
MOV P1,#00000111B ;kiem tra co phim nhan tiep khong
LCALL DELAY
MOV A,P1
CJNE A,#00000111b,CHO3
MOV A,R4 ;luu ky tu duoc hien thi cuoi
;cung cua phim nhan vao RAM
MOV @R1,A
INC R1
INC R5
;Doan nay dung de dich man hinh hien thi sang phai khi so
;ky tu da hien thi lon hon 16
CLR C
MOV A,R5
SUBB A,#16
JC TIEP1
MOV A,#18H
LCALL COMMAND
;het doan dich hien thi sang phai
TIEP1:MOV R0,#0
SJMP KT2
CHO3:MOV A,#10H
LCALL COMMAND
INC R0
LCALL HIEN
LCALL DELAY
LCALL DELAY
MOV P1,#00000111B
LCALL DELAY
MOV A,P1
CJNE A,#00000111b,CHO4
MOV A,R4
MOV @R1,A
INC R1
INC R5
CLR C
MOV A,R5
SUBB A,#16
JC TIEP2
MOV A,#18H
Bài tập lớn môn Vi Xử Lý
21
LCALL COMMAND
TIEP2:
MOV R0,#0
SJMP KT2
CHO4:MOV A,#10H
LCALL COMMAND
INC R0
LCALL HIEN
LCALL DELAY
LCALL DELAY
MOV P1,#00000111B
LCALL DELAY
MOV A,P1
CJNE A,#00000111b,CHO5
MOV A,R4
MOV @R1,A
INC R1
INC R5
CLR C
MOV A,R5
SUBB A,#16
JC TIEP3
MOV A,#18H
LCALL COMMAND
TIEP3: MOV R0,#0
LJMP KT2
CHO5:MOV A,#10H
LCALL COMMAND
INC R0
LCALL HIEN
LCALL DELAY
LCALL DELAY
MOV P1,#00000111B
LCALL DELAY
MOV A,P1
CJNE A,#00000111b,VONGVE
MOV A,R4
MOV @R1,A
INC R1
INC R5
CLR C
MOV A,R5
SUBB A,#16
JC TIEP4
MOV A,#18H
LCALL COMMAND
Bài tập lớn môn Vi Xử Lý
22
TIEP4: MOV R0,#0
VONGVE: LJMP KT2
HIEN:
Timhang:
MOV P1,#11111111B ;DAU TIEN KO TIEP DAT HANG NAO
;VA DAT CAC COT LAM DAU VAO
CLR H1 ;Tiep dat hang 1
MOV A,P1 ;Doc tat ca cac cot
CJNE A,#11110111b,HG1
;Hang 1 tim cot (ro rang la cac hang tuong ung voi 5 bit
;dau la co dinh=11110 do chi tiep dat hang1, tai day
;ta chi can quan tam den phim co phai o hang 1 khong thoi
; boi vay chi can co 1 trong 3 cot duoc nhan se lam cho
;1 cot tiep dat dan den 1 trong 3 bit dau =0 nhu vay
; khi do gia tri A se khac #11110111 chung to phim nhan
; o hang 1 va ta tiep tuc xac dinh phim do o cot nao
MOV P1,#11111111B
CLR H2 ;Tiep dat hang 2
MOV A,P1 ;Doc tat ca cac cot
CJNE A,#11101111b,HG2 ;Hang 1 tim cot
MOV P1,#11111111B
CLR H3 ;Tiep dat hang 3
MOV A,P1 ;Doc tat ca cac cot
CJNE A,#11011111b,HG3 ;Hang 3 tim cot
MOV P1,#11111111B
CLR H4 ;Tiep dat hang 4
MOV A,P1 ;Doc tat ca cac cot
CJNE A,#10111111b,HG4 ;Hang 4 tim cot
LJMP KT2
HG1: CJNE R0,#1,DT12
MOV DPTR,#DATA11
LJMP TIM ;Tim xem phim nhan o cot nao
DT12: CJNE R0,#2,DT13
MOV DPTR,#DATA12
LJMP TIM
DT13: CJNE R0,#3,DT14
MOV DPTR,#DATA13
LJMP TIM
;Neu khong phai la cac truong hop tren thi R0 = 4
; ta tim luon den data14
DT14: MOV DPTR,#DATA14
Bài tập lớn môn Vi Xử Lý
23
LJMP TIM
HG2: CJNE R0,#1,DT22
MOV DPTR,#DATA21
LJMP TIM
DT22: CJNE R0,#2,DT23
MOV DPTR,#DATA22
SJMP TIM
DT23: CJNE R0,#3,DT24
MOV DPTR,#DATA23
SJMP TIM
DT24: MOV DPTR,#DATA24
SJMP TIM
HG3: CJNE R0,#1,DT32
MOV DPTR,#DATA31
SJMP TIM
DT32: CJNE R0,#2,DT33
MOV DPTR,#DATA32
SJMP TIM
DT33: CJNE R0,#3,DT34
MOV DPTR,#DATA33
SJMP TIM
DT34: MOV DPTR,#DATA34
SJMP TIM
HG4: CJNE R0,#1,DT42
MOV DPTR,#DATA41
SJMP TIM
DT42: CJNE R0,#2,DT43
MOV DPTR,#DATA42
SJMP TIM
DT43: CJNE R0,#3,DT44
MOV DPTR,#DATA43
SJMP TIM
DT44: MOV DPTR,#DATA44
SJMP TIM
TIM:
RRC A ;Kiem tra cot nao o muc thap nho co CY
JNC LAYMA ;Neu bang 0 thi lay ma ASCII
Bài tập lớn môn Vi Xử Lý
24
INC DPTR ;Trai lai tim cot ke
SJMP TIM
LAYMA:CLR A
MOVC A,@A + DPTR
JZ Ketthucnhap
MOV R4,A
CJNE A,#23h,SS2 ; a= '#' ,ta quy uoc la phim xoa
SJMP backspace
SS2 : CJNE A,#24h,SS3 ;quy uoc '$' la ma xuong dong
LCALL Xuongdong
SS3 :
LCALL HienThiPhimNhan ;hien thi phim da nhan
VE: RET ;OF HIEN
BACKSPACE:
;doan nay de xoa ca ky tu do da duoc luu trong RAM
DEC R1
DEC R5
DEC R1
DEC R5
MOV A,@R1
MOV R4,A
;Doan nay de xoa ky tu tren LCD
MOV A,#10H ;dich con tro sang phai mot cot
LCALL COMMAND
MOV A,#20H ;chen ky tu trang vao vi tri do
LCALL HIENTHIPHIMNHAN
MOV A,#10H ;lui ve 1 cot
LCALL COMMAND
LJMP VE
ketthucnhap: ;do khoang cach tu doan lay ma
LJMP quangcao ;den doan quangcao nam
ngoai
;dai cua lenh JZ nen ta dung
;doan nay de noi tiep
xuongdong: MOV A,#0C0H
LCALL COMMAND
LJMP VE
Hienthiphimnhan:
LCALL READY
MOV P2,A
SETB RS ;RS = 1 De cho phep xuat du lieu
CLR RW ;RW = 0 De ghi du lieu ra LCD
SETB EN ;Chan Enable nha mot xung cao
CLR EN ;xuong thap de chot du lieu
Bài tập lớn môn Vi Xử Lý
25
LCALL DELAY
RET
QUANGCAO:
MOV A,R5
MOV R3,A
;Xoa tung ky tu
CHAY1: Mov a,#10h
Lcall command
MOV A,#20h
LCALL HIENTHIPHIMNHAN
Mov a,#10h
Lcall command
LCALL DELAY
LCALL DELAY
DJNZ R5,CHAY1
;hien thi lai tung ky tu
MOV R1,#30H
HTL:
MOV A,@R1
MOV R7,A
LCALL Hienthi1
LCALL DELAY
LCALL DELAY
LCALL DELAY
TIEP: INC R1
DJNZ R3,HTL
MOV R4,#5
FOREVER:
MOV R4,#5
NHAPNHAY: MOV A,#0AH ;Xoa man hinh hien thi
LCALL COMMAND
LCALL DELAY ;de man hinh tat mot luc
LCALL DELAY
LCALL DELAY
LCALL DELAY
LCALL DELAY
MOV A,#0eH ;Bat man hinh hien thi
LCALL COMMAND
LCALL DELAY ; de mot luc
LCALL DELAY
Bài tập lớn môn Vi Xử Lý
26
LCALL DELAY
LCALL DELAY
DJNZ R4,NHAPNHAY
LCALL DELAY
LCALL DELAY
MOV R4,#40 ; vi LCD co 40 cot, nen cuoi cung
;hien thi se dich ve dung vi tri cu
DichTrai: Mov A,#18H
LCALL COMMAND
LCALL DELAY
LCALL DELAY
LCALL DELAY
DJNZ R4,DichTrai
LCALL DELAY
LCALL DELAY
MOV R4,#40
DichPhai: Mov A,#1CH
LCALL COMMAND
LCALL DELAY
LCALL DELAY
DJNZ R4,DichPhai
LJMP FOREVER
ORG 900H
DANHSACH: DB "Nhom thuc hien: ",0
SV1: DB "NGUYEN HOANG HAI",0
SV2: DB "HOANG NGOC ANH",0
SV3: DB "NGUYEN HUU HAI",0
SV4: DB "DUONG THANH PHAO",0
SV5: DB "NGUYEN HOANG HAI",0
DULIEU: DB "Nhap du lieu...",0
ORG 1000H
DATA11: DB '1','2','3'
DATA12: DB '1','A','D'
DATA13: DB '1','B','E'
DATA14: DB '1','C','F'
DATA21: DB '4','5','6'
DATA22: DB 'G','J','M'
DATA23: DB 'H','K','N'
Bài tập lớn môn Vi Xử Lý
27
DATA24: DB 'I','L','O'
DATA31: DB '7','8','9'
DATA32: DB 'P','T','W'
DATA33: DB 'R','U','X'
DATA34: DB 'S','V','Y'
DATA41: DB '#',' ',0
DATA42: DB ' ','0',0
DATA43: DB '$','_',0
DATA44: DB '#','@',0
END
5 :Tài liệu tham khảo:
Kĩ thuật Vi xử lý -- Tác giả Văn Thế Minh--.
Cấu trúc và lập trình họ vi điều khiển 8051. -- Tác giả Nguyễn Tăng
Cường, Phan Quốc Thắng --
Các file đính kèm theo tài liệu này:
- cua_phao_0093.pdf