Đồ án môn vi điều khiển mạng máy tính: Mạch khóa số điện tửThiết kế hệ thống1.Sơ đồ khố tổng thể hệ thống2.Các khối chức năng của hệ thốngThiết kế và thi công1.Sơ đồ mạch cơ bản2.Nguyên lý hoạt động3. Sơ đồ thuật toán
BỘ THÔNG TIN VÀ TRUYỀN THÔNG TRƯỜNG CAO ĐẲNG CNTT HỮU NGHỊ VIỆT – HÀN KHOA: CÔNG NGHỆ ĐIỆN TỬ-VIỄN THÔNG ` MÔN : ĐỒ ÁN VI ĐIỀU KHIỂN ĐỀ TÀI: Mạch khóa số điện tử Giảng viên hướng dẫn: Dương Tuấn Quang Sinh viên thực : Nguyễn Phúc Tăng Lớp: CCVT07A Đà Nẵng, tháng 12 năm 2016 Lời nói đầu Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, văn minh đại Kỹ thuật vi điều khiển phát triển ứng dụng rộng rãi giới nhiều lĩnh vực khác nhau, khắc phục vấn đề khí Ứng dụng kỹ thuật vi điều khiển phát triển cần thiết xã hội đại Điện tử trở thành ngành khoa học đa nhiệm vụ Nó đáp ứng nhu cầu cần thiết hoạt động đời sống ngày.Một nhu cầu vấn đề bảo mật Mỗi cá nhân, gia đình, hay quan có vấn đề cần bảo mật Và để bảo mật phải có hệ thống bảo mật Trước nhu cầu khóa số điện tử giải pháp dùng để bảo mật hiệu tiện lợi Tuy em cố gắng thực đồ án tốt có thể, không tránh thiếu sót, mong quý Thầy Cô góp ý thông cảm cho thiếu sót em Em xin chân thành cảm ơn Thầy cô !!! Mục Lục Lời mở đầu Lời mở đầu Chương 1: Giới thiệu đề tài Chương 2: Thiết kế hệ thống Chương 3: Thiết kế thi công .16 Tài liệu tham khảo .23 Chương 1: Giới thiệu đề tài Giới thiệu Khóa số nói chung loại khóa để bảo vệ thiết bị, tài sản….mà muốn mở phải tác động đến số mà ta cài đặt trước có loại khóa số thị trường có khóa số khí khóa số điện tử - Khóa số khí : mở khóa hay khóa lại ta phải xoay vòng số khóa cho dãy số hợp với mở khóa - Khóa số điện tử : mở khóa ta phải nhập mật dãy số liên tiếp nhau, nhập dãy số mở khóa Ở em xin giới thiệu đề tài khóa điện tử với số yêu cầu thiết bị khóa thông dụng: - Tính an toàn: phải có chức bảo mật cao - Dễ sử dụng - Có thể thay đổi bảo mật cần thiết - Hệ thống vận hành ổn định, tuổi thọ cao Chức hệ thống Hệ thống gồm chuổi mã số từ đến 9, độ dài mật mã không 10 số có người phân quyền sử dụng biết Có hệ thống phím gồm 15 phím, 10 số mật có phím chức năng: phím Enter, phím Đổi mã, Hệ thống hiển thị trực quan qua LCD 16x2A, có đèn chiếu sáng điều kiện môi trường tối Có hệ thống báo động nhập sai nhiều lần (ở em thiết kế lần, sau lần nhập sai LCD hiển thị sai mã, kích hoạt hệ thống báo động) Có chức thay đổi mật cần thiết, mật mặc định ban đầu 123456 Hoạt động hệ thống Thay đổi mật cho người sử dụng: - Ấn phím thay đổi mật khẩu, hệ thống hiển thị LCD ta nhập mật nhấn phím xác nhận Nhập mật khẩu: - Lcd hiển thị nhập mật khẩu, người sử dụng nhập mã thông qua bàn phím, nhấn Enter để xác nhận nhập xong, nhập LCD hiển thị “ MO KHOA”, nhập sai LCD hiển thị:” SAI MA, NHAP LAI”,sai lần kích hoạt hệ thống báo động - Đèn sang màu xanh báo hiệu cửa mở Chương 2: Thiết kế hệ thống Sơ đồ khố tổng thể hệ thống Khối giao tiếp hiển thị thông tin Khối điều khiển Thiết bị chấp hành Khối giao tiếp hiển thị thông tin : dùng để đưa tín hiệu, thông số tới khối điều khiển Khối điều khiển tiếp nhận thông tin, xử lý thông tin Xuất tín hiệu để điều khiển thiết bị khác Thiết bị chấp hành động cơ, rơle để điều khiển thiết bị cửa khóa, em sử dụng led Các khối chức hệ thống 2.1 Khối xử lý trung tâm Chức năng: Đóng vai trò đầu não hệ thống,tiếp nhận tín hiệu từ bàn phím so sánh mã, hiển thị LCD.Từ đưa tín hiệu điều khiển đến cho khối mạch báo động tương ứng Sử dụng chip ATMEGA328 Khối vi điều khiển, đóng vai trò quan trọng hệ thống để điều khiển hệ thống khóa số Khối VĐK bao gồm mạch tạo dao động thạch anh, mạch Reset để reset hệ thống lại trạng thái ban đầu Các chân VĐK kết nối với khối khác động cơ, bàn phím, khối hiển thị Toàn liệu mà ta thiết kế để điều khiển hệ thống khóa số chứa nhớ VĐK 2.1.1 Đặc điểm ATMEGA328 Hiệu suất cao, điện thấp 8-bit vi điều khiển (ATMEGA328P-PU) lập trình với nạp khởi động Arduino Optiboot - 8-Bit lõi - 20MHz - 32K flash (bộ nhớ chương trình) - 1K EEPROM (lưu trữ không dễ bay hơi) Electrically Eraseble Programmable Read Only Memory: giống ổ cứng mini – nơi ta đọc ghi liệu vào mà lo bị cúp điện giống liệu SRAM - 2K RAM (bộ nhớ thời gian chạy làm việc) Random Access Memory: giá trị biến ta khai báo lập trình lưu - 2.7 V ~ 5,5 V Cung cấp điện áp - 23 kỹ thuật số I / O Pins - × 10 bit chuyển đổi A / D 2.1.2 Sơ lược chân ATMEGA 328 Arduino UNO cấp nguồn 5V thông qua cổng USB cấp nguồn với điện áp 7-12V DC giới hạn 6-20V Thường cấp nguồn pin vuông 9V hợp lí ta sẵn nguồn từ cổng USB Nếu cấp nguồn vượt ngưỡng giới hạn trên, ta làm hỏng Arduino UNO Với 23 chân sử dụng cho kết nối vào i/O, 32 ghi, timer/counter lập trình, có gắt nội ngoại (2 lệnh vector ngắt Ngoài sử dụng biến đổi số tương tự 10 bít (ADC/DAC) mở rộng tới kênh, hoạt động với chế độ nguồn, sử dụng tới kênh điều chế độ rộng xung (PWM) • GND (Ground): cực âm nguồn điện cấp cho Arduino UNO Khi dùng thiết bị sử dụng nguồn điện riêng biệt chân phải nối với • 5V: cấp điện áp 5V đầu Dòng tối đa cho phép chân 500mA • 3.3V: cấp điện áp 3.3V đầu Dòng tối đa cho phép chân 50mA • Vin (Voltage Input): để cấp nguồn cho Arduino UNO, ta nối cực dương nguồn với chân cực âm nguồn với chân GND • IOREF: điện áp hoạt động vi điều khiển Arduino UNO đo chân Và dĩ nhiên 5V Mặc dù không lấy nguồn 5V từ chân để sử dụng chức cấp nguồn • RESET: việc nhấn nút Reset board để reset vi điều khiển tương đương với việc chân RESET nối với GND qua điện trở 10KΩ • chân Serial: (RX) (TX): dùng để gửi (transmit – TX) nhận (receive – RX) liệu TTL Serial Arduino Uno giao tiếp với thiết bị khác thông qua chân Kết nối bluetooth thường thấy kết nối Serial không dây Nếu không cần giao tiếp Serial, không nên sử dụng chân không cần thiết • Chân PWM (~): 3, 5, 6, 9, 10, 11: cho phép bạn xuất xung PWM với độ phân giải 8bit (giá trị từ → 28-1 tương ứng với 0V → 5V) hàm analogWrite() Có thể điều chỉnh điện áp chân từ mức 0V đến 5V thay cố định mức 0V 5V chân khác • Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài chức thông thường, chân dùng để truyền phát liệu giao thức SPI với thiết bị khác Arduino UNO có chân analog (C0 → C5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp khoảng 0V → 5V Với chân AREF board, đưa vào điện áp tham chiếu sử dụng chân analog Tức ta cấp điện áp 2.5V vào chân dùng chân analog để đo điện áp khoảng từ 0V → 2.5V với độ phân giải 10bit Đặc biệt, Arduino UNO có chân A4 (SDA) A5 (SCL) hỗ trợ giao tiếp I2C/TWI với thiết bị khác Bit PA0 Tn RXD Chức chuyển đổi Ngõ vào liệu nối tiếp PA1 TXD Ngõ liệu nối tiếp PA2 INT0 Ngõ vào ngắt ngồi PA3 INT1 Ngõ vào ngắt PA4 T0 Ngõ vào timer/couter PA5 T1 Ngõ vào timer/couter 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ối vào 2chân XTAL1 XTAL2 VĐK 2.1.3 Chế độ định thời Timer a) Giới thiệu Timer Timer chuỗi flip-flop chia đôi tần sồ nối tiếp với nhau, chúng nhận tín hiệu vào làm nguồn xung nhịp Giá trị nhị phân flip - flop timer xem đếm số xung nhịp khởi động timer Ví dụ timer 16 bit đếm từ 0000H đến FFFFH.Cờ báo tràn lên số đếm tràn từ FFFFH đến 0000H b) Thanh ghi chế độ Timer Thanh ghi TMOD chứa hai nhóm bit dùng để đặt chế độ làm việc cho timer timer Bit Tn GATE C/ T Timer 1 Mô tả Bit điều khiển cổng Khi GATE=1 định thời hoạt động chân INTO=1 Bit chọn chức đếm định thời C/ T =1:bộ định thời l đếm M0 M1 GATE 1 C/ T =0:bộ định thời l định khoảng thời gian Bit chọn chế độ hoạt động định thời Bit chọn chế độ hoạt động định thời Bit điều khiển cổng Khi GATE=1 định thời hoạt động chân INTO=1 10 C/ T Bit chọn chức đếm định thời C/ T =1:bộ định thời l đếm M0 0 M1 2.2 Bàn phím C/ T =0:bộ định thời l định khoảng thời gian Bit chọn chế độ hoạt động định thời Bit chọn chế độ hoạt động định thời Bàn phím gồm nút Mỗi nút phận đóng mở khí Các mã bàn phím tạo tạo trực tiếp phép quét hàng quét cột Bàn phím gồm 16 phím xắp xếp theo kiểu 4x4 ( với cột dòng) Chức năng: tín hiệu đầu vào cho xử lý trung tâm, nhập mã đóng mở cửa Sơ đồ nguyên lý ma trận bàn phím: Các phím chức mở cửa, khóa cửa, đổi mật 2.3 Khối hiển thị LCD Yêu cầu đặt khối hiển thị thân thiện với người sử dụng a) Giới thiệu 11 LCD (Liquid Crystals Display ) - Màn hình tinh thể lỏng, sở vật lý để LCD hiển thị thông tin đặc tính vật liệu chế tạo nên LCD, tức Liquid Crystals (thạch anh lỏng) Các tinh thể bình thường chúng thể rắn với định hướng đặc biệt Khi sản xuất LCD, nhà sản xuất tích hợp chíp điều khiển (HD44780) bên lớp vỏ đưa chân giao tiếp cần thiết Các chân đánh số thứ tự đặt tên bên : b) Chức chân LCD Chân số Tên Vss Chức Chân nối đất cho LCD, thiết kế mạch ta nối chân Vdd với GND mạch điều khiển Chân cấp nguồn cho LCD, thiết kế mạch ta nối Vee chân với VCC=5V mạch điều khiển Chân dùng để điều chỉnh độ tương phản LCD Chân chọn ghi (Register select) Nối chân RS với logic “0” (GND) logic “1” (VCC) để chọn ghi Rs + Logic “0”: Bus D0-D7 nối với ghi lệnh IR LCD (ở chế độ “ghi” - write) nối với đếm địa 12 LCD (ở chế độ “đọc” - read) + Logic “1”: Bus D0-D7 nối với ghi liệu DR bên LCD Chân chọn chế độ đọc/ghi (Read/Write) Nối chân R/w R/W với logic “0” để LCD hoạt động chế độ ghi, nối với logic “1” để LCD chế độ đọc Chân cho phép (Enable) Sau tín hiệu đặt lên bus D0-D7, lệnh chấp nhận có xung cho phép chân E E + Ở chế độ ghi: Dữ liệu bus LCD chuyển vào(chấp nhận) ghi bên phát xung (high-to-low transition) tín hiệu chân E + Ở chế độ đọc: Dữ liệu LCD xuất D0-D7 phát cạnh lên (low-to-high transition) chân E LCD giữ bus đến chân E xuống mức thấp Tám đường bus liệu dùng để trao đổi thông tin với MPU Có chế độ sử dụng đường bus : 7-14 D0-D7 + Chế độ bit : Dữ liệu truyền đường, với bit MSB bit D7 + Chế độ bit : Dữ liệu truyền đường từ D4 tới D7, bit MSB D7 c) Các ghi Chíp HD44780 có ghi bit quan trọng : Thanh ghi lệnh IR (InstructorRegister) ghi liệu DR (Data Register) Thanh ghi IR : ta nạp vào ghi IR chuỗi bit, chíp HD44780 tra bảng mã lệnh địa mà IR cung cấp thực lệnh Thanh ghi DR : Thanh ghi DR dùng để chứa liệu bit để ghi vào vùng RAM DDRAM CGRAM (ở chế độ ghi) dùng để chứa liệu từ vùng RAM gởi cho MPU (ở chế độ đọc) + Vùng Ram hiển thị DDRAM(Display Data RAM): 13 Đây vùng RAM dùng để hiển thị, nghĩa ứng với địa RAM ô kí tự hình bạn ghi vào vùng RAM mã bit, LCD hiển thị vị trí tương ứng hình kí tự có mã bit mà cung cấp.Vùng RAM có 80x8 bit nhớ, nghĩa chứa 80 kí tự mã bit + Vùng RAM chứa kí tự đồ họa CGRAM (Character Generator RAM) Nhà sản xuất dành vùng có địa byte cao 0000 để người dùng tạo mẫu kí tự đồ họa riêng Tuy nhiên dung lượng vùng hạn chế: Ta tạo kí tự loại 5x8 điểm ảnh, kí tự loại 5x10 điểm ảnh Địa tử 40h đến 7Fh 2.4 Khối nguồn Chức năng: cung cấp nguồn hoạt động cho hệ thống vi điều khiển củng hệ thống báo động Sử dụng 7805 cung cấp cho vi điều khiển lcd Dùng nguồn 5V xoay chiều đưa vào cầu điốt để tạo điện áp chiều, qua tụ san phẳng cho điện áp phẳng Dùng IC7805 để ổn định điện áp đầu cho mạch khối điều khiển 2.5 Bộ reset 14 Chân RESET kết nối sau: Với Vi điều khiển sử dụng thạch anh có tần số fzat = 12MHz sử dụng C=10µF R=1KΩ 2.6 Bộ tạo dao động Mạch tạo dao động bên chip 8051 ghép với thạch anh bên hai chân XTAL1 XTAL2 Tần số danh định thạch anh 12MHz Sơ đồ nguyên lý 2.7 thạch anh tụ gốm Khối báo động LED Chức năng: nhận tín hiệu từ xử lý trung tâm, phát tín hiệu báo động âm Hệ thống báo động: cảnh báo nhập sai mật lần Thông qua hệ thống chông báo động LED hiển thị kết từ lệnh bàn phím đưa vào 15 Chương 3: Thiết kế thi công Sơ đồ mạch Nguyên lý hoạt động Khi muốn mở cửa phải gõ mật với độ dài ký tự Nếu gõ màng hình LCD mở cửa Và gõ sai hình LCD hiển thị chữ nhập sai mật Nếu nhập mật sai lần liên tiếp hệ thống báo động Muốn đổi mật ta nhấn nút đổi mật bàn phím, ta phải nhập mật mới, nhập xong nhấn nút xác nhận theo dẫn màng hình LCD, mật đổi 16 Sơ đồ thuật toán Bắt đầu Khởi Tạo Biến, Mảng, LCD Quét phím Nh ập phí m Mở cửa – đổi pass END Mã nguồn chương trình #include #include #include intcoi=12; int led1=A0; int led2=A1; LiquidCrystallcd(10, 11, A2, A3, A4, A5);//4,6,11,12,13,14 char Data[20]; 17 Kiểm tra số lần >=3 const byte Usercount = 3; charMatKhau[1][6] = { "111111" char * User[Usercount] = { "Mo Cua","Dung ","KhoaCua"}; bytecurrentCommand = 0; byteMasterCount = 6; bytegood_Count = 0; intdem; int user = 0; boolPassword_is_good, User_is_good; charcustomKey; const byte ROWS = 4; const byte COLS = 4; char keys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', 'F', '#'}, byterowPins[ROWS] = {2,3,4,5}; //connect to the row pinouts of the keypad bytecolPins[COLS] = {6,7,9,8}; //connect to the column pinouts of the keypad //initialize an instance of class NewKeypad Keypad customKeypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() Serial.begin(9600); lcd.begin(16, 2); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); 18 pinMode(coi, OUTPUT); void loop() digitalWrite(led1, LOW); digitalWrite(led2, HIGH); lcd.setCursor(1,0); lcd.print("Nhap Pass Word"); customKey = customKeypad.getKey(); if (customKey) Data[currentCommand] = customKey; lcd.setCursor(currentCommand,1); lcd.print(Data[currentCommand]); currentCommand++; if(currentCommand == MasterCount) delay(300); while(user != 2) for(int count = 0; count