《簡(jiǎn)易金屬探測(cè)器制作》由會(huì)員分享,可在線閱讀,更多相關(guān)《簡(jiǎn)易金屬探測(cè)器制作(11頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、金屬探測(cè)器
元件清單
提供Altium Designer 6.9和Protel99 SE所用格式的原理圖和PCB,
此外,原理圖分兩種網(wǎng)絡(luò)標(biāo)號(hào)連接和使用線直接連接,并有PDF格式的原理圖和PCB圖,方便使用和查看。
1、 提供KEIL編寫程序工程和程序的文本文檔文件方便打開(kāi),程序詳盡注釋。
二、功能說(shuō)明
1、實(shí)現(xiàn)金屬物質(zhì)的探測(cè),如硬幣,鑰匙,金屬手機(jī)殼等,LED和蜂鳴器實(shí)現(xiàn)聲光報(bào)警。
2、按鍵設(shè)置探測(cè)金屬的精度。
3、LED顯示高、中、低。三種精度。
4、結(jié)構(gòu)簡(jiǎn)潔,穩(wěn)固,高效。
本系統(tǒng)采用USB電源供電,提供電源線,可以插到電腦、手機(jī)充電器、充電寶上供電,十分方
2、便。
三、按鍵說(shuō)明
系統(tǒng)有一個(gè)按鍵,設(shè)置精度加和精度減。
使用時(shí),將金屬物質(zhì)放到線圈的上方或線圈中間,系統(tǒng)會(huì)自動(dòng)報(bào)警
程序:
#include
#define uchar unsigned char
#define uint unsigned int
bit flag; //定義標(biāo)志位,確定是否到了1s
unsigned long x=0,x1=0,x2=0;
uchar T0count; //從T0的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值
uchar timecount;
sbi
3、t LED = P2^0;//LED引腳定義
sbit Speak = P2^1;//蜂鳴器引腳定義
sbit KEY = P1^0;//按鍵1
void Timer(void);
//延時(shí)函數(shù)
void Delay_ms(uint jj)
{
uint ii;
while(jj--)
for(ii=0;ii<125;ii++);
}
void main() //函數(shù)功能:主函數(shù)
{
unsigned char k=5,j=0;
Timer(); //定時(shí)器初始化
LED = 1; //關(guān)閉LED和蜂鳴器
4、 Speak = 1;
P0 = 0X00;
Delay_ms(3000);
x1=0;
while(k)
{
if(flag==1)
{
k--;
flag=0; //清標(biāo)志位
x=T0count*65536+TH0*256+TL0; //取得時(shí)間寬度參數(shù)
x1 = x1+x;
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
5、 //TR0=1,控制開(kāi)關(guān)閉合,計(jì)數(shù)脈沖進(jìn)入T1計(jì)數(shù)器,啟動(dòng)計(jì)數(shù)
}
Delay_ms(1000);
}
x1 = x1/5;
LED = 0; //關(guān)閉LED和蜂鳴器
Speak = 0;
P0 = 0XFF;
Delay_ms(200);
LED = 1;
Speak = 1;
P0 = ~0X01;
x2 = x1+100;
while(1)
{
if(flag==1)
{
flag=0;
6、 //清標(biāo)志位
x=T0count*65536+TH0*256+TL0; //取得時(shí)間寬度參數(shù)
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1; //TR0=1,控制開(kāi)關(guān)閉合,計(jì)數(shù)脈沖進(jìn)入T1計(jì)數(shù)器,啟動(dòng)計(jì)數(shù)
}
if(!KEY)
{
Delay_ms(20);
if(!KEY)
{
j++;
if(j==3)j=0;
if(j==0)
{
7、
x2 = x1+80;
P0 = ~0X01;
}
if(j==1)
{
x2 = x1+110;
P0 = ~0X02;
}
if(j==2)
{
x2 = x1+140;
P0 = ~0X04;
}
while(!KEY);
}
}
if(x>x2)//判斷,發(fā)現(xiàn)金屬
{
LED = 0; //打開(kāi)LED和蜂鳴器
Speak = 0;
Delay_m
8、s(200);
LED = 1; //關(guān)閉LED和蜂鳴器
Speak = 1;
}
}
}
void t0() interrupt 1 using 0 //T0中斷服務(wù)
{
T0count++; //對(duì)P3。4口的脈沖進(jìn)行計(jì)數(shù)
}
void t1(void) interrupt 3 using 0 //T1中斷服務(wù)
{
TH1=(65536-3689)/256; //計(jì)數(shù)初值重裝載
T
9、L1=(65536-3689)%256;
timecount++;
if(timecount==25)
{ TR0=0;
timecount=0;
flag=1; // 置標(biāo)志
}
}
void Timer(void)
{
TMOD=0x15; //T0工作為16位計(jì)數(shù)器(方式1),T1工作方式為16位定時(shí)器
TH0=0; //計(jì)數(shù)為65536
10、
TL0=0; //
TH1=(65536-4000)/256; //定時(shí)器采用定時(shí)4ms. 初值為4000
TL1=(65536-4000)%256;
TR1=1; //TR1=1,控制開(kāi)關(guān)閉合,計(jì)數(shù)脈沖進(jìn)入T1計(jì)數(shù)器,啟動(dòng)定時(shí)
TR0=1; //TR0=1,控制開(kāi)關(guān)閉合,計(jì)數(shù)脈沖進(jìn)入T1計(jì)數(shù)器,啟動(dòng)計(jì)數(shù)
ET0=1; //定時(shí)器0開(kāi)中斷 必須關(guān)閉?。。?!
ET1=1; //定時(shí)器1開(kāi)中斷
EA=1; //CPU開(kāi)中斷
}