51单片机入门——单片机最小系统_51单片机最小系统-程序员宅基地

技术标签: stm32  51单片机入门  单片机  

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 电源负极,接地
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_56646606/article/details/120598053

智能推荐

png在ai转为路径_ai怎么把png转换为路径-程序员宅基地

文章浏览阅读1.3w次。1. png格式转为ai格式解决如何将png图像转换成清晰的ai或者cdr矢量图的步骤如下:1、打开PS软件,打开JPG的图片文件:文件--打开--(选择图片存放的路径 找到文件 打开)。png_429_230_60238/0"/>2、这是一个非常重要的一步,把图片的分辨率变大,这样提取出来的路径才可以更符合原来的路径 :菜单栏 图像--图像大小--分辨率的位置 改成了500 (也可以..._png导入ai怎么变成路径

GeoIP的使用-C语言版-程序员宅基地

文章浏览阅读556次。0x00. 简介GeoIP库可以根据IP地址(支持IPv4 和 IPv6), 定位该IP所在的 洲、经纬度、国家、省市、ASN 等信息。GeoIP目前已经升级到GeoIP2,GeoIP2有两个版本,一个免费版(GeoLite2),一个收费版本(GeoIP2, 200$起步)。收费版本的准确率稍高一些,更新频率为每周二更新一次, 免费版是每月第一个周二更新一次。两者对比可以..._geoip使用

AndroidStudio_安卓原生开发_Android中调用摄像头拍照_并剪裁图片---Android原生开发工作笔记138_android studio如何调用摄像头-程序员宅基地

文章浏览阅读856次。写一个按钮,点击事件,然后:1.调用代码: openCamera(this);2.粘贴以下代码实现拍照 public void openCamera(Activity activity) { //獲取系統版本 int currentapiVersion = android.os.Build.VERSION.SDK_INT; // 激活相机 Intent intent = new Intent(MediaStore.ACT.._android studio如何调用摄像头

关闭计算机选项中没有休眠,win7系统电脑没有休眠功能的解决方法-程序员宅基地

文章浏览阅读3.3k次。很多小伙伴都遇到过win7系统电脑没有休眠功能的困惑吧,一些朋友看过网上零散的win7系统电脑没有休眠功能的处理方法,并没有完完全全明白win7系统电脑没有休眠功能是如何解决的,今天小编准备了简单的解决办法,只需要按照1、首先打开开始菜单,在搜索框中输入“命令提示符”打开命令提示符窗口,然后输入下面的命令;powercfg -hibernate off (关闭休眠功能)powercfg -hibe..._电脑休眠没有了

使用百度提供的SDK工具_百度sdk测试工具-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏6次。介绍SDK工具中接口的功能使用和测试,以及使用SDK的相关流程。_百度sdk测试工具

FBMC-OQAM调制的误码率仿真及Matlab源代码_fbmc-oqam\cp-ofdm,ofdm信号在加性高斯白噪声信道下的误比特率仿真-程序员宅基地

文章浏览阅读112次。误码率(BER,Bit Error Rate)是衡量通信系统性能的重要指标之一,因此对于FBMC-OQAM调制的误码率进行仿真分析具有重要意义。在本文中,我们将介绍如何使用Matlab进行FBMC-OQAM的误码率仿真,并提供相应的源代码。误码率(BER,Bit Error Rate)是衡量通信系统性能的重要指标之一,因此对于FBMC-OQAM调制的误码率进行仿真分析具有重要意义。在本文中,我们将介绍如何使用Matlab进行FBMC-OQAM的误码率仿真,并提供相应的源代码。_fbmc-oqam\cp-ofdm,ofdm信号在加性高斯白噪声信道下的误比特率仿真

随便推点

Java RMI原理与使用---基础篇-程序员宅基地

文章浏览阅读4.5k次。 RMI(Remote Method Invocation)远程方法调用是java的核心技术之一。是Enterprise JavaBeans的基础技术,是java建立分布式应用程序的强大支柱。RMI允许一个应用程序访问另外一个服务器或虚拟机上的对象,方法和服务,它使远程方法调用就像在本地调用一样简单。它为用户屏蔽了底层的网络传输细节,使用的时候只需适当处理异常即可。所以RMI是非常容易使用的,_java rmi

风尚云网前端-vue中动态显示动态时间2种方式_vue 动态实时时间-程序员宅基地

文章浏览阅读7.1k次,点赞6次,收藏17次。vue中动态显示当前时间_vue 动态实时时间

纠错编码基本实验matlab,纠错编码基本实验matlab实现包含源代码-程序员宅基地

文章浏览阅读323次。纠错编码基本实验matlab实现包含源代码实验四 纠错编码基本实验一、实验目的1、通过实验理解线性分组码的基本原理;2、练习根据理论分析自行设计实验方法的能力。二、实验内容1、已知一(10,4)线性分组码的生成矩阵为1 1G 0 1001110111 110001110 110110101 101111001试用Matlab求出该码的全部码字和最小汉明距离。152、用Matlab求x..._数字化采样量化与信道卷积纠错编码matlab

关于形如--error LNK2005: xxx 已经在 msvcrtd.lib ( MSVCR90D.dll ) 中定义--的问题分析解决_error lnk2005: __lock 已经在 msvcrtd.lib(msvcr120d.dl-程序员宅基地

文章浏览阅读598次。http://www.cnblogs.com/qinfengxiaoyue/archive/2013/02/01/2889668.html--原文1.问题引出很久没有写程序设计入门知识的相关文章了,这篇文章要来谈谈程序库 (Library) 链接,以及关于 MSVC 与 CRT 之间的种种恩怨情仇。如果你使用的操作系统是 Linux、Mac 或其他非 Windo_error lnk2005: __lock 已经在 msvcrtd.lib(msvcr120d.dll) 中定义

计算机辅助设计极坐标,CAD+极坐标各位朋友,我有一个CAD图纸上面有587个点,需要 爱问知识人...-程序员宅基地

文章浏览阅读115次。CAD是计算机辅助制图软件!可以绘2D与3D图形,尤其在服装设计上用处很广~1、基础很重要实践证明,“手工图板”绘图能力是计算机绘图能力的基础,学习《AutoCAD》,需要一定的画法几何的知识和能力,需要一定的识图能力,尤其是几何作图能力,一般来说,我所在的班级中,《工程制图》水平好的学员,学起来较容易些,效果较好!2、循序渐进整个学习过程应采用循序渐进的方式,先了解计算机绘图的基本知识,如相对直..._工程制图与计算机辅助设计极坐标

Python模块学习:logging 日志记录_qpython输出日志-程序员宅基地

文章浏览阅读2.1k次。许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4cpp,而在python中,我们不需要第三方的日志组件,因为它已经为我们提供了简单易用、且功能强大的日志模块:logging。logging模块支持将日志信息保存到不同的目标域中,如:保存到日志文件中;以_qpython输出日志