【单片机】51单片机入门教程上(保姆级指南)

2023-05-05 01:30   340   0  

前言


一、入门学习路线


  • 1.《电路基础》

  • 2.C语言基础

  • 3.单片机基础

  • 4.Altium Designer


二、前期准备工作


  • 1.所需要的软件

  • (1)Keil 5

  • (2)STC-ISP

  • (3)Proteus Professional 8

  • 2.所需的硬件

  • (1)普中A2开发板

  • (2)其他开发板


正文


  • 一、单片机的最小系统

  • 1.复位电路

  • 2.晶振电路

  • 3.单片机IO口

  • (1)基本工作条件引脚

  • (2)输入输出引脚

  • (3)控制引脚

  • 二、单片机的内部架构

  • 三、单片机可控制的外设

  • 1.LED流水灯

  • 2.矩阵键盘和数码管显示

  • 3.LCD1602和DS18B20


总结


前言


提示:以下是本篇文章前言内容


一、入门学习路线


路线:《电路基础》—— C语言基础——单片机基础—— Altium Designer


1. 《电路基础》


如果大家是一名电子大类的大学生的话大一应该会学习《电路基础》或者《电工技术》这门课,希望大家好好学习为以后学习《模拟电路》和《数字电路》打基础。(如果大家有考研打算的话可以看看关邱源的《电路》是大部分电子或自动化专业的考研专业课)。


关于《电路基础》需要掌握基本的电路模型和电路定理如欧姆定律、叠加定理、替代定理、戴维南定理、诺顿定理等等,要求会分析电路和掌握一些电路元件如:电阻、电容、继电器、LED灯、二极管、三极管、MOS管、电感、按键、晶振就行了。懂得一些运放放大器的电路更好。


当然学习单片机最最最重要的是能看懂电路原理图,按键检测原理、蜂鸣器驱动、单片机的外围电路这些基本模块电路能看懂即可,如果你是其他专业的学生,简单的能看的懂51单片机开发板的电路图就行了。


百度词条:《电路基础》课程是电子与电气信息类各专业本科生必修的一门重要的学科基础课,在整个电气信息类专业的人才培养方案和课程体系中起着承前启后的作用,对于培养学生的辩证思维能力、综合运用电路理论分析和解决实际问题的能力都起到重要的作用,为学生以后的学习、创新和科学研究工作打下扎实的理论基础。


2. C语言基础


C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。


学习建议:单片机和C语言是可以一起学习的,不过这样学习是比较漫长,容易长时间看不到自己的学习成果。emmm~~博主建议还是先学好C语言在去学习单片机,有句古话说的好叫磨刀不误砍柴工,数据类型—运算表达式—控制语句—方法定义—指针然后在了解宏定义的一些概念就差不多了。


3. 单片机基础


目前市面上主流的单片机是51单片机和STM32,我们要先学51后学STM32。为什么要先学51呢?因为51单片机外设相对较少学起来简单容易上手(GPIO、Timer、中断、USART、IIC、ADC),而STM32因为比较复杂一点,学习常用的外设(GPIO、Timer、中断、USART、IIC、SPI、PWM、DMA、ADC)就可以了,其他像什么CAN、USB的,工作需要用到的时候再去学也可以。


5. Altium Designer的使用


AD是一个画原理图和PCB的软件,作为单片机软件开发来说只需要会看或者画原理图即可。还有一个很出名的国内画PCB叫嘉立创,我还是建议大家先学AD也就是Altium Designer,然后在去用嘉立创的软件。


二、前期准备工作


1.所需的软件


(1)Keil 5


Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。


下载链接:
「Keil5安装包」等文件 https://www.aliyundrive.com/s/eXirSmS7R4K 提取码: fr25


Keil5是一个很优秀的单片机代码编写的软件以后学习STM32也离不开它,我们主要是用它来写程序编译成二进制的文件.hex文件然后通过ISP下载到单片机里去(这是我们以后了解的事,现在先不急),如图所示:


0303be71-ac51-11ed-bcd2-b8ca3a6cb5c4.webp




(2)STC-ISP


STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052系列和12C5410等系列的STC单片机,使用简便。


下载链接:
「stc-isp-15xx-v6.89C」https://www.aliyundrive.com/s/yttB7YTQe81 提取码: 6wc7


STC-ISP是国内一家叫宏晶的公司所开发的软件,我们主要用这个软件把写好的程序下载到单片机里面去,如图所示:


042f3ef6-ac51-11ed-bcd2-b8ca3a6cb5c4.webp




(3)Proteus Professional 8


Proteus Professional 8.8是一款专业好用的电路仿真软件,也就是EDA工具软件,这个是proteus 8.7的升级版本,软件为用户提供了完善的电路仿真以及PCB设计流程解决方案,涵盖了从原理图布图、代码调试到单片机与外围电路协同仿真等操作流程,新版本的proteus处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,新版本的Proteus 8.8还带来了全新的功能。


安装和下载教程:
https://blog.csdn.net/weixin_44543463/article/details/116203188


我们主要用这个软件来仿真电路。如图所示:


042f3ef7-ac51-11ed-bcd2-b8ca3a6cb5c4.webp




2.所需的硬件


(1)普中科技A2开发板


为了大家更方便的学习单片机建议大家手里准备一个普中科技A2的开发板,至于为什么选这个板子,原因是因为普中科技的板子设计的比较好,在者就是玩的人比较多,(建议大家去白嫖,天天去实验室看看,说不定有师兄师姐不用的板子就是你的拉!哈哈哈!)如图所示:




042f3ef8-ac51-11ed-bcd2-b8ca3a6cb5c4.webp




原理图如下:


下载链接:
「A2开发板原理图.pdf」https://www.aliyundrive.com/s/afic46BCXgL 提取码: st38
点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。




042f3ef9-ac51-11ed-bcd2-b8ca3a6cb5c4.webp




(2)其他开发板


博主在这里就不推荐了!


好了,到目前为止如果你手有板而且电脑上的软件也安装好的话就可以开始学习了!
给大家展示一下一个好玩的成果:


浅浅的展示一下单片机吧!_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1Gt4y157dL?share_source=copy_web&vd_source=bb490f2a1db7d2cc758def7990580710


正文


提示:以下是本篇文章正文内容


一、单片机的最小系统


单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。 如图所示:


042f3efa-ac51-11ed-bcd2-b8ca3a6cb5c4.webp


1.复位电路


在左侧下方是一个按键复位电路,接到了单片机的 9 脚 RST(Reset)复位引脚上,这个复位电路如何起作用我们后边再讲,现在着重讲一下复位对单片机的作用。单片机复位一般是 3种情况:上电复位、按键复位、程序自动复位。


假如我们的单片机程序有 100 行,当某一次运行到第 50 行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失掉,有的区域数据可能还没丢失。那么下次打开设备的时候,我们希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟我们打开电脑电源开电脑的过程是一致的。


当我们的程序运行时,如果遭受到意外干扰而导致程序死机,或者程序跑飞的时候,我们就可以按下一个复位按键,让程序重新初始化重新运行,这个过程就叫做按键复位,最典型的就是我们电脑的重启按钮。


当程序死机或者跑飞的时候,我们的单片机往往有一套自动复位机制,比如看门狗,具体应用以后再了解。在这种情况下,如果程序长时间失去响应,单片机看门狗模块会自动复位重启单片机。还有一些情况是我们程序故意重启复位单片机。


2.晶振电路


晶振电路由一个晶振和两个电容构成。晶振,又叫晶体振荡器,从这个名字我们就可以看出来,它注定一生都要不停振荡的。他起到的作用是为单片机系统提供基准时钟信号,类似于我们身体的心脏,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。STC89C52单片机的 18 脚和 19 脚是晶振引脚,我们接了11.0592M 的晶振(它每秒钟振荡 11,059,200 次),外加两个 20pF到30pF 的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。


3.单片机I/O口


我们所选用的 STC89C52,它需要 5V 的供电系统,我们的开发板是使用 USB 口输出的5V 直流直接供电的。在下面的图中可以看到,供电电路在 40 脚和 20 脚的位置上,40 脚接的是+5V,通常也称为 VCC 或 VDD,代表的是电源正极,20 脚接的是 GND,代表的是电源的负极。+5V 和 GND 之间还有个电容,作用我们下节介绍。


这个地方我们还要普及一个看原理图的知识。电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多考虑的是方便原理分析,而不是表达各个器件实际位置。比如原理图中的单片机引脚图,引脚的位置我们是可以随意放的,但是每个引脚上有一个数字标号,这个数字标号代表的才是单片机真正的引脚位置。一般情况下,这种双列直插封装的芯片,左上角是 1 脚,逆时针旋转引脚号依次增加,一直到右上角是最大脚位,我们现在选用的单片机一共是 40 个引脚,因此右上角就是 40(在表示芯片的方框的内部),如图所示,大家要分清原理图引脚标号和实际引脚位置的区别。


042f3efb-ac51-11ed-bcd2-b8ca3a6cb5c4.webp



MCS-51系列单片机的40个引脚根据功能可以分作3类: 基本工作条件引脚、 输入/输出(I/O) 引脚和控制引脚。


(1)基本工作条件引脚


基本工作条件引脚有电源引脚、 复位引脚和时钟引脚, 只有具备了基本工作条件, 单片机才能开始工作。


电源引脚 40脚为电源正极引脚(VCC) , 20脚为电源负极引脚(VSS) 。 电源正极引脚一般接5V电源, 电源负极引脚接地。


复位引脚 9脚为复位引脚(RST/VPD) 。在单片机接通电源后, 为了使内部电路正常工作, 需要复位电路为它提供复位信号,使内部电路进入初始状态, 然后才开始工作。 MCS-51 系列单片机采用高电平复位, 即外接复位电路给复位引脚送入高电平信号后, 就可以对单片机内部电路进行复位。
9脚还具有掉电保持功能, 为了防止掉电使单片机内部RAM中的数据丢失, 可在该脚再接一个备用电源, 掉电时, 由备用电源为该脚提供4.5~5.5V的电压, 可保持RAM中的数据不会丢失。


时钟引脚 18、19脚为时钟引脚(XTAL2、 XTAL1) 。单片机内部有大量的数字电路, 这些数字电路工作时需要时钟信号进行控制, 才能有次序、 有节拍地工作。 单片机内部的时钟振荡器与时钟引脚外接的定时电路构成时钟振荡电路, 产生时钟信号供给内部电路使用; 另外, 也可以由外部的振荡器产生时钟信号, 通过时钟引脚送入单片机, 供给内部电路。


(2)输入/输出(I/O)引脚


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。


这4组接口既可用作输入端口将外部信号输入单片机, 也可以用作输出端口将信号从单片机内输出。另外,这些接口还具有一些其他功能, 具体说明如下。
P0端口(32~39脚) 的功能有: 输入8路信号, 输出8路信号, 用作8位数据总线, 或用作16位地址总线中的低8位地址总线。
P1端口(1~8脚)的功能有:输入8路信号, 输出8路信号。
P2端口(21~28脚)的功能有:输入8路信号, 输出8路信号, 用作16位地址总线中的高8位地址总线。
P3端口(10~17脚)的功能有:输入8路信号, 输出8路信号。


P3端口的8个引脚还具有其他功能,也叫复用功能, 具体说明如下。
P3.0: 用作串行数据输入端(RXD)。
P3.1: 用作串行数据输出端(TXD)。
P3.2: 用作外部中断0请求信号输入端(INT0 ) 。
P3.3: 用作外部中断1请求信号输入端(INT1 ) 。
P3.4: 用作定时器/计数器T0的外部脉冲信号输入端(T0) 。
P3.5: 用作定时器/计数器T1的外部脉冲信号输入端(T1) 。
P3.6: 该端在写片外RAM时, 输出写控制信号(WR)。
P3.7: 该端在读片外RAM时, 输出读控制信号(WD)。


P0、 P1、 P2、 P3端口具有多种功能, 具体应用哪一种功能, 由单片机内部的程序来决定。 需要注意的是, 在某一时刻, 端口的某一引脚只能用作一种功能。


(3)控制引脚


控制引脚的功能主要有: 当单片机外接存储器(RAM或ROM)时,通过控制引脚控制外接存储器, 使单片机能像使用内部存储器一样使用外接存储器; 在向单片机编程(即向单片机内部写入编好的程序)时, 编程器通过控制引脚使单片机进入编程状态, 然后才能将程序写入单片机。


控制引脚的功能说明如下。
EA/VPP (31脚) : 存储器使用控制输入端/编程电压输入端。
当EA=1(高电平) 时, 单片机使用内部存储器; 当EA=0(低电平) 时, 单片机使用外接存储器。 在用编程器往单片机写入程序时, 要在该脚加12~25V的编程电压。
PSEN (29脚) : 程序存储允许输出端。
它是外部ROM读选通控制端, 当单片机要从外接ROM 中读取信息时, 该端要输出一个低电平给外接ROM。
ALE/ (30脚) : 低8 位地址锁存允许信号输出端/编程脉冲输入端。
在外接存储器时, 如图所示, 该脚输出控制信号到单片机的外接锁存器, 让锁存器将P0 端口送来的 8 位地址信号锁存起来, 当作低 8 位地址信号A0~A7(高8位地址A8~A15由P2端口送出),这样P0端口不用再输出8位地址信号,就可以空闲下来,用来传送8位数据信号。在单片机编程时, 编程器由该脚将编程脉冲输入单片机。




042f3efc-ac51-11ed-bcd2-b8ca3a6cb5c4.webp




电源、晶振、复位构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三个条件,就可以运行我们下载的程序了,其他的比如 LED 小灯、数码管、液晶等设备都是属于单片机的外部设备,即外设。最终完成我们想要的功能就是通过对单片机编程来控制各种各样的外设实现的。


二、单片机的内部架构


单片机内部结构及其功能:
CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;
RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:用以存放程序、一些原始数据和表格;
I/O口:四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统:
(1)函数名()interrupt 0 {} //对应外部中断0;
(2)函数名()interrupt 1 {} //对应定时器/计数器0中断;
(3)函数名()interrupt 2 {} //对应外部中断1;
(4)函数名()interrupt 3 {} //对应定时器/计数器1中断;
(5)函数名()interrupt 4 {} //对应串口中断;
一个全双工UART(通用异步接收发送器)的串行I/O口:用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路:石英晶体和微调电容需要外接。


这个图好好地理解一下,要在脑子里面有印象,争取记住!!!


042f3efd-ac51-11ed-bcd2-b8ca3a6cb5c4.webp



下面是一些需要了解的寄存器:


(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);
(2)中断系统:IP、IE;
(3)定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1;
(4)并行I/O口:P0、P1、P2、P3;
(5)串行口:SCON、SBUF、PCON。


ACC:是累加器,通常用A表示。
这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。


B:一个寄存器
在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。


PSW:程序状态字
这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。


CY:进位标志
8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0
例:78H+97H(01111000+10010111)


AC:辅助进、借位(高半字节与低半字节间的进、借位)
例:57H+3AH(01010111+00111010) 下面我们逐一介绍各位的用途F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。


0V:溢出标志位
运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。


P:奇偶校验位
它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。 运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。


IP-----中断优先级控制寄存器
按位寻址,地址位B8H6、指针寄存器


PC:程序计数器
指明即将执行的下一条指令的地址,16位,寻址64KB范围,复位时PC = 0000H


SP堆栈指针
指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H


DPTR:数据指针
指明访问的数据存储器的单元地址,16位,寻址范围64KB。 DPTR = DPH + DPL。可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。 分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。


TMOD:定时器方式寄存器


TCON:定时器控制寄存器


TH0、TL0;TH1、TL1: 计数寄存器
可用于设定计数初值。8052/8032增设专用寄存器


SFR:特殊功能寄存器。
这个概念大家可能刚开始理解不了,但是一定要记住。单片机有很多很多功能,每个功能都会对应一个或多个 SFR,我们就是通过对 SFR 的读写来实现单片机的多种多样的功能的。




三、单片机可控制的外设


1.LED流水灯


51单片机之用Proteus仿真画的流水灯!_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1Jt4y1L7ao?share_source=copy_web&vd_source=bb490f2a1db7d2cc758def7990580710


2.矩阵键盘和数码管显示


51单片机之逐行扫描矩阵键盘控制数码管显示0到F_哔哩哔哩_bilibiliwww.bilibili.com/video/BV12F411P7rQ?share_source=copy_web&vd_source=bb490f2a1db7d2cc758def7990580710


3.LCD1602液晶和DS18B20温度传感器


51单片机之温度报警器!_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1fe4y1979b?share_source=copy_web&vd_source=bb490f2a1db7d2cc758def7990580710


总结


这里对文章进行总结:单片机只是一个工具,我们只是用它来控制 LED 小灯、数码管、液晶等设备都是属于单片机的外部设备,最终完成我们想要的功能,就是通过对单片机编程来控制各种各样的外设实现的。具体如何编程学习单片机,我会陆续更新教程,希望大家一键三连,点关注不迷路噢。




登录icspec成功后,会自动跳转查看全文
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。