Khi muốn mở cửa thì phải gõ đúng mật khẩu với độ dài 8 ký tự. Nếu gõ đúng thì động cơ sẽ quay thuận, và cửa sẽ mở. Và gõ sai thì màn hình LCD hiển thị chữ nhập sai mật khẩu.
Khi động cơ quay hết hành trình, công tắc hành trình mở xong đóng, khi đó LCD thông báo đã mở xong.
Nếu nhập mật khẩu sai 3 lần liên tiếp thì hệ thống báo động sẽ hoạt động, thông qua chân RB5.
Trong khi mở xong, nếu nhấn khóa thì động cơ sẽ quay và cửa khóa lại, động cơ quay thì nút công tắc hành trình khóa xong sẽ mở, và nếu công tắc hành trình mở xong đóng lại thì động cơ ngừng quay, LCD báo mở
121 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4068 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Khóa số sử dụng vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Nhận xét của giáo viên hướng dẫn
Thái Nguyên, Ngày Tháng Năm 20...
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
Nhận xét của giáo viên chấm
Thái Nguyên, Ngày Tháng Năm 20...
Giáo Viên hướng dẫn
(Ký ghi rõ họ tên)
Mục Lục
LỜI MỞ ĐẦU
Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta đã và đang một ngày thay đổi, văn minh và hiện đại hơn. Sự phát triển của kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao, tốc độ nhanh, gọn nhẹ là những yếu tố rất cần thiết góp phần cho hoạt động của con người đạt hiệu quả.
Điện tử đang trở thành một ngành khoa học đa nhiệm vụ.Nó đã đáp ứng được những nhu cầu cần thiết trong hoạt động đời sống hằng ngày.Một trong những nhu cầu đó là vấn đề bảo mật . Mỗi một cá nhân, một gia đình, hay một cơ quan đều có các vấn đề cần được bảo mật. Và để bảo mật được thì phải có một hệ thống bảo mật. Trước nhu cầu đó khóa số bằng điện tử là một giải pháp dùng để bảo mật rất hiệu quả và tiện lợi.
Ngoài ra do nhu cầu ứng dụng lý thuyết đã học ở trường vào trong cuộc sống nên chúng em đã chọn đề tài “khoá số” để làm đồ án môn học.
Sau một thời gian học tập và rèn luyện, với sự chỉ bảo tận tình của thầy giáo Nguyễn Tuấn Linh cùng sự trợ giúp của các bạn trong nhóm và các tài liệu có liên quan,chúng em đã hoàn thành xong đề tài.
Đồ án đã hoàn thành xong, nhưng không thể tránh nhiều thiếu sót mong thầy cô giáo thông cảm và chỉ bảo thêm để đề tài có thể ứng dụng rộng rãi trong thực tế.
Chúng em xin chân thành cảm ơn các thầy cô!
CHƯƠNG 1 : PHÂN TÍCH HỆ THỐNG
ĐẶT VẤN ĐỀ:
Với mỗi gia đình, cơ qua, xí nghiệp, trường học hay bất cứ nơi đâu, để bảo vệ tài sản trong phòng. Trên mỗi cánh cửa ra vào được trang bị thêm chiếc khóa . Hiện nay trên thị trường có rất nhiều loại khóa cửa nhưng hầu như đều là khóa cơ khí, các khóa cơ khí này gặp vấn đề lớn đó là tính bảo mật của các khóa này không cao, nên dễ dàng bị phá khóa bởi các chìa khóa đa năng.
Khóa số nói chung là loại khóa để bảo vệ thiết bị, tài sản….mà khi muốn mở ra thì phải tác động đến số mà ta cài đặt trước. có 2 loại khóa số cơ bản hiện nay trên thị trường có đó là khóa số cơ khí và khóa số điện tử.
Khóa số cơ khí : khi mở khóa hay khóa lại thì ta phải xoay các vòng số trên khóa sao cho một dãy các số nào đó cùng hợp với nhau thì mở được khóa
Khóa số điện tử : khi mở khóa thì ta phải nhập đúng mật khẩu là một dãy các số liên tiếp nhau, nếu nhập đúng các dãy số đó thì mở được khóa.
Nhìn chung thì khóa số điện tử sẽ có nhiều ký tự, nhiều mã số để cài đặt hơn, cũng như độ dài của mã số sẽ dài hơn. Vì vậy tính bảo mật của khóa số điện tử cũng cao hơn. Bên cạnh đó, thao tác trên khóa số điện tử cũng thực hiện dễ dàng hơn với các phím bấm, chứ không phải là các vòng xoay ở khóa số cơ khí. Khi thao tác đổi mật khẩu cũng dễ dàng hơn vì thao tác trên các phím bấm.
Khóa số điện tử ngoài tính năng về bảo mật cao, và thao tác dễ dàng còn có tính năng cảnh báo nếu nhập mật mã nhiều sai quá số lần quy định. Với dao diện người dùng, hiển thị các thông báo về nhập mật khẩu, cảnh báo, thay đổi mật khẩu khiến người dùng dễ sử dụng hơn.
GIỚI THIỆU HỆ THỐNG KHÓA SỐ.
Trên thị trường hiện nay có bán rất nhiều loại khóa số điện tử. Hầu hết các loại khóa điện tử đó đều có tính nắng đổi mật mã, cảnh báo. Nhưng lại không có tính năng giao diện người dùng bằng màn hình LCD khiến người dùng khó sử dụng các sản phẩm đó. Thiết bị mà bộ khóa số trên thị trường điều khiển chủ yếu là Roler để đóng, mở chốt cửa.
Đa số khoá kỹ thuật số đang có bán trên thị trường là do Hàn Quốc sản xuất, chủ yếu là loại khoá tay nắm và có giá khá cao.
Khoá sử dụng phương pháp cài đặt mã số (như khoá số của các loại va li hay cặp số) để khoá hoặc mở và người sử dụng có thể cài đặt số bất kỳ. Hệ thống số của khoá được thiết kế như các phím bấm số của điện thoại nên khá tiện lợi khi sử dụng. Bên cạnh loại chỉ có một chức năng khoá bằng mã số, còn có loại kèm theo chức năng khoá bằng chìa. Chìa của loại này cũng đặc biệt hơn các loại thông thường, nó được làm 4 cạnh, khó làm giả như các loại khoá 2 cạnh.
Khoá kỹ thuật số còn có loại mở bằng dấu vân. Loại khoá này có thể đăng ký được 25 hoặc 40 vân tay khác nhau. Như vậy bạn có thể lưu lại rất nhiều vân tay của mọi người trong gia đình vào bộ nhớ của khoá. Khi cho đúng các vân tay có lưu trong bộ nhớ thì cửa sẽ được mở. Phần lớn loại này không sử dụng chìa nữa.
Hình 1.2: khóa số trên thị trường không có giao diện người dùng
Một số loại trên thị trường đã có giao diện người dùng qua những màn hình LCD 16x2 để hiển thị thông tin tới người dùng. Như vậy thì dễ sử dụng hơn các loại khác.
Hình 1.3: khóa số đã trang bị màn hình LCD giao diện người dùng.
CÁC GIẢI PHÁP VÀ CÁCH XÁC ĐỊNH BÀI TOÁN
Phân Tích Và Lựa Chọn Phương Án
Yêu cầu của hệ thống:
Qua tham khảo các sản phẩm khóa số trên thị trường thì yêu cầu của một bộ sản phẩm khóa số thông thường:
Dạo diện người dung dễ sử dụng.
Mật khẩu có độ dài đảm bảo tính bảo mật cao.
Có thể thay đổi được mật khẩu.
Tính năng cảnh báo khi nhập mật khẩu sai 3 lần liên tiếp.
Động cơ quay để điều khiển cửa hết hành trình thì dừng lại.
Hệ thống phải làm việc được ngay cả khi mất điện.
Hệ thống khóa số nhỏ gọn.
Điện áp hoạt động của hệ thống không gây nguy hiểm đến người sử dụng.
Lựa chọn phương án
Với yêu cầu về tính năng như trên, chúng em chọn các thiết bị chính:
Vi điều khiển 16f877 với bộ nhớ eeprom có khả lưu trữ dữ liệu ngay cả khi mất điện.
Màn hình LCD 16x2 với mục đích hiển thị thông tin, giao tiếp vi điều khiển với người dùng
Bàn phím 16 phím có các phím số và phím chức năng đưa đầu vào là mật khẩu, các lệnh đóng mơ cửa tới vi điều khiển.
Động cơ để kéo cánh cửa đóng và mở. Với đề tài này có yêu cầu sản phẩm mô phỏng thực tế, chúng tôi chọn động cơ một chiều công suất nhỏ.
Nguồn dự trữ khi mất điện là nguồn acquy.
Xác Định Bài Toán Và Giới Hạn Của Đề Tài
Xác Định Bài Toán
Điểm quan trọng nhất của chương trình khóa số là thuật toán quét phím, sau đó là lưu và thay đổi mật mã trên eeprom. Còn một số phần khác là hiển thị thông tin ra LCD thì có các lệnh hỗ chợ nên không phức tạp. cuối cùng là đưa tín hiệu ra để điều khiển thiết bị là khóa cửa.
Vì vậy bài toán chính là ta cần quan tâm là :
Thuật toán quét phím
Quá trình lưu mật mã trong eeprom và thay đổi eeprom
Hiển thị thông tin ra màn hình LCD
Giới Hạn Của Đề Tài
Các ràng buộc :
Thông thường hệ thống giao diện với người dùng để ở bên ngoài, nên phải an toàn, tránh được những tác động của ngoại cảnh.
Chi phí của bộ sản phẩm (không có động cơ) không quá 500.000vnđ.
Chịu được quá tải tải khi gặp chướng ngại vật trong thời gian dài.
Áp dụng để điều khiển động cơ có công suất nhỏ.
CHƯƠNG 2 :THIẾT KẾ HỆ THỐNG
2.1. SƠ ĐỒ KHỐI TỔNG THỂ CỦA HỆ THỐNG
Thiết bị chấp hành
Khối điều khiển
Khối giao tiếp và hiển thị thông tin
Hình 1.1: sơ đồ khối khóa số cơ bản.
Khối giao tiếp và 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 các thông tin, và xử lý các thông tin đó. Xuất tín hiệu để điều khiển các thiết bị khác.
Thiết bị chấp hành ở đây có thể là động cơ, có thể là rơle để điều khiển thiết bị chính là cửa hoặc khóa.
2.2. SƠ ĐỒ CALL GRAPH
Controller software
Giao Tiếp LCD
Giao Tiếp EEPROM
Giao Tiếp Bàn Phím
Màn Hình LCD
EEPROM
Bàn Phím
Điều Khiển Động cơ
Động Cơ
Chương Trình Báo Động
Chuông Báo
Hình 2.3 : sơ đồ Call graph giữa phần cứng và phần mềm
2.3. SƠ ĐỒ ĐẶC TẢ CỦA HỆ THỐNG
Thao Tác Gõ Phím
Đổi Mật Mã
Nhập Mật Mã
Khóa Cửa
Mở Cửa
Báo Động
Nhập Mật Mã Cũ
Mật Mã Mới
Đổi Mật Mã
Thao Tác Gõ Phím
Hình 2.2: sơ đồ đặc tả của hệ thống
2.4. CÁC MODUL TRONG HỆ THỐNG
Vi Điều Khiển PIC 16F877a
Báo Động
Động Cơ
Khuếch Đại Tín Hiệu
Bàn Phím Ma Trận 4x4
Khối Nguồn
Màn Hình Hiển Thị LCD
Hình 2.4 : Sơ đồ khối các Modul trong hệ thống
2.4.1 Khối Điều Khiển Trung Tâm
Hình 6: Khối vi điều khiển
Khối vi điều khiển sử dụng vi điều khiển Pic16F877A, nó đóng vai trò hết sức quan trọng trong 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 của VĐK sẽ được kết nối với các khối khác như động cơ, bàn phím, khối hiển thị. Lưu trữ mật khẩu qua bộ nhớ EEPROM có thể lưu trữ ngay khi mất điện. Toàn bộ dữ liệu mà ta thiết kế để điều khiển hệ thống khóa số đều được chứa trong bộ nhớ của VĐK.
2.4.2 Khối Hiển Thị
Khối hiển thị chính là màn hình hiển thị LCD 16x2
Hình 7: Khối hiển thị
Khối hiển thị được dùng là LCD, có 2 chế độ dùng cho LCD là chế độ LCD 16 bit và chế độ 8 bit. Trong bài sử dụng LCD 8 bit thì các chỉ cần sử dụng các chân RW, RS, E, D4 =>D7.
2.4.3 Khối Bàn Phím
Hình 2.8: Ma Trận 16 Phím
Nguyên lý hoạt động của việc quét phím chính là cho các cột bằng 1 và lần lượt các chân nối vơi hàng mức 0. Rồi kiểm tra xem có cột nào bằng 0 hay không, nếu cột nào bằng 0 trong thời điểm một hàng bằng 0 thì phát hiện ra phím đó được bấm.
2.4.4. Khối Khuếch Đại, Động Cơ Và Báo Động
Hệ thống báo động: cảnh báo khi nhập sai mật khẩu quá 3 lần. Thông qua hệ thống chông báo động.
Hình 2.5 : chuông báo động
Bộ khuếch đại tín hiệu và mạch cầu H :dùng để đưa tín hiệu điều khiển động cơ
Hình 2.6 : mạch cầu H khuếch đại tín hiệu
2.4.5 Khối Nguồn
Cung cấp nguồn nuôi cho vi điều khiển hoạt động theo yêu cầu đề tài. ở đây ta tạo ra nguồn 5v cấp cho vi điều khiển.
Hình 10: Khối nguồn cung cấp
2.5. LỰA CHỌN LINH KIỆN
2.5.1. KHỐI ĐIỀU KHIỂN PIC 16F877a
a. Đặc điểm pic 16f877a:
Công nghệ CMOS có đặc tính : công suất thấp, công nghệ bộ nhớ Flash/EEPROM tốc độ cao. Điện áp hoạt động từ 2V đến 5,5V và tiêu tốn năng nượng thấp. phù hợp với nhiệt độ làm việc trong công nghiệp và trong thương mại.
Tốc độ hoạt động :
- DC – 20MHz ngõ vào xung clock
- DC – 200ns chu kỳ lệnh
Dung lượng của bộ nhớ chương trình Flash là 8K x 14words.
Dung lượng của bộ nhớ dữ liệu RAM là 368x8Bytes.
Dung lượng của bộ nhớ dữ liệu EEPROM là 256x8 Bytes.
Bộ nhớ dữ liệu EEPROM cho phép xóa và ghi 1.000.000 lần.
Bộ nhớ EEPROM có thể lưu giữ dữ liệu hơn 40 năm và có thể tự lập trình lại được dưới sự điều khiển của phần mềm.
Số chân : 40 pins. 5 cổng vào ra số RA,RB,RC,RD,RE.
Hình 2.4: Sơ đồ chân của pic 16F877a.
b. Các công vào ra của PIC 16F877a:
Việc điều khiển các cổng vào ra của pic dựa trên việc điều khiển các File thanh ghi. Vì trong đề tài chỉ sử dụng 3 cổng vào ra là PORTB, PORTC, PORTD nên chúng tôi xin đưa ra đặc điểm của các chân.
PORTB và thanh ghi TRISB:
Portb (RPB) gồm 8 pin I/O. thanh ghi điều khiển xuất nhập tương ứng là TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chường trình cho vi điều khiển với các chế độ nào khác nhau. PORTB còn liên quan dến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức năng điện trở kéo lên được điều khiển bởi chương trình.
Ba chân của PORTB được đa hợp với mạch điện gỡ rối bên trong và chức năng lập trình điện áp thấp RB3/PGM, RB6/PGC và RB7PGD.
Mỗi chân của PORTB có điện trở kéo lên. Bit điều khiển RBPU (OPTION_REG) =0 thì có thể mở tất cả các điện trở kéo lên . khi portb được thiết lập là ngõ ra thì sẽ tự động ngắt chức năng điện trở kéo lên , cũng tương tự khi CPU bị reset lúc mới cấp điện.
Bốn chân của portb RB4:RB7 có cấu chúc ngắt thay đổi, chỉ có những chân được thiết lập ở cấu hình là ngõ vào thì mới có chức năng ngắt. các chân ngõ vào là (RB4:RB7) được so sánh với giá trị cũ đã được chốt trong lần đọc trước của portb. Các ngõ ra không trùng nhau của các chân RB4:RB7 được OR lại với nhau để tao ra ngắt ở PORTB với bít cờ báo ngắt RBIF>.
Ngắt này có thể kích hoạt vi điều khiển trở lại trạng thái hoạt động khi nó đang ở chế độ SLEEP. Trong chương trình phục vụ ngắt thì người dùng có thể xóa ngắt bằng các cách khác nhau:
Bất kỳ lệnh đọc hay ghi PORTB sẽ kết thích điều kiện không thích ứng.
Xóa bít cờ RBIF.
Điều kiện không tương thích sẽ tiếp tục làm cờ báo ngắt RBIF bằng 1. Khi đọc PORTB sẽ chấm dứt điều kiện không tương thích và cho phép xóa bít cờ báo ngắt RBIF.
Cấu trúc ngắt thay đổi dùng để thoát khỏi chế độ nghỉ khi có nhấn phím và các hoạt động mà PORTB chỉ được dùng cho cấu trúc thay đổi ngắt.
PORTC và thanh ghi TRISC:
PORTC là port 2 chiều 8 bít. Thanh ghi định hướng là TRISC. Khi bit TRISC=1 thì portc là nhập, khi TRISC=0 thì portc là xuất.
Portc được đa hợp với vài chức năng ngoại vi. Các chân của portc có mạch đệm Schmit Trigger ở ngõ vào. Khi khối I2C được cho phép thì các chân PORTC (3,4) có thể được định cấu hình ở các mức I2C hoặc mức SMBUS bằng cách sử dụng bít CKE (SSPSTAT).
Khi cho phép chức năng ngoại vi, nên chú ý đến các bít TRIS cho mỗi chân của PORTC. Một vài thiết bị ngoại vi ghi lên bít TRIS để làm một chân như là 1 ngõ ra, trong khi đó các thiết bị ngoại vi ghi lên bít TRIS để làm như một chân ngõ vào. Khi ghi đè bít TRIS thì không ảnh hưởng đến các thiets bị đã cho phép, các kệnh đọc – hiệu chỉnh – ghi (BSF,BCF,XORWF) với TRISC là đích đến phải tránh dùng. Người sử dụng tham chiếu tới phần thiết bị ngoại vi tướng ứng để thiếp lập cho đúng bít TRIS
PORTD và thanh ghi TRISD:
PORTD là port 8 bít với ngõ vào có mạch Schmitt Trigger. Mỗi chân có thể được cấu hình độc lập là ngõ vào hoặc ngõ ra. PORTD có thể định cấu hình như là port của vi sử lũ 8 bít bằng cách thiết lập bít điều khiển PSPMODE(TRISE). Trong mode này thì các bộ đến ngõ vào dạng TTL. PORTD và TRISD không được xây dựng cho các bộ đếm ngõ vào TTL
Các BANK thanh ghi:
Bộ nhớ dữ liệu trên được chia làm nhiều Bank và chứa những chức năng đặc biệt. hai bit RP0, RP1 nằm trong thanh ghi STATUS thuộc bit thứ 5 và thứ 6 dùng để chọn BANK thanh ghi.
Hai BANK thanh ghi : BANK 0 và BANK 1 thuộc địa chỉ từ 0x5 đến 0x09 là địa chỉ của PORTA đến PORTE dùng để xuất nhập dữ liệu. địa chỉ từ 0x85 đến 0x89 là địa chỉ của các thanh ghi định hướng TRISA đến TRISE.
Khi chọn BANK thanh ghi ta thiết lập các giá trị của RP0 và RP1 thuộc thanh ghi STATUS như sau:
Bank 0 : RP0=0, RP1=0.
Bank 1 : RP0=1, RP1=0.
Bank 2 : RP0=0, RP1=1.
Bank 3 : RP0=1, RP1=1.
Hình 2.5: Sơ đồ File thanh ghi.
Với phần mềm CCS để viết chương trình C cho PIC, khi truy xuất các dữ liệu từ các cổng thì ta không cần chọn BANK thanh ghi phức tạp như trên. Ta chỉ cần dùng các lệnh : SET_TRIS_X và OUTPUT_X là có thể xuất nhập. Nhưng khi nhập dữ liệu với các cổng ta không nên dùng lệnh OUTPUT_X vì trước khi thực hiện xuất một dữ liệu thì mặc định nó đã SET_TRIS_X. Ta nên khai báo địa chỉ ban đầu của thanh ghi ví dụ:
#BYTE PORTB =0x06, #BYTE PORTC=0x07.
Như thế thì ta có thể xuất dữ liệu ra các cổng bằng các lệnh gán PORTX=0xXX mà không làm ảnh hưởng đến thanh ghi định hướng ban đầu qua lệnh SET_TRIS_X.
Các cổng RB, RC, RD là cổng vào ra 8 bít, với các chân RX0 đến RX7.
c. chọn cổng vào ra kết nối với thiết bị ngoại vi :
Do trong phần mềm CCS có hỗ chợ file LCD.C mặc định dùng ở cổng PORTD nên ta dùng cổng RD để kết nối với LCD. Điều khiển LCD dùng PORTD với thiết lập ban đầu là cổng xuất dữ liệu để điều khiển LCD nên ta thiết lập ban đầu là SET_TRIS_D(0x00).
Các chân từ RD4 => RD7 của PIC nối với các chân dữ liệu D4 => D7 của LCD
Chân RD0 của pic nối với chân cho phép E (enable) của LCD.
Chân RD1 nối với chân RS – chân chọn thanh ghi của LCD
Chân RD2 nối với chân RW – chân chọn chế độ đọc/ ghi của LCD.
Chọn cổng quét 16 phím: ma trận phím nối với cổng RC.
Chọn cổng điều khiển động cơ , công tắc hành trình và báo động : cổng RB
Chân RB0, RB1 nối với công tắc hành trình để dừng động cơ khi điều khiển cửa
Chọn chân RB6,RB7 để điều khiển động cơ thông qua mạch cầu.
Chọn chân RB5 để đưa tín hiệu ra hệ thống báo động.
d. Bộ nhớ EEPROM:
Dữ liệu EEPROM và bộ nhớ chương trình Fláh có thể đọc và ghi trong suốt quá trình hoạt động bình thường. Bộ nhớ này không được thiết lập trực tiếp trong không gian file thanh ghi đặc biệt. Có 6 thanh ghi FSR được sử dụng để đọc và ghi bộ nhớ này:
EECON1
EECON2
EEDATA
EEDATH
EEADR
EEADRH
Khi giao tiếp với khối bộ nhớ dữ liệu , thanh ghi EEDATA chứa 8bít dữ liệu cho việc đọc/ghi và thanh ghi EEADR chứa địa chỉ ô nhớ của EEPROM đang được truy xuất. Nếu pic có bộ nhớ 128 byte thì địa chỉ nằm trong khoảng từ 80H đến FFH, nếu PIC có bộ nhớ EEPROM là 256 byte thì địa chỉ nằm trong khoảng từ 00h đến FFh. Với PIC 16f877a có 256 byte bộ nhớ nên EEPROM nằm trong khoảng từ 00h đến FFh.
Khi giao tiếp với bộ nhớ chương trình thì hai thanh ghi EEDATA và EEDATH kết hợp với nhau lại thành thanh ghi 16 bit để lưu trữ dữ liệu 14bit cho lệnh đọc/ghi và hai thanh ghi EEADR và EEADRH kết hợp lại thành thanh ghi 16 bít để lưu địa chỉ 13 bit của ô nhớ đang truy suất . Với pic có dung lượng bộ nhớ chương trình là 8k wỏd thì địa chỉ trong khoảng từ 0000h đến 1FFFh . Nếu truy suất ô nhớ có địa chỉ lớn hơn thì sẽ bị cuộn nằm trong vùng nhớ thực
Bộ nhớ dữ liệu EEPROM cho phép đọc và ghi 1 byte bộ nhớ chương trình Flash cho phép đọc 1 word và ghi khối 4 word . Hoạt động ghi của bộ nhớ chương trình sẽ tự động thực hiện xóa trước khi ghi vào khối 4 word . Một byte ghi vào bộ nhớ dữ liệu EEPROM sẽ tự động xóa ô nhớ rồi mới ghi dữ liệu mới – xóa trước khi ghi
Khi chip có mã bảo bbệ thì CPU có thể đọc và ghi dữ liệu bộ nhớ EEPROM. Tùy thuộc vào cách thiết lập các bít bảo vệ chống ghi, PIC có thể cho hoặc không cho ghi dữ liệu vào một vài khối bộ nhớ chương trình ; tuy nhiên cho phép đọc bộ nhớ chương trình. Khi PIC coa mã bảo vệ thì người dung không còn được truy cập bộ nhớ dữ liệu hoặc bộ nhớ chương trình.
Thanh ghi EEADR và EEADRH
Cặp thanh ghi EEADRH:EEADR có thể định địa chỉ tối đa 256 byte của bộ nhớ dữ liệu EEPROM hoặc tối đa 8k word của bộ nhớ chương trình EEPROM
Khi truy xuất bộ nhớ dữ liệu thì chỉ dung thanh ghi EEADR đẻ lưu byte địa chỉ thâp
Khi truy xuất bộ nhớ chương trình thì dung thanh ghi EEADR để lưu byte địa chỉ thấp và thanh ghi EEADRH để lưu byte cao
Thanh ghi EECON1 và EECON2:
EECON1 là thanh ghi điều khiển để truy xuất bộ nhớ . Bít điều khiển EEPGD dùng để truy xuất bộ nhớ chương trình hoặc bộ nhớ dữ liệu. Khi reset hoặc khi bị EEPGD sẽ cho phép truy suất bộ nhớ dữ liệu. khi bit EEPGD bằng 1 thì truy xuất bộ nhớ chương trình.
Thanh ghi EECON1
Bit 7: EEPGD bit lựa chọn bộ nhớ dữ liệu/ chương trình EEPROM
EEPGD=1 truy xuất bộ nhớ chương trình
EEPGD=0 truy xuất bộ nhớ dữ liệu.
Bit 6 => 4 chưa sử dụng
Bit 3 WRERR : bít cờ lỗi EEPROM
WRERR =1 việc ghi thực hiện xong sớm
WRERR = 0 việc ghi đã được hoàn thành.
Bit 2: WREN bit cho phép ghi eeprom
WREN=1 cho phép ghi.
WREN=0 không cho ghi.
Bit 1: WR bit điều khiển ghi
WR=1 bắt đầu chu kỳ ghi. Bit WR được xóa bằng phần cứng sau mỗi lần ghi xong
WR=0 quá trình ghi vào eeprom đã hoàn thành
Bit 0 :RD bit điều khiển đọc
RD=1 bắt đầu chi kỳ đọc eeprom . bit RD được xóa bằng phần cứng .bit RD chỉ có thể được set trong phần mềm
RD=0 không khởi động chu kỳ đọc eeprom.
Đọc dữ liệu từ bộ nhớ EEPROM:
Để đọc dữ liệu của một ô nhớ người sử dụng phải ghi địa chỉ vào thanh ghi EEADR, xóa bit điều khiển EEPGD (EECON1,7) và sau đó set bit điều khiển RD (EECON1) . Dữ liệu sẽ xuất hiện trong thanh ghi EEDATA ở chu kỳ kế. EEDATA sẽ lưu giá trị này cho đến khi xuất hiện lần đọc kế hoặc bị thay đỏi bởi người sử dụng.
Các bước để đọc bộ nhớ dữ liệu EEPROM:
Ghi địa chỉ vào EEADR địa chỉ không được lớn hơn dung lượng bộ nhớ
Xóa bit EEPGD chỉ hướng vào bộ nhớ dữ liệu EEPROM
Set bit RD để bắt đầu hoạt động đọc.
Đọc dữ liệu từ thanh ghi EEPROM.
Các bước trên khi dung với ngôn ngữ ASM thì ta phải tuân thủ đúng quy tắc. nhưng khi dung với ngôn ngữ C thì ta chỉ cần dung với một lệnh read_eeprom(address) trong đó address là địa chỉ của EEPROM mà ta cần đọc, địa chỉ này với dòng pic 16f877a từ 00h đến FFh.
Ghi dữ liệu vào bộ nhớ EEPROM:
Để ghi dữ liệu vào EEPROM thì người sử dụng phải ghi địa chỉ vào thanh ghi EEADR và dữ liệu vào thanh ghi EEDATA . sau đó phải thực hiện ghi theo trình tự chỉ định để ghi cho mỗi byte.
Quá trình ghi sẽ không được khởi động nếu thứ tự ghi không được thực hiện chính xác cho mỗi byte . phải cấm tất cả các yêu cầu ngắt khi thực hiện quá trình ghi này .
Ngoài ra bit WREN trong thanh ghi EECON2 phải được set để cho phép ghi. Cơ chế này ngăn chặn các hoạt động ghi ngẫu nhiên vào EEPROM liên quan đến sai sót mã bảo bệ . Người sử dụng nên giữ bit WREN ở trạng thái Clear , ngoại trừ khi truy cập dữ liệu vào bộ nhớ dữ liệu EEPROM. Bit WREN không được xóa bằng phần cứng.
Sau khi quá trình ghi đã được khởi đọng thì nếu ta xóa bit WREN sẽ không ảnh hưởng đến chu kỳ này. Bit WR sẽ bị chặn không cho lên 1 trừ khi bit WREN được set.
Khi hoàn tất chu kỳ ghi bit WR được xóa bởi phần cứng và bit cờ báo ngắt hoàn thành xong quá trình ghi EEIF được set. Người dung có thể cho phép sự ngắt hoặc kiểm tra bit này để biết quá trình ghi kết thúc . bit EEIF phải được xóa bằng phần mềm.
Tuy rằng các bước ghi dữ liệu vào bộ nhớ EEPROM có nhiều bước và nhiều bit trên thanh ghi được để ý đến như vậy nhưng khi dùng C để làm việc với PIC thì ta chỉ cần chú ý đến lệnh ghi : WRITE_EEPROM(address,x)
Trong lệnh :write_eeprom(address,x)
Address : địa chỉ của EEPROM ta cần ghi
X : giá trị ta cần ghi (byte).
2.5.2. KHỐI HIỂN THỊ
a. Hình dáng và kích thước:
Có rất nhiều loại LCD với nhiều hình dáng và kích thước khác nhau, trên hình 1 là hai loại LCD thông dụng.
Hình 2.6: Hình dáng của LCD
Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh số thứ tự và đặt tên như bên dưới :
Hình 2.7: Sơ đồ chân của LCD
b. Chức năng các chân:
Chân số
Tên
Chức năng
1
Vss
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của mạch điều khiển
2
Vdd
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với VCC=5V của mạch điều khiển
3
Vee
Chân này dùng để điều chỉnh độ tương phản của LCD.
4
Rs
Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong LCD.
5
R/w
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế độ đọc.
6
E
Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) thanh ghi bên
trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến khi nào chân E xuống mức thấp.
7-14
DB0-DB7
Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit MSB là DB7
Bảng 2.1: Chức năng của cán chân LCD
c. Các thanh ghi
Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register)
- Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó.
VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0)
Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110
- Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU. Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2 thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối với hai chân RS và R/W theo mục đích giao tiếp.
RS
R/W
Khi cần
0
0
Ghi vào thanh ghi RS để ra lệnh cho thanh ghi
0
1
Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6
1
0
Ghi vào thanh ghi DR
1
1
Đọc dữ liệu từ DR
Trong chương trính sử dụng LCD ở chế độ 4bit. Các lệnh được sử dụng:
lcd_send_byte( BYTE address, BYTE n ) để điều khiển LCD ví dụ như lệnh : lcd_send_byte(0,0x01) dùng để xóa màn hình, lcd_send_byte(0,0x08) để đưa con trỏ về đầu dòng thứ nhất…
lcd_gotoxy(a,b) để đưa con trỏ về các vị trí mong muốn thộc các dòng khác nhau của LCD. Lcd_gotoxy(x,1) đưa con trỏ về dòng 1 vị trí x, vị trí x có thể từ 1->16 của LCD
printf(lcd_putc,”…”): in một xâu ký tự ra màn hình.xâu ký tự có độ dài < 16 ký tự để LCD có thể hiển thị được đầy đủ
lcd_putc(‘…’) : in một ký tự ra màn hình.
2.5.3. Bàn Phím
Hình 2.8: Ma Trận 16 Phím
Thực hiện chức năng giao tiếp với vi điều khiển PIC 16F87, dùng để hiển thị nhập password, thay đổi password, mở khóa cửa
Sử dụng bàn phím ma trận 16 phím
Với các phím số từ 0 =>9 và các phím chức năng mở cửa, khóa cửa, và đổi mật khẩu.
Để kết nối với vi điều khiển thì ta treo 8 đầu vào của ma trận phím với trở treo lên dương nguồn, với giá trị cảu trở treo là R8=4.7K.
Dùng các phím bấm có 4 chân giống như hình vẽ:
Hình 2.9 : nút bấm sử dụng trong mạch
Hình 2.10 : Sơ đồ chân của nút bấm dùng làm mạch
Ta sử dụng nút bấm thường mở, với các chân nối chéo nhau, chân 1-3, 2-4 có thể dùng như nhau, vì thế khi nối mạch ta dùng một trong 2 cặp chân này.
2.5.4. Khối Mạch Cầu H Khuếch Đại Tín Hiệu
Các dạng cấu tạo của mạch cầu H
Mạch cầu H được cấu tạo bởi 2 dạng chính:
Dạng 1
Được cấu tạo bởi 4 transitor (Fet) Cùng kênh N. Sơ đồ nguyên lý mạch được cấu tạo như sau (Chỉ vẽ mạch dùng transitor để mình họa)
Đối với dạng này thì được cấu tạo bởi các transitor cùng kênh N. và chỉ cần 2 tín hiệu điều khiển kích mở các transitor
Dạng 2:
Được cấu tạo bởi 2 cặp đôi transitor P,N hay FET (Thuận, ngược). Sơ đồ nguyên lý cấu tạo của nó được cấu tạo như bên :(Tôi cũng dùng transitor mình họa. Đối với thiết kế này quả là thấy khá là ổn định đối với điện áp đầu vào nhỏ khoảng 24V) Đối với mạch công suất lớn thì các FET công suất lớn thường ko có kênh P nên ta ko dùng được theo cách này mà phải dùng theo cách 1
Nguyên tắc hoạt động của mạch cầu H.
Chỉ xét đến nguyên lý hoạt động và hoạt động như thế nào của mạch cầu H con BJT được chọn để ví dụ còn Fet thì nó gần tương đương nhau.
Ta hãy phân tích một dạng mạch cầu H như trên. Hai dạng này có nguyên lý hoạt động giống nhau chỉ khác là linh kiện cấu tạo lên cầu H như thế nào và việc đóng mở các transitor hay Fet như thế nào? Đối với dạng 1 khi dùng Fet cùng kênh thì phải dùng mạch lái đối với công suất lớn và điện áp lớn. Còn dạng 2 dùng với công suất nhỏ với điện áp đầu vào nhỏ.
Ta đi phân tích nguyên lý hoạt động của mạch dang 2 như sau:
Mạch cầu H này được điều khiển bởi 4 tín hiệu đóng mở các van đó là các tín hiệu 1 và tín hiệu 2( Như trên hình 2) và điều khiển được 2 chiều (Có nghĩa là đảo chiều dòng điện). Xét từng chế độ thuận và nghịch
Như chúng ta đã bit điều kiện để đóng mở đê các transitor thông là:
+ Đối với kênh N để mở thì Ube > 0 và mở transitor bằng dòng điện
+ Đới với transitor kênh P để mở thì Ube <= 0 . Thường thì bằng 0 là nó sẽ mở
Điều khiển ở chế độ thuận
Ở chế độ thuận này cấp 4 tín hiệu điều điều khiển vào 4 con Transitor và điều kiện để có dòng thuận chạy qua tải trong 1 thời điểm là :
+ Tín hiệu 1 = 0 (Tức là mở transitor Q1).
+ Tín hiệu 2 = 0 ( Tức là đóng transitor Q2)
+ Tín hiệu 3 = 1 (Tức là đóng transitor Q3)
+ Tín hiệu 4 = 1 (Tức là mở transitor Q4)
Và dạng đường đi được mô tả như hình vẽ hình bên:
Đấy là dạng đi của chiều thuận : Dòng điện từ nguồn qua Q1 sau đó qua tải và qua Q2 xuống GND.
Điều khiển với chế độ nghịch
Ở chế độ này ta cũng cấp 4 tín hiệu điều khiển vào 4 con transitor. Và 4 tín hiệu điều khiển này phải thỏa mãn điều kiển sau :
+ Tín hiệu 1 = 1 (Tức là khóa transitor Q1).
+ Tín hiệu 2 = 1 ( Tức là mở transitor Q2)
+ Tín hiệu 3 = 0 (Tức là mở transitor Q3)
+ Tín hiệu 4 = 0 (Tức là đóng transitor Q4)
Và dạng đường đi của chúng được thể hiện như hình vẽ bên.
* Ưu nhược điểm của cầu H.
Ưu điểm : Sử dụng cầu H làm cho mạch trở nên đơn giản hơn và tiếp kiệm chi phí.
Nhược điểm : Nếu như mạch điều khiển thì cùng bật 2 công tắc ở cùng 1 nửa cầu thì sẽ mạch động lực của chúng ta bị ngắn mạch nguồn. Nếu hiện tượng xảy ra trong 1 thời gian ngắn (Quá độ ) Sẽ xuất hiện dòng trùng dẫn qua van công suất làm tăng công suất tiêu tán trên van. Nếu thời gian trùng dẫn đủ dài, dòng trùng dẫn sẽ lớn làm cháy van công suất.Tức là mạch ko có bảo vệ dòng và điện áp
Trong thực tế có 1 loại IC bán dẫn được tích hợp luôn cả cầu H trong đó ta chỉ cần cấp xung điều khiển, có bảo vệ dòng :
+ L293 : Với điện áp đầu vào là 36V và dòng điện đỉnh qua nó là 1.2A+ L298 : Với điện áp đầu vào là 46V và dòng điện đỉnh qua nó là 4A
Hình 2.11 : Sơ đồ chân của D882 PNP
Hình 2.12 : Sơ đồ chân của D866 NPN
Chọn linh kiện tranzitor với mạch : sử dụng 2 tranzitor thuận và 2 tranzitor ngược, với tranzitor công suất : NEC D882 PNP và D886 NPN
Động cơ
Trong mô phỏng và trong giới hạn của mô hình sản phẩm sử dụng động cơ một chiều 12V, 800mA để điều khiển đóng mở cửa, hoặc có thể dùng để điều khiển đóng mở chốt, then cài.
Ta có thể sử dụng role thay cho động cơ để hút hoặc đẩy chốt cửa, tương ứng với mở/ khóa cửa.
Hình 2.9: Động cơ
Thông qua mạch cầu H ta đưa hai tín hiệu điều khiển động cơ từ chân RB6,RB7 của vi điều khiển
2.4.6. Khối Nguồn
Hình 2.10: Sơ Đồ Khối Nguồn
Dùng nguồn 12V xoay chiều đưa vào cầu điốt để tạo ra điện áp một chiều, qua tụ san phẳng cho điện áp bằng phẳng hơn. Dùng IC7805 để ổn định điện áp đầu ra cho mạch của khối điều khiển.
Tụ điện 1000u .Nguồn 12v, 4A.
SƠ ĐỒ NGUYÊN LÝ CỦA MẠCH
Hình 3.2: Sơ đồ tổng thê hệ thống
NGUYÊN LÝ HOẠT ĐỘNG CỦA MẠCH
Khi muốn mở cửa thì phải gõ đúng mật khẩu với độ dài 8 ký tự. Nếu gõ đúng thì động cơ sẽ quay thuận, và cửa sẽ mở. Và gõ sai thì màn hình LCD hiển thị chữ nhập sai mật khẩu.
Khi động cơ quay hết hành trình, công tắc hành trình mở xong đóng, khi đó LCD thông báo đã mở xong.
Nếu nhập mật khẩu sai 3 lần liên tiếp thì hệ thống báo động sẽ hoạt động, thông qua chân RB5.
Trong khi mở xong, nếu nhấn khóa thì động cơ sẽ quay và cửa khóa lại, động cơ quay thì nút công tắc hành trình khóa xong sẽ mở, và nếu công tắc hành trình mở xong đóng lại thì động cơ ngừng quay, LCD báo mở xong.
Muốn đổi mật khẩu ta nhấn nút đổi mật khẩu trên bàn phím, khi này LCD báo nhập mật khẩu cũ, và ta phải nhập đúng mật khẩu cũ thì mới đổi được mật khẩu, nếu nhập đúng mật khẩu thì LCD thông báo nhập mật khẩu mới. nhập xong thì nhấn OK, vậy là mật khẩu đã được đổi.
SƠ ĐỒ THUẬT TOÁN ĐIỀU KHIỂN
Bắt Đầu
Khởi Tạo Biến, Mảng, LCD
QUÉT PHÍM
NHẬP PHÍM
KIỂM TRA SỐ LẦN >=3
MỞ CỬA - ĐỔI PASS
END
Hình 3.1 lưu đồ giải thuật
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG
3.1. CHƯƠNG TRÌNH PHẦN MỀM
CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip. Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là:
‐ PCB cho dòng PIC 12‐bit opcodes
‐ PCM cho dòng PIC 14‐bit opcodes
‐ PCH cho dòng PIC 16 và 18‐bit
Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS.
PIC 16f877a là pic 14. Ta có thể dùng phần mềm để lập trình cho PIC với ngôn ngữ C dễ sử dụng.
Cấu chúc cơ bản của chương trình khi vết với C:
#include, #device, #use, #fuses....... // các tiền xử lý
#define, int8 .......... //định nghĩa các dữ liệu khai báo hằng, biến...
Void tênhàm() {} dùng để khai báo, định nghĩa hàm
Void main() {// chương trình chính.}
3.2. CHƯƠNG TRÌNH QUÉT PHÍM CƠ BẢN
void quetphim(){
PORTB=0xfe;// RB0=0;RB1=1;....RB7=1: kiểm tra hàng 1 được bấm
if(RB4==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB5==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB6==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB7==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
PORTB=0xfd;// RB0=1;RB1=0;RB2=1;....RB7=1: kiểm tra hàng 2 được bấm
if(RB4==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB5==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB6==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB7==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
PORTB=0xfb;// RB0=1;RB1=1;RB2=0;RB3=1;....RB7=1: kiểm tra hàng 3
if(RB4==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB5==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB6==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB7==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
PORTB=0xf7;// RB0=1;RB1=1;RB2=1;RB3=0;RB4=1;....RB7=1: hàng 4
if(RB4==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB5==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB6==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
if(RB7==0) { chương trình;while(RB4==0) {không làm gì khi giữ phím} }
}
3.3. CHƯƠNG TRÌNH CHÍNH:
void main()
{
set_tris_b(0x03);RB6=0;RB7=0;
set_tris_d(0x00);
set_tris_e(0x00);porte=0x00;
set_tris_c(0xf0);
portc=0xff;
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
ext_int_edge(H_TO_L);
lcd_init();
lcd_gotoxy(3,1);
for(i=0;i<=9;i++)
{ write_eeprom(0x00+i,0);//xoa eeprom ve 0 }
printf(lcd_putc,"nhap pass nao");
lcd_gotoxy(1,2);
while(true)
{
quetphim();
if(RB0==0)
{
lcd_send_byte(0,0x01);
lcd_gotoxy(1,2);
RB6=0;RB7=0;
printf(lcd_putc,"da khoa xong");
delay_ms(500);
lcd_send_byte(0,0x01);
lcd_gotoxy(1,1);
printf(lcd_putc,"nhap phim nao");
lcd_gotoxy(1,2);
while(RB0==0)
{
quetphim();
while(RB0!=0)
{
if(RB1==0)
{ reset_cpu(); while(RB1!=0) {reset_cpu();} }
}
}
}
if(RB1==0)
{
lcd_gotoxy(1,2);
RB6=0;RB7=0;
for(m=0;m<=7;m++)
{ b[m]=0; }
printf(lcd_putc,"da mo xong");
delay_ms(500);
lcd_send_byte(0,0x01);
printf(lcd_putc,"nhap phim nao");
lcd_gotoxy(1,2);
while(RB1==0)
{
quetphim();
while(RB1!=0)
{
if(RB0==0)
{ reset_cpu(); while(RB0!=0) {reset_cpu();} }
}
} } }}
3.4. CHƯƠNG TRÌNH KIỂM TRA
void kiemtra()
{
lcd_gotoxy(1,1);
printf(lcd_putc,"dang kiem tra");
delay_ms(600);
for(j=0;j<=7;j++)
if(read_eeprom(0x00+j)-b[j]!=0)
{
write_eeprom(0x09,read_eeprom(0x09)+1);
sairoi();
}
else
{
lcd_gotoxy(1,2);
RB6=1;RB7=0;;i=0;
write_eeprom(0x09,0);
printf(lcd_putc,"dang mo cua");
}
}
3.5. CHƯƠNG TRÌNH BÁO ĐỘNG
void sairoi()
{
lcd_send_byte(0,0x01);
printf(lcd_putc,"nhap sai roi");
if(read_eeprom(0x09)==3)
{
RB5=1;
lcd_gotoxy(1,2);
printf(lcd_putc,"ban la ke xau");
delay_ms(2000);delay_ms(2000);delay_ms(2000);delay_ms(2000);
RB5=0;write_eeprom(0x09,0);
reset_cpu();
}
else
{
lcd_gotoxy(1,2);
printf(lcd_putc,"nhap lai");
delay_ms(1000);
reset_cpu();
}
}
ĐÁNH GIÁ VÀ KẾT LUẬN
Với hoạt động như trên , từ mô phỏng trên phần mềm hoàn toàn có thể đưa ra làm mạch thật.
Vì hạn chế là trên mô hình, nếu dùng động cơ công suất lớn để kéo cánh cửa ra vào thì phải tính toán rất nhiều.Để ứng dụng vào thực tế hệ thống này còn cần được chỉnh sửa để để tăng tính ổn định và kết nối với bộ phận cơ khí đóng mở cửa.
Hiện nay những hệ thống kiểm soát ra vào theo mã đã sử dụng những hình thức quản lý tiên tiến hơn như:từ thẻ,vân tay …tuy nhiên chi phí không hề thấp.Một hệ thống quản lý như chúng em thiết kế vẫn còn có những ứng dụng nhất định.
Đây là một đề tài rất có ứng dụng trong thực tế nên chúng em sẽ cố gắng để hoàn thiện đề tài,và phù hợp với nhu cầu thực tế.
HƯỚNG PHÁT TRIỂN
Đưa sản phẩm vào thực tiễn, có thể là một sản phẩm kinh doanh mang tính kinh tế. Sản phẩm được ứng dụng ở nhiều nơi, không chỉ là ở các cánh cửa của gia đình, công ty, xí nghiệp, mà còn ở nhiều nơi khác.
TÀI LIỆU THAM KHẢO
Hệ Thống Nhúng – Trường. ĐHKTCN Thái Nguyên. Biên soạn : bộ môn kỹ thuật máy tính – khoa điện tử.
Giáo trình vi xử lý , vi điều khiển – Trường. ĐHKTCN Thái Nguyên. Biên soạn : bộ môn kỹ thuật máy tính – khoa điện tử.
Vi xử lý 2 – Nguyễn Đình Phú.
Tài liệu tham khảo trên các trang web : picvietnam.com, dientuvietnam.net, tailieu.vn….