首页 (毕业论文)单片机编程器

(毕业论文)单片机编程器

举报
开通vip

(毕业论文)单片机编程器(毕业论文)单片机编程器 摘 要 摘要 本文介绍的是一套51系列单片机编程器的开发、制作过程 。本文从AT89C51单片机的基本结构和工作原理入手,详细介绍了单片机编程器的工作原理,得到了总体的设计方案。该编程器在硬件实现上,以AT89C51单片机为核心,利用串行口与计算机进行数据的相互传送。该编程器通用性强,可对AT89C51/52,AT89C2051/2052进行编程,制作成本十分低廉。本文给出了完整的电路图和软件流程图。 关键词:AT89C51;编程器;串行口 I ABSTRACT Abstra...

(毕业论文)单片机编程器
(毕业论文)单片机编程器 摘 要 摘要 本文介绍的是一套51系列单片机编程器的开发、制作过程 。本文从AT89C51单片机的基本结构和工作原理入手,详细介绍了单片机编程器的工作原理,得到了总体的设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。该编程器在硬件实现上,以AT89C51单片机为核心,利用串行口与计算机进行数据的相互传送。该编程器通用性强,可对AT89C51/52,AT89C2051/2052进行编程,制作成本十分低廉。本文给出了完整的电路图和软件流程图。 关键词:AT89C51;编程器;串行口 I ABSTRACT Abstract This thesis introduces a production course of 51series single-chip microcomputer programming device. It begins with basic structure and operation principle of AT89C51, and introduces the operation principle of this programming device in detail, then gets the totle plan of the design. This programming device regards AT89C51 single-chip microcomputer as core in hardware realization, and conveys the data between computer and serial interface.This programming device can be widely used.And it can be used to programme AT89C51/52 and AT89C2051/2052.It has a simple simulation function and low cost. Key words: AT89C51, the programming device, serial interface II 目录 摘要 ...............................................................I Abstract ..........................................................II 前言 ...............................................................1 第1章 AT89C51单片机的基本结构和工作原理 .........................3 1.1 AT89C51单片机的基本结构 ....................................3 1.1.1 内部结构 .............................................3 1.1.2 引脚功能 .............................................4 1.1.3 I/O口的介绍 ..........................................5 1.1.4 I/O口的结构 ..........................................6 1.1.5 定时/计数器 ..........................................7 1.1.6 中断系统 .............................................8 1.1.7 CPU的工作原理 ........................................9 1.2 AT89C51单片机的工作方式 ...................................10 1.2.1 复位方式 ............................................10 1.2.2 程序执行方式 ........................................10 1.2.3 低功耗工作方式 ......................................11 1.2.4 编程方式 ............................................11 第2章 AT89C51的编程原理 ..........................................12 第3章 方案设计 ..................................................15 3.1 设计思路 ..................................................15 3.2 硬件方案 ..................................................15 3.3 软件方案 ..................................................16 3.3.1编程设计 .............................................16 第4章 硬件设计 .................................................17 4.1 概述 ......................................................17 4.1.1 AT89C51系列芯片编程注意的问题 .......................18 4.2各部分电路介绍 .............................................18 4.2.1串行通信电路 .........................................18 4.2.2系统电源电路 .........................................19 4.2.3主要外围电路(振荡电路) .............................19 4.2.4外部主控电路 .........................................20 III 电子科技大学成都学院毕业设计论文 4.3主要元器件介绍 .............................................21 4.3.1 MAX232—串行通讯 ....................................21 4.3.2 PL2303USB串行通信 ...................................22 第5章 软件设计 ..................................................24 第6章 系统调试 ..................................................41 6.1硬件的调试 .................................................41 6.2软件的调试 .................................................41 总结 ..............................................................43 参考文献 ..........................................................44 致谢 ..............................................................45 附录 ..............................................................46 英文资料原文 ......................................................49 英文资料译文 ......................................................55 IV 前言 前言 随着电子技术的迅速发展,微处理器和集成电路的功能大大的加强,单片机作为最典型的嵌入式系统,由于其微小的体积和极低的成本,广泛应用于家用电器、机器人、仪器和仪表、工业控制、智能武器等领域。 单片机是应工业测控需要而诞生的。它把计算机最基本的功能电路,如CPU、程序存储器、数据存储器、I/O接口、定时/计数器、中断系统等集成到一块芯片上,形成单片形态的计算机。单片机通常以最小的系统运行,在家用电器和常用的仪器仪表中常常可以“单片”工作。而在工业测控的系统中,目前还需要在单片机的基础上外扩存储器、I/O接口以及一些外围电路,形成功能更强、更完善的系统。 单片机本身并没有自开发功能,必须借助工具来排除目标系统样机中的硬件故障,修改并生成目标系统,并排除程序错误,当目标系统调试成功后,还需要开发工具把目标程序固化到单片机的内部或外部EPROM中。编译软件、仿真器和编程器是单片机开发的基本工具。目前,市面上有为数不少性能优良的编程器,但价格都比较高,最少也要三、四百元,虽然功能很多,但对于许多单片机初学者来说,许多功能用不上,也是等于浪费。基于此种情况,我开发了这套简易编程器,能够对51系列单片机进行编程,方便开发,而且价格十分低廉。 利用计算机的并口直接控制烧写时序的非智能型编程器也能完成对单片机的烧写,它的设计比较简单。可是伴随计算机、通讯、家电、金融、电玩等相关电子领域的快速发展,市场上的可编程器件的型号越来越多、功能越来越强、容量越来越大、工作电压越来越低,体积却越来越小,这类编程器对这些器件烧录已是力不从心:首先计算机的windows操作系统是一个多任务的操作系统,所有的设备操作请求必须排队等待处理,一般都不是是实时的,因此它发出的烧写控制信号是非实时的。这样就很容易发出错误的烧写时序,导致烧写不成功或者烧坏芯片;其次国内计算机质量参差不齐,并口上控制电平的幅度和驱动能力相差很大。某些计算机并口电平本来就较低,经过1米多长的通讯电缆后进一步衰减,驱动能力更弱而且往往加杂着干扰信号,极易造成通讯错误。而一旦出现通讯错误,写芯片的操作就会失控,严重时可能造成芯片损坏。出现 1 电子科技大学成都学院毕业设计论文 这种情况主要有两方面的原因:非智能编程器是由计算机并口直接控制编程器硬件工作,没有纠错能力,一旦出错只能一错到底直至通讯无法进行。 为了改进上述的缺点本次设计采用了智能的串口编程器。计算机与监控单片机完成对待编程单片机的各项操作。监控单片机是作为计算机与待编程单片机之间的中介,它起到了桥梁的作用。由监控单片机完成与计算机传递数据、写代码、擦除、加密和校验五种具体的操作。这样在编程器工作的过程中计算机与编程器之间只传递相应的控制命令和被烧写的目标文件数据,烧写时序完全由监控单片机控制,保证了烧写时序的实时控制。而且对偶然出现的通讯错误有自动纠错的能力,以保证通讯不会因偶然的错误而彻底中断。因此烧写非常可靠。 本设计是用单片机设计的,单片机是智能仪器、计算机外部设备、生产过程控制的控制核心。在大多数应用中,被控对象都是大功率的执行部件,功率 。接口技术已是单片机应用中的一项关键技术本设计主要是利用单片机AT89C51,AT89C51是一款应用最为广泛的8051单片机,更重要的是他具有反复烧写(FLASH)的特性 ,在设计程序时可反复修改原程序、编译、并烧写到单片机里面。这样可以在制作过程中更加的方便设计者,可以减低成本。 2 第1章 AT89C51单片机的基本结构和工作原理 第1章 AT89C51单片机的基本结构和工作原理 AT89C51是美国ATMEL公司生产的AT89系列单片机中的一种,它与MCS,51系列的许多机种都具有兼容性,并具有广泛的代表性。AT89C51单片机是在一块芯片上集成了CPU、RAM、ROM、定时/计数器、中断系统和多种功能的I/O接口等一台计算机所需的基本功能部件。下面我们先来了解一下AT89C51的硬件结构和CPU的工作原理以及AT89C51的工作原理。 1.1 AT89C51单片机的基本结构 1.1.1 内部结构 图1-1是AT89C51单片机的内部结构简化框图: 图1-1 内部结构简化框图 AT89C51单片机的内部结构与MCS,51系列中的MCS,8051的内部结构基本相同。由图1-1可知,AT89C51单片机主要由CPU、片内RAM、片内ROM及4 3 电子科技大学成都学院毕业设计论文 个 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 输入输出I/O口等组成。片内4KB ROM为程序存储器,这里面主要存放指挥CPU进行操作的指令代码。4KB ROM共有4096个存储单元,每个单元可存放一个字节共8位二进制数字。程序存储器中的每个单元都有一个确定的地址, 。128B RAM为128个字节的可读写数据存储4K空间地址范围为0000H至0FFFH 器,主要放置需频繁处理的数据。其地址空间为00H至7FH,其中00H至07H这8个单元是一组工作寄存器,由于对它们的操作另有专用指令,所以将这几个单元又分别记作R0、R1、R2、R3、R4、R5、R6、R7。4个标准输入输出I/O口P0、P1、P2、P3与CPU内部的一些特殊功能寄存器,如定时器控制寄存器(TCON)、串行口控制寄存器(SCON)等是统一编址的。这些存储器离散地分布在80H至FFH地址空间内。其中P0、P1、P2、P3的地址分别是80H、90H、A0H和B0H。有了确定的地址,才能准确无误地对它们进行操作。比如我们要向P0口送一个数,只要用一个送数指令,将数“写”到80H这个存储单元就完成了。也就是说把要送的数存到P0口锁存器之中,再通过驱动器,就可将数据各位代表的高低电位输出到P0.0至P0.7的这8条口线引脚上了。 1.1.2 引脚功能 单片机具备了CPU、程序存储器、数据存储器和输入输出口等硬件资源之后,还需要供电电源、时钟触发和复位等控制的支持才能正常工作。而这些输入都是通过引脚与单片机连接的。图1-2是单片机AT89C51的引脚排布图。由图2可知,AT89C51是标准的40线双列直插式封装(也有其它封装形式)的集成电路,其引脚与MCS,51系列单片机完全兼容。这40条引脚大致可分为电源(Vcc、Vss、V、V)、时钟(XTAL1、XTAL2)、专用控制线(ALE、RST、PROG、PSEN、PPPD EA)、通用多功能输入输出标准I/O口(P0,P3)等4大部分。该单片机有6条引 为整个芯片提供电源;脚是保证基本工作所必须连接的:40脚Vcc和20脚Vss 18脚、19脚是时钟振荡引脚,它们的内部连接一个高增益放大器,外部接一晶振选频产生振荡脉冲,并可配接一些电容、电感使振荡更精确。此振荡脉冲,为整个CPU及其定时等有效操作系统提供时钟。另外两条引脚是EA和RST。31脚EA是程序存储器片内片外选择脚,如果EA接低电位,CPU不从片内ROM中取指;EA接高电位,CPU先从片内程序存储器取指。第9脚RST的主要功能是使单片机复位。当单片机接通以上5脚后,只要在第9脚上加一个宽度不小于24个振荡周期,也就是2个机器周期的正脉冲,它就能使系统复位。系统复位 4 第1章 AT89C51单片机的基本结构和工作原理 就是意味着CPU里各种寄存器等功能部分有一种标准的、固定的状态,这样有利于系统设计。比如系统复位后,能使P0口至P3口的数据为FFH,也就是各口线皆呈高电位,不然就会出现每通一次电,系统就呈现一种不同的状态,给负载电路的设计带来困难。系统复位后,还能使程序地址寄存器PC的值为0000H,这就保证系统从程序存储空间的0000H单元取指,使程序有个起始,保证系统能有条不紊地运行。因此,程序存储器从第一单元开始一般放一条无条件跳转指令,指出主程序的入口,引导系统进入主程序运行。 1.1.3 I/O口的介绍 在图1-2中,还有P0,P3引脚。这些引脚可以将单片机输出的高低电位信号传送给片外的负载,也可将片外其它设备输出的高低电位号输入至单片机,因此,在单片机中,这些引脚就叫做输入输出端口,简称I/O口。一个标准的I/O口一般由8条I/O口线组成。标准I/O口的主要功能相当于一个8位锁存器,能存储一个字节的二进制数据,以保持与之相连接的8条口线各自电位的高低状态。在图1-2中,AT89051的第1脚至第8脚相对应的8条口线P1.0至P1.7组成的标准口记作P1口,第10脚至第17脚相对应的口线P3.0至P3.7组成的P3口,第21脚至28脚相对应的8条口线P2.0至P2.7组成了P2口,第32脚至39脚相对应的8条口线P0.0至P0.7组成了P0口。有了这些标准输入输出口,使用起来就很方便了。这样,我们可编制一段程序,向这些标准口中存入一定的数据(这些数据也可叫控制字),各口线引脚就会呈现出不同的高低电位。比如我们向P0、P1、P2、P3口中送入数据,00H,则每个口的各口线电位状态就会为“0000 0000”,也就是各条口线皆呈低电位。我们再向P0口送入数据,03H。P0.0至P0.7各条口线所呈电位为“0000 0011”,也就是只有P0.0和P0.1两条口线所对应的引脚呈高电位。另外,还应知道,P0口的P0.0,P0.7的位地址是80H至87H,P1口的P1.0至P1.7的位地址是90H至97H,P2.0至P2.7和P3.0至P3.7的位地址分别是A0H至A7H和B0H至B7H。 5 电子科技大学成都学院毕业设计论文 图1-2 单片机引脚 1.1.4 I/O口的结构 AT89C51单片机或其它与之兼容的单片机,作为初学者还必须掌握它的I/O口结构和电流负载能力。比如AT89C2051口线负载能力达25mA,AT89C51可达15mA等等。下面以P1.0口线为例,谈一下I/O口结构,图1-3为P1.0口线的内部驱动器电原理图。由图可知,驱动器的输入端是和锁存器的Q相连接的,驱动器的输出部分由4只场效应管组成,N型管VT4为下拉管,P型的VT1、VT2、VT3为上拉管。依次为强上拉、弱上拉和中上拉。当我们向P1.0位写“1”时,Q呈低电位,于是,VT4截止,VT1、VT2、VT3导通。其中VT1导通过程稍复杂一些,图3中VT1的栅极与Q之间接有一个延时器件F1,此延时器件的导通态维持时间是2个振荡周期。也就是说,当Q为低电位时,延时器F1导通,VT1也迅速导通,经过两个振荡周期以后,延时电路处于开路状态,于是VT1截止。所以,VT1只是在CPU向P1.0写“1”后很短的时间内导通,以较强的电流拉动能力将P1.0引脚的电位拉起。经过2个振荡周期以后,VT1截止,只有VT2 6 第1章 AT89C51单片机的基本结构和工作原理 和VT3导通。如果此时P1.0引脚的负载不是严重超载,P1.0引脚的电位会高于2.1V,此电位高于非门F3的门限电压,F3的输出端为低电位,与之相接的VT3的栅极亦为低电位,VT3导通,提供中度的上拉电流,使P1.0输出的电流达到额定值;如果P1.0引脚严重超载,比如被SB1对地短路,P1.0引脚的输出电位将很低,几乎为零,此电位低于非门F3的门限电压,F3的输出端为高电位,VT3截止,只有VT2提供微安级的弱上拉电流。而当SB1释放后VT3又重新导通,P1.0引脚的电位和上拉负载能力均恢复。单片机标准口的这种结构,既安全,又可靠。由上述我们不难得出这样的结论:这些口线不论在什么状态下都不怕对地短路,但绝不能直接与V相接。因为当口线处于低电位时,VT4cc 导通,如果此时口线直接与V相连接,VT4就可能被烧坏。许多开发者曾用此cc 方法将某些口线烧坏来实现加密。当然这样是以牺牲单片机的口资源为代价的。 图1-3 P1.0口线的内部驱动器电原理图 1.1.5 定时/计数器 AT89C51单片机有两个定时/计数器T0和T1,根据内部控制寄存器写入字的不同,可以分别作为定时器或计数器使用。 当用作定时器使用时,输入信号来自内部时钟发生电路,每过一个机器周期,定时器自动加1.一个机器周期是12个振荡周期,因此定时器的计数频率为晶振的1/2。 当用作计数器时,是对外部事件计数,计数脉冲信号来自外部,输入引脚T0(P3.4)、T1(P3.5).当T0(P3.4)、T1(P3.5)引脚有外部的下降沿出现,即发生 7 电子科技大学成都学院毕业设计论文 从“1”至“0”电平的跳变时,计数器加1。由于AT89C51单片机对外部事件的检测需要2个机器周期,所以外部信号的最高计数频率为晶振频率的1/24。 AT89C51单片机T0和T1定时/计数器共有四种方式,分别是13位定时/计数器方式;16位定时/计数器;8位常数自动装入方式;二个独立的8位方式。它由定时方式寄存器TMOD控制,TMOD的高四位用于选择T1的工作方式,低四位用于选择T0的工作方式,TMOD控制寄存器各标志位定义如下所示: GATE C/T M1 M0 GATE C/T M1 M0 GATE:门控位.当GATE=0,TR0或TR1为1时,则启动内部定时或外部计数器;当GATE=1,TR0或TR1为1,同时外部中断输入端口INTO为高电平时,才启动定时/计数器工作。 C/T: 定时/计数器选择位.当C/T=1时,工作在计数器方式;C/T=0时,工作在定 时器方式。 M0、M1:定时/计数器工作方式选择位,意义如下: M0、M1=00;工作方式0(13位方式) M0、M1=01;工作方式1(16位方式) M0、M1=10;工作方式2(8位带自动安装方式) M0、M1=11;工作方式3(T0为2个8为方式,T1无此方式) 1.1.6 中断系统 单片机中断系统的目的是使CPU更好的对外部或内部突发事件作出及时响应.中断响应时CPU将暂停正在执行的主程序而转向中断子程序,处理完毕后在回到原断点处继续执行主程序。这个响应突发事件的过程就是中断。 在一个单片机应用系统中,引起中断的源头称为中断源。AT89C51单片机有5个中断源。 表1-1 AT89C51单片机的中断类型和入口地址 中断名称 中断原因 入口地址 N 外部中断0 P3.2引脚边沿触发或低电平触发 0003H 0 定时器0中断 T0计数溢出 000BH 1 8 第1章 AT89C51单片机的基本结构和工作原理 外部中断1 P3.3引脚边沿触发或电平触发 0013H 2 定时器1中断 T1计数溢出 001BH 3 串行口中断 串行发送或接收标志置位 0023H 4 中断的级别有先后之分,CPU可以优先选择需要紧急处理的中断请求,处理完毕后在响应级别较低的中断请求,这种中断响应的先后次序,称为中断优先级。 AT89C51单片机所有的中断都可以由软件选择开放。CPU对每一个中断的禁 都是通过操作中断允许寄存器IE进行的。IE寄存器地址是0A08H,止和允许, 各标志位如下: EA ET2 ES ET1 EX1 ET0 EX0 —— EA:单片机中断系统允许/禁止标志。EA=1,允许开中断;EA=0,禁止中断。 ES:串型中断允许位。ES=1,允许串口中断;ES=0,禁止中断。 ET1:定时/计数器允许中断位。ET1=1,允许T1中断;ET1=0,禁止中断。 EX1:外部中断1允许位。EX1=1,允许外部中断;EX1=0,禁止中断。 ET0: 定时/计数器T0允许中断位。 EX0: 外部中断0允许中断位。 ET2: 定时/计数器T2中断允许位。 AT89C51单片机的中断优先级有二层,每一个中断源都可编程为高优先级 或低优先级,它由特殊功能寄存器IP所对应的位决定。高优先级的中断源可在低优先级的中断服务程序中再次执行中断。当系统复位时,IP寄存器的内容为零。如果CPU同时接收到二个不同优先级的中断请求时,将优先响应高优先级的中断。 1.1.7 CPU的工作原理 CPU尽管结构复杂,靠程序的支持来实现其强大的功能,但在运行程序中执行每条指令的过程却是非常简单的,就是不断地从程序存储器中取出程序代码,按照代码所代表的含义去完成一种单一的操作。上述程序存储器的这4096个存储单元,就好像4096个小抽屉,而程序代码就好像放在小抽屉里的工作说明。CPU就像是一个只能依照抽屉里的说明,而且是每次只能完成一条说明的 9 电子科技大学成都学院毕业设计论文 识读来依次完成简单操作的弱智人一样。这个人开始时一定会先打开第1个抽屉,如果第1个抽屉里的纸条上写着“请到第2个和第3个抽屉里的纸条上所标明的抽屉里去找指定的工作做”,他就会打开第2个和第3个抽屉取出纸条来准确地识读,确认第3个抽屉的号码。如果这两张纸条上分别写着“10”和“08”,他就会打开第1008个抽屉取出纸条去完成操作。此过程就相当于CPU执行了一条无条件转移指令,一下子从程序的开始,跳到了第1008个单元去运行主程序。如果第1008个抽屉中的这张纸条上写着:“把第18,黑板上的会议 通知 关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知 中的时间由下午2点改成下午3点,”这个人就会将第18,黑板上的2擦掉改成3。这18,黑板就好像RAM的第18单元,此次操作相当于CPU执行了一条送数指令。前述向各I/O口送数的过程亦如此。 单片机只是一个可以读懂人给予它的命令并能按照这种命令去完成某种操作的高级电路而已,由它构成的各种智能系统的智力在程序中,完成操作的能力在执行设备中。而程序必须由人来编制。所以,我们学习单片机,要在认识它的结构和功能的基础上学会编程,能够设计出各种系统的硬件和软件才行。结合机器码学习程序便于深刻理解,特别适合于爱好电路制作的电子爱好者,能学到真功夫。但机器码不容易记忆,在编较长的程序时,会遇到许多不便。所以,当你能熟练地使用一些高级开发设备时,还必须掌握汇编语言。 1.2 AT89C51单片机的工作方式 AT89C51单片机共有复位、程序执行、低功耗以及编程和校验等四种方式。 1.2.1 复位方式 复位是单片机的初始化操作,其主要功能是把PC初始化为000H,使单片机从000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。 1.2.2 程序执行方式 程序执行方式是单片机的基本工作方式,由于复位后PC=000H,因此程序执行总是从地址000H开始的。但一般程序并不是真正从000H开始的,为此 10 第1章 AT89C51单片机的基本结构和工作原理 就得在000H开始的单元中放一条无条件转移指令,以便跳转到实际程序的入口去执行。 1.2.3 低功耗工作方式 AT89C51有两种低功耗方式,即待机方式和掉电方式。 )的有关位来控制的。待机方式和掉电方式都是由电源控制寄存器(PCON 电源控制寄存器(PCON)是一个逐位定义的8位寄存器,其格式如下: MSB LSB SMOD —— —— —— GF1 GF0 PD IDL 其中:SMOD为波特率倍增位,在串行通信时使用: GF1为通用标志位1; GF0为通用标志位0; PD为掉电方式,PD=1,则进入掉电方式; IDL为待机方式,IDL=1,则进入待机方式。 要想使单片机进入待机或掉电工作方式,只要执行一条能使IDL或P0位为1的指令就可以了。 1.2.4 编程方式 AT89C51片内有4K字节的Flash ROM代码存储器阵列。有低电压编程和高电压编程(12V)两种模式。低电压编程状态为用户在系统中编程AT89C51提供了一个方便的途径,而高电压编程(12V)模式与一般常规的Flash或EPROM编程器兼容。 11 电子科技大学成都学院毕业设计论文 第2章 AT89C51的编程原理 AT89C51和AT89C52的编程原理完全相同,内部都有一个可重复编程的Flash ROM,AT89C51的ROM容量为4KB,而AT89C52的容量为8KB。 我们以AT89C51为例来说明其编程原理: A:由其ROM的容量可知其地址线需要13条。在编程时,被编程的51单片机芯片中各个管脚有相应的功能,即数据地址有P1和P2口输入,P1口提供低位地址,P2口的为高位地址, P0口为数据输入端,P2.6、P2.7、P3.6、P3.7为编程控制端接线如下图所示。其编程控制信号应按下表所列的要求施加并按 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 的时序进行。 图2-1 编程控制接线图 12 第2章 AT89C51的编程原理 表2-1 控制端状态表 控制端 功能 RST PSEN ALE/PROG EA/Vpp P2.6 P2.7 P3.6 P3.7 写数据 H L 12V L H H H H 读数据 H L H L L H H 擦除 H L 12V H L L L B:一般来说,编程AT89C51的过程分9步进行,以下是AT89C51的编程过程: 1.将RST接高电平,PSEN接低电平。 2.擦除芯片,每次重新编程前都要首先把原来ROM里面的程序擦除掉,将编程模式组合为擦除模式,送ALE端一个10ms宽度的低电平脉冲即可。 3.在地址线上输入所需编程程序的存储单元的地址。 4.将正确的控制信号组合为有效(写模式)。 5.在数据线上输入相应的数据字节。 6.将EA升至12V。 7.给ALE一个50um的低电平脉冲。 8.效验数据,将P2.6、P2.7、P3.6、P3.7控制信号组合为读模式,数据即出现在P0口。 9.改变地址和数据,重复步骤3~8步,直至程序写完。 通常1个字节写周期时间不超过1.5ms,其进程可查询P3.4管脚,在编程时为低电平表示“忙”,当转为高电平是表示“等待”,由于写循环结束以后P0口将出现真实数据,可以利用这一数据进行编程校验。编程AT89C51时除了必须按基本的9个步骤进行以外,控制信号也必须严格按照要求的时序施加。读取数据时,其地址、数据和控制信号按图2-1所示的要求,由编程器读取数据存入数据缓冲区中,并传给PC机。擦除数据由表3-1知道,将控制信号正确的组合并保持一定时间即可擦除内部数据。在AT89C51编程器中,将编程器作为开发器用,PC机作为控制上位机,它们之间的通信由串行口联接,通信双方在 13 电子科技大学成都学院毕业设计论文 波特率、停止位、数据长度、奇偶校验应取得一致,其数据的检错是通过HEX文件中的校验完成,PC机数据由串行口输出经过转换由单片机接受。 综合上面的要求,采用了AT89C51芯片来实现控制编程时序,用AT89C51芯片内部的异步串行接口与上位机通讯。采用AT89C51芯片的好处还在于它具有可升级性:可以通过修改其内部的程序从而实现对某些新型的芯片的支持。由于上位机通常采用的是RS232接口,而AT89C51的电平为CMOS电平,我们采用MAX232芯片完成这种电平转换。至于12V的编程电压,我们则充分利用MAX232的电平转换功能,借助其内部的电荷泵单元,通过外部接少量的元件便能产生编程所需要的12V直流电压。 通过以上的设计,使得本单片机编程器具有可升级性,非常简洁,芯片的资源利用率很高,成本可控制。 本设计的主芯片用到89C51,通过异步串口和微机通信,接受命令和数据,然后按时序对目标芯片进行读写擦除操作。其中利用单片机89C51的两个通信引角,通过RS232通讯模块电路对外部进行串行通讯,实现对外部数据的传输和交换。在P0口上外接一块地址锁存芯片74HC573,起到暂时存储数据的作用,该芯片的输出接到烧写芯片89C51插槽的P1口,使89C51的P0口、P2口与烧写芯片89C51插槽的P0口、P2口相连接,实现单片机内部地址、数据的传输、交互和存储。利用主芯片89C51的P1口与插槽芯片的其他引角相连,控制对烧写芯片各种功能的实现。外部主控电路实现对主控芯片的部分功能的控制,从而实现对Atmel89C系列芯片的程序烧写。 14 第3章 方案设计 第3章 方案设计 3.1 设计思路 由于市场上的编程器往往具有多功能的,可以支持很多种类的芯片,因此在结构上往往比较复杂,价格也就比较高。本设计的编程器只针对AT89C5X系列单片机,其出发点就是能提供一种简洁的,成本低廉的方案。下面是对功能实现进行的分析: 1) 通常,在PC机上进行单片机的程序开发,生产的目标代码通过串口或并口下载到编程器中,再由编程器将代码烧录到芯片中。因此,此编程器要具有通讯接口。 2) 要实现对AT89C51进行编程,需要对P0.0,P0.7、P1.0,P1.7、P2.0,P2.6、PORT0、P2.7、P3.4、P3.5共只引脚进行操作。其中,P0.0,P0.7和P2.0,P2.6组成地址总线和数据总线,P1.0,P1.7实现对烧写芯片各种功能的控制,其中P1.1是数据锁存信号,P3.4用于指示状态。因此,要有多个I/O引脚实现这个功能。 3) 此外,编程器还需要一路12V电源作为编程电压VPP。 综合上面的要求,采用了AT89C51芯片来实现控制编程时序,用AT89C51芯片内部的异步串行接口与上位机通讯。采用AT89C51芯片的好处还在于它具有可升级性:可以通过修改其内部的程序从而实现对某些新型的芯片的支持。由于上位机通常采用的是RS232接口,而AT89C51的电平为CMOS电平,我们采用MAX232芯片完成这种电平转换。至于12V的编程电压,我们则充分利用MAX232 借助其内部的电荷泵单元,通过外部接少量的元件便能产生编的电平转换功能, 程所需要的12V直流电压。通过以上的设计,使得本单片机编程器具有可升级性,非常简洁,芯片的资源利用率很高,成本可控制。 3.2 硬件方案 本设计的主芯片用到89C51,通过异步串口和微机通信,接受命令和数据,然后按时序对目标芯片进行读写擦除操作。其中利用单片机89C51的两个通信引角,通过RS232通讯模块电路对外部进行串行通讯,实现对外部数据的传输 15 电子科技大学成都学院毕业设计论文 和交换。该芯片的输出接到烧写芯片89C51插槽的P1口,使89C51的P0口、P2口与烧写芯片89C51插槽的P0口、P2口相连接,实现单片机内部地址、数据的传输、交互和存储。利用主芯片89C51的P1口与插槽芯片的其他引角相连,控制对烧写芯片各种功能的实现。外部主控电路实现对主控芯片的部分功能的控制,从而实现对Atmel89C系列芯片的程序烧写。 3.3 软件方案 3.3.1编程设计 该编程器的设计,需要有PC机与单片机共同来完成,所以一定要保证单片机与PC机的通信问题。单片机的通信初始化要与编程中的参数设置一致即有一个统一的通信协议。单片机主AT89C51的任务是完成握手、固化、擦除、加密和校验五种具体操作,但它要听从PC机的指挥,所以主AT89C51在初始化后就要等待PC机的操作指令即等待接收标志位,然后根据标志位进行对应的操作。 16 第4章 硬件设计 第4章 硬件设计 4.1 概述 编程器是一种数字系统的应用,数字系统是指离散或数字化表示的,具有信号存储,信号处理和信号传输功能的逻辑系统。由于设计方法的千差万别,编程器的结构也是不同的,但是大体结构类似,其硬件结构图如下: 编程器硬件组成框图如图一所示: AT89C51 MAX232AT89C51 P地址线 阿 是C 大控制线 电)计监师平待控 的 转 算编换 程机 ) 数据线 图1 编程器硬件组成框图 从以上编程器的硬件组成框图中,可以了解到其编程器的工作原理:计算机和单片机主芯片AT89C51完成对需要编程的AT89C系列芯片的各项操作。主芯片AT89C51是作为PC计算机和待编程的芯片之间的中介它起到桥梁作用,它联系着PC机与被固化的芯片。PC机将汇编语言编写的程序进行汇编,然后PC计算机发出操作命令和需要写人待编程芯片的数据,由主芯便AT89C51接收这些操作命令和数据,从而完成对待编程芯片的固化、比较、擦除等操作。MAX232为RS232接口,它起到电平转换的作用即实现TTL电平与RS232电平之间的转换。 在AT89C51内部有一个可重复编程的FlashROM,AT89C51的ROM的容量为4KB,由其ROM的容量可知其地址线需要13条,硬件连接原理图如附件所示。整个P0 17 电子科技大学成都学院毕业设计论文 口和P2口的低5位为编程地址输入端,P0口为数据输入端,P3.3、P3.4、P3.6、P3.7为编程模式。 4.1.1 AT89C51系列芯片编程注意的问题 通常 AT89C51片内包含Flash存储器阵列,FLASH存储器阵列在编程以前处 (即阵列为“1”状态)。编程接口既接受高电平编程允许信号,也接于擦除状态 受低电平编程允许信号。低电平编程方式为在用户系统内对AT89C51编程提供了一个方便的途径,而高电平编程方式与通用的第三个生产厂家FLASH或EPROM编程器兼容。AT89C51 允许用高电平编程方式或低电平编程方式。对AT89C51程序存储器阵列编程,都是按字节单元顺序编程的。要对片内Flash存储器任何非空字节单元编程,都必须用片擦除方式擦除整个存储器。Flash编程和校验操作过程与AT89C51同。 4.2各部分电路介绍 4.2.1串行通信电路 由于AT89C51的串行口为CMOS电平,需要进行电平转换,使用了MAXIM公司的MAX232芯片。该芯片使用单电源供电, 内部使用电荷泵技术进行DC-DC电压变换,产生RS232所需要的双电压电源,在该图中,+5V输入经过电压倍增器产生+10V电压输出,+10V电压经过电压反转器输出-10V电压。这样,使用+5V电源就产生了RS232所需的电压。电压转换过程中使用了电荷泵技术,其内部由振荡器和电子开关所组成电路。在这个电路里,MAX232除了完成TTD/RS232电平转换外,还用于产生12V电压,这样使得电路很精简。由于编程所需要的电流只有1mA,实验证明,该电路是可以正常的工作,不会影响串行通讯。如下图所示: 18 第4章 硬件设计 图4-1串行通讯接口电路图 4.2.2系统电源电路 本电源电路通过USB提供给线路两端的5V电压,并通过MAX232得到编程所需的12V高压,经过整流、滤波后,再通过其他电路的滤波,从而得到各部分稳定的工作电压。 4.2.3主要外围电路(振荡电路) 电路里采用的是11.0592MHz的晶振,有关电路如下图: 19 电子科技大学成都学院毕业设计论文 图4-2 振荡电路 XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反向放大器的输入端。在采用外部时钟,对于HMOS单片机,该端引脚必须接地,对于CHMOS单片机,此引脚作为驱动端。 XTAL2(18脚):接外部晶体的另一端。在片内它是一个振荡电路反向放大电路的输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬空。这部分的电路十分简单,Y2是外接在18、19脚的一个振荡器。C1、C2瓷片电容与Y2振荡器组成振荡电路。 4.2.4外部主控电路 该电路主要控制编程器在烧写过程中的电压,通过软件的设计来控制整个芯片的烧写过程,电路原理图如下图: 图4-3外部主控电路 20 第4章 硬件设计 4.3主要元器件介绍 4.3.1 MAX232—串行通讯 这次方案设计的串行通信芯片MAX232是一种双驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供EIA/TIA-232-E电平。每个接受器将EIA/TIA-232-E电平输入转换为5VTTL/CMOS电平。这些接收器具有13V的典型门限值及0.5V的典型迟滞,而且可以接受正负30伏的电压输入。每个驱动器将TTL/CMOS输入电平转换为EIA/TIA232-E电平。主要特点: 1、单5V电源工作; 2、LinBiCMOSTM工艺技术; 3、两个驱动器及两个接受器; 4、正负30伏电压输入电平; 5、低电源电流:典型是8MA; 6、符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28; 7、ESD保护大于MIL-STD-888(方法3015)标准的2000V; 以下就是MAX232的外部框图和内部结构图: 图4-4 MAX232外部框图和内部结构图 21 电子科技大学成都学院毕业设计论文 4.3.2 PL2303USB串行通信 由于后来调试的时候发现笔记本电脑上没有9脚的串口,所以设计了这个通过PL2303来使用USB进行通信的模块。这个我会在以后整合到同一块电路板上,就可以把原电路的MAX232省掉。然后再添加一个DC-DC连接的模块用来提供编程所需要的12V电压,芯片就采用MC34063。 图4-5 PL2303 USB串行通讯电路 图4-6 PL2303外部框图和内部结构图 22 第4章 硬件设计 图4-7 MC34063升压电路 23 电子科技大学成都学院毕业设计论文 第5章 软件设计 在工业过程检测和控制系统中,通信是实现两端设备交换数据的主要手段,而Windows以其多任务、事件驱动和高级的图形用户界面(GUI)等特点得到广泛应用,所以Windows环境下实现通信程序的设计成为一个关键问题。但Windows不支持对系统I/0端口的直接访问,在Windows环境下实现通信的一个简便方法就是利用Windows中已提供驱动程序支持的串行口进行串行通信。 编程器的软件设计主要包括两个部分:一个是与PC机相连的上位机程序界面,该界面是用VB语言所编写;另一个而是主芯片89C51实现对89C系列芯片烧写、擦处等功能的编写,主要用我们学过的C语言来实现。其中软件设计部分有我的同学完成。其中该编程器的主流程图如下: 图5-1 流程图 24 第5章 软件设计 监控程序如下: #include BYTE ComBuf[18];//串口通讯数据缓存,发送和接收都使用 UINT nAddress;//ROM中地址计数 UINT nTimeOut;//超时计数 ProWork pw;//编程器一般操作 void Delay_us(BYTE nUs)//微秒级延时<255us> { TH0=0; TL0=0; TR0=1; while(TL010000)//后17个字节都有超时限制 return 0; } ComBuf[n]=SBUF; RI=0; } return 1; } BOOL WaitResp()//等待上位机回应,1字节,有超时限制 { nTimeOut=0; RI=0; while(!RI) 27 电子科技大学成都学院毕业设计论文 { nTimeOut++; if(nTimeOut>50000) { return 0; } } RI=0; ComBuf[0]=SBUF; return 1; } BOOL WaitData()//写器件时等待上位机数据,18字节,有超时限制 { BYTE n; RI=0; for(n=0;n<=17;n++) { nTimeOut=0; while(!RI) 28 第5章 软件设计 { nTimeOut++; if(nTimeOut>10000) { return 0; } } RI=0; ComBuf[n]=SBUF; } return 1; } void SendData()//发送数据或回应操作完成,18字节 { BYTE n=0; for(n;n<=17;n++) { TI=0; SBUF=ComBuf[n]; 29 电子科技大学成都学院毕业设计论文 while(!TI){} TI=0; } } void SendResp()//回应上位机1个字节,在写器件函数中使用 { TI=0; SBUF=ComBuf[0]; while(!TI){} TI=0; } void SetVpp5V()//设置Vpp为5v { P3_4=0; P3_3=0; } void SetVpp0V()//设置Vpp为0v 30 第5章 软件设计 { P3_3=0; P3_4=1; } void SetVpp12V()//设置Vpp为12v { P3_4=0; P3_3=1; } void RstPro()//编程器复位 { pw.fpProOver();//直接编程结束 SendData();//通知上位机,表示编程器就绪,可以直接用此函数因为协议 号(ComBuf[0])还没被修改,下同 } void ReadSign()//读特征字 { 31 电子科技大学成都学院毕业设计论文 pw.fpReadSign(); SendData();//通知上位机,送出读出器件特征字 } void Erase()//擦除器件 { pw.fpErase(); SendData();//通知上位机,擦除了器件 } void Write()//写器件 { BYTE n; pw.fpInitPro();//编程前的准备工作 SendData();//回应上位机表示进入写器件状态,可以发来数据 while(1) { if(WaitData())//如果等待数据成功 { if(ComBuf[0]==0x07)//判断是否继续写 32 第5章 软件设计 { for(n=2;n<=17;n++)//ComBuf[2~17]为待写入数据块 { if(!pw.fpWrite(ComBuf[n]))//<<<<<<<<<<<<<<<<<<<调用写该器件一个单元的函数 { pw.fpProOver();//出错了就结束编程 ComBuf[0]=0xff; SendResp();//回应上位机一个字节,表示写数据出错 WaitData();//等待上位机的回应后就结束 return; } nAddress++;//下一个单元 } ComBuf[0]=1;//回应上位机一个字节,表示数据块顺利完成,请求继续 SendResp(); } else if(ComBuf[0]==0x00)//写器件结束 break; 33 电子科技大学成都学院毕业设计论文 else//可能是通讯出错了 { pw.fpProOver(); return; } } else//等待数据失败 { pw.fpProOver(); return; } } pw.fpProOver();//编程结束后的工作 Delay_ms(50);//延时等待上位机写线程结束 ComBuf[0]=0;//通知上位机编程器进入就绪状态 SendData(); } void Read()//读器件 { 34 第5章 软件设计 BYTE n; pw.fpInitPro();//先设置成编程状态 SendData();//回应上位机表示进入读状态 while(1) { if(WaitResp())//等待上位机回应1个字节 { if(ComBuf[0]==0)//ComBuf[0]==0表示读结束 { break; } else if(ComBuf[0]==0xff)//0xff表示重发 { nAddress=nAddress-0x0010; } for(n=2;n<=17;n++)//ComBuf[2~17]保存读出的数据块 { ComBuf[n]=pw.fpRead();//<<<<<<<<<<<<<<<<<<<调用写该器 件一个单元的函数 nAddress++;//下一个单元 35 电子科技大学成都学院毕业设计论文 } ComBuf[0]=6;//向上位机发送读出的数据块 SendData(); } else break;//等待回应失败 } pw.fpProOver();//操作结束设置为运行状态 ComBuf[0]=0;//通知上位机编程器进入就绪状态 SendData(); } void Lock()//写锁定位 { pw.fpLock(); SendData(); } extern void PreparePro00();//FID=00:AT89C51编程器 36 第5章 软件设计 extern void PreparePro01();//FID=01:AT89C2051编程器 extern void PreparePro02();//FID=02:AT89S51编程器 void main() { SP=0x60; SetVpp5V();//先初始化Vpp为5v SCON=0x00; TCON=0x00; //PCON=0x00;//波特率*2 IE=0x00; //TMOD: GATE|C/!T|M1|M0|GATE|C/!T|M1|M0 // 0 0 1 0 0 0 0 1 TMOD=0x21;//T0用于延时程序 TH1=0xff; TL1=0xff;//波特率28800*2,注意PCON //SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI // 0 1 0 1 0 0 0 0 SCON=0x50; TR1=1; 37 电子科技大学成都学院毕业设计论文 Delay_ms(1000);//延时1秒后编程器自举 ComBuf[0]=0; SendData(); while(1)//串口通讯采用查询方式 { if(!WaitComm())//如果超时,通讯出错 { Delay_ms(500); ComBuf[0]=0;//让编程器复位,使编程器就绪 } switch(ComBuf[1])//根据FID设置(ProWork)pw中的函数指针 { case 0://at89c51编程器 PreparePro00(); break; case 1://at89c2051编程器 PreparePro01(); break; case 2://at89s51编程器 PreparePro02(); 38 第5章 软件设计 break; //case 3:支持新器件时,请继续向下添加 // break; //case 4: // break; default: ComBuf[0]=0xff; ComBuf[1]=0xff;//表示无效的操作 break; } switch(ComBuf[0])//根据操作ID跳到不同的操作函数 { case 0x00: RstPro();//编程器复位 break; case 0x01: ReadSign();//读特征字 break; case 0x02: Erase();//擦除器件 39 电子科技大学成都学院毕业设计论文 break; case 0x03: Write();//写器件 break; case 0x04: Read();//读器件 break; case 0x05: Lock();//写锁定位 break; default: SendData(); break; } } } 40 第6章 系统调试 第6章 系统调试 本设计的调试主要分为硬件调试、软件调试二部分。经过初步的分析设计后,打算在制作硬件电路的同时,调试也在穿插进行。但由于时间的关系,我是在硬件完成以后,再进行调试。 6.1硬件的调试 硬件调试过程中的工具和测量仪器: 1、12V稳压电源; 2、MF500型万用表; 3、Keil仿真软件; 4、PC机 在总个设计的完成到差不多一半的时候,硬件电路图已经设计完成。但是于最初的设计电路图相比有所改动。在进行设计后,为了能注意到编程的现象和电源的稳定性,所以改用了发光二极管和典型的稳压电路,这样能比较形象的表达出编程的动作与不动作,这样一改以后就发现现在的电路图与原先的要简化多了;但是考虑到整个电路的统一性问题,我把整个电路布在一块PCB板上,而且这样也比较的经济,电路的稳定性也比较好,符合设计的要求。就把原来的错误改正了,最终使硬件调试顺利的完成。但是后来基本完成的时候发现我们有些同学用的是笔记本电脑,他们的电脑上没有串口接口,就没有办法使用这款编程器,所以我后来又在外围做了一个USB模拟串口的模块,主要采用的是PL2303和211来转换成RS电平,方便了一些使用笔记本电脑的同学的使用。由于我们做成的是一个模块,所以这款串口模拟的模块还可以用来接其他很多需要USB模拟串口的产品来使用,甚至可以用来作为部分手机的刷机线,比如说本人的PLAM手机。 6.2软件的调试 在本设计中,程序的设计与编辑主要是我同学设计的,但我也没离开软件的设计,通过看 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 上的资料,通过老师和同学的帮助,因此完成的比较顺利,但是在调试的过过程中遇到了不少的问题,比如在串口调试和界面调试时,由于把 41 电子科技大学成都学院毕业设计论文 没弄清楚该部件的原理,一时无法调通。在整个程序设计是使用C语言,在Keil仿真软件下编写并调试完成的。 42 总 结 总结 经过了一个学期的单片机技术基础的学习,初步掌握了一些单片机技术的基础知识.原以为已经学有所得,但是拿到课程设计的题目时,不禁有些茫然,不知从何着手.结果仔细分析研究才有了眉目,在设计电路图的过程中,由开始的几种设想统一为一种方案,期间的讨论和研究加深了对知识的理解程度,不觉之间又学到了很多东西。 在初步设想确定之后,以为可以松一口气了,可是一大堆的问题又接踵而来,集成块、原器件的选择,接线杂乱,性能不稳定等,大伤脑筋,只好一次又一次的修改.请教同学和老师。就在边学边设计边改进的过程中完成了编程器的理论设计。 通过此次设计我深深的体会到理论与实践结合的重要性。在设计过程中好多的问题只有自己亲自动手去做的时候才会发现,而且在实际操作的时候好多问题都是理论上没有的,但是问题确实是出现在那里,而且好多问题是做到一定程度才会显现出来,比如这次的串口通信问题,做到最后调试的时候才发现好多使用笔记本电脑的同学就不能使用这款编程器,因为他们的电脑上没有9脚的串口接口,所以才会想到后来的用USB模拟串口的通信。 通过此次设计我学会了怎样查阅资料和利用工具书。平时课堂上所学习的知识大多比较陈旧,作为电子专业的学生,由于专业特点自己更要积极查阅当前的最新电子资料。一个人不可能什么都学过,什么都懂,因此,当你在设计过程中需要用一些不曾学过的东西时,就要去有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,补充最新的专业知识。 几个月下来,终于看到了自己的劳动成果,而且产品基本达到要求.经过这次课程设计,收获了很多,能够更加熟练地使用一些工具软件,比如PROTEL99SE KEIL等。原本模糊的概念特清晰起来,被一种充实而又有自信的感觉所代替.相信,通过这样的学习锻炼,了解了数字电子技术的理论及实践的意义,对我们今后的学习有莫大的益处,也为以后的从事这方面的工作打下了基础。 43 电子科技大学成都学院毕业设计论文 参考文献 (1)夏路易、石宗义《电路原理图与电路板设计教程Protel 99SE》北京希望电子出版社 2002 (2)张义和 《Protel PCB99电路板设计教程》 青岛出版社 2000 (3)张迎新、杜小平、樊桂花、雷道振 《单片机初级教程》 北京航空航天大学出版社 2002 (4)何立民 《单片机高级教程――应用与设计》北京航空航天大学出版社2000年8月 (5)余永权 《ATMEL89系列单片机应用技术》 北京航空航天出版社 2002年,月 (6)李广弟 《单片机基础》 北京航空航天大学出版社 2001年6月 (7)何小艇主编《电子系统设计》浙江大学出版社2001 (8)李广军 《微机系统原理与接口技术》 电子科技大学出版社 2005.2 (9)李朝青 《单片机原理接接口技术》 北京航空航天大学出版社 2005.10 44 总 结 致谢 感谢学校给了我们这样一次锻炼机会,感谢系部给我争取到的这次在学校做毕业设计的机会,同时也深深地感谢辛勤指导我们工作、学习的周老师,因为本论文从选题到论文完成,自始至终都是在他的关心和指导下进行的,每周都会专门找时间对我们进行专业的指导,还专门建立一个QQ群方便和我们进行联系和交流。在我做毕业设计期间,我充分感受到了周老师对事业的热爱,他严谨的治学态度,兢兢业业的敬业精神,充沛的精力,都是我应努力学习的。 这次毕业设计不仅锻炼了我们的动手能力,增强了我们的实践意识,还激发了我们的创新思维;不仅提高了我们的求知精神,还培养了我们克服困难和吃苦耐劳的精神;所有这些都无不激发着我们去不断追求、不断创新。 最后再次感谢我们辛勤的周老师~ 45 电子科技大学成都学院毕业设计论文 附录 电路原理图: 46 附 录 改进后采用PL2303通信的电路图: 47 电子科技大学成都学院毕业设计论文 PCB图: 48 英文资料原文 英文资料原文 The Introduction of AT89C51 Description The AT89C51 is a low-power, high-performance CMOS 8-bit microcomputer with 4K bytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmel’s high-density nonvolatile memory technology and is compatible with the industry-standard MCS-51 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C51 is a powerful microcomputer which provides a highly-flexible and cost-effective solution to many embedded control applications. Function characteristic The AT89C51 provides the following standard features: 4K bytes of Flash, 128 bytes of RAM, 32 I/O lines, two 16-bit timer/counters, a five vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator and clock circuitry. In addition, the AT89C51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/counters, serial port and interrupt system to continue functioning. The Power-down Mode saves the RAM contents but freezes the oscillator disabling all other chip functions until the next hardware reset. Pin Description VCC:Supply voltage. GND:Ground. Port 0: Port 0 is an 8-bit open-drain bi-directional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as 49 电子科技大学成都学院毕业设计论文 highimpedance inputs.Port 0 may also be configured to be the multiplexed loworder address/data bus during accesses to external program and data memory. In this mode P0 has internal pullups.Port 0 also receives the code bytes during Flash programming,and outputs the code bytes during programverification. External pullups are required during programverification. Port 1: Port 1 is an 8-bit bi-directional I/O port with internal pullups.The Port 1 output buffers can sink/source four TTL inputs.When 1s are written to Port 1 pins they are pulled high by the internal pullups and can be used as inputs. As inputs,Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups.Port 1 also receives the low-order address bytes during Flash programming and verification. Port 2: Port 2 is an 8-bit bi-directional I/O port with internal pullups.The Port 2 output buffers can sink/source four TTL inputs.When 1s are written to Port 2 pins they are pulled high by the internal pullups and can be used as inputs. As inputs,Port 2 pins that are externally being pulled low will source current, because of the internal pullups.Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses. In this application, it uses strong internal pullupswhen emitting 1s. During accesses to external data memory that use 8-bit addresses, Port 2 emits the contents of the P2 Special Function Register.Port 2 also receives the high-order address bits and some control signals during Flash programming and verification. Port 3: Port 3 is an 8-bit bi-directional I/O port with internal pullups.The Port 3 output buffers can sink/source four TTL inputs.When 1s are written to Port 3 pins they are pulled high by the internal pullups and can be used as inputs. As inputs,Port 3 pins that are externally being pulled low will source current (IIL) because of the pullups.Port 3 also serves the functions of various special features of the AT89C51 as listed below: 50 英文资料原文 Port 3 also receives some control signals for Flash programming and verification. RST Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device. ALE/PROG Address Latch Enable output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming.In normal operation ALE is emitted at a constant rate of 1/6 the oscillator frequency, and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external Data Memory. If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcontroller is in external execution mode. PSEN Program Store Enable is the read strobe to external program memory.When the AT89C51 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory. 51 电子科技大学成都学院毕业设计论文 EA/VPP External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset.EA should be strapped to VCC for internal program executions.This pin also receives the 12-volt programming enable voltage(VPP) during Flash programming, for parts that require12-volt VPP. XTAL1 Input to the inverting oscillator amplifier and input to the internal clock operating circuit. XTAL2 Output from the inverting oscillator amplifier. Oscillator Characteristics XTAL1 and XTAL2 are the input and output, respectively,of an inverting amplifier which can be configured for use as an on-chip oscillator, as shown in Figure 1.Either a quartz crystal or ceramic resonator may be used. To drive the device from an external clock source, XTAL2 should be left unconnected while XTAL1 is driven as shown in Figure 2.There are no requirements on the duty cycle of the external clock signal, since the input to the internal clocking circuitry is through a divide-by-two flip-flop, but minimum and maximum voltage high and low time specifications must be observed. Oscillator Connections and External Clock Drive Configuration 52 英文资料原文 Idle Mode In idle mode, the CPU puts itself to sleep while all the onchip peripherals remain active. The mode is invoked by software. The content of the on-chip RAM and all the special functions registers remain unchanged during this mode. The idle mode can be terminated by any enabled interrupt or by a hardware reset.It should be noted that when idle is terminated by a hard ware reset, the device normally resumes program execution,from where it left off, up to two machine cycles before the internal reset algorithm takes control. On-chip hardware inhibits access to internal RAM in this event, but access to the port pins is not inhibited. To eliminate the possibility of an unexpected write to a port pin when Idle is terminated by reset, the instruction following the one that invokes Idle should not be one that writes to a port pin or to external memory. Power-down Mode In the power-down mode, the oscillator is stopped, and the instruction that invokes power-down is the last instruction executed. The on-chip RAM and Special Function Registers retain their values until the power-down mode is terminated. The only exit from power-down is a hardware reset. Reset redefines the SFRs but does not change the on-chip RAM. The reset should not be activated before VCC is restored to its normal operating level and must be held active long enough to allow the oscillator to restart and stabilize. Program Memory Lock Bits On the chip are three lock bits which can be left unprogrammed (U) or can be programmed (P) to obtain the additional features listed in the table below. 53 电子科技大学成都学院毕业设计论文 When lock bit 1 is programmed, the logic level at the EA pin is sampled and latched during reset. If the device is powered up without a reset, the latch initializes to a random value, and holds that value until reset is activated. It is necessary that the latched value of EA be in agreement with the current logic level at that pin in order for the device to function properly. 54 英文资料翻译 英文资料译文 AT89C51的介绍 描述 AT89C51是一个低电压,高性能CMOS 8位单片机带有4K字节的可反复擦写的程序存储器(PENROM)。和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89C51单片机能够被应用到控制领域中。 功能特性 AT89C51提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/O口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。 引脚描述 VCC:电源电压 GND:地 P0口: P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。 P1口: P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为 55 电子科技大学成都学院毕业设计论文 输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。 P2口: P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。 P3口: P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。 P3口除了作为一般的I/O口外,更重要的用途是它的第二功能,如下表所示: 端口引脚 第二功能 P3.0 RXD P3.1 TXD P3.2 INT0 P3.3 INT1 P3.4 T0 P3.5 T1 P3.6 WR P3.7 RD P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。 56 英文资料翻译 RST: 复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。 PROGALE/: 当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。 PSEN: 程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。 EA/VPP: 外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。 XTAL1:震荡器反相放大器及内部时钟发生器的输入端。 XTAL2:震荡器反相放大器的输出端。 时钟震荡器 AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。 外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用 57 电子科技大学成都学院毕业设计论文 30PF?10PF,而如果使用陶瓷振荡器建议选择40PF?10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 内部振荡电路和外部振荡电路 闲散节电模式 AT89C51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。这两种方式是控制专用寄存器PCON中的PD和IDL位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是闲散等待方式,当IDL=1,激活闲散工作状态,单片机进入睡眠状态。如需要同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在闲散工作模式状态,中央处理器CPU保持睡眠状态,而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变。闲散模式可由任何允许的中断请求或硬件复位终止。终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件被激活,IDL被硬件清除,即刻终止闲散工作模式。程序会首先影响中断,进入中断服务程序,执行完中断服务程序,并紧随RETI指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。二是通过硬件复位也可将闲散工作模式终止。需要注意的是:当由硬件复位来终止闲散工作模式时,中央处理器CPU通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完 58 英文资料翻译 成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止中央处理器CPU访问片内RAM,而允许访问其他端口,为了避免可能对端口产生的意外写入:激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令。 掉电模式 在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在中指掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常工作电平前,复位应无效切必须保持一定时间以使振荡器从新启动并稳定工作。 闲散和掉电模式外部引脚状态。 程序存储 模式 ALE P0 P1 P2 P3 PSEN 器 闲散模式 内部 1 1 数据 数据 数据 数据 闲散模式 内部 1 1 浮空 数据 地址 数据 掉电模式 外部 0 0 数据 数据 数据 数据 掉电模式 外部 0 0 数据 数据 数据 数据 程序存储器的加密 AT89C51可使用对芯片上的三个加密位LB1,LB2,LB3进行编程(P)或不编程(U)得到如下表所示的功能: 程序加密位 保护类型 1 U U U 没有程序保护功能 禁止从外部程序存储器中执行MOVC指令读取内部程序存2 P U U 储器的内容 59 电子科技大学成都学院毕业设计论文 3 P P U 除上表功能外,还禁止程序校验 4 P P P 除以上功能外,同时禁止外部执行 当LB1被编程时,在复位期间,EA端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正复位位置。为了使单片机正常工作,被锁存的EA电平与这个引脚当前辑电平一致。机密位只能通过整片擦除的方法清除。 60
本文档为【(毕业论文)单片机编程器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_212655
暂无简介~
格式:doc
大小:559KB
软件:Word
页数:0
分类:互联网
上传时间:2017-09-01
浏览量:29