1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài Tập Lớn Đồ Án Thiết Kế Hệ Thống Số Đề Tài Hệ Thống Khóa Số Điện Tử.pdf

43 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG  BÀI TẬP LỚN ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ ĐỀ TÀI HỆ THỐNG KHÓA SỐ ĐIỆN TỬ Giảng viên hướng dẫn Nguyễn Văn Thành Sinh viên thực hiện Nhóm Nguyễ[.]

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG - - BÀI TẬP LỚN ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ ĐỀ TÀI: HỆ THỐNG KHÓA SỐ ĐIỆN TỬ Giảng viên hướng dẫn: Nguyễn Văn Thành Sinh viên thực hiện: Nguyễn Văn Hiếu– B16DCDT075 Vương Quốc Huy– B16DCDT114 Đỗ Anh Tuấn – B17DCDT201 Nhóm: Hà Nội, 2021 MỤC LỤC CHƯƠNG : GIỚI THIỆU CHUNG VỀ ĐỀ TÀI VÀ MỤC TIÊU I Giới thiệu chung về đề tài .3 II Mục tiêu và phát triển .3 CHƯƠNG : HỆ THỐNG PHẦN CỨNG I Các linh kiện Biến trở LCD 16*2 Bàn phím 4*4 II FPGA 10 Giới thiệu .10 Cấu trúc FPGA 10 FPGA Logic Block: .11 FPGA Interconnect: .11 Module FPGA Spartan-6 XC6SLX9 .13 CHƯƠNG 3: HỆ THỐNG PHẦN MỀM 14 I Hoạt động của mạch 14 Hoạt đợng của mạch khóa cửa điện tử key phím 4×4 .14 II Sơ đồ trạng thái 15 Trạng thái đóng –mở cửa .15 Trạng thái đổi mật khẩu .16 3.Trạng thái reset 17 4.Sản phẩm sau hoàn thiện 18 5.Lập trình cho hệ thống 18 CHƯƠNG 4: KẾT LUẬN 43 CHƯƠNG : GIỚI THIỆU CHUNG VỀ ĐỀ TÀI VÀ MỤC TIÊU I Giới thiệu chung về đề tài Trong một xã hội hiện đại, phát triển của ngành điện tử viễn thông một yêu cầu không thể thiếu để thúc đẩy nền kinh tế phát triển góp phần nâng cao đời sớng xã hội Ngày nay, thế giới, điện tử viễn thông không ngừng phát triển với tốc độ cao thâm nhập ngày sâu vào tất các lĩnh vực của đời sống xã hội Cùng với phát triển vũ bão đó, ngành điện tử viễn thông Việt Nam nỗ lực hết sức đường tìm chỗ đứng cho mình Trong đó, lĩnh vực bảo mật một mảng lớn mà cần quan tâm Chính thế, với mục đích làm quen bước đầu với việc thiết kế mạch điện tử nói chung với hệ thớng an tồn, bảo mật nói riêng, chúng em chọn đề tài “hệ thớng khóa mã điện tử ” để nghiên cứu thực hiện Hệ thống cho phép ta quản lý hạn chế số người vào theo mã số khu vực cần bảo mật với đợ an tồn cao Trong quá trình thực hiện đề tài, cố gắng nhiên những hạn chế về thời gian tìm hiểu, kiến thức kinh nghiệm thực tế nên chúng em không tránh khỏi nhiều thiếu sót Chúng em mong nhận những đóng góp của thầy và các bạn để đè tài của chúng em hoàn thiện và nhiều chức II Mục tiêu phát triển Mục tiêu là hoàn thành hệ thống khóa cửa điện tử Với chức : Đóng mở cửa nhập pass, điều khiển đóng mở việc dùng động - Nhập pass ký tự - Đổi pass Đề tài khơng lớn song về mặt ngun lý có thể phát triển thành ứng dụng quản lý theo thẻ từ, mã vạch,mã hoá khu vực đặc biệt cần phải có may tính hiện đại với CSDL,ngồi mật mã cịn kiểm tra tần sớ giọng nói camera kiểm tra hình ảnh mà hiện cần thiết Vì thế, đới với chúng em là bước sở để nghiên cứu những ứng dụng lớn sau CHƯƠNG : HỆ THỐNG PHẦN CỨNG I Các linh kiện Biến trở Hình Biến trở Biến trở volume sử dụng rộng rãi các mạch cơng suất, âm li, đợsáng Có tên tiếng Anh potentionmeter Biến trở hoạt động điện trở có khả thay đổi điện trở vặn núm điều chỉnh Thông số sản phẩm:  Độ dài núm chỉnh: 15mm  Đường kính núm chỉnh: 7mm  Loại biến trở: Volume đơn, có chân Thông số điện:  Tổng trở kháng: 1KΩ - 1MΩ (Tùy giá trị biến trở)  Tổng dung sai kháng chiến: ± 20%  Đặc tính trở kháng loại: A, B, C, D  Điện áp hoạt động tối đa: B Linear: DC 50V / AC 25V  Công suất định mức: B Linear: 0.5W  Tiếng ồn: Dưới 100mV  Chống cách điện: Hơn 100MΩ  Điện áp chịu được: phút ở AC 250 V Tính chất lý:  Góc quay toàn bộ: 300 ± 10 (độ)  Khoảng cách quay: 10 ~ 200 gf.cm  Sức mạnh dừng quay: 3.0Kgf.cm  Độ bền kéo: đẩy: 7.0kgf phút Độ bền:  Vòng quay: 10.000 chu kỳ LCD 16*2 LCD (Liquid Crystal Display) sử dụng nhiều ứng dụng của Vi Điều Khiển LCD có nhiều ưu điểm so với dạng hiển thị khác Nó có khả hiển thị kí tự đa dạng, trực quan (chữ, sớ kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao thức giao tiếp khác nhau, tốn tài nguyên hệ thống giá thành rẻ… Màn hình text LCD1602 xanh lá sử dụng driver HD44780, có khả hiển thị dòng với dòng 16 ký tự, màn hình có độ bền cao, phổ biến, nhiều code mẫu và dễ sử dụng thích hợp cho những người mới học và làm dự án Hình LCD 16*2 THÔNG SỐ KỸ THUẬT:  Điện áp hoạt động là V  Kích thước: 80 x 36 x 12.5 mm  Chữ đen, nền xanh lá  Khoảng cách giữa hai chân kết nối là 0.1 inch tiện dụng kết nối với Breadboard  Tên các chân ghi ở mặt sau của màn hình LCD hổ trợ việc kết nối, dây điện  Có đèn led nền, có thể dùng biến trở PWM điều chình độ sáng để sử dụng ít điện  Có thể điều khiển với dây tín hiệu  Có bộ ký tự xây dựng hổ trợ tiếng Anh và tiếng Nhật, xem thêm HD44780 datasheet để biết thêm chi tiết SƠ ĐỒ CHÂN LCD 16*2 Hình Sơ đồ chân LCD 16*2 Bàn phím 4*4 Hình Bàn phím 4*4 Ma trận phím 4×4 gờm có 16 nút bấm sắp xếp theo ma trận hàng, cột Các nút bấm một hàng một cột nới với nhau, vậy ma trận phím 4×4 có tởng cợng ngõ Ma trận phím 4×4 cho phép bạn nhập chữ số, chữ cái, ký hiệu vào bộ điều khiển qua đó dùng để điều khiển một thiết bị ngoại vi nào đó Các bạn có thể mắc thêm trở treo (thơng thường 10K) cho nút bấm để nút bấm hoạt động ổn định THÔNG SỐ KỸ THUẬT:  Loại phím mềm  Độ dài cáp: 8cm  Nhiệt độ hoạt động ~ 70 độ C  Đầu nối chân  Kích thước Dài x Rộng: 4x4cm SƠ ĐỜ MẠCH BÀN PHÍM MATRIX 4X4 Hình Sơ đồ mạch bàn phím Trên là hình ảnh sơ đồ nguyên lý của module bàn phím 4x4 Tuy có đến 16 nút nhấn, nghĩa là nếu làm một cách thông thường (dùng chân digital) thì phải cần đến 16 chân Arduino để đọc Nhưng với bàn phím này, cần dùng chân (4 chân hàng ngang (row), và chân cột dọc (column)) Cách quét và xác định phím: Để phát hiện một phím nhấn, bộ điều khiển nối đất tất các hàng cách đặt giá trị lên chốt ra, sau đó đọc các cột Nếu dữ liệu đọc ở các cột có giá trị: colum3-colum0=1111 tức là k có phím nào nhấn và quá trình này tiếp tục cho đến phát hiện phím nhấn Ví dụ colum3-colum1=1101 có nghĩa là phím ở cột colum nhấn Sauk hi một phím nhấn phát hiện, bộ điều khiển chuyển qua quá trình xác định phím nhấn đó Bắt đầu từ hàng cùng, bộ điều khiển nối đất hàng đó cách đưa vào điện áp thấp cho hàng row0, sau đó tiến hành đọc các cột Nếu dữ liệu đọc có giá trị hoàn toàn tức nào không có phím nào ở hàng này kích hoạt thì uqa trình này chuyển sang hàng tiếp theo Bộ điều khiển lại nối đất hàng tiếp theo, đọc giá trị ở các cột và kiểm tra xem có giá trị nào không Quá trình này xác định có hàng xác định Sau xác đinh xong hàng có phím nhấn nhiệm vụ tiếp theo là tìm xem cột nào có phím nhấn Việc này khá đơn giản bởi vì vi điều khiển biết thời điểm nào hàng nào và cột nào truy cập FPGA II Giới thiệu: FPGA viết tắt của thuật ngữ tiếng anh “Field programmable Gate Array”, nghĩa là Mảng cổng lập trình dạng trường FPGA thuộc họ ASIC lập trình Cấu trúc FPGA Kiến trúc của FPGA gờm thành phần sau: Khối I/O (hay gọi Pad pin FPGA), Khối kết nối (Interconnection/Switch Matrix), Khối logic cấu hình (CLB – Configurable Logic Blocks)  Chức của thành phần sau:  Khối CLB: thực thi chức logic, cung cấp tính tốn phần tử nhớ sử dụng hệ thống số CLBs phần tử cấu thành FPGA, nguồn tài ngun logic tạo nên mạch logic đờng bợ lẫn không đồng bộ Một CLB gồm một mạch tở hợp có thể lập trình (cịn gọi LUT), một Flip-Flop một chốt (latch) LUT(Look up table) khới logic có thể 10 if RowKey0=x"1" then return x"31"; elsif RowKey0=x"2" then return x"32"; elsif RowKey0=x"4" then return x"33"; elsif RowKey1=x"1" then return x"34"; elsif RowKey1=x"2" then return x"35"; elsif RowKey1=x"4" then return x"36"; elsif RowKey2=x"1" then return x"37"; elsif RowKey2=x"2" then return x"38"; elsif RowKey2=x"4" then return x"39"; acscii cua nut bam elsif RowKey3=x"1" then return x"2a"; elsif RowKey3=x"2" then return x"30"; elsif RowKey3=x"4" then return x"23"; else return x"20"; end if; 29 tra ve ma end Check_KeyPad; function Delay(Value_Count:integer; Time_delay:integer) return integer is begin if Value_Count=Time_delay then return 0; else return Value_Count+1; end if; end Delay; COMPONENT KeyPad PORT( I_COL : IN std_logic_vector(3 downto 0); I_CLK_100 : IN std_logic; I_CLK_10k : IN std_logic; Q_ROW : OUT std_logic_vector(3 downto 0); Q_KEY_R1 : OUT std_logic_vector(3 downto 0); Q_KEY_R2 : OUT std_logic_vector(3 downto 0); Q_KEY_R3 : OUT std_logic_vector(3 downto 0); Q_KEY_R4 : OUT std_logic_vector(3 downto 0) ); END COMPONENT; COMPONENT LCD PORT( I_CLK : IN std_logic; 30 I_Status : IN std_logic_vector(3 downto 0); I_Status_Change_Pass : IN std_logic_vector(1 downto 0); I_DATA : IN std_logic_vector(7 downto 0); Q_RS : OUT std_logic; Q_RW : OUT std_logic; Q_En : OUT std_logic; Q_DATA : OUT std_logic_vector(7 downto 0) ); END COMPONENT; COMPONENT Freq_Divider PORT( I_CLK : IN std_logic; Q_CLK_100 : OUT std_logic; Q_CLK_1k : OUT std_logic; Q_CLK_10k : OUT std_logic; Q_CLK_100k : OUT std_logic ); END COMPONENT; TYPE STATE is (open_door,change_pass,change_success,close_door, import_1,import_2,import_3,import_4, wait_import_1,wait_import_2,wait_import_3,wait_impo rt_4, 31 enter_pass,check_pass,error,success); TYPE ArrKeyPad is array (3 downto 0) of STD_LOGIC_VECTOR(3 downto 0); Type Pass is array (3 downto 0) of STD_LOGIC_VECTOR(7 downto 0); Signal L_KeyPad: ArrKeyPad; Signal L_PassImport:Pass:=(others=>x"00"); Signal L_Pass:Pass:=(x"32",x"32",x"32",x"32"); Signal L_State: STATE:=open_door; Signal L_Status:STD_LOGIC_VECTOR(3 downto 0):="0000"; Signal L_State_KEY:STD_LOGIC:='1'; Signal L_Change_Pass:STD_LOGIC_VECTOR(1 downto 0):="00"; Signal L_DATA_TO_LCD:STD_LOGIC_VECTOR(7 downto 0):=(others=>'0'); Signal L_CLK_100:STD_LOGIC; Signal L_CLK_1k:STD_LOGIC; Signal L_CLK_10k:STD_LOGIC; Signal L_CLK_100k:STD_LOGIC; begin Inst_KeyPad: KeyPad PORT MAP( I_COL => I_COL, I_CLK_100 => L_CLK_100, I_CLK_10k => L_CLK_10k, Q_ROW => Q_ROW, Q_KEY_R1 =>L_KeyPad(0) , 32 Q_KEY_R2 =>L_KeyPad(1) , Q_KEY_R3 =>L_KeyPad(2), Q_KEY_R4 =>L_KeyPad(3) ); Inst_LCD: LCD PORT MAP( I_CLK => I_CLK, I_Status =>L_Status , I_Status_Change_Pass => L_Change_Pass, I_DATA => L_DATA_TO_LCD, Q_RS => Q_RS, Q_RW => Q_RW, Q_En => Q_En, Q_DATA => Q_DATA ); Inst_Freq_Divider: Freq_Divider PORT MAP( I_CLK => I_CLK, Q_CLK_100 => L_CLK_100, Q_CLK_1k => L_CLK_1k, Q_CLK_10k => L_CLK_10k, Q_CLK_100k => L_CLK_100k ); process(L_KeyPad(0)(3),L_CLK_1k) variable V_Count:integer:=0; variable V_Count_Time:integer:=0; begin if rising_edge(L_CLK_1k) then case L_State is 33 - Open Door -when open_door => L_Status

Ngày đăng: 19/03/2023, 18:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w