Sơ đồ mặt sau mạch 3D

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 32 - 40)

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 32 - 40)

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

(40 trang)
w