一、压缩包资料内容
- (1)、基于51单片机的电子万年历多路热释电红外报警器proteus仿真设计一份;
- (2)、基于51单片机的多路热释电红外报警器proteus仿真设计keli源代码一份;
- (3)、基于51单片机的多路热释电红外报警器Altium designer 的原理图一份;
- (4)、基于51单片机的多路热释电红外报警器Altium designer 的PCB一份;
- (5)、基于51单片机的多路热释电红外报警器元器件清单一份;
- (6)、基于51单片机的多路热释电红外报警器proteus仿真与实物设计视频讲解一份;
二、设计要求
- (1)、本次设计要求以51系列单片机为核心,设计一多路红外热释电报警装置;
- (2)、可通过按键打开并且关闭报警装置;
- (3)、系统实现数码管显示哪一路红外热释电报警;
三、相关资料截图
图一、基于51单片机的多路热释电红外报警器proteus仿真界面截图
图二、基于51单片机的多路热释电红外报警器Keil源程序界面截图
图三、基于51单片机的多路热释电红外报警器Altium designer 原理图界面截图
图四、基于51单片机的多路热释电红外报警器Altium designer PCB界面截图
图五、基于51单片机的多路热释电红外报警器实物设计照片
四、视频讲解
私信获取全部内容
部分源代码
#include<AT89X51.H>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0x41,0x7B,0x46,0x52,0x78,0xD0,0xC0,0x5B,
0x40,0x50,0x48,0xE0,0xC5,0x62,0xC4,0xCC};
uchar a[6];
uchar b[6];
sbit kai=P1^0;
sbit guan=P1^1;
sbit reshi1=P1^2; //5个热释红外信号检测输入
sbit reshi2=P1^3;
sbit reshi3=P1^4;
sbit reshi4=P1^5;
sbit reshi5=P1^6;
sbit beel=P1^7; //蜂鸣器报警输出
uchar moshi=0; //工作模式
uchar rs1=0,rs2=0,rs3=0,rs4=0,rs5=0,flag=0,out=0;
void fenli(); //信号分离
void delay(uint xms) //延时
{
int i,j;
for(i=xms;i>0;i--) for(j=110;j>0;j--);
}
void keyscan() //按键扫描
{
if(kai==0) //开始键按下
{
delay(3); //延时
if(kai==0) //再判
{
while(!kai); //等待释放
moshi=0; //模式等于0
beel=0; //关蜂鸣器
delay(500); //延时
beel=1; //开蜂鸣器
}
}
if(guan==0) //关键按下
{
delay(3);
if(guan==0)
{
while(!guan);
moshi=1; //模式等于1
beel=0; //关蜂鸣器
delay(500); //延时
beel=1; //开蜂鸣器
}
}
}
void checkreshi() //检测热释红外信号
{
if(reshi1==0) { rs1=1; a[1]=1; }
else { rs1=0;a[1]=0; }
if(reshi2==0) { rs2=1;a[2]=2; }
else { rs2=0;a[2]=0; }
if(reshi3==0) { rs3=1;a[3]=3; }
else { rs3=0;a[3]=0; }
if(reshi4==0) { rs4=1;a[4]=4; }
else { rs4=0;a[4]=0; }
if(reshi5==0) { rs5=1;a[5]=5; }
else { rs5=0; a[5]=0; }
flag=rs1+rs2+rs3+rs4+rs5; //热释红外信号进行或操作
fenli(); //热释红外位置分离
}
void fenli()
{
uchar l;
out=0;
for(l=6;l>0;l--)
{
if(a[l]!=0)
{
//b[out]=a[l];
//out++;
P3=table[a[l]]; //显示热释红外信号编号
delay(400);
keyscan();
}
else
{
P3=0x41; //显示-
keyscan();
}
}
}
/*
void display()
{
uint k;
for(k=0;k<flag+1;k++)
{
}
} */