功能介绍:采用51单片机作为主控CPU,采用红外接触传感器采集当前是否有人,采用震动传感器采集当前是否有震动,起到家庭防盗效果,采用按键设置当前布防/撤防状态,布防状态下:红外接触传感器检测到有人接触或者震动传感器检测到震动,蜂鸣器报警,撤防状态下,蜂鸣器停止报警,LCD1602显示相关状态,程序有中文注释,新手容易看懂,文末有资料分享链接:
下面是实物演示视频和相关实物图片
76-基于51单片机家庭红外人体检测震动报警系统(程序+原理图+元件清单全套资料)


下面是程序部分展示(程序有中文注释,新手容易看懂)
/********************************************************************* 名称 : Convert(uchar In_Date)* 功能 : 因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。* 输入 : 1602资料上的值* 输出 : 送到1602的值***********************************************************************/uchar Convert(uchar In_Date){uchar i, Out_Date = 0, temp = 0;for(i=0; i<8; i++){temp = (In_Date >> i) & 0x01;Out_Date |= (temp << (7 - i));}return Out_Date;// return In_Date;}/********************************************************************* 名称 : enable(uchar del)* 功能 : 1602命令函数* 输入 : 输入的命令值* 输出 : 无***********************************************************************/void enable(uchar del){RS = 0;RW = 0;LCD_DATA = del;E = 1;delay();E = 0;delay();}/********************************************************************* 名称 : write(uchar del)* 功能 : 1602写数据函数* 输入 : 需要写入1602的数据* 输出 : 无***********************************************************************/void write(uchar del){RS = 1;RW = 0;LCD_DATA = del;E = 1;delay();E = 0;delay();}/********************************************************************* 名称 : L1602_init()* 功能 : 1602初始化,请参考1602的资料* 输入 : 无* 输出 : 无***********************************************************************/void lcd1602_init(void){enable(0x38);enable(0x0c);enable(0x06);enable(0x01);enable(0xd0);}/********************************************************************* 名称 : L1602_char(uchar hang,uchar lie,char sign)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下L1602_char(1,5,'b')* 输入 : 行,列,需要输入1602的数据* 输出 : 无***********************************************************************/void L1602_char(uchar hang,uchar lie,char sign){uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;enable(a);write(sign);}/********************************************************************* 名称 : L1602_string(uchar hang,uchar lie,uchar *p)* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下L1602_string(1,5,"ab cd ef;")* 输入 : 行,列,需要输入1602的数据* 输出 : 无***********************************************************************/void L1602_string(uchar hang,uchar lie,uchar *p){uchar a;if(hang == 1) a = 0x80;if(hang == 2) a = 0xc0;a = a + lie - 1;enable(a);while(1){if(*p == '\0') break;write(*p);p++;}}
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

原理图采用【AD】altium designer打开,文件中有安装包


下面是资料包里面包含的相关文件展示

本文介绍了使用51单片机构建的家庭防盗系统,集成红外接触和震动传感器,可通过按键控制布防/撤防,LCD1602显示状态并配有中文注释便于新手理解。附带了原理图和下载资源链接。
1884

被折叠的 条评论
为什么被折叠?



