Tải bản đầy đủ (.pdf) (57 trang)

Đồ án môn học thiết bị khóa điện tử bằng mật khẩu dùng 8051

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

VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

LỜI NÓI ĐẦU
Kỹ thuật vi điều khiển đã được phát triển và ứng dụng rộng rãi trên thế
giới trong rất nhiều lĩnh vực khác nhau, khắc phục được những vấn đề về cơ
khí. Ứng dụng kỹ thuật vi điều khiển là sự phát triển cần thiết của một xã hội
hiện đại.
Trong quá trình học tập em có cơ hội làm quen với vi điều khiển qua các môn
học trên lớp và tìm hiểu thêm thông qua các tài liệu sách báo và internet, em
nhận thấy: ”Ứng dụng vi điều khiển vào cuộc sống là một điều thú vị và là cả
một quá trình sáng tạo”
Trong đồ án kỹ thuật vi điều khiển và kết nối ngoại vi này, em chọn đề tài:
”Thiết bị khóa cửa điện tử”
Tuy em đã cố gắng thực hiện đồ án tốt nhất có thể, nhưng vẫn không tránh được
thiếu sót, mong quý Thầy Cô góp ý và thông cảm cho những thiếu sót của em.
Trong đồ án em đã sử dụng các tài liệu tham khảo:
“Họ Vi Điều Khiển 8051” của thầy Tống Văn On và Hoàng Đức Hải
“Giáo Trình Vi Điều Khiển” Của GV Phạm Hùng Kim Khánh
Từ các trang web: www.dientuvietnam.net, codientu.org

Đà Nẵng, Ngày 25 Tháng 05 Năm 2015
Phạm Ngọc Hiên
Nguyễn Xuân Toàn

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 1



VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
---oOo--.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Đà Nẵng, ngày… tháng …năm 2015

SVTH: PHẠM NGỌC HIÊN_11CDT1

SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 2


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

MỤC LỤC

LỜI NÓI ĐẦU .......................................................................................... 1
Chương 1:
GIỚI THIỆU ĐỀ TÀI ................................................... 5
1.1Giới thiệu.............................................................................................. 5
1.1.1 Chức năng hệ thống ...................................................................... 5
1.1.2Hoạt động của hệ thống ................................................................. 5
1.2Phân tích các khối chức năng của hệ thống ......................................... 6
1.2.1Khối xử lý trung tâm ...................................................................... 6
1.2.2 Bàn phím ...................................................................................... 6
1.2.3 Khối hiển thị.................................................................................. 6
1.2.4 Khối nguồn .................................................................................... 7
1.2.5 Khối mạch điều khiển động cơ đóng ,mở cửa ............................. 7
1.2.6 Khối báo động .............................................................................. 7
1.3 Giới thiệu vi điều khiển 8051 .............................................................. 7
1.3.1 Giới thiệu MSC-51........................................................................ 7
1.3.2 Sơ lược về các chân của ic 89C51: .............................................. 8
1.3.3. Khảo sát các khối bên trong 89c51 − tổ chức bộ nhớ: ............. 10
1.3.4 Hoạt động của bộ định thì timer: ................................................ 12
1.3.5 Hoạt động của bộ ngắt (INTERRUPT): ..................................... 17

1.4. Giới thiệu về LCD ............................................................................ 19
1.4.1. Cấu tạo ....................................................................................... 19
1.4.2. Chức năng các chân................................................................... 20
1.4.3 Sơ đồ khối của HD44780 ............................................................ 22
1.5 Giới thiệu về bàn phím...................................................................... 25
Chương 2: THIẾT KẾ VÀ THI CÔNG MẠCH ..................................... 25
2.1. Sơ đồ mạch. ...................................................................................... 25
2.1.1Khối điều khiển trung tâm. .......................................................... 26
2.1.2 LCD ............................................................................................. 27
2.1.3 Bàn Phím ..................................................................................... 28
2.1.4 Khối mạch điều khiển đóng mở cửa ........................................... 30
2.1.5Khối báo động .............................................................................. 31
2.1.6. Mạch nguồn................................................................................ 32
Chương 3: LƯU ĐỒ THUẬT TOÁN VÀCHƯƠNG TRÌNH ............... 32
3.1 Lưu đồ thuật toán của chương trình chính (chương trình nhập mật
khẩu) ........................................................................................................ 34
3.2 Thuật toán của các chương trình con ................................................ 35
3.2.1 Thuật toán quét phím .................................................................. 35
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 3


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

3.2.2 Thuật toán của chương trình con enter và so sánh mật khẩu ..... 37
3.2.3 Thuật toán của chương trình con đổi mật khẩu .......................... 38

3.2.5 Thuật toán của chương trình con đóng và mở cửa. .................... 40
3.2.6 Thuật toán của chương trình con phím xóa. ............................... 41
3.2.7 Thuật toán hiển thị trên LCD ...................................................... 42
3.3 CHƯƠNG TRÌNH ............................................................................ 43

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 4


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

Chương 1:

GVHD:ThS. LÊ XỨNG

GIỚI THIỆU ĐỀ TÀI

1.1Giới thiệu
Ngành công nghệ kỹ thuật không ngừng phát triển, việc ứng dụng vi điều khiển
ngày càng được sử dụng rộng rãi trong lĩnh vực dân dụng và công nghiệp, các thiết
bị điện tử là một phần gắn với cuộc sống con người trong xã hội hiện đại, hệ thống
kiểm soát bảo vệ an ninh củng trong xu thế đó, phần lớn hiện tại các khóa sử dụng
hiện nay chủ yếu là khóa cơ khí,nhưng trong công việc có bảo mật ,giám sát an
ninh và giới hạn người vào, thì việc ứng dụng khóa điện tử vào các cơ quan, nhà
máy là một phương án có hiệu quả cao. Ở đây em xin giới thiệu về đề tài về khóa
điện tử với một số yêu cầu cơ bản của một thiết bị khóa thông dụng:
- Tính an toàn: phải có chức năng bảo mật cao
- Dễ sử dụng

- Có thể thay đổi bảo mật khi cần thiết
- Hệ thống vận hành ổn định, tuổi thọ cao
- Có thể điều khiểm từ xa bằng sóng RF
Trên cơ sở đó, em đã đưa ra phương án thiết kế khóa điều khiển với các chức năng
như sau:

1.1.1Chức năng hệ thống
-

-

Hệ thống gồm một chuổi mã số từ 0 đến 9, và độ dài mật mã không quá 10 số
chỉ có người được phân quyền sử dụng mới biết được.
Có hệ thống phím gồm 15 phím, ngoài 10 số mật khẩu có các phím chức năng:
phím Enter, phím Xóa, phím Đổi mã, phím Khóa, và một phím dự bị để mở
rộng thêm khi cần thiết.
Hệ thống hiển thị trực quan qua LCD 16x2A, có đèn chiếu sáng khi điều kiện
môi trường tối.
Có hệ thống báo động khi nhập sai quá nhiều lần. (ở đây em thiết kế là 3 lần,
sau 3 lần nhập sai thì LCD hiển thị sai mã, và kích hoạt hệ thống báo động)
Có chức năng thay đổi mật khẩu khi cần thiết, và mật khẩu mặc định ban đầu là
111111.
Phím Xóa có thể xóa khi bạn nhập sai, sửa nhầm lẫn khi nhập phím.

1.1.2Hoạt động của hệ thống
Ban đầu:
- Thay đổi mật khẩu cho người sử dụng:
 Ấn phím thay đổi mật khẩu, hệ thống sẽ hiển thị trên LCD là : ”
NHAP MK CU”
 Tiến hành nhập mật khẩu cũ, nhấn Enter, nếu đúng thì hệ thống

hiển thị : ”NHAP MK MOI”, sau khi nhập mật khẩu mới , nhấn
Enter thì LCD hiển thị:”NHAP LAI MK”, nếu quá trình đổi mã
thành công thì LCD hiễn thị:”DA DOI MK”
 Nếu sai thì hệ thống sẽ hiển thị:” SAI MA, NHAP LAI”, sai quá
3 lần thì sẻ kích hoạt hệ thống báo động.
-Nhập mật khẩu:
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 5


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

 Lcd hiển thị nhập mật khẩu, người sử dụng nhập mã thông qua
bàn phím, nhấn Enter để xác nhận nhập xong, nếu nhập đúng thì
LCD hiển thị “ MO KHOA”, nếu nhập sai thì LCD hiển thị:”
SAI MA, NHAP LAI”,sai quá 3 lần thì kích hoạt hệ thống báo
động.
 Nếu người dùng có thể xóa khi mã đang hập khi cảm thấy nhập
sai thông qua phím Xóa, và nếu nhập quá 10 ký tự thị hệ thống
tự kiểm tra, và thông báo sai mã.

1.2Phân tích các khối chức năng của hệ thống

1.2.1Khối xử lý trung tâm
Chức năng: Đóng vai trò đầu não của hệ thống,tiếp nhận tín hiệu từ bàn phím
và so sánh mã, hiển thị trên LCD.Từ đó đưa các tín hiệu điều khiển đến cho

khối mạch điều khiển động cơ, hay khối mạch báo động tương ứng.
- Sử dụng chip: AT89S52

1.2.2 Bàn phím
Bàn phím gồm các nút. Mỗi nút là một bộ phận đóng mở bằng cơ khí. Các mã
của bàn phím tạo ra có thể được tạo ra trực tiếp hoặc bằng phép quét hàng và quét cột.
Bàn phím gồm 15 phím được xắp xếp theo kiểu 3x5( với 3 cột và 5 dòng)
Chức năng: là tín hiệu đầu vào cho bộ xử lý trung tâm, nhập mã đóng mở cửa.

1.2.3 Khối hiển thị
Yêu cầu đặt ra đối với khối hiển thị là thân thiện với người sử dụng.
Dùng LCD.
 Ưu điểm:
Hiển thị rõ ràng có kèm theo chỉ dẫn.
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 6


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Thay đổi nội dung linh hoạt.Xử lý lập trình đơn giản hơn LED7 thanh và
ma trận điểm.
 Nhược điểm: Giá thành đắt

1.2.4 Khối nguồn
Chức năng: cung cấp nguồn hoạt động cho hệ thống vi điều khiển củng như hệ thống

báo động
- ở đây sử dụng họ 78xx, bao gồm 7805 cung cấp cho vi điều khiển và lcd, 7809
dùng cho động cơ đóng mở cửa

1.2.5 Khối mạch điều khiển động cơ đóng ,mở cửa
Chức năng: đóng và khóa cửa khi có tín hiệ tương ứng từ bộ xử lý trung tâm
- Mạch sử dụng mạch cầu H để điều khiển, và động cơ sử dụng là động cơ DC

1.2.6 Khối báo động
Chức năng: nhận tín hiệu từ bộ xử lý trung tâm, phát ra tín hiệu báo động bằng âm
thanh

1.2.7 Khối module từ xa sóng RF
Gồm có bộ thu và phát sóng RF cho phép điều khiển đóng mở cửa từ xa mà không
cần phải nhấn mật khẩu.

1.3 Giới thiệu vi điều khiển 8051
1.3.1 Giới thiệu MSC-51
MCS-51 l một họ IC điều khiển (micro controller), được chế tạo và bán trên thị trường
bởi hãng Intel của Mỹ. Họ IC này được cung cấp các thiết bị bởi nhiều hãng sản xuất
IC khác trên thế giới chẳng hạn: nhà sản xuất IC SIEMENS của Đức, FUJITSU của
Nhật và PHILIPS của Hà Lan. Mỗi IC trong họ đều có sự hoàn thiện riêng và có sự
hãnh diện riêng của nó, phù hợp với nhu cầu của người sử dụng và yêu cầu đặt ra của
nhà sản xuất.
IC 89C51 là IC tiêu biểu trong họ MCS-51 được bán trên thị trường. Tất cả các
IC trong họ đều có sự tương thích với nhau và có sự khác biệt là sản xuất sau có cái
mới mà cái sản xuất trước không có, để tăng thêm khả năng ứng dụng của IC đó.
Chúng có đặc điểm sau.

Hình 2.1: Sơ đồ cấu tạo 89C51

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 7


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

- 4k byte ROM (được lập trình bởi nhà sản xuất, chỉ có trong 8051).
- 128 byte RAM.
- 4 Port I/O 8 bit.
- 2 bộ định thời 16 bit.
- Giao tiếp nối tiếp.
- 64k không gian bộ nhớ chương trình mở rộng.
- 64k không gian bộ nhớ dữ liệu mở rộng.
- Một bộ xử lý luận lý (thao tác trên các bit đơn).
- 210 bit được địa chỉ hóa.
- Bộ nhân /chia 4 bit.

1.3.2 Sơ lược về các chân của ic 89C51:
89C51 l IC vi điều khiển (Microcontroller) do hãng intel sản xuất. ic 89C51 có
tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có tác
dụng kép, mỗi đường có thể hoạt động như các đường xuất nhập hoặc như các đường
điều khiển hoặc là thành phần của bus dữ liệu.
U1
39
38
37

36
35
34
33
32
1
2
3
4
5
6
7
8
19
18
31
9

P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3

P1.4
P1.5
P1.6
P1.7
XTAL1
XTAL2

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/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
ALE/PROG
PSEN

21
22
23
24

25
26
27
28
10
11
12
13
14
15
16
17
30
29

EA/VPP
RST
AT89C51

Hình 2.2: Sơ đồ chân

Chức năng các chân của 89C51:
Port 0:Port 0 l port có hai chức năng ở các chân từ 32÷39 của 89C51. Trong
các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường vào
ra.
Port 1:Port 1 l port I\O ở các chân từ 1-8. Các chân được ký hiệu l P0.0,
P0.1, P0.2,…P1.7, có thể dùng cho giao tiếp với các thiết bị bên ngoài nếu cần. Port 1
không có chức năng khác vì vậy nó chỉ dùng cho giao tiếp với các thiết bị bên ngoài
(chẳng hạn ROM, RAM, 8255, 8279, …).
SVTH: PHẠM NGỌC HIÊN_11CDT1

SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 8


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Port 2:Port2 là một port có tác dụng kép ở các chân từ 21-28 được dùng như
các đường xuất nhập hoặc các byte cao của Bus địa chỉ đối với thiết kế lớn.
Port3:Port3 l một port có tác dụng kép từ chân 10 –17. Các chân của port này
có nhiều chức năng, các công dụng chuyển đổi có liên hệ với đặc tính đặc biệt của
8951 như bảng sau:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

Tn
RXD
TXD
INT0\
INT1\
T0

T1
WR\
RD\

Chức năng chuyển đổi
Ngõ vào dữ liệu nối tiếp
Ngõ ra dữ liệu nối tiếp
Ngõ vào ngắt ngòai 0
Ngõ vào ngắt ngoài 1
Ngõ vào của timer/couter 0
Ngõ vào của timer/couter 1
Điều khiển ghi bộ nhớ dữ liệu (RAM) ngoài
Điều khiển đọc bộ nhớ dữ liệu (RAM) ngoài

Bảng2.1: Chức năng của các chân port 3
- Ngõ tín hiệu PSEN\ (Progam store enable):
PSEN\ l tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương
trình mở rộng và thường được nối với chân OE\ (output enable) của EPROM cho phép
đọc các byte mã lệnh.
PSEN ở mức thấp trong thời gian lấy lệnh.Các mã nhị phân của chương trình
được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi bên trong 89C51 để
giải mã lệnh.Khi thi hành chương trình trong ROM nội (ic 89C51) thì PSEN\ sẽ ở mức
1.
- Ngõ tín hiệu điều khiển ALE (Address latch enable):
Khi 89C51 truy xuất bộ nhớ bên ngoài, port0 có chức năng là địa chỉ và dữ liệu
do đó phải tách đường địa chỉ và dữ liệu. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín
hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối với IC chốt.
Tín hiệu ra ở ALE l một xung trong khoảng thời gian port 0 đóng vai trò là địa
chỉ thấp nên chốt địa chỉ hoàn toàn tự động. Các xung tín hiệu ALE có tốc độ bằng 1/6
tần số dao động trên vi điều khiển và có thể được dùng làm tín hiệu clock cho các phần

khác của hệ thống. Chân ALE được dùng làm ngõ vào xung lập trình cho EPROM
trong 89C51.
Ngõ tín hiệu EA\ (External Access: truy xuất dữ liệu bên ngoài):
Tín hiệu vo EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0. Nếu ở mức
1 thì ic89C51 thi hành chương trình trong ROM nội trong khoảng địa chỉ thấp 4k.Nếu
ở mức 0 thì 89C51 thi hành chương trình từ bộ nhớ mở rộng (vì ic89C51 không có bộ
nhớ chương trình trên chip).Chân EA\ được lấy làm chân cấp nguồn 21v lập trình cho
EPROM trong 89C51.
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 9


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

- Ngõ tín hiệu RST (Reset):
Ngõ tín hiệu RST ở chân 9 và ngõ vào Reset của 89C51. Khi ngõ vào tín hiệu
đưa lên mức cao ít nhất l 2 chu kỳ máy, các thanh ghi bên trong được nạp những gi trị
thích hợp để khởi động hệ thống. Khi cấp điện mạch tự động Reset.
- Ngõ vào bộ dao động X1, X2:
Bộ tạo dao động được tích hợp bên trong 8951, khi sử dụng 89C51 người thiết
kế cần ghép nối thêm tụ, thạch anh.Tần số thạch anh được sử dụng cho 89C51 l
12MHz.
- Nguồn cho 89C51:
Nguồn cho 89C51 được cung cấp ở 2 chân l 20 v 40 cấp GND v Vcc. Nguồn
cung cấp ở đây là +5v.
Khả năng của tải Port 0 l LS –TTL của port 1,2,3 l 4LS –TTL. Cấu trúc của

port được xây dựng từ FET làm cho port có thể xuất nhập dễ dàng.Khi FET tắt thì port
dễ dàng dùng chức năng xuất.Khi FET hoạt động thì port làm chức năng nhập thì khi
đó ngõ nhập mức cao sẽ làm hỏng port.

1.3.3. Khảo sát các khối bên trong 89c51 − tổ chức bộ nhớ:
Bộ nhớ trong 89C511 bao gồm ROM và RAM. RAM trong 89C51 bao gồm
nhiều thnh phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank
thanh ghi và các thanh ghi chức năng đặc biệt. 89C51 có cấu trúc bộ nhớ theo kiểu
Harvard: có những vùng nhớ riêng biệt cho chương trình và dữ liệu. Chương trình và
dữ liệu có thể chứa bên trong 89C51, nhưng 89C51 vẫn có thể kết nối với 64k byte
chương trình và 64k byte dữ liệu.
Các thanh ghi và các port xuất nhập đã được định vị (được định vị có nghĩa l
xác định) trong bộ nhớ và có thể truy xuất trực tiếp giống như các bộ nhớ địa chỉ khác.
Ngăn xếp bên trong RAM nội nhỏ hơn so với ROM ngoại như các bộ vi xử lý
khác.
RAM bên trong 89C51 được phân chia như sau:
- Các Bank thanh ghi có địa chỉ 00H ÷ 1FH.
- RAM địa chỉ hóa từng bit có địa chỉ 20H ÷ 2FH.
- RAM đa dụng có địa chỉ 30H ÷ 7FH.
Các thanh ghi có chức năng đặc biệt 80H ÷ FFH

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 10


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG


Hình 2.3 :Sơ đồ tổ chức bộ nhớ
RAM đa dụng:
Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H ÷7FH
32 địa chỉ dưới từ 00H ÷ 1FH cũng có thể được dùng với mục đích tương tự (mặc dù
các địa chỉ này cũng đã định với mục đích khác).
Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địa
chỉ gián tiếp hoặc trực tiếp. Ví dụ: để đọc nội dung ở địc chỉ 5FH của RAM nội vào
thanh ghi tích lũy A, có thể dùng một trong hai cách sau:
- Cách 1: MOV A, #5FH
- Cách 2: Ngoài cách trên RAM bên trong cũng có thể được truy xuấtbằng cách
dùng địa chỉ gián tiếp hoặc trực tiếp qua R0 hay R1:
MOV R0, #5FH
MOV A, @R0
Lệnh đầu tin dùng để nạp địa chỉ tức thời #5FH vo thanh ghi R0, lệnh thứ 2
dùng để chuyển nội dung của ô nhớ có địa chỉ mà R0 đang chỉ tới vào thanh ghi tích
lũy A.
RAM địa chỉ hĩa từng bit:

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 11


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

8951 chứa 210 bit được địa chỉ hóa, trong đó có 128bit chứa các byte có địa chỉ

từ 20H÷2FH và các bit còn lại chức trong nhóm thanh ghi có chứa năng đặc biệt.
Ý tưởng truy xuất từng bit bằng phần mềm l một đặc tính mạnh của vi điều
khiển nói chung. Các bit có thể được đặt, xóa, And, OR…, với một lệnh đơn. Mà điều
này đối với vi xử lý đòi hỏi phải có một chuỗi lệnh đọc – sửa - ghi để đạt được mục
đích tương tự như vi điều khiển. Ngồi ra các port cũng có thể truy xuất được từng bit
làm đơn giản đi phần mềm xuất nhập từng bit. 128 bit truy xuất từng bit này cũng có
thể truy xuất như các byte hoặc các bit phụ thuộc vào lệnh được dùng.
Ví dụ: để đặt bit thứ 57 ta dùng lệnh sau:
SETB 67H
Các Bank thanh ghi:
32 byte thấp của bộ nhớ RAM nội được dùng cho các bank thanh ghi. Bộ lệnh
8031 hỗ trợ 8 thanh ghi nói trên có tên là R0 ÷ R7 và theo mặc định khi reset hệ thống,
các thanh ghi này có địa chỉ từ 00H ÷ 07H.
Ví dụ: lệnh sau đây sẽ đọc nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A.
MOV A, R5
Đây là lệnh 1 byte dùng địa chỉ thanh ghi. Tuy nhiên yêu cầu trên có thể thi
hành bằng lệnh 2 byte dùng địa chỉ trực tiếp nằm trong byte thứ hai:
MOV A,#05H
Các lệnh dùng các thanh ghi R0 ÷ R7 sẽ ngắn hơn và nhanh hơn so với các lệnh
có chức năng tương tự dùng kiểu địa chỉ trực tiếp.Các dữ liệu được dùng thường
xuyên nên dùng một trong các thanh ghi này. Do có 4 bank thanh ghi nên tại một thời
điểm chỉ có một bank thanh ghi được truy xuất bởi các thanh ghi R0 ÷ R7. Để chuyển
đổi việc truy xuất các bank thanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi
trong thanh ghi trạng thi. Giả sử bank thanh ghi thứ 3 đang được truy xuất lệnh sau
đây sẽ chuyển nội dung của thanh ghi A vào ô nhớ RAM có địa chỉ 18H:
MOV R0, A
Tóm lại :ý tưởng dùng các bank thanh ghi cho phép ta chuyển hướng chương trình
nhanh và hiệu quả hơn.
1.3.4 Hoạt động của bộ định thì timer:
Giới thiệu:

Một định nghĩa đơn giản của timer l một chuỗi các flip-flop chia đôi tần sồ nối
tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp. Ngõ ra của tầng cuối làm
xung nhịp cho flip - flop báo tràn của timer (flip - flop cờ). Giá trị nhị phân trong các
flip - flop của timer có thể xem như đếm số xung nhịp (hoặc cc sự kiện) từ khởi động
timer. Ví dụ timer 16 bit sẽ đếm từ 0000H đến FFFFH.Cờ báo tràn sẽ lên 1 khi số đếm
tràn từ FFFFH đến 0000H.
ic89C51 có hai timer 16 bit, mỗi timer có 4 cách làm việc. Người ta sử dụng
các timer để:
- Định khoảng thời gian.
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 12


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

- Đếm sự kiện.
- Tạo tốc độ baud cho port nối tiếp trong ic89C51
Trong các ứng dụng định nghĩa khoảng thời gian, người ta sử dụng lập trình
timer ở một khoảng đều đặn và đặt cờ tràn timer.Cờ được sử dụng để đồng bộ hóa
chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngõ vào hoặc
gởi sự kiện ra các ngõ ra. Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều
đặn của timer để đo thời gian trôi qua giữa hai sự kiện (Ví dụ: đo độ rộng xung).
Đếm sự kiện dùng để xác định số lần xảy ra của một số sự kiện.Một “sự kiện” l
bất cứ tác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của
89C51.
Thanh ghi chế độ timer ( TMOD ):

Thanh ghi TMOD chứa hai nhóm 4 bit dùng để đặt chế độ làm việc cho timer 0
và timer 1.
Bit
Tn
Timer
Mơ tả
7
GATE
1
Bit điều khiển cổng. Khi GATE=1 thì bộ định thời chỉ
hoạt động khi chân INTO=1
6
1
Bit chọn chức năng đếm hoặc định thời
C/ T
C/ T =1:bộ định thời l bộ đếm
C/ T =0:bộ định thời l bộ định khoảng thời gian
5
M0
1
Bit chon chế độ hoạt động của bộ định thời
4
M1
1
Bit chon chế độ hoạt động của bộ định thời
3
GATE
0
Bit điều khiển cổng. Khi GATE=1 thì bộ định thời chỉ
hoạt động khi chân INTO=1

2
0
Bit chọn chức năng đếm hoặc định thời
C/ T
C/ T =1:bộ định thời l bộ đếm
C/ T =0:bộ định thời l bộ định khoảng thời gian
1
M0
0
Bit chon chế độ hoạt động của bộ định thời
0
M1
0
Bit chon chế độ hoạt động của bộ định thời
Bảng 2.2 Thanh ghi timer
Thanh ghi điều khiển timer ( TCON )
Thanh ghi TCON chứa các bit trạng thi và các bit điều khiển cho timer 0
và timer 1.
Bit
Ký hiệu
Địa chỉ
Mơ tả
TCON.7 TF1
8FH
Cờ báo tràn Timer.Đặt bởi phần cứng khi
tràn, đuợc xóa bởi phần mềm hoặc phần
cứng khi bộ xử lí chỉ đến chương trình phục
vụ ngắt
TCON.6 TR1
8EH

Bit điều khiển Timer 1 chạy.Đặt/xóa bằng
timer để cho phần mềm chạy/ngưng
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 13


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI
TCON.5
TCON.4
TCON.3

TF0
TR0
IE1

8DH
8CH
8BH

TCON.2

IT1

8AH

TCON.1
TCON.0


IE0
IT0

89H
88H

GVHD:ThS. LÊ XỨNG

Cờ báo tràn timer 0
Bit điều khiển timer chạy
Cờ cạnh ngắt cạnh bên ngoài.Đặt bởi phần
cứng khi phát hiện 1 cạnh xuống ở
INT1:xóa bằng phần mềm hoặc phần cứng
khi CPU chỉ đến chương trình phục vụ ngắt.
Cờ kiểu ngắt 1 bên ngoài.Đặt/xóa bằng phần
mềm để ngắt ngồi tích cực cạnh xuống/mức
thấp.
Cờ cạnh ngắt ngoàii 0.
Cờ kiểu ngắt ngoài 0.
Bảng 2.3 :Tóm tắt thanh ghi TCON.

Chế độ TIMER:
Chế độ 1 – Chế độ TIMER 16 BIT:
Hoạt động như timer 16 bit đầy đủ.
Cờ báo tràn l bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm. MSB
của giá trị trong thanh ghi timer l bit 7 của THx và LSB l bit 0 của TLx. Các thanh ghi
timer (TLx/THx) có thể đọc hoặc ghi bất cứ lúc nào bằng phần mềm.

Nguồn tạo xung nhịp:
Có hai nguồn tạo xung nhịp có thể có, được chọn bằng cách ghi vào C/T

(counter/timer) trong TMOD khi khởi động timer.Một nguồn tạo xung nhịp dùng cho
định khoảng thời gian, cái khác cho đếm sự kiện.

Định khoảng thời gian (interval timing):
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 14


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Nếu C/T=0 hoạt động timer liên tục được chọn vào timer được dùng cho việc
định khoảng thời gian. Lúc đó, timer lấy xung nhịp từ bộ dao động trên chip.Bộ chia
12 được thêm vào để giảm tần số xung nhịp đến giá trị thích hợp cho các ứng dụng.
Như vậy, thạch anh 12 MHz sẽ cho tốc độ xung nhịp timer 1 MHz. Báo tràn timer xảy
ra sau một số (cố định) xung nhịp, phụ thuộc vào giá trị ban đầu được nạp vào các
thanh ghi timer TLx/THx.
Đếm sự kiện (Event Counting):
Nếu C/T=1, timer lấy nguồn xung nhịp từ bên ngoài. Trong hầu hết các ứng
dụng, nguồn bên ngoài này cung cấp cho timer một xung khi xảy ra một sự kiện –
timer dùng đếm sự kiện. Số sự kiện được xác định bằng phần mềm bằng cách đọc các
thanh ghi TLx/THx vì giá trị 16 bit trong thanh ghi này tăng thêm một cho mỗi sự
kiện.
Nguồn xung nhịp ngồi có từ thay đổi chức năng của các port 3, bit 4 của port 3
(P3.4) dùng làm ngõ vào tạo xung nhịp bên ngoài cho timer 0 và được gọi là “T0”. V
P3.5 hay “T1” l ngõ vào tạo xung nhịp cho timer 1.
Trong các ứng dụng bộ đếm, các thanh ghi Timer được tăng thêm 1 tương ứng

với chuyển từ 1 xuống 0 ở ngõ vào bên ngoài: Tx, ngõ vào bên ngoài được lấy mẫu
trong S5P2 của mọi chu kỳ máy. Như vậy, khi ngõ vào cao trong một chu kỳ và thấp
trong một chu kỳ kế thì số đếm được tăng thêm một. Gía trị mới được xuất hiện trong
các thanh ghi trong S3P1 của chu kỳ theo sau chu kỳ trong đó phát hiện sự chuyển
tiếp. Do đó, mất 2 chu kỳ máy (2μs) để ghi nhận sự chuyển 1 sang 0, tần số ngồi tối đa
l 500KHz (giả sử hoạt động ở 12 MHz).
Bắt đầu, dừng và điều khiển các Timer:
Phương pháp đơn giản nhất để bắt đầu (cho chạy) và dừng các timer l dùng các
bit điều khiển chạy: TRx trong TCON. TRx bị xóa sau khi Reset hệ thống. Như vậy,
các timer theo mặc nhin l bị cấm (bị dừng). TRx được đặt lên 1 bằng phần mềm để cho
các timer chạy.

Vì TRx ở trong thanh ghi TCON có địa chỉ bit, nên dễ dàng cho việc điều
khiển các timer trong chương trình.
Ví dụ: cho timer 0 chạy bằng lệnh: SETB TR0 v dừng bằng lệnh: CLR TRO
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 15


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Trình bin dịch sẽ thực hiện việc chuyển đổi ký hiệu cần thiết từ “TR0” sang địa
chỉ bit đúng. SETB TR0 chính xác giống như SETB 8CH.
Một phương pháp khác để điều khiển các timer l dùng bit GATE trong TMOD
và ngõ vào bên ngoài INTx. Đặt GATE =1 cho phép timer sẽ được điều khiển bằng
INTx. Việc này rất hiệu dụng cho việc đo độ rộng xung như sau: Giả sử INT0 ở mức

thấp nhưng các xung ở mức cao trong khoảng thời gian đo. Khởi động timer 0 ở chế
độ 2 (chế độ timer 16 bit), với TL0/TH0=0000H, Gate = 1 v TR0 = 1. Khi INT0 ở
mức cao, timer được mở cổng và được cấp xung nhịp 1 MHz (nếu ic8031/8051 hoạt
động ở tần số 12 MHz).Khi INT0 xuống thấp, timer bị ‘đóng cổng’ và thời khoảng của
xung tính bằng μs l số đếm trong TL0/TH0.(Có thể lập trình INT0 để tạo ra một ngắt
khi nó xuống thấp).
Hình sau minh họa Timer 1 hoạt động ở chế độ 1 như một timer 16 bit.Các
thanh ghi timer TL1/TH1 v cờ báo tràn TF1 trong sơ đồ chỉ các khả năng có thể có của
nguồn tạo xung nhịp và dễ cho chạy, dừng và điều khiển timer.

Khởi động và truy xuất các thanh ghi:
Thông thường các thanh ghi được khởi động một lần ở đầu chương trình để đặt
chế độ làm việc đúng. Sau đó, trong thân chương trình, các timer được
cho chạy, dừng, các bit cờ được kiểm tra và xóa, các thanh ghi timer được đọc v cập
nhật v,v… theo đòi hỏi của các ứng dụng.
TMOD l thanh ghi thứ nhất được khởi động vì nó đặt chế đơ hoạt động.
Ví du: các lệnh sau khởi động timer1 như timer 16 bit (chế độ 1) có xung nhịp
từ bộ dao động trn chip cho việc định khoảng thời gian:
MOV TMOD = 00010000B
Nếu cần số đếm ban đầu, các thanh ghi timer TL1/TH1 cũng phải được khởi
động. Nhớ lại các timer đếm lên và đặt cờ báo tràn khi có sự chuyển tiếp FFFFH sang
0000H. một khoảng 100μs có thể được định thời bằng cách khởi động trị cho
TL1/TH1 lFF9C:
MOV TL1, # 9CH
MOV TH1, # OFFH
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 16



VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Rồi timer được cho chạy bằng cách điều khiển bit như sau:
SETB TR1
Cờ báo tràn được tự động đạt lên sau 100μ s. Phần mềm có thể đợi trong 100μ s
bằng cách dùng lệnh rẽ nhanh có điều kiện nhảy đến chính trị trong khi cờ báo tràn
chưa được đặt lên 1:
WAIT: JMB TF1, WAIT
Khi timer trên, cần dừng timer và xóa cờ báo tràn trong phần mềm:
CLR TR1
CLR TF1
Đọc timer đang chạy:
Trong một số ứng dụng cần đọc giá trị trong các thanh ghi timer đang chạy. Vì
phải đọc 2 thanh ghi timer, “sai pha” nếu byte thấp trên vào byte cao giữa hai lần đọc.
Giá trị có thể đọc được không đýng.Giải pháp l đọc byte cao trước, kế đó đọc byte
thấp rồi đọc byte cao một lần nữa. Nếu byte cao thay đổi thì lặp lại các hoạt động đọc.
Các lệnh dưới đây đọc các lệnh thanh ghi timer TL1/TH1 vào các thanh ghi R6/R7:
AGAIN: MOV A,TH1
MOV R6, TL1
CJNE R7, A

1.3.5 Hoạt động của bộ ngắt (INTERRUPT):
Giới thiệu:
Một interrupt (ngắt) l sự xảy ra một điều kiện – một sự kiện, mà nó gây treo tạm
thời chương trình trong điều kiện có được phục vụ bởi một chương trình khác.
Các interrupt đóng vai trò quan trọng trong việc thiết kế và cài đặt các ứng dụng
vi điều khiển. Chúng cho phép hệ thống bất đồng bộ với một sự kiện và giải quyết một

sự kiện trong khi đó một chương trình khác đang thực thi.
Một hệ thống được điều khiển bằng interrupt cho ta ảo giác là làm nhiều việc
đồng thời. Dó nhin l CPU đồng thời không thể thực thi hơn một lệnh. Nhưng nó có thể
tạm treo việc thực thi một chương trình để thực thi một chương trình khác, rồi quay về
chương trình thứ nhất. Theo cách này, interrupt giống như một chương trình con,
nhưng có một khác biệt trong hệ thống được điều khiển l sự ngắt quảng không xảy ra
như kết quả của một lệnh, mà đáp ứng một sự kiện xảy ra bất đồng bộ với chương
trình chính. Người ta không biết lúc nào và ở đâu chương trình chính bị ngắt quảng.
Chương trình giải quyết ngắt gọi là chương trình phục vụ ngắt (ISR: Interrupt
Service Routine) hoặc bộ xử lý ngắt. ISR thực thi đáp ứng ngắt và thông thường thực
hiện tác vụ nhập hay xuất với một thiết bị. Khi ngắt xảy ra, chương trình chính tạm
thời bị treo và rẽ nhánh đến ISR: ISR thi hành và kết thúc bằng lệnh trở về ngắt.
Chương trình tiếp tục thực thi tại chỗ mà nó tạm dừng. Thường người ta xem chương
trình chính thực thi ở mức nền (cơ sở) và các ISR thực thi ngắt (Interrupt Level).
Người ta dùng thuật ngữ Foreground (phía trước) (Base – Level) chỉ mức nền và
Background (phía sau) (Interrupt – level) chỉ mức ngắt.
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 17


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Tổ chức ngắt của ic89C51:
Thật sự tất cả các nguồn ngắt ở ic89C51: 2 ngắt ngoài, 2 từ timer và một ngắt
Port nối tiếp. Tất cả các ngắt theo mặc nhin đều bị cấm sau khi Reset hệ thống và được
cho phép bằng phần mềm.

Khi có 2 hoặc nhiều ngắt đồng thời, 1 ngắt xảy ra trong khi 1 ngắt khác đang
được phục vụ, có cả 2 sự tuần tự hỏi và sơ đồ ưu tiên 2 mức dùng để xác định thực
hiện ngắt. Việc hỏi vịng tuần tự thì cố định nhưng ưu tin ngắt thì có thể lập trình được.
Cho phép và cấm các ngắt: (Enabling and Disnabling Interrupt)
Mỗi nguồn Interrupt được cho phép hoặc cấm từng ngắt qua một thanh ghi chức
năng đặc biệt có địa chỉ bit IE (Interrupt Enable) ở địa chỉ A8H. Cũng như xác định bit
cho phép riêng biệt cho mỗi nguồn ngắt, có một bit cho phép/cấm tồn bộ được xóa để
cấm hòan tòan các ngắt được xt (đặt ln 1) để cho phép tất cả các ngắt.
Bit
Ký hiệu
Địa chỉ bit Mơ tả
IE.7
EA
AFH
Cho phép/Cấm tòan bộ
IE.4
ES
ACH
Cho phép ngắt Port nối tiếp
IE.3
ET1
ABH
Cho phép ngắt từ timer 1
IE.2
EX1
AAH
Cho phép ngắt ngoài 1
IE.1
ET0
A8H

Cho phép ngắt từ timer 0
IE.0
EX0
A8H
Cho phép ngắt ngoài 0
Bảng tóm tắt thanh ghi IE
Hai bit phải được đặt lần một để cho phép bất kỳ ngắt no: bit cho phép riêng và
bit cho phép tồn bộ.Ví dụ các ngắt từ timer được cho phép như sau:
SETB ET1 ; Cho phép ngắt từ timer 1.
SETB EA ; Đặt bit cho phép tồn bộ.
Hoặc : MOV IE, #10001000B.
Mặc dù hai cách này có cùng một hiệu quả sau khi reset hệ thống nhưng hiệu
quả sẽ khác nếu IE được ghi giữa chương trình. Cách thứ nhất không ảnh hưởng tới 5
bit trong thanh ghi IE, tri lại cách thứ hai sẽ xóa các bit khác. Nên khởi trị IE theo cách
thứ hai ở đầu chương trình (nghĩa l sau khi mở my hoặc reset hệ thống), nhưng cho
phép và cấm các ngắt ngay trong chương trình nên dùng cách thứ nhất để tránh ảnh
hưởng đến các bit khác trong thanh ghi IE.
Ngắt Port nối tiếp có từ Logic OR của ngắt thu (RI) và phát (TI). Các bit cờ tạo
các ngắt được tóm tắt trong bảng sau:
Ngắt
Cờ
Thanh ghi SER và vị trí bit
Bên ngoài 0
IE0
TCON.1
Bên ngoài 1
IE.1
TCON.3
Timer 0
TF0

TCON.5
Timer 1
TF1
TCON.7
Port nối tiếp
TI
SCON.1
Port nối tiếp
RI
SCON.0
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 18


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

Xử lý ngắt (Processing Interrupt):
Khi ngắt xảy ra và CPU chấp thuận, chương trình chính ngắt quảng những
hoạt động sau đây xảy ra:
+ Lệnh hiện hành hòan tất việc thực thi.
+ Cất PC vào ngăn xếp.
+ Trạng thi ngắt hiện hành được cất vào bên trong.
+ Các ngắt bị chặn ở mức ngắt.
+ Nạp vào PC địa chỉ vector của ISR.
+ ISR thực thi.
ISR thực thi và đáp ứng ngắt.ISR hoàn tất bằng lệnh RETI (quay về từ

ngắt).Điều này làm lấy lại giá trị cũ PC từ ngăn xếp và lấp lại trạng thi ngắt cũ.Thực
thi chương trình chính ở chỗ mà nó bị dừng.
Các vector ngắt (Interrupt Vectors):
Khi chấp nhận ngắt, gi trị được nạp vo PC được gọi l vector ngắt. Nó là địa chỉ
bắt đầu của ISR cho nguồn tạo ngắt. Các vector ngắt được cho bảng sau:
Ngắt
Reset hệ thống
Bên ngoài 0
Timer 0
Bên ngoài 1
Timer 1
Port nối tiếp

Cờ
Địa chỉ vector
RST
0000H
IE0
0003H
IF0
000BH
IE1
0013H
IF1
001BH
T hoặc R1
0023H
Bảng 2.4: Vector ngắt
Vector Reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo
nghĩa này nó giống Interrupt: nó ngắt chương trình chính và nạp giá trị mới cho PC.

Khi “chỉ đến một ngắt”, cờ gây ra ngắt tự động bị xóa bởi phần cứng.Các ngoại
lệ là RI và TI với các ngắt port nối tiếp v TF2, EXF2 với các Interrupt Timer.Vì có hai
nguồn có thể cho mỗi ngắt này, không thực tế để CPU xóa cờ ngắt. Các bit này phải
được kiểm tra trong ISR để xác định nguồn ngắt và cờ tạo ngắt sẽ được xóa bằng phần
mềm. Thông thường một rẽ nhánh xảy ra với một phản ứng thích hợp, phụ thuộc vào
nguồn ngắt.
Vì các vector ngắt ở phần đầu của bộ nhớ chương trình, nên lệnh thứ nhất của
chương trình chính thường l lệnh nhảy qua chương trình chính này.Ví dụ như lệnh
LJMP 0030H.

1.4. Giới thiệu về LCD
1.4.1. Cấu tạo
LCD (Liquid Crystals Display ) - Màn hình tinh thể lỏng, cơ sở vật lý để LCD
có thể hiển thị được thông tin, hình ảnh chính là do đặc tính của vật liệu chế tạo nên
LCD, tức là Liquid Crystals (thạch anh lỏng). Các tinh thể bình thường chúng ở thể
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 19


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

rắn với sự định hướng đặc biệt. Tuy nhiên ở đây các thể lỏng được cấu trúc từ các tinh
thể động. Các tinh thể này có thể điều chỉnh bởi một điện trường đây là một cách để
điều khiển chất lỏng thay đổi từ trong suốt đến trạng thái mờ đục(Chắn sáng).
LCD gồm 2 bề mặt dạng rãnh , giữa 2 bề mặt này là 1 lớp Thạch Anh lỏng
(Liquid Crystal).

+ Để có 1 điểm tối trên LCD: ánh sáng phát ra từ bên trong LCD sẽ đi qua bề
mặt rãnh thứ nhất (lớp lọc đơn cực), sau đó ánh sáng đi qua lớp Liquid Cristal (lớp
này được phân cực nên ánh sáng qua nó mà không bị xoắn),  sau đó ánh sáng qua
bề mặt rãnh thứ 2lớp phân cực thứ 2 (lớp lọc đơn cực), ánh sáng không ló ra được khỏi
lớp này(bị chặn lại hoàn toàn)  ta thấy1 điểm tối trên màn hình LCD
+ Để có 1 điểm sáng trên LCD: quá trình đi tương tự nhưng khác ở chỗ ánh
sáng qua lớp Liquid Cristal không được phân cực nên ánh sáng bị xoắn 90 độ, nhờ thế
mà đi qua được bề mặt rãnh thứ 2 (lớp lọc đơn cực)  Ta thấy 1 điểm sáng trên LCD.

Hình 2.3

Hình 2.2

1.4.2. Chức năng các chân
Chân
1

Tên
Vss

2

Vdd

Chức Năng
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân
này với GND của mạch điều khiển
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối
chân này với Vcc=5V của mạch điều khiển


SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 20


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI
3

Vee

4

RS

5

RW

6

E

14

DB0DB7

15,16

A,K


7

GVHD:ThS. LÊ XỨNG

Chân này dùng để điều chỉnh độ tương phản của
LCD
Chân chọn thanh ghi (Register select).
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi
lệnh IR của LCD (ở chế độ “ghi” - write) hoặc
nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc”
- read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ
liệu DR bên trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân
R/W với logic “0” để LCD hoạt động ở chế độ ghi,
hoặc nối với logic “1” để LCD ở chế độ đọc.
Chân cho phép (Enable). Sau khi các tín hiệu được
đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận
khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD
chuyển vào(chấp nhận) thanh ghi bên trong nó
khi phát hiện một xung (high-to-low transition)
của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0DB7 khi phát hiện
cạnh lên (low- to-high transition) ở chân E và
được LCD giữ ở bus đến khi nào chân E xuống
mức thấp.
Tám đường của bus dữ liệu dùng để trao đổi thông
tin với MPU. Có 2 chế độ sử dụng 8 đường bus này :

+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8
đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ
DB4 tới DB7, bit MSB là DB7.
Đèn của LCD

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 21


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

1.4.3 Sơ đồ khối của HD44780
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp
vỏ và chỉ đưa các chân giao tiếp cần thiết.
Hình 2.4: Sơ đồ khối của HD44780

a. Thanh ghi và tổ chức bộ nhớ.
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor
Register) và thanh ghi dữ liệu DR (Data Register).
Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám
đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người
dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa là, khi ta
nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà
IR cung cấp và thực hiện lệnh đó.
Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng

RAM
DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này
gởi ra cho MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội
bên
trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc khi thông
tin
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 22


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội của HD44780
sẽ
được chuyển ra DR để truyền cho MPU.
Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2
thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối với hai
chân RS và R/W theo mục đích giao tiếp.
RS
0

RW
0

0
1

1

1
0
1

Chế độ
Ghi vào thanh ghi IR để ra lệnh cho LCD (VD: cần display
clear,…)
Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6.
Ghi vào thanh ghi DR
Đọc dữ liệu từ DR

b. Cờ báo bận BF(busy Flag):
Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một
khoảng thời gian để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế,
LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có
thiết lập RS=0,R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong
việc, nó sẽ đặt cờ BF lại mức 0.

c. Bộ Đếm địa chỉ AC (Address Counter):
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM
(DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2
vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông
tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã
được bao hàm trong mã lệnh.

d. Vùng Ram hiển thị DDRAM(Display Data RAM):
Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là
một ô kí tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ

hiển thị tại vị trí tương ứng trên màn hình một kí tự có mã 8 bit mà chúng ta đã cung
cấp.Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những
vùng RAM còn lại không dùng cho hiển thị có thể dùng như vùng RAM đa mục đích

e. Vùng ROM chứa ký tự đồ họa:
Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự,
và định địa chỉ bằng 8 bit. Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự
SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 23


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI

GVHD:ThS. LÊ XỨNG

kiểu 5x10 (tổng cộng là 240 thay vì 28 = 256 mẫu kí tự). Người dùng không thể thay
đổi vùng ROM này.

f. Vùng RAM chứa kí tự đồ họa CGRAM (Character Generator RAM):
Nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để người dùng có thể tạo
các mẫu kí tự đồ họa riêng. Tuy nhiên dung lượng vùng này rất hạn chế: Ta chỉ có thể
tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại 5x10 điểm ảnh. Địa chỉ tử 40h đến 7Fh.

1.4.4 Tập lệnh của LCD:
 Các lệnh của LCD có thể chia thành 4 nhóm như sau :
• Các lệnh về kiểu hiển thị. VD : Kiểu hiển thị (1 hàng / 2 hàng), chiều dài dữ liệu (8
bit / 4 bit), …
• Chỉ định địa chỉ RAM nội.

• Nhóm lệnh truyền dữ liệu trong RAM nội.
• Các lệnh còn lại .
Mã (Hex)
Lệnh đến thanh ghi của LCD
1

Xóa màn hình hiển thị

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)

7

Dịch hiển thị sang trái

5

Dịch hiển thị sang phả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ộ vị trí hiển thị sang trái


1C

Dịch toàn bộ vị trí hiển thị sang phải

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 24


VI ĐIỀU KHIỂN VÀ GHÉP NỐI NGOẠI VI
80

Ép con trỏ về đầu dòng thứ nhất

C0

Ép con trỏ về đầu dòng thứ hai

38

Hai dòng và ma trận 5x7

GVHD:ThS. LÊ XỨNG

1.5 Giới thiệu về bàn phím
Bàn phím là 1 ma trận phím. Một phím được nhấn và thả được xác định thông qua
hàng và cột trong ma trận phím.
Nguyên lý quét ma trận phím:
Thuật toán quét phím được sử dụng là lần lượt tìm hàng và tìm cột (hay ngược lại), khi

tìm cột, các cột được đặt ở mức cao, các hàng đặt ở mức thấp. Sau đó kiểm tra xem có
cột nào ở mức thấp hay không ( có phím nào nhấn nối với hàng hay không).sau khi
xác định được cột thì cho hàng là mức cao, cột tìm được mức thấp, rồi xác định hàng
tương ứng với phím đã nhấn.
Trong đồ án em thiết kế với phím 3 cột và 5 hàng.
Có phím 0 đến 9 là phím nhập mã.
Còn có 4 phím chức năng: Enter, Xóa, Đổi mật khẩu, Khóa
Còn lại 1 phím dự bị, nhằm mở rộng chức năng khi cần thiết.

Chương 2: THIẾT KẾ VÀ THI CÔNG MẠCH
2.1. Sơ đồ mạch.

SVTH: PHẠM NGỌC HIÊN_11CDT1
SVTH: NGUYỄN XUÂN TOÀN _11CDT1

Trang 25


×