51单片机_51单片机介绍-程序员宅基地

技术标签: 经验分享  51单片机  数据结构  

  • 一、概述 51单片机,是指Intel公司开发的一种8位微处理器。它以其简单、稳定和可靠的特点,成为嵌入式系统开发中最常用的单片机之一。51单片机由存储器中央处理器输入输出端口计时器/计数器和各种外围设备组成。

  • 二、硬件结构 51单片机的硬件结构主要包括中央处理器、存储器、输入输出端口和计时器/计数器。 1.中央处理器 51单片机的中央处理器是一种基于哈佛架构的8位微处理器,具有高性能和低功耗的特点。它可以执行指令、进行算术逻辑运算和控制外围设备的工作。 2.存储器 51单片机的存储器包括程序存储器数据存储器。程序存储器用来存储运行的程序代码,而数据存储器用于存储程序需要的数据。 3.输入输出端口 51单片机通过输入输出端口与外部设备进行通信。输入端口用于接收外部信号,输出端口用于输出控制信号。 4.计时器/计数器 51单片机内置了多个计时器/计数器,用于定时和计数应用。它们可以实现精确的时间控制,并为系统提供准确的时间基准。

  • 51单片机最小系统原理图

  • 43172df66ba5410bb7066d8dc1d80266.jpg

     

  • 单片机的基本结构

  • 单片机的基本结构通常包括中央处理器(CPU),存储器(ROM、RAM),输入/输出接口(I/O)、定时器/计数(Timer/Counter)等功能模块。

  • 1.中央处理器(CPU)

  • 中央处理器是单片机的核心部件,负责执行各种指令和控制单片机的运行。它包括运算器(Arithmetic Logic Unit, ALU)/控制器(Controlunit CU)两部分。运算器负责执行算术和逻辑运算,控制器负责从储存器读取指令并解码执行

  • 2.存储器(ROM 、RAMO)

  • 存储器用于存储程序和数据。单片机的存储器分为只读存储器(Read-Only Memory, ROM)和随机存储器(RandomAccessMemory, RAM)两种。ROM存储器中存储了单片机的固化程序,而RAM存储器用于存储程序的中间结果和变量。

 

 

1.1 单片机介绍

一台能够工作的计算机要有这样几个部件构成:CPU(进行运算、控制)、 RAM (数据存储)、ROM(程序存储)、输入/输出设备。

而在单片机中,这些部件全部被做到一块集成电路芯片中,所以就称 为单片机(也称微控制器 MCU)。

51 单片机是对所有兼容 Intel 8031 指令系统的单片机的统称。

Intel(英特尔)的:i80C31、i80C51、i87C51,i80C32、i80C52、i87C52 等;

ATMEL(艾德梅尔)的:AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52 (RC)等;

Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;

STC(国产宏晶)单片机:STC89C51、STC89C52、STC89C516、STC90C516 等众多品牌。

1.2 51单片机的芯片放置位置

51单片机芯片的凹槽位置与芯片把手位置一致。

单片机脚位判断,凹槽的左边是第一个引脚,按逆时针方向排序。

1.3 芯片名字解读

STC89C52RC含义:

STC表示:(国产宏晶)单片机的芯片

8表示:8051内核芯片

9表示:表示内部含有Flash EEPROM存储器

C表示:表示该器件为CMOS 产品

5表示:固定不变

2表示:8K字节程序存储空间

RC表示:512字节数据存储空间

1.4 电平特性

TTL 电路和 CMOS 电路的逻辑电平关系如下:

①VOH:逻辑电平 1 的输出电压。

②VOL:逻辑电平 0 的输出电压。

③VIH:逻辑电平 1 的输入电压。

④VIL:逻辑电平 0 的输入电压。

TTL 电平临界值:①VOHmin=2.4V,VOLmax=0.4V。②VIHmin=2.0V,VILmax=0.8V。

CMOS 电平临界值(假设电源电压为+5V):

①VOHmin=4.99V,VOLmax=0.01V。

②VIHmin=3.5V,VILmax=1.5V。

1.5 单片机的引脚功能介绍

40个引脚按功能可以分为四类:

1.电源引脚。如VCC、GND

2.时钟引脚。如XTAL1、XTAL2

3.编程控制引脚。如RST、PSEN、ALE/PROG、EA/Vpp。

I/0口引脚。如PO、P1、P2、P3,4组8位I/0口。
vCC(40脚)、GND(20脚):电源引脚,不同型号单片机接入对应电压,常压为+5V,低压为+3.3V,大家在使用时要查看其芯片所要求的电压。

XTAL1(19脚)、XTAL2 (18脚):外接时钟引脚。XTAL1为片内振荡电路的输入端,XTAL2为片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,即需在这两个引脚处外接石英晶振和振荡电容,振荡电容的值一般取10p~30p;另一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。通常使用第一种方式。

RST(9脚):复位引脚。当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作,即单片机从头开始执行程序。

PSEN (29脚):程序存储器允许输出控制端。在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作,由于现在我们使用的单片机内部已经有足够大的ROM,所以几乎没有人再去扩展外部 ROM,因此这个引脚大家只需了解即可。

ALE/PROG (30脚):在扩展外部RAM时,ALE用于控制把PO口的输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。

EA/Vpp (31脚):EA接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部 ROM。EA 接低电平时,单片机直接读取外部ROM。我们没有外扩ROM,并且需要单片机直接读取内部程序存储器,因此EA/Vpp脚直接接高电平。

P0口(39脚~32脚):双向8位三态I/0口,每个口可独立控制。51单片机P0口内部没有上拉电阻,若输出高时为高阻态,不能正常输出高电平,因此该组I/0口,每个口可独立控制。51单片机P0口内部没有上拉电阻,若输出高时为高阻态,不能正常输出高电平,因此该组I/0口在使用时务必要外接上拉电阻,一般我们选择接入10K欧上拉电阻。

P1口(1脚~8脚):准双向8位I/0口,每个口可独立控制,内部自带上拉电阻,这种接口输出没有高阻态,输入也不能锁存,故不是真正的双向I/0口。之所以称它为“准双向”是因为该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可正确读出外部信号,也就是要使其先有个“准”备的过程,所以才称为准双向口。对52单片机P1.0引脚的第二功能未T2定时器/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。

P2口(21脚~28脚):准双向8位I/0口,每个口可独立控制,内部自带上拉电阻,与P1口相似。

P3口(10脚~17脚):准双向8位I/0口,每个口可独立控制,内部自带上拉电阻。作为第一功能使用时就当做普通I/0口,与P1口相似。

 

 

 

MCS-51单片机硬件结构
硬件结构
微处理器
数据存储器(RAM)
程序存储器(ROM/EEPROM)
中断系统
定时器/计数器
串行口
P1 P2 P3 P0
特殊功能寄存器
时钟、引脚
控制引脚
RST/Vpd(9脚)
ALE/PROG
PSEN
EA/Vpp
IO口引脚
51的微处理器
运算器
算术逻辑运算单元ALU
累加器A
寄存器B
程序状态字寄存器PSW
控制器
程序计数器PC
指令寄存器IR、指令译码器、控制逻辑电路
51存储器结构
程序存储器
内部数据存储器
特殊功能寄存器
位地址空间
外部数据寄存器
程序存储器
内部数据存储器
特殊功能寄存器SFR
堆栈指针SP
数据指针DPTR
端口P0~P3
串行数据缓冲器SBUF
定时器/计数器
位地址空间
外部数据存储器


本文不会详细的列举51单片机的内部所有功能,只是希望可以有一个直观的印象。

硬件结构

微处理器
51单片机中有1个8位的微处理器,包含运算器和控制器。

数据存储器(RAM)
用来存储程序在运行期间的工作变量、运算中间结果、数据暂存和缓存、标志位。

程序存储器(ROM/EEPROM)
顾名思义

中断系统
具有5个中断源、2级中断优先权。

定时器/计数器
2个16位定时器/计数器,具有四种工作方式。

串行口
1个全双工的串行口,具有四种工作模式。
作用:串行通信,扩展并行IO,与多个单片机相连构成多机系统。

P1 P2 P3 P0
4个并行8位io

特殊功能寄存器
共21个,是一个具有特殊功能的RAM区。
作用:对各功能部件进行管理、控制、监视。

时钟、引脚
XTAL1、XTAL2外接晶体与片内的反相器构成了一个振荡器。
XTAL1(19脚):该引脚是内部反相放大器的输入端。这个反相放大器构成了片内振荡器。用外接晶体振荡器,此引脚接地。
XTAL2(18脚):该引脚是内部反相放大器的输出端。

控制引脚
RST/Vpd(9脚)
复位,高电平有效。持续时间大于两个机器周期,完成复位。

ALE/PROG
ALE地址锁存信号,当单片机上电正常工作后,ALE引脚不断输出正脉冲信号。
PROG为本引脚的第二功能,在对片内EPROM单片机编程写入时,此引脚作为编程脉冲输入端。

PSEN
程序存储器允许输出控制端。

EA/Vpp
EA功能为内外程序存储器控制端。
作用:EA为高,单片机访问内部程序存储器,但在PC(程序计数器)值超过0FFFH时,将自动转向外部程序存储器内的程序。低电平时,则只访问外部程序存储器。

IO口引脚
P0:双向8位三态io口,此口为地址总线(低8位)及数据总线分时复用口。
P1:8位准双向io
P2:8位准双向io,与==地址总线(高8位)==复用
P3:8位准双向io,双功能复用口。
P1P2P3内部均有固定的上拉电阻。

51的微处理器
51的微处理器由运算器和控制器所构成。

运算器
算术逻辑运算单元ALU
累加器A
寄存器B
程序状态字寄存器PSW
控制器
作用:识别指令,根据指令性质控制单片机各功能部件。
单片机执行一条指令原理:从程序存储器中读出指令,送指令寄存器保存,再送指令译码器译码,译码结果送到定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机各个部件进行相应操作。
过程:程序存储器-指令寄存器-译码器-定时控制逻辑电路-各个部件
执行程序就是不断重复着过程。

程序计数器PC
是一个寄存器,是一个独立计数器,存放着下一条将要从程序存储器中取出的指令的地址。
是一个16位计数器:故可对64Kb 2的16次方位,进行寻址。

指令寄存器IR、指令译码器、控制逻辑电路
指令寄存器IR存放指令操作的专用寄存器。

51存储器结构
51单片机采用哈佛(Har - vard)结构,即程序存储空间与数据存储器空间截然分开,程序储存器和数据存储器各有自己的寻址方式、寻址空间、控制方式。

为什么是哈佛结构?

答:这种结构对于单片机面向控制的实际应用极为方便

51存储空间分为以下5种

程序存储器
内部数据存储器
特殊功能寄存器
位地址空间
在51单片机内共有211个可寻址位,他们存在内部RAM(共有128个)和特殊功能寄存器区(共有83个)中。

外部数据寄存器
51提供了可寻址的64k字节的外扩RAM能力。

程序存储器
可扩充的程序存储空间最大为64k字节。
注意:

1.EA引脚决定cpu访问片内和片外程序存储器。或PC值超过片内的ROM容量,会自动向片外程序存储器空间执行程序。
2.程序存储器的某些单元别固定用于中断源的中断服务程序的入口地址。

单片机复位后pc内容为0000H,故系统从000H开始取指令,执行程序。0000H是系统程序的启动地址,一般在该单元存放一条绝对跳转指令,跳向用户设计的起始地址。
中断地址入口处都放一条绝对跳转指令
为什么?

因为两个中断入口间隔只有8个单元,存放中断服务函数往往是不够的 。

与外部程序存储器打交道的指令:

MOVC A,@A+DPTR
MOVC A,A+PC

内部数据存储器
51片内数据存储器RAM单元共有128个,字节地址为00H-7FH。

特殊功能寄存器SFR
SFR就是一些具有特殊功能的片内RAM,字节的范围为80H-FFH。21个特殊功能寄存器离散的分布在该区域中。

规律:凡是可进行为寻址,即具有位地址的sfr的字节。其16进制地址的末位,只能是0H或8H。
注意:128个字节的SFR块中仅有21个字节是有定义的。对于未定义的字节地址单元用户不能做寄存器使用。

堆栈指针SP
堆栈是在片内RAM中开辟的一个区域。

目的:为子程序调用,和中断操作设立。
功能:保护断点,保护现场(在子程序或中断中用寄存器单元,保存原有的数据)。无论是子程序还是执行中断最后都需要返回主程序。
堆栈指针sp:8位特殊功能寄存器,sp指向堆栈顶部在RAM中的位置。

堆栈操作:数据压入push和数据弹出pop
压入sp自动加一,弹出sp自动减一。
51是向上生长型堆栈。

数据指针DPTR
16位的sfr,其高位字节用DPH表示,低位字节寄存器用DPL表示。

端口P0~P3
特殊功能寄存器p0-p3,分别为io端口p0-p3的锁存器。即每一个8位io口都为RAM的一个单元。

串行数据缓冲器SBUF
串行数据缓冲器SBUF用于存放欲发送或已接收的数据。

定时器/计数器
有两个16位寄存器/计数器T1和T0。各由两个独立8位寄存器组成,共有4个独立寄存器:TH1、TL1、TH0、TL0,可以分别对这4个寄存器进行字节寻址,但不能把T1或T0当做一个16位寄存器来寻址。

位地址空间

外部数据存储器
注意:
地址的重叠性。数据存储器和程序存储器64k字节地址重叠。数据存储器中片内最低的128个字节地址重叠。

但是不会操作混乱。
原因:采用了不同的操作指令及EA的控制选择。

程序存储器ROM和数据存储器RAM在使用上严格区分,不同操作指令不得混用。

程序存储器只能放置程序指令及常数表格,除程序运行控制外,其操作指令不分片内外。数据存储器则存放数据,片内外操作指令不同。

本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
评论发布评论
相关文章
Keil uVersion 4单片机开发指南
MDK Keil uVersion 4使用教程,基于STC8H8K64U单片机

监控系统企业架构演进史-初入Prometheus
原文出自:https://blog.mickeyzzc.tech/posts/opentelemetry/prometheus-evolution-history-one/Prometheus是一个开源的监控与时间序列数据库系统,在近年来得到了越来越广泛的应用。官方的架构图如图所示:本系列文章会以Prometheus的在一个企业里的部署架构演进过程中逐步理解和深入各种组件和概念。单节点架构刚开始接

监控系统企业架构演进史-跨地域混合云
原文出自:https://blog.mickeyzzc.tech/posts/opentelemetry/prometheus-evolution-history-two/前情概述:在《监控系统企业架构演进史-初入Prometheus》中,监控系统已经从单体架构升级到单IDC分布式架构了。前一篇文章的内容是适用于虚拟机部署和容器部署的。Prometheus是云原生时代的产物,一般和Kuberne

单片机-51单片机基础
前言单片机入门什么是单片机封装单片机工作的基本时序数字电路基础二进制逻辑运算80C51的引脚建立keil工程文件LED开发板LED原理图点亮LEDLED闪烁LED流水灯静态数码管原理图封装工作原理静态数码管控制独立按键封装原理图独立按键编程实例:点亮流水灯下面我们开始本节课的内容单片机入门什么是单片机单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器(CPU),随机

51单片机
1、处理能力的概念。51单片机属于8位机,8位是个什么意思呢?就是CPU处理的数据是8位的。位数的高低体现了CPU处理能力的强弱。4位的处理器已经基本淘汰了,8位的处理器占据了低端单片机的大部分市场,32位处理器是现在兴起的嵌入式系统的主流配置,我们常用的电脑大多都是32位,64位的处理器也有,但是市场份额比较少,价格也较高。所以我们学习的51单片机属于比较低级的单片机,会逐渐被新兴的嵌入式处

51单片机架构图 51单片机什么架构
文章目录前言一、CPU二、存储器1.存储器结构2.物理上有4个存储器地址空间3.逻辑上有3个存储器地址空间4.程序存储器5.程序存储器中的几个特殊地址的使用三、外部数据存储器四、内部数据存储器(1)内部RAM——寄存器区(地址为0~1FH的前32个单元)(2)内部RAM——位寻址区(3)内部RAM——用户RAM区(4)堆栈区五、特殊功能寄存器六、时钟电路七、单片机的时序单位八、复位电路(1)复位

51单片机的系统架构 51系列单片机内部结构
MCS-51单片机内部结构      8051是MCS-51系列单片机的典型产品,其特性与我们实验的STC89C52RC完全相同,这里以8051为例简介一下单片机的基本知识.      8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系

51单片机的架构有哪些 51单片机的结构
51单片机是由什么东西组成的单片机是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、存储器RAM、只读存储器ROM、I/O口和中断系统、显示驱动电路、A/D转换器、定时器/计数器、脉宽调制电路、模拟多路转换器等电路等等集成到硅片上构成的一个小而完善的微型计算机系统,在工业等控制领域广泛应用。51单片机的定时器/计数器的工作原理和主要功能,TF0硬件一旦变成1就可以去申请中断或者去查询

51单片机硬件架构 51单片机内部硬件结构
文章目录51单片机的组成优点各部件的功能引脚的功能1.电源引脚(1)**VCC(40脚)**:+5V电源引脚(2)**VSS(20脚)**:数字接地2.时钟引脚(1)XTAL1(19脚)(2)XTAL2(18脚):3. 控制引脚(1)RST (RESET,9脚)(2)EA*/VPP (31脚)(3)ALE/PROG*(30脚)4. 并行I/O端口P0口电路结构工作过程p0口总结P1口p1口电路结

51单片机基于什么架构 51单片机概述

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_74318453/article/details/135340910

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签