问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-29 06:40

我来回答

5个回答

热心网友 时间:2023-10-09 18:17

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


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

* 文件名  : TLC549.c

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

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

#include

#include

#define uchar unsigned char

#define uint  unsigned int 

sbit AD_Out = P3^2;    //TLC549输出端

sbit CS = P1^0;     //TLC549片选信号

sbit AD_In = P1^1;    //TLC549输入端

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

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

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

* 名称 : AD_Change(void)

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

* 输入 : 无

* 输出 : temp (电压值)

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

uchar AD_Change(void)

{

 uchar i,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;

 return temp; 

}

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

* 名称 : Delay()

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

* 输入 : del

* 输出 : 无

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

void Delay(uint del)

{

 uchar i, j;

 for(i=0; i

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

 ; 

}

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

* 名 称: Average()

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

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

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

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

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

uint Average(uint buffer[30])

{

 uchar i,j;

 uint temp;

 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值

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

uint AD_Filter()

{

 uint Date_Buffer[30] = {0}, temp;   

 uchar i;

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

 {

  Date_Buffer[i] = AD_Change();

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

 }

 temp = Average(Date_Buffer);  

 return(temp);

}

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

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

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

void Main()

{

 

 uint i = 0,temp; 

 uint j;

 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);

  }

 }

}

热心网友 时间:2023-10-09 18:17

请先深刻理解干簧管和霍尔传感器区别和相同点,这2种传感器用的场合有点类似.

干簧管:机械结构,有常开,常闭2种,适合低速场合,成本较低(就是个开关)

霍尔传感器:根据磁钢的霍尔效应并经过运放放大和比较输出高低电平的开关变化(也有集电极开路),可适合高速场合测速,成本较高.

所以干簧管脉冲信号可以和手动开关一样与单片机中断脚或IO口相连,电容是可选的,再经过你软件的去抖和周期判断输出给数码管显示. 附张图你就清楚了!

热心网友 时间:2023-10-09 18:18

不难。一端接一IO口,另一端接地就可以了。
我做的自行车里程表就是用干簧管传感,计车轮圈数的。

热心网友 时间:2023-10-09 18:19

干簧管输出为干接点信号,将一端接地,另一端通过电阻接电源,接电阻端与单片机IO口(计数器计数输入引脚、计数器捕获引脚、外部中断引脚或普通IO口均可),当干簧管闭合时,单片机检测到得电平为低电平,干簧管断开时,单片机检测到的是高电平。如果是计数器捕获捕获,可开启防扰动功能,如果是外部中断引脚,可设置为下降沿中断。如果单片机引脚本身无抗扰动措施,软件增加防扰动处理。

热心网友 时间:2023-10-09 18:19

首先频率不能太高,这个问题其实不是很难,我的学习板上就有数码管,加上干簧管,编上程序就OK了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 恩什么兼什么成语? 兼的组词,和成语各一个 FPGA:TLC549如何采集方波信号,算出幅度,要Verilog HDL的 以兼开头的成语 关于tlc549单片的电压表程序 包含兼字的四字成语 带兼的成语有哪些 无限元宝页游公益服 甘油对皮肤有没有副作用 化妆品里面甘油有什么作用? 安徽宏村几星级旅游 电动车如何提高把手? 求解:Office 2010 Excel表格 试题操作。 zeipou打火机怎么看真假 Excel2010实操问题 芝宝打火机真假辨别 二手房贷款怎么实现低首付 低首付怎么办理? 歌曲MV怎样下载? 怎么下载歌曲mv 关于清兼的成语? 兼什么并什么成语疯狂猜成语 动态心电图tlc5000怎样查看自己的实时心电图 施工图中的TLC TLCB、GLC 分别是什么窗的意思? 北京小企业基本开在哪家银行开户费用较少? 北京哪家银行能给企业银行开户 最强大脑最后一场谁去现场看了?,谁赢了? 老婆和妈妈掉水里先救谁有没有相关法律 最强大脑第13关怎么过 最强大脑中的王峰的老婆是谁 最强大脑第七关求答案 在丽江古城哪里报当地纯玩团?谢谢 安全辅助是什么 喝酸梅酒有什么好处 酸梅酒有何益处 乌梅酒的功效? 幼儿经常拉肚子怎么办? 16岁当兵了 算违法吗 mac系统崩溃了网络恢复超级慢怎么办 苹果电脑装的win7系统崩溃了怎么办,着急啊