Giải thuật - Mạch khóa số bằng Password có hiển thị bằng LCD (Tiếp theo) - Pdf 17

Mạch khóa số bằng Password
có hiển thị bằng LCD
I. Phân tích:
Mạch gồm có:
- Bộ hiển thị gồm 1 LCD
- Một con Vi điều khiển AT89C51
- Một bàn phím ma trận 4x4
- Một RELAY để giao tiếp với bộ khóa
- 8 led đơn dùng để báo động
II. Nguyên tắc hoạt động:
— Password mật định là 000000 (gồm 6 số)
— Để khóa một cái gì theo yêu cầu người sử dụng thì bấm nút Close
— Để mở được khóa thì phải nhấn nhập vào đúng Password và nhấn nút
Open . Nếu nhập sai Password thì Relay sẽ không đóng  Cửa sẽ không mở.
— Để thay đổi Password thì nhấn vào nút Change , nhập vào Password cũ
sau đó nhấn nút OOK , nhập vào Password mới rồi nhấn nút OOK lần nữa.
Lúc này bạn đã đổi Password thành công nếu bạn nhập Password cũ đúng.
Nếu nhập sai Password cũ thì chương trình sẽ yêu cầu nhập lại Password cũ .
Password cũ cũng chỉ cho phép nhập trong vòng 3 lần . Nếu số lần nhập sai ≥
3 lần thì hệ thống sẽ báo động và bàn phím sẽ bị khóa trong vòng 1 phút sau
đó mới được phép nhập lại.
— Nếu đang làm một việc gì đó mà muốn thoát ra ngoài thì nhấn nút Start
— Trong chương trình chính, chỉ có 3 nút Open , Close , Change , Start có
tác dụng còn các nút khác thì không. Nút Open dùng để gọi chương trình mở
khóa. Nút Close dùng để gọi chương trình khóa cửa . Nút Change dùng để
gọi chương trình đổi mật mã. Nút start dùng để xóa những kí tự nếu nhập
sai .
* Trong chương trình mở khóa:
+ Nút Close dùng để khóa cửa lại.
+ Nút Open dùng để mở cửa ở bất cứ lúc nào nếu Pass nhập vào từ bàn
phím đúng với Pass ở thời điểm gần nhất thì khóa sẽ được mở.

start
Key
change
Key
OOk
PRESS
NO
NO
NO
Change
Press
NO
press
Pass save to ram
(60 65h)
Display
Open
Pass ram so
sanh pass
rom
Correct
Open the Door
Welcome
Relay đóng(cua mo)
Quet_phim
Key
Close
Main:
INC R6
R6 ?

No
No
press
press
press
No
1
So sanh pass ram
voi pass rom
Nhap password moi
6 so:
Inc R3
R3=3?
0
Alarm
ĐS
Chuong trinh:
$MOD51
ORG 00H
RS EQU P3.0
RW EQU P3.1
EN EQU P3.2
PASS EQU 40H
DATABUS EQU P1
LCALL CHAY_CHU
MAIN1:
MOV R0,#70H
MOV 70H,#0 ;PASS MAC DINH DUOC LUU TRU TU O NHO 70H-
>75H
MOV 71H,#0

LCALL DELAY_2
MOV DATABUS,#38H
LCALL GUI_LENH
MOV TH0,#HIGH(-100)
MOV TL0,#LOW(-100)
LCALL DELAY_2
MOV DATABUS,#38H
LCALL GUI_LENH
MOV DATABUS,#0CH ;CODE=0CH-ENABLE DISPLAY LCD
LCALL GUI_LENH
MOV DATABUS,#01H ;CODE=01H-CLEAR LCD
LCALL GUI_LENH
MOV DATABUS,#81H ; XUAT HIEN DONG DAU TIEN
ACALL GUI_LENH
PUSH 04H
PUSH ACC
MOV R4,#00H
MOV DPTR,#STRINGCODE
LOOP1:
MOV A,R4
MOVC A,@A+DPTR
LCALL GUI_DATA
INC R4
CJNE R4,#14,LOOP1 ; HIEN DONG THONG BAO THU NHAT 15 KI TU
POP ACC
POP 4H
MOV DATABUS,#0C0H ;DISPALY DATA AT THE SECOND LINE
ACALL GUI_LENH
MOV A,#11111110B
LCALL GUI_DATA ; 2 KHOANG TRANG

CJNE A,#14,PHIM_OOK
LJMP CHANGE_PASS
PHIM_OOK:
CJNE A,#15,PHIMDATA
LJMP QUET_PHIM_FUNC
PHIMDATA:
PUSH ACC
MOV A,50H
CJNE A,#6,HIENTHI
LJMP QUET_PHIM_FUNC
HIENTHI:
INC 50H
POP ACC
MOV @R1,A
ORL A,#30H
LCALL DELAY
MOV DATABUS,#'*'
SETB RS ;RS = 1-SEND DATA
NOP
PULSE_EN12:
CLR RW ;RW = 0-WRITING MODE
CLR EN ;MAKE AN ENABLE PULSE
NOP
SETB EN
NOP
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
LCALL DELAY_2
;LCALL GUI_DATA
INC R1

OPEN:
MOV A,@R0 ; PASS TRONG 0 70H DUOC DEM
RA SO SANH VOI THANG PASS DUOC NHAP VAO THU BAN PHIM
CJNE A,60H,PASS_SAI
INC R0
MOV A,@R0
CJNE A,61H,PASS_SAI
INC R0
MOV A,@R0
CJNE A,62H,PASS_SAI
INC R0
MOV A,@R0
CJNE A,63H,PASS_SAI
INC R0
MOV A,@R0
CJNE A,64H,PASS_SAI
INC R0
MOV A,@R0
CJNE A,65H,PASS_SAI
; DUNG
THONGBAO: ;HIEN THI RA MAN HINH NHAP
DUNG PASS WORD
MOV DATABUS,#0CH ;CHO PHEP LCD HIEN THI
LCALL GUI_LENH
MOV DATABUS,#01H ;XOA MANG HINH LCD
LCALL GUI_LENH
MOV DATABUS,#84H ;DU LIEU HIEN THI O DONG DAU
LCALL GUI_LENH
MOV A,#11111110B ;HIEN THI DAU CACH
LCALL GUI_DATA

LCALL QUET_PHIM
CJNE A,#11,EXIT_OPEN ; TRO VE LAN NHAP GIA TRI BAN
DAU
POP 04H
POP ACC
LJMP MAIN
; SAI
PASS_SAI:
INC R6 ;R3 CHO PHEP SO LAN NHAP PASS
SAI
CJNE R6,#3,HOME
LCALL ALARM
MOV R3,#00H
LCALL DELAY50MS
LJMP MAIN1
HOME:
MOV DATABUS,#02H
ACALL GUI_LENH
MOV DATABUS,#01H
ACALL GUI_LENH
MOV DATABUS,#0CH ;CHO PHEP LCD HIEN THI
ACALL GUI_LENH
PUSH 4H
PUSH ACC
MOV R4,#15
MOV DPTR,#STRINGCODE
STING:
MOV A,R4 ;HIEN THI PASS SAI ROI
MOVC A,@A+DPTR
LCALL GUI_DATA

MOV DATABUS,#0C0H ; XUAT HIEN DONG DAU TIEN
ACALL GUI_LENH
MOV A,#11111110B ;HIEN THI DAU CACH
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#01001111B
LCALL GUI_DATA
MOV A,#01101110B
LCALL GUI_DATA
MOV A,#01100101B
LCALL GUI_DATA
MOV A,#11111110B ;HIEN THI DAU CACH
LCALL GUI_DATA
MOV A,#01101101B
LCALL GUI_DATA
MOV A,#01101001B
LCALL GUI_DATA
MOV A,#01101110B
LCALL GUI_DATA
MOV A,#01110101B
LCALL GUI_DATA
MOV A,#01110100B
LCALL GUI_DATA
MOV A,#01100101B
LCALL GUI_DATA

MOVC A,@A+DPTR
LCALL GUI_DATA
INC R4
CJNE R4,#14,PING
POP 04H
POP ACC
MOV DATABUS,#0C0H ; First following character will
appear on second
ACALL GUI_LENH
MOV A,#11111110B
LCALL GUI_DATA ; 2 KHOANG TRANG
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#00110110B
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#01010011B
LCALL GUI_DATA
MOV A,#01101111B
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#01111110B
LCALL GUI_DATA ; DAU - >
MOV 60H,00H
MOV 61H,00H
MOV 62H,00H
MOV 63H,00H
MOV 64H,00H

LJMP KT_OPEN
HIENTHI_1:
INC 51H
POP ACC
MOV @R1,A
ORL A,#30H
MOV DATABUS,#'*'
SETB RS ;RS = 1-SEND DATA
NOP
PULSE_EN123:
CLR RW ;RW = 0-WRITING MODE
CLR EN ;MAKE AN ENABLE PULSE
NOP
SETB EN
NOP
MOV TH0,#HIGH(-1000)
MOV TL0,#LOW(-1000)
LCALL DELAY_2
LCALL DELAY
;LCALL GUI_DATA
INC R1
LJMP KT_OPEN
START_CHANGE:
MOV A,R5
CJNE A,#1,NHAP_LAI_PASS_CU
MOV R5,#00H
MOV 70H,60H
MOV 71H,61H
MOV 72H,62H
MOV 73H,63H

MOV R4,#0
MOV DPTR,#DATACODE2
PINGMOI:
MOV A,R4
MOVC A,@A+DPTR
LCALL GUI_DATA
INC R4
CJNE R4,#15,PINGMOI
POP ACC
POP 04H
MOV DATABUS,#0C0H ; First following character will
appear on second
ACALL GUI_LENH
MOV A,#11111110B
LCALL GUI_DATA ; 2 KHOANG TRANG
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#00110110B
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#01010011B
LCALL GUI_DATA
MOV A,#01101111B
LCALL GUI_DATA
MOV A,#11111110B
LCALL GUI_DATA
MOV A,#01111110B
LCALL GUI_DATA ; DAU - >
EXIT_DUNG:

LCALL DELAY
LCALL DELAY
LCALL DELAY
LJMP CHANGE_PASS
;*******************
; LAP TRINH QUET BAN PHIM NAY QUA HAY KHONG CHE VAO DAU DUOC
QUET_PHIM:
PUSH 07H ; R7 DUOC DUNG DE LUU TRU CAC GIA
TRI COT
SCAN:
MOV A,#0EFH ;QUET COLUMN0
MOV R7,#0 ;R7 = i
CONT:
MOV P0,A ;PORT2 NOI VOI BAN PHIM
MOV A,P0 ;read row
JNB ACC.0,ROW_0
JNB ACC.1,ROW_1
JNB ACC.2,ROW_2
JNB ACC.3,ROW_3
RL A ;prepare to conect next col to
ground
INC R7
CJNE R7,#4,CONT ;4 col is conected to ground one
after another
SJMP SCAN
ROW_0: ;row = 0,col = 7
MOV A,R7
ADD A,#0 ;A = 0+R7
SJMP EXIT
ROW_1: ;row = 1,col = R7

DJNZ R4,$
DJNZ R2,LOOPDE1
POP 2H
POP 4H
RET
DELAY50MS:
PUSH 00H
MOV R0,#50
MOV TMOD,#01H
STINGA:
MOV TH0,#0ECH
MOV TL0,#78H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
DJNZ R0,STINGA
POP 00H
RET
CHAY_CHU:
ACALL LCDINIT ;KHOI TAO LCD
ACALL DISP_SLINE ;HIEN THI DONG 2
MP1: ;XU LY DICH CHUYEN DU LIEU HIEN THI CHO DONG 1
MOV DPTR,#FLINE_DATA ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA
LCD
SHIFT:
ACALL DISP_FLINE ;HIEN THI DONG 1
MOV R1,#10 ;DELAY 500MS
DEL500:
MOV TH0,#HIGH(-10000)

5x7
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND ;GUI LENH RA LCD
MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI HIEN THI,
TAT DICH CHUYEN HIEN THI
ACALL SENDCOMMAND ;GUI LENH RA LCD
RET
;***************************************************
SENDCOMMAND: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA
LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_ENA
SENDDATA:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_ENA: ;TAO XUNG ENABLE DE CHUYEN THONG TIN
(COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI
NHAN THONG TIN GUI DEN
;*************************************************************
MOV TH0,#HIGH(-1000) ;LENH NAY DUOC THAY THE CHO DOAN MA
KIEM TRA DUOI DAY KHI

MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN
LCD
ACALL SENDDATA ;GUI DU LIEU RA LCD
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#16,WR1 ;KIEM TRA NAP DAY DU DU LIEU CHO MOT
DONG MAN HINH - 16 CHU
RET
;***************************************************
DELAYA:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
FLINE_DATA: ;DU LIEU HIEN THI DONG 1
DB ' '
DB 'CHAO MUNG BAN DEN VOI HE THONG KHOA SO BANG PASSWORD
CUA NHOM 3 '
DB ' '
SLINE_DATA: ;DU LIEU HIEN THI DONG 2
DB ' Welcome '
THONG_BAO:
ACALL LCDINIT1 ;KHOI TAO LCD
ACALL DISP_SLINE1 ;HIEN THI DONG 2
MP11: ;XU LY DICH CHUYEN DU LIEU HIEN THI CHO DONG 1
MOV DPTR,#FLINE_DATA1 ;NAP DIA CHI VUNG DU LIEU DONG 1 CUA
LCD
SHIFT1:
ACALL DISP_FLINE1 ;HIEN THI DONG 1

MOV TL0,#LOW(-100)
ACALL DELAY1 ;DELAY 100US
MOV DATABUS,#38H ;CODE = 38H - 8 BIT, 16 CHAR/LINE, MATRIX
5x7
ACALL SENDCOMMAND1 ;GUI LENH RA LCD
MOV DATABUS,#0CH ;CODE = 0CH - CHO PHEP LCD HIEN THI
ACALL SENDCOMMAND1 ;GUI LENH RA LCD
MOV DATABUS,#01H ;CODE = 01H - XOA LCD
ACALL SENDCOMMAND1 ;GUI LENH RA LCD
MOV DATABUS,#06H ;CODE = 06H - TU TANG DIA CHI HIEN THI,
TAT DICH CHUYEN HIEN THI
ACALL SENDCOMMAND1 ;GUI LENH RA LCD
RET
;***************************************************
SENDCOMMAND1: ;CTC GUI LENH (SENDCOMMAND) VA GUI DU LIEU (SENDDATA) RA
LCD
CLR RS ;RS = 0 - GUI LENH
SJMP PULSE_EN1
SENDDATA1:
SETB RS ;RS = 1 - GUI DU LIEU
NOP
PULSE_EN1: ;TAO XUNG ENABLE DE CHUYEN THONG TIN
(COMMAND/DATA) VAO LCD
CLR RW ;RW = 0 - WRITE LCD MODE
CLR EN ;EN = 0
NOP
SETB EN ;EN = 1 - XUNG ENABLE
NOP
;KIEM TRA CO BAO BAN (BUSY FLAG) DE DAM BAO HOAN TAT VIEC LCD GHI
NHAN THONG TIN GUI DEN

WR11:
MOV A,R0 ;NAP OFFSET
MOVC A,@A+DPTR ;LAY DU LIEU TU VUNG DU LIEU
MOV DATABUS,A ;CHUYEN DU LIEU CAN GUI RA PORT DEN
LCD
ACALL SENDDATA1 ;GUI DU LIEU RA LCD
INC R0 ;CHUYEN SANG DU LIEU KE TIEP
CJNE R0,#16,WR11 ;KIEM TRA NAP DAY DU DU LIEU CHO MOT
DONG MAN HINH - 16 CHU
RET
;***************************************************
DELAY1:
MOV TMOD,#01H
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
;***************************************************
FLINE_DATA1: ;DU LIEU HIEN THI DONG 1
DB ' '
DB ' Ban Da Quen Pass . Vui Long Dung Ngoai Cho . Neu La
Trom Thi Vui Long Pha Khoa . Hi'
DB ' '
SLINE_DATA1: ;DU LIEU HIEN THI DONG 2
DB ' Keypad Locked '
AAAA:
MOV DATABUS,#0C0H
LCALL GUI_LENH
MOV A,#11111110B ;HIEN THI DAU CACH

DATACODE2:
DB ' Nhap Pass Moi '
END


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status