单片机最小系统也称为单片机最小应用系统,是指使用最少的原件组成单片机可以工作的系统。
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 nameAddressbitB7B6B5B4B3B2B1B0WDT_CONTRE1Hname--EN_WDTCLR_WDTDILE_WDTPS2PS1PS0Symbol符号 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_CONTREQU0EIH;看门狗地址WDT_TIME_LED EQU P1.5 ;用P1.5 控制看门狗溢出时间指示灯,;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示WDT_FLAG_LED EQU P1.7;用P1.7控制看门狗溢出复位指示灯,如点亮表示为看门狗溢出复位Last_WDT_Time_LED_StatusEQU 00H :位变量,存储看门狗溢出时间指示灯的上一次状态位;WDT复位时间(所用的Oscillator frequency=18.432MHz):;Pre_scale_Word EQU 00111100B ;清0,启动看门狗,预分频数=32, 0.68SPre_scale_Word STO 00111101B ;清0,启动看门狗,预分频数=64, 1.36S;Pre scale_Word EQU 00111110B ;清0,启动看门狗,预分频数=128,2.72S;Pre_scale_Word EQU 00111111B ;清0,启动看门狗,预分频数=256, 5.44SORG 0000HAJMP MAINORG 0100HMAIN:MOV A, WDT_CONTR ;检测是否为看门狗复位ANL A, #10000000BJNZ WDT_Reset ;WDT_CONTR.7=1,看门狗复位,跳转到看门狗复位程序;WDT_CONTR.7=0,上电复位,冷启动,RAM单元内容为随机值SETB Last_WDT_Time_LED_Status ;上电复位,;初始化看门狗溢出时间指示灯的状态位=1CLR 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:SJMPWATT3 ;循环执行本语句(停机),等待看门狗溢出复位END 2.3.5.冷启动复位和热启动复位 3.单片机引脚简介及电路原理图电路原理图是为了表达这个电路的工作原理而存在的,很多器件在绘制的时候