51单片机入门——单片机最小系统

2023-11-06

1.什么是最小系统

单片机最小系统也称为单片机最小应用系统,是指使用最少的原件组成单片机可以工作的系统。在这里插入图片描述

2.最小系统的三要素

单片机最小系统的三要素为:电源、晶振和复位电路。

2.1.电源

任何电子设备都需要供电,目前主流单片机的电源分别为5V和3.3V这两个标准。

选用STC89C52,它需要5V的供电系统,上图是使用USB口输出的5V直流直接供电的,从图中可以看出,供电电路在40引脚和20引脚的位置上,40引脚接的是+5V,通常也称为VCC或VDD,代表电源正极,20引脚接GND,代表电源负极。

2.2.晶振

晶振,又叫晶体振荡器,从这个名字上就可以看出,它注定一生都要不停的振荡。它起到的作用是为单片机系统提供基准时钟信号,类似于部队训练喊口号的人,单片机内部所有的工作都是以这个时钟信号为步调基准来进行工作的,可以说晶振就是单片机的“心脏”。STC89C52单片机的18引脚和19引脚是晶振引脚,上图接了一个11.0592MHz的晶振(即每秒振荡11059200次),外加两个30pF的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定
在这里插入图片描述

2.3.复位电路

单片机的复位一般分为四种:外部RST复位,软件复位,掉电复位/上电复位,看门狗复位。

2.3.1.外部RST引脚复位

在1.中的图中我们可以看到在图的左边是一个复位电路,接到了单片机的9引脚RST(Reset)复位引脚上。这个复位电路是从外部向RST引脚施加一定宽度的复位脉冲,从而实现单片机的复位。将RST复位引脚拉高并维持24个时钟加10us后,单片机会进入复位状态,将RST复位引脚拉回低电平后,单片机结束复位状态并从用户程序区的0000H处重新开始工作。

2.3.2.软件复位

用户的应用程序在运行过程当中,有时会有特殊需求,需要实现单片机系统软复位(热启动之一),传统的8051单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。现STC新推出的增强型8051根据客户的要求增加了ISP CONTR特殊功能寄存器,实现了此功能。用户只需简单的控制ISP_CONTR特殊功能寄存器的其中两位SWBS/SWRST就可以系统复位了。
在这里插入图片描述
ISPEN:ISP/IAP功能允许位。
0:禁止ISP/IAP读/写/擦除Data Flash/EEPROM;
1:允许ISP/IAP读/写/擦除Data Flash/EEPROM。
SWBS:软件选择从用户应用程序区启动(0),还是从ISP程序区启动(1)。要与SWRST直接配合
才可以实现
SWRST:0:不操作;1:产生软件系统复位,硬件自动清零。
;从用户应用程序区(AP区)软件复位并切换到用户应用程序区(AP区)开始执行程序MOV ISP_CONTR, #00100000B;SWBS=0(选择AP区),SWRST=1(软复位)
;从系统ISP监控程序区软件复位并切换到用户应用程序区(AP区)开始执行程序
MOV ISP_CONTR, #00100000B ;SWBS=0(选择AP区), SWRST=1(软复位)
;从用户应用程序区(AP区)软件复位并切换到系统ISP监控程序区开始执行程序
MOV ISP_CONTR, #01100000B;SWBS =1(选择ISP区),SWRST =1(软复位)
;从系统ISP监控程序区软件复位并切换到系统ISP监控程序区开始执行程序
MOV ISP_CONTR, #01100000B;SWBS =1(选择ISP区),SWRST =1(软复位)
本复位是整个系统复位,所有的特殊功能寄存器都会复位到初始值,I/O口也会初始化

2.3.3.上电复位/掉电复位

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

2.3.4.看门狗复位

适用单片机型号:
STC89C51,STC89C52,STC89C53,STC89C14,STC89LE51,STC89LE52,STC89LE53,STC89LE14STC89C54,STC89C58,STC89C516,STC89C510,STC89C512,STC89C514,STC89LE54,STC89LE58,STC89LE516,STC89LE510,STC89LE512,STC89LE514

在工业控制/ 汽车电子/航空航天等需要高可靠性的系统中,为了防止“系统在异常情况下,受到干扰,MCU/CPU程序跑飞,导致系统长时间异常工作”,通常是引进看门狗,如果MCU/CPU不在规定的时间内按要求访问看门狗,就认为MCU/CPU处于异常状态,看门狗就会强迫MCU/CPU复位,使系统重新从头开始按规律执行用户程序。

STC89C52系列单片机内部也引进了此看门狗功能,使单片机系统可靠性设计变得更加方便/简洁。为此功能,增加了特殊功能寄存器WDT_CONTR:

WDT_CONTR:看门狗(Watch-Dog-Timer)控制寄存器

SFR name Address bit B7 B6 B5 B4 B3 B2 B1 B0
WDT_CONTR E1H name - - EN_WDT CLR_WDT DILE_WDT PS2 PS1 PS0

Symbol符号 Function功能
EN_WDT: Enable WDT bit. When set, WDT is started
看门狗允许位,当设置为“1”时,看门狗启动。
CLR_WDT: WDT clear bit.If set,WDT will recount. Hardware will automatically clear this bit.
看门狗清“0”位,当设为“1”时,看门狗将重新计数。硬件将自动清“0”此位。
IDLE_WDT: When set,WDT is enabled in IDLE mode. When clear, WDT is disabled in IDLE
看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在“空闲模式”计数当清“0”该位时,看门狗定时器在“空闲模式”时不计数
PS2,PS1,PSO: Pre-scale value of Watchdog timer is shown as the bellowed table:

/* 看门狗测试程序,可在STC的开发板上直接测试*/
WDT_CONTR			EQU		0EIH		;看门狗地址
WDT_TIME_LED 		EQU 	P1.5 		;用P1.5 控制看门狗溢出时间指示灯,
					;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示
WDT_FLAG_LED 		EQU 	P1.7
					;用P1.7控制看门狗溢出复位指示灯,如点亮表示为看门狗溢出复位
Last_WDT_Time_LED_Status		EQU 	00H :位变量,存储看门狗溢出时间指示灯的上一次状态位
;WDT复位时间(所用的Oscillator frequency=18.432MHz):
;Pre_scale_Word 	EQU 	00111100B 		;清0,启动看门狗,预分频数=320.68S
Pre_scale_Word 		STO 	00111101B 		;清0,启动看门狗,预分频数=641.36S
;Pre scale_Word 	EQU 	00111110B 		;清0,启动看门狗,预分频数=1282.72S
;Pre_scale_Word 	EQU 	00111111B 		;清0,启动看门狗,预分频数=2565.44S
		ORG 	0000H
		AJMP	 MAIN
		ORG 	0100H
MAIN:
		MOV 	A, WDT_CONTR 		;检测是否为看门狗复位
		ANL 	A, #10000000B
		JNZ 	WDT_Reset 			;WDT_CONTR.7=1,看门狗复位,跳转到看门狗复位程序
;WDT_CONTR.7=0,上电复位,冷启动,RAM单元内容为随机值
		SETB 	Last_WDT_Time_LED_Status ;上电复位,
;初始化看门狗溢出时间指示灯的状态位=1
		CLR 	WDT_TIME_LED 		;上电复位,点亮看门狗溢出时间指示灯
		MOV 	WDT_CONTR, #Pre_scale_Word 	;启动看门狗
WAIT1:
		SJMP 	WAIT1 ;循环执行本语句(停机),等待看门狗溢出复位
;WDT_CONTR.7=1,看门狗复位,热启动,RAM单元内容不变,为复位前的值
WDT_Reset: 				;看门狗复位,热启动
		CLR 	WDT_FLAG_LED 		;是看门狗复位,点亮看门狗溢出复位指示灯
		JB 		Last_WDT_Time_LED_Status, 		Power_Off_WDT_TIME_LED
;为1熄灭相应的灯,为0亮相应灯
;根据看门狗溢出时间指示灯的上一次状态位设置WDT_TIME_LED灯,
;若上次亮本次就熄灭,若上次熄灭本次就亮
		CLR 	WDT_TIME_LED 		;上次熄灭本次点亮看门狗溢出时间指示灯
		CPL 	Last_WDT_Time_LED_Status ;将看门狗溢出时间指示灯的上一次状态位取反
WAIT2:
		SJMP 	WAIT2 ;循环执行本语句(停机),等待看门狗溢出复位
Power_Off_WDT_TIME_LED:
		SETB 	WDT_TIME_LED 上次亮本次就熄灭看门狗溢出时间指示灯
		CPL 	Last_WDT_Time_LED ;将看门狗溢出时间指示灯的上一次状态位取反
WAIT3:
		SJMP	WATT3 		;循环执行本语句(停机),等待看门狗溢出复位
END  

2.3.5.冷启动复位和热启动复位

在这里插入图片描述

3.单片机引脚简介及电路原理图

电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候更多的考虑是方便原理图分析,而不是表达各个器件实际位置。比如原理图中的单片机引脚图,引脚的位置是可以随意改变的,但是每个引脚上有一个数字标号,这个数字标号才是单片机真正的引脚位置。一般情况下,双列自插封装的芯片,左上角是1引脚,逆时针旋转引脚号依次增加,一直到右上角是最大引脚号,例如:STC89C52单片机芯片一共有40个引脚,因此右上角就是40引脚。如图所示:
在这里插入图片描述

单片机引脚说明:

管脚 LQFP 44/ PQFP 44 编号 PDIP 40 编号 PLCC 44 编号 说明
P0.0~P0.7 37 - 30 39-32 43 - 36 P0口既可以作为输入/输出口,也可以作为地址/数据复用总线使用。当P0口作为输入/输出口时,P0是一个8位准双向口,上电复位后处于开漏模式。P0口内部无上拉电阻,所以作I/O口必须外接10K - 4.7K的上拉电阻。当P0作为地址/数据复用总线使用时,是第8位地址线[A0~A7],数据线的[D0 ~ D7],此时无需外接上拉电阻。
P1.0/T2 40 1 2 P1.0 : 标准I/O口 PORT1[0] / T2 : 定时器/计数器2的外部输入
P1.1/T2EX 41 2 3 P1.1 : 标准I/O口 PORT1[1] / T2EX : 定时器/计数器2捕捉/重装方式的触发控制
P1.2 42 3 4 P1.2 : 标准I/O口 PORT1[2]
P1.3 43 4 5 P1.3 : 标准I/O口 PORT1[3]
P1.4 44 5 6 P1.4 : 标准I/O口 PORT1[4]
P1.5 1 6 7 P1.5 : 标准I/O口 PORT1[5]
P1.6 2 7 8 P1.6 : 标准I/O口 PORT1[6]
P1.7 3 8 9 P1.7 : 标准I/O口 PORT1[7]
P2.0 ~ P2.7 18 - 25 21 - 28 24 - 31 P2口内部有上拉电阻,既可以作为输入/输出口,也可以作为地址总线使用(A8 ~ A15)。当P2口作为输入/输出口时,P2是一个8位准双向口。
P3.0 /RxD 5 10 11 P3.0 : 标准I/O口 PORT3[0] / RxD : 串口1数据接收端
P3.1/TxD 7 11 13 P3.1 :标准I/O口 PORT3[1] / TxD :串口1数据发送端
P3.2/INT0 8 12 14 P3.2: 标准I/O口 PORT3[2] / INT0 :外部中断0,下降沿中断或低电平中断
P3.3/INT1 9 13 15 P3.3 :标准I/O口 PORT3[3] / INT1: 外部中断1,下降沿中断或低电平中断
P3.4/T0 10 14 16 P3.4 :标准I/O口 PORT3[4] / T0 : 定时器/计数器0的外部输入
P3.5/T1 11 15 17 P3.5 :标准I/O口 PORT3[5] / T1 : 定时器/计数器1的外部输入
P3.6/WR 12 16 18 P3.6 :标准I/O口 PORT3[6] / WR :外部数据存储器写脉冲
P3.7/RD 13 17 19 P3.7 :标准I/O口 PORT3[7] / RD : 外部数据存储器读脉冲
P4.0 17 23 P4.0 :标准I/O口 PORT4[0]
P4.1 28 34 P4.1 :标准I/O口 PORT4[1]
P4.2/INT3 39 1 P4.2 :标准I/O口 PORT4[2] / INT3 :外部中断3,下降沿中断或低电平中断
P4.3/INT2 6 12 P4.3 :标准I/O口 PORT4[3] / INT2 : 外部中断2,下降沿中断或低电平中断
P4.4/PSEN 26 29 32 P4.4 :标准I/O口 PORT4[4] / PSEN 外:部程序存储器选通信号输出引脚
P4.5/ALE 27 30 33 P4.5 :标准I/O口 PORT4[5] / ALE :地址锁存允许信号输出引脚/编程脉冲输入引脚
P4.6/EA 29 31 35 P4.6 :标准I/O口 PORT4[6] / EA :内外存储器选择引脚
RST 4 9 10 RST :复位脚
XTAL1 15 19 21 内部时钟电路反相放大器输入端,接外部晶振的一个引脚。当直接使用外部时钟源时,此引脚是外部时钟源的输入端。
XTAL2 14 18 20 内部时钟电路反相放大器的输出端,接外部晶振的另一端。当直接使用外部时钟源时,此引脚可浮空,此时XTAL2实际将XTAL1输入的时钟进行输出。
VCC 38 40 44 电源正极
GND 16 20 22 电源负极,接地
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机入门——单片机最小系统 的相关文章

  • 容器技术之Docker&K8S

    1 Docker K8S区别 区别 1 k8s是一种开放源码的容器集群管理系统 而Docker是一种开放源码的应用容器引擎 2 k8s是一套自动化部署工具 可以管理docker容器是容器编排层面的 docker是容器化技术 是容器层面的 2
  • Axure RP9笔记--页面自适应

    笔记2 页面自适应 大三的时候曾经对猫耳FM进行重构 使用HTML 现在看看真是一塌糊涂 只做出了静态页面 当时还遇到了个问题 浏览器变成小窗后 里面的内容并不会改变大小 但是现在大部分网站都做了页面自适应 当时还对前端一无所知 今天的学习
  • 如何在macOS中编译LLVM

    第一步 在App Store中搜索并安装Xcode 如果不想安装整个Xcode 可以在terminal中运行以下命令来只安装命令行工具 xcode select install 第二步 安装LLVM的依赖库 首先运行以下命令 以官网为准 来

随机推荐

  • sql尚硅谷day1

    mysql基础 1 通过mysql自带服务端 只限root用户 2 cmd进入mysql命令 mysql h localhost P 3306 u 用户名 p 停止exit 显示数据库 show databases 打开一个库 use 库名
  • 五大板块(5)——字符串

    参考 五大板块 5 字符串 作者 丶PURSUING 发布时间 2021 03 18 16 03 48 网址 https blog csdn net weixin 44742824 article details 114982019 目录
  • 华为OD机试真题-士兵过河II【2023Q2】【JAVA、Python、C++】

    题目描述 一支N个士兵的军队正在趁夜色逃亡 途中遇到一条湍急的大河 敌军在T的时长后达河面 没到过对岸的士兵都会被消灭 现在军队只找到了1只小船 这船最多能同时坐上2个士兵 1 当1个士兵划船过河 用时为 a i 0 lt i lt N 2
  • java: framework from BLL、DAL、IDAL、MODEL、Factory, using MySql 8.0

    sql drop table BookKindList 书目录 create table BookKindList BookKindID INT NOT NULL AUTO INCREMENT 自动增加 BookKindName nvarc
  • G - LR Constraints(AtCoder - arc124_a )

    题目链接 题意 N个卡片 上面的数字为1 k 然后有k个限制条件 每个限制条件有1个字母 ci 和一个数字 ki 如果ci是 L 表示i能够输入的最左边的位置是ki 如果ci是 R 表示i能够输入的最右边的位置是ki 如果能理解题意 这个题
  • simulink的工具箱开发stm32步骤

    1 打开stm32cubeMx 配置芯片信息 记得配置时钟 之前就是因为没有配置time 出现灯不亮的问题 2 打开Matlab 将当前工作目录切换到配置文件的目录IOC配置文件 stm32cubeMx 然后开始调用simulink模块 3
  • linux tcpdump rpm,linux命令——tcpdump

    这样tcpdump就顺利地安装到你的linux系统中 怎么样 很简单吧 二 Tcpdump的使用 tcpdump采用命令行方式 它的命令格式为 tcpdump adeflnNOpqStvx c 数量 F 文件名 i 网络接口 r 文件名 s
  • 在CentOS7中安装JDK1.8并配置环境变量

    在CentOS7中安装JDK1 8并配置环境变量 准备工作 首先下载jdk的压缩包 64位 链接 http pan baidu com s 1o7B1PXK 密码 el7b 1 新建 usr java文件夹 将jdk 8u45 linux
  • HIVE中关于collect_set与explode函数妙用

    hive的复合数据类型 hive中的列支持使用三类复杂的集合数据类型 即 array map及struct 这些类型的名称是保留字 具体用法可参见该篇博文 里面有关于三类基本集合数据类型的操作实例 注 map中可嵌套array类型 例如 定
  • openwrt中samba及ftp服务器设置

    1 挂载点设置 U盘或硬盘格式化为exfat或ext4 挂载点自定义为 mnt sda1 并记得勾 上启用挂载项 2 samba设置 3 ftp设置 新手折腾很久 只会最简单的设置 还没完全搞明白但能用root登录使用了 但自定义用户和匿名
  • Linux下Qt程序运行时找不到so的解决办法

    一 全局性设置 将so放入相应的系统lib目录 修改环境变量 在环境变量中添加so所在路径 修改一些文件 在其中指定so所在路径 大概有上面的这3种方式 就不详细说了 相信大家都清楚 二 指定编译选项 上面介绍的方式 无一例外 都需要修改环
  • vulnhub-lampiao

    lampiao 1 信息收集 nmap p 192 168 14 189 dirb http 192 168 14 189 1898 X txt php 发现更新日志文件CHANGLOG txt 访问更新日志文件CHANGELOG txt
  • iOS 15 适配踩坑:NavigationBar、UITabBar失效问题

    苹果前两天推出了iOS 15 秋天都等不及 相关链接 ios 15 0 适配问题 NavigationBar和UITabBar失效问题 Xcode 13 beta版 iOS 15 beta 3的系统 除了客户提出的问题 自己还发现了两处UI
  • python常用的类间关系

    1 类之间的关系 1 1 定义 1 2 例子 2 定义可访问性 2 1 定义 2 2 例子 附录 1 类之间的关系 1 1 定义 简单的说 类和类之间的关系有三种 is a has a和use a关系 is a关系也叫继承或泛化 比如学生和
  • 《软件测试的艺术》第七章 可用性(或用户体验)测试

    软件测试的艺术 第七章 可用性 或用户体验 测试 7 0 前言 7 1 可用性测试基本要素 7 2 可用性测试流程 7 2 1 测试用户的选择 7 2 2 需要多少用户进行测试 7 2 3 数据采集方法 7 2 4 可用性调查问卷 7 2
  • 网页使用jssdk微信分享报错

    网页使用jssdk微信分享报错 显示找不到文件 jssdk php文件如下
  • 判断字符串是否以 endStr 为结尾

    String prototype endWith function endStr 判断字符串以 endStr 为结尾 let d this length endStr length return d gt 0 this lastIndexO
  • ubuntu16.04 从源码编译安装caffe(纯CPU版)

    需要做caffe在嵌入式的移植 决定先在X86上理清所有依赖包关系 再做交叉编译 由于目的是用在嵌入式 暂不支持GPU 1 boost 官网 http www boost org Caffe 中主要使用了Boost 的智能指针 新版v1 6
  • python中的字典(Dictionary)

    python中的字典 Dictionary 在Python中 字典 Dictionary 是一种键 值对的无序集合 用于存储和查找具有唯一键的元素 字典提供了一个高效的方式来根据键访问和操作值 特点 字典是无序的 其中的元素没有固定的顺序
  • 51单片机入门——单片机最小系统

    单片机最小系统 1 什么是最小系统 2 最小系统的三要素 2 1 电源 2 2 晶振 2 3 复位电路 2 3 1 外部RST引脚复位 2 3 2 软件复位 2 3 3 上电复位 掉电复位 2 3 4 看门狗复位 2 3 5 冷启动复位和热