C51单片机介绍

1. 什么是C51单片机

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

  1. Intel(英特尔)的:i80C31、i80C51、i87C51,i80C32、i80C52、i87C52 等;
  2. ATMEL(艾德梅尔)的:AT89C51、AT89C52、AT89C2051,AT89S51(RC),AT89S52 (RC)等;
  3. Philips(飞利浦)、华邦、Dallas(达拉斯)、Siemens(西门子)等公司的许多产品;
  4. STC(国产宏晶)单片机:STC89C51、STC89C52、STC89C516、STC90C516 等众多品牌。

下面我们来看一下51单片机

那么51单片机啊,它是对所有兼容英特尔8051指令系统的单片机呢它的一个统称啊。

所以我们呃,平时我们叫的51单片机,它都是指兼容这个指令系统的。

包括我们马上要学习到的STC89C系列的一个芯片啊,它也属于51单片机,它能够兼容所有的英特尔8051的一个指令,也就相当于它的一个内核是51的一个内核。

只要它内核是基于51来设计的,我们统称啊为51单片机啊,不管是89C51/C52/C54/C516等等,那它都称为51单片机,这是我们的一个统称。

8位的一个单片机,它的代表型号呢,是Admir公司的一个at系列啊,AT89系列的一个芯片相信在学校学习51单片机的同学应该对这个AT89C51应该是非常熟悉。

需要注意的是呢,51单片机一般不具备自编程能力,就是说我们之前的这个8AT89C51,它这个芯片,它不能在线的一个下载啊,这就导致必须要用专用设备来进行程序的下载。后面在我们中国公司的推出的支持下载功能的C51后,以后的各种51芯片基本上都啊做了这个功能,可以实现串口下载,非常方便。

像STC89C系列的这个芯片,它都能支持串口下载是我们宏晶公司的51单片机产品。我们国产的这个STC芯片,基本上是一个统治的一个定位。像STC89C51/ C52/STC516/STC90等等啊,它性能还是非常不错的。我们也是大力的支持我们国产的一种芯片。

2. 51单片机的构成

非常经典的51单片机的一个封装图

它是采用的是DIP40的一个封装,我们可以看到它这个管角呢,总共是40个管角。

那么它的内部资源呢,也非常丰富啊,典型的一个经典51单片机。

它这个内部资源都是一样的,它是属于一个8位的一个CPU,然后呢它有4K字节的一个程序存储空间。

也就是说它内置的ROM和Flash,也就是说程序的存储容量大小是4KB。

然后呢,它还有数据存储的容量啊,128字节的一个呃RAM啊,其实对于早期的51单片机来说这个容量还是非常不错的。

然后呢,它是有32个IO口,P10到P17 ,还有P0到P07, 然后P20到P27, 那P30到P37,总共呢是32个IO啊。IO资源还是比较多的。

那他有111条指令那么这些指令呢,大部分为单指令啊,然后呢还有21个专用的寄存器,主要是用来配置一些IO口的复用功能。

然后呢,还有两个可编程的一个定时计数器啊,T0和T1。

然后呢,还有5个中断源,这个在后面我们具体学习到中断的时候也会给大家介绍。

那么还有一个全双工的串口啊也就是有RXD和TXD,有一个这个全双工的一个串口,像STC的这种芯片,它可以通过这个串口来下载程序,也可以实现一个串口通信。

虽然说我们这个芯片,内部有4KB的一个Flash和128之间的一个RAM,但是呢对于一些应用要求比较高,也就是说它的一个Flash和RAM应用比较多的情况下,那它可以通过外扩一个Flash或者是RAM。

但是现在51单片机来说,已经这一块基本上没有什么意义了,如果说你真的在应用,应用当中需要比较大的一个内存啊,比较大的一个数据存储空间的时候,肯定不会考虑51单片机啊,现在可选的单片机的种类非常多,前面我们也说了像你对高级应用的话,我们可以选择STM32,高级的一个芯片。

51现在主要应用于一个教学啊,让大家能够入门,单片机嵌入式这一块,然后呢 51也在一些小型的一个家电啊

智能的一些小型产品当中也有应用啊,因为它的一些功能,可能不是特别复杂,所以它对代码容量啊,数据空间要求并不是很多,所以这个芯片内部自带的这个Flash和RAM已经是完全够用。

它的一个供电呢,是单一的一个5伏供电啊,

单一的5伏供电,也就是说它这个电源系统里面,只有这个VCC5伏,它的一个兼容的电压是一个5伏的。

然后旁边呢还有一个IO数量比较少的这个芯片啊,你可以看到它总共是20个角。

如果对于你开发一些产品用的这个51单片机不需要那么多资源,仅仅需要一些少量的一些lO口,那可以选择这种啊,数量比较少的啊,自然它的成本也低,对不对。

然后我们再来看一下这一张图,这张图呢是51单片机内部的一个结构图,从这张结构图当中,大家应该也可以清晰的看得到它的一些内部的东西。

2.1. CPU/8051

定义:CPU是由运算和控制逻辑组成。

比如说我们可以看到有CPU,这是我们8051的一个内核。

那这个CPU呢它是由运算和控制逻辑组成,同时呢还包括终端系统和部分的外部特殊功能集成器

2.2. RAM

定义:

除了这个CPU,还有一个RAM啊,刚才我们其实也简单的介绍一下,它可以用来存放读写的一些数据啊,如运算的中间结果或是最终结果,以及预显示的一些数据。

也就是说,它主要是用来存储一些数据的啊,这个RAM它有个特点就是断电后这个系统里面的数据呢会清除清除掉,所以我们有些重要的数据啊,一定不要存放在这里。

因为你系统一断电,在开电的时候,里面的数据是没有的,所以这一块要注意。

2.3. ROM

定义:

然后呢再有一个名词

还有这个ROM,ROM是用来存放程序,所以呢它这个ROM里面存储的东西,它是可以掉电能保存的。所以我们在给单片机下载程序之后啊,我们再关电再开电的时候,依然发现程序正在运行啊,这是因为我们的程序呢,是下载到这个ROM的这个空间里面的,它是可以断电保存的

2.4. 通信方式

在C51单片机中,并行I/O和串口通信是两种常见的通信方式

  1. 并行I/O:
  2. 串口通信:

并行I/O适用于数据量大、传输速度快的场合;而串口通信则适用于数据量小、传输距离远的场合。在实际应用中,可以根据具体需求选择合适的通信方式。

对应到我们的51系列里面,可以看到有四组8位。

2.5. 定时器/计数器

然后还有两个T/C啊,T是定时器,C是计数器。

我们在学习51单片机的时候呢,它定时器呢,其实也是由计数开始计数到一定的

时候,其实每计数一次他有个时间啊,其实也类似于一个定时的功能。

定时器和计数器在功能上有一定的重叠,但它们的主要区别在于触发源和用途。定时器的触发源通常是时钟信号,用于实现定时控制功能;而计数器的触发源可以是任意输入信号,用于实现计数功能。

C51中的定时器定义

C51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。定时器和计数器是同一硬件电路支持的,通过寄存器配置不同,就可以当作定时器或者计数器使用。在C51中,标准的定时器/计数器有T0和T1,而C52相比于C51,多了一个T2定时器。

C51中的定时器功能

定时器主要用于计时系统,可以实现软件计时,或者使程序每隔一固定时间完成一项操作。它替代了长时间的Delay,提高了CPU的运行效率和处理速度。具体来说,定时器的工作原理是每过一个机器周期,计数存储器的值就加1。当作为定时器使用时,它依靠内部的震荡电路进行计数。

C51中的定时器举例

假设有一个需求,要求P3.4接一个按键,P1接8个灯,当按键按下3次后,8个灯实现流水灯效果,每个灯亮2s,灭2s。在这个例子中,计数器(如T0)可以用作计数按键按下的次数,而定时器(如T1)则可以用于控制每个灯的亮灭时间。当计数器T0计数到3时,启动定时器T1,使每个灯按照设定的时间间隔进行亮灭操作,从而实现流水灯效果。

定时器的用处,比如我要实现一个LED闪烁控制,假设你想要让连接在C51单片机P1.0引脚上的LED灯以一定的频率闪烁。你可以使用定时器(如Timer0)来生成一个定时的中断,每次中断时切换LED的状态(亮或灭)。这样,LED就会按照你设定的频率闪烁。

计数器的用处,比如我要实现一个外部事件计数:假设你需要统计外部事件(如传感器信号)的发生次数。你可以将外部事件连接到C51的某个引脚(如P3.2),并在该引脚上使用计数器(如Counter0)来统计事件的发生次数。每次外部事件发生时,计数器就会增加。

定时器计时器的一个功能,这个后面我们也会学习到。

2.6. 中断

还有C51中的中断中断控制系统,

定义中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。在C51单片机中,中断机制允许CPU在执行主程序时,被某个事件打断,转去执行与该事件相应的中断服务程序,执行完毕后,再返回主程序继续执行。

功能中断的主要功能是处理一些紧急情况或实现定时操作。例如,当外部设备有数据需要传输给CPU时,可以通过中断方式通知CPU进行处理;或者当CPU需要定时执行某些任务时,也可以通过定时器中断来实现。

举例:假设C51单片机正在执行一个主程序,此时外部设备(如传感器)突然发送一个信号,表示有紧急事件需要处理。此时,CPU会响应这个中断请求,暂停当前的主程序执行,转而执行与该中断对应的中断服务程序。中断服务程序会处理这个紧急事件,处理完毕后,CPU会返回之前被暂停的主程序继续执行。

2.7. 时钟

那我们再来看一下这张图当中,我们可以看到

在C51单片机中,时钟通常与定时器和中断密切相关。时钟信号是单片机运行的基础,它决定了单片机的工作频率和时序。

定义时钟信号是一种周期性的信号,用于同步单片机的各种操作。在C51单片机中,时钟信号由内部的时钟电路产生,也可以由外部的晶振电路提供。

功能时钟信号的主要功能是控制单片机的各种操作按照预定的时序进行。例如,CPU在执行指令时,需要按照时钟信号的节奏逐步完成取指、译码、执行等操作;定时器也需要时钟信号来触发定时中断等。

举例:假设C51单片机使用了一个外部晶振电路来提供时钟信号。当晶振电路工作时,会产生一个稳定的时钟信号。这个时钟信号会被单片机的时钟电路接收并处理,用于同步单片机的各种操作。例如,当CPU需要执行一个加法指令时,它会按照时钟信号的节奏逐步完成取指、译码、执行等操作;同时,定时器也会根据时钟信号的周期来触发定时中断等。

这个8051单片机,这个时钟是依靠我们外部的一个时钟来给它提供一个震荡频率

那么通常这个时钟源的频率我们选择为6兆到12兆,通常使用是11.0592兆来给这个8051的一个时钟进行一个提供时钟源。

时钟是51单片机内部的一个基础组件,它负责产生稳定的时钟信号,作为单片机内部各个模块同步工作的基准。时钟信号通常由晶振产生,通过振荡电路转化为稳定的频率信号,供单片机内部使用。

时钟不是指时钟频率啊,时钟频率也被称为主频,是单片机运行的基本节奏。它决定了单片机每秒可以执行的指令数量,也就是处理速度。更高的时钟频率通常意味着更快的处理速度,但也会增加功耗和发热量。

2.8. 总线

数据总线、地址总线和控制总线 是计算机系统中三种主要的总线类型,它们在计算机内部和外部设备之间传输信息。以下是这三种总线的定义、功能及简要说明:

  1. 数据总线(Data Bus)
  2. 地址总线(Address Bus)
  3. 控制总线(Control Bus)

它里面的总线比较多,像有数据总线,有地址总线,还有控制总线,这些总线在交叉着控制内部组件,像并行的IO,串行通信口,中断系统程序,以及数据存储器和定时器等等。

在CPU与内存或其他设备之间的通信中,这三种总线协同工作。CPU通过地址总线发送地址信息,通过数据总线发送或接收数据,并通过控制总线发送控制命令和接收响应。这种协同工作确保了CPU可以高效、有序地与其他设备通信。

以上的这些东西其实就涵盖了51单片机,所有的东西,其中程序存储器和数据存储器

这些是不需要我们去管的,那么我们学的主要是一个定时/计数器,中断系统,串行通信以及IO的一个使用,那么基本上8051的了解和学习基本上也就可以了。

3. 51单片机能做什么

下面我们继续来介绍一个内容

就是51单片机它能做些什么,那么单片机,说白了就是一种微型的电脑,只要我们啊对它进行编程,那再加上一系列的外围电子设备,就可以发挥它的一个强大功能。

51单片机它能具体做些什么,我们可以看这个图。

那么51单片机用于控制,那么通过它的一个串口可以和Wifi,GPS蓝牙等等这些东西来进行一个通信,实现一些Wifi的控制,蓝牙的控制啊,GPS的定位啊等等都可以实现。

通过它的ad接口,可以采集光敏烟雾传感器盒子或者是可燃气体的一些模拟信号。

包括数字信号的一个输出,然后呢我们还可以使用51单片机,来跟这些电机进行一些控制,像直流电机啊,步进电机啊,4伏电机啊等等啊,包括一些LED,LCD等等这些设备呢,都可以通过51单片机来进行控制啊

那么日常生活当中呢,我们啊可以看到的,可以使用51来设计一些智能手环呢,啊飞行器啊,啊平衡车啊,以及扫地机啊,移动POS啊等等啊等等。

可能有的更高级的一些功能它,它不会用51单片机。

比如说像智能扫地机啊,它可能用一些高端类芯片,像s t m 32。

但是如果说你将51单片机学会了,那你在进阶s t m 32的时候,是非常轻松的啊。

所以呢,我们在学习51单片机的时候,一定要认真的把这个东西学好啊,基础外设,GPIO的一个输入,输出的一个使用,这是最简单的一个操作。

还有就是它的一个外部中断中段,以及定时器和串口。当我们把这些,基础外设啊,学会了那么基本上你也就入门了。

除了要掌握这些基础的外设,那我们还需要掌握一些基础的,数字电路和模拟电路的一些知识,那么51单片机开发当中呢,涉及的电路呢,并不是很复杂,对于初学者来说只需要掌握一些基础的数字电路和模拟电路的一些知识就可以了。

比如说最简单的发光二极管的一个导通特性呢,你要知道这个二极管怎么来让它发,然后还有三极管,怎么让三极管进行导通等等。

然后最重重要,这个最关键最核心的东西其实也就是c语言。其实51单片机内部的东西是非常简,弄来弄去那些资源都是固定的

全部评论

相关推荐

08-27 16:57
已编辑
华南师范大学 FPGA工程师
#通信硬件人笔面经互助# 嵌入式硬件工程师7月31日投递,8月23日收到邮件。8月24日一面🤪 背景本科双非/硕士师范硕本人的经历是(电赛国一、嵌入式芯片设计大赛国一,均团队主战+排名第一),有实习经历(小厂,偏硬件+FPGA设计),除此之外还有暑期学校助教经验、集创赛助教经验,开发经验稍微充足一点。🤔 面试感受一面技术面45min,总体感受下来他们公司类似于创客类型的氛围,主营的业务偏向于益智类产品和比赛类型产品,也有一些关于3D切割机的硬件产品方向,里面基本只有纯硬和纯软的方向,两者交叉度不会太高。无八股,基本上都是追问项目细节。1、自我介绍。2、分享一个你认为难度最大的项目及其怎么样去工作的。3、这些项目的完成度以及你个人在项目里面的分工。4、本科到研究生期间你觉得最大的变化是什么,或者说是你学到了什么。5、如果你在设计中遇到了问题,你会怎么样去解决。6、详述一下你PCB设计过程中自己的设计思路和规范。接下来是反问环节:1、如果进入公司,我的具体方向。2、压力怎么样,能不能进入一线进行研发。他介绍了公司的架构,公司的硬件开发方向,涉及到的内容其实很多,有STM32,Arduino,FPGA开发,嵌软方面的,硬件主要是做SOC系统板,电机驱动,切割机驱动设计等等。应该后续还有一面,有后续再更新。
查看16道真题和解析 通信硬件人笔面经互助
点赞 评论 收藏
分享
1.自我介绍2.freerots主要是微内核,主要有哪些组成部分,内部任务间的通信方式有哪些?3.freertos任务切换的过程,详细一点如何切换的,保存怎么恢复的?4.freertos任务有哪些不同的状态?高优先级任务被阻塞或者挂起,再执行低优先级任务5.用过单片机的哪些外设?6.PWM除了占空比之外还有什么要素?频率,周期,占空比7.蓝牙的底层协议?8.linux的进程间通信机制?9.进程间的调度方式?10.linux的内存管理?11.了解Linux的一些驱动么?12.对VFS的框架有了解么?13.常用的linux基础命令14.GCC编译一般分为那几部分?15.用过vim么,介绍vim常用命令?16.结构体和联合体的区别,什么时候会用联合体?17.位域的概念?18.static关键词的作用?19.普通指针和函数指针的区别?什么时候会用到函数指针20.指针和数组变量有哪些相似的地方?21.递归函数有哪些优势和劣势?22.数组和链表的区别?到这电脑死机了,后面也没啥就反问环节了。地平线:嵌入式测试开发(二面)1.在Linux上有做过一些开发或者测试么?2.IIC驱动?3.接触过哪些单片机的外设?SPI了解过么?4.多进程的通信方式?5.问了深度学习的项目,项目难点,优化方法?6.如何看待嵌入式测试开发这个岗位?7.用过pytest库么?8.给一个测试场景,比如现在有一个IIC的驱动,怎么去测试它?地平线:嵌入式测试开发(三面)三面是总监面,面试之前百度了下,还真查到了哈哈哈,算是提前认识了技术问题不多,更多的是综合性的东西1.介绍项目,项目中遇到的问题以及优化的地方?2.PWM遇到毛刺信号如何处理?这块没答好,说了电容滤波3.实习对于自己的一个收获讲一讲?4.实习中自己最有收获的一件事情?5.自己未来的职业规划?(这块我提到了自己想要往技术深层发展,面试官耐心的解释了每一阶段的工程师应该具备哪些素质,对自己也是一个很好的启发)6.反问面试官很厉害,从言语中能感觉到是个技术大佬,三面结束9.18三面结束,目前业务面所有流程走完,官网状态还没变  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看35道真题和解析
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务