女人不狠全称微型控制单元,简称单片机(MCU),从字面意思我们可以了解到,它就是一个微型的计算机系统。然后我们下面通过对比来了解下它为什么时一个微型计算机系统。
我们首先来看下我们熟悉的电脑主板,可能有人会问,我是来学单片机的,你给我介绍主板干嘛?我们这里是用主板来做一个类比,我们看了上面一大堆东西,估计很多人用了很长时间的也不知道单片机和代码是怎么回事。
我这里找了一张电脑主板的电路框图,这个是比较老的一个主板,DDR2内存的,从下面框图中我们大概可以看到大的板块包括CPU,北桥,南桥;其中南桥下面主要掌管着这些低速设备USB,PCI,SATA,BIOS等外设。
这里CPU之所以加了引号是因为CPU指的是中央处理单元,而我们手机的处理器不仅仅只有中央处理功能。这是2021年5月最新版的联发科天玑900处理器,我们再看下左边的介绍,有CPU,GPU,5G和WIFI模组,还有人工智能APU;对比下主板是不是发现有什么共同点。没错,手机处理器将这些外设全部集成到一个芯片里面去了,其实像现在最新CPU也是朝着这个方向做的,目前已经有很多CPU把显卡集成进去了。
那么我们可以思考一下,我其实并不需要电脑CPU和手机处理器这么强悍的性能和诸多功能,我只要控制个I/O、串口通信等。那些不要的东西给它裁剪掉,加上简单的计算单元,然后把它的可靠性提高,你说可以不?答案肯定是可以的,这也代表着我们思考的问题跟这些计算机科学家思考的问题是一致的 。我们接着往下看。
我们看下图中在校期间和教科书上用的最多的51单片单片机,同样包含CPU(8051内核),SRAM(内存)可怜的1K,闪存(硬盘)也只有区区的几十K,然后外围的模块基本就是下载代码用的ISP,EEPROM,看门狗,复位模块,串口模块,中断模块,基本输入输出I/O模块。
因为单片机主要应用在一些对价格比较敏感的领域,所以这类单片机种类也比较多,像51是我们常用的单片机,主要应用的场合有数码家电(洗衣机,电饭锅,电磁炉,微波炉),工业现场数据采集与传输等,但是随着它的价格优势下降和易上手程度,慢慢的市场被32位单片机被取代,我们看下图大家熟知的STM32是不是感觉比51单片机的内部结构复杂很多,51单片机有的外设它都有,并且这些模块更强大的;51单片机没有的模块它也有,调试功能模块,RTC模块,USB模块,CAN总线模块,ADC,SPI,I2C等等 。
我们再来看下MCU与人的一个对比,CPU相当于是人的大脑,用来处理来自各个模块的信息,然后I/O输出就相当于人的手,CPU+RAM+FLASH相当于人的大脑,I/O输入和A/D则相当于人的皮肤和眼睛用来接收外界的温度,图像信息输入;而串口、SPI、I2C等总线则相当于耳朵和嘴巴的配合,一方面接收其它控制器发送过来的信息,另外一方面将要传递的信息发送出去。
先举一个例子:我们要住酒店,我们是通过什么来找到你要住哪个位置的,是的,那就是房间号,这个房间号是酒店预先编好的。然后我们通过唯一的房间号,可以找到这个房间;如果这是我们的公司,我们每个大的房间里面都是一些职能小组在里面办公,然后我们的项目管理员接受到领导的指令后,就不断的去每个房间找相应的职能部门来完成任务。
那么我们单片机也一样,我们所有的外设都是挂在单片机的可以访问的地址上,我们要对单片机进行预先定义地址,不然我们就找不到哪个设备对应那个地址,也就没办法操作。其实单片机地址是我们虚构出来的,为了便于实际使用中的方便而已。CPU是如何执行程序的?
为了方便更多比特位的运算,我们使用内部集成8个全加器芯片74283来运算
注意:我们这里不考虑一些特殊的情况,我们8位数最大能表示的数为255,所以只考虑数值小于255的情况,更深入的探讨大家可以去寻找更专业的资源学习。
加法是进位,减法需要考虑的则是借位,小学时对加减法的经验是这样的,但是计算机不是这么处理的。计算机只有加法,没有减法。那么 int a = b - c 是怎么得出来结果的呢?首先要了解一个概念——补码。
计算机中对于有符号数,用最高位作为符号位,“0” 代表 “+” ,“1” 代表 “负号-” ;其余数位用作数值位,代表数值。比如 Byte 类型的取值范围为 -128 ~ 127。其中,表示数值的只有 7 位,首位表示正负。
补码规定,正数和 0 的补码就是其原码(原码、反码的定义这里就不多赘述),负数的补码是其正数的原码取反再加 1 。
不知道写到这里,大家有没有发现什么端倪?我们再回到减法计算来,a = b - c 实际上等同于a = b + ( -c )。
最终通过加入反相电路和加1电路得到的最终结果,进位去掉后为0000 0111换算成10近制就是7
通过说减法,我们是不是对乘法也有一定的启发了呢?乘法其实就是循环的加法。比如5 * 3实际上就是5 + 5 + 5。貌似就说完了。实际上不仅仅如此的。现在有一个电子器件叫做乘法器,其可以实现二进制的乘法、除法等运算。我们同样以5 * 3做为例子,讲解一下乘法器计算乘法的流程。
虽然CPU中有乘法器,但是我们发现实际的最终操作流程还是加法和位移操作计算的乘法运算。我们写的代码中的乘法到底是用乘法器运算还是转化成加法运算,我们也并不太确定,有些编译器编译的时候会对代码进行优化,选取最优的一种算法来计算结果。除法运算:
除法可以通过减法来实现,比如10 / 3等价于10一直减3直到被减数小于 3 ,减了 3 次,那么10 / 3的结果就为3了,余数为减完剩下的值1。
其实上面已经提到了乘法器,除法的原理同样也类似(这里不说浮点数的除法,只说整数的除法),但是稍微复杂一点。
小提示:这里只是展示其中一种除法运算,大家可以去思考其他方式的除法运算,比如说使用移位方式。
这里面包含有完整的8位与运算电路,或运算电路,右移运算电路,左移运算电路,还有加法运算电路等,我们实际运算的时候就通过取到的指令通过内部解码来决定当前操作是进行加法操作,还是移位操作,又或是对外部I/O进行锁存操作。
然后这里面我们发现复杂的运算会产生中间数据,比如说乘法,除法,要计算好几次才能得到结果,所以我们就需要寄存器来临时存储这些数据,这样我们就可以计算了.
PC计数器指向读取指令的地址,然后存储到指令寄存,通过指令解码器解码后输送给运算单元,执行相应操作. 示例:我们的单片机程序一般都是直接跳转到main函数,这时PC = 0x0019地址里面的指令是C280
指令寄存器中的指令通过译码电路进行译码,然后CPU根据译码的结果来执行加减乘除,移位等操作,示例:通过译码器电路我们得知C280代表的意思是C2表示清除位指令
在执行阶段会根据指令的类型,将算数/逻辑单元(ALU)用于不同的目的。对其他指令,它会作为一个加法器来计算增加或减少栈指针,或者计算有效地址,或者只是简单地加0,将一个输入传递到输出
示例:这里相当于是清除0x80的第0位,也就是将P0.0置低,然后PC更新PC的值,没有对PC值进行操作的话,它就自动累加这里自动累加后是0x001B,然后继续第一步循环操作就完成了我们整个程序的一个执行。
这里只是给出大致的程序执行方式,省略了很多细节操作,大家可以进一步参考更详细的程序执行过程。
上面的运算,我们都是通过手动的方式来进行的, 我们知道数字电路本身是不工作的,它也不能工作,否则电路就会出乱子,它必须依赖其它电路产生的高低电平才能驱动它工作,我们把这种有规律的高低电平定为脉冲,单片机也是数字电路,它又是怎么工作的?我们必须要有一个能源源不断产生脉冲的电路,它才能持续不断的工作下去,这也就是晶振在单片机电路中为什么被称作为“心脏”的原因,我们把这个“心脏”去掉,相应的整个单片机系统也会罢工。
为什么有些单片机没有晶振?我们知道单片机工作只要有持续不断的脉冲输入就行,我们有些场合对单片机没有精确的时间要求,所以一般使用内部自带的振荡器为单片机提的时钟脉冲也能确保单片机正常工作,所以在有些地方我们就看不到晶振。那是因为内部自带了RC振荡电路。
复位:CPU执行程序需要有一个初始状态,通过复位可以进入到一个初始状态。这样单片机知道自己的起始位置,它才能按照既定的方式运行程序。
(1)因为寄存器都分散在不同的bank里,对寄存器操作时就是转换当前所在的bank。如果你知道是你要操作的寄存器在哪个bank,那么就直接movlb也可以。BANKSEL就是自动的,不用你去查datasheet了。 (2)MOVF:是把一个寄存器内存送入W寄存器中,如 MOVF 8, 0 就是把第8寄存器送到W中,后面是0说明存后F不变。 MOVWF:与上面相反,把W内容存入F寄存器中, 相当于MOV W to F。 (3)常用指令: CLRF PORTD ; //PORTD 清零 BCF PORTE ; //RE0清零 MOVLW d100; //意思是把100(D代表十进制),存入寄存器W MO
汇编指令集合 /
单片机特点:集成度高,价格低廉,功能强,速度快,功耗低,体积小,使用灵活,稳定可靠 使用领域:家用电器,智能仪器仪表,通信系统,网络系统,数控机床,数据采集和处理,自动检测,工业控制,火箭制导 51单片机数据类型 数据类型 位(bit) 字节(byte) 取值范围 bit 1 1/8 0-1 signed char 8 1 -128~+127 unsigned char 8 1 0~255 enum 8/16 1or2 -128~+127or-32768~+3
仿真原理图如下 单片机源程序如下: #include reg51.h #include lcd.h #include intrins.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define NACK 0 #define ACK 1 #define MEASURE_TEMP 0x03 //000 0001 1 #define MEASURE_HUMI 0x05 //000 0010 1 #define STATUS_REG_W 0x06
温湿度光照二氧化碳 智能检测 /
三相交流感应电动机因其结构简单、运行可靠、价格低廉等优点,广泛应用于机械、冶金、纺织、电力以及国防等领域。但是,当感应电动机直接合闸起动时,往往产生高于其额定电流4~7倍的起动电流,特别是大功率电动机,较大的起动电流会严重冲击电网,降低电网共电质量并影响其它设备运行;另外,电动机起动瞬间起动转矩所造成的机械冲击会影响电动机本身及其拖动设备的使用寿命。为此,目前大部分电动机起动时仍使用传统的降压起动设备,如Y-Δ转换器、自耦变压器、串接电阻器或电抗器等。它们虽然在一定程序上缓解了起动电流过大矛盾,但并未在本质上解决冲击问题。而且这些起动设备存在一些固有缺陷,如起动电流不连接,负载适应能力差,故障率高,维修工作量大等。 随着徽电子
为数字消费、网络、个人娱乐、通信和商业应用提供业界标准处理器架构及内核的领先供应商 MIPS 科技(纳斯达克交易代码:MIPS)宣布,正式进军正蓬勃发展、对性能要求很高的 32 位单片机(MCU)市场。通过最近收购模拟 IP 领先厂商Chipidea,MIPS 科技拥有了丰富的处理器内核和全面多样的成熟模拟 IP 模块库,成为了提供处理器和外设 IP 产品的最大独立供应商,可为客户提供 32 位 MCU 应用的完整系统解决方案。 市场调查机构 Semico Research 技术总监 Tony Massimini 表示:“32 位单片机的产量正在迅速增长,特别是在需要更高处理能力和更大存储容量的先进汽车、消费和工业应用方面。我们
定时计数器原理 CPU时序 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期) 状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。 机器周期:1个机器周期含6个状态周期,12个振荡周期。 指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。 例如:外接晶振为12MHz时,51单片机相关周期的具体值为: 振荡周期=1/12us; 状态周期=1/6us; 机器周期=1us; 指令周期=1~4us; 定时计数器介绍 基本特点 51单片机有两组定时器/计数器,因为既可以定时, 又可以计数,故称之为定时器/计数器。 定时器/计数器和单片机的CPU是相互独立的。定时器/
学习——8.2--定时计数器 /
曾经我和很多应届生、转行的一样,对未来又憧憬又恐惧。 憧憬是学了20多年,终于能靠自己双手挣钱,恐惧是不知道自己学的东西到底有没有用。 现在10年过去了,我对社会的需求更加清晰,认知也上了一个层面。 其实我们学校所学的东西是真的非常有用的 ,我也非常后悔在一个黄金学习年龄奉献了只会消耗青春的游戏。 不过后悔没有用,虽然现在人到中年,但我依然每天保持学习。 学校的时候,我们学习是盲目的,也没有动力,最主要的原因是我们一直怀疑自己学的东西实用性。 因为生活根本很难用的上,就好比英语,真正等我做了单片机开发,发现很多技术手册是英语的时候,我才发现英语的重要性。 不过这个也不是必须的,只是如果你到了一定瓶颈想突破,英语和数学会给你赋能。
1.定时器/计数器 8051系列单片机至少有两个16位内部定时器/计数器(T/C,Timer/Counter),提供了3个定时器,其中两个基本定时器/计数器分别是定时器/计数器0(T/C0)和定时器/计数器1(T/C1)。它们既可以编程为定时器使用,也可以编程为计数器使用。若是计数内部晶振驱动时钟,则它是定时器;若是计数输入引脚的脉冲信号,则它是计数器。 2.串行口 串行收/发存储在特殊功能寄存器的SBUF(串行数据缓冲器),从表1-2-6可以知道,SBUF占用RAM地址为99H。实际上在单片机内部有两个数据缓冲器:发送缓冲器和接收缓冲器,它们都以SBUF来命名,只根据对SBUF特殊功能寄存器读/写操作,单片机会自动切换发送缓
内部资源 /
的车载动力锂电池管理系统关键技术研究
研讨会 : 用于感测应用 带可配置信号链元素的新型 MSP430™ MCU
直播回放: 借助Sitara™ AM263x MCU 创造电气化的未来
【电路】PC串口和MC68HC70-5K1微控制器之间的RS232传输电路
ADI世健工业嘉年华——深度体验:ADI伺服电机控制方案
解锁【W5500-EVB-Pico】,探秘以太网底层,得捷电子Follow me第4期来袭!
【下载】LAT1317 STM32CubeProgrammer和STM32CubeIDE协同调试的方法
【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法
【直播】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序
【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性
【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU
【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®
【Matter】康普和意法半导体强强联手,让物联网设备Matter证书管理既安全又简便
【方案】STM32WLE5 x 利尔达LoRa模组助力亚残会开幕式惊艳秀
【新品】意法半导体发布远距离无线微控制器,提高智能计量、智能建筑和工业监控的连接能效
MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中80 ...
由于工业现场总线在工业控制、智能仪器仪表、数据采集等方面得到了广泛的应用,因此对于总线集成的需求也应运而生。不同种类的现场总线协议 ...
在单片机系统设计中,LCM(液晶显示模块)人机交互界面的设计往往是很重要的一个环节。LCM可以用于智能仪器上的显示设定参数、状态提示符、 ...
基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计
1 、引 言在石油钻井中,准确测量井眼姿态是进行井眼轨迹控制的前提。为此,本文充分结合单片机和MATLAB的优点,基于事件驱动的通信机制 ...
采用C8051F020单片机和模糊控制器实现便携式心电监护仪的应用方案
目前,以采集心电信号、分析和诊断为主的心电监护系统已经得到了广泛的应用,对于心脏系统疾病的预防、诊断发挥了很大的作用。但是此类心电 ...
PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:
|