Chống trộm hồng ngoại bằng Vi Điều Khiển
Dạo này nghe tin lắm trộm đột nhập quá, chip lại ở 1 mình cũng sợ sợ ^^" nên tính làm mạch chống trộm báo động đột nhập cho yên tâm chút..Phần mạch thu phát hồng ngoại chip test cũng tạm ổn, đợi khi nào làm được mạch sẽ tung tên cho các bạn mổ xẻ,..rảnh chip lập trình phần vi điều khiển giao tiếp cảm biến hồng ngoại, biết đầu có lắm trộm cùng đột nhập qua nhiều cửa sổ thì vỡ mặt ^^" Ý tưởng chip là chỗ Switch ấy, là chỗ mắc tín hiệu hồng ngoại vào, còn chỗ led báo sau này dùng còi báo động, LCD dùng hiển thị vị trí trộm ghé thăm....chip chưa có thêm ý tưởng gì nữa, có gì sai các bạn góp ý nhé...để sau này chip xong mạch sẽ có thêm thứ để chơi.
Code C:
#include <REGX51.H>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <string.h>
// Dinh nghia chan Dieu Khien
#define K1 P1_0
#define K2 P1_1
#define K3 P1_2
#define K4 P1_3
#define K5 P1_4
// Dinh nghia chan LCD
#define RS P2_0
#define RW P2_1
#define EN P2_2
#define LCDdata P0
#define BF P0_7
// Dinh nghia chan Led
#define LED1 P2_3
#define LED2 P2_4
#define LED3 P2_5
#define LED4 P2_6
#define LED5 P2_7
// Khai bao chuoi hien thi
unsigned char code string1[] = "www.echipkool.com";
unsigned char code string2[] = "Simple Is The Best";
unsigned char i,j,k;
/*********HAM DELAY***********/
void delay(unsigned char ms)
{
for(i =0;i<ms;i++)
{for(j=0;j<125;j++){;}
}
}
/*************HAM CHO***************/
void wait(void)
{
RS=0;//thanh ghi lenh
RW=1;//doc du lieu tu lcd
LCDdata=0xff;//gia tri 11111111 // khoi dong ngo vao
while(BF) //kiem tra co ban
{
EN =0;//dua xung thap en cao de chot
EN =1;//dua xung len cao
}
}
////////////////thiet lap Dieu khien LCD//////////////
void LCDcontrol(unsigned char x)
{
RS = 0;//chon thanh ghi lenh
RW =0;//ghi du lieu len lcd
LCDdata =x;
EN=1; //dua xung cao xuong thap de mo
EN=0;
wait();//doi LCD san sang
}
//////////////////Khoi tao LCD////////////
void LCDinit(void)
{
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0e);//bat man hinh,bat con tro
LCDcontrol(0x01);//xoa man hinh
}
///////////////Thiet lap du lieu co LCD/////////
void LCDwrite(unsigned char c)
{
RS=1;//Ghi du lieu
RW=0;//ghi du lieu len LCD
LCDdata=c;
EN=1;
EN=0;
wait();
}
///////////////////
void LCDwrites(unsigned char*s)
{
unsigned char data lens,count;
lens=strlen(s);
for(count=0;count<lens;count++)
{
LCDwrite(*(s+count));
}
}
//////////////HAM HIEN THI CHUOI KY TU//////////////
void SendString2LCD(unsigned char code *p)
{
unsigned char i=0;
while(p[i]!=0)
{
LCDwrite(p[i]);
i++;
delay(200);
}
}
/////////////////HAM HIEN THI DONG CHU///////////////////
void DisplayText(void)
{
// Dich con tro den vi tri thu 1, dong thu nhat
LCDcontrol(0x80);
SendString2LCD(string1);
// Dich con tro den dau dong thu hai
LCDcontrol(0xC0);
SendString2LCD(string2);
}
/////////////// XOA LCD///////////////////
void LCDclear(void)
{
LCDcontrol(0x01);
wait();
}
////////////// HIEN THI 1 SO LEN LCD < 100
void putnum(unsigned char val)
{
if(val<10){
LCDwrite(val+48);
}else if(val<100){
LCDwrite(val/10+48);
LCDwrite(val%10+48);
}
}
//////////////////HIEN THI SO LEN LCD > 100
void LCD_putnum(int num)
{
unsigned char nghin,tram,chuc,donv;
nghin=num/1000;
tram=(num%1000)/100;
chuc=((num%1000)%100)/10;
donv=((num%1000)%100)%10;
LCDwrite(nghin+48);
LCDwrite(tram+48);
LCDwrite(chuc+48);
LCDwrite(donv+48);
}
//////////////////HAM PHIM BAM DIEU KHIEN/////////////////////
void dieukhien_hn(void)
{
if(K1==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(1);// vi tri co trom
delay(100);
LED1=1;
}
else{LED1=0;}// Neu khong co trom thi led bao dong tat
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu */
if(K2==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(2);// vi tri co trom
delay(100);
LED2=1;
}
else{LED2=0;} // Neu khong cos trom thi led bao dong tat
if(K3==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(3);// vi tri co trom
delay(100);
LED3=1;
}
else{LED3=0;} // Neu khong cos trom thi led bao dong tat
if(K4==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(4);// vi tri co trom
delay(100);
LED4=1;
}
else{LED4=0;} // Neu khong cos trom thi led bao dong tat
if(K5==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(5);// vi tri co trom
delay(100);
LED5=1;
}
else{LED5=0;} // Neu khong cos trom thi led bao dong tat
}
void main(void)
{
LCDinit();//Khoi tao LCD
LCDcontrol(0x82); // dua con tro den vi tri thu 4 dong 1
LCDwrite('C');
LCDwrite('H');
LCDwrite('I');
LCDwrite('P');
LCDwrite(' ');
LCDwrite('K');
LCDwrite('O');
LCDwrite('O');
LCDwrite('L');
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites("MACH CHONG TROM");
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu */
LED1=LED2=LED3=LED4=LED5=0; // Khoi tao gia tri Tat Led Bao dong
while(1)//vong lap vo han
{
dieukhien_hn();
}
}
Nguồn: Echipkool - Chia sẻ kiến thức - Kết nối đam mê điện tử
Code C:
#include <REGX51.H>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <string.h>
// Dinh nghia chan Dieu Khien
#define K1 P1_0
#define K2 P1_1
#define K3 P1_2
#define K4 P1_3
#define K5 P1_4
// Dinh nghia chan LCD
#define RS P2_0
#define RW P2_1
#define EN P2_2
#define LCDdata P0
#define BF P0_7
// Dinh nghia chan Led
#define LED1 P2_3
#define LED2 P2_4
#define LED3 P2_5
#define LED4 P2_6
#define LED5 P2_7
// Khai bao chuoi hien thi
unsigned char code string1[] = "www.echipkool.com";
unsigned char code string2[] = "Simple Is The Best";
unsigned char i,j,k;
/*********HAM DELAY***********/
void delay(unsigned char ms)
{
for(i =0;i<ms;i++)
{for(j=0;j<125;j++){;}
}
}
/*************HAM CHO***************/
void wait(void)
{
RS=0;//thanh ghi lenh
RW=1;//doc du lieu tu lcd
LCDdata=0xff;//gia tri 11111111 // khoi dong ngo vao
while(BF) //kiem tra co ban
{
EN =0;//dua xung thap en cao de chot
EN =1;//dua xung len cao
}
}
////////////////thiet lap Dieu khien LCD//////////////
void LCDcontrol(unsigned char x)
{
RS = 0;//chon thanh ghi lenh
RW =0;//ghi du lieu len lcd
LCDdata =x;
EN=1; //dua xung cao xuong thap de mo
EN=0;
wait();//doi LCD san sang
}
//////////////////Khoi tao LCD////////////
void LCDinit(void)
{
LCDcontrol(0x38);//2 dong va ma tran 5x7
LCDcontrol(0x0e);//bat man hinh,bat con tro
LCDcontrol(0x01);//xoa man hinh
}
///////////////Thiet lap du lieu co LCD/////////
void LCDwrite(unsigned char c)
{
RS=1;//Ghi du lieu
RW=0;//ghi du lieu len LCD
LCDdata=c;
EN=1;
EN=0;
wait();
}
///////////////////
void LCDwrites(unsigned char*s)
{
unsigned char data lens,count;
lens=strlen(s);
for(count=0;count<lens;count++)
{
LCDwrite(*(s+count));
}
}
//////////////HAM HIEN THI CHUOI KY TU//////////////
void SendString2LCD(unsigned char code *p)
{
unsigned char i=0;
while(p[i]!=0)
{
LCDwrite(p[i]);
i++;
delay(200);
}
}
/////////////////HAM HIEN THI DONG CHU///////////////////
void DisplayText(void)
{
// Dich con tro den vi tri thu 1, dong thu nhat
LCDcontrol(0x80);
SendString2LCD(string1);
// Dich con tro den dau dong thu hai
LCDcontrol(0xC0);
SendString2LCD(string2);
}
/////////////// XOA LCD///////////////////
void LCDclear(void)
{
LCDcontrol(0x01);
wait();
}
////////////// HIEN THI 1 SO LEN LCD < 100
void putnum(unsigned char val)
{
if(val<10){
LCDwrite(val+48);
}else if(val<100){
LCDwrite(val/10+48);
LCDwrite(val%10+48);
}
}
//////////////////HIEN THI SO LEN LCD > 100
void LCD_putnum(int num)
{
unsigned char nghin,tram,chuc,donv;
nghin=num/1000;
tram=(num%1000)/100;
chuc=((num%1000)%100)/10;
donv=((num%1000)%100)%10;
LCDwrite(nghin+48);
LCDwrite(tram+48);
LCDwrite(chuc+48);
LCDwrite(donv+48);
}
//////////////////HAM PHIM BAM DIEU KHIEN/////////////////////
void dieukhien_hn(void)
{
if(K1==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(1);// vi tri co trom
delay(100);
LED1=1;
}
else{LED1=0;}// Neu khong co trom thi led bao dong tat
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu */
if(K2==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(2);// vi tri co trom
delay(100);
LED2=1;
}
else{LED2=0;} // Neu khong cos trom thi led bao dong tat
if(K3==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(3);// vi tri co trom
delay(100);
LED3=1;
}
else{LED3=0;} // Neu khong cos trom thi led bao dong tat
if(K4==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(4);// vi tri co trom
delay(100);
LED4=1;
}
else{LED4=0;} // Neu khong cos trom thi led bao dong tat
if(K5==0)
{
LCDclear();
LCDcontrol(0x81);// dua con tro ve vi tri 2 dong thu nhat
LCDwrites(" BAO DONG ");
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites(" Co Trom ");
LCD_putnum(5);// vi tri co trom
delay(100);
LED5=1;
}
else{LED5=0;} // Neu khong cos trom thi led bao dong tat
}
void main(void)
{
LCDinit();//Khoi tao LCD
LCDcontrol(0x82); // dua con tro den vi tri thu 4 dong 1
LCDwrite('C');
LCDwrite('H');
LCDwrite('I');
LCDwrite('P');
LCDwrite(' ');
LCDwrite('K');
LCDwrite('O');
LCDwrite('O');
LCDwrite('L');
LCDcontrol(0xC0); // ep con tro ve dau dong thu 2
LCDwrites("MACH CHONG TROM");
/*LCDclear();
LCDcontrol(0x0f);//nhap nhay con tro
DisplayText();//viet chuoi ky tu */
LED1=LED2=LED3=LED4=LED5=0; // Khoi tao gia tri Tat Led Bao dong
while(1)//vong lap vo han
{
dieukhien_hn();
}
}
Nguồn: Echipkool - Chia sẻ kiến thức - Kết nối đam mê điện tử