导航:首页 > 操作系统 > 用单片机对干簧管通断次数计数

用单片机对干簧管通断次数计数

发布时间:2025-06-22 08:49:45

㈠ 51单片机和干簧管怎么连接,怎么用

干簧管,当有磁铁靠近干簧开关时(反之亦然)干簧片就会关闭

在单片机中的应用一般是用来作检测干簧管状态(开关的通断)来完成某种功能的检测。

㈡ 如何将干簧管脉冲信号通过单片机实现到数码管显示

将干簧管脉冲信号通过单片机实现到数码管显示:


/********************************************************************

*文件名:TLC549.c

*描述:该程序实现了对TLC549的控制。通过TLC549把电压转换为数字信号并通过数码管显示出来。实际工作中进行AD采样时,一般都要把AD信号处理后再用。在这里,采集了30次,去掉最大和最小的5个,中间20个取平均值,最大限度的保证了所要采集AD的准确性。

***********************************************************************/

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitAD_Out=P3^2;//TLC549输出端

sbitCS=P1^0;//TLC549片选信号

sbitAD_In=P1^1;//TLC549输入端

ucharcodetable[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

ucharcodetable_d[10]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};//带点数码管显示

/********************************************************************

*名称:AD_Change(void)

*功能:TLC549驱动程序,在“视频及教程”中有讲解。

*输入:无

*输出:temp(电压值)

***********************************************************************/

ucharAD_Change(void)

{

uchari,temp=0;

CS=0;

_nop_();

_nop_();

_nop_();

_nop_();

for(i=0;i<8;i++)

{

AD_In=1;

_nop_();

_nop_();

temp=temp<<1;

if(AD_Out==1)temp+=1;

AD_In=0;

_nop_();

_nop_();

}

CS=1;

returntemp;

}

/********************************************************************

*名称:Delay()

*功能:延时,延时时间为1ms*del

*输入:del

*输出:无

***********************************************************************/

voidDelay(uintdel)

{

uchari,j;

for(i=0;i

for(j=0;j<=148;j++)

;

}

/***********************************************************************

*名称:Average()

*功能:中位值平均滤波法,取一共三十个数据,最大和最小的五个数据不要

对中间的二十个数据求平均值

*输入:三十个待处理的值

*输出:得到一个中位的平均值

***********************************************************************/

uintAverage(uintbuffer[30])

{

uchari,j;

uinttemp;

for(i=1;i<30;i++)////先对整个数组的三十个值进行从小到大的排列

for(j=29;j>=i;--j)

{

if(buffer[j-1]>buffer[j])

{

temp=buffer[j-1];

buffer[j-1]=buffer[j];

buffer[j]=temp;

}

}

////对数组进行处理,去掉一个最大值和一个最小值,中间的二十个值再来求平均值

temp=0;

for(i=5;i<25;i++)

{

temp+=buffer[i];

}

temp=(uint)(((float)temp)/20+0.5);

return(temp);

}

/***********************************************************************

*名称:AD_Filter()

*功能:进行AD采集30次,并进行滤波处理

*输入:三十次AD采集值

*输出:经过处理后的AD值

***********************************************************************/

uintAD_Filter()

{

uintDate_Buffer[30]={0},temp;

uchari;

for(i=0;i<30;i++)

{

Date_Buffer[i]=AD_Change();

Delay(1);//延时1毫秒采集一次。这里可以根据工作需要调整时间。

}

temp=Average(Date_Buffer);

return(temp);

}

/********************************************************************

*名称:Main()

*功能:主函数

*输入:无

*输出:无

***********************************************************************/

voidMain()

{

uinti=0,temp;

uintj;

P2=0x00;

P1=0xff;

while(1)

{

temp=AD_Filter();

j=temp*2;

for(i=0;i<40;i++)

{

P0=table_d[j/100];

P2=0x04;

Delay(10);

P0=table[j/10%10];

P2=0x02;

Delay(10);

P0=table[j%10];

P2=0x01;

Delay(10);

}

}

}

阅读全文

与用单片机对干簧管通断次数计数相关的资料

热点内容
qq网警巡查编程代码免费复制 浏览:558
索贝程序员 浏览:583
支付受理终端注册数据规范解压 浏览:123
89c52单片机最小系统 浏览:310
国内可以连接国外云服务器吗 浏览:781
python第二章程序练习题 浏览:110
数控编程数据库有哪些 浏览:225
程序员那么可爱下载RMVB下载 浏览:193
把新建文件夹删除了 浏览:812
安卓面试考算法吗 浏览:650
怎么用正形纸做解压玩具 浏览:32
ev3编程表演 浏览:203
cg100编程器软件下载 浏览:744
怎么爬手机app数据 浏览:111
如何构建linux分布式服务器 浏览:252
解密码压缩软件 浏览:461
陈鼓应老子今注今译pdf 浏览:2
linuxmysql查询版本 浏览:688
编程什么是P和C的意思 浏览:980
安卓手机方块里边一个问号怎么打 浏览:300