电子产品设计制作与故障诊断学习情境3:单片机最小系统的设计与实现《电子产品设计制作与故障诊断》课程建设组2010年2月第一版学习情境3:单片机最小系统的设计与实现3.1学习目标:通过本次学习情境要求学会:(1)掌握51单片机最小系统电路的设计和制作;(2)熟悉KeiluVision2软件的使用,掌握51单片机c语言程序的编写和调试。(3)熟悉Proteus软件的使用。3.2任务分析任务名称:在独立电路板上设计制作单片机最小系统,满足:(1)在万用板上制作单片机最小系统,使该系统具有看门狗电路、I/O口扩展电路、总线扩展电路、程序下载接口、工作指示灯;(2)编写基本控制程序,下载调试,使该系统能够正常工作,并且容易更改该系统的控制程序。任务背景:单片机最小系统是各种智能电子设备的控制中枢,稳定的最小系统是电子设备长期稳定运行的基础。本次工作任务是为一小型温度测控系统设计制作单片机控制电路板。任务要求:(1)合理选择单片机、晶振、看门狗、电阻、电容等芯片和原件;(2)完成全电路理论设计、计算机辅助分析与仿真、绘制电路图,自制电路板、焊接调试;(3)撰写设计报告、调试总结报告及使用说明书。工作任务所需要的设备、工具和材料:具有232串行口的计算机、双踪示波器、5V直流电源、万用表(模拟或数字)、电烙铁、导线,自制电路板的各种工具一套及元器件若干。3.3任务知识点3.3.1单片机最小系统的组成单片机最小系统的方框图*电源、复位电路和晶振电路是单片机工作起来必须的条件。*下载程序电路是用计算机将单片机程序固化到单片机程序存储器的电路。*LED指示灯电路是用来做固化程序的控制对象,验证程序是否正确运行的标志。*I/O口电路和总线驱动电路是用来扩展单片机的控制对象的接口电路。3.3.2单片机的引脚单片机作为一个微型计算机系统,内部是一个集接收信号、信号处理、发送信号、定时及计数等多种功能于一体的超大规模集成电路。下图所示为51系列单片机中有双列直插40脚封装的STC89C52单片机。89C52单片机引脚示意图3.3.3如何让单片机工作起来下图所示为单片机控制一只LED灯的电路接线图,下面介绍让单片机工作起来所必需的电路。单片机控制LED接线图(1)电源:单片机的第40脚接电源的正极,20脚接电源的地线。电源电压为+5V,正负偏差不能超过百分之五。(2)振荡电路:单片机内部由大量的时序电路构成,没有时钟脉冲单片机的各个部分就无法工作。所以在单片机的内部集成有振荡电路,外部只需要按照上面的电路图将晶振和电容接到单片机的18(XTAL2)、19(XTAL1)引脚,就构成了一个完整的振荡器。接通电源,这个振荡器就会产生固定频率脉冲,使单片机内部的时序逻辑电路开始工作。晶振的频率决定了单片机工作的快慢。(3)复位电路:用于将单片机内部各电路的状态,恢复到初始值。按照上面的接线图将电阻和电容接到单片机的第9(RST)引脚,在通电的瞬间使9脚获得一段时间的高电平,单片机内部的电路就自动复位了。(4)EA引脚:用户编写的应用程序都存储在单片机内部的程序存储器中,若编写的程序较长,内部程序存储器容量不够用时,就要考虑在单片机芯片的外部另外增加程序存储器芯片。那么单片机中的控制器是如何知道程序是被存在什么地方呢?它是通过31(EA)脚上的电平状态进行判断的,若EA接电源正端,就表示程序已被存入单片机内部存储器,反之是存在单片机外部存储器。在本例中,所选单片机内部的程序存储容量已经够用,所以只需按照接线图将EA引脚接到+5V即可。(5)输入输出引脚:单片机引脚中凡用P,后面跟数字标注的引脚均为输入输出引脚。8个引脚为一个“口”,上图中P1.0脚为P1口的第0号引脚。输入输出引脚状态受程序控制,可以将单片机内部的信号送出来(输出),也可以将与引脚相连的外部信号送到单片机内部去(输入)。上图中P1.0脚与LED负极相连,LED正极通过限流电阻R1接电源正极,当单片机的P1.0脚为高电平时,LED熄灭;当P1.0脚为低电平时,LED点亮。可见,只要控制P1.0脚电平的高低,就能控制LED的亮灭。(6)MAX202电路:单片机工作的硬件条件具备以后,需要将程序固化到程序存储器中,可以采用烧录器的方法固化。本例中,采用STC89C52单片机的ISP固化程序的方法,即单片机的TXD、RXD两个引脚通过MAX202的电平变换和计算机的串口连接,将下载的程序固化到单片机的程序存储器中。(7)看门狗电路:看门狗又叫watchdogtimer(WDT),是一个定时器电路,一般有一个输入,叫喂狗,一个输出到MCU的RST端,MCU正常工作的时候,每隔一端时间输出一个信号到喂狗端给WDT清零,如果超过规定的时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给出一个复位信号到MCU,使MCU复位,防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞。本例中采用的STC89C52单片机内部已经集成了看门狗定时器,不用外接看门狗电路。问题与思考:(1)在51单片机系统中什么是晶振周期、状态周期、机器周期、指令周期,它们之间是什么关系?(2)单片机复位引脚需要什么样的电平?如果通过阻容电路实现?电路中的电阻电容值是如何确定的?如果增加手动复位应该如何连线?(3)51单片机中P0口结构和其它I/O口比较有什么不同?在使用中要注意什么?3.3.451单片机并行总线的扩展(1)并行总线的工作原理MCS-51单片机具有极强的功能,在智能仪表,小型测控系统及其他简单应用系统中可直接使用单片机片内所具有的硬件资源而不必在外围扩展其他芯片和应用电路。但对于比较复杂的应用系统,单片机内部的资源已经不能满足系统的需要,这时就必需对单片机进行系统扩展。单片机的系统扩展是通过单片机外总线进行的。系统外总线包括地址总线,数据总线和控制总线。下图为单片机系统外总线结构图。单片机系统总线图地址总线:51单片机的地址总线为16位,分为高八位地址线和低八位地址线两部分,高八位地址线由P2口提供,低八位地址线由P0口分时提供。P2口做地址线时具有输出锁存功能,输出地址信息能够保留,直到下一次输出新的地址;P0口是数据和地址分时复用的端口,为保留其输出的地址信息,需要在外部加地址锁存器锁存输出的地址信息。地址锁存器的控制信号由单片机的地址锁存控制信号ALE提供,由ALE的下降沿控制锁存时刻。数据总线:51单片机的数据总线为八位,由P0口提供。当P0口用做数据总线时是双向且输入三态的通道口,使用时不必外加其他芯片。控制总线:对51单片机进行系统扩展时,用到的控制信号主要有地址锁存信号ALE,片外程序存储器读信号PSEN,外部数据存储器和I/O口读写控制信号WR、RD等。单片机系统扩展主要研究如何将扩展芯片通过单片机的系统总线与单片机进行连接,完成相应的功能,满足应用系统的需要。程序存储器的扩展:当51系列单片机的片内程序存储器不够或其内部无程序存储器时就必需进行程序存储器扩展。51单片机程序存储器的硬件扩展电路如下图所示。程序存储器扩展电路程序存储器的扩展是通过外部系统总线进行的。在扩展时程序存储器的地址线A0~An对应的连接到单片机的地址总线A0~An上;程序存储器的数据线D0~D7连接到单片机的P0口上;程序存储器的输出允许控制端OE连接到单片机的片外程序存储器读控制线PSEN上。S1S2S3S4S5S6S1S2S3S4S5S6S1S2输出PCH输出PCH输出PCH输出PCHPCLPCLPCLPCLPCL第1个机器周期第2个机器周期ALEPSENP2口P0口指令指令指令指令访问片外程序存储器的时序图当51单片机的CPU访问外部程序存储器时,在每一个机器周期内,引脚ALE上出现两个正脉冲,引脚PSEN上出现两个负脉冲,也即在一个机器周期内CPU可两次访问外部程序存储器。在ALE的下降沿P0口输出的低八位地址信号被锁存,而在PSEN有效时通过P0口输入程序的指令码。数据存储器的扩展:数据存储器是用来存放数据的。51单片机程序存储器与数据存储器是相互独立的,各占64KB的存储空间,数据存储器扩展时其地址线和数据线的联接方法与程序存储器扩展的联接方法相同,控制线的联接与程序存储器的扩展不同,数据存储器的控制信号线为数据存储器的读写控制WR和RD。数据存储器扩展时应将RD和WR联接到单片机相应的读写控制端上。下图为采用6264构成的8KB的数据存储器扩展电路。当需要的数据存储器容量较大,一片存储器不能满足要求时可通过扩展多片存储器的方法来满足系统要求。多片扩展时存储器的片选控制端由单片机的高位地址线决定,可采用线选法或全地址译码法获得。采用全地址译码法扩展的数据存储器地址是连续的,而采用线选法进行数据存储器扩展其扩展地址是不连续的。51单片机数据存储器与I/O口是统一编址的,当需要I/O口扩展时应和数据存储器的扩展统一考虑。数据存储器的扩展S1S2S3S4S5S6S1S2S3S4S5S6S1S2输出PCH输出DPHPCLDPL第1个机器周期第2个机器周期ALEPSENP2口P0口指令数据入输出PCHPCL指令RD外部数据存储器读时序图S1S2S3S4S5S6S1S2S3S4S5S6S1S2输出PCH输出DPHPCLDPL第1个机器周期第2个机器周期ALEPSENP2口P0口指令数据出输出PCHPCL指令WR外部数据存储器写时序图(2)提高并行总线驱动能力的方法当并行总线外部所接设备超出其负载能力时,应增加总线的驱动能力,下图为采用74HC245芯片的总线扩展电路。问题与思考:(1)在51单片机系统中必须进行总线扩展吗?在什么情况下进行总线扩展?都需要用到哪些信号进行扩展?(2)51单片机在进行并行总线扩展时外部设备的数量有什么要求?如果超出了要求应如何处理?(3)简述51单片机并行总线扩展应如何计算芯片地址?可以举例说明。3.3.5为单片机编写程序将上面的焊接和调试,单片机最小系统只具备了工作起来的硬件条件,就像人只是有了躯体还没有思想,无法工作。要想让单片机工作起来,还需要向单片机的程序存储器中输入程序,就像人需要思想一样。本例就是控制LED灯的亮灭。而单片机中的控制器都是数字电路,只认识二进制数据,例如使P1.0引脚电平变化的指令:指令一:1101001010010000;将单片机第1引脚置高电平指令二:1100001010010000;将单片机第1引脚置地电平这种能够被单片机识别的二进制语言成为机器语言,用机器语言组成的程序称为源程序,但这种语言记忆和编写都非常困难。为此,人们想到了改用简明的英文符号来表示各种不同功能的指令帮助记忆,对应的英文符号称为助记符。例如将上面的指令一和指令二分别用助记符的形式来描述可表示为:指令一:SETBP1.0;将单片机第1引脚置高电平指令二:CLRP1.0;将单片机第1引脚置地电平用助记符编写的程序成为汇编语言程序。如果能够将用汇编语言编写的程序翻译成用机器码表示的目标程序,问题就解决了。这一工作可以由软件自动完成。Keil就是这种开发软件的一种,不仅能够完成汇编语言程序到目标代码的自动转换,而且能够实现C语言到目标代码的自动转换,用C语言编写程序,看上去更直观,复杂的运算和逻辑程序的编写变得更加轻松简便。3.3.6用KeiluVision2编写单片机程序KeiluVision2软件是众多单片机应用开发的优秀软件之一,它集代码编辑,UVISION2编译器,51汇编编译器,51内核仿真于一体的集成开发环境(IDE),支持汇编语言和C语言的程序设计,界面友好,易学易用。下面介绍KeiluVision2软件的使用方法。进入KeiluVision2后,屏幕如下图所示。几秒钟后出现编辑界启动KeiluVision2时的屏幕进入KeiluVision2后的编辑界面学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习KeiluVision2软件的基本使用方法和基本的调试技巧。(1)建立一个新工程单击Project菜单,在弹出的下拉