本科毕业论文-基于usb接口的编程器的设计说明书.doc
编号: 毕业设计说明书题 目:基于USB接口的编程器的 设计 学 院: 机电工程学院 专 业: 电气工程及其自动化 学生姓名: 陈 忠 富 学 号: 0600120310 指导教师: 郭 福 力 职 称: 工 程 师 题目类型: 理论研究 实验研究 工程设计 工程技术研究 软件开发2010年5月20日摘 要USB(通用串行总线)是连接外部设备和主控制器(通常是个人电脑)的一个串行总线标准。USB是由Ajay Bhatt在因特尔公司工作时开发的,其开发USB的目的是为了取代各种各样的串行和并行端口。USB有一个显著优点就是支持热插拔,也就是说在开机的情况下,你也可以安全地连接或断开USB设备,真正达到真正的即插即用。随着电子的快速发展,单片机机得到了广泛地应用,而单片机开发产品离不开编程器。传统的编程器都是基于并口开发,在笔记本中根本无法使用,因而开发基于USB接口的编程器具有非常重要的意义。USB型编程器具有体积小巧、功耗低、可靠性高、通用性强、编程速度快等特点;另一方面,USB具有自身供电的能力,不必外接电源。本课题实现了基于USB接口的AT89S5X单片机编程器制作。文中重点介绍了编程器硬件设计、DC-DC升压电路、USB转串口模块设计、单片机程序设计、上位机的软件设计。在硬件方面,详细介绍方案的选择,元件参数的计算,以及在制作过程中的注意事项;在软件方面,详细阐述了基于VC+上位机编程过程的每个步骤,并提供一个良好的人机对话界面软件,使用方便。本系统可以实现AT89S51,AT89S52等系列CPU芯片的芯片识别、程序下载、芯片擦处、程序加密、数据比较、代码读出等功能,同时可以通过计算机控制单片机的运行与停止。关键词:下载;单片机;编程器;并行;USB转串口AbstractUSB (Universal Serial Bus) is a specification to establish communication between devices and a host controller (usually personal computers), which was developed and invented by Ajay Bhatt when he was working for Intel. The designed of USB is intended to replace many varieties of serial and parallel ports. There is also a significant advantage of its supporting hot-swappable, which means you can safely connect or disconnect the USB device in the case of the computer running to achieve a true plug and play. With the rapid development of electronics, microcontroller is widely used.However, using the microcontroller to develop product can not work without the MCU programmer. Traditional programming usually uses parallel communication to the computer, which is not available to the notebook computer, so there is a special significance to decelop the USB programmer.The USB programmer has many advantages: such as a small size, low power consumption, high reliability, versatility,fast programming characteristics etc;On the other hand, the USB interface itself can offer power, which means no power is needed.The AT89S5X microcontroller pogrammer production based on the USB interface is designed in this issue. The microcontroller programmer hardware, DC-DC boost circuit, the module of USB to serial port, the microcontroller programming and PC software designing are described emphatically. In the part of hardware design the choice of the scheme, the calculation of device parameters, the attentions in the production process are detailed. In the part of software design, the process of PC programming based on VC+ is introduced emphatically and good-man-machine conversation interface software is provided, which is easy to use. This system can achieve many functions, such as identification of series CPU chips, program downloading, erase, encrypting, comparing, reading etc, and running or stoping of the MCU can be controlled by the PC.Key words: Download; Microcontroller; Programmer; Parallel; USB-to-serial 第I页 共II页目 录引言11绪论21.1课题背景及意义21.2系统设计主要任务22硬件方案选择与设计32.1系统方案选择32.2系统总体设计32.3芯片介绍32.3.1 AT89S51简介32.3.2 DC-DC MC34063芯片简介52.3.3 USB转串口CP2102芯片简介52.4硬件电路设计62.4.1 CP2102电路设计62.4.2 MC34063芯片升压电路设计62.4.3 MCU控制电路设计73软件方案选择与设计93.1单片机编程93.1.1编程和校验原理图103.1.2 FLASH编程器编程与校验波形(并口模式)103.1.3 Flash编程真值113.1.4 FLASH编程器编程与校验特性(并口模式)113.1.5读签名字123.1.6芯片擦除123.1.7 Flash闪速存储器编程133.1.8程序存储器的加密:133.1.9数据查询143.1.10读取代码153.1.11单片机运行与停止153.2上位机(PC机)编程163.2.1用户界面的设计173.2.2串行通信的实现173.2.3控件MSComm使用方法173.2.4 HEX文件183.2.5软件的设计193.2.6软件操作步骤214系统制作及调试224.1使用的仪器仪表及工具224.2系统PCB板的设计224.3硬件调试224.3.1器件的焊接224.3.2功能模块调试224.4单片机程序调试234.5PC机软件的调试234.6联机调试244.7调试总结245结论25谢辞26参考文献27附录28附录I 下位机调试程序28附录II 上位机程序42附录III 编程器原理图及PCB58 第58页 共58页引言通用串行总线(Universal Serial Bus)是连接外部设备的一个串口总线标准,而其中文简称为“通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,是应用在PC领域的接口技术,同时USB接口支持设备的即插即用和热插拔的功能。USB是在1994年底由英特尔、康柏、IBM、Microsoft等多家公司联合提出的。USB的功能强大、细小、使用灵活、方便,因而USB具有无比的优越性。USB接口将会越来越广泛的使用,因而研究基于USB的接口设备具有很重要的意义。单片机体积小、功能强、价格低廉、应用十分广泛。但面对多则几千元,少则几百元的编程器,很多人望而却步。单片机编程器是把一个可编程的集成电路写上数据的工具。编程器的叫法有多种,“编程器”、“下载器”、“烧录器”等都是其名字,都是同一个产品的不同名称。编程器在功能上可分通用编程器和专用编程器。专用型编程器价格最低,适用芯片种类较少,适合以某一种或者某一类专用芯片编程的需要,例如仅仅需要对AT89S5X系列编程。全功能通用型一般能够涵盖几乎所有当前相同系列的芯片,由于设计麻烦、成本较高、限制了销量、最终售价极高,但适合需要对很多种芯片进行编程的情况。本课题制作基于USB接口的AT89S5X单片机专用编程器的制作。文中重点介绍了编程器硬件设计、DC-DC升压电路、USB转串口模块设计、单片机程序设计、上位机的软件设计。其中在硬件方面,详细介绍方案的选择,电路设计、元件参数的计算,以及在制作过程中的注意事项;在软件方面,详细阐述了基于VC+上位机编程过程的每个步骤,并提供一个良好的人机对话界面软件,其使用方便。本系统可以实现AT89S5X等系列CPU芯片的芯片识别、程序下载、芯片擦处、程序加密、程序比较、程序读出等功能,同时可以通计算机控制单片机的运行与停止。1 绪论随着USB的快速发展,USB应用越来越广泛,USB将会取代各种各样的串行及并行接口,因而研发USB接口的产品已经成为市场发展的需要。本文将会简述USB接口的编程器的原理、方案选择与设计,主要详细介绍硬件电路设计、单片机程序设计、上位机软件设计,同时介绍硬件以及软件调试步骤以及注意事项。1.1 课题背景及意义随着计算机硬件飞速发展,外围设备日益增多,键盘、鼠标、调制解调器、打印机、扫描仪早已为人所共知,数码相机、MP3随身听接踵而至,这么多的设备,如何接入个人计算机?USB就是基于这个目的产生的。USB是一个使计算机周边设备连接标准化、单一化的接口,USB的功能强大、细小、使用灵活、方便,因而USB具有无比的优越性、实用性。USB接口将会越来越广泛的使用,因而研究基于USB的接口设备具有很重要的意义。编程器的下载方式很多,比如AT89S5X单片机就有二种下载方式:高压并行编程、ISP串行编程。每种方式其使用的编程协议都是不同,二种编程方式中,现在很多电脑已经没有并口和串口了,特别笔记本电脑中已经看不到并口和串口的存在,以前使用的并口和串口的ISP下载线已经无法再继续使用了。作为如今电脑上使用最多,用途最广的USB接口,在每一台电脑上,无论是台式机还是笔记本电脑都配备了四个以上的USB接口,在这个USB流行的时代,使用USB口连接,支持热插拔的方便易用、价格低廉的专用型USB编程器非常符合未来编程器的发展方向。鉴于通用型编程器高昂的制作成本和复杂的设计,用途也不大,需求人群不多的特点,我们没有必要去设计这样一个编程器。设计一个方便易用、简单可靠、价格低廉的专用型的编程器,能够对我们平时经常用到的单片机芯片进行编程下载,不仅方便我们日常应用,也锻炼了电路设计能力和动手能力。以前的编程器都是以并口设计的为主,每次编程时都要将芯片从目标板上取下,放入编程器里进行编程,使用极其不便,本文设计了一个应用USB接口的编程器,无需将芯片从目标板上取下就开以对其进行编程,方便了程序的下载和调试。1.2 系统设计主要任务本文利用AT89S52做为主控制器,制作USB编程器的样机。样机的设计包括:系统硬件的设计与调试及软件的编写与调试。其中硬件部分制作一个制可以下载程序的单片机控制系统,里面包含有DC-DC升压电路、控制单片机下载程序电路、USB转串口的电路。软件部分可以控制程序下载、芯片擦除、程序加密、数据比较、数据读出,同时可以控制单片机复位,运行,停止等功能。2 硬件方案选择与设计USB编程器的制作,方案选择是关键,硬件设计是实现整个功能的基础。本章将会详细介绍硬件电路方案的选择与设计,包括USB转串口电路设计、DC-DC升压电路设计、单片机控制电路设计。2.1 系统方案选择USB编程器的制作方案的选择,是进行样机设计最重要、最关键的一步,选择方案的好坏,直接影响了制作及编程的难度。在硬件方案中,AT89S51/52单片机可以使用ISP或并口模式下载程序。两种方法各有优缺点,在不同的场合,应用不同的方案。第一种方案是采用ISP在线编程,程序代码存储阵列可通过串行ISP 接口进行编程,串行接口包含SCK线、MOSI(输入)和MISO(输出)线。将RST拉高后,在其它操作前必须发出编程使能指令,编程前需将芯片擦除。芯片擦除则将存储代码阵列全写为FFH。第二种方案是使用并口编程,接线较多,但是控制简单,AT89S51/52 单片机内部有4k/8k 字节的可快速编程的Flash 存储阵列。编程方法可通过传统的EPROM 编程器使用高电压(+12V)和协调的控制信号进行编程。AT89S51/52的代码是逐一字节进行编程。通过比较上述方案,考虑到成本以及可扩展性,同时在不增加成本的情况下,只增加下位机控制程序,即可以扩展下载AT89C51/52等系列的单片机,故选择第二种方案。2.2 系统总体设计硬件的总体设计如图 2.1所示,将USB转换为串口,单片机与计算机之间的全双工通信通过单片机的串口与USB转串口模块相连接,这样可以使得编程更加简便,同时使用USB供电,因而不需要外接电源。计算机将数据传输到主控芯片,主控芯片控制受控芯片,实现程序下载、芯片擦除、程序加密、数据比较、代码读出,同时控制单片机复位与停止、单片机传输数据到计算机,计算机显示相关信息。同时由于编程中需要用到12V的电压,因而需要使用DC-DC升压电路,将USB自身的5V电压升压到12V。2.3 芯片介绍2.3.1 AT89S51简介AT89S51单片机是51系列单片机的一个成员,内部自带4K字节可编程FLASH可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。由于将多功能八位CPU和闪速存储器结合在单个芯片中,因此,AT89S52构成的单片机系统是具有结构简单、造价低廉、效率高的微控制系统,减少了硬件开销,节省了成本,提高了系统的性价比。AT89S51是一个有40个引脚的芯片,引脚配置如图 2.2所示。与8031相比,AT89S51自带4K的ROM和128B的RAM,因此编写中小型系统就无需任何硬件进行扩展。图 2.1 系统总体设计AT89S51芯片的40个引脚功能为:VCC:电源电压。GND:接地。RST:复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡放大器的输出。图 2.2 AT89S51引脚配置2.3.2 DC-DC MC34063芯片简介该器件本身包含了DCDC变换器所需要的主要功能的单片控制电路且价格便宜。它由具有温度自动补偿功能的基准电压发生器、比较器、占空比可控的振荡器,RS触发器和大电流输出开关电路等组成。该器件可用于升压变换器、降压变换器、反向器的控制核心,由它构成的DCDC变换器仅用少量的外部元器件。主要应用于以微处理器(MPU)或单片机(MCU)为基础的系统里。MC34063集成电路主要特性:输入电压范围:2、540V。输出电压可调范围:12540V。输出电流可达:1.5A。工作频率:最高可达100kHz。低静态电流。短路电流限制。可实现升压或降压电源变换器。MC34063的基本结构及引脚图功能:1脚:开关管T1集电极引出端;2脚:开关管T1发射极引出端;3脚:定时电容ct接线端;调节ct可使工作频率在100100kHz范围内变化;4脚:电源地;5脚:电压比较器反相输入端,同时也是输出电压取样端;使用时应外接两个精度不低于1的精密电阻;6脚:电源端;7脚:负载峰值电流(Ipk)取样端;6,7脚之间电压超过300mV时,芯片将启动内部过流保护功能;8脚:驱动管T2集电极引出端。2.3.3 USB转串口CP2102芯片简介USB转换口芯片CP2102,UART转USB芯片-CP2102 CP2102是全新的USB转UART的单芯片解决方案。该芯片集成了一个符合USB2.0标准的全速功能控制器、EEPROM、缓冲器、和带有调制解调器接口信号的异步串行数据总线(适用于RS-232协议),同时具有一个集成的内部时钟和USB收发器,无需其他外部USB电路元件。高性能的CP2102与其他型号的同类芯片相比功耗更低、体积更小、集成度更高(无需外接元件)。CP2102是USB转串应用的理想选择。CP2102是美国Silicon公司生产的高集成度USB转UART专用芯片。它用最简单的外部电路、最少的外部器件和最小的电路板面积实现USB2.0到UART的转换。CP2102集成度高,内置USB2.0全速功能控制器、USB收发器、晶体振荡器、EEPROM及异步串行数据总线(UART),支持调制解调器全功能信号,无需任何外部的USB器件。功能强大,采用MLP-28封装,尺寸仅为5mm×5mm,占用空间非常小。与其他USB-UART转接电路的工作原理类似,CP2102通过驱动程序将PC的USB口虚拟成COM口以达到扩展的目的。虚拟COM口(VCP)的器件驱动程序允许一个基于CP2102的器件以PC应用软件的形式作为一个增加的COM口独立于任何现有的硬件。 COM口使用运行在PC上的应用软件以访问一个标准硬件COM口的方式访问基于CP2101的器件,PC与CP2101间的数据传输是通过USB完成的,因此,无需修改现有的软件和硬件就可以通过USB向基于CP2101的器件传输数据。 CP2101的体积虽小但功能非常强大,其主要特性如下:内含USB收发器,无需外接电路器;内含时钟电路,无需外接振荡器;其内部512字节的EEPROM可用于存储产品生产商的ID、产品的ID序列号、电源参数、器件版本号和产品说明;内含上电复位电路;片内电压调节可输出3.3V电压;符合USB2.0规范的要求(12Mb/s);SUSPEND引脚支持USB状态挂起;异步串行数据总线(UART)兼容所有握手和调制解调器接口信号;支持的数据格式为数据位8、停止位1、2和校验位(包括奇校验、偶校验和无校验);波特率范围为300b/s921.6kb/s;内含512字节接收缓冲器和512字节发送缓冲器;支持硬件或X-On/X-Off握手;支持事件状态。2.4 硬件电路设计2.4.1 CP2102电路设计图 2.3 CP2102电路采用CP2102接口应用电路如图 2.3所示。该电路已通过制板和软硬件调试,完全可靠。串口扩展,仅需23只外部去耦电容器,REGIN端需加0.1F与4.7.0F并联的去耦电容。CP2102的供电电源由计算机的USB接口。提供该电路仅使用CP2102的UART总线上TXDRXD 2个引脚,其余悬空。单片机可直接识别CP2102的UART总线上信号,为确保数据收发的稳定性,将RST采用一只10 k电阻上拉至VDD。当CP2102转换器与主机连接后,必须根据操作系统选择相对应的虚拟串行口驱动程序。不必修改设备的应用程序,就像存取一个标准的物理串口一样访问该虚拟串口,端口设备会产生“CP2102USB to UART Bridge Controller(COM×)”的新端口(×随计算机的配置而异),此时说明驱动程序安装成功。实质上,所有针对虚拟串口的数据通信都足以USB总线传输实现的,但在设备上,收发则是RS232数据。 2.4.2 MC34063芯片升压电路设计MC34063组成的升压电路原理如图 2.4Error! Reference source not found.所示,当芯片内开关管导通时,电源经取样电阻Rsc、电感L1、MC34063的1脚和2脚接地,此时电感L1开始存储能量,而由C16对负载提供能量。当芯片内开关管导断开时,电源和电感同时给负载和电容C16提供能量。电感在释放能量期间,由于其两端的电动势极性与电源极性相同,相当于两个电源串联,因而负载上得到的电压高于电源电压。开关管导通与关断的频率称为芯片的工作频率。只要此频率相对负载的时间常数足够高,负载上便可获得连续的直流电压。脚5电压与内部基准电压125V同时送人内部比较器进行电压比较。当脚5的电压值低于内部基准电压(125V)时,比较器输出为跳变电压,开启RS触发器的S脚控制门,RS触发器在内部振荡器的驱动下,Q端为“1”状态(高电平),驱动管T2导通,开关管T1亦导通,使输入电压Ui向输出滤波器电容C16充电以提高U。,达到自动控制U。稳定的作用。当脚5的电压值高于内部基准电压(125V)时,RS触发器的S脚控制门被封锁,Q端为“0”状态(低电平),T2截止,T1亦截止。振荡器的Ipk 输入(脚7)用于监视开关管T1的峰值电流,以控制振荡器的脉冲输出到RS触发器的Q端。脚3外接振荡器所需要的定时电容C10电容值的大小决定振荡器频率的高低,亦决定开关管T1的通断时间。图 2.4 MC34063芯片升压电路当三极管不导通时候,比较器的反相输入端(脚5)通过外接分压电阻R17、R8监视输出电压 。其中,输出电压Uo=1.25(1+ R17/R8),由公式可知输出电压仅与R17、R8数值有关,因5脚是125V为基准电压,恒定不变。若R17、R8阻值固定,U亦稳定。从中我们可以算出,当三极管不导通时候,输出电压是Uo=1.25(1+20/2.2)=12.61V,同理可算当三极管导通时候,Uo=1.25(1+20/12/2.2)=4.96V.2.4.3 MCU控制电路设计单片机控制电路如图 2.5Error! Reference source not found.所示,U2的RST引脚,是复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。通过RC电路实现上电复位,一般上,取R=10K,C=10uf,其原理为当单片机接通电源时,VCC给电容充电,使得RST端输出高电平,当电容充满电后,通过10K电阻放电,电容放电完之后,RST输出低电平,单片机正常工作。时钟振荡器,AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,外接石英晶体(或陶瓷谐振器)及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。现在选择电容为30PF。EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。因而EA端接高电平。单片机输出高电平时候,由于有负载的作用,高电平一般是3.5V, 当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。通过AT89S52控制单片机的下载。根据单片机下载程序所需设置引脚的电平,并综合考虑布线的容易及抗干扰的要求,将控制单片机的P0口接到下载单片机的P0口,控制单片机的P1口接到下载单片机的P1口,控制单片机的P2口接到下载单片机的P2口,控制单片机的P3_2口接到下载单片机的RST口,控制单片机的P3_3口接到下载单片机的ALE口,控制单片机的P3_4口接到下载单片机的P3_3口,控制单片机的P3_5口接到DC-DC芯片电压的控制口。图 2.5 MCU控制电路3 软件方案选择与设计硬件设计是基础,软件设计是灵魂。程序设计正确与否,关系到整个系统能否正常工作。本章将会详细介绍下位机的程序设计、PC机软件设计的算法、实现的方法。在单片机程序设计方面,将会详细简述如何实现芯片识别、程序下载、芯片擦处、芯片加密、程序比较、程序读出的原理以及实现方法。在上位机编程方面,将会详细简述制作的每个步骤,提供给用户一个使用方便,美观的界面。3.1 单片机编程C语言可读性好,代码便于维护,便于开发;汇编语言编写的程序不容易看懂,可维护性不好,但是执行效率高。就目前的情形来说,在硬件条件允许的情况下,程序员选择用高级语言编程,不但提高了编程效率,也提高了代码的可维护性,并且十分有利于编写大型的工程。图 3.1 单片机编程流程图基于USB接口的编程器制作的程序流程图如图 3.1下所示。单片机上电时,首先等待上位机的数据,当单片机接收到数据时,单片机读取所接收到数据的标志位,根据标志位的数据,控制单片机实现程序下载、芯片擦处、程序加密、程序比较、程序读出,单片机运行,单片机复位、停止等功能。3.1.1 编程和校验原理图图 3.2 编程校验原理图3.1.2 FLASH编程器编程与校验波形(并口模式)图 3.3 FLASH编程器编程与校验波形3.1.3 Flash编程真值表 3.1 编程器真值表模式VCCRSTPSENALEEAP2.6P2.7P3.3P3.6P3.7P0地址写代码5VHL12VLHHHHDINA12-8A7-0读代码5VHLHHLLLHHOUTA12-8A7-0写加密15VHL12VHHHHHXXX写加密25VHL12VHHHLLXXX写加密35VHL12VHLHHLXXX读加密位5VHLHHHHLHHXXX芯片擦除5VHL12VHLHLLXXXATMEL ID5VHLHHLLLLL1EH000000H读ID5VHLHHLLLLL51H000100H读ID电压值5VHLHHLLLLL06H001000H注:(1)芯片擦除每一PROG脉冲为400ms800ms。(2)写代码数据每一PROG脉冲为200ns500ns。(3)写加密位每一PROG脉冲为200ns500ns。(4)编程期间P3.0引脚输出RDYBSY信号。(5) “×”不需理会。3.1.4 FLASH编程器编程与校验特性(并口模式)表 3.2 FLASH编程器编程与校验特性符号参数最小值最大值单位VPP编程电压11.512.5VlPP编程电流1.0mA1/tcLcL时钟频率333MHZTAVGL建立地址到PROG变低时间48tcLcLTGHAXPROG变低后地址保持时间48tcLcLTDVGL建立数据到PROG变低时间48tcLcLTGHDXPROG变低后数据保持时间48tcLcLTEHSHENABLE变高到VPP时间48tcLcLTSHGL加VPP到PROG变低时间10STGHSLPROG后保持VPP时间10STGLGHPROG宽度0.21STAVQV地址到数据有效时间48tcLcLTELQVENABLE低到数据有效48tcLcLTEHQZENABLE后数据浮空048tcLcLTGHBLPROG变高到BUSY变低时间1.0sTWC字节写入周期50s3.1.5 读签名字AT89S51/52单片机内有3 个签名字节,地址为000H、100H 和200H。用于声明该器件的厂商和型号等信息,读签名字节的过程和正常校验相仿,只需将P3.6和P3.7保持低电平,返回值意义如下:(000H)=1EH声明产品由ATMEL公司制造。(100H)=51H声明为AT89S51单片机。(100H)=52H声明为AT89S52单片机。(200H)=06H。通过读100H地址,即可识别出51/52单片机。其流程图 3.4(a)如所示。3.1.6 芯片擦除(a)读签名字 (b)芯片擦除图 3.4 擦除芯片/读特征字 在并行编程模式,利用控制信号的正确组合并保持ALEPROG引脚200ns500ns的低电平脉冲宽度即可完成擦除操作。在串行编程模式,芯片擦除操作是利用擦除指令进行。在这种方式,擦除周期是自身定时的,大约为500ms。擦除期间,用串行方式读任何地址数据,返回值均为00H。其流程图 3.5(b)如所示。3.1.7 Flash闪速存储器编程AT89s51/52 单片机内部有4k/8K 字节的可快速编程的Flash 存储阵列。编程方法可通过传统的EPROM 编程器使用高电压(+12V)和协调的控制信号进行编程。AT89S51的代码是逐一字节进行编程的。编程方法:编程前,须按编程模式表 3.1 编程器真值表Error! Reference source not found.所示设置好地址、数据及控制信号,AT89S51编程方法如下:(1)在地址线上加上要编程单元的地址信号。(2)在数据线上加上要写入的数据字节。(3)激活相应的控制信号。(4)将EAVpp端加上+12V编程电压。(5)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALEPROG编程脉冲。每个字节写入周期是自身定时的,大多数约为50us。改变编程单元的地址和写入的数据,重复15步骤,直到全部文件编程结束。其流程图如图 3.5(b) 所示。3.1.8 程序存储器的加密:AT89S51/52可使用对芯片上的3个加密位LB1、LB2、LB3进行编程(P)或不编程(U)来得到如下表所示的功能表 3.3 加密位保护功能表程序加密位LB1 LB2 LB3保护类型1UUU没有程序保护功能2PUU禁止从外部程序存储器中执行MOVC指令读取内部程序存储器的内容,此外复位时EA被锁止,禁止再编程3PPU除上表功能,还禁止程序校验4PPP除以上功能外,同时禁止外部执行注:表中的U-表示未编程,P-表示编程当加密位LB1 被编程时,在复位期间,EA端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机能正常工作,被锁存的EA 电平值必须与该引脚当前的逻辑电平一致。此外加密位只能通过整片擦除的方法清除。其流程图如图 3.5(a)所示。(a) 程序加密 (b) 写程序图 3.5写程序/加密3.1.9 数据查询AT89S51/52 单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数据查询。3.1.10 读取代码如果加密位LB1、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,各加密位也可通过直接回读进行校验。首先在单片机对应的引脚加上相应的控制信号以及地址,通过P0口读回所下载的数据。其实现的流程图如图 3.6所示。图 3.6 读取代码3.1.11 单片机运行与停止若要控控制CPU运行,在单片机上电后,在RST引脚加上一个2个机器高电平脉冲,单片机即可复位,从而使得单片机处于运行的状态。其流程图如图 3.7(a)所示。若要控制单片机的停止工作,方案有两种:(1)CPU断电;(2)在RST引脚加上高电平信号,单片机一直处于复位状态,单片机停止工作。通过比较这两种方案,在实现的难易上,以及对硬件的要求简单考虑,选择了第二种方案。其实现的流程图如图 3.7(b)所示。