如何将干簧管脉冲信号通过单片机实现到数码管显示?
大哥,学这么多什么用,一语言种类懂的再多,还不如一个精深一们语言的人,就好比你说自己会C、C++、汇编、C#、VB等等等等,但是都只懂一点,有人只会一门语言,而且是高手中的高手,别的都白痴,你们一起应聘程序员,你说老板会选谁?
《2015年北京理工大学《软件工程专业基础综合》考研辅导命题规律分析及考点精讲.pdf》百度网盘资源免费下载
链接:https://pan.baidu.com/s/1E5DBIMX7FNegTJzPbAqANQ
?pwd=zw81 提取码:zw81
2015年北京理工大学《软件工程专业基础综合》
将干簧管脉冲信号通过单片机实现到数码管显示:
/********************************************************************
* 文件名 : 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);
}
}
}
请先深刻理解干簧管和霍尔传感器区别和相同点,这2种传感器用的场合有点类似.
干簧管:机械结构,有常开,常闭2种,适合低速场合,成本较低(就是个开关)
霍尔传感器:根据磁钢的霍尔效应并经过运放放大和比较输出高低电平的开关变化(也有集电极开路),可适合高速场合测速,成本较高.
所以干簧管脉冲信号可以和手动开关一样与单片机中断脚或IO口相连,电容是可选的,再经过你软件的去抖和周期判断输出给数码管显示. 附张图你就清楚了!
不难。一端接一IO口,另一端接地就可以了。
我做的自行车里程表就是用干簧管传感,计车轮圈数的。
干簧管输出为干接点信号,将一端接地,另一端通过电阻接电源,接电阻端与单片机IO口(计数器计数输入引脚、计数器捕获引脚、外部中断引脚或普通IO口均可),当干簧管闭合时,单片机检测到得电平为低电平,干簧管断开时,单片机检测到的是高电平。如果是计数器捕获捕获,可开启防扰动功能,如果是外部中断引脚,可设置为下降沿中断。如果单片机引脚本身无抗扰动措施,软件增加防扰动处理。
首先频率不能太高,这个问题其实不是很难,我的学习板上就有数码管,加上干簧管,编上程序就OK了
水流开关的发展历史
这类开关工作性能稳定,被广泛应用在各类设备上面。而且有部份活塞式水流开关可调节干簧管工作点来改变流量信号,所以是各类设备的首选。但是这类开关成本稍高,价格也就偏贵一点。2000年后,霍尔元件的应用,出现了输出脉冲信号的的转子式水流开关,这类水流开关配合芯片可以检测出水流量的大小,但是由于设计...
光电耦合器如何判断?
在发光二极管上提供一个偏置电流,再把信号电压通过电阻耦合到发光二极管上,这样光电晶体管接收到的是在偏置电流上增、减变化的光信号,其输出电流将随输入的信号电压作线性变化。光电耦合器也可工作于开关状态,传输脉冲信号。在传输脉冲信号时,输入信号和输出信号之间存在一定的延迟时间,不同结构的光电...
防盗报警器原理(光电三极管)
首先,将发射机部分中的干簧管两端用短接线短路,让发射机一直工作,接通接收部分的电源,先将R16焊开,将示波器的探头接在图2中IC1(LM358)的⑦脚处,将发射机靠近接收机(相距20cm左右),用无感起子调节发射机的微调电容C3和接收机的微调电容C9,直到示波器上有编码脉冲显示为止。再拉开发射机和接收机的距离,使发射机...
涡轮流量计有哪几种分类方法?
3.笛簧管(干簧管)式。嵌在叶轮(或与其同步的其他旋转元件)里的永磁性材料周期地打开和闭合传感器壳体外笛管的簧片触电,这种开关作用使恒流(或恒压)源产生电脉冲信号。4.光电式。叶轮叶片或叶轮驱动的元件随着叶轮旋转,周期性地遮断光束,所产生的光脉冲信号转换成电脉冲信号,近年出现光纤传输方式...
家居智能化的远程计量
霍尔元件型的基本原理是?在普通转盘计数的水表或燃气表中加装霍尔元件和磁铁,这样便构成基于磁电转换技术的传感器。霍尔元件固定安装在计数转盘附近永久性磁铁经过霍尔元件一次,即在信号端产生一个计量脉冲对应0.01m3。上述二种前端数据采集器均以永久性磁铁经过传感器时,由于磁场的作用产生吸力使干簧管或...
直流24V电机,干簧管测速,怎么才能提高测速精度?
步进电机是转换为角位移或线位移的脉冲信号。首先,过载还是不错的。其速度与负载的大小,不像普通电机,当使用步进电机的速度和位置,都有严格的要求,当发生负载增加率下降;第二是容易控制。根据“步骤”作为一个单元转动的步进电机,数字特征是显而易见的;第三个是简单的整体结构。传统的机械速度和...
如何将脉冲信号转变成数字信号并显示
把脉冲信号转换成频率,然后再通过运放转成电信号
电子的开关
应该是没有卖的,自己可以设计一个嘛.采用分屏器将信号进行分频,调整到每分钟100次就输出一个信号.再用标准的信号进行比较,合格就输出1,不合格就输出0
水表要是干扰关闭怎么办
1、源头控制:采用非磁性材料,磁性材料由于有成本低廉的特点,所以被广泛采用。但磁性材料比较容易受干扰,因此应当加以考虑。利用防磁圈,防磁圈保护机芯不被干扰,保证计量精准,同时采用双干簧管,保证表盘不受磁场攻击,保证信息传输。2、过程控制:IC卡智能水表在遇到磁性物质干扰后,应会将阀门作关闭...
请问什么是 流水开关 他的工作原理是什么?谢谢
而且有部份活塞式水流开关可调节干簧管工作点来改变流量信号,所以是各类设备的首选。但是这类开关成本稍高,价格也就偏贵一点。2000年后,霍尔元件的应用,出现了输出脉冲信号的的转子式水流开关,这类水流开关配合芯片可以检测出水流量的大小,但是由于设计等原因,部份转子式水流开关在水流太小时无法转动或...
罗秋细辛: <p>请先深刻理解干簧管和霍尔传感器区别和相同点,这2种传感器用的场合有点类似.</p> <p>干簧管:机械结构,有常开,常闭2种,适合低速场合,成本较低(就是个开关)</p> <p>霍尔传感器:根据磁钢的霍尔效应并经过运放放大和比较输出高低电平的开关变化(也有集电极开路),可适合高速场合测速,成本较高.</p> <p>所以干簧管脉冲信号可以和手动开关一样与单片机中断脚或IO口相连,电容是可选的,再经过你软件的去抖和周期判断输出给数码管显示. 附张图你就清楚了!</p> <p></p>
明水县15150661942: 大家好,求教如何用单片机来检测干簧管的通断信号??? - ?
罗秋细辛: 这个问题很简单,如果你会单片机设计的话.把信号经过光耦隔离入单片机IO口就可以检测了(也可以不用光耦隔离,根据信号的性质).
明水县15150661942: 如何用单片机输出脉冲信号 - ?
罗秋细辛: 利用单片机产生脉冲信号有多种方法.最简单的方法,就是在单片机的程序中对一个引脚反复置1,清0,置1,清0....,这个引脚上就会出现脉冲信号. 当需要产生指定周期和宽度的脉冲信号时,通常使用单片机中的计数器来实现:给计数器赋于不同的计数初值,在计数到0时产生中断去置1或清0某引脚即可.
明水县15150661942: 如何实现单片机产生脉冲? - ?
罗秋细辛: 由于8051并没有pwm模块,那么要产生pwm信号就必须用软件延时或者计时器来模拟产生.1、定时器法:将定时器设置成定时中断,分两次进中断,一次给控制端口送高电平,一次送低电平.高低电平的定时的时间要看控制的要求而定.这种方法的缺点是频率不是很高.2、软件延时法,可以设置一个延时函数,时间到就转换io电平也可以产生pwm信号.
明水县15150661942: 怎样用51单片机输出一个脉冲信号? - ?
罗秋细辛: 编写软件定时程序,在需要的时间翻转端口电平,也就是取反就行,然后重复执行.如果要用51的定时器,那你可以先算出参数,看看用哪种模式好,最好用自动重装方式,时间一到,开中断把欲输出的端口取反就行.
明水县15150661942: 如何用51系列单片机发射脉冲? - ?
罗秋细辛: 51单片机本身就有两个自带的可编程定时器/计数器T1,T2有四种工作方式,只要写入控制字和设置记数初值,就可以输出不同频率的脉冲.51单片机的为6M HZ,所以存入的值可以计算的为0F0H,选用方式1,控制字 MOV TMOD,#01H ;选用方式1 MOV TL0,#0F0H ;装入初值 SETB TR0 ;启动 SETB ET0 ;允许中断 SETB EA ;CUP开放中断
明水县15150661942: 如何使用干簧管作为单片机的外部中断输入信号?中断是以上升沿作为触发的. - ?
罗秋细辛: 去longwaywork.5d6d.соМ(输入时重新打一遍,复制粘贴不行),那里有几个得电子设计国赛一等奖的学长.
明水县15150661942: 单片机如何发出脉冲信号 - ?
罗秋细辛: 什么单片机啊,最一般的用定时器中断设置io口的高低电平就可以,要是有PWM功能的就更方便了
明水县15150661942: 求:单片机80c51怎么做脉冲信号发生器 - ?
罗秋细辛: * 程序名称:PWM占空比调整演示程序 * *程序思路说明: * * 只需要4个按键. * *关于频率和占空比的确定,对于12M晶振,输出频率为1KHZ,这样定时中断次数设定为 **10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01...
明水县15150661942: 如何用单片机产生PWM - ?
罗秋细辛: /*--------------- 文件名称: PWM.C 功能 :单片机脉冲方式产生PWM信号 ----------------*/ #include <reg52.h> // 引用标准库的头文件 #include <absacc.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define COUNT0 ...