基于usb接口的编程器的设计毕业设计说明书(编辑修改稿)内容摘要:

BLE变高到VPP时间48tcLcLTSHGL加VPP到PROG变低时间10μSTGHSLPROG后保持VPP时间10μSTGLGHPROG宽度1μSTAVQV地址到数据有效时间48tcLcLTELQVENABLE低到数据有效48tcLcLTEHQZENABLE后数据浮空048tcLcLTGHBLPROG变高到BUSY变低时间μsTWC字节写入周期50μs 读签名字AT89S51/52单片机内有3 个签名字节,地址为000H、100H 和200H。 用于声明该器件的厂商和型号等信息,读签名字节的过程和正常校验相仿,返回值意义如下:(000H)=1EH声明产品由ATMEL公司制造。 (100H)=51H声明为AT89S51单片机。 (100H)=52H声明为AT89S52单片机。 (200H)=06H。 通过读100H地址,即可识别出51/52单片机。 其流程图 (a)如所示。 芯片擦除(a)读签名字 (b)芯片擦除图 擦除芯片/读特征字 在并行编程模式,利用控制信号的正确组合并保持ALE/PROG引脚200ns-500ns的低电平脉冲宽度即可完成擦除操作。 在串行编程模式,芯片擦除操作是利用擦除指令进行。 在这种方式,擦除周期是自身定时的,大约为500ms。 擦除期间,用串行方式读任何地址数据,返回值均为00H。 其流程图 (b)如所示。 Flash闪速存储器编程AT89s51/52 单片机内部有4k/8K 字节的可快速编程的Flash 存储阵列。 编程方法可通过传统的EPROM 编程器使用高电压(+12V)和协调的控制信号进行编程。 AT89S51的代码是逐一字节进行编程的。 编程方法:编程前,须按编程模式表 编程器真值表Error! Reference source not 、数据及控制信号,AT89S51编程方法如下:(1)在地址线上加上要编程单元的地址信号。 (2)在数据线上加上要写入的数据字节。 (3)激活相应的控制信号。 (4)将EA/Vpp端加上+12V编程电压。 (5)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。 每个字节写入周期是自身定时的,大多数约为50us。 改变编程单元的地址和写入的数据,重复1-5步骤,直到全部文件编程结束。 其流程图如图 (b) 所示。 程序存储器的加密:AT89S51/52可使用对芯片上的3个加密位LBLBLB3进行编程(P)或不编程(U)来得到如下表所示的功能表 加密位保护功能表程序加密位LB1 LB2 LB3保护类型1UUU没有程序保护功能2PUU禁止从外部程序存储器中执行MOVC指令读取内部程序存储器的内容,此外复位时EA被锁止,禁止再编程3PPU除上表功能,还禁止程序校验4PPP除以上功能外,同时禁止外部执行注:表中的U表示未编程,P表示编程当加密位LB1 被编程时,在复位期间,EA端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的初始值是一个随机数,且这个随机数会一直保存到真正复位为止。 为使单片机能正常工作,被锁存的EA 电平值必须与该引脚当前的逻辑电平一致。 此外加密位只能通过整片擦除的方法清除。 其流程图如图 (a)所示。 (a) 程序加密 (b) 写程序图 数据查询AT89S51/52 单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需读取最后写入的那个字节,则读出的数据的最高位()是原来写入字节最高位的反码。 写周期完成后,有效的数据就会出现在所有输出端上,此时,可进入下一个字节的写周期,写周期开始后,可在任意时刻进行数据查询。 读取代码如果加密位LBLB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,各加密位也可通过直接回读进行校验。 首先在单片机对应的引脚加上相应的控制信号以及地址,通过P0口读回所下载的数据。 其实现的流程图如图。 图 读取代码 单片机运行与停止若要控控制CPU运行,在单片机上电后,在RST引脚加上一个2个机器高电平脉冲,单片机即可复位,从而使得单片机处于运行的状态。 其流程图如图 (a)所示。 若要控制单片机的停止工作,方案有两种:(1)CPU断电;(2)在RST引脚加上高电平信号,单片机一直处于复位状态,单片机停止工作。 通过比较这两种方案,在实现的难易上,以及对硬件的要求简单考虑,选择了第二种方案。 其实现的流程图如图 (b)所示。 (a) 控制CPU停止 (b)控制CPU运行图 控制单片机运行/停止 上位机(PC机)编程VB是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。 它简单易学、效率高,且功能强大可以与Windowsr专业开发工具SDK相媲美。 在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,以用动态链接库(DLL)、对象的链接与世隔嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。 随着版本的提高,Visual Basic的功能也越来越强。 ,Visual Basic推出了中文版,与前个版本相比,其功能有了很大提升。 VC++是微软公司开发的一个IDE(集成开发环境),换句话说,就是使用C++的一个开发平台。 VC++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。 Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。 VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC++不是门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种”工业标准”,而VC++则是某种操作系统平台下的”厂商标准”,而”厂商标准”是在遵循”工业标准”的前提下扩展而来的。 上位机编程,综合所学的知识,可以使用VC或者VB编程,由于Visual C++是开发Win32应用程序的可视化编程工具,它为软件开发人员提供完整的编辑,编译,调试工具,以及建立基于Win32 API 基础的MFC类库,从而有效的缩短了Windows应用程序的开发周期,Windows操作系统本身大部分是用C/C++语言写成的,而Visual C++正是使用C/C++语言的Win32应用程序集成开发环境,因此,应该Visual C++编写软件,具有得天独厚的优势。 本系统给用户提供一个良好的人机对话界面PC机软件,提供给用户简单、实用、方便操作的软件,使用微软提供的MFC编程,可以很方便的设计软件的界面,以及程序代码的编写。 使用串口的传输波特率为9600kbps。 用户界面的设计用户界面是一个应用程序最重要的部分,对用户而言,界面就是应用程序,用户感觉不到幕后正在执行的代码。 不论花多少时间和精力来编制和优化代码,应用程序的可用性仍然在很大程度上依赖于界面的好坏。 上位机的软件界面如图。 串行通信的实现利用VC开发通信程序主要有两种方法,一是利用VC本身提供的控件,另一种是利用Windows API应用程序接口,Windows 、利用VC自身提供的控件MSComm,用较少的代码可以实现相同的功能,因此本设计使用此控件来完成串口的通信。 控件MSComm使用方法MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。 MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。 具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 图 上位机的软件界面MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 ①事件驱动方式:事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。 在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect(CD)或 Request To Send (RTS)线上一个字符到达或一个变化发生时。 在这些情况下,可以利用 MSComm控件的 OnComm事件捕获并处理这些通讯事件。 OnComm事件还可以检查和处理通讯错误。 所有通讯事件和通讯错误的列表,参阅 CommEvent属性。 在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。 这种方法的优点是程序响应及时,可靠性高。 每个MSComm 控件对应着一个串行端口。 如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 ②查询方式:查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。 在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。 HEX文件Intel HEX文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。 在Intel HEX文件中,每一行包含一个HEX记录。 这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成。 Intel HEX文件通常用于传输将被存于ROM或者EPROM中的程序和数据。 大多数EPROM编程器或模拟器使用Intel HEX文件。 HEX文件和BIN文件大小有区别 ,HEX文件是用ASCII来表示二进制的数值。 例如一般8BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符39。 339。 和字符39。 F39。 ,每个字符需要一个BYTE,所以HEX文件需要 2倍的空间。 对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。 而对HEX文件而言,你看到的文件 大小并不是实际的数据的大小。 一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。 软件根据上述的方法,打开文件时,将数据记录中的数据域提取出来,以便将数据域下载到单片机。 软件的设计(1)建立项目:打开VC++,建立一个基于对话框的MFC应用程序,文件名:基于USB的89S5X系列单片机下载软件;(2)在项目中插入MSComm控件 选择Project菜单下Add To Project子菜单中的 Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX控件出现在列表框中。 选择Microsoft Communications Control, version ,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。 (如果你在控件列表中看不到Microsoft Communications Control, version ,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX就可以了),这时在ClassView视窗中就可以看到CMSComm类了,并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。 (3)删除对话框原来的控件,用面板添加如41表所示的控件,并按照图。 表 、ID及相关属性控件类型ID号标题属性功能按钮IDC_BUTTON1打开默认打开串口按钮IDC_BUTTON2关闭默认关闭串口按钮IDC_BUTTON3检测芯片默认检测芯片按钮IDC_BUTTON4打开文件默认打开HEX文件按钮IDC_BUTTON5擦除芯片默认擦除芯片按钮IDC_BUTTON6下载程序默认下载程序按钮IDC_BUTTON12读取代码默认读取代码按钮IDC_BUTTON13强制复位默认控制MCU复位按钮IDC_BUTTON14停止读取默认停止读取代码按钮IDC_BUTTON9MCU停止默认控制MCU停止按钮IDOK使用方法默认软件使用方法列表框IDC_COMBO1默认串口选择列表框IDC_COMBO2默认加密位选择编辑框IDC_EDIT1默认CPU类型显示编辑框IDC_ EDIT2默认显示HEX路径编辑框IDC_ EDIT3默认下载的状态显示编辑框IDC_ EDIT4Horizontal Scroll(√)显示打开的HEX文件/显示帮助Mu。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。