① 怎样用单片机的一个IO口识别三种电平状态并分别执行不同输出:(1)高电平 (2)脉冲电平 (3)低电平
缺少条件,信号没有格式则无法检测到正确数据。
假设:每个数据周期为2S,自电平变化后开始计时,0.2S采样一次,5次后记录电平类型。高电平为1,低电平为0。每两次采样为一组,若组数据为11则为高电平,00为低电平,其他为脉冲。
此方法,接收特定数据时会出现错误。自己完善吧。
② 单片机IO口输入电平问题
第一点,按键不要和数码管使用同一个I/O脚,互相影响。按键要单独用一个I/O脚。
第二点,非要这么做(因I/O脚不够用),关键问题是那个按键接在什么位置了,如下图的接法才行。如果是接在LED和电阻之间了就是你这种结果。
第三点,把那个电阻的阻值加大为300~500殴。
③ 关于单片机IO口电平被拉低,重烧程序后恢复正常,是什么原因造成的
单片机在上电瞬间,它的IO口和内部各寄存器的状态,叫做初始态,一般datasheet上都会给出明确说明。大多数单片机的IO口在上电瞬间,为了不影响外部电路工作,一般IO口都是输入的高阻态。
④ 怎样用单片机的IO口检测市电的高低电平
首先,要知道单片机是多大的晶振,然后指令周器是等于多少个机器周期。个样才能算出一条指令的执行时间。首先,用C写的,到底他编译出来的汇编语句是什么也要搞清楚。
当扫描用户程序结束后,可编程逻辑控制器就进入输出刷新阶段。在此期间,CPU按照I/O映象区内对应的状态和数据刷新所有的输出锁存电路,再经输出电路驱动相应的外设。这时,才是可编程逻辑控制器的真正输出。
⑤ stm32f4单片机 如何让IO口输出低电平
STM32代表ARM Cortex-M内核的32位微控制器,具有高性能,实时性强,低功耗,便于低电压操作等优点,同时还易于开发。
按内核架构分,有STM32F103“增强型”系、STM32F101“基本型”系列、STM32F105、STM32F107“互联型”系列。其中增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。
两个系列都内置32K到128K的闪存,不同的是 SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。
在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。
内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、以最小的硬件变化来满足个性化的应用需求。
⑥ 能否使用51单片机检测I/O口上是否有高电平输入,如果有就执行中断,这样应该怎样写程序啊
程序1;检测io脚电平
如果有 进入程序2
如果没有 进入程序3
就这样写就行了
⑦ 求一个STM32读取IO口电平的程序
不需要上下拉么?你用万用表量量管脚电压是多少,搞不好不是代码问题。
我的代码和你几乎一模一样
GPIO_InitStructure.GPIO_Pin=DI_DETECT_PIN;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_Init(DI_CKECK_GPIO,&GPIO_InitStructure);
uint8status=GPIO_ReadInputDataBit(DIDO_CKECK_GPIO,pin);
:
⑧ 单片机IO口检测和输出控制自动化代替机械按键
我们这边有个芯圣公司的HC18P23xL系列的芯片能满足你说的功能需求,功能比AT89C51强大,价格更具优势。代码如下:
void main()
{
ANSELL=0X01; //1=AD(simulation models)0=I/O(digital models)
ANSELH=0X00; //1=AD(simulation models)0=I/O(digital models)
TRISA=0X03; //1 input,0 output 设置PORTA0 PORTA1为检测输入口,PORTA2 PORTA3 PORTA4 PORTA5为输出口
PORTA=0X02; //1 high , 0 low
WPUA=0XFD; //1 disenable high pull ,0 enable high pull 设置 PORTA1开启内部上拉电阻
WPDA=0xfE; //1 disenable down pull ,0 enable down pull 设置PORTA0 开启内部下拉电阻
PORTA2 = 1;
PORTA3 = 0;
PORTA4 = 1;
PORTA5 = 0;
while(1)
{
if (PORTA0 == 1)
{
Delay100ms(50);
PORTA2 = 0;
PORTA3 = 1;
Delay100ms(1);
PORTA2 = 1;
PORTA3 = 0;
}
if (PORTA1 == 0)
{
Delay100ms(50);
PORTA4 = 0;
PORTA5 = 1;
Delay100ms(1);
PORTA4 = 1;
PORTA5 = 0;
}
}
}
void Delay100ms(unsigned char i)
{
int j;
while(i--)
{
for(j = 0;j<2500;j++);
}
}
可购买芯片验证。就要求所述定义的检测部分存在现有软件定义了PORTA0检测高电平,延时5秒钟,PORTA2输出低,PORTA3输出高,持续100毫秒,恢复PORTA2输出高,PORTA3输出低。
PORTA1检测低电平,延时5秒钟,PORTA4输出低,PORTA5输出高,持续100毫秒,恢复PORTA4输出高,PORTA5输出低。
⑨ stm32如何判读输入IO口的高低电平
1.先检查io口初始化内容是不是作输入了
2.检查一下这个io口有没有已经重复初始化了
3.检查这个高电平是否超出了检测范围,看一下stm32芯片的spec
⑩ 单片机三个IO作为输入,根据三个输入口检测到高电平,对应三组LED亮,程序怎样写
以AT89S52为例,假如以单片机的P10、P11、P12为输入口,用于检测高电平,P20、P21、P22作为LED驱动口。程序如下:
# include “REG51.H”
sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
mian()
{
char i=0;
while(1)
{
if(IN1=1)
LED1=1;
else
LED1=0;
if(IN2=1)
LED2=1;
else
LED2=0;
if(IN3=1)
LED3=1;
else
LED3=0;
for(i=0;i++;i<255);
}
}