单片机是怎么工作的?

你问的问题,本质是软件和电子硬件是如何结合的问题,相信很多写软件的人都对这个单片机底层的工作情况很困惑的,我也一度没有想明白这个问题,查了很多资料,似乎也没有什么人专门说道这个东西了,后来仔细想想,然后咨询了一些朋友,单片机里边不外是存放了很多三极管,二极管,电阻和电阻这些器件而已,所谓的寄存器,也是这些东西组成的,本质上还是很多个数字电路的结合体而已,然后就是靠晶振产生的标准脉冲来驱动这些电路在工作,请关注:容济点火器

单片机编译到最后,就是二进制代码,在电路上就是高低电平,而寄存器,是可以用来存放这种高低电平的器件,寄存器是由具有存储功能的触发器组合起来构成的。一个触发器可以存储一位二进制代码,存放上N位二进制代码的寄存器,需用n个触发器来构成。所以寄存器分解到最后,就是单个触发器。

简单的触发器,是RS的,通过三极管和一些阻容器件来完成两种高低状态的控制了,具体电路就不分析了,可以知道,它可以完成下边的状态功能

也就是R和S分别是置位和复位指令,会影响输出Q的状态了,这样理论上就形成了简单的可控输出了,那些软件的指令最终给到R和S端,就会直接控制了Q上的状态。具体如下:

1、当R端无效(1),S端有效时(0),则Q=1,Q非=0,触发器置1。

2、当R端有效(0)、S端无效时(1),则Q=0,Q非=1,触发器置0。

3、当RS端均无效时(0),触发器状态保持不变。

4、当RS端均有效时(1),触发器状态不确定。

所谓的二进制代码,就是以上边的高低电平体现在触发器上,然后触发器再经过多种组合,会变成一种寄存器的东西,寄存器里边,有一种叫移位寄存器的,可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,串行输入、并行输出,所以通过晶振产生的脉冲,控制移位寄存器的状态,就能控制高低电平的各种状态变化了,所谓的软件,最后就变成了这些高低电平的状态了。


一般的计算机系统,包括CPU,内存,外存(硬盘),输入输出(显示器,键盘,各种接口),电源等组成。安装在一个主板上。单片机也包括这些东西,但他是集成在一个芯片中,相对容量和运算速度要小一点,但可以通过外围芯片扩充。这些单片机大量存在于显卡,网卡,打印机,声卡,显示器,键盘,硬盘,U盘中,组成单片机系统和主机通过各种接口或总线交换数据,也可单独使用,完成大量机电一体化工作。


存储程序与程序控制。在系统时钟的统一步调下,译码器,移位寄存器,累加器,D触发器,数据选择器,协同工作,就构成了执行程序指令的基本硬件。执行完一条指令,指令指针PC加一,就可以自动执行下一条指令,直到执行完一段完整程序。程序在哪里?在ROM里。开机执行哪条指令?一般默认执行地址0的指令。数据放在RAM里。


单片机就是多片机集于一片的机,俗称“微处理器”。

多片指的是:处理器、存储器、ROM(FLASH)、RAM、I/O、定时器、时钟电路、复位电路等等。

首先,我们想实现一些功能,用编程语言(例如c语言)来编写实现这些功能的程序代码(编写程序的软件可以不是编译软件),其次,用编译软件(例如KEIL等)把程序代码编译成机器代码(例如bin、hex等格式),最后,用下载器(线)通过下载接口把代码写入单片机的ROM(FLASH)(包括内部EEPROM内容)。

单片机工作状态:

首先需要时钟电路提供时钟信号,然后运行ROM(FLASH)中的机器代码,采集输入口的信号,通过内部运算,控制输出口的电平。

内部定时器,中断,ADC等等模块都按照机器代码的内容工作。

以上简单描述了简单单片机的简单工作原理。如要弄清不简单单片机的不简单工作原理,则需要海量的学习。


这个问题非常有代表性,我相信很多初学者都会有这个疑问:为什么只是简单地将对应寄存器的相应位设置一下,就可以让单片机做不同的动作(例如,端口输出高低电平、定时器定时溢出等等)。今天我们就来简单了解一下这方面的知识。

一、单片机的基础电路

单片机内部主要由数字电路组成。所以如果我们想要了解单片机的内部结构及工作原理,还是需要学一些数字电路方面的知识的。这里简单介绍一下单片机中常用的基础电路。

1、与门电路原理介绍

与门电路如下图所示。

它是一个由二极管和电阻构成的电路,其中A、B为输入端,Y为输出端,+5V电压经R1、R2分压,在E点得到3V的电压。

工作原理:

当A、B两端同时输入低电平(0V)时,由于E点电压为3V,所以二极管VD1、VD2都导通,E点电压马上下降到0.7V(低电平),即当A、B端均输入低电平“0”时,Y端输出低电平“0”。

当A端输入低电平(0V)、B端输入高电平(5V)时,由于E点电压为3V,所以二极管VD1马上导通,E点电压下降到0.7V。此时VD2正端电压为0.7V,负端电压为5V,VD2处于截止状态,即当A端输入低电平“0”、B端输入高电平“1”时,Y端输出低电平“0”。

当A端输入高电平(5V)、B端输入低电平(0V)时,VD1截止,VD2导通,E点电

压为0.7V(低电平),即当A端输入高电平“1”、B端输入低电平“0”时,Y端输出低电平“0”。

当A、B端同时输入高电平(5V)时,VD1、VD2均不能导通,E点电压为3V(高电平),即当A、B两端都输入高电平“1”时,Y端输出“1”。

由此可见,与门的特点是:只有输入端都输入高电平时,输出端才会输出高电平;只要有一个输入端输入低电平,输出端就会输出低电平。

二、单片机内部的触发器、寄存器、锁存器

单片机内部有大量寄存器,寄存器是一种能够存储数据的电路,由触发器构成。

1、触发器

触发器是一种具有记忆存储功能的电路,由门电路组成。常见的触发器包括:RS触发器、D触发器和JK触发器等,其中D触发器最为常用。如下图所示。

从图中可以看出,D触发器的端子包括:输入端D、输出端Q、反相输出端、时钟脉冲输入端CLK、置“0”端R和置“1”端S。

数据存储过程:当D触发器的D端输入数据“1”时,数据并不能马上被存入触发器,只有CLK端时钟脉冲信号上升沿(即低电平转为高电平时)到来时,“1”才能被存入触发器,存入后Q端输出“1”,端输出“0”。也就是说,只有时钟脉冲上升沿到来时,D触发器才能将输入端的数据存储起来,并从Q端输出。

D触发器的置“0”和置“1”:当置“0”端R为低电平时,触发器被置“0”,即Q端为“0”;当置“1”端S为低电平时,触发器被置“1”,即Q端为“1”。

2、寄存器

寄存器是单片机内部的基本存储单元,由触发器构成,一个触发器就是1位寄存器。下图所示是一种由D触发器构成的4位寄存器。

在工作时,寄存器先让清0线为低电平,该低电平送到各触发器的CLR端(实际为D触发器的R端),将各触发器清0,Y3Y2Y1Y0=0000;然后将数据送到各触发器输入端,当CLK端的时钟脉冲上升沿到来时,输入端的数据就被存入到各触发器中,并从输出端输出。

3、锁存器

锁存器也是一种能存储数据的电路。其特点是当锁存信号没有到来时,输出端的状态随输入端状态的变化而变化;当锁存信号来到时,输入端的数据被锁存到输出端,即当输入端的信号再变化时输出端也不会发生变化。

以下图为例来说明锁存器的工作原理。

当锁存器的控制端EN=1时,锁存器输出端Y与输入端A的状态保持一致,即A端数据变化时,Y端数据也变化;当锁存器的控制端EN由“1”变为“0”时,输入端此刻的数据马上被锁存到输出端,在EN=0期间,输出端的数据始终保持不变,不会随输入端而变化;当EN又变为“1”时,即取消锁存,输出端又会随输入端的变化而变化。

三、单片机端口的工作原理

有了上面的知识铺垫,现在我们就以51单片机的P3端口为例来介绍一下端口的工作原理。

P3端口有P3.0~P3.7共8个引脚,P3端口可作为I/O接口,还可以用于其他方面。P3端口每个引脚的内部电路结构都相同,其内部电路结构如下图所示

1、当P3端口用作I/O接口时

如果要将P3端口用作I/O接口,应让与非门的选择输出功能端为“1”,以开通与非门。当将P3端口用作输出端口时,给锁存器的CL端送写脉冲信号,内部总线送来的数据就可以通过D端进入锁存器并从Q端输出,再通过与非门和场效应管从P3端口引脚输出。

当将P3端口用作输入端口时,应先通过内部总线向锁存器写“1”,让Q=1,场效应管截止,P3端口输入的信号就可以通过缓冲器、输入三态门送到内部总线。

2、当P3端口用作第二功能时

P3端口用作第二功能(又称复用功能)时,实际上也是在该端口输入或输出信号,只不过输入、输出的是一些特殊功能的信号。所以当P3端口用作第二功能时,其内部电路的工作原理与用作I/O接口时是一样的,在用作输入功能时,端口的锁存器同样要先置“1”。

P3端口8个引脚的第二功能详见下表。例如P3.2引脚用作第二功能时,该端口可输入由外部设备送到的中断请求信号,该信号通过缓冲器、输入三态门送到内部总线。

P3端口除了可以接收外界的输入信号外,还可以接收内部的替代输入功能端送来的信号,该信号通过输入三态门送到内部总线。


原始地址:/qinggan/8516.html