Khối trung tâm mạch khóa số

Một phần của tài liệu (TIỂU LUẬN) 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 (Trang 26)

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.

Đị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 hai châ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.

2 5

Khối hiển thị LCD VCC 40 P0B0AD0 39 P0B1AD1 38 P0B2AD2 37 P0B3AD3 36 P0B4AD4 35 P0B5AD5 34 P0B6AD6 33 P0B7AD7 32 EAVPP 31 ALEPROG 30 PSEN 29 P2B7A15 28 P2B6A14 27 P2B5A13 26 P2B4A12 25 P2B3A11 24 P2B2A10 23 P2B1A9 22 P2B0A8 21 VCC 5.0V V CCC VGN D R1 3kΩ U2 R S E VCC 5.0V R3 220Ω Hình 10: Khối hiển thị LCD 16x2

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 h4 h3 h2 h1 7 4 1 C NUMERIC_KEYPAD_4X4 Hình 11: Khối bàn phím 4x4

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: Hàng 1 Hàng 2 Hàng 3 Hàng 4 Được ghép nối với vi điều khiển tại Port

P1 Với : 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 27

3.4 Mạch in

3.5 Mạch 3D

Mặt trước

Hình 13: Sơ đồ mặt trước mạch 3D

Mặt sau

Hình 14: Sơ đồ mặt sau mạch 3D

3.6 Kết luận

u đi m:

Ư

Dễ dàng thay đổi mật mã thường xun để đảm bảo an tồn. Có thể cho phép người khác vào nhà bằng cách chia sẻ mật khẩu.

Nhược đi m:

Giá thành cao hơn gấp nhiều lần so với khóa truyền thống. Phải nhập chính xác cả dãy mật khẩu.

Hướng phát tri n:

3.7 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

#define row1 #define row2 #define row3

#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;

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', '/','=','0','c' };

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

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 unsigned char row,col;

if(check_but()) { delay_ms(1); if(check_but()){ for(row=0;row<4;row++){ 33

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){ 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) { 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); } 3 5

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); } /******************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");

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 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"); delay_ms(2000);

LCD_clear(); goto lamlai;} }} }

TÀI LI U THAM KH O

Trong báo cáo này, chúng em đã sử dụng các tài liệu tham khảo:

[1]. “Họ Vi Điều Khiển 8051” của thầy Tống Văn On và Hồng Đức Hải

[2]. “Giáo Trình Vi Điều Khiển” Của GV Phạm Hùng Kim Khánh

Một phần của tài liệu (TIỂU LUẬN) 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 (Trang 26)

Tải bản đầy đủ (DOCX)

(40 trang)
w