1.1 什么是单片机
通俗来讲,单片机就是一块集成芯片(【转摘】芯片的本质是什么_本质 芯片到底是什么-CSDN博客这个链接可以更好的了解什么是芯片),但是这块集成芯片有它特有的功能,我们正是要通过编程来实现这样的功能,我们编程的目的就是控制这块芯片的各个引脚在不同时间输出不同的电平,进而来控制与单片机各个引脚相连的的外围电路的电器状态.
1.1.2 引脚
单片机基本工作条件引脚有电源引脚、 复位引脚和时钟引脚, 只有具备了基本工作条件, 单片机才能开始工作。
引脚,又叫管脚,英文叫Pin。就是从 集成电路 内部电路引出与外围电路的接线,所有的引脚就构成了这块芯片的接口。
MCS-51系列单片机有P0、 P1、 P2和P3共4组I/O接口, 每组接口又有8个引脚
P0端口引脚P0.0~P0.7,
P1端口引脚P1.0~P1.7,
P2端口引脚P2.0~P2.7,
P3端口引脚P3.0~P3.7。
I/O口为什么要输入功能?
单片机的I/O口需要有输入功能是因为在实际应用中,需要从外部读取一些数据或者信号,这些数据或信号需要通过I/O口输入到单片机中进行处理。例如,传感器可以将检测到的温度、湿度等数据通过I/O口输入到单片机中,单片机再根据这些数据进行相应的控制操作。此外,I/O口的输入功能还可以用于接收外部中断信号,当外部中断信号触发时,单片机可以及时响应并进行相应的处理
这4组接口既可用作输入端口将外部信号输入单片机, 也可以用作输出端口将信号从单片机内输出。 另外, 这些接口还具有一些其他功能.这四组端口具有多种功能,具体使用哪一种功能,由单片机内部的程序决定, 在某一时刻, 端口的某一引脚只能用作一种功能。
一般情况下,通电后这四个端口都是作为I/O口,当我们对单片机内部的寄存器进行了设置后就会启动其他的功能
控制引脚的功能主要有: 当单片机外接存储器(RAM或ROM) 时, 通过控制引脚控制外接存储器, 使单片机能像使用内部存储器一样使用外接存储器; 在向单片机编程(即向单片机内部写入编好的程序) 时, 编程器通过控制引脚使单片机进入编程状态, 然后才能将程序写入单片机。
编程器就是把你在电脑上写出来来的代码用汇编器等编译器生成的一个目标烧写到单片机的eprom里面去的工具
RAM
随机存储器表示既可以从中读取数据,也可以写入数据。当机器电源关闭时,存于其中的数据就会丢失
ROM
ROM表示只读存储器,在制造ROM的时候,信息(数据或程序)就被存入并永久保存。这些信息只能读出,一般不能写入,即使机器掉电,这些数据也不会丢失
1.2 锁存器的芯片74HC573的原理和用法
1.2.1 74HC573工作原理
一般而言,输出使能接地,即一直处于低电平状态,当锁存使能为高电平时,Q输出将随数据(D)输入而变,当锁存使能为低时,输出将会锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
总结:
锁存器就是把当前的状态锁存起来,使输入的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁存。锁存引脚高电平表示直通状态(逻辑上可以认为74HC573是透明的),为低电平表示锁存状态,可以通过控制锁存引脚,控制74HC573后端输出数据。
LE:latch-enable 锁存使能
OE:output enable 输出使能,其上有一杠,表示低电平有效;故OE必须在低电平状态才行
1.2.2 实际应用
可以看到,当我们将74HC573的LE引脚接在控制LED的单片机的P2.5引脚上时,此时这个锁存器就相当于一个开关,即使我们在单片机的接口P2.5给了一个低电平,只要给LE(锁存使能)一个低电平,LED还是不会亮.只有当LE为高电平时,74HC573就相当于是透明的,属于直通状态,LED才会亮.
假设我们用单片机I/O口控制两个LED灯,那么我们如何让他们一亮一暗呢?再用一个I/O口接另一个LED灯? 此时锁存器的另一个功能就体现出来了----I/O口的扩展器
如果单片机的总线接口只作一种用途,不需要接锁存器;如果单片机的总线接口要作两种用途,就要用到锁存器。例如:一个I/O口要控制两个 LED,对第一个 LED 送数据时,“打开”第一个锁存器而“锁住”第二个锁存器,使第二个 LED 上的数据不变。对第二个 LED 送数据时,“打开”第二个锁存器而“锁住”第一个锁存器,使第一个 LED 上的数据不变。如果单片机的一个口要做三种用途,则可用三个锁存器,操作过程相似。就这一种用法而言,可以把锁存器视为单片机的 I/O 口的扩展器。
1.3 单片机标号信息HC和封装类型(原文链接https://blog.csdn.net/weixin_64333831/article/details/129322560)
STC——前缀,表示芯片为STC公司生产的,其他类似的前缀还有AT,P,W,i,C等。
8——表示该芯片内核为80C51。
9——表示内部含Flash E²PROM存储器。其他如80C51中0表示内部含有MaskROM(掩模ROM)存储器;如87C51中7表示内部含有EPROM存储器(紫外线可擦除ROM)。
C——表示改器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该铲平为低电压产品(通常为3.3V电压供电);而89S52中的S表示该芯片含有可串行下载功能的Flash存储器,既具有ISP可在线编程功能。
5——固定不变。
2——表示芯片内部程序存储空间的大小,1为4KB,2为8KB,3为12KB,即该数乘上4KB为该芯片内部的程序存储空间大小。一般来说芯片的内部程序存储空间越大,芯片的价格也就越高。
RC——STC单片机内部RAM(随机读写存储器)为512B。还有如RD+表示内部RAM为1280B。
40——表示芯片外部晶振最高可接入40MHz。对AT单片机数值一般为24,表示其外部晶振最高位24MHz。使用时,一般外接12MHz晶振或者11.05926MHz晶振。
I——产品级别,表示芯片使用温度范围。I表示工业用产品,温度范围为-40℃~+85℃。其他如C表示商业级,温度范围为0℃~+70℃;A表示汽车用产品,温度范围为-40℃~+125℃;M表示军用产品,温度范围为-55℃~+150℃。
PDIP40——产品封装型号。PDIP40表示双列直插式40脚。其他的芯片封装类型还有PLCC(带引线的塑料芯片封装)、QFP(塑料方型扁平式封装)、PFP(塑料扁平组件式封装)、PGA(插针网格阵列封装)以及BGA(球栅阵列封装)等等。
1902——表示表示本批芯片生产日期为19年第2周。
CBK441.C90C——芯片的生产工艺。
封装类型(转载 https://blog.csdn.net/weixin_64333831/article/details/129322560)
1.4 单片机的中断原理
开外部中断 (EX0)有两种触发方式,分别是低电平和下降沿,由于单片机里的寄存器默认为0,也就是默认为低电平触发,要选择下降沿就直接控制IT0=1或TCON=0x01
假设中断请求来自INT0,那么控制它的引脚P3.2只需要给它一个低电平,然后把EX0和EA都置为1中断就会打开进入你设置的中断服务里.
1.5 定时/计数器原理
定时/计数器的实质是加1计数器(16位),由高8位和低8位的两个寄存器组成.TMOD是它的工作方式寄存器,TCON是控制寄存器,控制T0,T1的启动和停止和设置溢出标志 .
1.5.1 定时/计数器的工作原理
加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源,每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中的TF0或TF1(相应的中断标志位)置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
设置为定时器模式时,加1计数器是对内部机器周期计数(一个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)
定时器的工作方式-------TMOD寄存器:
定义格式:
TMOD的低4位用于T0,高4位用于T1,定时器T0,T1既有定时器功能又有计数功能
TMOD不能位寻址,必须要整体赋值.
M1与M0:工作方式选择位.定时器有四种工作方式位由M0/M1设置
两位可以形成4种编码,对应4种工作方式.
C/T:定时和外部事件计数方式选择位.
值为0时:定时器方式,定时器以机器周期作为计数信号.
值为1时:外部事件计数器方式,以外部输入脉冲作为计数信号.
GATE:门控位.
决定定时器受哪些部件控制.
————————————————
原文链接单片机-定时/计数器原理功能介绍_单片机计时器的原理_叁苏言的博客-CSDN博客
TCON寄存器
1.5.2 定时/计数器的工作方式
定时器有四种工作方式位由M0/M1设置
方式1:
方式1的计数器是16位,由TL0作为低8位,TH0作为高8位,组成16位的计数器.
计数值是存在THX,TLX(X取0或1)这2个8位的寄存器里的.它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1
计数个数与计数初值的关系: X=2^16-N
默认情况下,TH0,TH1全为0,当GATE=0,TR0=1时,TL0会随着机器周期的作用下加1计数(低四位总共有256个周期),TL0计满后向TH0进一位,直到把TH0也计满(总共65535再加一位计数器就会溢出),之后就会全部清0,这时定时器中断标志位TF0就会置为1,然后就会向CPU发出中断请求.怎么实现中断呢?看下面的例子
例如:
我们要实现定时一个50ms的定时中断(也就是加50000次后计数器就会溢出)
那么我们就要给TH0以及TL0一个初值,计算方法 初值=65535-50000=15535
然后就是把初值给TH0和TH1
TH0=15535/256 取模的原因是它是高八位,只要大于256就会进1
TL0=15535%256 取余的原因是它是低八位
这样我们就完成了定时中断
要完成这个程序我们还需要有一系列的操作
TMOD=0x01 设置定时器0工作方式为1(看TMOD寄存器的8位分别表示什么)
EA=1 开总中断
ET0=1 开定时器T0中断
1.6 D/A,A/D转换
1.6.1 D/A原理
T型电阻网络D/A转换器的原理:
怎么实现的从数字量到模拟量的一个转变?
可以看到I0通过的最后一个电阻是接地的,另外一个分流也等于I0的电阻由于开关在0,所ling以也是接地的,因此它们是并联的也就是电阻为R,和i1上的电阻串联后就等于2R,然后又和I1分流的另一个电阻并联,依次类推,最终电阻就是等于R,求出i=VREF/R
D0~D7就是我们的输入数据也就是0和1,可以看到,当输入为1000 0000,i7=i/2,i01=i/2
i02=i/2^2+i/2^3+i/2^4+i/2^5+i/2^6+i/2^7+i/2^8.如果R=Rfb,则V0=-i01*Rfb
这样我们就是实现了通过数字量来反映输出电压的大小,也就是DA转换
PWM输出的信号既有直流也有交流,低通滤波器可以把交流分量滤掉,得到稳定的直流信号,然后通过电压跟随器输出这个信号
STC8H芯片内部结构及引脚:
上划线表示低电平有效
1.6.2 运算放大器
电压比较器的实质就是这个非线性区(黄色的线),就是当Up>Un时输出5v,反之就输出0v.
运放真正的核心是在线性区,由于线性区很狭窄,所以我们引入了负反馈,这时就有了结论:Up=Un
为什么会有这样的结论?
假设Un=1v,那么Up>Un此时Uout输出5v,然后Uout会通过反馈路径把Un的1V拉高,也就是非线性区向线性区移动的过程,最终使得Un=Up
同向放大器
由于虚断(运放输入阻抗无限大),所以I3=0,所以R3等于0,因此Up=Uin,又因为负反馈,Un=Up,I4等于0同样是由于虚断,所以I2=I1+0(基尔霍夫电流定律)
电压跟随器的作用是输出与输入同样的信号,但是它是有驱动能力的
1.6.3 A/D原理
基本思路是将未知信号的电压和DAC输出的电压进行比较,通过比较调节DAC的输出的大小,直至它们相等.
通道选择开关是未知的信号,与DAC比较后的结果由 逐次逼近寄存器SAR 来反馈给DAC,从而
DAC调节自身的大小直至相等,然后通过输出缓存器把数字量输出.
具体的比较:
假设未知电压0~5v,这里采用的是二分查找法,所以第一次查找用2.5V与未知电压比较,2.5V的数字量是1000 0000,如果比未知电压大,就分成1.25V,同时开始为1的置为0,再进行比较,如果比未知电压小,那么1就会保留.然后比较第三位(可以理解查找次数对应八个进制位)
CLK_R和CLK_IN的作用是提供能量,因为AD转换的数字量需要比较等等
就比如单片机的晶振
时钟系统是为单片机工作提供能量的系统,时钟系统通过晶振振荡或者是RC振荡电路会提供一定频率的节拍,在这个节拍下,单片机的各个功能单位进行工作。这个节拍就像是我们生活中按一定频率拍手一样,时钟系统的作用就类似于每拍一次手,单片机内部就执行一条指令,这样它们的工作就有了一定的章程,不会混乱,当然,时钟系统的振荡次数(节拍数)和指令或者外设的工作进行有严格的数量关系。
Vin+和Vin-的作用是提供变化的电压,从而产生变化的数字量也就是AD转换
RD是输出使能,只有为0的时候才会把数据输出(之前都是放在锁存缓冲区中)
1.6.3.1 ADC0804工作原理
只有根据时序图我们才可以知道如何启动AD转换,知道何时AD转换结束
1.7 串行通信
这个电路是在单片机内部,T1这个定时器用来控制波特率,波特率越高,数据传输速度越快.