hậ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)
1
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)
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
KHOA ĐIỆN TỬ
Bộ môn: KỸ THUẬT MÁY TÍNH
2
ĐỒ ÁN MÔN HỌC
MÔN HỌC
Hệ Thống Nhúng
Nhóm sinh viên: 1. Vũ Đình Thăng
2. Nguyễn Thế Thịnh
3. Lê Văn Thành
Lớp : K43kđt
Giáo viên hướng dẫn : ThS. Nguyễn Tuấn Linh
Thái Nguyên – 2011
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.
Vì vậy để nâng cao yêu cầu về tính bảo mật để bảo vệ tài sản, và dao diện dễ
sử dụng. Nhóm nghiên cứu chúng tôi đề ra giải pháp dùng khóa số dựa trên nền tảng
của kỹ thuật vi điều khiển.
Chương 1 : Phân Tích Bài Toán
1.1. Tổng quan về khóa số:
6
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
- 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.
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.000
vnđ
.
- Chịu được quá tải tải khi gặp chướng ngại vật trong thời gian
dài.
Với yêu cầu về tính năng như trên, chúng tôi 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.
9
1.5. Lựa chọn 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à:
khiển động cơ và đưa thông tin hiển thị ra LCD thông báo cho người dùng. Lưu trữ
mật khẩu qua bộ nhớ EEPROM có thể lưu trữ ngay khi mất điện.
- Bàn phím: thực hiện chức năng nhập các dữ liệu đưa đến vi điều khiển và bao
gồm thao tác nhập mật khẩu, thay đổi mật khẩu, mở cửa, khóa cửa.
- 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.
- 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ơ
- Màn hình LCD: có chức năng chính để giao tiếp người dùng với Vi Điều
Khiển .
- Động cơ điều khiển: Dùng để điều khiển đóng mở cửa qua điều khiển từ mạch
cầu H
2.2. Sơ Đồ Đặc Tả Hệ Thống Và Sơ Đồ Call Graph:
11
Thao Tác
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 Phím
Hình 2.2: sơ đồ đặc tả của hệ thống
Động
Chuông Báo
o Bộ nhớ dữ liệu EEPROM cho phép xóa và ghi 1.000.000
lần.
o 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<7>) =0 thì có thể mở tất cả các điện trở kéo lên . khi portb được thiết
13
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<INTCON<0>>.
14
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<4>).
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.
15
16
Hình 2.5: Sơ đồ File thanh ghi.
17
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.
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
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.
20
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.
5 R/w Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với
22
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
2.3.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.
24
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.
25