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

Đồ án môn vi điều khiển mạng máy tính: Mạch khóa số điện tử

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 (525.46 KB, 23 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
TRƯỜNG CAO ĐẲNG CNTT HỮU NGHỊ VIỆT – HÀN
KHOA: CÔNG NGHỆ ĐIỆN TỬ-VIỄN THÔNG


`

MÔN : ĐỒ ÁN VI ĐIỀU KHIỂN
ĐỀ TÀI: Mạch khóa số điện tử

Giảng viên hướng dẫn: Dương Tuấn Quang
Sinh viên thực hiện : Nguyễn Phúc Tăng
Lớp:
CCVT07A

Đà Nẵng, tháng 12 năm 2016


Lời nói đầu
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới
của chúng ta đã và đang một ngày thay đổi, văn minh và hiện đại hơn. 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.
Điện tử đang trở thành một ngành khoa học đa nhiệm vụ. Nó đã đáp ứng
được những nhu cầu cần thiết trong hoạt động đời sống hằng ngày.Một trong
những nhu cầu đó là vấn đề bảo mật. Mỗi một cá nhân, một gia đình, hay một cơ
quan đều có các vấn đề cần được bảo mật. Và để bảo mật được thì phải có một
hệ thống bảo mật. Trước nhu cầu đó khóa số bằng điện tử là một giải pháp dùng
để bảo mật rất hiệu quả và tiện lợi.
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.
Em xin chân thành cảm ơn Thầy cô !!!

2


Mục Lục
Lời mở đầu
Lời mở đầu..........................................................................................................................................3
Chương 1: Giới thiệu đề tài................................................................................................................4
Chương 2: Thiết kế hệ thống..............................................................................................................6
Chương 3: Thiết kế và thi công.........................................................................................................16
Tài liệu tham khảo.........................................................................................................................23

3


Chương 1: Giới thiệu đề tài
1. Giới thiệu
Khóa số nói chung là loại khóa để bảo vệ thiết bị, tài sản….mà khi muốn
mở ra thì phải tác động đến số mà ta cài đặt trước. có 2 loại khóa số cơ bản hiện
nay trên thị trường có đó là khóa số cơ khí và khóa số điện tử.
- Khóa số cơ khí : khi mở khóa hay khóa lại thì ta phải xoay các vòng số
trên khóa sao cho một dãy các số nào đó cùng hợp với nhau thì mở
được khóa
- Khóa số điện tử : khi mở khóa thì ta phải nhập đúng mật khẩu là một
dãy các số liên tiếp nhau, nếu nhập đúng các dãy số đó thì mở được
khóa.
Ở đâ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.
2. Chức năng của 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 Đổi mã,..
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à 123456.

4


3. Hoạt động của hệ thống
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 ta nhập mật
khẩu mới và nhấn phím xác nhận.
Nhập mật khẩu:
- 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 sang màu xanh báo hiệu cửa mở.


5


Chương 2: Thiết kế hệ thống
1. Sơ đồ khố tổng thể hệ thống

Khối giao
tiếp và hiển
thị thông tin

Khối điều
khiển

Thiết bị
chấp hành

Khối giao tiếp và hiển thị thông tin : dùng để đưa tín hiệu, thông số tới khối
điều khiển.
Khối điều khiển tiếp nhận các thông tin, và xử lý các thông tin đó. Xuất tín
hiệu để điều khiển các thiết bị khác.
Thiết bị chấp hành ở đây có thể là động cơ, có thể là rơle để điều khiển thiết
bị chính là cửa hoặc khóa, ở đây em sử dụng led.
2. Các khối chức năng của hệ thống

2.1

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ã, hiển thị trên LCD.Từ đó đưa các tín hiệu điều khiển đến
cho khối mạch báo động tương ứng.
6


Sử dụng chip ATMEGA328.

Khối vi điều khiển, nó đóng vai trò hết sức quan trọng trong hệ thống để
điều khiển hệ thống khóa số. Khối VĐK bao gồm mạch tạo dao động thạch anh,
mạch Reset để reset hệ thống lại trạng thái ban đầu. Các chân của VĐK sẽ được
kết nối với các khối khác như động cơ, bàn phím, khối hiển thị. Toàn bộ dữ liệu
mà ta thiết kế để điều khiển hệ thống khóa số đều được chứa trong bộ nhớ của
VĐK.
2.1.1 Đặc điểm ATMEGA328
Hiệu suất này cao, điện năng thấp 8-bit vi điều khiển (ATMEGA328P-PU)
được lập trình với các bộ nạp khởi động Arduino Optiboot.
- 8-Bit lõi.
- 20MHz.
- 32K flash (bộ nhớ chương trình).
- 1K EEPROM (lưu trữ không dễ bay hơi).
Electrically Eraseble Programmable Read Only Memory: đây giống
như một chiếc ổ cứng mini – nơi ta có thể đọc và ghi dữ liệu của mình
vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên
SRAM.
- 2K RAM (bộ nhớ thời gian chạy làm việc). Random Access Memory:
giá trị các biến ta khai báo khi lập trình sẽ lưu ở đây.
- 2.7 V ~ 5,5 V Cung cấp điện áp.
- 23 kỹ thuật số I / O Pins.
- 6 × 10 bit chuyển đổi A / D.
7



2.1.2 Sơ lược các chân ATMEGA 328

Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp
nguồn ngoài với điện áp là 7-12V DC và giới hạn là 6-20V. Thường thì cấp
nguồn bằng pin vuông 9V là hợp lí nhất nếu ta không có sẵn nguồn từ cổng
USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, ta sẽ làm hỏng Arduino
UNO.
Với 23 chân có thể sử dụng cho các kết nối vào hoặc ra i/O, 32 thanh ghi, 3
bộ timer/counter có thể lập trình, có các gắt nội và ngoại (2 lệnh trên một vector
ngắt. Ngoài ra có thể sử dụng bộ biến đổi số tương tự 10 bít (ADC/DAC) mở
rộng tới 8 kênh, hoạt động với 5 chế độ nguồn, có thể sử dụng tới 6 kênh điều
chế độ rộng xung (PWM).


GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng
các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải
được nối với nhau.



5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.



3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
8





Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, ta nối cực
dương của nguồn với chân này và cực âm của nguồn với chân GND.



IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể
được đo ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy chúng ta
không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó
không phải là cấp nguồn.



RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương
đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.



2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết
bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy chính là kết
nối Serial không dây. Nếu không cần giao tiếp Serial, thì không nên sử
dụng 2 chân này nếu không cần thiết



Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM
với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng
hàm analogWrite(). Có thể điều chỉnh được điện áp ra ở chân này từ mức

0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.



Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài
các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu
bằng giao thức SPI với các thiết bị khác.

Arduino UNO có 6 chân analog (C0 → C5) cung cấp độ phân giải tín hiệu
10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với
chân AREF trên board, có thể đưa vào điện áp tham chiếu khi sử dụng các chân
analog. Tức là nếu ta cấp điện áp 2.5V vào chân này thì có thể dùng các chân
analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp
I2C/TWI với các thiết bị khác.

9


Bit
PA0

Tn
RXD

Chức năng chuyển đổi
Ngõ vào dữ liệu nối tiếp.

PA1


TXD

Ngõ ra dữ liệu nối tiếp.

PA2

INT0

Ngõ vào ngắt ngồi 0

PA3

INT1

Ngõ vào ngắt ngoài 1

PA4

T0

Ngõ vào của timer/couter 0

PA5

T1

Ngõ vào của timer/couter 1

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.

2.1.3 Chế độ của bộ định thời Timer
a) Giới thiệu bộ Timer
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. Giá trị nhị phân trong các flip - flop của
timer có thể xem như đếm số xung nhịp 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.
b) Thanh ghi chế độ Timer
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
7 GATE
6 C/ T

Timer
1
1

Mô tả
Bit điều khiển cổng. Khi GATE=1 thì bộ định thời
chỉ hoạt động khi chân INTO=1.
Bit chọn chức năng đếm hoặc định thời.
C/ T =1:bộ định thời l bộ đếm.

5 M0
4 M1
3 GATE


1
1
0

C/ T =0:bộ định thời l bộ định khoảng thời gian.
Bit chọn chế độ hoạt động của bộ định thời.
Bit chọn chế độ hoạt động của bộ định thời.
Bit điều khiển cổng. Khi GATE=1 thì bộ định thời
chỉ hoạt động khi chân INTO=1.
10


2 C/ T

0

Bit chọn chức năng đếm hoặc định thời.
C/ T =1:bộ định thời l bộ đếm.

1 M0
0
0 M1
0
2.2 Bàn phím

C/ T =0:bộ định thời l bộ định khoảng thời gian.
Bit chọn chế độ hoạt động của bộ định thời.
Bit chọn chế độ hoạt động của bộ định thời.

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).
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.
Sơ đồ nguyên lý ma trận bàn phím:

Các phím chức năng mở cửa, khóa cửa, và đổi mật khẩu.
2.3

Khối hiển thị LCD

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.
a) Giới thiệu

11


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 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ể rắn với sự định hướng đặc biệt.

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. Các chân này được
đánh số thứ tự và đặt tên như bên dưới :

b) Chức năng của các chân LCD
Chân số
1

2
3

Tên
Vss

Chức năng
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân

Vdd

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

Vee

chân này với VCC=5V của mạch điều khiển.
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). Nối chân RS
với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh
ghi.

Rs
4

+ Logic “0”: Bus D0-D7 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ỉ
12



của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus D0-D7 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
5

R/w

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 D0-D7, các lệnh chỉ được chấp nhận khi có 1
xung cho phép của chân E.

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

6

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 D0-D7 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 :

7-14


D0-D7

+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với
bit MSB là bit D7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ D4
tới D7, bit MSB là D7

c) Các thanh ghi
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR
(InstructorRegister) và thanh ghi dữ liệu DR (Data Register).
Thanh ghi IR : 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).
+ Vùng Ram hiển thị DDRAM(Display Data RAM):
13


Đâ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.
+ 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.
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.
Sử dụng 7805 cung cấp cho vi điều khiển và lcd.

Dùng nguồn 5V xoay chiều đưa vào cầu điốt để tạo ra điện áp một
chiều, qua tụ san phẳng cho điện áp bằng phẳng hơn. Dùng IC7805
để ổn định điện áp đầu ra cho mạch của khối điều khiển.
2.5

Bộ reset

14


Chân RESET được kết nối như sau: Với Vi điều khiển sử dụng thạch anh có
tần số fzat = 12MHz sử dụng C=10µF và R=1KΩ.
2.6

Bộ tạo dao động

Mạch tạo dao động bên trong chip 8051 được ghép với thạch anh bên ngoài
ở hai chân XTAL1 và XTAL2. Tần số danh định của thạch anh là 12MHz.

Sơ đồ nguyên lý
2.7

thạch anh


tụ gốm

Khối báo động và LED

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.
Hệ thống báo động: cảnh báo khi nhập sai mật khẩu quá 3 lần. Thông qua
hệ thống chông báo động.
LED hiển thị kết quả từ lệnh bàn phím đưa vào.

15


Chương 3: Thiết kế và thi công
1. Sơ đồ mạch cơ bản

2. Nguyên lý hoạt động
Khi muốn mở cửa thì phải gõ đúng mật khẩu với độ dài 6 ký tự. Nếu gõ
đúng thì màng hình LCD sẽ hiện mở cửa. Và gõ sai thì màn hình LCD hiển thị
chữ nhập sai mật khẩu. Nếu nhập mật khẩu sai 3 lần liên tiếp thì hệ thống báo
động.
Muốn đổi mật khẩu ta nhấn nút đổi mật khẩu trên bàn phím, và ta phải nhập
mật khẩu mới, nhập xong thì nhấn nút xác nhận theo chỉ dẫn trên màng hình
LCD, vậy là mật khẩu đã được đổi.

16


3. Sơ đồ thuật toán

Bắt
đầu

Khởi Tạo
Biến, Mảng,
LCD

Quét phím

Nh
ập
phí
m
Mở cửa – đổi
pass

END

4. Mã nguồn của chương trình
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <Wire.h>
intcoi=12;
int led1=A0;
int led2=A1;
LiquidCrystallcd(10, 11, A2, A3, A4, A5);//4,6,11,12,13,14
char Data[20];
17

Kiểm

tra số
lần
>=3


const byte Usercount = 3;
charMatKhau[1][6] = { "111111"
char * User[Usercount] = {
"Mo Cua","Dung ","KhoaCua"};
bytecurrentCommand = 0;
byteMasterCount = 6;
bytegood_Count = 0;
intdem;
int user = 0;
boolPassword_is_good, User_is_good;
charcustomKey;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', 'F', '#'},
byterowPins[ROWS] = {2,3,4,5}; //connect to the row pinouts of the
keypad
bytecolPins[COLS] = {6,7,9,8}; //connect to the column pinouts of the
keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins,
ROWS, COLS);

void setup()
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
18


pinMode(coi, OUTPUT);
void loop()
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
lcd.setCursor(1,0);
lcd.print("Nhap Pass Word");
customKey = customKeypad.getKey();
if (customKey)
Data[currentCommand] = customKey;
lcd.setCursor(currentCommand,1);
lcd.print(Data[currentCommand]);
currentCommand++;
if(currentCommand == MasterCount)
delay(300);
while(user != 2)
for(int count = 0; count if(Data[count] == MatKhau[user][count])
good_Count++;
if(good_Count == MasterCount)
good_Count = 0;
Password_is_good = true;
break;

else
good_Count = 0;
user++;
Password_is_good = false;
lcd.setCursor(1,0);
if(Password_is_good)
lcd.clear();
digitalWrite(coi,0);
19


lcd.print("Dung Mat Khau");
lcd.setCursor(0,1);
lcd.print(User[user]);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
dem=0;
delay(5000);
user = 0;
lcd.clear();
clearData();
else
dem++;
lcd.clear();
lcd.print("Sai Mat Khau");
lcd.setCursor(0,1);
lcd.print(User[user]);
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
delay(2000);

user = 0;
lcd.clear();
clearData();
if(dem ==3)
lcd.clear();
lcd.print("Sai Mat Khau");
digitalWrite(coi,1);
delay (1000);
if(customKey == '*')
if(Password_is_good)
clearData();
20


while(User_is_good != true)
lcd.setCursor(1,0);
lcd.print("DOI MAT KHAU");
lcd.setCursor(0,1);
lcd.print("NGUOI DUNG: ");
user = customKeypad.getKey();
if(user)
lcd.clear();
user -= '0'; // convert from char to int
lcd.print(user);
if(user { // if within number of users
delay(1000);
User_is_good = true; //gets out of while loop
user -= 1; // ENTER: 1 = master, 2 = user, but the array is 0 for master and
1 for user. Thismakes it so.

lcd.lear();
else
delay(400);
lcd.clear();
lcd.print("NGUOI DUNG SAI");
delay(400);
User_is_good = false;// stays in while loop
while(customKey != '#')
lcd.setCursor(0,1);
lcd.print("ENT XacNhan");
customKey = customKeypad.getKey();
if (customKey)
MatKhau[user][currentCommand] = customKey;
lcd.setCursor(currentCommand,0);
21


lcd.print(MatKhau[user][currentCommand]);
MasterCount = currentCommand;
currentCommand++;
if(customKey == '#') // press # to store new passwrd for user
lcd.clear();
lcd.setCursor(0,1);
lcd.print(User[user]);
lcd.print(" Luuthanhcong");
Password_is_good = false;
delay(1000);
clearData();
lcd.clear();
voidclearData()

user=0;
while(currentCommand != 0)
{ // This can be used for any array size,
Data[currentCommand--] = 0; //clear for new data

22


Tài liệu tham khảo
1. Phần mềm vẽ mạch proteus và keil c.
2. Họ Vi Điều Khiển 8051” của thầy Tống Văn On và Hoàng Đức Hải.
3. “Giáo Trình Vi Điều Khiển” Của GV Phạm Hùng Kim Khánh.
4. Từ các trang web: www.dientuvietnam.net, codientu.org.

23



×