设计功能
(1)主要采用51单片机及最小系统电路+LM393比较器电路+LCD1602液晶+电感线圈+ 按键+蜂鸣器设计而成。
(2)实现金属物质的探测,如硬币,钥匙,金属手机壳等,LED和蜂鸣器实现声光报警。
(3)按键设置探测金属的精度,掉电记忆。
(4)采用LCD1602液晶显示屏显示测量值,方便记录和更改。
原理图:
原理图及PCB绘制软件采用AD2013。金属探测原理是根据电磁感应原理制成的,将一金属置于变化的磁场当中时,根据电磁感应原理就会在金属内部产生涡流,涡流产生的磁场反过来又影响原磁场,这种变化可以转换为频率和幅值的变化,供相关电路进行检测。
金属感应电路是通过电容三点式振荡电路产生正弦波,对其放大和整形后,送入单片机,由单片机探测它频率的变化。当遇见金属时由于电磁感应原理原先建立起来的振荡将受到影响,频率将发生变化,单片机探测到这种变化后进行报警。
其总体硬件原理图如图所示。
仿真设计
仿真软件采用Protues7.8。
程序设计
程序采用C作为编程语言,使用Keil5作为编程软件;
//延时函数
void Delay_ms(uint jj)
{
uint ii;
while(jj--)
for(ii=0;ii<125;ii++);
}
void main() //函数功能:主函数
{
unsigned char Data[5],Data2[5];
Timer(); //定时器初始化
LCD1602_init();//液晶初始化
LCD1602_Disp_ZF(0x80,"NowFreq: KHz",16);
LCD1602_Disp_ZF(0x80+0X40,"SetFreq: KHz",16);
LED = 1; //关闭LED和蜂鸣器
Speak = 1;
EA=0;
x1=ISP_READ(0x2c00)*100+5000;//预设阈值为69KHz
//x1=70000;
EA=1;
while(1)
{
if(flag==1)
{
flag=0; //清标志位
if(KEY1&&KEY2)
x=T0count*65536+TH0*256+TL0; //取得时间宽度参数
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1; //TR0=1,控制开关闭合,计数脉冲进入T1计数器,启动计数
}
Data[0]='0'+x/10000;
Data[1]='0'+(x/1000)%10;
Data[2]='.';
Data[3]='0'+(x/100)%10;
Data[4]='0'+(x/10)%10;
LCD1602_Disp_ZF(0x88,Data,5); //频率
if(!KEY1)
{
Delay_ms(100);
if(!KEY1)
{
x1=x1+100;//阈值加100
EA=0;
ISP_ERASE(0x2c00); //注意:字节编程时必须要先要擦除整个扇区
ISP_PROGRAM(0x2c00, (x1-50000)/100);
EA=1;
}
}
if(!KEY2)
{
Delay_ms(100);
if(!KEY2)
{
x1=x1-100;//阈值减100
EA=0;
ISP_ERASE(0x2c00); //注意:字节编程时必须要先要擦除整个扇区
ISP_PROGRAM(0x2c00, (x1-50000)/100);
EA=1;
}
}
Data2[0]='0'+x1/10000;
Data2[1]='0'+(x1/1000)%10;
Data2[2]='.';
Data2[3]='0'+(x1/100)%10;
Data2[4]='0'+(x1/10)%10;
LCD1602_Disp_ZF(0x88+0x40,Data2,5); //阈值频率
if(x>x1)//判断,发现金属
{
LED = 0; //打开LED和蜂鸣器
Speak = 0;
Delay_ms(200);
LED = 1; //关闭LED和蜂鸣器
Speak = 1;
}
}
}
链接:https://pan.baidu.com/s/1gUahhJMd7snOUFgCs-6FEw?pwd=3cu8