• 6.48 MB
  • 2022-04-22 13:33:47 发布

车间计件式生产统计报表系统设计毕业论文.doc

  • 47页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'车间计件式生产统计报表系统的设计毕业论文目录1绪论12设计方案及工作原理22.1工号识别部分22.1.1指纹识别22.1.2数字键盘32.1.3论证结果32.2计件部分32.2.1红外对管32.2.2按键开关42.2.3论证结果42.3上位机下位机通信部分42.3.1无线蓝牙42.3.2串口通信62.3.3论证结果72.4系统总体设计模块图83单元电路工作原理93.1键盘扫描93.2液晶显示103.3串口通信114下位机电路实现134.1硬件仿真134.2系统调试155上位机软件实现165.1软件界面设计原则165.2基于VB的串口通信设计16 5.3软件功能说明176设计结果187总结21致谢22参考文献23附录24附录A:英语科技文献原文及翻译稿24附录B:电路总图35附录C:元器件清单36附录D:源程序37 1绪论随着现代生产的规模化发展,传统人工统计产品的方法难以做到及时准确、自适应能力差、数据采集慢、协同性与集成性差、智能性差、适应性差,为了对自动生产线上的零件或成品进行动态管理和统计,需要安装必要的自动检测与计数装置。一方面可实时显示产品的数量等信息,另一方面可向计算机管理系统提供动态数据,为过程控制提供依据。51单片机优异的性价比使它获得了广大用户的认可,其独特的系统结构、不断增加的片内设备以及强大的指令系统,依然是单片机中的主流。随着技术的发展和应用需求,51单片机片内设备越来越多,51单片机仍然是单片机学习与应用的主要对象。车间计件生产报表是数据的存储、传输、控制、处理过程,因此非常适合单片机控制。VB是VisualBasic简称,是Microsoft公司推出的一种Windows应用程序开发工具。是一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。在VisualBasic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。是当今世界上使用最广泛的编程语言之一,被公认为是编程效率最高的一种编程方法。无论是开发功能强大、性能可靠的商务软件,还是编写能处理实际问题的实用小程序,VB都是最快速、最简便的方法。计算机的串口通信是一种重要的数据交换方法,其广泛应用于计算机外设或工业测控领域。以往,要实现计算机的串口通信需要做大量复杂和艰苦的工作,现在PC计算机与单片机系统串口通信控制,特别是利用VB(或VC)编程语言进行控制界面设计控制对象的操作是单片机系统应用发展的最前端技术,。通常以PC机作为上位机发送指令到单片机,由单片机来完成现场数据采集、电路控制等工作,然后数据返回PC机进行高级处理。此实现了单片机的智能控制,也是单片机多年来得以生存的主要原因。车间计件式生产统计报表设计由51单片机为底层驱动主控制器的计件系统。该系统是以51单片机为核心,通过51单片机与计算机串口通讯、友好对话界面设计来实现对车间计件的远距离实时监控,简化生产管理过程的工作量,提高工作效率,极大调动员工的工作积极性,此系统研究具有重大的实际意义。第44页共44页 2设计方案及工作原理2.1工号识别部分功能:基于工作流管理技术,有序、有效、快速、灵活的管理员工,便于分配工作任务,考核工作情况,实现个人身份认证;2.1.1指纹识别硬件:自动指纹识别模块的基本原理如图1所示:图像采集模块图像处理、识别模块结果输出模块图1自动指纹识别模块图像采集模块负责采集用户的指纹图像,并将其转换为二进制数据输出。目前常用的指纹传感器有光学指纹传感器、固态晶体传感器和超声波传感器。指纹图像的质量将直接影响系统的整体性能。图像处理与识别模块实现了整套指纹识别算法。该模块对输入的指纹图像进行预处理、后处理和特征提取,然后将得到的指纹特征数据(指纹模板)登记到指纹库,或是和已有的指纹模板进行匹配识别。这是系统的核心,常用DSP芯片完成。结果输出模块则根据前面指纹比对的情况,显示比对结果或者直接输出相应的显示控制信号。软件:指纹识别算法流程图如图2所示:图2指纹识别算法流程指纹图像分割的目的是从指纹图像中分离出清晰的指纹区域和有噪声但仍可以恢复的指纹区域,使后续处理能够集中于这些有效区域进行。我们实现了一种指纹图像的多级(三级)分割算法:第一级分割背景,第二级从前景中识别出模糊区域,第三级则从模糊区域中分割掉不可恢复的指纹区域部分。图像增强部分,结合Gabor滤波器善于分离粘连脊线和方向滤波器善于连接断裂脊线的特性,能对低质量指纹图像进行有效增强。同时,将二值化运算提前到图像增强阶段进行,图像增强后即直接输出二值指纹图像,有效减少了总体处理时间。后处理阶段对二值指纹图像进行细化,并修复细化后骨架线上的毛刺、粘连、桥、环等假特征结构。采用一种最近邻点方式抽取纹线骨架,满足了指纹细化的保持性、连接性、中轴性和快速性要求。在特征提取阶段,选择脊线端点和分歧点作为特征点,记录每一特征点的类别、位置和方向信息,从而得到特征点集(特征模板)。通常对同一枚指纹提取2—3个样本,分别对这些样本进行预处理、后处理和特征提取,根据特征点间的相互位置关系判断样本图像是否两两匹配,并由特征点被匹配的次数确定特征点的匹配权值。从样本图像中找出权值大于给定阈值的特征点,以这些特征为模板建立特征模板并存储在数据库中。对待匹配的指纹图像,经预处理、后处理和特征提取后,得到一个特征模板,该模板与指纹数据库中已有的模板进行比较,最终得到识别结果。第44页共44页 2.1.2数字键盘通过键盘键入主键(工号)识别工人信息。采用4*4矩阵键盘,数字键组合代表工人工号,*代表置零,#号代表确认。2.1.3论证结果指纹识别:优点:实现方便、快捷、高效、安全的个人身份认证功能,满足人们易用性、方便性和舒适性的追求,整个模块具有体积小、功耗较低、应用灵活等;,缺点:系统要求硬件数据处理迅速、大容量存储器故导致成本高、软件开发复杂等问题。数字键盘:优点:电路简单,操作简单、方便,最重要的是物美价廉,依然能完成个人身份认证的工作;缺点:安全性、便携性不高。结论:综上所述,工号识别部分采用数字键盘。2.2计件部分功能:根据完成样品与检测样品记录计件数目;2.2.1红外对管硬件:利用对射式红外线计数器设计,指导思想是利用红外发光管发射红外线,红外接收管接收此红外线,并将其放大、整流形成高电平信号。当有物体挡住红外光时,接收管没有接收到红外信号,放大器将输出低电平,同时计数器计数这个低电平脉冲,并经译码驱动电路使数码管显示数值。这样就可统计物件的数量。计数范围可以扩展。红外光电反射式计数器电路原理框图如图6所示。555构成的多谐振荡器产生约330赫兹的方波信号,驱动红外发射管VD1发射红外线脉冲。当有物体阻挡时,红外线脉冲即被反射回来,由VD2接收并转换为电信号,因出现50赫兹灯光干扰,经高通滤波滤除,再经LM324构成的同相放大器放大,再经LM324构成的电压比较器整形为方波信号,包络检波后由LM324构成的电压比较器整形为幅值较大的信号,得到的方波信号经555构成的单稳态触发器延时整形,再经非门后得到的信号作为触发脉冲接到集成同步十进制计数器74LS160的CP端,计数由CD4511驱动的七段LED数码管显示。整个电路均使用5V直流稳压电源为各单元电路供电。图6红外光电反射式计数器电路原理框图红外检测电路:采用脉冲式主动红外线检测电路,由红外发射二极管VD1和红外接收二极管VD2等组成。VD1在多谐振荡器驱动下发射332Hz的方波脉冲调制的红外线脉冲。由于在结构上VD1与VD2平行安装,指向相同,因此VD2并不能直接接收到VD1发出的红外线脉冲。只有当手阻挡时,将VD1发出的红外线脉冲反射回去,VD2才能接收到。采用方波脉冲调制发射的红外信号,有利于提高检测电路的灵敏度和抗干扰能力,并能够降低发射电路的功耗。VD1需要限流电阻。VD2需要负载电阻。峰值检波电路及整形:峰值检波电路由二极管和低通滤波串联而成。整形电路为LM324构成的电压比较器,其作用是将整形电路输出的方波信号变成触发脉冲。峰值检波电路的要点是阻容元件的时间常数远小于输入信号的脉宽。第44页共44页 完成样品与检测样品过程则需要两对红外对射管,例如:两对红外发射二极管分别为VD1、VD3,两对红外接收二极管分别为VD2、VD4,完成样品时,VD2比VD4先接收到红外线脉冲反射;检测样品时,VD4比VD2先接收到红外线脉冲反射。2.2.2按键开关硬件:通过按键接低电平,“0”表示检验到一件物品,“1”表示为检验到物品。2.2.3论证结果红外对管:优点:实现完成样品与检测样品记录计件数目的自动识别,减轻工人工作负担,具有体积小、重量轻、灵敏度高、隐蔽性好等;缺点:探测器在日常工作中,由于长期工作,因此不可避免地受到大气中粉尘、微生物以及雪、霜、雾的作用,长久以往,在探测器的外壁上往往会堆积一层粉尘样的硬壳,在比较潮湿的地方还会长出一层厚厚的藓苔,这些东西会阻碍红外射线的发射和接受,造成误报警,系统成本比较高、硬件电路复杂、调试复杂、反射感应距离有一定限制。键盘按键:优点:硬件电路简单,调试简单、控制方便、成本低;缺点:不能自动识别记录数目,需要工人按键才可完成。结论:综上所述,计件部分采用按键计数。2.3上位机下位机通信部分功能:以计算机为控制中心的数据监控自动化控制系统,使控制系统、监控系统可以充分利用计算机强大的数据处理能力和管理功能,实现对数据传输、处理、存储,从而简化生产管理过程,使企业管理系统更加完善、更加强大、更加完美;2.3.1无线蓝牙蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和高层应用。如图7所示:图7蓝牙技术系统结构第44页共44页 硬件:蓝牙硬件模块由蓝牙协议栈的的无线收发器、基带控制器和链路管理层组成。包括无线跳频(RF)、基带(BB)和链路管理(LM)。无线跳频层通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需要满足的条件。基带负责跳频以及蓝牙数据和信息帧的传输。链路管理负责连接、建立和拆除链路并进行安全控制。蓝牙技术结合了电路交换与分组交换的特点,可以进行异步数据通信。(蓝牙模块芯片)无线蓝牙数据传输流程如图8所示。图8点对点链接流程软件:中间协议层包括逻辑链路控制和适应协议、服务发现协议、串口仿真协议和电话通信协议。逻辑链路控制和适应协议具有完成数据拆装、控制服务质量和复用协议的功能,该层协议是其它各层协议实现的基础。服务发现协议层为上层应用程序提供一种机制来发现网络中可用的服务及其特性。串口仿真协议层具有仿真9针RS232串口的功能。主机控制接口层(HCI)是蓝牙协议中软硬件之间的接口,它提供了一个调用基带、链路管理、状态和控制寄存器等硬件的统一命令接口。蓝牙设备之间进行通信时,HCI以上的协议软件实体在主机上运行,而HCI以下的功能由蓝牙设备来完成,二者之间通过一个对两端透明的传输层进行交互。蓝牙模块的软件驱动技术包括硬件链路管理器驱动程序、主机控制接口(HOI)驱动程序。硬件链路管理器驱动程序与物理固件直接相连,提供USB/RS232或其他接口的驱动功能。链路管理器驱动程序实现了链路管理协议(LMP),负责处理底层链路控制与蓝牙基带接口,该固件支持点对点和点对多点的通信。HOI驱动程序根据HOI命令的各种数据及参数格式,对HOI事件数据包进行处理。HOI为主机提供了访问微处理器、链路管理器以及硬件状态和控制寄存器的各种命令接口。主机通过HOI驱动程序提供一系列命令控制蓝牙接口,蓝牙固件的HOI收到命令后,会产生事件返回给主机,用来指示接口的当前状态变化。主机和HCI之间共有以下3种类型数据。1.Hal命令包。从主机发向蓝牙的HOI。2.Hal事件包。从蓝牙的HOI发向主机。3.HOI数据包。可以从蓝牙的HOI发向主机,也可以从主机发向蓝牙的Hal第44页共44页 。包括扩展同步连接导向数据和非实时的异步无连接数据。图9蓝牙软件程序流程图蓝牙软件使用BlueStack编程,完成初始化、连接等功能。蓝牙软件程序流程如图9所示。计算机与蓝牙设备采用异步串口通信,其由以下4个功能模块组成。1.初始化模块。初始化蓝牙芯片以及各状态变量,包括ΠFO、中断寄存器和传输波特率等。2.事务调度模块。根据蓝牙芯片返回的事件状态参数对系统的事务进行调度,跳转到返回事件处理模块中。3.返回事件处理模块;各个事件处理子程序分别对应不同事件的处。4.中断模块;负责数据包和事件包的接收和发送。2.3.2串口通信硬件:在工业控制系统中,各种数据的采集和执行机构的控制都是由下位机或探测站来完成。在分布式控制系统中大多采用单片机作为下位机来进行数据采集和现场控制。在这些应用中,单片机只是直接面向被控对象底层,而对采集到的数据进行进一步分析和处理的工作是由功能强大的主控PC机来完成的。因此,自动监控系统软件安装在上位机上,而通信程序作为自动监控系统软件的一部分也安装在上位机上,PC机和单片机之间就有着大量的数据交换。通常PC机和单片机之间的通信是通过串行总线RS-232实现的,为免去RS-485与RS-232的转化电路。因此采用一种以MAX232为核心的通信接口电路。该接口电路适用于由一台PC机与多个单片机串行通信的设计,其原理和方法同样适用于PC机与其它单片机之间的串行数据通信。其原理框图见图10。图10单片机与PC机通信原理框图串口通信中,起着重要作用的是RS-232通信接口电路。它是上位机和下位机之间信息传递的枢纽,一切数据的传输必需由它完成,上位机直接利用它的RS-232串行口,为此,采用了RS-232串行通信来接收或上传数据和指令。但RS-232信号的电平和单片机串口信号的电平不一致,必须进行二者之间的电平转换。在此电路中,采用MAX232实现TTL逻辑电平和RS-232电平之间的相互转换。MAX232由单一的+5V电源供电,只需配接5个高精度10μF/50V第44页共44页 的电容即可完成电平转换。转换后的串行信号TXD、RXD直接与PC机的串行口连接。如此设计,既可发挥出PC机强大的计算和显示功能,又可以体现出单片机灵活的控制功能,有利于对现场信号的实时采集、处理和监控。软件:VB提供了串行端口控件Mscomm方便应用程序实现串行通讯,该控件屏蔽了通信过程中的底层操作,程序员应用时只需设置、监视Mscomm控件的属性和事件即可完成对串行口的初始化和数据的输入、输出工作。汇编语言是一种执行效率高、可读性强的语言。为实现通讯正常,PC机与单片机约定如下:波特率:9600bps;信息格式:1个起始位,8位数据位,1个停止位,无奇偶校验位;串行口操作模式:标准异步串行通信,串行口模式1;传送方式:PC机采用查询方式接收数据,单片机采用中断方式接收信息。2.3.3论证结果无线蓝牙:优点:蓝牙工作在全球开放的2.4GHzISM(即工业、科学、医学)频段;使用跳频频谱扩展技术,把频带分成若干个跳频信道(hopchannel),在一次连接中,无线电收发器按一定的码序列不断地从一个信道“跳”到另一个信道;一台蓝牙设备可同时与其它七台蓝牙设备建立连接;数据传输速率可达1Mbit/s;低功耗、通讯安全性好;在有效范围内可越过障碍物进行连接,没有特别的通讯视角和方向要求;支持语音传输;组网简单方便;缺点:蓝牙是一种还没有完全成熟的技术,尽管前景诱人,但还有待于实际使用的严格检验,蓝牙的通讯速率也不是很高,在当今这个数据爆炸的时代,可能也会对它的发展有所影响。目前主流的软件和硬件平台均不提供对蓝牙的支持,这使得蓝牙的应用成本升高,普及难度增大,再加上ISM频段是一个开放频段,可能会受到诸如微波炉、无绳电话、科研仪器、工业或医疗设备的干扰。串口通信:优点:单片机具有体积小、价格低廉、可应用于恶劣工业环境;系统硬件电路简单,通信协议容易掌握,易学实用;缺点:不适用于远距离传输,对电缆的损耗大,故而要对电缆进行日常维护防止事故发生。结论:综上所述,上位机下位机通信部分采用串口通信。2.4系统总体设计模块图图11系统总体设计模块图系统功能简介:1.接入电源,液晶屏显示,第一行显示“JobID:”,第二行显示“Sum:Time:”;第44页共44页 1.第一步的基础上,按动键盘“*”键时:液晶显示屏第一行显示“JobID:_”,下换线闪烁,提示可以输入工号;2.在第二步的基础上,按动键盘按键,输入工号,工人工号随机组合,最后按“#”键确认,进入计件环节。3.在第三步的基础上,如果工人工号输入错误,可直接按“*”键重新输入,再确认;4.在第四步的基础上,输入工号正确时:液晶第一行显示“JobID:*********”,液晶第二行显示“Sum:0000Time:00”;此时开始计件;5.在第五步的基础上,此后按动代表计件的按键时:液晶第二行“Sum:0000”的显示内容加1;Sum增加值随着按键次数增加,同时“Time:00”开始计算按键间隔时间;6.在第六步的基础上,若此后没有按键时:液晶第二行“Sum:****”不再增加,“Time:00”计数;若间断时间超过5s,蜂鸣器开始报警;7.在第七步的基础上,若再次按动计件按键时:报警消除,同时Sum加1;如果没有按动计件按键,报警持续,同时Time记录报警时间;8.在第八步的基础上,当工人完成计件时:再次按“*”键,清除当前数据,把数据传到上位机显示,下位工人可输入工号,开始工作。第44页共44页 3单元电路工作原理3.1键盘扫描本系统采用非编码键盘,CPU必须对所有按键进行监视,一旦发现有键按下,CPU通过程序加以识别,并转入相应键的处理程序实现该键被赋予的功能。硬件结构如图13所示:图13键盘硬件电路1.判断是否有键按下监视键盘是否按下,就是CPU将P1口置“11111110”,如果第一行有键按下,P1口高四位就不会再是原来的“1111”,此时只需检测P1口高位四位的电平变化,就可完成第一行键盘扫描过程。因此,将“0xfe”、“0xfd”、“0xfb”、“0xf7”,赋给P1口,在监视P1口高四位电平变化,就可完成键盘扫描过程。2.按键消抖硬件消抖:使用锁存器或者施密特触发器整波。软件消抖:使用延时程序。在按键时,被安键的簧片总会出现轻微抖动的现象,此抖动时间通常会持续10ms左右,因此CPU在按键抖动期间,扫描键盘必然会得到错误的行值和列值,最好的办法是检测有键按下时,延时20ms在进行键值对比。3.读取按键的行值和列值若CPU发现有键按下,则需获取按键的行值和列值。键值表如表1所示。表1键值对照表(4*4键盘)行值列值按键开关序号行值列值按键开关序号011111107S1011111018S5011110119S901110111OFFS13101111104S2011111015S6101110116S1010110111WARNS14110111101S3110111012S7110110113S1111010111+S1511101110ON/CS4111011010S811101011#S1211100111-S16第一行键盘扫描程序流程如图14所示,如果进行全盘扫描,则需将“0xfe”、“0xfd”、“0xfb”、“0xf7”,赋给P1口,在监视P1口高四位电平变化;如果进行部分扫描(有些行或者列按键不影响液晶显示)时,就可不必每行或者列都检测,简化程序。第44页共44页 图14第一行键盘扫描流程图3.2液晶显示LCD1602显示原理:将液晶分子置于两片导电玻璃之间,靠两个电极间电场驱动,引起液晶分子扭曲向列的电场效应,以控制光源透射或者遮蔽功能,在电源开关之间产生明暗而将影像显示,如图15所示。图15液晶显示原理图本设计中只用液晶的写操作,如图16所示,液晶写数据(rs=1)、写命令(rs=0)操作时序图。图16液晶写操作时序图写命令指令用于液晶功能设置、清屏、显示开关控制、输入方式设置、数据写入地址设置等。第44页共44页 3.3串口通信本设计串口通信采用RS232串口通信标准,不采用TTL逻辑电平,用以提高信号的抗干扰能力和增加传输距离。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。本设计采用异步通信:串口通讯基本方式之一。串口通信过程原理如图17所示。图17串口发送数据、接收数据流程图串口发送数据时:键码值按ASCII码进入SBUF后,开始发送,将SBUF存入左移移位寄存器,按照先发送低位再发送高位进行顺序传送。串口接收数据时:按照先接收低位后接收高位的顺序进入右移移位寄存器,一次接收完后之后,移位寄存器的值存入SBUF,等待CPU使用。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:地线,发送,接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据,通信中两个字符之间的时间间隔是不固定的,而在一个字符内各位的时间间隔是固定的。字符由起始位(startbit)、数据位(databit)、奇偶校验位(parity)和停止位(stopbit)组成。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、起始位、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:1.波特率:对于数据传输,双方必须对数据定时采用使用相同的波特率,此为衡量通信速度的参数。它表示每秒钟传送的bit的个数。我们提到的时钟周期就是指波特率,例如如果协议需要9600波特率,那么时钟是9600Hz。这意味着串口通信在数据线上的采样率为9600Hz。波特率和距离成反比。高波特率常常用于放置很近的仪器间的通信。2.起始位:由一位低电平表示一个字符的开始,接收方可用起始位使自己的接收时钟与数据同步。3.数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。例如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取(串口工作方式选择)。4.停止位:用于表示单个包的最后一位。典型的值为1,1.5和2第44页共44页 位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。5.奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶数个或者奇数个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。串口工作方式有四种,本设计采用串口工作方式1,一帧信息为10位。波特率设置9600。第44页共44页 4下位机电路实现4.1硬件仿真1.硬件仿真电路如图18所示:软件仿真硬件:用到了四行液晶显示,操作相当于两个LCD1602,同时还用到了虚拟终端来观测串口输出数据是否正确,4*4键盘中的等号相当于井号输入确认键,4*4键盘中的除号相当于关机键,4*4键盘中的乘号相当于设备工作异常报警键。多机串口通信过程:若要实现多机实时控制,PC机向单片机发送地址,各单片机检查是否PC机选择的是自己,如果选择自己,就将发送标志位置“1”,匹配下位机发送完数据后,发送标志位清零,这样保证了一段时间间隔内PC机只与一个单片机进行通信,可以防止接收到别的下位机发送的数据造成数据传输错误和混乱,而PC机需在短时间间隔内,不停的循环发送所有下位机的地址,并为保证其PC机采样过快,下位机还没来得及发送,它就选择了别的下位机,解决方法是可使单片机发送数据同时将此单片机地址也一起发送。图18硬件仿真图第44页共44页 2.硬件仿真结果如图19所示:图19硬件仿真图结论:满足系统功能简述中的要求(见第14页),串口工作正常,N位数时,发送N位数据,发送接收数据对照表如表2所示。表2串口发送虚拟终端接收对照表串口发送虚拟终端接收串口发送虚拟终端接收080181282383484585686787888989第44页共44页 4.2系统调试软件仿真调试:本设计采用的波特率与PC机一致,8为数据位,没有奇偶校验位,1位停止位。1.软件仿真时,为了观察发送数据情况,需将发送标志位置“1”,烧录程序时,再将其置为“0”。2.如果开始时,虚拟终端没法应,首先检查波特率、传输数据格式设置。如图20所示,进行虚拟终端设置,然后在仿真软件运行时,左键虚拟终端的“VirtualTerminal”,弹出“VirtualTerminal”显示界面,左键勾选“HexDisplayMode”设置虚拟终端结果显示模式即可。图20VirtualTerminal属性设置硬件调试:1.液晶不显示问题:由于液晶背光调节电阻设置不当,调节其滑动变阻器即可。2.串口工作调试:硬件搭建好后,先检查串口接地、发送、接收接口电路;使用现成的串口测试软件,测试串口发送数据是否正确;最后在用VB编写上位机软件,进行调试。结论:1.打开串口时,如果上位机发送内容不为单片机地址则下位机不发送数据,接收区不显示任何数据;2.打开串口时,如果上位机发送内容为单片机地址则下位机发送数据;3.在第二部的基础上,按键加时,发送数据在原来显示数据基础上加“1”;4.在第二部的基础上,按键减时,发送数据在原来显示数据基础上减“1”;第44页共44页 5上位机软件实现5.1软件界面设计原则为了保证人机界面高效和易学易用,通常遵循以下四条原则:1.兼容性:即软件界面设计与用户的期望之间应达到匹配。包括用户兼容性、任务兼容性、产品兼容性和操作流程兼容性等。2.一致性:指软件界面的各同类界面(如对话框)的组成要素和具有相似性;3.简明性:指界面结构简洁明了,便于学习和操作;4.健全性:指界面须具有一定容错性(如提供可逆操作)和防护性。上位机的车间计件报表软件界面如图21所示(上位机软件开发由VB编程实现)。图21上位机的车间计件报表软件界面5.2基于VB的串口通信设计计算机串口通信技术在工程领域一直有着不可替代的作用,诸如仪器仪表都需要用串口并口进行数据采集与行为控制。MicrosoftCommunicationsControl(MSComm)是微软提供的简化Windows下串行通信编程的ActiveX控件,其实际上是WindowsAPI函数的有机集成,通过对此控件的属性和事件进行编程,我们即可发送和接收数据。5.3软件功能说明考虑到工作人员基本情况中的主键与端口号是配对的,所以本设计只完成了正确端口号与匹配下位机实时通信时的情况(多机通信可以通过判断选择地址的数值,改变工作人员基本情况以及工作情况中的内容)。1.由于本设计只制作了单个下位机,为免除麻烦提前将此下位机对应的工作人员基本情况、工作情况内容固化好,并且此内容是不能更改的;2.选择地址实为选择上位机与哪个下位机通信,由于制作了一个下位机,所以认为选择地址为默认的“0”时,才开始通信,故在输入不为“0”时,点击“开始”进行检测,弹出输入错误对话框,提示用户;3.当输入“选择地址”正确时,下位机传送数据给上位机,如果发送工件数目则在“实际完成”中显示并且认为设备工作正常,设备工作情况中的工作正常绿灯亮工作异常不亮;如果发送报警信号则设备工作异常,设备工作情况中的工作正常不亮工作异常红灯亮,此时完成任务仍显示设备异常前最后发送的工件数目;4.软件的菜单项设计如图22所示:此图为点击文件菜单项与点击帮助菜单项显示的上位机界面。如果打开记事本,操作员可手动输入记录的备注等情况;若点击保存则在"c:report.txt"第44页共44页 ,将工号、工作任务、姓名、实际完成及内容保存,并且每点击一次,记录就增多一条;若点击退出,显示关机动画;若点击帮助,显示帮助对话框界面。图22文件菜单项第44页共44页 6设计结果下位机设计结果(如图23,,24所示):图23下位机工作于设备图24下位机工作于设备正常时第44页共44页 上位机设计结果(如图25、26、27所示)图25上位机工作正常图26保存数据提示界面第44页共44页 图27发送报警信号第44页共44页 7总结本设计总体满足系统功能简介(见第14页)。本设计的优点:1.完成点对点实时短距离通信,可以保存、处理工人工作数据以及实时监测设备工作情况,使生产车间的效率和安全有所提高;2.上位机界面友好,简单易学,发送接收数据简单;3.电路简单,成本低,工作稳定,无误差出现。本设计的缺点:1.由于工件加减需手动完成,故工人的工作量依然很大;2.由于利用串口通信,故需要传输线,造成车间布线复杂,而且为使电路简单采用的MAX232直接与PC机串口相连,使得接口的信号电平值较高,易损坏接口电路的芯片,传输速率较低,接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱,传输距离受限。本设计的改进:1.可以做无线的数据传输系统;2.将工件加减按键换成红外对射管,自动检测工件数目;3.上位机循环发送需检测的下位机地址,下位机将数据地址信息传送上位机。第44页共44页 致谢··············第44页共44页 参考文献[1]白鹏,莫卫东.VB6.0高级编程技巧[M].西安:西安交通大学出版社,2002.[2]陈伟元,苏涛.单芯片微小型指纹识别系统设计与实现[J].计算机工程与应用,2010,46(25):61~63.[3]方旭明,何蓉.短距离无线与移动通信网络[M].北京:人民邮电出版社,2004.[4]范逸之,陈立元.VisualBasic与RS-232串行通讯控制[M].北京:清华大学出版社,2002.[5]龚沛曾,杨志强,陆慰民.VisualBasic程序设计教程.第三版[M].北京:高等教育出版社,2007.[6]胡小虹,李见为,刘元兵.基于DSP的指纹识别模块设计与实现[J].重庆大学学报,2004,27(9):26~28.[7]纪红.红外技术基础与应用[M].北京:科学出版社,1993.[8]KlausFinkenzeller.射频识别RFID技术[M].北京:电子工业出版社,2001.[9]李肇庆,韩涛.串行端口技术[M].北京:国防工业出版社,2006.[10]李江全,张丽,岑红蕾.VisualBasic串口通信测控应用技术实战详解[M].北京:人民邮电出社,2007.[11]李建忠.单片机原理及应用[M].西安:西安电子科技大学出版社,2002.[12]李朝青.PC机与单片机与DSP数据通信技术选编1[M].北京:北京航空航天大学出版社,2002.[13]林卓然.VisualBasic程序设计教程.第二版[M].北京:电子工业出版社,2007.[14]刘冬生,邹雪城.高频RFID读写器射频模拟前端的实现[J].半导体技术,2006,31(9):669-672.[15]王建校,杨建国.51系列单片机及C51程序设计[M].北京:科学出版社,2001.[16]萧秋水,文娟.Windows网络编程之VB篇[M].北京:清华大学出版社,2002.[17]徐建军,关宇,季晓衡.MCS-51单片机应用及接口技术.第一版[M].北京:人民邮电出版社,2003.第44页共44页 附录附录A:英语科技文献原文及翻译稿英文科技文献原文:TheGeneralSituationofAT89C51Chapter1TheapplicationofAT89C51Microcontrollersareusedinamultitudeofcommercialapplicationssuchasmodems,motor-controlsystems,airconditionercontrolsystems,automotiveengineandamongothers.Thehighprocessingspeedandenhancedperipheralsetofthesemicrocontrollersmakethemsuitableforsuchhigh-speedevent-basedapplications.However,thesecriticalapplicationdomainsalsorequirethatthesemicrocontrollersarehighlyreliable.Thehighreliabilityandlowmarketriskscanbeensuredbyarobusttestingprocessandapropertoolsenvironmentforthevalidationofthesemicrocontrollersbothatthecomponentandatthesystemlevel.IntelPlatformEngineeringdepartmentdevelopedanobject-orientedmulti-threadedtestenvironmentforthevalidationofitsAT89C51automotivemicrocontrollers.ThegoalsofthisenvironmentwasnotonlytoprovidearobusttestingenvironmentfortheAT89C51automotivemicrocontrollers,buttodevelopanenvironmentwhichcanbeeasilyextendedandreusedforthevalidationofseveralotherfuturemicrocontrollers.TheenvironmentwasdevelopedinconjunctionwithMicrosoftFoundationClasses(AT89C51).Thepaperdescribesthedesignandmechanismofthistestenvironment,itsinteractionswithvarioushardware/softwareenvironmentalcomponents,andhowtouseAT89C51.1.1IntroductionThe8-bitAT89C51CHMOSmicrocontrollersaredesignedtohandlehigh-speedcalculationsandfastinput/outputoperations.MCS51microcontrollersaretypicallyusedforhigh-speedeventcontrolsystems.Commercialapplicationsincludemodems,motor-controlsystems,printers,photocopiers,airconditionercontrolsystems,diskdrives,andmedicalinstruments.TheautomotiveindustryuseMCS51microcontrollersinengine-controlsystems,airbags,suspensionsystems,andantilockbrakingsystems(ABS).TheAT89C51isespeciallywellsuitedtoapplicationsthatbenefitfromitsprocessingspeedandenhancedon-chipperipheralfunctionsset,suchasautomotivepower-traincontrol,vehicledynamicsuspension,antilockbraking,andstabilitycontrolapplications.Becauseofthesecriticalapplications,themarketrequiresareliablecost-effectivecontrollerwithalowinterruptlatencyresponse,abilitytoservicethehighnumberoftimeandeventdrivenintegratedperipheralsneededinrealtimeapplications,andaCPUwithaboveaverageprocessingpowerinasinglepackage.Thefinancialandlegalriskofhavingdevicesthatoperateunpredictablyisveryhigh.Onceinthemarket,particularlyinmissioncriticalapplicationssuchasanautopilotoranti-lockbrakingsystem,mistakesarefinanciallyprohibitive.Redesigncostscanrunashighasa$500K,muchmoreifthefixmeans2backannotatingitacrossaproductfamilythatsharethesamecoreand/orperipheraldesignflaw.Inaddition,fieldreplacementsofcomponentsisextremelyexpensive,asthedevicesaretypicallysealedinmoduleswithatotalvalueseveraltimesthatofthecomponent.Tomitigatetheseproblems,itisessentialthatcomprehensivetestingofthecontrollersbecarriedoutatboththecomponentlevelandsystemlevelunderworstcaseenvironmentalandvoltageconditions.Thiscompleteandthoroughvalidationnecessitatesnotonlyawell-definedprocessbutalsoaproperenvironmentandtoolstofacilitateandexecutethemissionsuccessfully.IntelChandlerPlatformEngineeringgroupprovidespostsiliconsystemvalidation(SV)ofvariousmicro-controllersandprocessors.Thesystemvalidationprocesscanbebrokenintothreemajorparts.Thetypeofthedeviceanditsapplicationrequirementsdeterminewhichtypesoftestingareperformedonthedevice.第44页共44页 1.2TheAT89C51providesthefollowingstandardfeatures:4KbytesofFlash,128bytesofRAM,32I/Olines,two16-bittimer/counters,afivevectortwo-levelinterruptarchitecture,afulldupleserialport,on-chiposcillatorandclockcircuitry.Inaddition,theAT89C51isdesignedwithstaticlogicforoperationdowntozerofrequencyandsupportstwosoftwareselectablepowersavingmodes.TheIdleModestopstheCPUwhileallowingtheRAM,timer/counters,serialportandinterruptsys-temtocontinuefunctioning.ThePower-downModesavestheRAMcontentsbutfreezestheoscillatordisablingallotherchipfunctionsuntilthenexthardwarereset.Figure1-2-1BlockDiagram1-3PinDescriptionVCCSupplyvoltage.GNDGround.Port0:Port0isan8-bitopen-drainbi-directionalI/Oport.Asanoutputport,eachpincansinkeightTTLinputs.When1sarewrittentoport0pins,thepinscanbeusedashighimpedanceinputs.Port0mayalsobeconfiguredtobethemultiplexedloworderaddress/databusduringaccessestoexternalprogramanddatamemory.InthismodeP0hasinternalpullups.Port0alsoreceivesthecodebytesduringFlashprogramming,andoutputsthecodebytesduringprogramverification.Externalpullupsarerequiredduringprogramverification.Port1:Port1isan8-bitbi-directionalI/Oportwithinternalpullups.ThePort1outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort1pinstheyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port1pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseoftheinternalpullups.Port1alsoreceivesthelow-orderaddressbytesduringFlashprogrammingandverification.Port2:Port2isan8-bitbi-directionalI/Oportwithinternalpullups.ThePort2outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort2pinstheyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port2pinsthatareexternallybeingpulledlowwillsourcecurrent第44页共44页 (IIL)becauseoftheinternalpullups.Port2emitsthehigh-orderaddressbyteduringfetchesfromexternalprogrammemoryandduringaccessestoPort2pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseoftheinternalpullups.Port2emitsthehigh-orderaddressbyteduringfetchesfromexternalprogrammemoryandduringaccessestoexternaldatamemorythatuse16-bitaddresses(MOVX@DPTR).Inthisapplication,itusesstronginternalpull-upswhenemitting1s.Duringaccessestoexternaldatamemorythatuse8-bitaddresses(MOVX@RI),Port2emitsthecontentsoftheP2SpecialFunctionRegister.Port2alsoreceivesthehigh-orderaddressbitsandsomecontrolsignalsduringFlashprogrammingandverification.Port3:Port3isan8-bitbi-directionalI/Oportwithinternalpullups.ThePort3outputbufferscansink/sourcefourTTLinputs.When1sarewrittentoPort3pinstheyarepulledhighbytheinternalpullupsandcanbeusedasinputs.Asinputs,Port3pinsthatareexternallybeingpulledlowwillsourcecurrent(IIL)becauseofthepullups.Port3alsoservesthefunctionsofvariousspecialfeaturesofttheAT89C51aslistedbelow:RST:Resetinput.Ahighonthispinfortwomachinecycleswhiletheoscillatorisrunningresetsthedevice.ALE/PROG:AddressLatchEnableoutputpulseforlatchingthelowbyteoftheaddressduringaccessestoexternalmemory.Thispinisalsotheprogrampulseinput(PROG)duringFlashprogramming.InnormaloperationALEisemittedataconstantrateof1/6theoscillatorfrequency,andmaybeusedforexternaltimingorclockingpurposes.Note,however,thatoneALEpulseisskippedduringeachaccesstoexternalDataMemory.Ifdesired,ALEoperationcanbedisabledbysettingbit0ofSFRlocation8EH.Withthebitset,ALEisactiveonlyduringaMOVXorMOVCinstruction.Otherwise,thepinisweaklypulledhigh.SettingtheALE-disablebithasnoeffectifthemicrocontrollerisinexternalexecutionmode.PSEN:ProgramStoreEnableisthereadstrobetoexternalprogrammemory.WhentheAT89C51isexecutingcodefromexternalprogrammemory,PSENisactivatedtwiceeachmachinecycle,exceptthattwoPSENactivationsareskippedduringeachaccesstoexternaldatamemory.EA/VPP:ExternalAccessEnable.EAmustbestrappedtoGNDinordertoenablethedevicetofetchcodefromexternalprogrammemorylocationsstartingat0000HuptoFFFFH.Note,however,thatiflockbit1isprogrammed,EAwillbeinternallylatchedonreset.EAshouldbestrappedtoVCCforinternalprogramexecutions.Thispinallreceivesthe12-voltprogrammingenablevoltage(VPP)duringFlashprogramming,forpartsthatrequire12-voltVPP.XTAL1:Inputtotheinvertingoscillatoramplifierandinputtotheinternalclockoperatingcircuit.XTAL2:Outputfromtheinvertingoscillatoramplifier.OscillatorCharacteristicsXTAL1andXTAL2aretheinputandoutput,respectively,ofaninvertingamplifierwhichcanbeconfiguredforuseasanon-chiposcillator,asshowninFigure1.Eitheraquartscrystalorceramicresonatormaybeused.Todrivethedevicefromanexternalclocksource,XTAL2shouldbeleftunconnectedwhileXTAL1isdrivenasshowninFigure2.Therearenorequirementsonthedutycycleoftheexternalclocksignal,sincetheinputtotheinternalclockingcircuitryisthroughadivide-by-twoflip-flop,butminimumandmaximumvoltagehighandlowtimespecificationsmustbeobserved.IdleModeInidlemode,theCPUputsitselftosleepwhilealltheonchipperipheralsremainactive.Themodeisinvokedbysoftware.Thecontentoftheon-chipRAMandallthespecialfunctionsregistersremainunchangedduringthismode.Theidlemodecanbeterminatedbyanyenabledinterruptorbyahardwarereset.Itshouldbenotedthatwhenidleisterminatedbyahardwarereset,thedevicenormallyresumesprogramexecution,fromwhereitleftoff,uptotwomachinecyclesbeforetheinternalresetalgorithmtakescontrol.On-chiphardwareinhibitsaccesstointernalRAMinthisevent,butaccesstotheportpinsisnotinhibited.ToeliminatethepossibilityofanunexpectedwritetoaportpinwhenIdleisterminatedbyreset,theinstructionfollowingtheonethatinvokesIdleshouldnotbeonethatwritestoaportpinortoexternalmemory.第44页共44页 Power-downModeInthepower-downmode,theoscillatorisstopped,andtheinstructionthatinvokespower-downisthelastinstructionexecuted.Theon-chipRAMandSpecialFunctionRegistersretaintheirvaluesuntilthepower-downmodeisterminated.Theonlyexitfrompower-downisahardwarereset.ResetredefinestheSFRbutdoesnotchangetheon-chipRAM.TheresetshouldnotbeactivatedbeforeVCCisrestoredtoitsnormaloperatinglevelandmustbeheldactivelongenoughtoallowtheoscillatortorestartandstabilize.TheAT89C51codememoryarrayisprogrammedbyte-bybyteineitherprogrammingmode.Toprogramanynonblankbyteintheon-chipFlashMemory,theentirememorymustbeerasedusingtheChipEraseMode.2ProgrammingAlgorithmBeforeprogrammingtheAT89C51,theaddress,dataandcontrolsignalsshouldbesetupaccordingtotheFlashprogrammingmodetableandFigure3andFigure4.ToprogramtheAT89C51,takethefollowingsteps.1.Inputthedesiredmemorylocationontheaddresslines.2.Inputtheappropriatedatabyteonthedatalines.3.Activatethecorrectcombinationofcontrolsignals.4.RaiseEA/VPPto12Vforthehigh-voltageprogrammingmode.5.PulseALE/PROGoncetoprogramabyteintheFlasharrayorthelockbits.Thebyte-writecycleisself-timedandtypicallytakesnomorethan1.5ms.Repeatsteps1through5,changingtheaddressanddatafortheentirearrayoruntiltheendoftheobjectfileisreached.DataPolling:TheAT89C51featuresDataPollingtoindicatetheendofawritecycle.Duringawritecycle,anattemptedreadofthelastbytewrittenwillresultinthecomplementofthewrittendatumonPO.7.Oncethewritecyclehasbeencompleted,truedataarevalidonalloutputs,andthenextcyclemaybegin.DataPollingmaybeginanytimeafterawritecyclehasbeeninitiated.2.1Ready/Busy:TheprogressofbyteprogrammingcanalsobemonitoredbytheRDY/BSYoutputsignal.P3.4ispulledlowafterALEgoeshighduringprogrammingtoindicateBUSY.P3.4ispulledhighagainwhenprogrammingisdonetoindicateREADY.ProgramVerify:IflockbitsLB1andLB2havenotbeenprogrammed,theprogrammedcodedatacanbereadbackviatheaddressanddatalinesforverification.Thelockbitscannotbeverifieddirectly.Verificationofthelockbitsisachievedbyobservingthattheirfeaturesareenabled.Figure2-1-1ProgrammingtheFlashFigure2-2-2VerifyingtheFlash第44页共44页 2.2ChipErase:TheentireFlasharrayiserasedelectricallybyusingthepropercombinationofcontrolsignalsandbyholdingALE/PROGlowfor10ms.Thecodearrayiswrittenwithall“1”s.Thechiperaseoperationmustbeexecutedbeforethecodememorycanbere-programmed.2.3ReadingtheSignatureBytes:Thesignaturebytesarereadbythesameprocedureasanormalverificationoflocations030H,031H,and032H,exceptthatP3.6andP3.7mustbepulledtoalogiclow.Thevaluesreturnedareasfollows:(030H)=1EHindicatesmanufacturedbyAtmel(031H)=51Hindicates89C51(032H)=FFHindicates12Vprogramming(032H)=05Hindicates5Vprogramming2.4ProgrammingInterfaceEverycodebyteintheFlasharraycanbewrittenandtheentirearraycanbeerasedbyusingtheappropriatecombinationofcontrolsignals.Thewriteoperationcycleisselftimedandonceinitiated,willautomaticallytimeitselftocompletion.Amicrocomputerinterfaceconvertsinformationbetweentwoforms.Outsidethemicrocomputertheinformationhandledbyanelectronicsystemexistsasaphysicalsignal,butwithintheprogram,itisrepresentednumerically.Thefunctionofanyinterfacecanbebrokendownintoanumberofoperationswhichmodifythedatainsomeway,sothattheprocessofconversionbetweentheexternalandinternalformsiscarriedoutinanumberofsteps.Ananalog-to-digitalconverterisusedtoconvertacontinuouslyvariablesignaltoacorrespondingdigitalformwhichcantakeanyoneofafixednumberofpossiblebinaryvalues.Iftheoutputofthetransducerdoesnotvarycontinuously,noADCisnecessary.Inthiscasethesignalconditioningsectionmustconverttheincomingsignaltoaformwhichcanbeconnecteddirectlytothenextpartoftheinterface,theinput/outputsectionofthemicrocomputeritself.Outputinterfacestakeasimilarform,theobviousdifferencebeingthatheretheflowofinformationisintheoppositedirection;itispassedfromtheprogramtotheoutsideworld.Inthiscasetheprogrammaycallanoutputsubroutinewhichsupervisestheoperationoftheinterfaceandperformsthescalingnumberswhichmaybeneededfordigital-to-analogconverter.Thissubroutinepassesinformationinturntoanoutputdevicewhichproducesacorrespondingelectricalsignal,whichcouldbeconvertedintoanalogformusingaDAC.Finallythesignalisconditionedtoaformsuitableforoperatinganactuator.Thesignalsusedwithinmicrocomputercircuitsarealmostalwaystoosmalltobeconnecteddirectlytotheoutsideworld”andsomekindofinterfacemustbeusedtotranslatethemtoamoreappropriateform.Thedesignofsectionofinterfacecircuitsisoneofthemostimportanttasksfacingtheengineerwishingtoapplymicrocomputers.Wehaveseenthatinmicrocomputersinformationisrepresentedasdiscretepatternsofbits;thisdigitalformismostusefulwhenthemicrocomputeristobeconnectedtoequipmentwhichcanonlybeswitchedonoroff,whereeachbitmightrepresentthestateofaswitchoractuator.Tosolvereal-worldproblems,amicrocontrollermusthavemorethanjustaCPU,aprogram,andadatamemory.Inaddition,itmustcontainhardwareallowingtheCPUtoaccessinformationfromtheoutsideworld.OncetheCPUgathersinformationandprocessesthedata,itmustalsobeabletoeffectchangeonsomeportionoftheoutsideworld.Thesehardwaredevices,calledperipherals,aretheCPU’swindowtotheoutside.ThemostbasicformofperipheralavailableonmicrocontrollersisthegeneralpurposeI70port.EachoftheI/Opinscanbeusedaseitheraninputoranoutput.Thefunctionofeachpinisdeterminedbysettingorclearingcorrespondingbitsinacorrespondingdatadirectionregisterduringtheinitializationstageofaprogram.EachoutputpinmaybedriventoeitheralogiconeoralogiczerobyusingCPUinstructionstopinmaybeviewed(orread.)bytheCPUusingprograminstructions.Sometypeofserialunitisincluded第44页共44页 onmicrocontrollerstoallowtheCPUtocommunicatebit-seriallywithexternaldevices.Usingabitserialformatinsteadofbit-parallelformatrequiresfewerI/Opinstoperformthecommunicationfunction,whichmakesitlessexpensive,butslower.Serialtransmissionsareperformedeithersynchronouslyorasynchronously.翻译:AT89C51的概况1AT89C51应用单片机广泛应用于商业:诸如调制解调器,电动机控制系统,空调控制系统,汽车发动机和其他一些领域。这些单片机的高速处理速度和增强型外围设备集合使得它们适合于这种高速事件应用场合。然而,这些关键应用领域也要求这些单片机高度可靠。健壮的测试环境和用于验证这些无论在元部件层次还是系统级别的单片机的合适的工具环境保证了高可靠性和低市场风险。Intel平台工程部门开发了一种面向对象的用于验证它的AT89C51汽车单片机多线性测试环境。这种环境的目标不仅是为AT89C51汽车单片机提供一种健壮测试环境,而且开发一种能够容易扩展并重复用来验证其他几种将来的单片机。开发的这种环境连接了AT89C51。本文讨论了这种测试环境的设计和原理,它的和各种硬件、软件环境部件的交互性,以及如何使用AT89C51。1.1介绍8位AT89C51CHMOS工艺单片机被设计用于处理高速计算和快速输入/输出。MCS51单片机典型的应用是高速事件控制系统。商业应用包括调制解调器,电动机控制系统,打印机,影印机,空调控制系统,磁盘驱动器和医疗设备。汽车工业把MCS51单片机用于发动机控制系统,悬挂系统和反锁制动系统。AT89C51尤其很好适用于得益于它的处理速度和增强型片上外围功能集,诸如:汽车动力控制,车辆动态悬挂,反锁制动和稳定性控制应用。由于这些决定性应用,市场需要一种可靠的具有低干扰潜伏响应的费用-效能控制器,服务大量时间和事件驱动的在实时应用需要的集成外围的能力,具有在单一程序包中高出平均处理功率的中央处理器。拥有操作不可预测的设备的经济和法律风险是很高的。一旦进入市场,尤其任务决定性应用诸如自动驾驶仪或反锁制动系统,错误将是财力上所禁止的。重新设计的费用可以高达500K美元,如果产品族享有同样内核或外围设计缺陷的话,费用会更高。另外,部件的替代品领域是极其昂贵的,因为设备要用来把模块典型地焊接成一个总体的价值比各个部件高几倍。为了缓和这些问题,在最坏的环境和电压条件下对这些单片机进行无论在部件级别还是系统级别上的综合测试是必需的。IntelChandler平台工程组提供了各种单片机和处理器的系统验证。这种系统的验证处理可以被分解为三个主要部分。系统的类型和应用需求决定了能够在设备上执行的测试类型。1.2AT89C51提供以下标准功能:4k字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。第44页共44页 图1-2-1AT89C51方框图1.3引脚功能说明·Vcc:电源电压·GND:地·P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接受指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。·P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,P1接受低8位地址。·P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位四肢的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据,在访问8位地址的外部数据存储器(例如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程和程序校验时,P2也接收高位地址和其他控制信号。·P3口:P3是一个带有内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。第44页共44页 ·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。·ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是,每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。·PSEN:程序存储允许输出是外部程序存储器的读选通型号,当89C51由外部存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。·EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12v的编程允许电源Vpp,当然这必须是该器件使用12v编程电压Vpp。·XTAL1:振荡器反相放大器及内部时钟发生器的输入端。·XTAL2:振荡器反相放大器的输出端。89C51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图5。外接石英晶体或陶瓷谐振器及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对电容C1、C2虽没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,我们推荐电容使用30Pf±10Pf,而如使用陶瓷谐振器建议选择40Pf±10Pf。用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端XTAL2则悬空。·掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。推出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。89C51的程序存储器阵列是采用字节写入方式编程的,每次写入一个字符,要对整个芯片的EPROM程序存储器写入一个非空字节,必须使用片擦除的方法将整个存储器的内容清楚。2编程方法编程前,设置好地址、数据及控制信号,编程单元的地址加在P1口和P2口的P2.0—P2.3(11位地址范围为0000H——0FFFH),数据从P0口输入,引脚P2.6、P2.7和P3.6、P3.7的电平设置见表6,PSEB为低电平,RST保持高电平,EA/Vpp引脚是编程电源的输入端,按要求加上编程电压,ALE/PROG引脚输入编程脉冲(负脉冲)。编程时,可采用4—20MHz的时钟振荡器,89C51编程方法如下:在地址线上加上要编程单元的地址信号在数据线上加上要写入的数据字节。激活相应的控制信号。在高电压编程方式时,将EA/Vpp端加上+12v编程电压。每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。改变编程单元的地址和写入的数据,重复1—5步骤,知道全部文件编程结束。每个字节写入周期是自身定时的,通常约为1.5ms。·数据查询89C51单片机用数据查询方式来检测一个写周期是否结束,在一个写周期中,如需要读取最后写入的那个字节,则读出的数据的最高位(P0.7)是原来写入字节的最高位的反码。写周期开始后,可在任意时刻进行数据查询。2.1Ready/Busy:字节编程的进度可通过Ready/Busy输出信号检测,编程期间,ALE变为高电平“H”第44页共44页 后P3.4(Ready/Busy)端被拉低,表示正在编程状态(忙状态)。编程完成后,P3.4变为高电平表示准备就绪状态。·程序校验:如果加密位LB、LB2没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,采用下图的电路,程序存储器的地址由P1口和P2口的P2.0—P2.3输入,数据由P0口读出,P206、P2.7和P3.6、P3.7的控制信号见表6,PSEN保持低电平,ALE、EA和RST保持高电平。校验时,P0口必须接上10k左右的上拉电阻。图2-1-1编程电路图2-2-2校验电路2.2芯片擦除:利用控制信号的正确组合(表6)并保持ALE/PROG引脚10ms的低电平脉冲宽度即可将EPROM阵列(4k字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入”1”,这步骤需在编程之前进行。2.3读片内签名字节:89C51单片机内有3个签名字节,地址为030H、031H和032H。于声明该器件的厂商、号和编程电压。读签名字节的过程和单元030H、031H和032H的正常校验相仿,只需要将P3.6和P3.7保持低电平,返回值意义如下:(030H)=1EH声明产品由ATMEL公司制造。(031H)=51H声明为89C51单片机。(032H)=FFH声明为12V编程电压。(032H)=05H声明为5编程电压。2.4编程接口:采用控制信号的正确组合可对Flash第44页共44页 闪速存储阵列中的每一代码字节进行写入和存储器的整片擦除,写操作周期是自身定时的,初始化后它将自动定时到操作完成。微机接口实现两种信息形式的交换。在计算机之外,由电子系统所处理的信息以一种物理信号形式存在,但在程序中,它是用数字表示的。任一接口的功能都可分为以某种形式进行数据库变换的一些操作,所以外部和内部形式的转换是由许多步骤完成的。模拟-数字转换器(ADC)用来将连续变化信号变成相应的数字量,这数字量可是可能性的二进制数值中的一固定值。如果传感器输出不是连续变化的,就不需模拟-数字转换。这种情况下,信号调理单元必须将输入信号变换成为另一信号,也可直接与接口的下一部分,即微计算机本身的输入输出单元相连接。输出接口采用相似的形式,明显的差别在于信息流的方向相反;是从程序到外部世界。这种情况下,程序可称为输出程序,它监督接口的操作并完成数字-模拟转换器(DAC)所需数字的标定。该子程序依次送出信息给输出器件,产生相应的电信号,由DAC转换成模拟形式。最后,信号经调理(通常是放大)以形成适应于执行器操作的形式。在微机电路中使用的信号几乎总是太小而不能被直接地连到“外部世界”,因而必须用某种形式将其转换成更适宜的形式。接口电路部分的设计是使用微机的工程师所面临最重要的任务之一。我们已经了解到微机中,信号以离散的位形式表示。当微机要与只有打开或关闭操作的设备相连时,这种数字形式是最有用的,这里每一位都可表示一开关或执行器的状态。为了解决实际问题,一个单片机不仅包括CPU,程序和数据存储器,另外,它必须含有通过CPU访问外部信息的硬件。一旦CPU收集到数据信息和流程,它必须能够改变外部领域的一部分,这些硬件设备称作外围设备,它们是CPU通往外部的窗口。单片机可利用外围设备中最基本的用于一般用途的I/O接口,每个I/O接口既可作为输入端又可作为输出端,每个I/O接口的功能取决与程序初始化阶段对数据方位寄存器相应位进行置一和清零操作,通过CPU指令对数据寄存器相应位进行置一和清零来置一和清零输出端口,同样输入端口逻辑位也可以通过CPU指令访问。一些类型的串行口单元允许CPU与外部设备进行串口通信,用串口位代替平行位进行通信需要少许的I/O口,这样使通信费用降低但速度也相对慢些。串口传送可以同步也可以异步。第44页共44页 附录B:电路总图PROTEUS仿真电路图第44页共44页 附录C:元器件清单表3元器件清单元器件名称型号数量备注单片机(MCU)AT89C52键盘4*4数字键盘液晶LCD1602串口芯片MAX232电阻10KΩ滑动变阻器10KΩ9针排阻10KΩ晶振11.0592MHz普通电容30pf电解电容1uf电解电容10ufPNP型三极管8805串口蜂鸣器面包板导线1个1个1个1个1个1个1个1个2个5个1个1个1对1公1母1个1个若干第44页共44页 附录D:源程序1.下位机源程序:#include#include#defineucharunsignedchar#defineuintunsignedintucharcodetable2[]="0123456789";uchartemp,num=20,sum=0,TIME,a;unsignedlongf,b,e=4294967295;//2^32=4294967296,e控制加减扫描时间sbiten=P2^2;sbitrw=P2^1;sbitrs=P2^0;sbitbutton=P2^7;sbitbeep=P2^4;voiddelay(uintz)//延迟函数{uchary;while(z--)for(y=0;y<=110;y++);}ucharwait(void){rs=0;rw=1;_nop_();en=1;_nop_();//while(P0&0x80);//在用Proteus仿真时,屏蔽此语句,实际硬件时打开此语句。测P0^7为busy位//用Proteus仿真在调用GotoXY()时,会进入死循环,可能在写该控制字时,该模块没有返回写入完备命令,即P0&0x80==0x80en=0;returnP0;}//向LCD写入命令或数据voidwrite_com(ucharcom)//写指令代码,数据子程序{en=0;rs=0;rw=0;P0=com;delay(5);en=1;delay(5);en=0;wait();}voidwrite_dat(uchardat){en=0;rs=1;rw=0;P0=dat;delay(5);en=1;delay(5);en=0;wait();}voidPrint(uchar*str){while(*str!=""){write_dat(*str);第44页共44页 str++;}}voidinit(){sum=0;en=0;write_com(0x38);delay(5);//8位数据端口,2行显示,5*7点阵write_com(0x0c);delay(5);write_com(0x06);delay(5);write_com(0x01);delay(5);//光标右移,输入十位数字write_com(0x80);delay(5);Print("JobID:");write_com(0x80+0x40);delay(5);Print("Sum:");write_com(0x80+0x40+9);delay(5);Print("Time:");}voidkeyscan()//键盘扫描程序{P1=0xfe;temp=P1&0xf0;while(temp!=0xf0)//789{delay(5);temp=P1&0xf0;while(temp!=0xf0){temp=P1&0xf0;switch(temp){case0xe0:num=1;break;case0xd0:num=2;break;case0xb0:num=3;break;}}}while(temp!=0xf0)//等待按键释放{temp&=0xf0;}P1=0xfd;temp=P1&0xf0;while(temp!=0xf0)//456{delay(5);temp=P1&0xf0;第44页共44页 while(temp!=0xf0){temp=P1&0xf0;switch(temp){case0xe0:num=4;break;case0xd0:num=5;break;case0xb0:num=6;break;}}}while(temp!=0xf0)//等待按键释放{temp&=0xf0;}P1=0xfb;temp=P1&0xf0;while(temp!=0xf0)//123{delay(5);temp=P1&0xf0;while(temp!=0xf0){temp=P1&0xf0;switch(temp){case0xe0:num=7;break;case0xd0:num=8;break;case0xb0:num=9;break;}}}while(temp!=0xf0)//等待按键释放{temp&=0xf0;}P1=0xf7;temp=P1&0xf0;while(temp!=0xf0)//c0ent{delay(5);temp=P1&0xf0;第44页共44页 while(temp!=0xf0){temp=P1&0xf0;switch(temp){case0xe0:num=10;break;case0xd0:num=0;break;case0xb0:num=11;break;}}}while(temp!=0xf0)//等待按键释放{temp&=0xf0;}}voidtimer_init(){EA=1;//开总中断TMOD=0X01;//设置定时器0工作方式TH0=(65535-50000)/256;//高八位装初值TL0=(65535-50000)%256;//高八位装初值ET0=1;TR0=1;}voidmain(){ucharcount=0;timer_init();init:beep=1;TIME=0;TR0=0;init();write_com(0x80+6);while(1){keyscan();if(num!=20){第44页共44页 if(num==10){num=20;count++;write_com(0x0f);while(count>0){keyscan();if(num<10&&num>=0){write_dat(table2[num]);num=20;}elseif(num==10){write_com(0x0c);num=20;write_com(0x01);gotoinit;}elseif(num==11){write_com(0x0c);write_com(0x80+0x40+4);write_dat(table2[sum/1000]);write_dat(table2[sum%1000/100]);write_dat(table2[sum%1000%100/10]);write_dat(table2[sum%10]);write_com(0x80+0x40+7);write_com(0x0c);write_com(0x80+0x40+14);write_dat(table2[TIME/10]);write_dat(table2[TIME%10]);TR0=1;write_com(0x80+0x40+7);while(1){keyscan();if(num==10)gotoinit;write_com(0x80+0x40+14);write_dat(table2[TIME/10]);write_dat(table2[TIME%10]);第44页共44页 TR0=1;write_com(0x80+0x40+7);if(button==0){delay(50);if(button==0){beep=1;TR0=0;TIME=0;TR0=1;write_com(0x0c);write_com(0x80+0x40+4);sum++;write_dat(table2[sum/1000]);write_dat(table2[sum%1000/100]);write_dat(table2[sum%1000%100/10]);write_dat(table2[sum%10]);write_com(0x80+0x40+7);write_com(0x0c);}}}}}}elsenum=20;}}}voidtimer0()interrupt1{TH0=(65535-50000)/256;//高八位装初值TL0=(65535-50000)%256;//高八位装初值a++;if(a==20){a=0;TIME++;if(TIME>=5&&button==1)//输入ID后,5S内没有开始计件,则报警{beep=0;}第44页共44页 }}1.上位机源程序:主界面源程序:OptionExplicitPrivateDeclareFunctionOpenProcessLib"kernel32"_(_ByValdwDesiredAccessAsLong,_ByValbInheritHandleAsLong,_ByValdwProcessIdAsLong_)AsLongPrivateDeclareFunctionCloseHandleLib"kernel32"_(_ByValhObjectAsLong_)AsLongPrivateDeclareFunctionWaitForSingleObjectLib"kernel32"_(_ByValhHandleAsLong,_ByValdwMillisecondsAsLong_)AsLongConstSYNCHRONIZE=&H100000ConstINFINITE=&HFFFFFFFF"调用系统记事本程序PrivateSubCommand2_Click()"开始按钮按下DimDataAsInteger"定义要发送的数据Dimoutdata(0)AsByte"定义发送字节数组IfText5.Text>0Then"端口号不正确时Dialog1.Show"输入错误提示Text4.Text=""EndIfData=Val(Text5.Text)"类型转化outdata(0)=CByte(Data)"数据转化二进制MSComm1.OutBufferCount=0MSComm1.Output=outdata()"动态数组EndSubPrivateSubForm_Load()"窗口初始化MSComm1.CommPort=1MSComm1.Settings="9600,n,8,1"MSComm1.PortOpen=TrueMSComm1.InputMode=comInputModeBinary第44页共44页 MSComm1.RThreshold=1EndSubPrivateSubMSComm1_OnComm()"实现接受功能代码DimindataAsVariantDimbte(0)AsByte"定义接受数组SelectCaseMSComm1.CommEventCasecomEvReceiveindata=MSComm1.InputIfText5.Text=0ThenIfbte(0)<201Then"接收到数据bte(0)=AscB(indata)Text4.Text=bte(0)"数据显示Shape2.FillStyle=1Shape1.FillColor=vbGreenEndIfIfbte(0)=255Then"接收到报警信号Shape1.FillStyle=1Shape2.FillColor=vbRedText4.Text=""EndIfEndIfIfText5.Text>0ThenText4.Text=""EndIfMSComm1.InBufferCount=0EndSelectEndSubPrivateSub保存_Click()Dialog.Show"文件存储路径提示Open"c:report.txt"ForAppendAs#1"存储路径Write#1,"工号:",Text1,"姓名:",Text2,"工作任务:",Text3,"实际完成:",Text4Close#1EndSubPrivateSub打开记事本_Click()DimpIdAsLong"声明pId变量存储ProcessIdDimpHndAsLong"声明pHnd变量存储ProcessHandlepId=Shell("Notepad",vbNormalFocus)"Shell传回ProcessIdpHnd=OpenProcess(SYNCHRONIZE,0,pId)"取得ProcessHandleIfpHnd<>0ThenCallWaitForSingleObject(pHnd,INFINITE)"无限等待,直到程序结束CallCloseHandle(pHnd)EndIf第44页共44页 EndSubPrivateSub关于车间计件报表_Click()Form2.Show"关于对话框EndSubPrivateSub退出_Click()Form1.Show"关机动画UnloadMeEndSub第44页共44页'