怎么通过单片机检测脉冲信号io检测3高3低的脉冲信号

查看: 4621|回复: 8
[求助]用数字IO口检测一个端口的3中状态{悬空,低电平,高电平},内有自写程序与电路。已
//& && && & VCC
& && && && &_|_
& && && && &| |
& && && && &| |1k
& && && && &|_|
& && && && & |
PINx ---+-& &&&
& && & _|_&&_|_
& && & | |&&| |
& & 47K| |&&| |1k
& && & |_|&&|_|
& && &&&|____|
& && & GND
-------------------------
外部下拉 PORTx(Pull-up)& &上拉VCC 下拉GND PINx
& &0& && &1& && && && && && &-& && & -& & 1
& &0& && &0& && && && && && &-& && & -& & 0
& &0& && &1& && && && && && &1& && & -& & 1
& &0& && &0& && && && && && &1& && & -& & 1
& &0& && &1& && && && && && &-& && & 0& & 0
& &0& && &0& && && && && && &-& && & 0& & 0
注:- 未接通
& & 1 接通后高电平
& & 0 接通后低电平& && &
---------------------------
检测方法 切换内部上拉电阻检测两次引脚电平,两次检测值不同的为引脚悬空;两次同为高电平的引脚接VCC;两次同为低电平的引脚接GND。测分辨出三种状态。
-------------------------
外部下拉电阻:
引脚输入模式开内部上拉,
电阻值& &引脚外部测量电压
1M& && & 5v
470k& &&&4.7v
100k& &&&3.7v
56k& && &3v
47k& && &2.7v
22k&&1.88v
47k效果最好,失误判断空最少。阻值越大,悬空越容易判断成高电平,越低,易判断成低电平。
---------------------------------------
/* io 地址到 ram地址偏移地址0x20
PORTx =DDRx = addr -1;PINx = addr -2;
char Read_3Spin(unsigned char ptrPORT,unsigned char n)
{& & & & unsigned char tmp=0,valIO=0;
& & & & (*(volatile unsigned char *)(ptrPORT+0x20-1)) &= ~( 1 && n );//DDRx.n = 0& & & &
& & & & //check IO N
& & & & (*(volatile unsigned char *)(ptrPORT+0x20))&&|=&&( 1 && n );//Inner Pull-up
& & & & asm(&nop&);//wait IO change
& & & & asm(&nop&);
& & & & asm(&nop&);
& & & & & & & & asm(&nop&);//wait IO change
& & & & asm(&nop&);
& & & & asm(&nop&);
& & & & tmp = (*(volatile unsigned char *)(ptrPORT+0x20-2)) & ( 1 && n );//read PINx.n
& & & & (*(volatile unsigned char *)(ptrPORT+0x20))&&&=&&~( 1 && n );//Not Inner Pull-up
& & & & asm(&nop&);//wait IO change
& & & & asm(&nop&);
& & & & asm(&nop&);
& & & & & & & & asm(&nop&);//wait IO change
& & & & asm(&nop&);
& & & & asm(&nop&);
& & & & valIO = (*(volatile unsigned char *)(ptrPORT+0x20-2)) & ( 1 && n );//read PINx.n& & & & & & & &
& & & & if(tmp != valIO)
& & & & & & & & return -1;
& & & & }else if(valIO & 0)
& & & & & & & & return 1;
& & & & }else if(valIO == 0)
& & & & & & & & return 0;& & & &
& & & & return 3;
--------------------------
寻求更加方案。
虽然在ADC引脚中,可以使用ADC,Rs电压分组。但是接口就复杂了。
-------------------------
有电路有程序哦。
我以前用过的一种方法:
引脚外部接法:
& && &&&1~10K& &
PINx -|_____|--+-----------& && &
& && && && && &|
& && && && &&&---
& && && && &&&---&&0.1uF
& && && && && &|
& && && && && &|
& && && && && &|
& && && && &&&GND&&
检测步骤如下:
1、PINx设置为输出,并且输出为0 -------------------------------------&(先把电容的电放了)
2、1秒钟后,PINx输出高电平------------------------------------------&(主动给电容充电)
3、0.5秒后把PINx设置为输入,上拉电阻关闭----------------------------&(如果引脚接地了,则电容的电很快放完了)
4、再过0.5秒后读PINx的值,如为0,则该引脚接GND
5、如在第4步检测到的值为1,则接着把PINx设置为输出,并且输出低电平---&(给电容放电)
6、0.5秒后PINx设置为输入,上拉电阻关闭------------------------------&(如果该引脚接VCC,则VCC会给电容充电)
7、0.5秒后读PINx的值,如为1,则该引脚接VCC,为0则该引脚悬空
--------------------------------------
修改原因:修改病句和错别字
很好的方法啊!
不过时间太长了。
很有意思,有更快的就好了
//这样应该快些:
& && && && &VCC
& && && && &_|_
& && && && &| |
& && && && &| |1M
& && && && &|_|
& && && && & |
& && & ____&&|
PINx -|____|-+------被测端口
& && &&&1K
//程序大概这样(以PINx = PB0为例):
#define SBIT(x,y)& & & & & & & & (x|=(1&&y))
#define CBIT(x,y)& & & & & & & & (x&=~(1&&y))
//端口初始化函数
void port_init(void)
& & PORTB = 0x00;
& & DDRB = 0x01;
& & ......
//检测函数(假设主程序中没有中断,否则改用计数器计时)
unsigned char check(void)
& & unsigned char i = 0;
& & CBIT(DDRB, PB0);
& && &&&if(!BIT(PINB, PB0))
& && && && &
& & }while(++i & ?);
& & SBIT(DDRB, PB0);
& & if(i == 0)
& && &&&return 1;& && &&&//低电平
& & if(i & 0 && i & ?)
& && &&&return 2;& && &&&//悬空
& & if(i == ?)
& && &&&return 3;& && &&&//高电平
&?&这个值估计取10以内。
原理是什么啊!楼上
看程序似乎是检测PINx有???曲线?
悬空为什么会出现0,1交替电平了。
更具我的程序测试
悬空是电压为0.67的样子,判断零。而且在电平转换是会有误差
如: 高电平变成空后,会有高低交替的情况发生。
有1M上拉,被测脚悬空不会出现电平高低变化的,只会是高电平。
原理就是:PINx状态从0到1的时间由被测脚状态决定,就是里面的三个判断条件。
引脚变化时间。好酷!
周末测试先。
阿莫电子论坛, 原"中国电子开发网"您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
3.2.2单片机引脚-3.3-io口使用-3.4应用系统构成.ppt-山东大学课程.ppt 68页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:100 &&
3.2.2单片机引脚-3.3-io口使用-3.4应用系统构成.ppt-山东大学课程
你可能关注的文档:
··········
··········
4、典型的三极管控制电路 当需要驱动的功率器件较多时,建议采用ULN2008,其内部采用达林顿结构,是专门用来驱动继电器的芯片,甚至在芯片内部做了一个消去线圈反电动势的二极管。 ULN2008的输出端允许通过IC电流200mA,饱和压降VCE约为1V左右,耐压BVCEO约为36V。 输出口的外接负载可根据以上参数估算。采用集电极开路输出,输出电流大,可以直接驱动继电器或固体继电器(SSR)。 ULN2008可以驱动8个继电器。 * * §3.3单片机的I/O口的使用 5、I/O外部状态的输入 存在的问题:
当I/O口工作于准双向口时,
由于STC15F2K60S2单片机是1个时钟周期(1T)的8051单片机,速度很快, 如果通过指令执行由低变高指令后立即读外部状态,此时由于实际输出还没有变高,有时可能读入的状态不对。 解决方法:在软件设置由低变高后加1到2个空操作指令延时,然后再读I/O口的状态。 * * 6、P1.7/XTAL1与P1.6/XTAL2的特别说明 STC15F2K60S2系列单片机的所有I/O口上电复位后均为准双向口/弱上拉模式。 但是由于P1.7和P1.6口还可以分别作外部晶体或时钟电路的引脚XTAL1和XTAL2,所以P1.7/XTAL1和P1.6/XTAL2上电复位后的模式不一定就是准双向口/弱上拉模式。 当P1.7和P1.6口作为外部晶体或时钟电路引脚XTAL1和XTAL2使用时,P1.7/XTAL1和P1.6/XTAL2上电复位后的模式是高阻输入。 * * 6、P1.7/XTAL1与P1.6/XTAL2的特别说明 每次上电复位时, 单片机对P1.7/XTAL1和P1.6/XTAL2的工作模式按如下步骤进行设置: 首先,单片机短时间(几十个时钟)会将P1.7/XTAL1和P1.6/XTAL2设置成高阻输入; 然后,单片机会自动判断上一次用户是将P1.7/XTAL1和P1.6/XTAL2设置成普通I/O口还是XTAL1/XTAL2; 若上一次用户是将P1.7/XTAL1和P1.6/XTAL2设置成普通I/O口,则单片机会将P1.7/XTAL1和P1.6/XTAL2上电复位后的模式设置成准双向口/弱上拉; 若上一次用户是将P1.7/XTAL1和P1.6/XTAL2设置成XTAL1/XTAL2,则单片机会将P1.7/XTAL1和P1.6/XTAL2上电复位后的模式设置成高阻输入。 * * 7、管脚P5.4/RST的特别说明 P5.4/RST即可作普通I/O使用,也可作复位管脚。当用户将P5.4/RST设置成普通I/O口用时,其上电后为准双向口/弱上拉模式。 每次上电时,单片机会自动判断上一次用户是将P5.4/RST设置成普通I/O口还是复位脚。 如果上一次用户是将P5.4/RST设置成普通I/O口,则单片机会将P5.4/RST上电后的模式设置成准双向口/弱上拉。 如果上一次用户是将P5.4/RST设置成复位脚,则上电后,P5.4/RST仍为复位脚。 * * §3.4单片机应用系统的典型构成 1、单片机最小系统构成 在实际工程应用中,由于应用条件及控制要求的不同,单片机外围电路的组成各不相同。 单片机最小系统是指在尽可能少的外部电路条件下,能使单片机独立工作的系统。
* STC15F2K60S2集成了60KB程序存储器、2048字节RAM、高可靠复位电路和高精度R/C振荡器,一般不需外部复位电路和外部晶振。 只需要接上电源,并在Vcc和GND之间接上滤波电容C1和C2。 * 1、单片机最小系统构成 * 为了能够给单片机下载程序,可在RXD和TXD引脚上连接RS232和TTL的转换电路,以连接计算机,通过下载工具将用户程序下载到单片机中。 * 图3-24 RS232和TTL转换电路 MAX232, MAX3232 RS232和TTL的转换电路: §3.4单片机应用系统的典型构成 * 3、总线扩展方式的单片机应用系统构成 应用背景
组成单片机应用系统时,如果存储器容量不够,或需要扩展并行I/O,则可使用端口进行系统的扩展。
* 一个带有数据存储器和并行I/O扩展的单片机应用系统图 * 图3-25 带总线扩展的STC15F2K60S2单片机应用系统的连接示意图 * 一个带有数据存储器和并行I/O扩展的单片机应用系统图 * * 3、总线扩展方式的单片机应用系统构成 为了说明STC15F2K60S2单片机访问外部RAM的过程,首先介绍标准8051单片机时序中的相关概念。 (1)时钟周期 (T状态):CPU的基本时间计量单位,与晶振频率有关。 (2)机器周期:单片机的基本操作周期为机器周期。标准8051单片机的一个机器周期分为6个状态(S1~S6),每个状态由两个脉冲组成(称为两相),前一个周期叫P1,
正在加载中,请稍后...实践理解应用RTOS各组件
用三极管搭建深度电路系统
物联网安全从小白到大师
开关电源的芯片设计之秘
实战让你秒懂mbed OS
&08-08&20:00
&08-15&20:00
&08-11&20:00
&08-25&10:00
移入鼠标可放大二维码
基于单片机和数字信号处理器的汽车发动机点火线圈测试系统
来源:cediy
作者:佚名日 16:39
[导读] 基于单片机和数字信号处理器的汽车发动机点火线圈测试系统
1.引言随着汽车电子点火技术的广泛应用,对电子点火系统各部件的要求也随之提高。 点火线圈作为汽
基于单片机和数字信号处理器的汽车发动机点火线圈测试系统
1.引言随着汽车电子点火技术的广泛应用,对电子点火系统各部件的要求也随之提高。 点火线圈作为汽车电子点火系统的重要部件,其性能直接关系到汽车的工况,因此必须准确测试点火线圈各项参数,建立严格的产品出厂检验标准。据调查,我国汽车点火线圈系统的国产在线测试设备多以老式设备为主,智能检测设备较少,而进口设备价格昂贵,且其智能化程度不高。[1]因此研制出具有自动化、智能化的汽车发动机点火线圈测试系统是科研人员努力的方向。本文着重介绍了这种符合现代化生产要求的汽车发动机点火线圈测试台的设计方法。2.系统组成汽车发动机点火线圈测试台的原理框图如图1所示。汽车点火线圈测试台系统的硬件主要由被测件(线圈、负载)、程控信号源、程控电压源、I/O控制板、数据采集处理系统、工控机等组成。其中负载、程控信号源、程控电压源用于模拟点火线圈的工况;其他部件由于测量以及控制。根据相关国家标准,点火线圈的各项参数必须在相应的条件下(不同的测试项目,此条件有可能不同)测得,并且不同信号的线圈的测试条件也不尽相同,所以此处给点火线圈提供工作条件的电压源和信号源都是可以由上位机中的系统软件通过串行通信接口来设定的。为了能够测试多头线圈(四头、六头等)的不同次级线包,信号源经过测量控制电路送往被测件。测量控制电路由各种继电器以及输入输出线路组成。继电器根据IO控制板发出的控制命令进行相应的动作,以决定送出哪一路信号源以及将何种被测信号接入数据采集系统。IO控制板、和数据采集卡分别通过ISA和PCI总线直接与工控机相连。上位机软件直接对IO端口进行操作来实现对IO控制板的操作。数据采集与处理系统则通过驱动程序与系统测试软件进行通信。测试人员只需要操作上位机的系统测试软件就可以点火线圈的各种参数。【2】【3】&500)this.style.width=500;" border=0>
图-1& 汽车点火线圈测试台的原理框图由上述可知,点火线圈测试系统实质就是一个数据采集与处理的问题。因此数据采集卡的设计就自然成为本系统中最主要的问题。下面分别介绍个部分的实现。3.硬件实现3.1 数据采集卡分析点火线圈的次级电压信号可知,信号的最高有效频宽是5MHz,根据采样定理知,系统的最高采样速率至少为10MHz,对如此高的采样速率,必须要用高速数据采集系统来测试,才能满足测试要求。【1】图-2是本系统中数据采集部分的结构框图。&500)this.style.width=500;" border=0>图-2&&& 数据采集系统的结构框图。采集部分处理器采用TI公司的DSP芯片TMS320VC5402。它的处理速度可达到100Mbps,具有改进型的8位HPI接口,有16Kxl6Bit DARAM,以及4Kx16Bit ROM 存储空问,具有较高的性价比。由TMS320C5402内部ROM 不可写,所以外挂一片27040EPROM 作为外部程序区来存储程序。因为点火线圈数据采集要求高速度,高精度,以满足高档次,大批量生产的要求。同时为扩大此采集系统的应用领域,A/D转换器采用美国AD公司的AD9432芯片。该芯片为12bit单路模数转换器,其最高转换速率为100MHz。输入信号模拟带宽可达500MHz,采样时钟为PECL差分电平输入,转换数据为1TTL电平输出。片内带有输入缓存和采样保持器,12位并行数据输出。由于AD9432要求差分输入形式,因此对于输入信号必须经过信号调理电路变换为差分形式。【4】由于系统需要高速采集数据, 所以高速缓存是系统中的一个关键环节。高速缓存是系统中的一个关键环节,根据系统的要求可选用CY7C4255。CY7C4255是高速、低功耗8k*18低压同步先进先出(FIFO)存储器,读写周期为10ns,具有独立的18位输入、输出接口和读、写时钟信号,可以实现同步读写操作。A/D转换后的数据连续地写入FIFO,DSP根据FIFO 的状态来决定如何读出数据。DSP读数并处理此数的速度要比A/D转换的速度高得多。DSP每次主动读FIFO数据时,执行的是一个条件读指令,即FIFO不空时(EF=BIO为高)才读,FIFO空则DSP等待。当DSP处理任务较重时,FIFO数据长时间没有被读走,FIFO 半满或全满时,会向DSP发出一个中断信号,DSP暂停当前工作,进入中断服务程序,处理FIFO中的数据。通过FIFO将采样数据向内存转移,这样不但获得100MHz左右的高速采样率,而且使采样程序的编写大大简化。
PCI接口芯片采用PLX公司的PCI9052它是一款面向低端应用的高性能PCI接口芯片。接口芯片和TMS320VC5402的连接较简单,在此从略。采样系统的软件设计主要包括DSP中对数据的读取和处理以及采集卡的设备驱动程序开发两部分。本文主要在CCS平台上采用汇编语言实现DSP的编程。PCI设备驱动程序开发则采用微软公司为Windows9x 操作系统的驱动程序设计的一种构架——VxD。3.2 程控电压源和程控信号源根据各种不同型号线圈的测试条件要求,程控电压源必须可产生3-25V 连续可调的直流电压。程控信号源可产生连续可调的霍尔波信号,频率为0.5-250Hz(最小步进1HZ),幅值为0-10V,占空比为1%-99%(最小步进1%)。程控电压源的设计采取工业成品加控制板的方式来实现,具体来说就是买一个符合要求的可以方便地进行二次开发(控制)的电压源,然后根据电压源的说明书,制作控制板。市面上这种电压源很多,控制板的制作也较简单,在此不加赘述。&500)this.style.width=500;" border=0>图-3 程控信号源系统框图从上述所给指标可以看出,该程控信号发生器频率变化范围宽,对稳定度和精度的要求都很高一而且有一定自动化的要求。这些都是模拟电路难以达到的,所以我们采用了单片机控制的全数字电路,系统框图见图-3。要产生脉冲波形有很多方法,但关键是如何使占空比可变。在此,采用软件控制单片机的一位输出口,定时对它置位和清零的方法来实现,这样就可以方便地调整占空比,同时频率也是可变的。经过计算可以发现,当频率为250Hz,占空比为1% 时,信号保持高电平的时间为40&S,因此MCS-51单片机的速度能达到要求。【5】3.3 IO控制板和测量控制电路在介绍系统组成的时候以及说明了测量控制电路的作用和组成。下面简要介绍一下IO板的设计与实现。此处的IO板仅仅由一个简单的并行接口芯片8255A组成,并直接将此板接插在工控机的ISA扩展槽上(如果工控机上没有ISA插槽,也可以直接接PCI插槽)。上位机软件对IO板的操作仅仅是写一些控制字,就可以让IO板的输出发生相应的变化,从而驱动相应的测量控制电路中的继电器进行相应的动作。我们知道,在Windows 9x的操作系统中,应用软件可以直接对接口电路中的寄存器进行访问而不需要驱动程序。所以,如果本系统中的上位机采用Windows 98 做为操作系统,就不需要为IO板编写驱动程序了。这正是笔者在此测试系统的工控机中使用Windows 98 SE作为操作系统的主要原因之一。4.系统软件设计系统软件包括上位机软件和下位机软件,下位机软件的设计在介绍各个部分的硬件实现的时候已经有所述及,在此不在赘述。上位机程序设计可分为四大部分:测试界面的设计、用于存储测量结果以及测试参数设置的数据库的设计、上位机与下位机之间串口通信程序的设计、测量算法的设计。上位机软件采用Visual Basic 6.0来实现。Visual Basic 6.0是Windows环境下简单、易学、高效的可视化编程语言开发系统。VB6.0既可使用DLL来实现IO端口的输入输出功能,又可通过Mscomm控件或API函数实现串口通信,能方便地实现图像显示和数据存储,还能够充分发挥VB数据库功能以及生成用户界面快等优点。因此采用VB6.0来实现本系统恰到好处。在这里介绍在VB6.0下如何访问插在工控机I/O插槽中的IO板的端口。由于VB不能直接对寄存器进行操作,没有直接的输入输出端口操作语句,而VC++同时具有汇编语言和高级语言的功能与特点,如果利用VC++编制一个动态链接库,库中包含对输入输出端口的读/写函数,然后在VB程序中,通过声明DLL中的函数并提供DLL路径来调用这些函数完成控制行为,那么在VB中就可以很方便的实现对IO口的操作。5.结束语本文所介绍的汽车发动机点火线圈测试系统的实现方法,实际应用于武汉理工大学汽车电子电气研究所为广州飞达电器公司和北京同享同悦汽车电子有限公司研制的点火线圈测试台上,取得了很好的效果。本文作者创新点:本文中所论述的点火线圈测试系统能测量国家标准中规定的所有点火线圈的参数,达到替代进口设备,填补国内空白的目的,并且汽车发动机点火线圈测试的准确性、精确度方面都达到了较高要求,完善提高了国内现有设备的性能.
数字信号处理相关文章
数字信号处理相关下载
单片机相关文章
单片机相关下载
技术交流、积极发言! 发表评请遵守相关规定。
8月16日,在深圳举办的2017中国国际物联网与智慧中国高峰论坛上,来自SEMTECH公司业务拓展总监杨柳博士,发表了《LoRa全球商业机会与竞争力分析》演讲,...
日,来自华为运营商BG Marketing部副总裁樊黎峰在2017中国国际物联网和智慧中国高峰论坛上发表了《NB-IoT开启规模商用的“黄金时代”》的主题演...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-

我要回帖

更多关于 单片机脉冲计数器程序 的文章

 

随机推荐