单片机最小系统
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的晶振(即每秒振荡次),外加两个30pF的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定。

2.3.复位电路
单片机的复位一般分为四种:外部RST复位,软件复位,掉电复位/上电复位,看门狗复位。
2.3.1.外部RST引脚复位
在1.中的图中我们可以看到在图的左边是一个复位电路,接到了单片机的9引脚RST(Reset)复位引脚上。这个复位电路是从外部向RST引脚施加一定宽度的复位脉冲,从而实现单片机的复位。将RST复位引脚拉高并维持24个时钟加10us后,单片机会进入复位状态,将RST复位引脚拉回低电平后,单片机结束复位状态并从用户程序区的0000H处重新开始工作。
2.3.2.软件复位
2.3.3.上电复位/掉电复位
假设单片机的程序有50行,当某一次运行到第20行的时候,突然停电了,这个时候单片机内部有的区域数据会丢失掉,有的区域数据可能还没丢失。那么下次打开设备的时候,我们希望单片机能正常运行,所以上电后,单片机要进行一个内部的初始化过程,这个过程就可以理解为上电复位,上电复位保证单片机每次都从一个固定的相同的状态开始工作。这个过程跟打开计算机电源的过程是一致的。
2.3.4.看门狗复位
在工业控制/ 汽车电子/航空航天等需要高可靠性的系统中,为了防止“系统在异常情况下,受到干扰,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 |
/* 看门狗测试程序,可在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 00B ;清0,启动看门狗,预分频数=32, 0.68S Pre_scale_Word STO 00B ;清0,启动看门狗,预分频数=64, 1.36S ;Pre scale_Word EQU 00B ;清0,启动看门狗,预分频数=128,2.72S ;Pre_scale_Word EQU 00B ;清0,启动看门狗,预分频数=256, 5.44S ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV A, WDT_CONTR ;检测是否为看门狗复位 ANL A, #B 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.单片机引脚简介及电路原理图
单片机引脚说明:
| 管脚 | 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 | 电源负极,接地 |
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177730.html原文链接:https://javaforall.net
