技术文档

上升沿 单片机 输入输出的上升沿和下降沿是怎么来的,一起看看

小编 2024-10-08 技术文档 23 0

输入输出的上升沿和下降沿是怎么来的,一起看看

高电平、低电平、上升沿和下降沿的区别

数字电路中,电平从低电平(逻辑信号为0)变为高电平(逻辑信号为1)的那一瞬间叫作上升沿,电平从高电平(逻辑信号为1)变为低电平(逻辑信号为0)的那一瞬间叫作下降沿。

高电平触发,是指I/O口电平为高电平时相应的功能或执行程序一直有效,直到电平被拉为低电平才失效。上升沿触发是当信号从低电平变为高电平时的瞬间有效,不管后面再变为高电平或低电平都无效。

低电平触发,是指I/O口电平为低电平时相应的功能或执行程序一直有效,直到电平被拉为高电平才失效。下升沿触发是当信号从高电平变为低电平时的瞬间有效,不管后面再变为低电平或高电平都无效。

数字电路中的“1”和“0”指的就是电平的高低

这种电平触发方式在数字电路的应用上最为常见,在工业自动化应用的控制程序上也很常见。我们最为熟悉的就是PLC在编写程序时用到的上升沿和下降沿指令,这些指令是集成在PLC内部的程序块。如果我们不选择PLC作为控制部件,而是要用单片机来控制,那么上升沿和下降沿的功能我们该如何实现?单片机内部是没有这些编辑好的程序块的,要实现这个功能就必须自己编写程序。程序该如何编写,下面我们结合程序深入地来讲一讲这个问题。

图1

首先,程序中使用的变量定义如图1。

图2

主程序如图2。

图3

输入上升沿、输入下降沿是如何通过程序产生的,如图3。

图4

输出上升沿、输出下降沿是如何通过程序产生的,如图4。

以上只演示了输入、输出IO口的上升沿和下降沿产生的过程。如果我们需要用到其他"位变量"的上升沿或下降沿,同样可以用这种方式实现。

下面我把完整的程序附在后面,有需要的老铁们可以复制出来使用

/***********************实现上升沿下降沿的程序源代码*************************/

#include <STC15F2K60S2.H>

#define FOSC 24000000L

void get_input(); //输入函数

void out_output(); //输出函数

char underedge, uperedge; //输入上升沿、下降沿变量

char out_underedge, out_uperedge; //输出上升沿、下降沿变量

char inputimg = 0, outputimg = 0; //输入、输出映像变量

char inputimgtmp = 0, outputimgtmp = 0; //输入、输出临时映像变量

void main()

{

while(1)

{

underedge = 0; uperedge = 0; //输入上升沿清除。因为每扫描一次上升沿都

//会被复位,所以上升沿的持续时间是一个扫

//描周期。

get_input();

if(uperedge & 0x1) //检测是否有输入上升沿出现,有则执行流程程序。

{

//此处编写流程处理程序

}

if(underedge & 0x1) //检测是否有输入下降沿出现,有则执行流程程序。

{

//此处编写流程处理程序

}

outputimg |= 0x1; //IO口第一位输出

out_underedge = 0; out_uperedge = 0; //输出上升沿清除。下降沿的持续时间

//与上升沿相同。

out_output();

}

}

void get_input()

{

int i;

bit a, b;

if(P20) //P20 = 1,表示输入口为高电平,无输入。

inputimgtmp &= 0xfe; //无输入,清除临时映像的相应位。

else

inputimgtmp |= 0x1; //有输入,置位临时映像的相应位。

for(i = 1; i < 256; i = i * 2)

{

a = inputimg & i; //取出输入映像和临时映像的值

b = inputimgtmp & i; //在下面比较。

if(a != b) //输入映像和临时映像的值出现变化,

//说明有上升沿或下降沿出现。

{

if(a) //输入映像相应位为1,置位下降沿位标志。

underedge |= i;

else //输入映像相应位为0,置位上升沿位标志。

uperedge |= i;

}

}

inputimg = inputimgtmp; //临时映像转存入输入映像

}

void out_output()

{

int i;

bit a, b;

for(i = 1; i < 256; i = i * 2)

{

a = outputimgtmp & i; //取出输出映像和临时映像的值

b = outputimg & i; //在下面比较。

if(a != b) //输出映像和临时映像的值出现变化,

//说明有上升沿或下降沿出现。

{

if(a) //输出映像相应位为1,置位下降沿位标志。

out_underedge |= i;

else //输出映像相应位为1,置位下降沿位标志。

out_uperedge |= i;

}

}

outputimgtmp = outputimg; //输出映像转存入临时映像

P10 = outputimg & 0x1; //IO口第1位输出

P11 = outputimg & 0x2; //IO口第2位输出

}

51单片机基础之静态数码管电路

原理图

多数人也都知道,51单片机的入门第一篇就是Led灯的操作,当然了,那也是最基本的操作。上次玩完LED灯,就相当于是入门,今天我们来看看数码管,对于数码管,大家可以是再熟悉不过了,生活中处处都可以见到各种各样的数码管,但是你知道其内部的原理吗,其实还是相当简单的,老样子,我们要玩什么,当然是先看看这个部分的原理图了:

由原理图可知,八个数码管并不是直接接在单片机的IO口上的,而是用了74HC595芯片,那么我们要想驱动数码管,就必须了解595芯片到底是个什么玩意儿,大多数开发板并没有使用这个芯片。

74HC595

74HC595芯片的作用就是把串行的信号转为并行的信号。关于这个芯片的详细信息以及时序问题,我不在这里详细叙述,大家去问百度去,百度一大堆资料。

只谈谈74HC595芯片的使用步骤

第一步:将要准备输入的唯一数据移入74HC595数据输入端上。送位数据到595芯片。

第二步:将位数据逐步移入74HC595,即SCL产生一个上升沿,将SI上的数据移入74HC595移位寄存器中,先送低位,再送高位。

第三步:并行输出数据,即数据并出。RCK产生一上升沿,将由QA-QH上已移入数据寄存器中的数据送入输出锁存器。

根据原理图可以知道,数码管驱动设计到两个74HC595芯片,一个芯片的输出用于控制数码管的位选,另一个芯片的输出控制数码管的段选,两个芯片的12号引脚同时受单片机的P2.5引脚控制,两个芯片的11号引脚同时受到单片机的P2.6引脚控制,段选数据和位选数据都是通过单片机引脚P2.7发送,在控制时钟引脚P2.6的控制下,当P2.6出现上升沿时,单片机通过P2.7引脚向505芯片内部发送数据,应先发送位选数据,当八位位选数

据在P2.7引脚产生的8个上升沿的作用下,从高位到低位一次存于Q7——Q0上。感觉说了这么多,已经有人懵逼了,觉得很烦,算啦,直接上代码大家瞅瞅吧,我只给大家看看驱动代码,至于main主函数里面的,相信大家自己可以完成:

实验效果

相关问答

单片机 怎么检测 上升沿 与下降沿?

可以通过单片机的引脚来检测,通过设置引脚的外部中断,检测引脚的边沿信号就可以检测上升沿或者下降沿,以stm32单片机为例,先将定时器设定为外部触发,然后配...

如何用 单片机 接收脉冲信号?

STC15W系列单片机,采用外部INT触发中断(可以上升沿与下降沿同时使能),脉冲输入信号用电阻分压就可以(峰值控制在3.3或者5V,根据VCC电源),可以运行在...

单片机 中,负跳变和高脉冲是什么意思? - tKscDcZrv 的回答 ...

负跳变指平由高变成低的过程,也叫下降沿,高脉冲就是正脉冲,给一个上升沿。其实负跳变就是下降沿的意思,有人故意这样说,也就是电平由高变低的那个...

单片机 引脚的低电平高于1V,甚至快到2V了,怎么调低呢?

补充回答;加下拉,高电平下来了,电路中应该有上拉,这样就形成了分压,所以将高电平拉下来了你最好用光耦做隔离,因为电机转动时耗电流挺大,所以单片机管脚...

单片机 的程序中,为什么按键要去抖动?

人手在按下按键的时候,由于抖动和按键触点的原因会产生多个上升沿和下降沿,导致单片机误认为按键受到了多次操作,所以要进行去抖处理,软件的处理方法一般是加...

单片机 为什么能直接烧录程序?

我刚开始学习单片机的时候也有和题主类似的困惑。当时是在大二,刚申请了个淘宝账号不久,刚看了下我的淘宝已购物品,第五件东西买的就是51单片机开发板,前几件...

单片机 复位电路问题 - 真_一匹老马仔 的回答 - 懂得

单片机复位电路相对比较简单,一般来说运用最多的就是上电复位。所谓上电复位是指在单片机通电的瞬间,因各部分电路电压未正常建立,这时单片机会出现...

cc2530 单片机 中常见的触发类型有哪两类?

常见的触发类型有上升沿触发和下降沿触发两类。常见的触发类型有上升沿触发和下降沿触发两类。

单片机 复位电压是多少?

上电复位的典型门限电压是1.4V和1.3V,即在单片机上电时,其电源电压要低于此值,才能使单片机上电复位。上电复位时,电阻给电容充电,电容的电压缓慢上升直到vcc...

单片机 复位是什么意思?有什么作用-ZOL问答

首先你要知道单片机是属于数字电路,数字电路就只有“0”低电平和“1”高电平两个状态。这两状态是已知状态,比如有的0代表是0.0-0.01v,1代表4.99-5...

猜你喜欢