数电和模电到底什么?单片机的IO口处理的是什么?硬件通讯是怎么来完成的?这就是我们这里的内容。

数字量,是一种布尔类型,它只有两种状态——真假、高低、有无等等。在电子设计当中,我们所“使用”的就是“高低”状态,比如我们单片机所说的高电平、低电平。我们通过给三极管的基极高低电平,实现对三极管集电极和发射机的导通性控制,这就是一个应用,这里我们以蜂鸣器模块为例,。

蜂鸣器模块是最为基础的一个传感器,分为有源蜂鸣器和无源蜂鸣器。蜂鸣器的实质跟扬声器差不多,一些线圈+磁铁的方式,给线圈提供交流电,线圈在磁铁的作用下带动薄膜震动发出声音。

有源蜂鸣器的内部集成有震荡电路,可以将直流电信号转变为交流电信号从而发出声音,但是由于内部的震荡电路频率是固定的,所以发出的声音频率是不可变,我们只能通过调节功率的大小实现对声音大小的控制。

无源蜂鸣器的内容没有震荡电路,我们需要使用交流电信号才能让其发出声音。我们可以通过单片机的IO引脚产生指定频率的信号来驱动、也可以借助一些时钟芯片(比如NE555)来产生周期性的变化电流来驱动。通过频率的不同,发出的声音也是不同的,这也就是那些midi音乐的原理。

蜂鸣器模块由三根引脚,分别是VCC、GND两个供电引脚和IO信号引脚构成。单片机的IO口不可以直接驱动,一是单片机的IO驱动电流不够可能无法发声(功率不足、音量过低),二是蜂鸣器的线圈会通过IO对单片机内部造成伤害。所以这个时候我们需要来设计以一个驱动电路来实现控制。

三极管的三个极分别是基极、集电极、发射极,通过三极管分为NPN和PNP两种,分别如下。

我们将单片机的IO引脚接在三极管的基极(阀门),将蜂鸣器和三极管的集电极、发射机极连接。单片机IO来控制基极、基极控制集电极和发射机是否导通、最终实现蜂鸣器驱动电路的设计。

这是使用S8050三极管实现的蜂鸣器驱动电路。S8050是一款小功率NPN型硅管,集电极-基极(Vcbo)电压最大可为40V,集电极电流为(Ic)0.5A。IO在三极管施加高电平、控制三极管的集电极和发射极导通,VCC经过蜂鸣器、经过三极管的集电极和发射极、流向GND形成闭路(闭合的电路),蜂鸣器发出声音。这也是最基础一个正逻辑、共阳性驱动电路,根据三极管电压、电流的范围,我们可以将这个电路应用在更多的方面,比如驱动一个功率大一点的LED、驱动一个直流电机等等,这一类属于是数字输出型、高电平触发型传感器驱动电路。

如果蜂鸣器是有源蜂鸣器,那么通过高低电平即可实现蜂鸣器的状态——“响和不响”;如果蜂鸣器是无源蜂鸣器,我们在基极(IO引脚)施加频率脉冲信号时,根据三极管的特性,蜂鸣器会产生相应频率的声音。

这是一种高电平触发的传感器,那么有没有低电平触发的呢?有的,大家可以在这个电路的基础上增加一个“反相电路”,又或者是使用PNP三极管即可实现。但是低电平触发的传感器,需要在特定的场景下才能进行使用。

单片机IO的模式有以下几种:

上拉模式:通过上拉电阻使引脚默认处于高电平。

下拉模式:通过下拉电阻使引脚默认处于低电平。

浮空模式:即引脚高低电平不明,默认可能处于高电平,也可能处于低电平。

当然还有推挽和开漏,这部分内容我们后期解锁。

很多单片机在使用的时候如果没有对相关引脚进行初始化,那么这个引脚将处于浮空模式,不知道它是高还是低,现在很多单片机内部集成了处理默认是低电平模式,当然你也可以配置寄存器实现默认是高电平电路设计。

如果你现在的蜂鸣器模块是低电平触发的,那么在你还没有上传程序的时候将会一直发声。我们默认了真、高、有是一类,默认了假、低、无是一类,这也就是所说的正逻辑。而低电平发出声音、高电平不发出声音,这属于是负逻辑。对于我们的很多时候的设计,会有不同的影响。