có sơ đồ nguyên lý, sơ đồ khối và lưu đồ giải thuật, mạch in và code đầy đủ cho KHÓA số điện tử hiện thị LCD dùng 89c51 ...............................................................................................................................................................
Trang 1KHÓA SỐ ĐIỆN TỬ
MỤC LỤC
DANH MỤC CÁC HÌNH VẼ
Trang 2LCD Liquid Crystal Display
PIN Personalised Identity Number
Trang 3CHƯƠNG 1: GIỚI THIỆU CHUNG
Mạch khóa số có chức năng chính là điều khiển các tiếp điểm relay, giao tiếp với người
sử dụng thông qua một bàn phím và hiển thị trên một màn hình LCD
Clear: Xóa mã số vừa nhập
Cancel: Hủy bỏ thao tác đang thực hiện
Màn hình LCD: hiển thị thông tin thao tác đang thực hiện với người sử dụng
Trang 4Người dùng cũng có thể thay đổi mã số của hệ thống nhằm nâng cao tính bảo mật Để thực hiện, cần nhập vào mã số hiện tại.
Nếu nhập sai quá số lần cho phép, mạch cũng sẽ báo động tương tự trường hợp mở khóa
Nếu nhập đúng, người dùng có thể nhập vào mã mới thay cho mã cũ Hệ thống sẽ phát tiếng bíp khi mã đã được đổi hoặc đã nhập đúng mã cũ nhưng không muốn thay đổi mã mới
Trang 5CHƯƠNG 2: CÁC LINH KIỆN CƠ BẢN
1 Vi điều khiển AT89C51:
Có khả năng điều khiển linh hoạt theo chương trình nạp vào Giúp giảm kích thước so với việc dùng IC, tăng độ ổn định của hệ thống
Thuộc họ vi xử lý 8051, có 32 cổng I/O, với 4KB Flash ROM
Hình 2.1 Vi điều khiển AT89C51
Hình 2.2 Sơ đồ chân AT89C51
Chức năng các chân:
Trang 6- Port 0 (P0.0 – P0.7) có số chân từ 32 đến 39 Có 2 chức năng là port xuất nhập dữ liệu hoặc bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7).
- Port 1 (P1.0 – P1.7) có số chân từ 1 đến 8 Có chức năng xuất nhập dữ liệu
- Port 2 (P2.0 – P2.7) có số chân từ 21 đến 28 Có 2 chức năng là port xuất nhập dữ liệu hoặc bus địa chỉ byte thấp và bus dữ liệu đa hợp (A8 – A15)
- Port 3 (P3.0 – P3.7) có số chân từ 10 đến 17 Có 2 chức năng là port xuất nhập dữ liệu hoặc các tín hiệu điều khiển
- PSEN: Chân số 29, cho phép bộ nhớ chương trình
- ALE: Chân số 30, cho phép chốt địa chỉ
- EA: Chân số 31, truy xuất ngoài Phải được nối lên Vcc nếu sử dụng ROM nội hoặc nối GND nếu sử dụng ROM ngoài
- XTAL1 – 2: Chân 18, 19 Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock, cung cấp cho chip hoạt động
- RST: Chân số 9 Thiết lập lại trạng thái ban đầu cho hệ thống, là tín hiệu nhập, tích cực mức cao
- Vcc và GND số chân lần lượt là 40 và 20 Có chức năng cung cấp nguồn hoạt động cho chip Điện áp hoạt động tối đa 6,6 v và dòng tiêu thụ 20 mA
2 Bàn phím:
Bàn phím được tạo thành từ 16 nút nhấn 4 chân, nối với nhau theo dạng ma trận phím,
vì thế có thể giảm còn 8 kết nối tới vi điều khiển
Trang 8Hình 2.5 LCD 16x2
Hình 2.6 Sơ đồ chân LCD 16x2
a) Chức năng các chân:
- Vcc và GND: Nguồn cung cấp cho LCD hoạt động
- VEE: Điều chỉnh độ tương phản
- RS: Chọn thanh ghi lệnh hoặc dữ liệu
- RW: Chọn thanh ghi đọc hoặc ghi dữ liệu
Trang 9- E: Cho phép.
- DB0 – DB7: Các bit dữ liệu
b) Tập lệnh điều khiển LCD:
Trang 11c) Giao tiếp giữa vi điều khiển và LCD:
LCD cần 7 hoặc 11 đường I/O để giao tiếp, phụ thuộc vào chế độ dữ liệu của LCD 4 hoặc 8 bit
Để thiết lập lệnh hoặc gửi dữ liệu, cần tạo 1 xung cạnh xuống trên trân E của LCD Ngược lại, để đọc dữ liệu hoặc trạng thái, cần tạo một xung cạnh lên trên chân E Mỗi khi LCD thực hiện một lệnh đều cần một khoảng thời gian để hoàn thành, phụ thuộc vào từng loại LCD, vì thế cần kiểm tra trạng thái bạn của LCD từ cờ báo bận (Busy Flag) hoặc tạo một thời gian delay đủ để hoàn thành lệnh
Để hiển thị ký tự tại một vị trí bất kỳ, cần đặt chế độ LCD nhận lệnh, và gửi địa chỉ con trỏ vị trí đó đến bus dữ liệu LCD Địa chỉ con trỏ:
80 81 82 … 8FC0 C1 C2 … CF
Trang 132 Sơ đồ nguyên lý:
a) Khối nguồn:
Ngõ vào là điện áp AC được giảm áp qua máy biến áp trước khi vào mạch Cầu diode
để chỉnh lưu dòng điện xoay chiều sang một chiều IC 7805 và 7812 tạo điện áp cố định cho ngõ ra mạch
Ngõ ra có hai mức điện áp là 5 và 12 v
Hình 3.1 Khối nguồn
b) Khối xử lý:
Trang 14Hình 3.2 Khối xử lý
Mạch gồm:
- AT89C51 điều khiển hệ thống
- Port 0 nối với bàn phím 4x4
- Port 1 nối với bus dữ liệu LCD
- P2.0 nối với mạch đóng mở
- P2.1 nối với mạch âm thanh
- Mạch dao động thạch anh cho AT89C51 hoạt động
- Chân RST nối với mạch reset
Trang 16Mạch hiển thị gồm LCD 16x2, biến trở chỉnh độ tương phản hiển thị và mạch nối LED đèn nền trên LCD.
e) Khối âm thanh:
Hình 3.5 Sơ đồ nguyên lý khối âm thanh
Gồm linh kiện chính là Buzzer và khuếch đại BJT giúp tín hiệu từ mạch xử lý đủ mạnh cho Buzzer tạo ra âm thanh
Trang 19CHƯƠNG 4: KẾT QUẢ MÔ PHỎNG VÀ THỰC TẾ
1 Kết quả mô phỏng:
Mô phỏng hệ thống trên Proteus:
Hình 4.1 Mạch mô phỏng
Đúng Báo động Sai
Quá số lần sai cho phép?
Sai
Sai
Đúng Đúng
Đúng
Sai Khóa
Về chương trình chính Hiện LCD
Sai
Đúng
Đúng Sai
Đếm số lần nhập sai
So sánh với mật mã cũ
Lưu vào bộ nhớ tạm thời
Nhập phím số?
Đặt chế độ hiển thị cho LCD, quét phím Chương trình đổi mật mã
Trang 20Hình 4.2 Mô phỏng LCD
2 Mạch thực tế:
Hình 4.3 Mặt trên mạch thực tế
Trang 21Hình 4.3 Mặt dưới mạch thực tế
Trang 22- Dùng ROM ngoài lưu mật mã.
- Tăng độ bảo mật bằng cách thêm lớp bảo mật
- Cần chỉnh sửa chương trình cho hệ thống hoạt động ổn định hơn
- Thêm khối báo động thay cho việc dùng chung với mạch âm thanh
Trang 23TÀI LIỆU THAM KHẢO
Nguyễn Tăng Cường, Phan Quốc Thắng (2004), Cấu trúc và lập trình họ vi điều khiển 8051, Nhà xuất bản khoa học và kỹ thuật
Trang 24PHỤ LỤC
Mã nguồn chương trình:
Trang 25MOV KEYVAL,#0MOV KEYPORT,#11111110B CALL READ_COL
JB FLAG_KEY,EXIT_SCANMOV KEYVAL,#4
MOV KEYPORT,#11111101B CALL READ_COL
JB FLAG_KEY,EXIT_SCANMOV KEYVAL,#8
MOV KEYPORT,#11111011B CALL READ_COL
JB FLAG_KEY,EXIT_SCANMOV KEYVAL,#12
MOV KEYPORT,#11110111B CALL READ_COL
EXIT_SCAN:
RETREAD_COL:
CLR FLAG_KEY
JB COL1,NEXTCOLJNB COL1,$
SETB FLAG_KEY
Trang 26CLR RWSETB ENCLR ENRETWRITE_COM:
LCALL WAIT_LCDMOV DATABUS,ACLR RS
CLR RWSETB ENCLR ENRETWAIT_LCD:
MOV 23H, #150DDELAY: MOV 22H, #255DDJNZ 22H, $
DJNZ 23H, DELAYRET
CLEAR_LCD:
MOV A,#01HLCALL WRITE_COMRET
;===========MAIN==========
Trang 27LCALL WRITE_COMSCAN_DATA:
LCALL SCAN_KEYCJNE A,#0AH,KEY_CLEARCJNE R1,#6,RE_PINLJMP CHECK_PINKEY_CLEAR:
CJNE A,#0BH,KEY_CANCELLJMP RE_PIN
KEY_CANCEL:
CJNE A,#0CH,KEY_UNLOCKLCALL CLEAR_LCDMOV A,#0CH
LCALL WRITE_COMLCALL WELCOMELJMP MAIN
KEY_UNLOCK:
CJNE A,#0DH,KEY_LOCKLJMP SCAN_DATAKEY_LOCK:
CJNE A,#0EH,KEY_PINLJMP SCAN_DATAKEY_PIN:
CJNE A,#0FH,KEY_DATALJMP SCAN_DATAKEY_DATA:
MOV @R0,A
Trang 28LCALL WRITE_COMMOV DPTR,#UNLOCK_2LCALL DATA_DISPLCALL BEEP_1SLCALL TEMPLJMP LOOP_UNLOCKCORRECT_PIN:
CLR RELAYLCALL CLEAR_LCDMOV A,#0CH
LCALL WRITE_COMMOV A,#82H
LCALL WRITE_COMMOV DPTR,#UNLOCK_3LCALL DATA_DISPMOV A,#0C2HLCALL WRITE_COMMOV DPTR,#UNLOCK_4LCALL DATA_DISPLCALL BEEPLCALL DELAY_2LCALL BEEPLJMP MAIN
;=========PIN===========PIN:
Trang 29MOV R0,#50HMOV A,@R0CJNE A,40H,INCORRECT_CURRENTINC R0
MOV A,@R0CJNE A,41H,INCORRECT_CURRENTINC R0
MOV A,@R0CJNE A,42H,INCORRECT_CURRENTINC R0
MOV A,@R0CJNE A,43H,INCORRECT_CURRENTINC R0
MOV A,@R0CJNE A,44H,INCORRECT_CURRENTINC R0
MOV A,@R0CJNE A,45H,INCORRECT_CURRENTLJMP CORRECT_CURRENT
INCORRECT_CURRENT:
Trang 30LCALL SCAN_KEYCJNE A,#0AH,N1LJMP N7N1:
CJNE A,#0BH,N2LCALL CLEAR_LCDLJMP LOOP_NEWN2:
CJNE A,#0CH,N3LCALL CLEAR_LCDLJMP CANCEL_PINN3:
CJNE A,#0DH,N4LJMP N7N4:
CJNE A,#0EH,N5LJMP N7N5:
CJNE A,#0FH,N6LJMP N7N6:
MOV @R0,AINC R0INC R1MOV A,#'*'
Trang 31MOV A,#80HLCALL WRITE_COMMOV DPTR,#PROJECT_DATALCALL DATA_DISP
MOV A,#0C4HLCALL WRITE_COMMOV DPTR,#PROJECT_DATA_2LCALL DATA_DISP
RET
;========BEEP========
BEEP:
SETB SPKLCALL DELAY_2CLR SPK
RETBEEP_1S:
Trang 32MOV A,#3CH LCALL WRITE_COM MOV A,#0CH
LCALL WRITE_COMMOV A,#06H
LCALL WRITE_COM MOV A,#01H
LCALL WRITE_COMRET
WELCOME:
MOV A,#85HLCALL WRITE_COMMOV DPTR,#WELCOME_DATALCALL DATA_DISP
RET
;====DISPLAY LCD DATA====DATA_DISP:
Trang 33MOV R0,#50H; Vị trí lưu PIN tạm thời
MOV R1,#00H; Biến đếm số PIN
UNLOCK_3:
DB 'CORRECT PIN!*'RET
UNLOCK_4:
DB 'UNLOCKED!*'RET
PIN_1:
DB 'CURRENT PIN:*'RET
PIN_4:
DB 'NOT CHANGE!*'RET
END
0.83%