ĐỒ ÁN MÔN HỌC
Trang 1Lời mở đầu
Thành viên tham gia nhóm:
Phan Thanh Tùng
Tạ Văn Toàn
Nguyễn Mạnh Cường
Báo Cáo Đồ Án Vi Điều Khiển
Đề Tài:Thiết Kế Mạch Khóa Điện Tử
Nội dung chính
Nghiên cứu IC dòng 8051 để thiết kế mạch khóa điện tử hiển thị các thông báo lên LCD
Phần 1: Cơ sở lý thuyết liên quan tới sản phẩm cần thiết kế
Phần 2: Nội dung: trình tự và nội dung thiết kế.
Trang 2Chân thành cảm ơn!!!
Phần 1:Cơ sở lý thuyết
1/Giới thiệu về IC dòng 8051
Vi điều khiển 8051 là 1 trong những vi điều khiển 8 bit thông dụng nhất hiện nay Băt đầu xuât hiện từ những năm 1980,trải qua 30 năm dòng chíp này đã có hơn trăm biến thể và có hơn 20 hãng sản suất khác nhau và trong đó phải kể đến đại gia trong làng bán dẫn như ATMEL ,Tecxa Instruments,Philip…Tại thị trường việt nam dòng chip của hãng ATMEL rất thông dụng như 89Cxx, 89Sxx,
Atmega8,16
Cấu trúc của AT89xx ở dạng sơ đồ khối
Các phiên bản của 8051 do hãng ATMEL cung cấp
Ký hiệu Rom Ram Chân
I/O Timer Ngắt Vcc Đóng vỏ AT89C51 4Kbyte 128Byte 32 2 6 5V 40 chân ,2 hàng AT89LV51 4Kbyte 128Byte 32 2 6 3V 40 chân ,2 hàng
Trang 3AT89C1051 1K 64Byte 15 1 3 3V 20 chân,2 hàng AT89C2051 2K 128Byte 15 2 6 3V 20 chân 2 hàng AT89C52 8K 128Byte 32 3 8 5V 40 chân ,2 hàng AT89LV52 8K 128Byte 32 8 8 5V 40 chân ,2 hàng
2/Giới thiệu về IC 89C51
Sơ đồ chân và hình ảnh thực tế của IC 89C51
IC 89C51 gồm có 40 chân trong đó có 32 chân vào/ra,4Kbyte rom,128 byte ram,2 timer và 6 nguồn ngắt
Nhóm chân vào ra
Port 0(P0.0P0.7)
Trang 4Port 1,có chức năng duy nhất là xuất nhập dữ liệu ,riêng chân P1.5 , P1.6 , P1.7 dùng để nạp rom theo tiêu chẩn ISP
Port 2(P2.0P2.7)
Port 2 ngoài chức năng xuất nhập dữ liệu ra giống như port 0 và port1 còn là byte cao của bus địa chỉ khi sử dụng bộ nhớ ngoài
Port 3(P3.0P3.7)
Port 3 ngoài chức năng xuất nhập dữ liệu ra thì mỗi chân của nó đều có 1 chức năng riêng
P3.0 RXD Dữ liệu nhận cho port nối tiếp
P3.1 TXD Dữ liệu truyền cho port nối tiếp P3.2 INT0 Ngắt bên ngoài 0
P3.3 INT1 Ngắt bên ngoài 1
P3.4 T0 Ngõ vào của timer/counter 0
P3.5 T1 Ngõ vào của timer/counter 1
P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài
P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài
Ngoài 32 chân có nhiêm vụ xuất nhập dữ các chân con lại mỗi chân đều có nhiệm vụ riêng
Chân 29(PSEN) :chân điều khiển đọc chương trình ở bộ nhớ ngoài
Chân 30(ALE) :là tín hiệu chốt địa chỉ có tần số bằng 1/6 tần số thạch anh
Trang 5Chân 31(EA) : là chân cho phép chương trình chọn bộ nhớ trong hay ngoài của VDK
Chân 9(RST) : restart lại vi điều khiển
Chân 18,19(XTAL1,XTAL2):chân nối với bộ dao động thạch anh
Chân 20,40(GND,VCC):chân nối đất và nguồn cho vi điều khiển
Phần 2:Trình tự và nội dung thiết kế
1/Thi công phần cứng
Sơ đồ khối
Khối nguồn
LCD
Trang 6Nguồn điện lấy từ nguồn điện áp 220V sẽ được qua apdator để điện áp thành dòng điện 1 chiều và có điện áp là 12VDC sau đó qua tiếp 7805 để hạ áp xuống còn 5V điện áp tiêu chuẩn cho IC89c51
Khối nút bấm
Nút bấm được thiết kế theo ma trận gồm có 4 hàng 4 cột
Khối hiển thi
Trang 7Khối hiện thị là màn hình LCD 16X2 để hiện thị các thông báo lên LCD
Trang 8Khối vi điều khiển
Sử dụng chíp 89c51 với P1 nối với bàn phím và port 2 nối với LCD
Mạch nguyên lý
Trang 9Nguyên tắc hoạt động:
Băt đầu khởi động khóa điện tử thì trên màn hinh LCD sẽ hiển thi “LOCK
DIGITAL” và bắt ta phải nhập mã PIN ta sẽ sử dung các nút bấm để thực hiện việc này ,sơ đồ nut bấm sẽ là
ENTER * * *
Mã PIN là :1102010
Khi ta nhấn xong mã pin thì sẽ ấn ENTER và màn hình LCD sẽ hiện thị
“UNLOCK WELLCOME TO YOU”,nếu ta nhập mã sai thì màn hình LCD se thông báo “INCORECT TRY AGAIN”
Nếu nhập mã sau 3 lần mà vẫn sai thì LCD sẽ hiện thị thông báo “BAN DA HET QUYEN TRUY CAP” và sau 2 phút thì khóa với hoạt động trở lại
Nếu mà mã nhập quá ngắn thì LCD sẽ hiển thị “NUMBERS TOO LITTLE”
Và bắt nhập lại
Nếu mà mã nhập quá dài thì LCD sẽ hiển thị “NUMBERS TOO MUCH”
Và bắt nhập lại
Trang 10Mạch in
Trang 112/Thi công phần mền
Lưu đồ thuật toán
Trang 12Nhập mã PIN
Bắt Đầu Starting
Chờ LCD sẵn sàng
Kêt Thúc End
Nhập quá nhiều số
Nhập quá ít số
Kiểm tra
mã PIN
Sai mã
qua 3 lần
Hiển thị thông báo”Bạn đã hết
quyền truy câp” sau 2’ mới
hoạt động trở lại
Sai dưới
3 lần
Trang 13Chương trình được viết bằng phần mền Kiel C
#include <REGX51.H>
#include<stdio.h>
#include<string.h>
sfr LCDdata=0xA0;//LCD nhan 8 bit du lieu tu cong 2(con doi voi P0 la 0x80,P1 la 0x90,
sbit BF=0xA7;
sbit RS=P3^5;
sbit RW=P3^6;
sbit EN=P3^7;
sbit cot1=P1^4;
sbit cot2=P1^5;
sbit cot3=P1^6;
sbit cot4=P1^7;
unsigned char m_hang[4]={0xFE,0xFD,0xFB,0xF7};
unsigned char key[15];//mang de luu cac so vua nhap tu ban phim
unsigned char key_char[10]={0,1,2,3,4,5,6,7,8,9};//mang luu cac ky tu so unsigned char key_id[7]={1,1,0,2,0,1,0};//mang ma PIN
unsigned char a=0,b=0; //b la bien dem so lan sai ma
void wait()//ham kiem tra LCD co ban hay khong
{
long n=0;
EN=1;//dua chan cho phep len muc cao
RS=0;//chon thanh ghi lenh
RW=1;//doc tu LCD
LCDdata=0xff;
while(BF)//kiem tra co ban
{
n++;if(n>100) break;
}
EN=0;//chot du lieu
RW=0;//doc tu LCD
Trang 14EN=0;
wait();//doi LCd san sang
}
void LCDinit()//khoi tao LCD
{
LCDcontrol(0x30);
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0E);//bat hien thi nhap nhay con tro
LCDcontrol(0x01);//xoa man hinh
}
void LCDwrite(unsigned char c)
{
EN=1;
RS=1;
RW=0;
LCDdata=c;
EN=0;
wait();
}
void LCDputs(unsigned char *s,unsigned char row)
{
unsigned char len;
if(row==1)LCDcontrol(0x80);//ep con tro ce dau dong hang 1
else LCDcontrol(0xC0);//ep con tro ve dau dong hang 2
len=strlen(s);
while(len!=0)
{
LCDwrite(*s);
s++;
len ;
}
}
void delay(long t)
{
long i;
for(i=0;i<t;i++)
{;}
}
unsigned char quetphim()
{
unsigned char i,j;
Trang 15unsigned char giatriphim;
for(i=0;i<4;i++)
{
P1=m_hang[i];
for(j=0;j<100;j++)
{
if(cot1==0) giatriphim=0+4*i;
if(cot2==0) giatriphim=1+4*i;
if(cot3==0) giatriphim=2+4*i;
if(cot4==0) giatriphim=3+4*i;
}
}
return giatriphim;
}
void main()
{
unsigned char k;
LCDinit();
LCDputs("STARTING",1);
delay(20000);
LCDwrite('.');
delay(20000);
LCDwrite('.');
delay(20000);
LCDwrite('.');
delay(10000);
LCDcontrol(0x01);//xoa man hinh
LCDputs("LOCK DIGITAL",1);
delay(10000);
LCDcontrol(0x01);
LCDputs("PIN :",1);
delay(10000);
while(1)
Trang 16case 4:LCDwrite('*');key[a++]=key_char[4];delay(10000);break;
case 5:LCDwrite('*');key[a++]=key_char[5];delay(10000);break;
case 6:LCDwrite('*');key[a++]=key_char[6];delay(10000);break;
case 7:LCDwrite('*');key[a++]=key_char[7];delay(10000);break;
case 8:LCDwrite('*');key[a++]=key_char[8];delay(10000);break;
case 9:LCDwrite('*');key[a++]=key_char[9];delay(10000);break;
case 10:LCDwrite('*');delay(10000);break;
case 11:LCDwrite('*');delay(10000);break;
case 12:LCDwrite('*');delay(10000);break;
case 13:LCDwrite('*');delay(10000);break;
case 14:LCDwrite('*');delay(10000);break;
case 15:
if(a<=4)
{
LCDputs(" NUMBERS TOO ",1);
LCDputs(" LITTLE",2);
delay(20000);
LCDcontrol(0x01);
a=0;//khoi tao lai mang key[]
LCDputs("PIN :",1);
}
if(a>=10)
{
LCDputs("NUMBERS TOO MUCH",1);
delay(20000);
LCDcontrol(0x01);
a=0;//khoi tao lai mang key[]
LCDputs("PIN :",1);
}
if(a>4&&a<10)
{
if((key_id[0]==key[0])&&(key_id[1]==key[1])&&(key_id[2]==key[2])&&(key_i d[3]==key[3])
&&(key_id[4]==key[4])&&(key_id[5]==key[5])&&(key_id[6]==key[6])) {
LCDputs(" UNLOCKED",1);
LCDputs(" WELCOME TO YOU",2);
}
Trang 17else
{
b++;
if(b==4)
{
LCDputs(" BAN DA HET",1);
LCDputs(" QUYEN TRUY CAP",2);
delay(200000);
}
LCDputs(" INCORRECT",1);
LCDputs("PLEASE TRY AGAIN",2);
delay(20000);
LCDcontrol(0x01);
a=0;//khoi tao lai mang key[]
LCDputs("PIN :",1);
}
}
delay(10000);
break;
}
}
}
Trang 18Phần 3:Kết Luận
1/Đánh giá ưu điểm và nhược điểm
Ưu điểm:
- Sản phẩm cho phép hiển thị các thông báo lên LCD
- Hạn chế được số lần nhập nếu nhập sai quá 3 lần thì khóa sẽ không hoạt động nữa phải chờ 2 phút khóa mới hoạt động chở lại
- Nếu mật khẩu có ngắn hay quá dài đều có thông báo hiển thị lên LCD
Nhược điểm
- Không thể nhập mật khẩu mới,mật khẩu phải tạo lúc lập trình
- Không thể xóa 1 ký tự hay vài ký tự khi gõ mật khẩu mà biết
là sai
- Chưa thiết kế ngõ ra để có thể kết nối được với modum khác
2/Tính thực tế của sản phẩm và hướng phát triển cải tiến sản phẩm
Tính thực tế:
- Sản phẩm chưa có tính thực tế cao cũng có thể áp dụng ra thực tế nhưng còn rất nhiều hạn chế
- Sản phẩm mới chỉ dừng lại ở mức nghiên cứu cách thức hoạt động của IC dòng 8051
Hướng phát triển và cải tiến sản phẩm
- Khắc phục các nhược điểm của sản phẩm
- Nâng cao khả năng áp dụng vào thực tế
3/Đánh giá của thầy cô giáo
………
………
………
………
………
………
Trang 19………
………
………
………
………