You are on page 1of 34

HỌC VIỆN KỸ THUẬT MẬT MÃ

KHOA ĐIỆN TỬ - VIỄN THÔNG

Báo cáo môn:

THIẾT KẾ MẠCH SỬ DỤNG MÁY TÍNH 

Đề tài: Mạch khóa số điện tử sử dụng vi điều khiển 8051

Giảng viên hướng dẫn: Lại Hồng Nhung

Sinh viên thực hiện:


Vũ Thị Nguyệt – DT030232
Nguyễn Công Tùng – DT030247

Hà Nội, 2022
Mục lục
Lời nói đầu............................................................................................................3
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG KHÓA SỐ ĐIỆN TỬ.................4
1.1 Sơ đồ khối và chức năng các khối...............................................................4
1.2 Nguyên lý hoạt động....................................................................................5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT......................................................................6
2.1 Tổng quan về vi điều khiển 8051................................................................6
2.2 Tổng quan về LCD....................................................................................12
2.2.1 Cấu tạo.................................................................................................12
2.2.2 Chức năng các chân.............................................................................13
2.3 Tổng quan về bàn phím.............................................................................18
CHƯƠNG 3: THIẾT KẾ MẠCH VÀ THI CÔNG.............................................19
3.1 Lưu đồ thuật toán.......................................................................................19
3.2 Mạch mô phỏng.........................................................................................20
3.4 Mạch in......................................................................................................23
3.5 Mạch 3D....................................................................................................24
3.6 Code...........................................................................................................25
3.7 Kết luận......................................................................................................33
Lời nhận xét của thầy cô:....................................................................................34

Nhó m: 10 Page 2
Lời nói đầ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 chúng 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
- Hệ thống vận hành ổn định, tuổi thọ cao
Trên cơ sở đó, chúng 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:

 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.
 Hệ thống hiển thị trực quan qua LCD 16x2, có đèn chiếu sáng khi điều
kiện môi trường tối.
Trong quá trình học tập chúng 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 báo cáo môn thiết kế mạch điện sử dụng máy tính này,chúng em chọn
đề tài: “Thiết bị khóa số điện tử”

Sau một thời gian học tập và rèn luyện, với sự chỉ bảo tận tình của cô giáo Lại
Hồng Nhung cùng sự trợ giúp của các anh chị khóa trên, các bạn trong lớp và
các tài liệu có liên quan, chúng em đã hoàn thành xong đề tài.

Báo cáo đã hoàn thành xong, nhưng không thể tránh nhiều thiếu sót mong quý
thầy cô giáo thông cảm và chỉ bảo thêm để đề tài có thể ứng dụng rộng rãi trong
thực tế. Em xin chân thành cảm ơn các thầy cô!

Nhó m: 10 Page 3
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG KHÓA SỐ
ĐIỆN TỬ

1.1 Sơ đồ khối và chức năng các khối

KHỐI NGUỒN DC KHỐI HIỂN THỊ LCD


KHỐI XỬ LÝ
TRUNG TÂM

MẠCH ĐIỀU KHIỂN


BÀN PHÍM ĐỘNG CƠ KHÓA VÀ
MỞ CỬA

Hình 1: Sơ đồ khối

Khố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ã và đưa thông tin hiển thị ra LCD thông báo cho người dùng. Từ
đó đưa các tín hiệu điều khiển đến cho khối mạch điều khiển động cơ.

Sử dụng chip: AT89C51

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 16 phím được xắp xếp theo kiểu 4x4( với 4 cột và 4 dòng)

Thực hiện chức năng nhập các dữ liệu đưa đến vi điều khiển và bao gồm thao
tác nhập mật khẩu, thay đổi mật khẩu, mở cửa, khóa cửa

Khối hiển thị


Dùng LCD 16x2 có chức năng chính để giao tiếp người dùng với vi điều khiển
Nhó m: 10 Page 4
 Ưu điểm:
- Hiển thị rõ ràng có kèm theo chỉ dẫn.
- 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
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.

Khối mạch điều khiển động cơ đóng ,mở cửa


Chức năng: Đóng và mở cửa khi có tín hiện 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 Nguyên lý hoạt động


Nhập một mật mã đưa tới khối giao tiếp và hiển thị những thông tin tới người
dùng . Rồi khối điều khiển sẽ gửi tín hiệu tới một thiết bị chấp hành đóng/ngắt
hoặc điều khiển cho đóng hoặc mở của nếu như mật mã đúng và đưa ra thông
báo khi có mật khẩu sai,

Ban đầu:

o Trên màn hình LCD sẽ hiển thị “ KHOA SO DIEN TU DT3


HVKTMM”,“NHAP MAT KHAU”
Nhập mật khẩu:

o 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, nếu nhập đúng thì LCD hiển thị “ CHINH XAC, MO CUA SAU 5S”, nếu
nhập sai thì LCD hiển thị: “ NHAP SAI MAT KHAU, K MO DUOC CUA”.

Nhó m: 10 Page 5
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1 Tổng quan về vi điều khiển 8051

Hình 2: Sơ đồ khối của bộ vi điều khiển

Kiến trúc của bộ vi xử lý điều khiển 8051

IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :

- 4 kbyte ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)

- 128 byte RAM - 4 port I/0 8 bit 4

- Hai bộ định thời 16 bits

- Giao tiếp nối tiếp

- 64KB không gian bộ nhớ chương trình ngoài

- 64 KB không gian bộ nhớ dữ liệu ngoài

- 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μs

Nhó m: 10 Page 6
Hình 3: Sơ đồ cấu tạo 89C51

Phần chính của vi điều khiển 8051 là bộ xử lí trung tâm (CPU: central
processing unit ) bao gồm :

- Thanh ghi tích lũy A

- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia

- Đơn vị logic học (ALU : Arithmetic Logical Unit )

- Từ trạng thái chương trình (PSW : Prorgam Status Word)

- Bốn băng thanh ghi

- Con trỏ ngăn xếp

- Ngoài ra còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thời gian
và logic. EA\ RST\ PSEN\ ALE\ P0\ P1\ P2\ P3

Nhó m: 10 Page 7
- Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình. Họ vi điều
khiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thể
mở rộng với bộ nhớ dữ liệu ngoài lên tới 64 kByte.

Hình 4. Sơ đồ chân của 8051

Vi điều khiển 8051 có 32 trong 40 chân có chức năng như là các cổng I/O, trong
đoa 24 chân được sử dụng với hai mục đích. Nghĩa là ngoài chức năng cổng I/O,
mỗi chân có công dụng kép này có thể là một đường điều khiển của Bus địa chỉ
hay Bus dữ liệu hoặc là mỗi chân hoạt động một cách độc lập để giao tiếp với
các thiết đơn bit như là công tắc, LED, transistor…

❖ Port 0:
- Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.

- Port 0 có hai chức năng:

• Port xuất nhập dữ liệu (P0.0 - P0.7) −> không sử dụng bộ nhớ ngoài.

• Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) −> có sử dụng
bộ nhớ ngoài.

Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các
điện trở kéo lên bên ngoài.

- Ở chế độ mặc định (khi reset) thì các chân Port 0 (P0.0 - P0.7) được cấu hình
là port xuất dữ liệu. Muốn các chân Port 0 làm port nhập dữ liệu thì cần phải lập
Nhó m: 10 Page 8
trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc
khi bắt đầu nhập dữ liệu từ port (vấn đề này được trình bày ở phần kế tiếp).

- Khi lập trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ vào của dữ
liệu (D0 – D7).

❖ Port 1: là một port I/O chuyên dụng trên các chân 1-8 của MC8051.
Chúng được sử dụng với một múc đích duy nhất là giao tiếp với các thiết bị
ngoài khi cần thiết.
❖ Port 2:
- Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.

- Port 2 có hai chức năng:

• Port xuất nhập dữ liệu (P2.0 – P2.7) −>không sử dụng bộ nhớ ngoài.

• Bus địa chỉ byte cao (A8 – A15) ,Có sử dụng bộ nhớ ngoài

- Ở chế độ mặc định (khi reset) thì các chân Port 2 (P2.0 – P2.7) được cấu
hình là port xuất dữ liệu. Muốn các chân Port 2 làm port nhập dữ liệu thì
cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các
bit của port truớc khi bắt đầu nhập dữ liệu từ port (vấn đề này được trình
bày ở phần kế tiếp).

- Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào của
địa chỉ byte cao (A8 – A11) và các tín hiệu điều khiển.

❖ Port 3:
- Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.

- Port 3 có hai chức năng:

• Port xuất nhập dữ liệu (P3.0 – P3.7) −> không sử dụng bộ nhớ ngoài
hoặc các chức năng đặc biệt.Các chức năng đặc biệt của Port 3 được ghi
trong bảng sau:

Bit Tên Chức năng

Nhó m: 10 Page 9
P3.0 RXD Dữ liệu nhận cho Port nối tiếp

P3.1 TXD Dữ liệu truyền cho Port nối tiếp

P3.2 INT0 Ngắt bên ngoài 0

P3.3 INT1 Ngắt ngoài 1

P3.4 TO Ngõ vào của Timer/counter0

P3.5 T1 Ngõ vào của Timer/counter1

P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài.

P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài.

❖ Chân (Program Store Enable ) : 8051 có 4 tín hiệu điều khiển.


PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép truy xuất
bộ nhớ chương trình mở rộng và thường được nối đến chân OE (Output Enable)
của một EPROM để cho phép đọc các byte mã lệnh của chương trình. Tín hiệu
PSEN ở mức thấp trong suốt phạm vi quá trình của một lệnh.PSEN sẽ ở 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 và được chốt vào thanh ghi lệnh của 8051 để giải mã lệnh.
Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức cao.

❖ Chân ALE (Address Latch Enable ) : ALE là tín hiệu để chốt địa chỉ vào
một thanh ghi bên ngoài trong nữa đầu của chu kỳ bộ nhớ. Sau đó, các đường
Port 0 dùng để xuất hoặc nhập dữ liệu trong nữa sau chu kỳ của chu kỳ bộ
nhớ.Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và
có thể được dùng là nguồn xung nhịp cho các hệ thống. Nếu xung trên 8051 là
12MHz thì ALE có tần số 2MHz. Chân này cũng được làm ngõ vào cho xung
lập trình cho EPROM trong 8051.

❖ Chân (External Access) : Tín hiệu vào EA trên chân 31 thường


được nối lên mức cao (+5V) hoặc mức thấp (GND).

Nhó m: 10 Page 10
❖ Chân RST:
- RST (Reset): thiết lập lại, chân số 9.

- Chức năng:

● Là tín hiệu cho phép đặt lại trạng thái ban đầu chp hệ thống.
● Là tín hiệu nhập, tích cực mức cao. RST = 0 => 8051 hoạt động bình
thường. RST = 1 => 8051 được thiết lập lại trạng thái ban đầu.

(µs): thời gian reset.

(MHz): tần số thạch anh.

(µs): chu kỳ máy.

❖ Chân XTAL1, XTAL2:


- XTAL (Crystal): tinh thể thạch anh, chân số 18-19.

- Chức năng:

● Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài,
cung cấp tín hiệu xung clock cho chip hoạt động.
● XTAL1 − ngõ vào mạch tạo xung clock trong chip.
● XTAL2 − ngõ ra mạch tạo xung clock trong chip.

Lưu ý: =12MHz (MHz): tần số danh định.

2.2 Tổng quan về LCD


2.2.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
Nhó m: 10 Page 11
nên LCD, tức là Liquid Crystals (thạch anh lỏng). Các tinh thể bình thường
chúng ở thể 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ứ 2 lớ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ấy 1 đ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.

Nhó m: 10 Page 12
2.2.2 Chức năng các chân
Chức năng

Chân Tên Chức Năng

1 Vss 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

2 Vdd 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

3 Vee 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)
4 RS
+ 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
5 RW
logic “1” để LCD ở chế độ đọc.

Nhó m: 10 Page 13
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 DB0-DB7


6 E 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.
7-14 DB0-
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4
DB7
tới DB7, bit MSB là DB7.

15,16 A,K Đèn của LCD

Chân VDD, VSS và VEE: Các chân VDD, 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.

Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD,
chân RS(Register Select) được dùng để chọn thanh ghi, 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.

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.

Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để
chốt. 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

Nhó m: 10 Page 14
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.

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ố, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến f và
các con số từ 0 - 9 đến các chân này khi 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ỏ.

Chú ý: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à bít 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.

Bảng mã lệnh của LCD

Lệnh Mã lệnh Mô tả Thời


gian
RS DB DB DB DB DB DB DB DB
thi
0 1 2 3 4 5 6 7
hành

Xóa 0 0 0 0 0 0 0 0 0 1 Xóa màn hình đưa 1.64ms


màn con trỏ về vị trí đầu
hình

Đưa 0 0 0 0 0 0 0 0 1 x Đưa con trỏ về vị 1.64ms


con trí đầu
trỏ về
vị trí
đầu

Thiết 0 0 0 0 0 0 0 1 I/D S Thiết lập hướng 40us


lập dịch chuyển con
chế độ trỏ(I/D), dịch hiển
thị(S)

Nhó m: 10 Page 15
Bật tắt 0 0 0 0 0 0 1 D C B Bật tắt hiển thị, con 40us
hiển trỏ; bật tắt chế độ
thị nhấp nháy con trỏ

Dịch 0 0 0 0 0 1 S/C R/L * * Thiết lập chiều dịch 40us


con chuyển của con trỏ
trỏ và hiển thị
hiển
thị

Thiết 0 0 0 0 1 DL N F * * Thiết lập độ dài của 40us


lập dữ liệu, số dòng và
chức font chữ
năng

Thiết 0 0 0 1 CGRAM address Thiết lập địa chỉ 40us


lập địa CGRAM
chỉ
CGR
AM

Thiết 0 0 1 DDRAM address Thiết lập địa chỉ 40us


lập địa DDRAM
chỉ
DDR
AM

Đọc 0 1 BF CGRAM/ DDRAM address Đọc cờ báo bận và 40us


cờ báo địa chỉ của
bận và CGRAM hoặc
địa chỉ DDRAM( tùy vào
CGR lệnh trước đó)
AM/

DDR
AM

Ghi 1 0 Write data Ghi dữ liệu vào 40us


CGR CGRAM hoặc
AM/ DDRAM.

Nhó m: 10 Page 16
DDR
AM

Đọc 1 1 Read data Đọc dữ liệu từ 40us


CGR CGRAM hoặc
AM/ DDRAM

DDR
AM

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

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

Nhó m: 10 Page 17
C0 Ép con trỏ về đầu dòng thứ hai

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

2.3 Tổng quan về bàn phím


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 báo cáo chúng em thiết kế với phím 4 cột và 4 hàng.

Có phím 0 đến 9 là phím nhập mã.

Nhó m: 10 Page 18
CHƯƠNG 3: THIẾT KẾ MẠCH VÀ THI CÔNG

3.1 Lưu đồ thuật toán

Lưu đồ chương trình mở cửa

Nhó m: 10 Page 19
3.2 Mạch mô phỏng
h4 h3 h2 h1
U2

VCC
c4 c3 c2 c1 5.0V
U1
VDD 1 40
P1B0T2 VCC
2 39
5.0V P1B1T2EX P0B0AD0

VCC

GND
3 38

CV

RS
RW
D7
D6
D5
D4
D3
D2
D1
D0
P1B2 P0B1AD1

E
4 P1B3 P0B2AD2 37
5 P1B4 P0B3AD3 36 R1
C7 6 P1B5MOSI P0B4AD4 35
7 P1B6MISO P0B5AD5 34
R2 8 P1B7SCK P0B6AD6 33 3kΩ
9 RST P0B7AD7 32
10 P3B0RXD EAVPP 31
10µF 10µΩ 11 P3B1TXD ALEPROG 30
12 P3B2INT0 PSEN 29
13 P3B3INT1 P2B7A15 28
14 P3B4T0 P2B6A14 27
15 P3B5T1 P2B5A13 26
16 P3B6WR P2B4A12 25
C5 17 P3B7RD P2B3A11 24
18 23
19
XTAL2 P2B2A10
22 VCC
XTAL1 P2B1A9
20 21
GND P2B0A8 5.0V
1µF X1
C6 8051 R3

220Ω
1µF HC-49/U_15MHz LED1
led

c4 c3 c2 c1 K1

7 8 9 +

4 5 6 -

NUMERIC_KEYPAD_4X4
1 2 3 *

h4 h3 h2 h1 C 0 = /

Khối trung tâm

Khối xử lý trung tâm với 8051 có nhiệm vụ là nhận biết tín hiệu thu được từ bàn
phím. Sau đó xử lý các tín hiệu đó và xuất ra các tín hiệu điều khiển thích hợp
để điều khiển hệ thống theo chương trình lập sẵn.

Nhó m: 10 Page 20
 Địa chỉ chức năng kết nối của hệ thống xử lý trung tâm như sau:
P3.0- RS

P3.1-RW

P34 - Tín hiệu đóng,mở cửa

P2 nối với D0-D7 của LCD

P1.0- Hàng 1

P1.1- Hàng 2

P1.2- Hàng 3

P1.3- Hàng 4

P1.4- Cột 1

P1.5- Cột 2

P1.6- Cột 3

P1.7- Cột 4

Bộ dao động thạch anh có tác dụng tạo xung nhịp với tần số 12MHz cho VĐK
hoạt động. Hai đầu này được nối vào 2chân XTAL1 và XTAL2 của VĐK.
Bộ RESET có tác dụng đưa vi điều khiển về trạng thái ban đầu. Khi nút Reset
được ấn điện áp +5V từ nguồn được nối vào chân Reset của vi điều khiển được
chạy thẳng xuống đất lúc này điện áp tại chân vi điều khiển thay đổi đột ngột về
0, VĐK nhận biết được sự thay đổi này và khởi động lại trạng thái ban đầu cho
hệ thống.

Khối hiển thị LCD

Nhó m: 10 Page 21
LCD được sử dụng là 16x2 với 2 dòng và hiển thị 4x4

Các chân được nối:

P3.0- RS

P3.1-RW

P34- Tín hiệu đóng, mở của

P2 nối với D0-D7 của LCD

Bàn phím
c4 c3 c2 c1 K1

7 8 9 +

4 5 6 -

NUMERIC_KEYPAD_4X4
1 2 3 *

h4 h3 h2 h1 C 0 = /

Người dùng nhập mã thông qua bàn phím và bàn phím là thiết bị đầu vào được
kết nối với vi điều khiển, cung cấp tín hiệu cho bộ xử lý trung tâm, sau khi phân
tích tính hiệu và so sánh thì cho ra tín hiệu điều khiển tương ứng.

Bàn phím được dùng bằng phương pháp quét phím theo hàng và cột.

Dùng bàn phím cơ với 4 cột 4 hàng

Xắp xếp các hàng cột như bảng:

Cột 1 Cột 2 Cột 3 Cột 4

Hàng 1 7 8 9 +

Hàng 2 4 5 6 -

Hàng 3 1 2 3 *

Hàng 4 C 0 = /

Được ghép nối với vi điều khiển tại Port P1

Với :

Nhó m: 10 Page 22
P1.0- Hàng 1 P1.4- Cột 1

P1.1- Hàng 2 P1.5- Cột 2

P1.2- Hàng 3 P1.6- Cột 3

P1.3- Hàng 4 P1.7- Cột 4

3.4 Mạch in

Nhó m: 10 Page 23
3.5 Mạch 3D
Mặt trước

Mặt sau

Nhó m: 10 Page 24
3.6 Code
#include <htc.h>

#include <string.h>

/********Khai bao chan giao tiep LCD************/

#define RS P30

#define E P31

#define lcd_data P2

// khai bao chan giao tiep phim

#define row0 P10 //hang

#define row1 P11

#define row2 P12

#define row3 P13

#define col0 P14 //cot

#define col1 P15

#define col2 P16

#define col3 P17

#define led P34

#define bat 0

#define tat 1

void delay_ms(unsigned int t);

void mocua();

void dongcua();

void mocua()

int sv;

Nhó m: 10 Page 25
for(sv=0;sv<50;sv++) //dong cua

led=1;

delay_ms(1);

led=0;

delay_ms(19);

void dongcua()

int sv;

for(sv=0;sv<50;sv++) //mo cua

led=1;

delay_ms(2);

led=0;

delay_ms(18);

unsigned char matkhau[]="060920"; // mk mac dinh

/************************************/

unsigned char code ma_nut[16]={ //Khai bao mang ten nut nhan

'+','9','8','7',

'-','6','5','4',

'*','3','2','1',

Nhó m: 10 Page 26
'/','=','0','c'

};

unsigned char check_but(){ //Kiem tra nut nhan

row0=row1=row2=row3=0; // dua 0 ra cac hang

if(!col0 || !col1 || !col2 || !col3 )return 1;

return 0;

void scan_row(unsigned char r) //Quet hang

row0=row1=row2=row3=1;

if(r==0)row0=0;

else if(r==1)row1=0;

else if(r==2)row2=0;

else if(r==3)row3=0;

unsigned char check_col() //Kiem tra cot

unsigned char c=0;

if(!col0)c=1;

else if(!col1)c=2;

else if(!col2)c=3;

else if(!col3)c=4;

return c;

unsigned char get_key(){ //Ham tra ve vi tri nut 1-16, =0 la khong nhan

Nhó m: 10 Page 27
unsigned char row,col;

if(check_but())

delay_ms(1);

if(check_but()){

for(row=0;row<4;row++){

scan_row(row); //Quet hang

col=check_col(); //Lay vi tri cot

if(col>0)return ((row*4)+col); //Tra ve vi tri nut duoc nhan

return 0; //Khong co nut nao duoc nhan hoac nut da nhan

void delay_us(unsigned int t){

while(t--);

void delay_ms(unsigned int t){

unsigned int i,j;

for(i=0;i<t;i++)

for(j=0;j<125;j++);

/**************Ctr giao tiep LCD 16x2 8bit**********************/

// ham cho phep LCD

void LCD_en(void){

Nhó m: 10 Page 28
E=1;

delay_us(3);

E=0;

delay_us(50);

// ham gui du lieu : thanh GHI RS =1

void LCD_data(unsigned char data)

RS=1;

lcd_data=data;

LCD_en();

// ham gui lenh: thanh ghi RS =0

void LCD_cmd(unsigned char cmd)

RS=0;

lcd_data=cmd;

LCD_en();

// HAM gui chuoi string len LCD

void LCD_puts(char *str)

unsigned char i=0;

while(str[i]!=0)

Nhó m: 10 Page 29
LCD_data(str[i]);

i++;

//ham xoa man hinh : lenh 0x01 , can 1.57ms de hoan thanh

void LCD_clear()

LCD_cmd(0x01);

delay_ms(2);

void LCD_init() {

LCD_cmd(0x38); // che do 8bit 2 dong

LCD_cmd(0x0c); //bat hien thi, tat con tro

LCD_cmd(0x80); // di chuyen con tro ve dau dong 1

LCD_clear(); // xoa tat ca noi dung tren lcd

// ham dua con tro to vi tri x , y, 0x80 dua toi hang thu 1,0xc0 dua toi hang thu
2 ..can it nhat 37us

void LCD_Gotoxy(unsigned char x, unsigned char y){

unsigned char address;

if(!y)address=(0x80+x);//

else address=(0xc0+x); //

delay_us(1000);

LCD_cmd(address);

delay_us(50);

Nhó m: 10 Page 30
}

/******************Ctr chinh**************************/

void main(){

unsigned char pass[6];

unsigned char i=0;

LCD_init();//Khoi tao LCD

delay_ms(500);

LCD_puts("KHOA SO DIEN TU");//Gui chuoi len LCD

delay_ms(500);

LCD_Gotoxy(0,1);

LCD_puts("DT2 HVKT MAT MA");

delay_ms(500);

LCD_clear();//Xoa man hinh

while(1)

unsigned char x;

lamlai:

LCD_Gotoxy(0,0);//Tro toi vi tri

LCD_puts("VUI LONG NHAP MK");

LCD_Gotoxy(0,1);

x=get_key();

if(x > 0) //co nhan phim

pass[i]=ma_nut[x-1];

LCD_data(ma_nut[x-1]); //Xuat ra vi tri nut nhan

Nhó m: 10 Page 31
i=i++;

if(i>5)

i=0;

if(strcmp(matkhau,pass) == 0)

LCD_clear();

LCD_Gotoxy(0,0);

LCD_puts("CHINH XAC^^");

delay_ms(500);

LCD_Gotoxy(0,1);

LCD_puts("MO CUA SAU 5S");

delay_ms(5000);

led = bat;// bat dong co mo cua len

LCD_clear();

goto lamlai;

else {

led = tat;

LCD_clear();

LCD_Gotoxy(0,0);

LCD_puts("BAN NHAP SAI MK");

LCD_Gotoxy(0,1);

LCD_puts("K MO DUOC CUA");

Nhó m: 10 Page 32
delay_ms(2000);

LCD_clear();

goto lamlai;}

}} }

3.7 Kết luận

Trong báo cáo này, chúng 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

Nhó m: 10 Page 33
Lời nhận xét của thầy cô:
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………

Nhó m: 10 Page 34

You might also like