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

Báo cáo đồ án môn thiết kế luận lý

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.38 MB, 24 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA TP.HCM
KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH

BÁO CÁO
Môn:ĐỒ ÁN

`

THIẾT KẾ LUẬN LÝ

ĐỀ TÀI:
PASWORD DOOR SECURITY

GVHD: PHAN ĐÌNH THẾ DUY

Thành viên nhóm:
Phạm Khánh Duy

51200576

Phạm Lê Quốc Trung

51204157

Trần Tuấn Đạt

51200746

Tp.HCM,ngày 22 thánh 12 năm 2014

Trang 1




Đồ án Thiết kế luận lý

MỤC LỤC

PHẦN A MỞ ĐẦU ...................................................................................................................................................... 3
PHẦN B NỘI DUNG .................................................................................................................................................. 4
CHƯƠNG 1: GIỚI THIỆU ....................................................................................................................................... 4
1.1Yêu cầu và chức năng hệ thống ....................................................................................................................... 4
1.2Công cụ hỗ trợ.................................................................................................................................................. 5
1.3Kế hoạch, phân công công việc ....................................................................................................................... 5
CHƯƠNG 2: THIẾT KẾ .......................................................................................................................................... 6
2.1 Sơ đồ các khối chức năng ............................................................................................................................... 6
2.2 Chức năng các khối ......................................................................................................................................... 7
2. 3 Source Code ................................................................................................................................................. 11
2.4 Mạch nguyên lý, mạch layout ....................................................................................................................... 21
CHƯƠNG 3 TỔNG KẾT ............................................................................................................................................. 23
3.1 Kết luận ......................................................................................................................................................... 23
3.2 Đánh giá, phương hướng phát triển .............................................................................................................. 23
PhẦN C TÀI LIỆU THAM KHẢO .................................................................................................................................... 24

Trang 2


Đồ án Thiết kế luận lý

PHẦN A MỞ ĐẦU
Trong một xã hội hiện đại,sự phát triển của ngành điện tử , kỹ thuật máy tính là một trong những yêu
cầu không thể thiếu thúc đẩy nền kinh tế phát triển và góp phần nâng cao đời sống xã hội

Ngày nay, trênt thế giới, điện tử viễn thông vẫn không ngừng phát triển với tốc độ rất cao và thâm
nhập vào tất cả các lĩnh vực của đời sống xã hội. Trong đó, lĩnh vực bảo mật là một mảng lớn mà
chúng ta can quan tâm, và đề tài của nhóm liên quan tới lĩnh vức này, đó là đề tài password door
security. Hệ thống này cho phép ta quản lý và hạn chế được số người ra vào theo mã số trong khu vực
cần bảo mật vối độ an toàn cao. Đề tài tuy không lớn nhưng về mặt nguyên lý thì có thể phát triển
thành các ứng dụng quản lý theo thẻ từ, mã vạch, mã …trong các khu vực đặc biệt cần phải có máy
tính hiện địa với CSDL, ngoài mật mã còn kiểm tra tần số giọng nói và camera kiểm tra hình ảnh,…
mà hiện nay đang rất cần thiết. Vì thế đối với nhóm đây là bước cơ sở để nhóm nghiên cứu những
ứng dụng lớn hơn sau này.
Trong quá trình thực hiện đề tài, tuy đã cố gắng song do những hạn chế nhất định về kiến thức cũng
như kinh nghiệm thực tế nên nhóm không tránh khỏi những thiếu sót. Chúng em rất mong nhận được
những ý kiến đóng góp của thầy cô và các bạn để đề tài của nhóm em được hoàn thiện hơn với nhiều
chức năng hơn.

Trang 3


Đồ án Thiết kế luận lý

PHẦN B NỘI DUNG
CHƯƠNG 1: GIỚI THIỆU
1.1Yêu cầu và chức năng hệ thống
Yêu cầu
Đây là một hệ thống đóng mở theo mã cho phép một số ít người có thể ra vào theo mã của họ. Nó có
thể được áp dụng làm cửa ra vào của các hệ thống can mang tính bảo mật, giới hạn số người ra vào
như: cửa ra vào cơ quan, nhà máy, các khu quan trọng,…
Trên cơ sở đó hệ thống phải có các yêu cầu cơ bản sao:
+ Tính an toàn: có chức năng bảo vệ
+ Dễ sử dụng:có đầy đủ hướng dẫn để người dùng sử dụng


Chức năng
Hệ thống quản lý một số mã ứng với một số người được cho phép ra vào ở cửa này và được cho phép hoạt
động trên cơ sở các mã này.
Password gồm 4 chữ số, trong đó có một password admin và các password user
Hệt thống giao tiếp với người dùng thông qua một bàn phím điều khiển và hiển thị trên màn hình LCD
Bàn phìm gồm các số 0-9,* <#
Khi bắt đầu người điều khiển nhấn nút # để đăng nhập, nhập password vào
Chọn tài khoản người dùng. Sau đó nhập password vào.
Nếu nhập đúng password, sẽ có 2 lựa chọn tiếp theo:
+ Ấn 1 : Để mở cửa( mô phỏng bằng việc bật đèn LED xanh)
+ Ấn * : Để đổi password. Nhập password mới vào và ấn # để lưu. Hệ thống sẽ trở lại trang thái đăng
nhập cho người dùng.
+ Nếu password sai: ấn # để đăng nhập lại như lúc đầu.
+ Nếu cùng một tài khoản mà nhập sai 3 lần liên tiếp. Hệ thống sẽ bị khóa và báo động( mô phỏng
bằng LED đỏ nhấp nháy và phát còi báo động).

Trang 4


Đồ án Thiết kế luận lý

1.2Công cụ hỗ trợ
Phần Cứng:








Board mạch ARM STM32F103RB
1 LCD 16x2.
1 Bàn phím 3x4.
đèn led.
1 còi âm thanh.



Phần mềm:






Keil ARM
Flash loader demonstrator
Dfuse demonstration
Altium

1.3Kế hoạch, phân công công việc

 Tài liệu: Phạm Khánh Duy + Phạm Lê Quốc Trung + Trần Tuấn Đạt.
 Thiết kế mạch, đặt mạch, in mạch: Trần Tuấn Đạt.
 Source Code: Phạm Khánh Duy + Phạm Lê Quốc Trung.
 Test mạch: Phạm Khánh Duy.
 Viết báo cáo: Phạm Lê Quốc Trung.

Trang 5



Đồ án Thiết kế luận lý

CHƯƠNG 2: THIẾT KẾ

2.1 Sơ đồ các khối chức năng

Khối hiển thị
Khối Nguồn

Khối Báo Động

Khối
Vi Điều Khiển

Khối Mở Cửa

Khối bàn phím
Khối EEPROM

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

Trang 6


Đồ án Thiết kế luận lý

2.2 Chức năng các khối
Khối nguồn
Nhằm nhiệm vụ cung cấp điện áp +5V, ±12V luôn ổn định cho mạch điện và vi điều khiển.


Khối Vi điều khiển: kit OLIMEXINO-STM32F103RB
Xử lý các thông tin, nhận thông tin từ bàn phím , đưa đến điều khiển động cơ và đưa thông tin
hiển thị ra LCD thông báo cho người dùng.

─ Cốt lõi: ARM 32-bit Cortex ™-M3 CPU
─ Tần số tối đa 72 MHz, 1,25 DMIPS / MH z (Dhrystone 2.1)
biểu diễn tại 0 chờ đợi truy cập bộ nhớ trạng thái
─ Nhân chu trình đơn và bộ phận phần cứng
─ 256-512 Kbytes bộ nhớ Flash
─ Lên đến 64 Kbytes SRAM
─ Linh hoạt điều khiển bộ nhớ tĩnh với 4 Chip Select. Hỗ trợ
Compact Flash, SRAM, PSRAM, NOR và NAND kỷ niệm
─ LCD giao diện song song, 8080/6800 chế độ
─ Đồng hồ, thiết lập lại và quản lý cung cấp
─ 2,0-3,6 V cung cấp ứng dụng và I / O
─ POR, PDR, và lập trình phát hiện điện áp (PVD)
─ tinh thể dao động 4-đến-16 MHz
─ 8 MHz RC
─ Hiệu chuẩn Nội bộ 40 kHz RC
─ dao động 32 kHz cho RTC
─ Điện năng thấp
─ sleep, Stop và wait
─ VBAT cung cấp cho RTC và đăng ký sao lưu
─ 3 x 12-bit, 1 ms chuyển đổi A / D (lên đến 21 kênh)
─ Phạm vi chuyển đổi: 0-3,6 V
─ Ba mẫu và giữ khả năng
─ Cảm biến nhiệt độ
─ D/A chuyển đổi 2x12-bit
─ DMA: 12 kênh điều khiển DMA

─ Thiết bị ngoại vi hỗ trợ: giờ, ADC, DAC, SDIO, tôi

2

Ss,SPIs, tôi

2

Cs và USARTs

─ Chế độ gỡ lỗi
─ Gỡ rối nối tiếp dây (SWD) & JTAG giao diện

Trang 7


Đồ án Thiết kế luận lý

─ 112 I/O
─ 51/80/112 I/ O, tất cả mappable trên 16 vector ngắt ngoài và gần như tất cả 5V
─ 16-bit, 4 IC/OC/PWM hoặc xung truy cập và vuông góc (tăng) mã hóa đầu vào 2x16bit điều khiển động cơ PWM thời gian chết và dừng khẩn cấp
─ 2 giờ x cơ quan giám sát (độc lập và cửa sổ)
─ SysTick giờ: một downcounter 24-bit
─ 2 x 16-bit giờ cơ bản để lái xe DAC
─ Lên đến 13 giao diện truyền thông
2
─ Lên đến 2 x tôi giao diện C (SMBus / PMBus)
─ Lên đến 5 USARTs (7816 giao diện theo tiêu chuẩn ISO,LIN, IrDA khả năng, kiểm soát modem)
─ Lên đến 3 SPIs (18 Mbit / s), 2 với I2S giao diện ghép
─ CAN giao diện (2.0b Active)

─ Giao diện USB 2.0 tốc độ đầy đủ
─ Giao diện SDIO
─ Đơn vị tính CRC, 96-bit ID duy nhất
─ ECOPACK gói

Môi trường phần cứng:
─ Chip ARM Cortex m3-STM32F103RCT6 được cấp nguồn +3.3V thông qua cổng USB của
PC, dùng thạch anh ngoài 8MHz, sau khi qua bộ nhân tần số đưa vào CPU lên tới 72MHz.

─ 2 pin Tx và Rx củ a USART1 lần lượt là: PA9, PA10.
Môi trường phần mềm:
─ Chương trình được viết dựa trên nền tảng bộ thư viện chuẩn CMSIS do công ty ARM đề xuất và
bộ thư viện truy xuất ngoại vi tương thích chuẩn CMSIS do công ty ST cung cấp
Chương trình được biên dị ch b ằng công c ụ quen thu ộc: Keil v4.01

─ Cổng USART1 được cài đặt các thông s ố hoạt động như sau:
+ BaudRate = 115200 baud
+ Word Length = 8 Bits
+ One Stop Bit
+ No parity
+ Hardware flow control disabled (RTS and CTS signals)
+ Receive and transmit enabled

Trang 8


Đồ án Thiết kế luận lý

Khối bàn phím: Keypad 3x4
Bàn phím gồm các nút. Mỗi nút là một bộ phận đogn1 mở bằng cơ khí. Các mã của bàn phím

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

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ị: LCD16x2

Hiển thị thông tin, trang thái đăng nhập.

Trang 9


Đồ án Thiết kế luận lý

Khối EEPROM: Lưu dữ liệu ngay cả khi mất điện
Dùng IC AT24C02.
Các thông số kỹ thuật:
Điện áp hoạt động: 1.8 – 5.5V
Có 256 Byte EEPROM nội
Dữ liệu được lưu lại trong 100 năm
Có thể ghi tối đa 1 triệu lần
Hỗ trợ phần cứng bảo vệ dữ liệu ghi vào.
Sử dụng kết nối 2 dây I2C: Chân SCL là chân tạo xung nhịp được điều khiển bởi vi điều khiển.
Chân SDA là chân truyền dữ liệu giữa vi điều khiển và 24C02
.

SDA

STM32F10X


EEPROM
SCL

Sơ đồ kết nối

Khối mở cửa: Điều khiển đóng mở cửa (mô phỏng bằng LED xanh sáng, tắt).

Khối 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.

Trang 10


Đồ án Thiết kế luận lý

2. 3 Source Code
Hệ thống sẽ cấp sẵn một số password của các cửa từ 0 đến 9. Các các password này sẽ được lưu
trong bộ nhớ EEPROM. Khi khởi động hệ thống, chương trình sẽ đọc các dữ liệu trong bộ nhớ này
Đầu tiên ta sẽ tiến hành chọn mã số cửa muốn mở, đó là các mã số từ 0 đến 9. Sau khi đã xác định
được cửa, ta sẽ tiến hành nhập password đã được cài đặt sẵn, nếu nhập sai hệ thống sẽ yêu cầu bấm
phím # để nhập lại. Nếu nhập đúng, hãy bấm phím số 1 để cửa mở, ngoài ra nếu muốn đổi password
mới ta nhấn phím *.
Lưu ý: Khi ở cửa ADMIN, ta có thể xem password các cửa khác bằng cách nhấn phím 0, sau đó
chọn mã số cửa muốn xem.

 Project gồm các module thực hiện các chức năng của các khối như sau:

 Keypad3x4:
Khởi tạo keypad3x4:
#include "Keypad.h"
#include "gpio.h"

#include "stm32f10x.h"
const uint8_t

KEY_3X4[4][3]={'1','2','3',
'4','5','6',
'7','8','9',
'*','0','#'};

/*******************************************************************************
Noi Dung

:

Kiem tra co nut duoc an hay khong..

Tham Bien

:

Khong.

Tra Ve

:

1:

Neu co nut duoc an.

0:


Neu khong co nut duoc an.

********************************************************************************/
uint8_t

KEY3X4_IsPush(void)

{
if((COL0==0)|(COL1==0)|(COL2==0)) {
//

printf("aaa %d %d %d\n",COL0, COL1, COL2);
return 1;
}
else
return 0;

}

Trang 11


Đồ án Thiết kế luận lý

/*******************************************************************************
Noi Dung

:


Keo hang thu i xuong muc logic 0, de kiem tra co nut duoc an tai
hang thu i hay khong.

Tham Bien

:

i: vi tri hang can kiem tra.

Tra Ve

:

Khong.

********************************************************************************/
void KEY3X4_CheckRow(uint8_t i)
{
ROW0_ON;
ROW1_ON;
ROW2_ON;
ROW3_ON;
if(i==0) ROW0_OFF;
else if(i==1)ROW1_OFF;
else if(i==2)ROW2_OFF;
else ROW3_OFF;
}
/*******************************************************************************
Noi Dung


:

Lay gia tri nut nhan duoc an.

Tham Bien

:

Khong.

Tra Ve

:

0:

Neu khong co nut duoc an.
khac 0: Gia tri cua nut an.

********************************************************************************/
uint8_t

KEY3X4_GetKey(void){

uint8_t

i;

ROW0_OFF;
ROW1_OFF;

ROW2_OFF;
ROW3_OFF;
if(KEY3X4_IsPush()){
delay_ms(5);
if(KEY3X4_IsPush()){
for(i=0;i<4;i++){
KEY3X4_CheckRow(i);
if(!COL0) return KEY_3X4[i][0];
if(!COL1) return KEY_3X4[i][1];
if(!COL2) return KEY_3X4[i][2];
}
}
}
return 0;
}

Trang 12


Đồ án Thiết kế luận lý

Định nghĩa chân Keypad
//Keypad3x4
#define COL0

GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_9)

#define COL1

GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)


#define COL2

GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6)

#define COL0_ON

GPIO_SetBits(GPIOA,GPIO_Pin_9);

#define COL0_OFF
#define COL1_ON

GPIO_ResetBits(GPIOA,GPIO_Pin_9);
GPIO_SetBits(GPIOA,GPIO_Pin_8);

#define COL1_OFF
#define COL2_ON
#define ROW0_ON
#define ROW1_ON
#define ROW2_ON
#define ROW3_ON

//D2

GPIO_ResetBits(GPIOA,GPIO_Pin_0);
GPIO_SetBits(GPIOB,GPIO_Pin_9);

#define ROW3_OFF

//D3


GPIO_ResetBits(GPIOA,GPIO_Pin_1);
GPIO_SetBits(GPIOA,GPIO_Pin_0);

#define ROW2_OFF

//D4

GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOA,GPIO_Pin_1);

#define ROW1_OFF

//D5

GPIO_ResetBits(GPIOB,GPIO_Pin_6);
GPIO_SetBits(GPIOB,GPIO_Pin_5);

#define ROW0_OFF

//D6

GPIO_ResetBits(GPIOA,GPIO_Pin_8);
GPIO_SetBits(GPIOB,GPIO_Pin_6);

#define COL2_OFF

//D7

//D24


GPIO_ResetBits(GPIOB,GPIO_Pin_9);

 LCD16x2:
Khởi tạo LCD:
#include "lcd4bit.h"
#include "delay.h"
/*******************************************************************************
Noi Dung

:

Gui tin hieu Enable den LCD.

Tham Bien

:

Khong.

Tra Ve

:

Khong.

********************************************************************************/
void LCD_Enable(void)
{
LCD_EN(1);

delay_ms(3);
LCD_EN(0);

Trang 13


Đồ án Thiết kế luận lý

delay_ms(50);
}
/*******************************************************************************
Noi Dung

:

Gui 4 bit du lieu den LCD.

Tham Bien

:

Data: 4 bit thap cua Data chua 4 bit du lieu can gui.

Tra Ve

:

Khong.

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

void LCD_Send4Bit( uint8_t

Data )

{
//

LCD_RW(0);//

//

LCD_EN(1);//
LCD_D4((Data>>0)&0x01);
LCD_D5((Data>>1)&0x01);
LCD_D6((Data>>2)&0x01);
LCD_D7((Data>>3)&0x01);

//

delay_ms(1);//

//

LCD_EN(0);//

//

delay_ms(1);//

}

/*******************************************************************************
Noi Dung

:

Gui 1 byte du lieu den LCD.

Tham Bien

:

command: byte du lieu can gui.

Tra Ve

:

Khong.

********************************************************************************/
void LCD_SendCommand (uint8_t

command )

{
//

LCD_RS(1);//
LCD_Send4Bit


( command >>4 );

/* Gui 4 bit cao */

LCD_Enable () ;
LCD_Send4Bit

( command

);

/* Gui 4 bit thap*/

LCD_Enable () ;
//

LCD_RS(0);//

}
/*******************************************************************************
Noi Dung

:

Khoi tao LCD.

Tham Bien

:


Khong.

Tra Ve

:

Khong.

********************************************************************************/
void LCD_Init ( void )
{
LCD_Send4Bit(0x00);
delay_ms(20);
LCD_RS(0);
LCD_RW(0);
//

delay_ms(16);

Trang 14


Đồ án Thiết kế luận lý

//

LCD_RS(0);
//LCD_RW(0);
LCD_Send4Bit(0x03);
delay_ms(5);

LCD_Send4Bit(0x03);
delay_ms(5);
LCD_Send4Bit(0x03);
LCD_Enable();
delay_ms(5);
LCD_Enable();
delay_ms(100);
LCD_Enable();
LCD_Send4Bit(0x02);
//delay_ms(16);
LCD_Enable();
LCD_SendCommand( 0x28 );// giao thuc 4 bit, hien thi 2 hang, ki tu 5

//

delay_ms(16);
LCD_SendCommand( 0x0c);// cho phep hien thi man hinh

//

delay_ms(16);
LCD_SendCommand( 0x00 );// tang ID, khong dich khung hinh

//

delay_ms(16);
LCD_Clr();// xoa toan bo khung hinh

}
/*******************************************************************************

Noi Dung

:

Thiet lap vi tri con tro LCD.

Tham Bien

:

x: vi tri cot cua con tro. x = 0 - 15.
y: vi tri hang cua con tro. y= 0,1.

Tra Ve

:

Khong.

********************************************************************************/
void LCD_Gotoxy(uint8_t

x, uint8_t

y)

{
uint8_t

address;


if(!y)
address = (0x80+x);
else
address = (0xC0+x);
delay_ms(1);
LCD_SendCommand(address);
delay_ms(5);
}
/*******************************************************************************
Noi Dung

:

Xoa noi dung hien thi tren LCD.

Tham Bien

:

Khong.

Tra Ve

:

Khong.

Trang 15



Đồ án Thiết kế luận lý

********************************************************************************/
void LCD_Clr(void)
{
LCD_SendCommand(0x01);
delay_ms(5);
}
/*******************************************************************************
Noi Dung

:

Viet 1 ki tu len LCD.

Tham Bien

:

Khong.

Tra Ve

:

Khong.

********************************************************************************/
void LCD_PutChar ( uint8_t


Data )

{
LCD_RS(1);
LCD_SendCommand( Data );
LCD_RS(0);
}
/*******************************************************************************
Noi Dung

:

Viet 1 chuoi ki tu len LCD.

Tham Bien

:

Khong.

Tra Ve

:

Khong.

********************************************************************************/
void LCD_Puts(char *s)
{

while(*s){
LCD_PutChar(*s);
s=s+1;
}
}
void LCD_Puts_Slow (char *s)
{
while(*s){
LCD_PutChar(*s);
delay_ms(100);
s=s+1;
}
}

Trang 16


Đồ án Thiết kế luận lý

Định nghĩa các chân LCD:
//LCD16x2
#define LCD_RS_ON

GPIO_SetBits(GPIOA, GPIO_Pin_10);

#define LCD_RS_OFF
#define LCD_RW_ON

GPIO_ResetBits(GPIOA, GPIO_Pin_10);
GPIO_SetBits(GPIOB, GPIO_Pin_7);


#define LCD_RW_OFF
#define LCD_EN_ON

GPIO_SetBits(GPIOA, GPIO_Pin_4);
GPIO_SetBits(GPIOA, GPIO_Pin_7);
GPIO_SetBits(GPIOA, GPIO_Pin_6);

//D12

GPIO_ResetBits(GPIOA, GPIO_Pin_6);
GPIO_SetBits(GPIOA, GPIO_Pin_5);

#define LCD_D6_OFF
#define LCD_D7_ON

//D11

GPIO_ResetBits(GPIOA, GPIO_Pin_7);

#define LCD_D5_OFF
#define LCD_D6_ON

//D10

GPIO_ResetBits(GPIOA, GPIO_Pin_4);

#define LCD_D4_OFF
#define LCD_D5_ON


//D9

GPIO_ResetBits(GPIOB, GPIO_Pin_7);

#define LCD_EN_OFF
#define LCD_D4_ON

//D8

//D13

GPIO_ResetBits(GPIOA, GPIO_Pin_5);
GPIO_SetBits(GPIOB, GPIO_Pin_8);

#define LCD_D7_OFF

//D14

GPIO_ResetBits(GPIOB, GPIO_Pin_8);

 EEPROM:
Khởi tạo giao thứ I2C:

#include "i2c.H"
void I2C_init(void)
{
GPIO_SetState(GPIOB,GPIO_Pin_10,GPIO_Mode_Out_OD);
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SCL=1;
delay_ms(1);

SDA_OUT=1;
delay_ms(1);
}
// Ham start I2C
void start(void)
{
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SCL=1;
//delay_ms(10000);
SDA_OUT=1;
delay_ms(1);

Trang 17


Đồ án Thiết kế luận lý

SDA_OUT=0;
delay_ms(1);
SCL=0;
delay_ms(1);
}
// Ham stop I2C
void stop(void)
{
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SDA_OUT=0;
SCL=1;
delay_ms(1);
SDA_OUT=1;

delay_ms(1);
SCL=0;
delay_ms(1);
}
void truyen(uint8_t data)
{
uint8_t tem,i;
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
for(i=0;i<8;i++){
tem=data&0x80;
if(tem==0x80)
SDA_OUT=1;
else
SDA_OUT=0;
data=data*2;
SCL=1;
delay_ms(1);
SCL=0;
delay_ms(1);
}
SCL=1;
delay_ms(1);
SCL=0;
delay_ms(1);
}
uint8_t nhan(void)
{
uint8_t gt=0,i;
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_IN_FLOATING);
for(i=0;i<8;i++){


Trang 18


Đồ án Thiết kế luận lý

SCL=1;
gt=gt*2;
delay_ms(1);
gt=gt|SDA_IN;
SCL=0;
delay_ms(1);
}
GPIO_SetState(GPIOB,GPIO_Pin_11,GPIO_Mode_Out_OD);
SCL=1;
SDA_OUT=1;
delay_ms(1);
SCL=0;
return gt;
}

Khởi tạo EEPROM:
#include "at24cxx.h"
#include "i2c.H"
#include "delay.h"
/*******************************************************************************
Noi Dung

:


Khoi tao giao tiep chip EEPROM.

Tham Bien

:

Khong.

Tra Ve

:

Khong.

********************************************************************************/
void EEP_24CXX_Init()
{
I2C_init();
}
/*******************************************************************************
Noi Dung

:

Doc du lieu tu EEPROM.

Tham Bien

:


address:

Tra Ve

:

Gia tri du lieu doc duoc.

Dia chi can doc du lieu.

********************************************************************************/
uint8_t EEP_24CXX_Read(uint8_t address)
{
uint8_t Data;
start();
truyen(0xa0);
truyen(address);
start();
truyen(0xa1);
Data=nhan();
stop();

Trang 19


Đồ án Thiết kế luận lý

return Data;
}
/*******************************************************************************

Noi Dung

:

Viet du lieu vao EEPROM.

Tham Bien

:

address:

Dia chi can ghi du lieu.

Data

Gia tri du lieu can ghi.

Tra Ve

:

Khong.

:

********************************************************************************/
void EEP_24CXX_Write(uint8_t address,uint8_t Data){
start();
truyen(0xa0);

truyen(address);
truyen(Data);
stop();
delay_ms(10);
}
/*******************************************************************************
Noi Dung

:

Viet mot chuoi du lieu vao EEPROM.

Tham Bien

:

address:

Dia chi bat dau ghi du lieu.

*s

Chuoi du lieu can ghi.

Tra Ve

:

:


Khong.

********************************************************************************/
void EEP_24CXX_WriteS(uint8_t address,uint8_t*s){
while(*s)
{
EEP_24CXX_Write(address++,*s);
s++;
}
}
/*******************************************************************************
Noi Dung

:

Doc mot chuoi du lieu tu EEPROM.

Tham Bien

:

address:

Dia chi bat dau ghi du lieu.

*s

Chuoi du lieu can doc.

:


lenght :
Tra Ve

:

Do dai du lieu can doc.

Khong.

********************************************************************************/
void EEPROM_24CXX_ReadS(uint8_t address, uint8_t lenght, uint8_t *s){
uint8_t i=0;
while(lenght){
s[i++]=EEP_24CXX_Read(address++);
lenght--;
delay_ms(2);
}
s[i]=0;
}

Trang 20


Đồ án Thiết kế luận lý

2.4 Mạch nguyên lý, mạch layout

Mạch nguyên lý sử dụng phần mềm Antium:


Trang 21


Đồ án Thiết kế luận lý

Mạch layout:

Trang 22


Đồ án Thiết kế luận lý

CHƯƠNG 3 TỔNG KẾT
3.1 Kết luận
Trên cơ sở lí thuyết đã học, chúng em đã thiết kế hệ thống khóa với độ tin cậy có thể chấp nhận
được dựa vào chức năng quản lí chương trình bằng password với quy mô đơn giản hơn. Để ứng
dụng vào thực tế, hệ thống này còn cần được chỉnh sửa để tăng tính ổn định và kết nối với bộ phận
cơ khí đóng mở cửa.
Hiện nay, những hệ thống kiểm soát ra vào theo mã đã sử dụng những hình thức quản lí tiên tiến
hơn như: thẻ từ, vân tay... tuy nhiên chi phí còn rất cao. Một hệ thống quản lí như chúng em tập
thiết kế vẫn còn có những ứng dụng nhất định.

3.2 Đánh giá, phương hướng phát triển
Mạch còn có 1 số khuyết điểm như :
Do chỉ báo động bằng tín hiệu đèn hoặc chuông nên khi người dùng ở cách xa nơi báo động thì
không hay biết gì về việc có người dò pass hay không. Vì vậy hướng phát triển của đồ án là thông
báo cho chủ nhân khi có người nhập pass sai 3 lần để kịp thời xử lý hoặc thay đổi password.việc
thông báo từ xa có thể sử dụng sóng radio hay thông báo qua điện thoại, có thể gởi tin nhắn chẳng
hạn...
Hệ thống khóa số sử dụng LCD với hướng dẫn bằng tiếng Việt không dấu, không thân thiện với

người dùng lắm. Ta có thể sử dụng CGRAM để vẽ các ký tự tiếng Việt có dấu giúp người Việt dễ
sử dụng hơn.
Mặt khác với 10 chữ số từ 09 thì mức độ bảo mật chưa cao lắm. Ta có thể sử dụng các ký tự latin
để làm password để tăng tính bảo mật cho hệ thống.
Do là thiết kế đầu tiên nên không thể tránh khỏi sai sót nhất định Chúng em xin chân thành cảm ơn
sự giúp đỡ và hướng dẫn của các thầy giáo và các anh chị, các bạn trong thời gian vừa qua. Mong
rằng sẽ nhận được nhiều đóng góp ý kiến để bản thiết kế này và những bản thiết kế sau ngày càng
được hoàn thiện hơn.

Trang 23


Đồ án Thiết kế luận lý

PHẦN C TÀI LIỆU THAM KHẢO
/>www.arm.vn/


Trang 24



×