KHÓA số điện tử DÙNG PIC (có code và layout) .................................... KHÓA số điện tử DÙNG PIC (có code và layout) .................................... KHÓA số điện tử DÙNG PIC (có code và layout) .................................... KHÓA số điện tử DÙNG PIC (có code và layout) .................................... KHÓA số điện tử DÙNG PIC (có code và layout) ....................................
Trang 1ĐỒ ÁN 2
KHÓA SỐ ĐIỆN TỬ DÙNG PIC
I
Trang 2DANH MỤC CÁC HÌNH VẼ VIII DANH MỤC CÁC BẢNG BIỂU IX DANH MỤC CÁC TỪ VIẾT TẮT X
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1
1.1 Đặt vấn đề: 1
1.2 Chức năng của hệ thống: 1
CHƯƠNG 2 TÌM HIỂU LINH KIỆN 2
2.1 Khối nguồn 2
2.2 Khối vi điều khiển 3
2.2.1 Giới thiệu về PIC16F877A 4
2.2.2 Các đặc điểm của PIC16F877A 4
2.2.3 Tổ chức bộ nhớ: 7
2.3 Khối hiển thị 11
2.3.1 Giới thiệu về màn hình LCD 16x2 11
2.3.2 Chức năng các chân: 12
2.3.3 Các lệnh điều khiển LCD 16x2 13
2.4 Khối bàn phím 14
2.5 Khối báo động 15
2.6 Khối điều khiển động cơ đóng mở cửa 16
CHƯƠNG 3 THIẾT KẾ MẠCH 17
II
Trang 33.3 Nguyên lý hoạt động của mạch: 19
CHƯƠNG 4 THỰC THI PHẦN CỨNG 20
4.1 Lưu đồ mô tả thực thi 20
4.2 Phần mềm điều khiển giao tiếp 21
4.3 Mô tả quá trình hoạt động của mạch 21
4.4 Sơ đồ mạch in 22
4.5 Mạch hoàn chỉnh thực tế 22
CHƯƠNG 5 NHẬN XÉT VÀ KẾT LUẬN 24
5.1 Ưu và nhược điểm của đề tài 24
5.2 Khả năng ứng dụng đề tài và phát triển 24
TÀI LIỆU THAM KHẢO 25
III
Trang 4Hình 2-1: Sơ đồ nguồn trong mô phỏng 3
Hình 2-2: Khối vi điều khiển dưới dạng mô phỏng 4
Hình 2-3: Sơ đồ khối PIC16F877A 6
Hình 2-4: Sơ đồ chân PIC16F877A 7
Hình 2-5: Sơ đồ khối bộ nhớ chương trình 9
Hình 2-6: Sơ đồ khối bộ nhớ dữ liệu của PIC16F877A 10
Hình 2-7: Hình ảnh mô phỏng PIC16F887A trên protues v7.1 11
Hình 2-8: Hình ảnh thực tế của PIC16F877A 11
Hình 2-9: Khối hiển thị trên mạch mô phỏng 12
Hình 2-10: Sơ đồ chân của LCD 16x2 13
Hình 2-11: Khối bàn phím 4x4 trên mô phỏng 15
Hình 2-12: Ma trận phím 4x4 trong thực tế 15
Hình 2-13: Khối báo động trên mô phỏng 16
Hình 2-14: Còi beep trong thực tế 16
Hình 2-15: Khối điều khiển động cơ trên mô phỏng 17
Hình 3-1: Sơ đồ khối 18
Hình 3-2: Sơ đồ mạch 19
Hình 4-1: Lưu đồ mô tả thực thi 21
Hình 4-2: Mạch hoàn chỉnh thực tế 23
IV
Trang 5V
Trang 6VI
Trang 7SFG Special Funtion Register
GPR General Purpose Register
VII
Trang 8CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Đặt vấn đề:
Với nền dân trí thấp như hiện nay khiến cho xã hội khó có thể phân biệt thật giảtrắng đen, và con người càng khó phân biệt tốt xấu Để tránh tình trạng nhữngngười lười biếng lao động mà đi trộm cắp thì các loại khoá được ra đời
Các loại khoá mà con người sử dụng chìa khoá để mở là Khoá Cơ Khí Khoá cơ
là loại khoá có thanh kim loại ở giữa để ngăn cản hành vi mở cửa, rương màkhông được cho phép, và người chủ dùng chìa để mở Tuy nhiên khoá này cónhiều hạn chế như dễ bị bẻ khoá, phá khoá Vì vậy, cùng với sự phát triển củanền KH-KT, khóa số điện tử ra đời và bắt đầu thay thế khóa cơ khí Không dễdàng bị phá bởi các lực vật lý, không phải mang nhiều chìa khóa và tránh việcthất lạc chìa khóa Thay đổi theo ý người sử dụng và không ngừng thay đổi tiến
bộ để tránh kẻ gian có kiến thức về công nghệ cao
KHÓA SỐ ĐIỆN TỬ
Trang 9
Hình 1-1: Khoá hiện đại của hãng samsung
1.2 Chức năng của hệ thống:
- Đặt mật khẩu 5 đến 10 ký tự và có thể thay đổi mật khẩu tuỳ ý
- Hiển thị lên màn hình LCD khi nhập và thay đổi mật khẩu
- Có cảnh báo khi mở khoá, hoặc khi nhập sai mật khẩu quá 3 lần
KHÓA SỐ ĐIỆN TỬ
Trang 10
2.1 Khối nguồn
Hình 2-1: Sơ đồ nguồn trong mô phỏng
Khối nguồn lấy nguồn AC-220V từ điện lưới, dùng biến áp hạ áp xuống 9V-AC, khiqua chỉnh lưu được DC-12V, dùng IC 7805 ổ áp cung cấp mức điện áp cho toàn mạch
là +5V
Biến áp: Biến đổi điện áp AC 220v thành điện áp AC 12v
Cầu chỉnh lưu: Chỉnh lưu điện áp AC thành điện áp DC
Mạch lọc: Sau khi chỉnh lưu ta thu được điện áp DC không phẳng, nếu không có tụ
lọc thì điện áp này chưa thể dùng được vào các mạch điện tử , do đó trong các mạchnguồn, ta phải lắp thêm các tụ lọc vào bộ chỉnh lưu
KHÓA SỐ ĐIỆN TỬ
Trang 11
2.2 Khối vi điều khiển
Hình 2-2: Khối vi điều khiển dưới dạng mô phỏng
KHÓA SỐ ĐIỆN TỬ
Trang 12
2.2.1 Giới thiệu về PIC16F877A
PIC16F887A là một loại linh kiện hoạt động dựa theo các dòng code mà người dùng
viết, code được đưa vào file có đuôi hex Code được nạp vào PIC16F887A bằng mạchnạp code Linh kiện này có các chân được nối với màn hình LCD, động cơ, phím sốgiúp các khối này kết hợp với nhau tạo thành một mạch hoàn chỉnh Là 1 phần vôcùng quan trọng trong mạch
2.2.2 Các đặc điểm của PIC16F877A
- PIC16F877A là vi điều khiển thuộc họ PIC16Fxxx gồm 35 lệnh có đồ dài 14bit
- Mỗi câu lệnh được hoạt động trong 1 chu kì xung clock (trừ một số trường hợpnhư lệnh nhảy, lệnh gọi chương trình con thì cần 2 chu kì) Với 1 chu kì lệnh
là 200ns
- Điện áp hoạt động là: 2V tới 5,5V
- Tốc độ tối đa: 20MHz
- Bộ nhớ chương trình là 8Kx14 bit
- Bộ nhớ dữ liệu 368x8 byte RAM
- Bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte
- Số PORT I/O là 5 với 33 pin I/O
- Hai bộ định thời 8 bit Timer 0 và Timer 2
- Một bộ định thời 16 bit Timer 1
- Khả năng đọc viết được 100.000 lần trên bộ nhớ flash, 1.000.000 lần với bộ nhớEEPROM
- Dữ liệu có thể lưu trữ trên 40 năm
- Bảo mật mã chương trình
KHÓA SỐ ĐIỆN TỬ
Trang 13
Hình 2-3: Sơ đồ khối PIC16F877A
KHÓA SỐ ĐIỆN TỬ
Trang 14Hình 2-4: Sơ đồ chân PIC16F877A
PIC16F877A có 40 chân Trong đó có một số chân đa dụng 5 cổng RA, RB,
RC, RD, RE Sau đây là đặc điểm của các chân RB, RC, RD Vì RA, RE khôngdùng nên không đề cập
PORTB:
PORTB (RPB) gồm 8 pin I/O TRISB là thanh ghi đảm nhận đọc viết Một sốchân của PORTB cũng được dùng trong lúc nạp chương trình vi điều khiển vớicác chế độ nạp khác nhau
PORTB ( 06H, 106H) : chứa giá trị các pin trong PORTB TRISB (86H, 186H) : điều khiển xuất nhập
OPTION_REG (81H, 181H) : điều khiển ngắt ngoại vi và bộTimer0
PORTC:
KHÓA SỐ ĐIỆN TỬ
Trang 15
PORTC (RPC) gồm 8 pin I/O TRISC là thanh ghi đảm nhận đọc viết PORTCcũng có các chức năng của bộ so sánh, bộ Timer1, bộ PWM và các chuẩn giaotiếp nối tiếp SSP, SPI, USART, I2C.
PORTC (07H) : chứa giá trị các pin trong PORTC
TRISC ( 87H) : điều khiển đọc viết
2.2.3 Tổ chức bộ nhớ:
Có hai bộ nhớ trong cấu trúc của PIC16F877A
Bộ nhớ chương trình (Program Memory) :
- Bộ nhớ chương trình của vi điều khiển PIC16F887A là bộ nhớ flash, códung lượng 8K word (1word = 14bit) Do đó bộ nhớ có thể chứa được8*1024 = 8192 lệnh
- Khi vi điều khiển được reset, bộ đếm sẽ chỉ đến địa chỉ 000H (Resetvector)
- Khi có ngắt xảy ra, bộ đếm sẽ chỉ đến địa chỉ 0004H (Interrupt vector)
KHÓA SỐ ĐIỆN TỬ
Trang 16
Hình 2-5: Sơ đồ khối bộ nhớ chương trình
Bộ nhớ dữ liệu (Data Memory) :
- Bộ nhớ dữ liệu là bộ nhớ EEPROM được chia thành nhiều bank Đối vớiPIC16F877A bộ nhớ dữ liệu chia thành 4 bank, mỗi bank có dung lượng 128byte Bao gồm:
- Sơ đồ cụ thể của bộ nhớ dữ liệu PIC16F877A như sau:
KHÓA SỐ ĐIỆN TỬ
Trang 17
Hình 2-6: Sơ đồ khối bộ nhớ dữ liệu của PIC16F877A
KHÓA SỐ ĐIỆN TỬ
Trang 18
Hình 2-7: Hình ảnh mô phỏng PIC16F887A trên protues v7.1
Hình 2-8: Hình ảnh thực tế của PIC16F877A
KHÓA SỐ ĐIỆN TỬ
Trang 19
KHÓA SỐ ĐIỆN TỬ
Trang 20
2.3.2 Chức năng các chân:
Hình 2-10: Sơ đồ chân của LCD 16x2
Chân 1 (VSS): là chân GND
Chân 2 (VDD): chân nguồn 5V
Chân 3 (VEE): điều khiển độ tương phản của màn hình LCD ( được gắn vào chân 2biến trở)
Chân 4 (RS): Nếu RS ở mức thấp thì thanh ghi mà lệnh được chọn để cho phép ngườidùng gửi một lệnh Nếu RS ở mức điện áp cao thì thanh ghi dữ liệu cho phép ngườidùng gửi dữ liệu cần hiển thị
Chân 5 (RW): Khi ở mức 0, cho phép người dùng ghi thông tin lên LCD hay đọcthông tin khi mức 1
Chân 6 (E): Chân cho phép sử dụng LCD
Chân 7 đến 14 (tương ứng D0 đến D7): Đây là 8 chân dữ liệu 8 bit, được dùng để gửithông tin lên hoặc đọc nội dung của các thanh ghi
Bảng 2-1: Chức năng của chân RS và RW theo nhu cầu
KHÓA SỐ ĐIỆN TỬ
Trang 21
RS RW Chức năng
0 0 Ghi vào thanh ghi RS để ra lệnh cho thanh ghi
0 1 Đọc cờ bận ở DB7 và gái trị của bộ đếm địa chỉ ở DB0-DB6
2.3.3 Các lệnh điều khiển LCD 16x2
Một số lệnh tiêu biểu được sử dụng trong đồ án này:
LCD_PutCmd(line_a): In kí tự ra dòng a (a là 1 hoặc 2)
Printf(LCD_PutChar,"abcd"): In kí tự abcd ra màn hình Tối đa 16 kí tự
LCD_PutCmd(Clear_Scr): Xóa màn hình Dùng trước khi thay đổi các kí tự trên mànhình Để không lỗi có chồng kí tự hoặc hiển thị sai
2.4 Khối bàn phím
Hình 2-11: Khối bàn phím 4x4 trên mô phỏng
KHÓA SỐ ĐIỆN TỬ
Trang 22
- Là kết nối giữa người dùng với hệ thống Dựa vào bàn phím, ta có thể nhập mật
khẩu, sửa đổi, mở khoá, đóng khoá Khối này gồm 12 phím hiển thị "0-9, * , #"
và 4 phím mở, đóng, đổi mật khẩu, xác nhận
Hình 2-12: Ma trận phím 4x4 trong thực tế
KHÓA SỐ ĐIỆN TỬ
Trang 23
2.5 Khối báo động
Hình 2-13: Khối báo động trên mô phỏng
Nếu kẻ gian nhập mật khẩu sai quá 3 lần, thì còi báo của hệ thống sẽ báo động bằngcòi điện áp 5V
Hình 2-14: Còi beep trong thực tế
KHÓA SỐ ĐIỆN TỬ
Trang 24
2.6 Khối điều khiển động cơ đóng mở cửa
Hình 2-15: Khối điều khiển động cơ trên mô phỏng
Dùng cầu H để điều khiển đóng mở khoá Sử dụng thêm 4 transistor 2N1711 để điềukhiển dòng điện
KHÓA SỐ ĐIỆN TỬ
Trang 25
KH I BÀNỐI ĐIỀUPHÍM
KH I BÁOỐI ĐIỀU
Đ NGỘNG CƠ
KH IỐI ĐIỀUNGU N DCỒN DC KH I HI N THỐI ĐIỀU ỂN Ị
LCD
Trang 263.2 Sơ đồ mạch
Hình 3-2: Sơ đồ mạch
3.3 Nguyên lý hoạt động của mạch:
Khối nguồn sẽ cấp điện 12V cho khối vi điều khiển làm khối này hoạt động đồng thờilàm khối LCD hoạt động theo Người dùng sẽ nhập mật khẩu thông qua khối bàn phím
KHÓA SỐ ĐIỆN TỬ
Trang 27
Nếu mật khẩu đúng, khối vi điều khiển sẽ cấp điện cho khối động cơ để đóng mở của.Ngược lại, nếu mật khẩu sai 3 lần sẽ cấp điện cho khối báo động.
Trang 28
Hình 4-1: Lưu đồ mô tả thực thi
4.2 Phần mềm điều khiển giao tiếp
CCS C Compiler 4.0:
Là phần mềm biên dịch ngôn ngữ C sang file abc.hex Có 2 cách để viết code cho PIC
là ngôn ngữ C và Assembly Tác giả chon ngôn ngữ C vì nó dễ học, không tốn nhiềuthời gian cho người mất căn bản, dễ chia sẻ và học hỏi thêm vì ngôn ngữ C được nhiềungười sử dụng
Sai mật khẩu ilần
So sánh mật
khẩu
So sánh mậtkhẩu
Báo động
Kết thúc
ĐÚNG
ĐÚ
NG
i = 4
Trang 294.3 Mô tả quá trình hoạt động của mạch
- Khi mạch mới khởi động, khối thạch anh sẽ cấp xung cho PIC 16F877A Kết hợp vớinguồn DC bên ngoài sẵn sẽ làm PIC hoạt động quét các phím bấm liên tục Các phímbấm đang thiết lập ở mức 1, có người dùng nhấn vào sẽ trở về mức 0 và xác nhận phím
đó được bấm Nếu người dùng bấm các phím bấm theo thứ tự đúng, chương trình bêntrong sẽ xử lý và mở cửa cho người dùng kèm một tiếng loa báo hiệu Ngược lại, nếungười dùng bấm sai 3 lần thì còi sẽ báo hiệu liên tục cho đến khí người ở bên trong nhàtắt đi (cái này tùy ý người dùng mà viết code thích hợp)
- Khi mật khẩu đúng, tín hiệu MỞ = 1 và ĐÓNG = 0 thì transistor Q1 và Q4 mở,transistor Q2, Q3 đóng Khi đó dòng điện từ nguồn qua Q1 rồi qua động cơ qua Q4xuống đất làm cho động cơ quay theo chiều thuận
Khi tín hiệu MỞ = 0 và ĐÓNG = 1 thì transistor Q1, Q4 đóng, transistor Q2, Q3 mở.Khi đó dòng điện từ nguồn qua Q3 qua động cơ rồi qua Q2 xuống GND làm cho động
cơ quay theo chiều nghịch
KHÓA SỐ ĐIỆN TỬ
Trang 30
4.4 Sơ đồ mạch in
Hình 4-2: Mạch in
KHÓA SỐ ĐIỆN TỬ
Trang 314.5 Mạch hoàn chỉnh thực tế
Hình 4-3: Mạch hoàn chỉnh thực tế
KHÓA SỐ ĐIỆN TỬ
Trang 32Hình 4-4: Mạch thực tế đang chạy
KHÓA SỐ ĐIỆN TỬ
Trang 33
5.1 Ưu và nhược điểm của đề tài
o Ưu điểm
- Giao diện người dùng dễ sử dụng thông qua màn hình LCD
- Tính chính xác khi xác nhận mật khẩu cao
- Có nguồn dự phòng tránh trường hợp mất điện
o Nhược điểm:
- Bàn phím nhỏ khó bấm
5.2 Khả năng ứng dụng đề tài và phát triển
Do hạn chế trên mô hình nên còi báo động và động cơ chỉ mang tính chất tượngtrưng Còn còi nên thay thế bằng linh kiện có thể báo qua sóng điện thoại chochủ ở xa
Đối với sự phát triển nhanh như hiện nay đã cho ra đời nhiều loại khóa vượt trộihơn như quét thẻ từ, soi võng mạc, nhận diện giọng nói, khuôn mặt Nhìn nhậnvào thực tế thì khóa số điện tử không thoái trào nhưng cũng không phát triểnthêm Các cảm ứng theo nhiệt độ cơ thể người đang dần thống trị so với nhấnnút dùng lực nên hướng phát triển đề tài khá hạn chế
TÀI LIỆU THAM KHẢO
Tài liệu trên mạng internet :
http://documents.tips/documents/vi-dieu-khien-pic16f877a.html
KHÓA SỐ ĐIỆN TỬ
Trang 35
#define LCD_ENABLE_PIN portd.0
#define LCD_RS_PIN portd.1
#define LCD_RW_PIN portd.2
#define LCD_DATA4 portd.4
#define LCD_DATA5 portd.5
#define LCD_DATA6 portd.6
#define LCD_DATA7 portd.7
Trang 36if (check!=0)
{
write_eeprom(0x10,read_eeprom(0x10)+1); sairoi();
}
else
KHÓA SỐ ĐIỆN TỬ
Trang 39printf(LCD_PutChar,"Pass sai roi!");
Trang 51KHÓA SỐ ĐIỆN TỬ