76-基于51单片机家庭红外人体检测震动报警系统源程序、原理图、元件清单实物制作

功能介绍:采用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打开,文件中有安装包

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

 百度云盘资料下载链接

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值