




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子产品设计制作与故障诊断学习情境3:单片机最小系统的设计与实现电子产品设计制作与故障诊断课程建设组2010年2月 第一版学习情境3:单片机最小系统的设计与实现3.1 学习目标:通过本次学习情境要求学会:(1) 掌握51单片机最小系统电路的设计和制作;(2) 熟悉keil uvision2软件的使用,掌握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) 看门狗电路:看门狗又叫 watchdog timer(wdt),是一个定时器电路, 一般有一个输入,叫喂狗,一个输出到mcu的rst端,mcu正常工作的时候,每隔一端时间输出一个信号到喂狗端给 wdt 清零,如果超过规定的时间不喂狗(一般在程序跑飞时),wdt 定时超过,就会给出一个复位信号到mcu,使mcu复位, 防止mcu死机。 看门狗的作用就是防止程序发生死循环,或者说程序跑飞。本例中采用的stc89c52单片机内部已经集成了看门狗定时器,不用外接看门狗电路。问题与思考:(1) 在51单片机系统中什么是晶振周期、状态周期、机器周期、指令周期,它们之间是什么关系?(2) 单片机复位引脚需要什么样的电平?如果通过阻容电路实现?电路中的电阻电容值是如何确定的?如果增加手动复位应该如何连线?(3) 51单片机中p0口结构和其它i/o口比较有什么不同?在使用中要注意什么?3.3.4 51单片机并行总线的扩展(1) 并行总线的工作原理 mcs-51单片机具有极强的功能,在智能仪表,小型测控系统及其他简单应用系统中可直接使用单片机片内所具有的硬件资源而不必在外围扩展其他芯片和应用电路。但对于比较复杂的应用系统,单片机内部的资源已经不能满足系统的需要,这时就必需对单片机进行系统扩展。 单片机的系统扩展是通过单片机外总线进行的。系统外总线包括地址总线,数据总线和控制总线。下图为单片机系统外总线结构图。单片机系统总线图 地址总线:51单片机的地址总线为16位,分为高八位地址线和低八位地址线两部分,高八位地址线由p2口提供,低八位地址线由p0口分时提供。p2口做地址线时具有输出锁存功能,输出地址信息能够保留,直到下一次输出新的地址;p0口是数据和地址分时复用的端口,为保留其输出的地址信息,需要在外部加地址锁存器锁存输出的地址信息。地址锁存器的控制信号由单片机的地址锁存控制信号ale提供,由ale的下降沿控制锁存时刻。 数据总线:51单片机的数据总线为八位,由p0口提供。当p0口用做数据总线时是双向且输入三态的通道口,使用时不必外加其他芯片。 控制总线:对51单片机进行系统扩展时,用到的控制信号主要有地址锁存信号ale,片外程序存储器读信号,外部数据存储器和i/o口读写控制信号、等。单片机系统扩展主要研究如何将扩展芯片通过单片机的系统总线与单片机进行连接,完成相应的功能,满足应用系统的需要。程序存储器的扩展:当51系列单片机的片内程序存储器不够或其内部无程序存储器时就必需进行程序存储器扩展。51单片机程序存储器的硬件扩展电路如下图所示。程序存储器扩展电路程序存储器的扩展是通过外部系统总线进行的。在扩展时程序存储器的地址线a0an对应的连接到单片机的地址总线a0an上;程序存储器的数据线d0d7连接到单片机的p0口上;程序存储器的输出允许控制端连接到单片机的片外程序存储器读控制线上。访问片外程序存储器的时序图当51单片机的cpu访问外部程序存储器时,在每一个机器周期内,引脚ale上出现两个正脉冲,引脚上出现两个负脉冲,也即在一个机器周期内cpu可两次访问外部程序存储器。在ale的下降沿p0口输出的低八位地址信号被锁存,而在有效时通过p0口输入程序的指令码。数据存储器的扩展: 数据存储器是用来存放数据的。51单片机程序存储器与数据存储器是相互独立的,各占64kb的存储空间,数据存储器扩展时其地址线和数据线的联接方法与程序存储器扩展的联接方法相同,控制线的联接与程序存储器的扩展不同,数据存储器的控制信号线为数据存储器的读写控制wr和rd。数据存储器扩展时应将rd和wr联接到单片机相应的读写控制端上。下图为采用6264构成的8kb的数据存储器扩展电路。当需要的数据存储器容量较大,一片存储器不能满足要求时可通过扩展多片存储器的方法来满足系统要求。多片扩展时存储器的片选控制端由单片机的高位地址线决定,可采用线选法或全地址译码法获得。 采用全地址译码法扩展的数据存储器地址是连续的,而采用线选法进行数据存储器扩展其扩展地址是不连续的。51单片机数据存储器与i/o口是统一编址的,当需要i/o口扩展时应和数据存储器的扩展统一考虑。数据存储器的扩展外部数据存储器读时序图外部数据存储器写时序图(2) 提高并行总线驱动能力的方法当并行总线外部所接设备超出其负载能力时,应增加总线的驱动能力,下图为采用74hc245芯片的总线扩展电路。问题与思考:(1) 在51单片机系统中必须进行总线扩展吗?在什么情况下进行总线扩展?都需要用到哪些信号进行扩展?(2) 51单片机在进行并行总线扩展时外部设备的数量有什么要求?如果超出了要求应如何处理?(3) 简述51单片机并行总线扩展应如何计算芯片地址?可以举例说明。3.3.5 为单片机编写程序 将上面的焊接和调试,单片机最小系统只具备了工作起来的硬件条件,就像人只是有了躯体还没有思想,无法工作。要想让单片机工作起来,还需要向单片机的程序存储器中输入程序,就像人需要思想一样。本例就是控制led灯的亮灭。而单片机中的控制器都是数字电路,只认识二进制数据,例如使p1.0引脚电平变化的指令: 指令一:11010010 10010000 ; 将单片机第1引脚置高电平 指令二:11000010 10010000 ; 将单片机第1引脚置地电平 这种能够被单片机识别的二进制语言成为机器语言,用机器语言组成的程序称为源程序,但这种语言记忆和编写都非常困难。为此,人们想到了改用简明的英文符号来表示各种不同功能的指令帮助记忆,对应的英文符号称为助记符。例如将上面的指令一和指令二分别用助记符的形式来描述可表示为:指令一:setb p1.0 ; 将单片机第1引脚置高电平 指令二:clr p1.0 ; 将单片机第1引脚置地电平 用助记符编写的程序成为汇编语言程序。如果能够将用汇编语言编写的程序翻译成用机器码表示的目标程序,问题就解决了。这一工作可以由软件自动完成。keil 就是这种开发软件的一种,不仅能够完成汇编语言程序到目标代码的自动转换,而且能够实现c语言到目标代码的自动转换,用c语言编写程序,看上去更直观,复杂的运算和逻辑程序的编写变得更加轻松简便。3.3.6 用keil uvision2 编写单片机程序keil uvision2 软件是众多单片机应用开发的优秀软件之一,它集代码编辑,uvision2编译器,51汇编编译器,51内核仿真于一体的集成开发环境(ide),支持汇编语言和 c 语言的程序设计,界面友好,易学易用。下面介绍keil uvision2软件的使用方法。进入 keil uvision2后,屏幕如下图所示。几秒钟后出现编辑界启动keil uvision2 时的屏幕进入keil uvision2后的编辑界面学习程序设计语言、学习某种程序软件,最好的方法是直接操作实践。下面通过简单的编程、调试,引导大家学习keil uvision2软件的基本使用方法和基本的调试技巧。(1)建立一个新工程 单击project菜单,在弹出的下拉菜单中选中new project选项。(2)然后选择你要保存的路径,输入工程文件的名字,比如保存到c51目录里,工程文件的名字为c51如下图所示,然后点击保存。(提示:建议每一个新的工程,建立一个新的文件夹,因为在每个工程中都有很多的文件。)(3)这时会弹出一个对话框,要求你选择单片机的型号,你可以根据你使用的单片机来选择,keil uvision2几乎支持所有的51核的单片机,我这里还是以大家用的比较多的atmel 的89c51来说明,如下图所示,选择89c51之后,右边栏是对这个单片机的基本的说明,然后点击确定。(4)完成上一步骤后,屏幕如下图所示:到现在为止,我们还没有编写一句程序,下面开始编写我们的第一个程序。(5)在下图中,单击“file”菜单,再在下拉菜单中单击“new”选项。新建文件后屏幕如下图所示此时光标在编辑窗口里闪烁,这时可以键入用户的应用程序了,但是建议首先保存该空白的文件,单击菜单上的“file”,在下拉菜单中选中“save as”选项单击,屏幕如下图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名,同时,必须键入正确的扩展名。注意,如果用语言编写程序,则扩展名为(.c);如果用汇编语言编写程序,则扩展名必须为(.asm)。然后,单击“保存”按钮。(6)回到编辑界面后,单击“target 1”前面的“”号,然后在“source group 1”上单击右键,弹出如下菜单,然后单击“add file to group source group 1” 屏幕如下图所示:选中test1.c,然后单击“add”屏幕如下图所示:然后单击“close”。注意到“source group 1”文件夹中多了一个子项“text1.c”了吗?子项的多少与所增加的源程序的多少相同。(7)现在,请输入如下的c语言源程序: #include /包含文件#include void main(void) /主函数scon=0x52;tmod=0x20;th1=0xf3;tr1=1; /此行及以上3行为printf函数所必须printf(“hello i am keil. n”); /打印程序执行的信息printf(“i will be your friend.n”);while(1);在输入上述程序时,已经看到了事先保存待编辑的文件的好处了吧,即keil uvision2会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。程序输入完毕后,如下图所示:(8)在上图中,单击“project”菜单,再在下拉菜单中单击“built target”选项(或者使用快捷键f7),编译成功后,再单击“project”菜单,在下拉菜单中单击“start/stop debug session”(或者使用快捷键ctrl+f5),屏幕如下所示:(9)调试程序:在上图中,单击“debug”菜单,在下拉菜单中单击“go”选项,(或者使用快捷键f5),然后再单击“debug”菜单,在下拉菜单中单击“stop running”选项(或者使用快捷键esc);再单击“view”菜单,再在下拉菜单中单击“serial windows #1”选项,就可以看到程序运行后的结果,其结果如下图所示至此,我们在keil uvision2上做了一个完整工程的全过程。但这只是软件的开发过程,如何使用程序下载器看一看程序运行的结果呢?(10)单击“project”菜单,再在下拉菜单中单击“ ” 在下图中,单击“output”中单击“create hex file” 选项,使程序编译后产生hex代码(在保存工程的文件夹中),供下载器软件使用。把程序下载到at89s51单片机中。3.3.7 proteus软件简介 proteus软件是来自英国labcenter electronics公司的eda工具软件,proteus软件有近20年的历史,在全球广泛使用,除了其具有和其它eda工具一样的原理布图、pcb自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,proteus能够很容易的为用户建立了完备的电子设计开发环境。 proteus 产品系列也包含了革命性的vsm技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。proteus组合了高级原理布图、混合模式spice仿真,pcb设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被电子世界在其对pcb设计系统的比较文章中评为最好产品“the route to pcb cad”。proteus 产品系列也包含了我们革命性的vsm技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如led/lcd、键盘、rs232终端等动态外设模型来对设计进行交互仿真。其功能模块:个易用而又功能强大的isis原理布图工具;prospice混合模型spice仿真; ares pcb设计. prospice 仿真器的一个扩展proteus vsm:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,leds甚至lcd显示cpu模型. 支持许多通用的微控制器,如pic、 8051. 交互的装置模型包括:led和lcd显示,rs232终端,通用键盘,强大的调试工具,包括寄存器和存储器,断点和单步模式iar c-spy 和keil uvision2等开发工具的源层调试应用特殊模型的dll界面-提供有关元件库的全部文件 proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机cpu的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。3.4 任务实施3.4.1设计原理图 按照要求设计单片机最小系统原理图,尽可能设计多个方案,进行比较选择合适的方案,然后进入后面的工作步骤。3.4.2电路仿真 使用proteus软件对上面的电路进行仿真,比较各种设计方案的运行结果,确定最优方案,进行下面的步骤。3.4.3元件清单和成本核算 将设计好的原理图的元件清单整理好填入下表中,进行成本核算。序号编号元件名称参数和封装数量单价(元)合计(元)123456789101112总 计3.4.4电路板焊接按照接线图将元件焊到万能板上,完成电路板的制作。 提示: (1)在进行焊接之前一定要认真规划电路板上元件的分布,例如:和电路板外的连接线应尽量放在电路板上的边缘处;单片机的插座应尽量在万能板的中心,外围电路焊接在单片机的周围。 (2)晶振电路应尽量的靠近单片机的xtal1和xtal2引脚。 (3)除上述元件外,电路板上应预留一些空间,以利于后续项目扩展时增加器件的焊接。 焊接完成后,对电路板的焊接工艺进行评价:3.4.5对焊接完成的电路板进行测量 (1)通电前测量:接通电源之前,用万用表通断档测量电路板上电源vcc和gnd之间是否短路,如果短路排除故障,再次进行测量。 (2)单片机是否工作的测量: 在上一步骤中如果检测没有问题,可以接通电源,接通电源后用示波器测量单片机的第30(ale)引脚,观察该引脚电平的变化。如果该引脚输出的是方波,则单片机已经开始工作。(提示:在接通电源之前,必须认真清理电路板上的导线头、剪下的元器件引脚以及焊锡屑等容易造成短路的杂物,同时清理电路板下面桌子上的杂物,切勿将焊接好的电路板放到导体上面,以免造成短路。)(3)请将上面的调试过程、观察到和测量到的结果记录下来。3.4.6用keil uvision2编写本情境中最小系统控制led亮灭的程序使用keil uvision2为上面制作的单片机最小系统控制led灯编写一个程序。写完程序后编译、连接,查看工程目录下是否有以.hex为后缀的文件,这个文件就是keil c51编译器自动编译成的目标代码,把这个代码固化到单片机的程序存储器中,单片机就会按照你所编写的程序工作了。下面给出的是控制led闪烁的参考程序:#include reg52.h#include intrins.h#define led_on 0 /定义led_on为0#define led_off 1 /定义led_off为1sbit led=p10;/定义p1.0口名字为led/此处一般定义一些全局变量void main(void)/此处一般定义一些局部变量unsigned int x;/定义延时用的变量/此处一般写初始化的程序while(1)/程序运行时的死循环led=led_on;/使p1.0口输出为低电平,led亮for(x=0;x5000;x+)_nop_();/空指令函数单片机等待一个周期led=led_off;/使p1.0口输出为高电平,led灭for(x=0;x5000;x+)_nop_();/空指令函数单片机等待一个周期3.4.7固化程序 固化程序有很多种方法,以前51单片机常用的方法是用烧录器进行固化,但是调试过程中需要频繁的插拔芯片,非常麻烦。本情境采用支持isp固化方法的stc89c52,即单片机通过rs232电平转换芯片和计算机串口连接,用单片机制造商提供的专用软件stc-isp下载软件进行程序固
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025【合同范本】押金合同模板
- 2025企业租赁合同(标准版本)
- 红酒文案知识培训课程课件
- 诗经郑风式微课件
- 办公软件开发定制合同
- 医疗器械采购与使用安全保障合同
- 红楼梦第八回讲解课件
- 农业合作项目技术转让协议书
- 红楼梦第44回课件讲解
- 电子发票培训课件
- 我多年总结的健身功法(图示)
- 太阴病篇概述
- DSCQ安装操作培训
- 污水处理厂安全文明施工组织设计
- GB/T 20967-2007无损检测目视检测总则
- GB/T 19627-2005粒度分析光子相关光谱法
- 国际投资学(investment)讲义课件
- 施工机具进场检查验收记录
- 二年级健康成长上册教案
- 民俗学概论 第一章 概述课件
- 供水公司主要安全风险公告栏(总)
评论
0/150
提交评论