KHÓA số điện tử DÙNG 8051 (có code và layout)

KHÓA số điện tử DÙNG 8051 (có code và layout)

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.08 MB, 23 trang )

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

ĐỒ ÁN 2

KHÓA SỐ ĐIỆN TỬ DÙNG 8051

Page 1

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

Mục lục

Page 2

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
DANH MỤC HÌNH VẼ

Page 3

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
DANH MỤC BẢNG BIỂU
BẢNG 2.2: SƠ ĐỒ CHỨC NĂNG CÁC CHÂN P3
BẢNG 2.4: SƠ ĐỒ CHÂN LCD

Page 4

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

CHƯƠNG 1: GIỚI THIỆU
1.1 Giới thiệu chung
Ngày này ta có cách thiết bị điều khiển bị động dựa vào tác động hoặc thay đổi bên
ngoài. Nhưng điều đó chưa đủ, Chúng ta cần có những thiết bị tự chuẩn đoán, dự báo để
điều khiển thiết bị một cách thông minh hơn.
1.2 Mục đích thực hiện đề tài
Bằng cách sử dụng sử dụng IC8051 và các linh kiện. Ta có thể tạo ra thiết bị khóa điện
tử. Đối với trong việc bảo vệ tài sản là hết sức cần thiết, thiết bị có thể chủ động mở khóa
nếu mật mã đúng hoặc ngược lại. Và nếu nhập sai quá nhiều sẽ phải đợi 1 thời gian để có
thể được nhập lại phòng chống các mục đích xấu
1.3 Nhiệm vụ đề tài
Thiết kế mạch khóa số điện tử. Sử dụng IC8051 và ma trận phím để nhập mật mã và xuất
dữ liệu ra LCD. Xây dựng phần cứng hệ thống.

Page 5

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

CHƯƠNG 2: THIẾT KẾ PHẦN CỨNG
2.1.

KHỐI BÀN
PHÍM

Sơ đồ khối

KHỐI VI ĐIỀU
KHIỂN

KHỐI HIỂN THỊ

KHỐI NGUỒN
Hình 2.1-1: Sơ đồ khối

Khối nguồn: có chức năng biến đổi dòng xoay chiều 220v thành dòng 1 chiều
cung cấp cho các khối hoạt động.
Khối bàn phím: có nhiệm vụ nhập mật mã từ các nút bấm.

Hình 2.1-2: Khối bàn phím

Page 6

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
Khối vi điều khiển: có chưa IC8051. Nhận tín hiệu từ khối bàn phím đưa về, xử lý thông
tin và gửi tín hiệu cho LCD hiển thị.

Hình 2.1-3: Khối vi điều khiển

Khối hiển thị: có chứa LCD, hiển thị thông tin từ khối điều khiển đưa tới

Page 7

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

Hình 2.1-4: Khối hiển thị

Nguyên lý hoạt động: Khi IC8051 nhận được thông tin từ bàn phím, khối vi điều khiển
sẽ xử lý thông tin, nếu mật mã đúng thì cho phép qua, nếu sai thì sẽ nhập lại mật mã, sai
3 lần thì sẽ bị khóa bàn phím.
2.2.

VI ĐIỀU KHIỂN 8051

Được chế tạo theo đặc tính CMOS có các đặc tính sau:
• 4 KB PEROM (Flash Programmable and Erasable Read Only Memory), có
khả năng tới 1000 chu kỳ ghi xóa
• Tần số hoạt động từ: 0Hz-24MHz
• 3 mức khóa bộ nhớ lập trình
• 128 byte RAM nội
• 4 PORT xuất nhấp I/O 8 bit
• 2 bộ Timer/Counter 16 bit
• 6 nguồn ngắt
• Giao tiếp nối tiếp điều khiển bằng phần cứng
• 64KB vùng nhớ mã ngoài
• 64KB vùng nhớ dữ liệu ngoài
• Cho phép xử lý bit
• 210 vị trí nhớ có thể định vị bit
• 4 chu kỳ máy ( 4us đối với thạch anh 12MHz) cho hoạt động nhân chia
• Có các chế độ nghỉ và chế độ nguồn giảm
Page 8

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
Chân vi điều khiển 8051

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

Chip AT89C51 có các tín hiệu điều khiển cần lưu ý sau:
 Tín hiệu vào chần EA/31 thường đặt ở mức cao (+5V) hoặc mức thấp
(GND).
 Chân PSEN (29)
Là tín hiệu điều khiển cho phép chương trình mở rộng, nối đến chân /OE
của EPROM hoặc ROM để cho phép đọc các bytes mã lệnh
 Các chân nguồn
Hoạt động ở nguồn đơn +5V. Vcc được nối vào chân 40. Vss nối chân 20
 Port 0
Là Port có 2 chức năng ở các chân 32-39 của AT89C51:
_ Chức năng I/O xuất nhập: dùng cho các thiết kế nhỏ. Tuy nhiên, khi
dùng chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên,
giá trị phụ thuộc vào thành phần kết nối
_ Khi được dùng làm ngõ vào, Port 0 được set ở mức logic 1
_ Chức năng địa chỉ/dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi
sử dụng bộ nhớ ngoài, thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus
địa chỉ (8 bit thấp).
Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khi
lập trình và xuất mã khi kiểm tra (quá trình kiểm tra đòi hỏi phải có điện
trở kéo lên).
 Port 1

Page 9

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
Port 1 (chân 1-8) chỉ có 1 chức năng là I/O, không dùng cho mục đích khác
(chỉ trong 8032/8052/8952 thì dùng thêm P1.0 và P1.1 cho bộ định thời thứ
3). Tại port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài.

Port 1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấp
trong quá trình lập hay quá trình kiểm tra.
Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1.
 Port 2
Port 2 (chân 21-28) là port có 2 chức năng
_ Chức năng I/O
_ Chức năng địa chỉ: dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài
có địa chỉ 16 bit. Khi đó port 2 không được dùng cho mục đích I/O
_ Khi dùng làm ngõ vào, port 2 ở mức logic 1.
 Port 3
Port 3 (chân 10-17) là port có 2 chức năng:
_ Chức năng I/O. Khi dùng làm ngõ vào, port 3 ở mức logic 1.
_ Chức năng khác:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

Tên
RxD
TxD
INT0
INT1
T0
T1

WR
RD

Chức năng
Ngõ vào port nối tiếp
Ngõ ra port nối tiếp
Ngắt ngoài 0
Ngắt ngoài 1
Ngõ vào bộ định thời 0
Ngõ vào bộ định thời 1
Tín hiệu điều khiển ghi dữ liệu lên bộ nhớ ngoài
Tín hiệu điều khiển đọc từ bộ nhớ dữ liệu ngoài
Bảng 2.2: Sơ đồ chức năng các chân P3

 Các chân nguồn:
_ Chân 40: Vcc= 5 ± 20%
_ Chân 20: GND
 PSEN (chân 29)
Cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng dụng sử dụng ROM
ngoài
 ALE/ PROG (Address Latch Enable / Program):
ALE/ PROG (chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0
khi truy xuất bộ nhớ ngoài.
 EA /VPP (External Access) :

Page 10

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
EA (chân 31) dùng để cho phép thực thi chương trình từ ROM ngoài. Khi nối chân

31 với Vcc, AT89C51 sẽ thực thi chương trình từ ROM nội (tối đa 8KB), ngược lại
thì thực thi từ ROM ngoài (tối đa 64KB).
Ngoài ra, chân /EA được lấy làm chân cấp nguồn 12V khi lập trình cho ROM.
 RST (Reset):
RST (chân 9) cho phép reset AT89C51 khi ngõ vào tín hiệu đưa lên mức 1
trong ít nhất là 2 chu kỳ máy.
 X1, X2:
Ngõ vào và ngõ ra bộ dao động, khi sử dụng có thể chỉ cần kết nối thêm thạch
anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho
AT89C51 là 12Mhz.[1]

Hình 2.2-2: Mạch dao động

2.3.

Bàn phím ma trận 4×4 (matrix keypad 4×4) là gì ?

Nguyên lý: Khi ta cấp logic 0 ra all hàng để chờ sự kiện nút được nhấn, nếu nút được
nhấn thì ta mới cấp lần lượt mức logic 0 ra từng hàng (VD cấp cho hàng 1 logic 0 thì
các hàng khác phải lên login 1) sau đó kiểm tra cột xem nó ở cột thứ bao nhiêu, nếu
trùng cột và hàng cùng logic 0 thì ta sẽ xác định được vị trí nút được nhấn.

Hình 2.3: Ma trận phím 4×4

Page 11

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
Trên đây là hình ảnh sơ đồ nguyên lý của module bàn phím 4×4. Tuy có đến 16 nút nhấn,
nghĩa là nếu làm một cách thông thường (dùng chân digital) thì chúng ta phải cần đến 16

chân vi điều khiển để đọc. Nhưng với bàn phím này, chúng ta chỉ cần dùng 8 chân (4
chân hàng ngang (row), và 4 chân cột dọc (column)).
Để kiểm tra một nút có được nhấn hay không? Họ sẽ sử dụng phương pháp quét được mô
tả bằng đoạn mã giả như sau:
Với mỗi hàng (R1 đến R4), Chọn ra hàng Ri
Cấp cực âm (0v) cho hàng Ri
Nếu điện áp ở chân Cj bất kì là dương (INPUT PULLUP) => chưa nhấn
Nếu điện áp ở chân Cj bất kì là âm (INPUT PULLUP) => đang nhấn [2][3]
2.4.

LCD 16×02

Sơ đồ chân.
Các Text LCD theo chuẩn HD44780U thường có 16 chân trong đó 14 chân kết nối với bộ
điều khiển và 2 chân nguồn cho “đèn LED nền”. Thứ tự các chân thường được sắp xếp
như sau:
Trạng Thái
Chức năng
Số thứ tự chân
Tên
Mô Tả
Logic
Ground
1
Vss(GND)
0V
Nguồn cho
2
Vdd(Vcc)
5V

LCD
Tương phản
3
Vee
0-Vdd
0
D0-D7: Lệnh
4
RS
1
D0-D7:Dữ liệu
0
Ghi (Từ IC vào LCD)
Điều khiển
5
RW
1
Đọc (Từ LCD vào IC)
LCD
0
Vô hiệu hóa LCD
6
E
1
LCD hoạt động
Từ 1 xuống 0
Bắt đầu ghi/đọc
7
D0
0/1

Bit 0 LSB
8
D1
0/1
Bit 1
9
D2
0/1
Bit 2
10
D3
0/1
Bit 3
Dữ liệu/lệnh
11
D4
0/1
Bit 4
12
D5
0/1
Bit 5
13
D6
0/1
Bit 6
14
D7
0/1
Bit 7 MSB

Page 12

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
Bảng 2.4: Sơ đồ chân LCD.

Page 13

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

CHƯƠNG 3: PHẦN MỀM
3.1.

Lưu đồ hoạt động
BEGIN

KHỞI TẠO LCD
KHỞI TẢO BÀN PHÍM

HIỂN THỊ TÊN,
MSSV

NHẬP MẬT

ĐÚNG

SAI

QUA

SAI 3 LẦN
KHÓA BÀN
PHÍM
Hình 3.1: Lưu đồ hoạt động

Page 14

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

3.2 Mô phỏng

Hình 3.2: Mô phỏng proteus

3.3 Mạch in

Hình 3.3: Mạch in

Page 15

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

Page 16

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

CHƯƠNG 4: KẾT QUẢ

Hình 4.1: Kết quả 1

Hình 4.2: Kết quả 2

Page 17

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

CHƯƠNG 5: NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN
5.1. KẾT LUẬN
Sau hơn một thời gian tìm hiểu, nghiên cứu, tham khảo nhiều tài liệu và được sự hướng
dẫn của thầy cô, em đã thực hiện xong đề tài : ‘‘KHÓA SỐ ĐIỆN TỬ’’. Việc hoàn thành
đề tài với những nội dung và mục tiêu đề ra ban đầu đã đem lại cho em thực hiện một
lượng kiến thức bổ ích, thiết thực và có khả năng ứng dụng trong thực tế. Sau thời gian
thực hiện đồ án, em đã hoàn thành được những công việc sau :

Xây dựng, thiết kế thi công mạch khóa số điện tử

Tìm hiểu vầ thiết kế mạch
5.2. HƯỚNG PHÁT TRIỂN ĐỀ TÀI
Đề tài ‘‘khóa số điện tử’’được thực hiện trên mô hình thí nghiệm. Để đưa đề tài này vào
áp dụng trong thực tiễn đời sống và sản xuất thì cần phải nâng cấp và mở rộng hệ thống
hơn nữa. Chẳng hạn, để bảo mật tốt hơn, ta phải kết hợp với module sim để khi có cảnh
báo có thể gửi về số điện thoại của ta.

Ngoài ra, dựa vào ứng dụng và tầm khả năng hoạt động, chúng ta có thể phát triển thành
các đề tài khác như hệ thống két sắt thông minh, mạch nhận biết qua vân tay….

Page 18

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ

Tài liệu tham khảo
• [1]Giáo trình Vi xử lý – Vi điều khiển – Trường Đại học Sao đỏ – Bộ Công Thương
• Trang web:
 [2]linhkienviet.vn
 [3]Sangtaoclub.net
 [4]Hocavr.com

Page 19

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
PHỤ LỤC
CODE QUÉT BÀN PHÍM
void delay_us(unsigned int t)
{
unsigned int i;
for (i=0;i}
void delay_ms(unsigned int t)
{
unsigned int i,y;
for(i=0;i
for(y=0;y<125;y++);
}
static unsigned char code KEYS_PAD[4][4] ={‘1′,’2′,’3′,’A’,
‘4’,’5′,’6′,’B’,
‘7’,’8′,’9′,’C’,
‘*’,’0′,’#’,’D’};
unsigned char mtp_quetphim()
{
unsigned char r,c;
P1=0x0f;
delay_us(2)
if((P1&0x0f)!=0x0f)
// Kiem tra xem co phim bat ky nao duoc bam hay khong?
{
delay_us(100);
// Chong nhieu
if((P1&0x0f)!=0x0f)
// Neu dung có phim duoc bam: Bat dau qua trinh quet phim
{
for(c=0;c<4;c++)
// Quet theo cot
{
P1=~(0x01delay_ms(1);
for(r=0;r<4;r++)
// Kiem tra cac hang
{
if((P1&(0x01
Page 20

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
{
while((P1&0x0f)!=0x0f);
// Cho den khi nut bam duoc tha ra
return
KEYS_PAD[r][c];
// Tra ve ma phim da duoc bam
}
}
}
}
return 0;
// Neu khong co phim nao duoc nhan: Tra ve gia tri 0
}
unsigned int a[12]={2036},mk;
unsigned char Key;
unsigned char t,l;
unsigned char j;
unsigned int nhapmk()
{
unsigned char Key;
unsigned char i=4,j=6;
unsigned int y=0;
unsigned char A[]={‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’};
unsigned char c = 0;
while(i)
{

Key=mtp_quetphim();
if(Key)
{
for(c=0;c<10;c++)
{
if(Key==A[c])
{
y=y*10+c; i–; lcd1602_gotoxy(j,1); j++;
lcd1602_putchar(‘*’);
break;
}
}
}
return y;
}

Page 21

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
VOID MAIN
void main()
{
unsigned char i=0,k=0;
P2_0=1;
lcd1602_init();
lcd1602_clear();
lcd1602_gotoxy(0,0);
lcd1602_puts(” DIEN-DIEN TU “);
lcd1602_gotoxy(0,1);

lcd1602_puts(” DO AN 2 “);
delay_ms(2000);
lcd1602_clear();
lcd1602_gotoxy(0,0);
lcd1602_puts(“PHUNG MINH THUAN “);
lcd1602_gotoxy(0,1);
lcd1602_puts(“
41302392″);
delay_ms(2000);
///////////////
///////////////
while(1)
{
l=1;t=1;
//bien de thoat vong lap
/////////////////////////DANG NHAP//////////////////////////////////////
while(l)
{
lcd1602_clear();
lcd1602_gotoxy(0,0);
lcd1602_puts(” __NHAP PASS__ “);
mk=nhapmk();
for(i=0;i<3;i++)
{
if(a[i]==mk)
{
k++;
}
}
if(k!=0)

{
P2_0=1;
lcd1602_clear();
lcd1602_gotoxy(0,0);
Page 22

ĐỀ TÀI: KHÓA SỐ ĐIỆN TỬ
lcd1602_puts(” __CUA DA MO__ “);
lcd1602_gotoxy(0,1);
lcd1602_puts(” MOI VAO “);
k=0;
l=0;
delay_ms(2000);
P2_0=0;
break;
}
else
{
dem++;
lcd1602_clear();
lcd1602_gotoxy(0,0);
lcd1602_puts(” SAI MAT KHAU “);
lcd1602_gotoxy(0,1);
lcd1602_puts(“Sai lan: “);
sprintf(solan, “%d”, dem);
lcd1602_puts(solan);
delay_ms(200);
}
if (dem==3)

{
lcd1602_clear();
lcd1602_gotoxy(0,0);
lcd1602_puts(“BAN PHIM BI LOCK “);
BZ=0;
delay_ms(3000);
BZ=1;
while(1)
{
k=0;l=0;
}
}
/////Exit///
break;}
}

Page 23

CHƯƠNG 1 : GIỚI THIỆU1. 1 Giới thiệu chungNgày này ta có cách thiết bị tinh chỉnh và điều khiển bị động dựa vào ảnh hưởng tác động hoặc đổi khác bênngoài. Nhưng điều đó chưa đủ, Chúng ta cần có những thiết bị tự chuẩn đoán, dự báo đểđiều khiển thiết bị một cách mưu trí hơn. 1.2 Mục đích thực thi đề tàiBằng cách sử dụng sử dụng IC8051 và những linh phụ kiện. Ta hoàn toàn có thể tạo ra thiết bị khóa điệntử. Đối với trong việc bảo vệ gia tài là rất là thiết yếu, thiết bị hoàn toàn có thể dữ thế chủ động mở khóanếu mật mã đúng hoặc ngược lại. Và nếu nhập sai quá nhiều sẽ phải đợi 1 thời hạn để cóthể được nhập lại phòng chống những mục tiêu xấu1. 3 Nhiệm vụ đề tàiThiết kế mạch khóa số điện tử. Sử dụng IC8051 và ma trận phím để nhập mật mã và xuấtdữ liệu ra LCD. Xây dựng phần cứng mạng lưới hệ thống. Page 5 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬCHƯƠNG 2 : THIẾT KẾ PHẦN CỨNG2. 1. KHỐI BÀNPHÍMSơ đồ khốiKHỐI VI ĐIỀUKHIỂNKHỐI HIỂN THỊKHỐI NGUỒNHình 2.1 – 1 : Sơ đồ khốiKhối nguồn : có công dụng đổi khác dòng xoay chiều 220 v thành dòng 1 chiềucung cấp cho những khối hoạt động giải trí. Khối bàn phím : có trách nhiệm nhập mật mã từ những nút bấm. Hình 2.1 – 2 : Khối bàn phímPage 6 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬKhối vi tinh chỉnh và điều khiển : có chưa IC8051. Nhận tín hiệu từ khối bàn phím đưa về, giải quyết và xử lý thôngtin và gửi tín hiệu cho LCD hiển thị. Hình 2.1 – 3 : Khối vi điều khiểnKhối hiển thị : có chứa LCD, hiển thị thông tin từ khối tinh chỉnh và điều khiển đưa tớiPage 7 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬHình 2.1 – 4 : Khối hiển thịNguyên lý hoạt động giải trí : Khi IC8051 nhận được thông tin từ bàn phím, khối vi điều khiểnsẽ giải quyết và xử lý thông tin, nếu mật mã đúng thì được cho phép qua, nếu sai thì sẽ nhập lại mật mã, sai3 lần thì sẽ bị khóa bàn phím. 2.2. VI ĐIỀU KHIỂN 8051 Được sản xuất theo đặc tính CMOS có những đặc tính sau : • 4 KB PEROM ( Flash Programmable and Erasable Read Only Memory ), cókhả năng tới 1000 chu kỳ luân hồi ghi xóa • Tần số hoạt động giải trí từ : 0H z – 24MH z • 3 mức khóa bộ nhớ lập trình • 128 byte RAM nội • 4 PORT xuất nhấp I / O 8 bit • 2 bộ Timer / Counter 16 bit • 6 nguồn ngắt • Giao tiếp nối tiếp điều khiển và tinh chỉnh bằng phần cứng • 64KB vùng nhớ mã ngoài • 64KB vùng nhớ tài liệu ngoài • Cho phép giải quyết và xử lý bit • 210 vị trí nhớ hoàn toàn có thể xác định bit • 4 chu kỳ luân hồi máy ( 4 us so với thạch anh 12MH z ) cho hoạt động giải trí nhân chia • Có những chính sách nghỉ và chính sách nguồn giảmPage 8 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬChân vi tinh chỉnh và điều khiển 8051H ình 2.2 – 1 : Sơ đồ chân 8051C hip AT89C51 có những tín hiệu điều khiển và tinh chỉnh cần quan tâm sau :  Tín hiệu vào chần EA / 31 thường đặt ở mức cao ( + 5V ) hoặc mức thấp ( GND ).  Chân PSEN ( 29 ) Là tín hiệu tinh chỉnh và điều khiển được cho phép chương trình lan rộng ra, nối đến chân / OEcủa EPROM hoặc ROM để cho phép đọc những bytes mã lệnh  Các chân nguồnHoạt động ở nguồn đơn + 5V. Vcc được nối vào chân 40. Vss nối chân 20  Port 0L à Port có 2 tính năng ở những chân 32-39 của AT89C51 : _ Chức năng I / O xuất nhập : dùng cho những phong cách thiết kế nhỏ. Tuy nhiên, khidùng tính năng này thì Port 0 phải dùng thêm những điện trở kéo lên, giá trị nhờ vào vào thành phần kết nối_ Khi được dùng làm ngõ vào, Port 0 được set ở mức logic 1 _ Chức năng địa chỉ / tài liệu phức hợp : khi dùng những phong cách thiết kế lớn, đòi hỏisử dụng bộ nhớ ngoài, thì Port 0 vừa là bus dữ liệu ( 8 bit ) vừa là busđịa chỉ ( 8 bit thấp ). Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khilập trình và xuất mã khi kiểm tra ( quy trình kiểm tra yên cầu phải có điệntrở kéo lên ).  Port 1P age 9 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬPort 1 ( chân 1-8 ) chỉ có 1 tính năng là I / O, không dùng cho mục tiêu khác ( chỉ trong 8032 / 8052 / 8952 thì dùng thêm P1. 0 và P1. 1 cho bộ định thời thứ3 ). Tại port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài. Port 1 có năng lực kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấptrong quy trình lập hay quy trình kiểm tra. Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1.  Port 2P ort 2 ( chân 21-28 ) là port có 2 chức năng_ Chức năng I / O_ Chức năng địa chỉ : dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoàicó địa chỉ 16 bit. Khi đó port 2 không được dùng cho mục tiêu I / O_ Khi dùng làm ngõ vào, port 2 ở mức logic 1.  Port 3P ort 3 ( chân 10-17 ) là port có 2 công dụng : _ Chức năng I / O. Khi dùng làm ngõ vào, port 3 ở mức logic 1. _ Chức năng khác : BitP3. 0P3. 1P3. 2P3. 3P3. 4P3. 5P3. 6P3. 7T ênRxDTxDINT0INT1T0T1WRRDChức năngNgõ vào port nối tiếpNgõ ra port nối tiếpNgắt ngoài 0N gắt ngoài 1N gõ vào bộ định thời 0N gõ vào bộ định thời 1T ín hiệu điều khiển và tinh chỉnh ghi tài liệu lên bộ nhớ ngoàiTín hiệu tinh chỉnh và điều khiển đọc từ bộ nhớ tài liệu ngoàiBảng 2.2 : Sơ đồ tính năng những chân P3  Các chân nguồn : _ Chân 40 : Vcc = 5 ± 20 % _ Chân 20 : GND  PSEN ( chân 29 ) Cho phép đọc bộ nhớ chương trình lan rộng ra so với những ứng dụng sử dụng ROMngoài  ALE / PROG ( Address Latch Enable / Program ) : ALE / PROG ( chân 30 ) được cho phép tách những đường địa chỉ và tài liệu tại Port 0 khi truy xuất bộ nhớ ngoài.  EA / VPP ( External Access ) : Page 10 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬEA ( chân 31 ) dùng để được cho phép thực thi chương trình từ ROM ngoài. Khi nối chân31 với Vcc, AT89C51 sẽ thực thi chương trình từ ROM nội ( tối đa 8KB ), ngược lạithì thực thi từ ROM ngoài ( tối đa 64KB ). Ngoài ra, chân / EA được lấy làm chân cấp nguồn 12V khi lập trình cho ROM.  RST ( Reset ) : RST ( chân 9 ) được cho phép reset AT89C51 khi ngõ vào tín hiệu đưa lên mức 1 trong tối thiểu là 2 chu kỳ luân hồi máy.  X1, X2 : Ngõ vào và ngõ ra bộ xê dịch, khi sử dụng hoàn toàn có thể chỉ cần liên kết thêm thạchanh và những tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng choAT89C51 là 12M hz. [ 1 ] Hình 2.2 – 2 : Mạch dao động2. 3. Bàn phím ma trận 4×4 ( matrix keypad 4×4 ) là gì ? Nguyên lý : Khi ta cấp logic 0 ra all hàng để chờ sự kiện nút được nhấn, nếu nút đượcnhấn thì ta mới cấp lần lượt mức logic 0 ra từng hàng ( VD cấp cho hàng 1 logic 0 thìcác hàng khác phải lên login 1 ) sau đó kiểm tra cột xem nó ở cột thứ bao nhiêu, nếutrùng cột và hàng cùng logic 0 thì ta sẽ xác lập được vị trí nút được nhấn. Hình 2.3 : Ma trận phím 4×4 Page 11 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬTrên đây là hình ảnh sơ đồ nguyên tắc của module bàn phím 4×4. Tuy có đến 16 nút nhấn, nghĩa là nếu làm một cách thường thì ( dùng chân digital ) thì tất cả chúng ta phải cần đến 16 chân vi điều khiển và tinh chỉnh để đọc. Nhưng với bàn phím này, tất cả chúng ta chỉ cần dùng 8 chân ( 4 chân hàng ngang ( row ), và 4 chân cột dọc ( column ) ). Để kiểm tra một nút có được nhấn hay không ? Họ sẽ sử dụng giải pháp quét được môtả bằng đoạn mã giả như sau : Với mỗi hàng ( R1 đến R4 ), Chọn ra hàng RiCấp cực âm ( 0 v ) cho hàng RiNếu điện áp ở chân Cj bất kể là dương ( INPUT PULLUP ) => chưa nhấnNếu điện áp ở chân Cj bất kỳ là âm ( INPUT PULLUP ) => đang nhấn [ 2 ] [ 3 ] 2.4. LCD 16×02 Sơ đồ chân. Các Text LCD theo chuẩn HD44780U thường có 16 chân trong đó 14 chân liên kết với bộđiều khiển và 2 chân nguồn cho “ đèn LED nền ”. Thứ tự những chân thường được sắp xếpnhư sau : Trạng TháiChức năngSố thứ tự chânTênMô TảLogicGroundVss ( GND ) 0VN guồn choVdd ( Vcc ) 5VLCDT ương phảnVee0-VddD0-D7 : LệnhRSD0-D7 : Dữ liệuGhi ( Từ IC vào LCD ) Điều khiểnRWĐọc ( Từ LCD vào IC ) LCDVô hiệu hóa LCDLCD hoạt độngTừ 1 xuống 0B ắt đầu ghi / đọcD00 / 1B it 0 LSBD10 / 1B it 1D20 / 1B it 210D30 / 1B it 3D ữ liệu / lệnh11D40 / 1B it 412D50 / 1B it 513D60 / 1B it 614D70 / 1B it 7 MSBPage 12 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬBảng 2.4 : Sơ đồ chân LCD.Page 13 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬCHƯƠNG 3 : PHẦN MỀM3. 1. Lưu đồ hoạt độngBEGINKHỞI TẠO LCDKHỞI TẢO BÀN PHÍMHIỂN THỊ TÊN, MSSVNHẬP MẬTMÃĐÚNGSAIQUASAI 3 LẦNKHÓA BÀNPHÍMHình 3.1 : Lưu đồ hoạt độngPage 14 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬ3. 2 Mô phỏngHình 3.2 : Mô phỏng proteus3. 3 Mạch inHình 3.3 : Mạch inPage 15 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬPage 16 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬCHƯƠNG 4 : KẾT QUẢHình 4.1 : Kết quả 1H ình 4.2 : Kết quả 2P age 17 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬCHƯƠNG 5 : NHẬN XÉT VÀ HƯỚNG PHÁT TRIỂN5. 1. KẾT LUẬNSau hơn một thời hạn tìm hiểu và khám phá, điều tra và nghiên cứu, tìm hiểu thêm nhiều tài liệu và được sự hướngdẫn của thầy cô, em đã thực thi xong đề tài : ‘ ‘ KHÓA SỐ ĐIỆN TỬ ’ ’. Việc hoàn thànhđề tài với những nội dung và tiềm năng đề ra khởi đầu đã đem lại cho em triển khai mộtlượng kiến thức và kỹ năng hữu dụng, thiết thực và có năng lực ứng dụng trong trong thực tiễn. Sau thời gianthực hiện đồ án, em đã triển khai xong được những việc làm sau : Xây dựng, phong cách thiết kế xây đắp mạch khóa số điện tửTìm hiểu vầ phong cách thiết kế mạch5. 2. HƯỚNG PHÁT TRIỂN ĐỀ TÀIĐề tài ‘ ‘ khóa số điện tử ’ ’ được triển khai trên quy mô thí nghiệm. Để đưa đề tài này vàoáp dụng trong thực tiễn đời sống và sản xuất thì cần phải tăng cấp và lan rộng ra hệ thốnghơn nữa. Chẳng hạn, để bảo mật thông tin tốt hơn, ta phải tích hợp với module sim để khi có cảnhbáo hoàn toàn có thể gửi về số điện thoại thông minh của ta. Ngoài ra, dựa vào ứng dụng và tầm năng lực hoạt động giải trí, tất cả chúng ta hoàn toàn có thể tăng trưởng thànhcác đề tài khác như mạng lưới hệ thống két sắt mưu trí, mạch nhận ra qua vân tay …. Page 18 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬTài liệu tìm hiểu thêm • [ 1 ] Giáo trình Vi giải quyết và xử lý – Vi tinh chỉnh và điều khiển – Trường Đại học Sao đỏ – Bộ Công Thương • Trang web :  [ 2 ] linhkienviet.vn  [ 3 ] Sangtaoclub. net  [ 4 ] Hocavr. comPage 19 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬPHỤ LỤCCODE QUÉT BÀN PHÍMvoid delay_us ( unsigned int t ) unsigned int i ; for ( i = 0 ; ivoid delay_ms ( unsigned int t ) unsigned int i, y ; for ( i = 0 ; ifor ( y = 0 ; y < 125 ; y + + ) ; static unsigned char code KEYS_PAD [ 4 ] [ 4 ] = { ' 1 ', ' 2 ', ' 3 ', ' A ', ' 4 ', ' 5 ', ' 6 ', ' B ', ' 7 ', ' 8 ', ' 9 ', ' C ', ' * ', ' 0 ', ' # ', ' D ' } ; unsigned char mtp_quetphim ( ) unsigned char r, c ; P1 = 0x0 f ; delay_us ( 2 ) if ( ( P1 và 0x0 f ) ! = 0x0 f ) / / Kiem tra xem co phim bat ky nao duoc bam hay khong ? delay_us ( 100 ) ; / / Chong nhieuif ( ( P1 và 0x0 f ) ! = 0x0 f ) / / Neu dung có phim duoc bam : Bat dau qua trinh quet phimfor ( c = 0 ; c < 4 ; c + + ) / / Quet theo cotP1 = ~ ( 0x01 / Lan luot keo cac cot xuong muc logic 0 delay_ms ( 1 ) ; for ( r = 0 ; r < 4 ; r + + ) / / Kiem tra cac hangif ( ( P1 và ( 0x01 / Neu hang nao co muc logic 0P age 20 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬwhile ( ( P1 và 0x0 f ) ! = 0x0 f ) ; / / Cho den khi nut bam duoc tha rareturnKEYS_PAD [ r ] [ c ] ; / / Tra ve ma phim da duoc bamreturn 0 ; / / Neu khong co phim nao duoc nhan : Tra ve gia tri 0 unsigned int a [ 12 ] = { 2036 }, mk ; unsigned char Key ; unsigned char t, l ; unsigned char j ; unsigned int nhapmk ( ) unsigned char Key ; unsigned char i = 4, j = 6 ; unsigned int y = 0 ; unsigned char A [ ] = { ' 0 ', ' 1 ', ' 2 ', ' 3 ', ' 4 ', ' 5 ', ' 6 ', ' 7 ', ' 8 ', ' 9 ' } ; unsigned char c = 0 ; while ( i ) Key = mtp_quetphim ( ) ; if ( Key ) for ( c = 0 ; c < 10 ; c + + ) if ( Key = = A [ c ] ) y = y * 10 + c ; i -- ; lcd1602_gotoxy ( j, 1 ) ; j + + ; lcd1602_putchar ( ' * ' ) ; break ; return y ; Page 21 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬVOID MAINvoid main ( ) unsigned char i = 0, k = 0 ; P2_0 = 1 ; lcd1602_init ( ) ; lcd1602_clear ( ) ; lcd1602_gotoxy ( 0,0 ) ; lcd1602_puts ( " DIEN-DIEN TU " ) ; lcd1602_gotoxy ( 0,1 ) ; lcd1602_puts ( " DO AN 2 " ) ; delay_ms ( 2000 ) ; lcd1602_clear ( ) ; lcd1602_gotoxy ( 0,0 ) ; lcd1602_puts ( " PHUNG MINH THUAN " ) ; lcd1602_gotoxy ( 0,1 ) ; lcd1602_puts ( " 41302392 " ) ; delay_ms ( 2000 ) ; / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / while ( 1 ) l = 1 ; t = 1 ; / / bien de thoat vong lap / / / / / / / / / / / / / / / / / / / / / / / / / DANG NHAP / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / while ( l ) lcd1602_clear ( ) ; lcd1602_gotoxy ( 0,0 ) ; lcd1602_puts ( " __NHAP PASS__ " ) ; mk = nhapmk ( ) ; for ( i = 0 ; i <3 ; i + + ) if ( a [ i ] = = mk ) k + + ; if ( k ! = 0 ) P2_0 = 1 ; lcd1602_clear ( ) ; lcd1602_gotoxy ( 0,0 ) ; Page 22 ĐỀ TÀI : KHÓA SỐ ĐIỆN TỬlcd1602_puts ( " __CUA DA MO__ " ) ; lcd1602_gotoxy ( 0,1 ) ; lcd1602_puts ( " MOI VAO " ) ; k = 0 ; l = 0 ; delay_ms ( 2000 ) ; P2_0 = 0 ; break ; elsedem + + ; lcd1602_clear ( ) ; lcd1602_gotoxy ( 0,0 ) ; lcd1602_puts ( " SAI MAT KHAU " ) ; lcd1602_gotoxy ( 0,1 ) ; lcd1602_puts ( " Sai lan : " ) ; sprintf ( solan, " % d ", dem ) ; lcd1602_puts ( solan ) ; delay_ms ( 200 ) ; if ( dem = = 3 ) lcd1602_clear ( ) ; lcd1602_gotoxy ( 0,0 ) ; lcd1602_puts ( " BAN PHIM BI LOCK " ) ; BZ = 0 ; delay_ms ( 3000 ) ; BZ = 1 ; while ( 1 ) k = 0 ; l = 0 ; / / / / / Exit / / / break ; } Page 23