51单片机一般有两种不同的封装,第一幅图和第二幅图采用的是LQFP封装,右边这幅图采用的是DIP封装,DIP封装的体积比较大,这里我们选择使用LQFP封装
在设计之前我们应该了解核心板是由哪些部分组成,核心板上最重要的组成部分就是单片机的最小系统,也就是我们常说的单片机加晶振电路加复位电路三部分,毫无疑问这个电路里最重要的就是51单片机,所以我们首先要获取51单片机它的数据手册,这里我选择国产宏晶公司推出的STC89C52RC的单片机,这款单片机属于8051架构,在宏晶STC官网上就能够找到数据手册
我们要设计的是基于这款芯片的最小系统,所以要在数据手册中找到一个最小系统的示例电路
在第11页就能看到厂家给我们提供的最小系统电路,我们看一下这个电路图是由哪几个部分组成的,首先中间的芯片就是主控芯片STC89C52,左侧电路我们看到它连接的一个管脚叫做RST,即RESET就是一个复位管脚,左侧的就是复位电路。左下角的18、19管脚,我们看到它叫XTAL2和XTAL1,XTAL就是晶振(crystal oscillator)的英文缩写,所以这时一个晶振时钟的输入管脚,我们看到这两个管脚连接了一个负载电阻R2,同时负载电阻R2与一个晶振并联,这个晶振又串联了两个电容接地,这两个电容叫做谐振电容。关于这个晶振电路参数,厂家也有标注,我们在核心板上一般选取的晶振频率是为12MHz,那么C2和C3就应该为47皮法。在右侧,厂家还给出了一个系统电源的设计图,我们可以看到系统电源经过一个开关后,通过两个电容进行一个滤波,滤波之后接入了我们的单片机系统。
通过阅读手册,我们不仅确定了使用的单片机为STC89C52,还确定了晶振频率为12MHz以及晶振电路的一些电阻电容参数,同时还确定了复位电路以及复位电路连接的管脚
接下来介绍一下电源电路,现在我们使用最多的接口就是Type-C接口,对于这个核心板来说我也想使用typec接口进行供电,typec接口分为6-pin、16-pin和24-pin分别对应了USB3.0、USB2.0以及仅供电,这里只需要仅供电就选择6pin。不管是手机充电器还是电脑的USB接口输出的都是5V的电源,我希望转成3.3V的电源给单片机使用,所以这里选择一颗LDO芯片AMS1117,这个芯片是一个非常经典的线性稳压器,由于单片机系统并不需要消耗很大电量,所以这里使用LDO是一个非常经济实惠的方案
最后,我还希望能够在核心板上能够进行一些简单调试,所以就需要设计一个按键检测电路,通过单片机的引脚来检测我的按键,实现一些操作,同时GPIO上还需要接一些LED指示灯来指示一些系统状态,为了方便调试以及外接模块,我们应该将所有的排针进行一个引脚接出。按键选择微动的贴片按键,LED指示灯选择0805的贴片LED指示灯,到目前为之,板上主要元器件的选型就完成了
创建好工程后,我们先从电源部分开始画起,在库里选取出6P的TYPEC接口
我们看这个符号,首先由GND和VBUS,VBUS就是电源正极,CC1和CC2负责快充,但我们不需要快充,只需要5V的电压,所以需要用一个5.1k的电阻将其接地,同时也让GND和EH引脚接地,这个EH只是一个固定的针脚,我们让它接地的话可以固定的更牢固。VBUS就是电源的输入接口,要注意这里电源的输入是5V的,连接一个5V的标志。我们需要将这个从USB进来的5V送到一个开关,经过开关来给LDO进行供电,这里选择的开关是SS3235S,注意这个开关是分为两侧一共6个触点,我们只需要用一侧的3个触点就行,不需要的右侧可以全部接地 ,4引脚接到+5V,剩下两个引脚是开关输出我们要接到LDO,所以我们重新给它一个标签叫+5V。
通过这个开关我们需要这个+5V送入一个LDO变成3.3V,这里LDO选择AMS1117,注意AMS1117有一个VIN和两个VOUT,还有一个GND,两个VOUT我们要将它们连到一起,VIN是电源输入,电源输入接到+5V的标签也就是连接到开关输出那里,标签+5V显示的地方。这里我希望通过一个LED指示灯来显示电源的工作状态,这样当这个3.3V正常产生的时候,LED灯就会亮起,最后我们还需要为AMS1117添上滤波电容,关于这个滤波电容需要多大,可以参考AMS1117的数据手册,数据手册上输入输出滤波电容都是10微法,这里选择用一个10微法陶瓷电容和一个0.1微法的陶瓷电容并联使用。通过两种不同容值的电容并联,可以起到比单一容值的电容更好的滤波效果
到此,电源电路部分就已经设计完成了,接下来我们来设计单片机的最小系统电路,我们在库里寻找STC89C52RC-40I-LQFP44。我们可以看到这个单片机一共有44个引脚,其中一侧有11个引脚。首先我们需要为它连上电源引脚,注意这个51单片机的供电是5.5V到3.3V,这里选择5V的电源,还有把GND也连上。然后我们一般会在芯片的附近加上一个去耦电容,去耦电容容值一般是0.1微法,也就是100纳法。接下来我们需要为单片机的每一个引脚添加上网络标签来方便我们后续的电路设计,我们选择浮动工具中的网络标签,为每一个端口都添加上。
接下来我们设计晶振电路,需要复制晶振的两个引脚的网络标签,我们在之前选型的时候选择了12MHz的晶振,直接在库里搜索12MHz就能搜到,这里选择ABLS-12.000MHZ-B4H-T的晶振,注意这个晶振还需要两个谐振电容,这个容值在上图中的数据手册已表明是47皮法,谐振电容旁的电阻可加可不加,这里就先不加了,这样晶振电路就设计完成了。
接下来我们要设计单片机的复位电路,这个我们也可以参考数据手册,我们可以在上图看到9号引脚就有一个复位电路,但要注意在示例电路中的单片机封装的引脚布局和我们用的LQFP44封装引脚布局是不一样的,LQFP封装比DIP封装多了4个管脚不过不影响单片机正常功能的使用所以我们完全可以参照示例中的参数来设计。我们在仓库里选取一个10K电阻和10微法电容,将电容连到电源,将电阻连接到地。现在来分析一下这个复位电路,在这个复位电路上电的时候,由于这个电容需要充电,所以在下面会有一个比较大的电流,这个电流经过电阻R4会使这个RST进入高电平,随着电容的充电完成,电流会逐渐减小,RST又会被下拉至GND,而这个RST引脚是一个高电平复位,所以当我们系统上电时,单片机就会自动进行一个复位,这时候如果我希望手动去复位这个单片机,我就可以在这个电容上并联一个按键,这样按一下按键,RST就会被自动上拉到高电平。
接下来我们需要将芯片的所有引脚进行排针引出,我们在常用库中搜索公头的排针,也就是HDRM,2.54的引脚间距,选择1*16,放置两组。第一个排针放置P0和P2组,第二个排针放置P1和P3引脚
此外我们还需要添加一个P4的网络标签,这里我们选择一个1*7的排针,因为P4接口只有7个
接下来我们要设计的是按键电路,我们只需要两个按键,然后把它们接到单片机的IO口上,再接到地,按下开关后对应IO口就会被接地,然后执行相应程序,这里的IO口选取的是P2.0和P2.1。还要对这个按键进行优化,我们知道当按下按键时会有一定的抖动,这时候我们可以在按键上并联一个电容,这个电容可以过滤这个按键的抖动,使我们的按键更加稳定。
接下来就是设计LED灯电路,我们这里还是放置两个LED灯,先选取两个IO口,P1.0和P1.1,要注意IO口不能放在LED灯的阳极,而是要放在LED灯的阴极,对于51单片机来的IO口来说,它的电流输入能力是要远大于它的电流输出能力的,也就是说它的灌电流是要大于它的拉电流的,所以我们要让IO口LED的阴极,这样电流就会流入单片机的IO口,然后电源选择3.3V。这样就设计好了,当我们IO口输出低电平的时候,LED灯就会被点亮,高电平就会熄灭
根据数据手册我们可以知道,P1到P4在上电复位后都是准双向口/弱上拉(传统8051的I/O口)模式,而P0口在复位后是开漏模式,也就是高电平为高阻态,只能输出低电平,而要让P0管脚I/O的话就需要外加上拉电阻,这里我们就接上拉电阻来使其能够进行输入输出。
接下来我们要设计的电路是电源的引出接口,因为我们知道我们在板子上已经产生了+5V和3.3V的电源,而我们的单片机往往需要外接一些传感器,那这些传感器也需要一个核心板进行供电,所以就需要一个引脚专门引出这些电源
接下来我们还需要将51单片机的串口引出以方便51单片机和外部通信以及下载程序,串口引脚在元件符号上就已经标出来了,是P3.0和P3.1,除了这两个引脚之外我们还需要把5V和GND也接上,因为我们在外接USB转串口的这个模块的话,一般我们会将供电也接到核心板上
到此我们所有电路就已经设计完成了,但是这样看整个原理图还比较混乱,所以我们要将这些电路按照各自的模块进行分类同时添加上一些注释。将芯片主体放在中心,电源模块放在上方,复位电路和晶振电路放在芯片左方,右边就放排针引出。再用放置—矩形框起来