• 5.45 MB
  • 2022-04-22 13:43:06 发布

基于单片机的智能时钟设计与实现.doc

  • 81页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于单片机的智能时钟设计与实现摘要电子时钟是采用数字电路实现对时,分,秒计时的装置,广泛的应用在各种工作场所。随着科学技术的发展,多功能的电子时钟更是适应现代化个性生活的一个新需求。本文介绍了基于单片机的智能时钟系统的设计与实现,时钟系统是以STC89C52为核心,运用数字时钟芯片DS1302,液晶显示器LCD1602,语音芯片ISD4004和按键来实现实时显示,整点报时等功能。系统分为实时时钟,LCD显示,整点报时,按键调整四个模块。设计的系统的可以通过按键来调节时间,通过LCD模块能够将实时时间显示出来,并且在整点的时候可以实现语音整点报时功能。可以使人更加直观的了解到电子时钟的工作原理。该数字时钟能长期、连续、可靠、稳定的工作;同时还具有体积小、功耗低等特点,便于携带,使用方便。本报告对系统的工作原理,硬件电路和软件进行了详细的介绍。【关键词】单片机数字时钟液晶显示语音报时-78- ABSTRACTElectronicclockisadevicewhichisusedtocounttime,minuteandsecond,whichiswidelyusedinthepublicplace.Withthedevelopmentofscience,multi-functionelectronicclockisanewdemandtoadapttothemodernpersonalityoflife.Thisarticleintroducedthemulti-purposedigitalclocksystemdesign.ThesystemtakeSTC89C52asacore,makeuseofDS1302clockchip,usethe1602liquid-crystaldisplay,applythevoicechip,coordinatesthepressedkeytorealizethereal-timedisplay.Thesystemisdividedintoreal-timeclock,liquid-crystaldisplay,ontimeclockandpressedkeyfourmodules.Thesystemisdesignedtochangethetimewithpressedkey,meanwhile,theliquid-crystaldisplaytheontimeclockandcanvoicethehouronthehour.Thisarticlecanenablepeopletodirectlyseetheoperatingstateofdigitalclock.Thisdigitalclockprovidethefriendlyusercontactsurface,theoperationsimple,thisdigitalclockcanlong-term,becontinual,reliably,thestablework;Simultaneouslyalsohasthevolumeslightly,thepowerlossislowandsoonthecharacteristic,isadvantageousforcarries,easytooperate.Thereportontheprincipleofthesystem,thehardwarecircuitandthesoftwareareintroduceddetail.【Keywords】Single-chipMicrocomputerDigitalComputerLCDDisplayAudioChimer-78- -78- 前言20世纪末,电子技术获得了飞速发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。目前,单片机正朝着高性能和多品种方向发展的趋势将进一步向CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。数字时钟在单片机模块里比较常见,数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。智能数字时钟是采用数字电路实现对时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头,办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动开起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。-78- 第一章数字时钟概述第一节时钟发展历史及趋势一、发展历史及趋势在长达几千年的时间中我们根本没有方法可以精确的测定时间,在远古时候,人们通过太阳的位置,日晷或沙漏来判断时间。但是随着如今社会的发展,我们只要瞧下时钟就可以读出时间,随着科学技术的发展,我们可以更加精确的方法测出时间。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的功能。随着社会的发展,钟表会变的更加数字化,更加广泛的应用到生活的各方面中,同时也会在以前的基础上增加许多功能,小型化,数字化,集成化,多功能化会成为未来发展的趋势。第二节智能数字时钟简介一、数字时钟系统的基本特点数字时钟系统数字时钟实际上是一个对标准频率进行计数的计数电路.由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的1MHZ时间信号必须做到准确稳定.通常使用石英晶体振荡器电路构成数字时钟。⑴晶体振荡器电路晶体振荡器电路给数字时钟提供一个频率稳定准确的12MHz的方波信号,可保证数字时钟的走时准确及稳定.不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。-78- ⑵时间计数器电路时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器电路构成,秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器。第三节研究的目的及意义本设计主要的目的是基于单片机技术设计具有时间显示,定时设置,声音提示等多功能电子闹钟,提高自己综合运用的实践能力,进一步培养自己的创新意识很创新能力。同时可以了解数字时钟基本的工作原理,设计出功能更加全面的数字时钟来适应时代的需求。第四节研究内容本次设计的主要内容包括:1、在液晶上显示年、月、日、星期、时、分、秒;2、利用按键调整时间;3、自带直流稳压电源;4、实现语音整点报时;5、每次有键按下时,蜂鸣器都可以段“滴”声报警。同时自己根据设计的要求,在原有的基础上增加了测温和温度显示功能。从而使整个设计更加全面,功能更加完善。第五节本章小结本章主要是简述数字时钟发展的历史以及未来发展的趋势,通过对数字时钟发展和基本特点的了解,让我们更加清楚的知道未来对时钟的需求,以及未来时钟发展的趋势。同时进一步了解本次设计的研究目的以及相关内容。-78- 第二章系统方案设计第一节系统设计原理本次设计是基于STC89C52单片机,采用DS1302时钟芯片来实时读取年,月,日,时,分,秒和星期,通过LCD1602液晶显示屏,将所得到的时间显示出来。同时通过按键来实现时间的调整,同时通过DS18B20温度传感器读取相应温度,在液晶屏上显示出来。最后加入整点报时功能,通过语音芯片能够实现整点报时,实现语音播报。第二节时钟系统设计方案选择基于单片机的时钟系统设计方案:方案一:基本门电路搭建,用基本门电路来实现数字时钟,电路结构复杂,故障系数大,不易调试。方案二:单片机编程,用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单,调试也相对方便。与第一种方案比较优点的是非常明显的。我选择了第二种方案。第三节硬件原理框图-78- 硬件原理图的设计决定了一个系统的功能,是设计的基础所在,而一般的设计的目标是:简洁,高效,可靠,优化。好的硬件可以给程序的编写带来极大的优势,同时可以很好的提高信号设计的精度和灵敏度,使整个系统的工作协调有序,从而使整个系统更好的实现功能。对于电子时钟的设计,我采用STC89C52为核心处理器,,用DS1302时钟芯片可以实时读取时间,通过DS18B20测得温度,最后将时间,温度通过LCD1602显示出来,并可以通过语音芯片ISD4004实现整点语音报时功能。根据本次设计的要求,我将其分为不同的功能模块,各个模块之间相互联系,相互协调。通过单片机程序构成统一的整体,其整体电路原理框图如图2.1所示。图2.1硬件原理框图第四节STC89C52单片机简介一、STC89C52单片机简介STC89C52是一种带有8K字节的FLASH存储器的低电压,高性能CMOS,8位微处理器,俗称单片机。该芯片具有优异的性价比,集成度高,体积小,可靠性强,控制功能强等优点,其外形及引脚排列如图2.2所示[14]。-78- 图2.2STC89C52引脚图二、STC89C52单片机主要特性STC89C52主要特性如表2.3。表2.3STC89C52主要特性第五节DS1302时钟芯片简介一、DS1302基本工作原理-78- DS1302是一种高性能,低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式传送多个字节的时钟信号和RAM数据。其外形以及引脚排列如图2.4所示[8]。图2.4DS1302引脚图二、DS1302主要特性DS1302实时时钟可以提供时,分,秒,年,月,日和星期,一个月小和31天时可以自动调整,具有闰年补偿功能,。工作电压宽达到2.5V-5V。采用双电源供电方式(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能够实现数据出现和该数据的时间同时记录,因此广泛的应用于测量系统中。DS1302内部结构图如图2.5所示。图2.5DS1302内部结构-78- 第六节LCD1602液晶屏简介一、LCD1602基本工作原理LCD1602液晶也叫着1602字符型液晶,它是一种专门用来显示字母,数字,符号等的点型液晶模块。它由若干5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间距,每行之间也有间隔,起到了字符间距和行间距的作用。1602LCD是指显示的内容为16X2既可以显示两行,每行16个字符液晶模块(显示字符和数字)。LCD1602的管脚图如图2.6所示[3]。图2.6LCD1602管脚图二、LCD1602主要特性LCD1602可以显示2行16个字符,有8位数据总线D0-D7,和RS,R/W,EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光,该模块也可以只使用D4-D7作为四位数据分两次传送,这样可以节约MCU的IO资源。LCD1602各引脚功能及结构如表2.7所示[15]。-78- 表2.7LCD1602各引脚功能及结构第七节ISD4004语音芯片简介一、ISD4004基本工作原理ISD4004可以实现单片8至16分钟语音录放,内置微控制器串行通信接口,需要3V工作单电源工作,可以进行多段信息处理,工作电流在25-30mA,维持电流为1uA。同时不掉电信息保存100年,采用高质量,自然的语音还原技术。10万次录音周期,自动静噪功能,片内免调整时钟,可选用外部时钟。ISD4004的引脚图如图2.8所示。图2.8ISD4004引脚图-78- 二、ISD4004主要特性ISD4004系列工作电压为3V,单片录放时间8至16分钟,音质好,适用有移动电话以及便携式电子产品中。芯片采用CMOS技术,含有内部振荡器,防混淆滤波器,平滑滤波器,音频放大器,自动静噪器及高密度多电平闪烁存储陈列。芯片设计是基于所有操作必须由微控制器控制,操作命令可通过串行通信接口送入,芯片采用多电平直接模拟量存储技术,每个存储值直接存在片内闪烁存储器中,因此能够十分真实,自然的再现语音,音乐音调和效果声,避免了一般固体录音电路因量化和压缩造成量化噪声和“金属声”。采样频率可为4.0,5.3,6.0,5.0KHz,频率越低,录放时间越长,而音质有所下降,片内信息存于闪存中,可以在断电的情况下保持100年,反复录音10万次。ISD4004内部结构图如图2.9所示[11]。图2.9ISD4004内部结构图第八节DS18B20温度芯片简介一、DS18B20基本工作原理-78- DS18B20具有独特的单线接口仅需一个端口引脚进行通信,每个器件有唯一的64位的序列号存储在内部存储器中,可以进行简单的多点温度测试应用,并不需要外部器件。可通过数据线供电,工作电压在3.3v-5.5v,测量温度范围是55-125摄氏度。温度计分辨率可以被使用者选择为9位,最多在750ms内将温度转换为12位数字,用户可以自定义非易失性温度报警设置。主要应用包括温度控制,工业系统,消费品,温度计或任何热感测温系统。DS18B20的引脚图如图2.10所示[13]。图2.10DS18B20引脚图二、DS18B20主要特性DS18B20采用一线通信接口,必须先完成ROM的设定,主要是提供以下的功能命令,读ROM,ROM的匹配,搜索ROM,跳过ROM,报警检查,这些指令操作作用在一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时总线也可以知道总线上挂多少多少设备。当全部经由一个三态端口或者漏极开路端口与总线连接的时候,控制线需要连接一个弱上拉电阻。微控制器依靠每个器件独有的64位序列号辨认总线上的器件和记录总线上器件地址。DS18B20应用方框图如图2.11所示。-78- 图2.11DS18B20应用图第九节本章小结本章主要是通过查询资料,了解关于单片机的智能电子时钟的设计,通过不同的方案的比较选择,比较各个方案之间的优缺点以及相应的可行性,从而找到最佳的方案,从而满足设计的要求和内容。同时了解系统设计的基本原理,了解所用到芯片的基本工作原理和主要特性,从而让自己更好的去设计硬件电路和更方便的完成程序代码的编写。-78- 第三章系统硬件电路设计本章详细介绍基于单片机智能时钟系统的硬件电路设计,主要包括单片机最小系统电路,电源电路,实时时钟电路,LCD显示电路,测温电路以及语音报时电路。根据硬件连接和各模块的功能要求,提出主要模块的设计方法[7]。第一节最小系统电路最小系统电路主要是由复位电路,时钟电路以及单片机电路组成。复位电路分为上电自动复位和按钮复位两种方式,在程序跑飞的时候可以通过复位电路使程序恢复正常工作状态。工作原理是在加电的瞬间电容通过充电来实现,在充电瞬间,电容C通过电阻R充电,RST端产生正脉冲,用以复位,只要电源VCC的上升时间不超过1ms,就可以实现自动复位,即接通电源完成系统的初始化。在本次设计中采用按键复位电路和上电自动复位电路组合方式复位,复位电路结果原理图如图3.1所示[3]。图3.1复位电路-78- 时钟电路是给单片机提供时钟信号,通常是有两种方式:内部振荡和外部振荡方式。在XTAL1和XTAL2外接晶体振荡器,构成内部振荡形式,由于单片机内部有一个高增益的反相放大器,当外接晶振后,构成了自激振荡,并产生振动时钟脉冲,晶振通常选择6MHz,12MHz,32MHz。本次设计的时钟电路原理图如图3.2所示。我选择了12MHz晶振分别接引脚XTAL1和XTAL2,电容C1和C2都选择30Pf,很好的滤波作用,对振荡器的频率有稳定作用[4]。图3.2时钟电路单片机工作电路如图3.3所示[5]。图3.3单片机工作电路-78- 第二节电源电路电源电路是给单片机稳定的工作电压,单片机的工作电压为稳定5V。而通常我们使用的是220V的交流电,需要通过整流电路,将交流电转化成直流电,同时还要加入滤波电路,滤掉交流分量,最后通过稳压电路,得到想要的电压。本次设计采用5V稳压芯片LM7805,LM7805是线性稳压芯片,具有反应速度快,输出纹波小等优点。电源电路原理图如图3.4所示[8]。图3.4电源电路第三节实时时钟电路-78- 实时时钟电路是通过DS1302时钟芯片实时读取时间,DS1302是带RAM的实时时钟电路,它可以对年,月,日,周,时,分,秒进行计时,具有闰年补偿功能。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302与单片机的连接仅需要三条线,即SCLK、I/O、RST。DS1302与单片机连接的电路原理图如图3.5所示。Vcc2在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。Vcc1在双电源系统中提供主电源,在这种运用方式下Vcc2连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据[9]。图3.5实时时钟电路第四节显示电路在本次设计中采用LCD1602液晶显示模块,将实时的时间信息和温度信息显示出来。LCD1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。LCD1602与单片机相连的原理图如图3.6所示[10]。-78- 图3.6显示电路第五节语音电路本次设计需要通过语音芯片实现整点报时功能,选择了ISD4004语音芯片来实现语音报时功能。通过将ISD4004芯片的SS,MOSI,MISO,SCLK四个管脚和单片机IO管脚相连,实现单片机对语音芯片的控制。ISD4004语音芯片采用CMOS技术,内含晶体振荡器,防混叠滤波器,平滑滤波器,自动静噪,音频功率放大器及高密度多电平闪烁存储陈列等。芯片设计是基于所有操作由微控制器控制,操作命令通过串行通信接口(SPI)送入。语音电路的原理图如图3.7所示[11]。图3.7语音电路-78- 第六节测温电路本次设计中并没有要求实现温度测量,而自己在原有的要求的基础上加入温度测量。温度测量采用的是DS18B20芯片。DS18B20采用一线通信接口,广泛应用于多点温度检测,它有2个电源引脚(VCC和GND),一个信号接口,硬件连接只需要接一个1K上拉电阻。测温电路原理图如图3.8所示[12]。图3.8测温电路第七节本章小结本章主要是了解系统硬件电路的各个功能模块,了解每个功能器件的工作原理,以及和微控制器相连接的原理,从而让自己在设计电路时,更加清楚每个功能模块的作用以及相关原理,更加方便的实现程序的编写。-78- 第四章系统软件设计第一节软件流程图本次设计中,当系统完成初始化后,读取DS1302内部时间数据并显示,然后进行按键操作,对按键请求进行处理,同时一直判断是否达到整点,进行整点语音报时。结束之后程序返回读取DS1302时间数据,形成循环。系统软件流程图如图4.1所示[1]。图4.1软件流程图第二节数字时钟实现流程图本次设计中时钟芯片的数据读取流程图如图4.2所示[2]。-78- 是否调用时间获取子程序DS1302_GetTime否否是调用Read1302函数,读取各个时间参数,并存放于ReadValue变量中对ReadValue数据进行转换,转换成十进制数,并赋给Time指针中。调用年份转换成可供lcd显示的字段子程序DateToStr时间转换成可供lcd显示的字段子程序TimeToStr结束图4.2数字时钟实现流程图通过调用时间获取时间函数,读取实时的年,月,日,时,分,秒和星期,由于DS1302读取的是BCD编码格式的的数据,所以需要通过码制转换,转换成十六进制数据,同时通过LCD1602将实时数据显示出来。-78- 第三节语音芯片操作流程图语音芯片包括放音程序流程图和录音程序流程图,其中放音程序流程图如图4.3所示[2]。需要经过器件延时TPUD(8kHz采样时,约为25ms)才能够开始操作,因此发出上电指令后,需要等待TPUD,才能够发出一条操作指令。执行上电操作命令后,等待上电延时结束,设置放音地址,执行放音命令,就可播放出地址中的内容.-78- 开始执行上电操作命令延迟等待直到上电结束上电延迟时间到?N设置播音地址Y执行放音命令INT有效?NY继续播放下一段?Y等待延时NN执行停止放音命令结束图4.3放音程序流程图图4.4放音程序流程图录音程序流程图如图4.4所示[6]。器件发出上电命令的时候,等待上电延时,延迟结束时候,再次发出上电命令,等待两倍的上电延时后,执行设定录音地址的命令,然后再指定的地址进行录音。-78- 开始执行上电操作命令延迟等待直到上电结束上电延迟时间到?NN再次执行上电操作命令延迟2倍上电时间上电时间到?NN设置录音地址执行录音命令INT有效或录音时间到?NY、Y执行停止录音命令结束图4.4录音程序流程图-78- 第四节本章小结本章主要是了解主要芯片在程序代码编写上的流程图,从而使自己在编程程序代码的时候,严格按照各个芯片的工作流程图来实现代码的编写。同时还包括整个主程序的流程图,明白整个程序编写时候的思路。-78- 第五章系统实现与测试系统测试就是利用完成的硬件电路和基本测试仪器(万用表,示波器等),通过执行开发系统的有关命令或运行适当的测试程序(与硬件有关部分的程序段)检查系统硬件中存在的故障。系统的测试可分为硬件测试和软件测试。第一节系统实现通过前期资料的查询,硬件电路的设计,根据原理图,购买相关的元器件,进行电路的焊接,最终得到的数字时钟系统实物如图5.1所示。本系统主要是由电源电路,数字时钟电路,液晶显示电路,单片机最小系统电路以及语音电路组成。图5.1系统实物图-78- 第二节硬件调试硬件测试主要是通过运用相关测试工具来检测系统硬件故障,比如短路,虚焊,元器件发烫等各种故障情况。运用各种调试工具,查找故障,确保硬件电路的成功,从而可以更好的完成软件调试和测试。一、调试工具测试本设计的各项性能指标,需要不同的仪器设备。根本系统测试指标的具体要求,也要使用精度要求不同的仪器。本设计要求精度较高,需要一些高精度的仪器,以减少测试不准所带来的误差。设计用到的测试内容见表5.1。表5.1测试工具与测试内容编号测试工具工具型号测试内容1KeilC51KeiluVison3程序编译2示波器TektronixTDS5034检测传感器输出波形3万用表DT9205测量电压,电流值,检测是否短路二、调试方法在硬件电路的调试中,主要还是根据相关步骤来完成。本次设计中,在完成原理图的绘制后进行了一下测试:1、电路检查。对照原理图,直至确认无误后才进行焊接。2、集齐元器件,焊接电路。电路中所用到的元器件比较多,集齐所有的元器件,焊接的时候合理布局,同时避免不要出现电气故障和虚焊的情况。3、各个功能模块测试。硬件原理图包括单片机最小系统,显示电路,数字时钟电路,语音电路,焊接完成后用万用表,示波器测试各个模块。系统硬件测试的实物图如图5.2和图5.3。-78- 图5.2硬件测试图图5.3系统测试图三、故障处理-78- 在整个硬件系统的测试中存在许多问题,但是自己还是在不断的查询资料和在同学的帮助下顺利的解决了所有的故障。在本设计中主要碰到了一下几个故障:1、短路。在这个硬件电路中出现最多的情况就是短路,而我自己也是在这次设计中碰到了,通过上电后发现芯片发烫十分厉害,然后用万用表一段段电路进行查找,找出了短路的原因,从而进行修改。2、器件原理不熟悉。对于某些器件,其工作原理不是很熟,内部结构不了解,从而犯了很多错误。例如对于六脚自锁开关的不熟悉,每次焊接的时候都存在很大问题,开关并没有起到自锁的作用。后来通过用万用表测自锁开关的各个管脚,才能够顺利的完成焊接。3、布局不合理,接线错误。由于并没有采用PCB制板,而是使用万用板自己进行布局,焊接,由于没有整个合理的规划,从而使整个布局十分凌乱。同时因为布局的混乱,让某些信号线没有接到对应的引脚上,从而使自己在软件调试上遇到了很大的困难。综合以上所遇到的各种故障,自己耐心的去寻找问题,运用各种测试工具,顺利的解决了所有的问题,保障了硬件的可靠性。第三节软件调试单片机部分调试工作的完成主要应用KeiluVision3软件来完成,这一部分工作首先将系统中的各个模块——计算程序中的显示部分程序调试好,不断调试,不断修改直到正确为止。KeiluVision3软件是一种非常实用的多窗口编辑、调试软件[2]。在各个硬件模块焊接成功的基础上,下载程序进行软件的测试。一、故障处理单片机软件调试部分主要是通过将各个模块程序下载到单片机中,进行各模块功能检测,从而可以更好的去完成整体的系统的测试,在软件的测试中同样存在着许多问题。1、LCD不能够正常显示。在确定硬件电路无误后,液晶还是不能够正常显示,原因出现在程序中,后来通过不断的修改查询,发现是LCD初始化函数出了问题,进行修改后可以正常显示。2、DS1302掉电后数据没有保存-78- 。这个问题一直在困扰着自己,尝试在多种方法还是没有能够妥善的解决,加入了备用电源后,情况有所改观,但是偶尔还是会出现芯片发烫的现象。3、语音报时不准。语音在整点报时中存在很大的问题,音频存储地址分配问题,地址分配不够准确,同时还有数据存储的类型不对,都给系统软件调试造成了很大的困难。具体的调试图如图5.4和图5.5所示[16]。图5.4液晶测试图图5.5语音测试图二、现象分析-78- 通过单片机对各个功能模块进行软件调试,调试成功后,就可以进行整个系统功能程序的编写,从而能够更好的完成系统设计的要求。通过程序的编写,本次设计能够顺利的完成系统设计的要求。当操作各个按键之后,就会出现对年,月,日,时,分,秒,星期的加减操作,同时还伴有蜂鸣器“滴”的声音。而在进行按键设置的时候,当达到设定的整点时间时,语音电路就会播报出整点时间,进行整点报时。同时通过液晶LCD1602,将实时时钟的信息显示出来。同时在原有的基础上,还加入了了温度显示功能。通过DS18B20测取当前温度,通过液晶将实时温度显示出来。系统最终测试图如图5.6所示[16]。图5.6系统测试效果图第四节本章小结本章主要是进行系统软硬件测试,-78- 在系统设计制作完成后的验证过程,也是很重要的一个部分。在测试过程中发现系统存在的问题和漏洞。程序方面,也在调试的过程中及时做了修改。在语音模块程序中,没能得到预期的结果。后来经过一步一步的修改,最终实现了语音报时。通过测试的整个过程,对系统的实用性有了更好的了解。让自己可以更好的了解电子时钟工作的原理。-78- 结论在前期查询数字时钟速资料后,考虑到自身实际能力,选择基于单片机STC89C52作为主要模块设计的智能数字时钟系统,完成了硬件原理图的设计,制作的过程远比我们原先想象的那么简单,整个系统是在不断的调试中得到完善的,刚开始制作的整个系统不能工作,于是我们就开始用万用表查电源查线路,但这些都没问题,后来发现在电路焊接过程中出现了虚焊,导致整个电路不能按照理想设定的模式运行。本设计特点在于实现了智能数字时钟系统和语音整点报时,由于之前没有接触过语音芯片,因此在设计前期很迷茫,后来在查阅相关资料以后,发现语音芯片的操作并没有想象的困难。智能数字时钟的制作让我学会了怎样去设计一个系统,对一个系统的基本架构有了一定的认识,在通过对数字时钟电路的设计也让我对时钟芯片的基本知识有了新的认识,知道了时钟芯片的原理掌握了时钟芯片程序的编写,对LCD现实模块的使用也让我对LCD有了新的认识,通过对步语音电路的设计也让我认识到语音录放音的原理。总之,这次毕业设计让我收获了很多也为我以后的工作奠定了一定的基础。同时在原有的题目基础上,加入了一点点创新,就是加入了温度测量部分,从而使整个数字时钟更加完美。通过本次设计,学到了硬件方面的很多知识,熟悉了一些常用软件的使用方法,如Altiumdesigner以及KeiluVision4开发环境,使自己的实践能力得到提高。但是也发现自身有很多不足的地方,学习中基础不扎实,对硬件方面了解太少,软件程序虽然简单,但对芯片的配置,基本函数调用,还是比较吃力。这在以后的实践当中会注重自己的不断进步。总的来说,这次毕业设计,是对自已各方面能力运用的一个好的机会。通过老师和同学的讲解,不断的学习,使自身理论水平和设计能力有了提高,实践方面,在以后的继续学习中会更加注重这方面的培养。-78- 致谢毕业设计完成了,在这个过程中我学到了很多东西。首先我要感谢我的导师蔡林沁老师,他在我完成毕业设计的过程中,给予了我很大的帮助。在论文开始的初期,我对于论文的结构以及文献选取等方面都有很多问题,同时对自己的毕业设计给出了许多指导。在毕业设计中期,自己也是及时将自己的问题反映给老师,自己的一些想法及时和老师沟通交流,而蔡老师是十分耐心的为自己解决,给出了许多指导性的意见。在论文的修改中,也是不断帮自己修改论文,包括论文的格式,语句,以及整体布局的构思等等,非常感谢蔡老师的帮助和指导。同时还要感谢自己的同学和研究生师兄师姐,在毕业设计中遇到的问题也及时的向自己的同学,师兄,师姐咨询,通过他们的建议,及时的去发现问题,解决问题。由于本人自身在程序上的弱势,所以在一定程度上要不断的请教自己同学和师兄师姐,通过他们的指导,让自己可以尽快的明白,熟悉这些程序代码的含义,从而让自己在解决后续问题上变得更加轻松自如。十分感谢自己的同学和师兄师姐。要对所有授课老师表示深深地感谢!正是他们的教导,才能使我的知识得以丰富,使我的视野得以扩宽,使我提高了自身解决问题的能力,最重要的是使我所学理论与实践相结合,让我真正独立的完成课题,为以后如何应对新的内容打下基础。最后,谨向评审本论文的各位老师和答辩委员会的各位专家,老师致以最诚挚的谢意-78- 参考文献[1]谭浩强.C语言程序设计(第三版).北京:清华大学出版社,2002[2]郭天祥.新概念51单片机C语言教程.北京:电子工业出版社,2009[3]张毅刚.单片机原理及应用.北京:高等教育出版社,2010.5[4]杨振江,等.单片机原理与实践指导.北京:中国电力出版社,2008.[5]杨振江,等.流行单片机实用子程序及应用实例[M].西安:西安电子科技大学出版社.2002,7.[6]刘全忠.汇编语言实用程序.天津:天津大学出版社,1991.6[7]关德新,冯文全.单片机外围器件实用手册-电源器件分册[M].北京:北京航空航天大学出版社,1998.[8]潘琢金,施国君.C8051Fxxx高速SOC单片机原理及应用[M].北京:2002.P31-41[9]李朝青.PC机与单片机数据传输技术.北京:北京航空航天大学出版社,1998.[10]江思敏.Protel电路设计教程.北京清华大学出版社,2002[11]李朝青.单片机&DSP外围数字IC技术手册.北京:北京航空航天大学出版社,2003[12]马忠梅.单片机的C语言应用程序设计.北京:北京航空航天大学出版社,1998[13]徐爱钧.单片机高级语言C51应用程序设计.北京:电子工业出版社,1998[14]孙育才.MCS-51系列单片微型计算机及其应用(第三版).南京:东南大学出版社,1997[15]刘畅生,张耀进,宣宗强,于建国.新型集成电路简明手册及典型应用(上)[M].西安:西安电子科技大学出版社,2005.1[16]电子爱好者论坛.http://www.lx-e.uni.cc/index.php.-78- 附录一、英文原文:ApplyingWeb-basedNetworkingProtocolsandSoftwareArchitecturesforprovidingadaptivity,personalization,andremotizationfeaturestoIndustrialHumanMachineInterfaceApplicationsAlessandroBozzonDesignoftheserverMyHMIarchitecture,theserverassumestheroleofbrokerbetweentheHMIinterfacesandotherserversthatcommunicateonTCP/IPnetworks,andfieldbusesconnectingheterogeneousdevices,possiblycommunicatingthroughproprietaryprotocols.Theservermanagestheconnectiontothefield(viaanOPCservermoduleorsimilarinterfaces)andbuffersthefielddata(inadataservermodule)tobedeliveredtotheclientsontheTCP/IPconnection.Clientscanbedeployedintwoconfigurations:locallyattheserver’snode(thusofferinganintegratedterminalinterface)orremotelyonaseparateterminalconnectedtotheserverbymeansofaTCP/IPnetwork.Theservermanagesfourtypesofclientrequests:initializationrequests,newpagerequests,datarefreshrequests,andevent-triggeredexecutions.Initializationandnewpagerequestsmayrequirethecomputationofserver-sidepersonalizationruleswhichareprocessedbytheserverbasedontheidentityoftherequestingterminalanduser;pagedatarefreshrequestsinvolveonlytheshippingofrawdatatotheclientandareservedfaster.AsdepictedinFigure2,theserveridentifiestheboundarybetweentwomajor-78- classesofcomponents:ononesidethereisthecontrolledsystem,composedbydifferentdevices,communicatingboththroughindustrial(e.g.Modbus,Fieldbusetc…)andwebprotocols(e.g.TCP/IP)andconveyingdataoriginatingfromthecontrolledenvironment;ontheothersidethereareusers,interactingwiththecontrolledsystemwiththesupportofaclientuserinterface.Actingasabroker,theserverhastodealwithavarietyofchallengingtaskslike:(i)managingandcoordinatingthedataflowbetweentheinvolvedactors,possiblyperformingad-hocdatamanipulationandaggregation;(ii)guaranteeingthesynchronizationofthestatusinformationatthedifferentpeers;and(iii)offeringasecureandreliableservicebyensuringfailsafeexecutionofusercommands.Theserver’sinternalorganizationhasbeenconceivedtoenhancemodularity,extensibility,componentre-use,andperformance.InFigure3andFigure4,wecanidentifythreemacrocomponentsoftheserverinternalarchitecture:1.theFieldInterfaceManagement(FIM);2.theControlInterfaceManagement(CIM);3.theUserInterfaceManagement(UIM).TheFIMcomprisesalltheserversub-componentsresponsibleformanagingthecommunicationwiththefielddevices,whileprovidingtheabstractionandmodularityrequiredfromothercomponentstoignorethephysicalfeatures,topologies,andprotocolsofthedevices.-78- InteractionwiththefieldisaccomplishedthroughastandardOPCclient/servermodule,thusaddinganotherlevelofabstraction(andmodularity)tothesystem.TheCIMhandlesallthefeaturesrelatedtousercommandmanagement,contentpersonalization,andadaptivity.Sincemultipleusersareallowedtointeractwiththesystemanduserinterface’scontentsaredirectlyrelatedtouserdevicesandauthorizations,thereisaneedforad-hocdatastructuresandoperationsabletocomplywiththeperformance,scalability,concurrencyandreliabilityrequirements.Inordertorespondtosuchdemands,theinternalorganizationoftheCIMreliesonorthogonalmodulesresponsibleformanagingthecommunicationwiththeFIM,eachonededicatedtoasingleaspect.Everytimeaclientconnectstothesystem,adedicatedcommunicationbufferisassignedtoitandisinitiallyfilledwithallthevaluesneededtobuildupthecurrentsystemstateviewfortheclient.Finally,theUIMisthecomponentdelegatedtoorchestrateandsynchronizetheinteractionwithclients;sinceMyHMIreliesonaWebarchitecture,theUIMisorganizedaccordingtotheModelViewController(MVC)designpattern[4],initsWebcompatibleversionknownasModel2(MVC2).Client-serverinteractiondesignAnimportantaspecttoconsiderwhendealingwithWebarchitecturesistheasymmetricnatureofthecommunicationprotocolusedbyclientstocommunicatewiththeserver(HTTP).Onlyclientsareabletoperformrequeststotheserverandnotviceversa.Thisconstrainthamperstheoptimizationoftheinteractionsbecause-78- clientscannotbenotifiedbytheserverofnewevents(newvariablevalues,instructions,alarms),butneedtoperiodicallyinvoketheservertoretrievetheupdatedinformation.ModernWebapplicationsstarttodiscovertheusefulnessofbidirectionalcommunicationmechanismandleverageonpushtechnologiestoenableWebserverproactivity.AccordingtothedecisiondescribedinSection,weadoptedasimulatedcallbackapproach.SuchapproachesusuallyrelyonHTTP/1.1persistentconnection.PersistentconnectionsexploittheXMLHttpRequestconceptandsimilarmechanismstoretrieveinformationfromtheserverwithoutnecessarilyupdatingthewholepage.Thankstothesetechnologies,clientsareallowedtoestablishasingleconnectionalwaysavailableforserverstosenddataindependentlyfromtheuserinteraction.Unfortunately,persistentconnectionsareexpensivetomanageforservers,makingsuchapproachunsuitableforlow-computational-powerdevicesliketheonesusedbyMyHMI.ThecommunicationbuffermechanismimplementedintheCIMhelpsatovercomingthedrawbackscomingfromthepollingprocess.Figure5schematizesasimplified“life-cycle”ofavalueupdateofafieldvariable.Whentheclientperformsitspollingroutine,theUIMfirstchecksif,fromthepreviousclientrequest,theCIMnotifiedfornewvaluesinthebuffer.Ifnonotificationstookplace,theUIMsetsatimeoutandwaitsfornewdatatobestoredintothebuffer:ifthemissingdatabecomesavailablebeforethetimeoutexpires,thewholebufferisdispatchedtotheclientinabulkmanner;otherwise,theUIMclosesthepollingcycleandreturnsanemptyresponse.Thankstobufferingandbulkdatatransfers,thenumberofclientrequestsdecreasesdramatically.Moreover,datachangesarecommunicatedonlywhenneededbysomeclientandthusthecongestionofthecommunicationchannelisreduced,enhancingscalabilityand,thus,theoverallsystemperformances.-78- Client-sidedesignThemainroleoftheclientlayerintheMyHMIarchitectureistomanagethedatapresentationanduserinteraction.Toavoiddependencyfromaspecifictechnology,weproducedahigh-leveldesignthatcanbeimplementedindifferentrenderingenvironments.-78- ThedesignedinternalcomponentdistributionisdepictedinFigure6:theclientapplicationincorporatesanapplicationshell,executedwithinthebrowserenvironment.Theshell(writteninaclientsidescriptinglanguage)isseparatefromthegraphicengineofthebrowserandexploitsaMVCorganization.TheModelcontainsthebusinessobjectsoftheinterface(e.g.,datavariables,trendmonitors)whiletheViewcomprisesthewidgetsandpresentationpropertiesmanagedbytherenditiontechnology(e.g.,thewidgettobeusedtodisplayadatavariable,atrend,oraninputcontrol).Theshellalsomanagesaninternalclock,usedtoautomaticallytriggerrequeststotheserverforthesystemstaterefresh;uponreceptionofserverresponses,theshellupdatestheinternaldatavariables,whichautomaticallyrefreshtheregisteredbusinessobjectsandassociatedwidgets.Thisdata-centricapproachallowstoredrawonlytheaffectedwidgets,minimizingthecomputationaleffortandenhancingperformances.ImplementationThissectionreportsourexperienceandevaluationsinimplementingarunningprototypeoftheproposedMyHMIsolution.Thankstoanopen-sourceModbussimulator,wesimulatedthelogicanddataflowsofamilkbottlingplant,composedofabouttwentycontrolledvariables,suchastheliquidlevelandtemperatureofthemilktank,thestateandspeedoftheautomaticconveyorbelt,andsoon.Server-sideimplementation-78- WeusedMicrosoftWindowsCEanditsbuilt-intechnologies:WebpublishingarchitecturerelyontheISAPI+HTTPDdaemon,allthemodelandbusinesslogiccomponentshavebeendevelopedasMicrosoftCOMobjects,andthecontrollerpartofourMVCarchitecturehasbeenimplementedasanISAPIDLL.Theconnectionwiththefieldhasbeenachievedthankstoarun-timecomponent(calledOPCclient)basedontheOPCDataAccessCustomInterfaceSpecification3.0,coupledwithanOPCServerversion2.5.15.ThankstotheOPCarchitecture,wecouldraisethelevelofabstractionofthecommunicationtothefield,thusdevelopingaprototypecompatiblewithalmostalltheindustrialfieldprotocols.Client-sideimplementationTheimplementationstrategyfortheclientsidehasbeenheavilyaffectedbytheconstraintsimposedfromthetargetenvironmentoftheMyHMIproject.Accordinglytothechoicesmadefortheserversideimplementation,wechoosetoexploittheWindowsCEnativebrowser,andtoextenditwithpluginsforvisualrendering.Manyofthemostinnovativeandpowerfultechnologiesonthemarkethavebeenreviewed,consideringfeatureslike:(i)Availability,flexibility,andportabilityofthesolutionforawidesetofoperatingsystemsandHMIterminals;(ii)Vectorgraphicssupportforeasyadaptationtodifferentscreenresolutions;(iii)availabilityofscriptinglanguagesforsoftwarepersonalization;and(iv)interactivityandusabilityfeatures.WeconsideredtechnologiessuchasSVG[2],AdobeFlash[14],andMicrosoft-basedsolutions.Attheendofourevaluations,AdobeFlashresultedtobethebestcandidatefortheMyHMIclientapplication.Thedevelopedclient-sideprototypesincludeallthewidgetsneededtodisplayplantvalues(e.g.,gaugebars,alarmleds,conveyorbelts,tachometers,meters,andsoon)andtoexecuteusercommands(e.g.,start/restartandemergencypushbuttons,inputfields,andsoon).Widgetshavebeendesignedaccordingtotheseparationof-78- concernsphilosophy:everywidgetisdevelopedasstand-aloneobject,composedbytwomainmodules:•Thebusinesslogic,encapsulatingboththepropertiesandthebehaviorofthewidget;•Thegraphicalrepresentation,whichisdesignedseparately,withanapproachbasedonthewellknownconceptofskin.ThankstothenewwidgetdesignandtothesophisticatedrenderingengineprovidedbyFlash,theprototypewasabletoimplementmuchmorerefinedinterfacesthanusualHMIsystems,bothintermsofgraphicalappearanceandofbusinesslogics(forinstance,seetherealtimeconveyoremulatorinFigure7).RelatedWorkTherequirements,trends,andopportunitiesofcurrenttechnologicalevolutioninembeddedsystemarewidelyrecognized[6].SomeearlyworksexistthatdescribehowtechnologiesfromtheWebenvironmentcanbeappliedtotheindustrialHMIapplications.[7]outlinessomepossibleapproachesonhowtouseXMLandJavaforinterfacedefinitionandconfiguration.However,ourexperiencehighlightsthatapplyingthisplaintechniquecanbepainfulintermsofperformanceifusinglowpowerdeviceswithembeddedoperatingsystems.Otherworks(e.g.,[8],[10])exploretheintegrationoftraditionalfieldbussolutionswithEternitybasedcommunicationbetweenclients,but,insteadofproposingafull-fledgedWebbasedarchitecture,theyofferagateway-basedinterfacefortransferringtheinformationfromthefieldtoanoffice-likenetwork.TheseapproachesdonotfullyexploitthepotentialsthatWebinterfacescanprovide(forexample,intermsofrichnessofinterfaces,adaptabilityandpersonification),becausetheserver-sidesoftwarearchitectureisnotstructuredenoughforthat.Moreover,theyusuallyrefertoofficePCplatformforrunningtheadvancedremoteinterfaces.Serviceoriented,agent-oriented,anddistributedobjectarchitectures-78- basedonWebandXMLtechnologieshavebeenexploredtoo,buttheirresultsarestillinanearlyphaseofdevelopmentandtypicallyrequirepowerfulhardware.SeveralresearchactivitieshavegatheredaroundtheconceptofOpen-ArchitectureControllers,focusingonsoftwaresolutionsthatofferasmuchportabilityandopennesstoanykindofdeviceandoperatingsystemsaspossible.Theyaimatstudyingthebestmixofprogramminglanguages,anddevelopmentarchitecturesandframeworksforgrantingsuchflexibility.TheyoftenrelyonWebtechnologiesfortheiropenavailabilityandportability,buttheydon’tapplyanyeffortforincreasingtheprovidedfeaturesorservices.providedfeaturesorservices.Finally,anothercategoryofworks,suchas,provideexperiencereportsonpracticalapplicationofInternet-basedsolutionstospecificenvironments,butdonotgeneralizetheirresultstoageneralarchitectureforhandlinganykindofHMIproblems.Ourcontributionwithrespecttothecurrentresearchisinthedefinitionofalight-weightWebbasedsoftwarearchitecturethatfeaturesstandardtechnologieslikebrowsers,Webservers,andgraphicplayers,thatcanbedeliveredon(networksof)embeddedsystems,deliveringstateoftheartWebapplications,includingpersonalization,multi-deviceadaptivity,andremotenotification,withouttheneedofheavyhardwareplatformslikeofficePCs.ConclusionInthispaperwehaveshownhowHMIsystemscouldbenefitfromtheintroductionofcutting-edgeWebtechnologiesandbestpractices.Theworkhasbeenorganizedinfoursequentialsteps:marketandliteratureanalysis;definitionoftherequirementsneededbynewWebenabledHMIsolutions;designofaproof-of-conceptcasestudyapplication;anddevelopmentoftheclientandserverapplicationstotestreliabilityandperformancesoftheMYHsolution.ThemarketanalysishighlightedthecurrentunsolvedproblemsaffectingtheHMImarket,thusgatheringasetoffeatures-78- andrequirementsforthenextgenerationofHMIsolutions.TheresultofourworkconsistsinahighlyconfigurablearchitecturewhichcanbeconsideredastateoftheartreferencefornewgenerationofHMIsolutionsrelyingonflexibility,ubiquityandcustomization.Futureworkwillincludesomearchitecturerefinementsandthetestingofperformancesofadvancedfeatures(messaging,remotelogging,andsoon).AcknowledgmentWewishtothankthestaffofESAElectronicS.p.A.forthevaluablecomments,feedbacks,andcollaborativework.AspecialthanktoStewardOngoing(R&Ddepartment),tohisteam,andtoAprilColombo.-78- 二、英文翻译:应用基于web的网络协议和软件架构,可以为工业提供具有适应性,个性化和移动性特点的人机界面服务器的设计该服务器是通过专有的沟通协议,作为为中间人人机界面接口和其他服务器进行通信的TCP/IP网络以及现场总线连接异构的设备之间作用。该服务器管理连接到外地(通过一个OPC服务器模块或类似的接口)和缓冲区的字段数据(在数据服务器模块)成为传递到基于TCP/IP连接的客户。客户可以部署在两种配置:本地服务器的节点(从而提供了一个集成终端接口)或在一个单独的远程终端连接到服务器通过一个TCP/IP网络。该服务器管理有四种类型的客户端请求:初始化请求,新的一页请求,数据刷新请求和事件触发处理。初始化和新的一页请求可能需要计算服务器端个性化的规则,他的处理是通过基于身份请求终端和用户身份服务器提出请求的;页面数据刷新请求只涉及到客户机的运送原始数据和提供服务快如图2所示,服务器分为两大类成分边界:一方是控制系统,由不同的设备组成,双方沟通通过工业(如Modbus总线,现场总线等...)和网络协议(如TCP/IP协议)和从原受控环境输送数据。另一边是用户,支持与同一个客户端用户界面控制系统互动。-78- 图2MYHMI体系结构的高层架构作为一个中间设备,服务器已能处理具有挑战性的任务,如各种:(一)管理和协调涉及用户,可能执行临时数据处理和汇总;之间的数据流;(二)保证了在不同节点的状态信息同步;(三)提供确保万无一失执行用户的命令一个安全可靠的服务。该服务器的内部组织已设想到提高模块化,可扩展,组件重新使用和性能。在图3和图4中,我们可以找出三个服务器内部结构宏组件的:1.外界面版管理2.控制界面管理3.用户界面管理服务器子组件对管理现场设备通信负责同时提供抽象和模块化,并且忽略其他组件的物理特征,拓扑和协议。与外地的互动是通过一个标准的OPC客户机/服务器模块,从而增加了另一种级别抽象(和模块)的系统。图3MYHMI体系中的服务结构:外界面版管理,控制界面管理控制界面管理处理所有相关的用户命令管理,内容个性化功能,以及适应性。由于允许多个用户与系统互动和用户界面的内容是直接关系到用户设备和授权的,这就需要特设的数据结构和操作能够遵守的性能,可扩展性,并发性和可靠性要求。为了应对这种需求,控制界面管理的内部组织依靠正交模块负责与外界面版管理沟通管理。-78- 图4MYHMI体系中的服务结构:控制界面管理,用户界面管理每当客户端连接到系统,专用通信缓冲区分配给它,和为了客户端填满的最初值需要建立当前的系统状态查看。最后用户界面管理是组件授权协调和同步与客户的互动;因为MyHMI依赖于网络架构,用户界面管理是在其网络版本兼容模式2(MVC2已知)上,根据模型视图控制器(MVC)设计模式组织的。客户端服务器交互设计要考虑的一个重要方面,当处理网络架构是由客户端用于与服务器通信(HTTP)的通信协议的不对称性。只有客户能够履行请求到服务器,而相反则不行。这限制妨碍了最优化的相互作用,因为客户不能跟新的事件(新变量值的服务器通知,指示,报警器),但需要定期调用服务器以检索更新的信息。现代的Web应用程序开始发掘了双向沟通机制和推动技术的杠杆作用,提高Web服务器的积极性。根据4.1.3节中所述的结果,我们采用一个模拟的回调方法。这种方法通常依赖于HTTP/1.1中不间断连接(见[17])。持续连接利用XMLHTTP请求的概念[18]和其他类似机制,从服务器检索从而不必更新整个页面的信息。多亏这些技术,客户可以建立一个连接始终可用的服务器从用户的互动上独立发送数据。不幸的是,持续连接对于服务器是很昂贵的管理,这种做法不符合低消耗概念设备,像MyHMI使用的。沟通的缓冲机制在CIM实施从查询审核上看有助于克服的弊端。-78- 图5客户端服务器分布式系统数据更新过程图5将一个字段变量的值更新系统化一个简化为“生命周期”。当客户端执行其轮换查询程序之后,UIM首先从以前的客户端的请求检查,然后告知CIM在缓冲区的新值。如果没有通知发生,UIM就设置一个时间溢出和等待新的数据存储到缓冲区:如果丢失的数据变得可用之前超时过期,整个缓冲区以批量方式迅速处理客户端;要不然;UIM关闭轮询周期,并返回一个空的响应。由于缓冲和批量数据传输,对客户要求的数量急剧下降。此外,数据的变化需要通报只一些客户端,从而对减少通信信道拥塞,提高可扩展性,因此,提高整体系统的性能。客户端设计客户层在MyHMI结构中的主要作用是管理数据显示和用户对话。为了避免对一个特定的技术依赖,我们制作了一个高层次的设计,可以实现在不同的渲染环境所设计的内部组件分布在图6所示:客户端应用程序包含一个外部应用程序,在浏览器环境内执行。外部程序(在客户端脚本语言编写)是独立于浏览器的图形引擎和利用了MVC的组织。-78- 该模型包含业务对象的接口(例如,数据变量,趋势监视器)而在视图包括工具和介绍物业的移交技术管理则是通过移交技术(例如,小工具,用来显示数据的变量,一种趋势,或输入控制)。外部程序还管理一个内部时钟,用于服务器自动触发请求的系统状态刷新;接收服务器响应,外部程序更新内部数据变量包括自动刷新注册业务对象和相关的部件,此数据为中心的方法只允许重新刷新受影响的部件,最大限度地减少计算量和更好地运行。图6从高层次考虑的客户端设计执行本节介绍我们的经验和对实施拟议MyHMI解决方案中运行的原型评估。感谢开源的Modbus模拟器,我们模拟了一个牛奶装瓶厂的逻辑和数据流,由大约20控制变量组成,如牛奶罐的液位和温度,状态和自动输送带的速度等。服务器端实现我们使用微软WindowsCE],和其内置的技术:Web发布结构依靠的ISAPI+httpd的后台程序,所有的模型和业务逻辑组件已经发展成为微软的COM对象和我们的MVC架构控制器部分已实施作为一个ISAPI的DLL在一个运行时组件(称为OPC客户端)基于OPC数据访问定制接口规范3.0再加上一个OPC服务器版本2.5.15基础下,已取得与外地的连接。由于OPC结构下,我们可以提高与外地更层次的交流,因此,开发一个原型,几乎所有的工业领域协议兼容。客户端实现为客户端执行计划由于MyHMI项目目标环境的限制已经受到严重影响。-78- 因此要为服务器端实现作出的选择,我们选择利用本地浏览器的WindowsCE和为了视觉呈现扩展插件。市场上已经预见有很多最具创新性和强大的技术,考虑到的功能像:(一)可用性,灵活性和解决方案的可移植性的作业系统和HMI终端开;(二)矢量图形支持和容易适应不同的屏幕分辨率;(三)脚本语言提供个性化的软件;(四)互动性和实用性的特点。我们考虑了诸如SVG,AdobeFlash和基于微软产品解决方案的技术,所开发的客户端原型包括所有的部件需要显示设备的数值.(例如,计量系统,报警指示灯,传送带,转速表,仪表等)并执行用户命令(例如,启动/重新启动和紧急按钮,输入域,等)。部件的设计根据关注点分离的理念:每一个部件是发展成为独立的对象,分别由两个主要模块组成:•业务逻辑,封装了无论是性能和组件的行为模式;•该图形表示,这是分开设计的,与著名的皮肤概念为基础的方法。感谢新的部件设计和先进的渲染引擎所提供的闪存,原型能够实现比通常的人机界面系统有更加完善的接口,无论在图形外观方面还是在业务逻辑上(例如,参见图7实时输送机模拟器)。图7MYHMI动画接口原型相关工作从要求,发展趋势,以及当前技术发展机会,嵌入式系统是被普遍认可的。一些早期的作品存在,描述了Web环境技术如何应用到工业人机界面[7]概述了一些可能的办法如何使用XML和Java去定义和配置接口。然而,我们的经验得出了,如果使用了嵌入式操作系统的低功率设备,应用该普通技术性能方面可以改善。-78- 探索整合基于客户端之间通信的传统的现场总线与以太网解决方案,而不是提出一个全面的基于Web的体系结构,为了信息能从外地网络传到办公类网络,它们提供了网关的接口。这些方法并不充分发挥网络接口可以提供的潜力(例如,在丰富的接口条件,适应性和个性化),因为服务器端的软件架构没有足够的支持。此外,为了运行的先进的远程接口他们通常涉及到办公室的PC平台。服务导向,代理人为导向,和分布式对象架构基于Web和XML为基础的技术也探索了,但其成果仍处于发展的初期阶段和通常需要强大的硬件支持。有若干围绕概念为开放式体系结构控制器的研究活动开展了[12],重点是软件解决方案,包括提供尽可能多的可移植性和开放任何一种装置尽可能还有操作系统。他们的目的是学习最佳混合的编程语言,和发展架构还有框架给予的灵活性。他们往往依赖于网络技术为他们开启可用性和可移植性,但他们不应用任何努力去增加功能和服务。最后,另一个类别工程,类似[13],提供根据实际应用环境提出基于互联网的解决方案的经验报告,但不能将其结果推广一般架构去处理所有人机界面问题。我们就目前研究的贡献只是一个轻量级基于Web的软件体系结构,技术功能,如浏览器的标准定义,Web服务器和图形,可以履行的(网络)的嵌入式系统,提供最先进的网络,包括个性化,多设备适应性和远程通知,不需要像officePCs笨重硬件平台。结束在这篇文章,我们已显示人机界面系统可以从在尖端网络技术和最佳做法获得改进。这项工作组织可分4个步骤:市场和文献分析;按新Web启用人机界面解决方案的需求定义;设计一个证明了概念研究中的应用情况;和发展客户端和服务器应用程序进行测试的可靠性和MyH的解决方法。市场分析当前未解决的突出问题,影响人机界面的市场,因而,针对下一代的人机界面的功能和要求设置提出解决方案。-78- 我们工作的结果包括在一个高度可配置的架构,它灵活性,普及和专用化可以被视为一个可依托的人机界面解决方案,今后的工作将包括一些结构优化和先进的功能(短信,远程登录,性能测试等)。答谢我们要感谢欧空局ElettronicaS.p.A.的工作人员提出的宝贵意见和反馈还有协同工作。特别感谢对斯特凡诺隆戈尼(研发部门)和他的团队,以及马里奥科伦坡。-78- 三、工程设计图纸:1、原理图-78- 2、PCB图-78- 四、源程序://-------函数声明,变量定义---------////头文件#include#include#include"ds18b20.h"//宏定义#defineuintunsignedint#defineucharunsignedchar//变量定义ucharSecond,Minute,Hour,Date,Month,Year,week;//定义时间变量//lcd两行的地址#defineone0x80//第一行初始位置#definetwo0xc0//第二行初始位置////////定义放音命令,定义常量//////#defineISDPOWERUP0X20//ISD4004上电#defineISDSTOP0X10//ISD4004下电#defineOPERSTOP0X30//ISD4004停止当前操作#definePLAYSET0XE0//ISD4004从指定地址开始放音#definePLAYCUR0XF0//ISD4004从当前地址开始放音#defineRECSET0XA0//ISD4004从指定地址开始录音#defineRECCUR0XB0//ISD4004从当前地址开始录音///////定义DS1302相关寄存器内容//////#defineDS1302_SECOND0x80//时钟芯片的寄存器位置,存放时间,如0x80放的的秒数-78- #defineDS1302_MINUTE0x82//时钟芯片的寄存器位置,存放时间,如0x82放的的分钟数#defineDS1302_HOUR0x84#defineDS1302_WEEK0x8A#defineDS1302_DAY0x86#defineDS1302_MONTH0x88#defineDS1302_YEAR0x8C#defineDS1302_PROTECT0x8e//1602相关控制端口sbitRS_1602=P2^5;//1602数据命令端sbitRW_1602=P2^6;//1602读写控制端sbitE_1602=P2^7;//1602使能端//DS1302相关控制端口sbitCLK_1302=P3^5;//1302时钟端sbitIO_1302=P3^6;//1302数据端sbitRST_1302=P3^7;//1302复位端//ISD4004功能键sbitSS=P1^4;//LOWISACTIVELYsbitMOSI=P1^5;sbitMISO=P1^6;sbitSCLK=P1^7;sbitK1=P3^3;//录音键sbitK2=P3^4;//停止键//相关功能按键sbitkey_mode=P3^0;//功能按键sbitkey_up=P3^1;//增量键sbitkey_down=P3^2;//减量键sbitbeep=P2^0;//蜂鸣器-78- sbitLED1=P2^2;//录音指示灯sbitLED2=P2^4;//放音指示灯sbitACC0=ACC^0;sbitACC7=ACC^7;bitflag;//闹钟标志位ucharcodetab1[]={"20--week"};//液晶第一行默认显示数据ucharcodetab2[]={"::"};//液晶第二行默认显示数据longcodetab4[24]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xb0,0xd0,0xf0,0x110,0x130,0x150,0x170,0x190,0x1b0,0x1d0,0x210,0x230,0x250};//0到9点播音地址//ucharcodetab5[10]={};//10到19播音地址//ucharcodetab6[3]={};//20到23点播音地址//--------函数声明------//voidinit();//定时器初始化函数ucharBCD_Decimal(ucharbcd);//BCD转换成16进制数据ucharDec_BCD(ucharDec);//16进制转换成BCDvoiddelay(uintxms);//延迟函数voidwrite_1602com(ucharcom);//液晶写入指令函数voidwrite_1602dat(uchardat);//液晶写入数据函数voidwrite_hms(ucharadd,uchardat);//1602写时分秒voidwrite_ymd(ucharadd,uchardat);//1602写年月日voidwrite_week(ucharweek);//1602写星期函数voidlcd_init();//液晶初始化函数voidwrite_byte(uchardat);//1302字节写ucharread_byte();//1302字节读voidwrite_1302(ucharadd,uchardat);//1302地址写-78- ucharread_1302(ucharadd);//1302地址读voidds1302_init();//1302初始化voidkeyscan();//按键处理子函数voiddelayms(ucharms);//延时函数voidplay();//放音部分子程序,放音地址由ADDR决定voidstop();//停止播放voidwrite_tmp(ucharadd,longtmp);voidzhengdian();//整点报时函数//-------主函数--------//voidmain(){beep=0;RW_1602=0;lcd_init();//LCD初始化函数ds1302_init();//1302初始化函数init();//定时器初始化函数while(1){keyscan();//按键处理子程序tmconvert();//温度转换程序//zhengdian();//整点报时程序}}//------LCD写命令函数------//voidwrite_1602com(ucharcom)//液晶写入指令函数{-78- RS_1602=0;//置为写命令P0=com;//送入命令delay(1);//延时1msE_1602=1;//拉高使能端delay(1);//延时1msE_1602=0;//完成高脉冲}//------LCD写数据函数------//voidwrite_1602dat(uchardat)//液晶写入数据函数{RS_1602=1;//置为写数据P0=dat;//送入命令delay(1);//延时1msE_1602=1;//拉高使能端delay(1);//延时1msE_1602=0;//完成高脉冲}voidwrite_tmp(ucharadd,longdat){uchardis[4]={0,0,0,0};dis[0]=(dat%10000)/1000;//十位dis[1]=(dat%1000)/100;//个位dis[2]=(dat%100)/10;//小数第一位dis[3]=dat%10;//小数第二位write_1602com(two+add);//在第二行对应位置显示write_1602dat(0x30+dis[0]);-78- write_1602dat(0x30+dis[1]);write_1602dat(0xa5);//显示小数点write_1602dat(0x30+dis[2]);write_1602dat(0x30+dis[3]);write_1602dat(0xdf);//显示"℃"write_1602dat(0x43);//显示C}//------LCD写时分秒------//voidwrite_hms(ucharadd,uchardat)//1602写时分秒在第二行显示{uchargw,sw;gw=dat%10;//显示个位数据sw=dat/10;//显示十位数据write_1602com(two+add);//在第二行对应位置显示write_1602dat(0x30+sw);write_1602dat(0x30+gw);}//------LCD写年月日------//voidwrite_ymd(ucharadd,uchardat)//1602写年月日在第一行显示{uchargw,sw;gw=dat%10;//显示个位数据sw=dat/10;//显示十位数据write_1602com(one+add);//在第一行对应位置显示write_1602dat(0x30+sw);write_1602dat(0x30+gw);-78- }//------LCD写星期函数-----//voidwrite_week(ucharweek)//1602写星期函数在第一行倒数第二个位置显示星期的数据{write_1602com(one+0x0f);//在第一行对应位置显示write_1602dat(0x30+week);}//--------LCD初始化程序-------//voidlcd_init()//液晶初始化程序{ucharkk;write_1602com(0x38);//16*25*7点阵8位数据线write_1602com(0x0c);//开显示不显示光标,不闪烁write_1602com(0x06);//显示不移动,光标右移write_1602com(0x01);//清屏write_1602com(one);//第一行字符写入位置for(kk=0;kk<16;kk++)write_1602dat(tab1[kk]);write_1602com(two);//第二行字符写入位置for(kk=0;kk<8;kk++)write_1602dat(tab2[kk]);}//---------DS1302写一个字节-------//voidwrite_byte(uchardat)//1302字节写-78- {ucharkk;ACC=dat;RST_1302=1;//启动读写操作for(kk=8;kk>0;kk--){IO_1302=ACC0;//先传送数据CLK_1302=0;CLK_1302=1;//上升沿传送数据ACC=ACC>>1;//右移1位}}//----------DS1302读一个字节------//ucharread_byte()//1302字节读{ucharkk;RST_1302=1;//启动读写操作for(kk=8;kk>0;kk--){ACC7=IO_1302;//先传送数据CLK_1302=1;CLK_1302=0;//下降沿传输出数据ACC=ACC>>1;//右移1位}return(ACC);}-78- //---------DS1302向目的地址写数据------//voidwrite_1302(ucharadd,uchardat)//1302地址写{RST_1302=0;CLK_1302=0;RST_1302=1;//启动读写操作write_byte(add);//写地址write_byte(dat);//写数据CLK_1302=1;RST_1302=0;//禁止读写操作}//----------DS1302向目的地址读数据------//ucharread_1302(ucharadd){uchartemp;RST_1302=0;CLK_1302=0;RST_1302=1;//启动读写操作write_byte(add);//写地址temp=read_byte();//读数据CLK_1302=1;RST_1302=0;//禁止读写操作return(temp);}//---------DS1302初始化------//voidds1302_init()-78- {//RST_1302=0;//禁止读写操作//CLK_1302=0;//时钟为低//write_1302(0x80,Second|0x00);//允许写write_1302(DS1302_PROTECT,0x00);//禁止写write_1302(DS1302_SECOND,0x46);//46秒write_1302(DS1302_MINUTE,0x13);//57分钟write_1302(DS1302_HOUR,0x16);//下午两点write_1302(DS1302_WEEK,0x02);//周五write_1302(DS1302_DAY,0x07);//26号write_1302(DS1302_MONTH,0x05);//4月write_1302(DS1302_YEAR,0x13);//2013年write_1302(DS1302_PROTECT,0x80);//允许写}//---------按键处理程序------//voidkeyscan(){ucharkey1n;//功能键按下的次数if(key_mode==0)//功能键按下{delay(5);//延时消抖if(key_mode==0)//确认功能键按下{beep=1;//蜂鸣器响while(!key_mode);//等待功能键释放beep=0;//蜂鸣器关key1n++;//功能键按下次数加1-78- if(key1n==9)//为9时,调为1,只在1-8key1n=1;switch(key1n)//功能键按下的次数不同实现不同的操作{case1:TR0=0;//关闭定时器write_1602com(two+0x06);//写入光标位置write_1602com(0x0f);//设光标为闪烁write_1302(0x8e,0x00);//允许写write_1302(0x80,0x80|Dec_BCD(Second));//Secondbreak;case2:write_1602com(two+3);break;//Minute闪烁case3:write_1602com(two+0);break;//Hour闪烁case4:write_1602com(one+0x0f);break;//week闪烁case5:write_1602com(one+0x09);break;//date闪烁case6:write_1602com(one+0x06);break;//month闪烁case7:write_1602com(one+0x03);break;//year闪烁case8:write_1602com(0x0c);//设置光标不闪烁write_1302(0x80,0x00|Dec_BCD(Second));//Secondwrite_1302(0x8e,0x80);//禁止写TR0=1;//打开定时器break;}}}if(key1n!=0)//当功能键按下后,才能按一下键-78- {if(key_up==0)//上调键{delay(5);//消抖if(key_up==0)//确认按下{beep=1;//蜂鸣器响while(!key_up);//等待按键释放beep=0;//蜂鸣器关switch(key1n)//功能键按的次数不同实现不同的操作{case1:Second++;//秒加1if(Second==60)//加到60s调为0Second=0;write_hms(0x06,Second);//显示新的秒数write_1302(0x80,0x80|Dec_BCD(Second));//写入秒数write_1602com(two+0x07);//因为指针自动加1,要写回原位置break;case2:Minute++;//分加1if(Minute==60)//加到60调为0Minute=0;write_hms(3,Minute);//显示新的分钟write_1302(0x82,Dec_BCD(Minute));//写入分钟write_1602com(two+0x04);//因为指针自动加1,要写回原位置光标在原位置闪烁break;-78- case3:Hour++;//小时加1if(Hour==24)//加到24时调为0Hour=0;write_hms(6,Hour);//显示新的小时write_1302(0x84,Dec_BCD(Hour));//写入小时write_1602com(two+0x01);//因为指针自动加1,要写回原位置光标在原位置闪烁break;case4:week++;//星期加1if(week==8)//加到8时调为1week=1;write_week(week);//显示新的星期write_1302(0x8a,week);//写入星期write_1602com(one+0x0f);//因为指针自动加1,要写回原位置光标在原位置闪烁break;case5:Date++;//日期加1if(Date==32)//加到32时调为1Date=1;write_ymd(8,Date);//显示新的日期write_1302(0x86,Dec_BCD(Date));//写入日期write_1602com(one+9);//因为指针自动加1,要写回原位置光标原位置闪烁break;case6:Month++;//月份加1if(Month==13)//加到13就变为1Month=1;write_ymd(5,Month);//显示新日期-78- write_1302(0x88,Dec_BCD(Month));//写入新的月份write_1602com(one+6);//光标在原位置闪烁break;case7:Year++;//年加1if(Year==100)//加到100时调为0Year=0;write_ymd(2,Year);//显示新年份write_1302(0x8c,Dec_BCD(Year));//写入新的年份write_1602com(one+3);//光标在原位置闪烁break;}}}if(key_down==0)//下调键{delay(5);//消抖if(key_down==0)//确认按下{beep=1;//蜂鸣器响while(!key_down);//等待按键释放beep=0;//蜂鸣器关switch(key1n)//功能键按的次数不同实现不同的操作{case1:Second--;//秒减1if(Second==-1)//减到-1就调为59Second=59;-78- write_hms(0x06,Second);//显示新的秒数write_1302(0x80,0x80|Dec_BCD(Second));//写入秒数write_1602com(two+0x06);//因为指针自动加1,要写回原位置break;case2:Minute--;//分钟减一if(Minute==-1)//减到-1就调为59Minute=59;write_hms(3,Minute);//显示新的分钟write_1302(0x82,Dec_BCD(Minute));//写入分钟write_1602com(two+0x03);//因为指针自动加1,要写回原位置光标在原位置闪烁break;case3:Hour--;//小时减1if(Hour==-1)//减到-1调为23Hour=23;write_hms(0,Hour);//显示新的小时write_1302(0x84,Dec_BCD(Hour));//写入小时write_1602com(two+0x00);//因为指针自动加1,要写回原位置光标在原位置闪烁break;case4:week--;//星期加1if(week==0)//减到0就调为7week=7;write_week(week);//显示新的星期write_1302(0x8a,week);//写入星期write_1602com(one+0x0f);-78- //因为指针自动加1,要写回原位置光标在原位置闪烁break;case5:Date--;//日期加1if(Date==0)//减为0就变成31Date=31;write_ymd(8,Date);//显示新的日期write_1302(0x86,Dec_BCD(Date));//写入日期write_1602com(one+9);//因为指针自动加1,要写回原位置光标原位置闪烁break;case6:Month--;//月份减1if(Month==0)//为0就调为12Month=12;write_ymd(5,Month);//显示新日期write_1302(0x88,Dec_BCD(Month));//写入新的月份write_1602com(one+6);//光标在原位置闪烁break;case7:Year--;//年减1if(Year==-1)//减为-1调为99Year=99;write_ymd(2,Year);//显示新年份write_1302(0x8c,Dec_BCD(Year));//写入新的年份write_1602com(one+3);//光标在原位置闪烁break;}}-78- }}if(K2==0){delayms(10);while(K2==0);LED1=1;LED2=1;stop();}}//-----------定时器函数部分---------//voidinit(){TMOD=0X01;//定时器0的16位定时器模式TH0=0;//初值为0TL0=0;EA=1;//总中断使能ET0=1;//时器0中断使能TR0=1;//定时器0启动}voidtimer0()interrupt1{Second=BCD_Decimal(read_1302(0x81));//读取1302的秒Minute=BCD_Decimal(read_1302(0x83));//读取1302的分Hour=BCD_Decimal(read_1302(0x85));//读取1302的小时-78- Date=BCD_Decimal(read_1302(0x87));//读取1302的日期Month=BCD_Decimal(read_1302(0x89));//读取1302的月份week=BCD_Decimal(read_1302(0x8b));//读取1302的星期Year=BCD_Decimal(read_1302(0x8d));//读取1302的年write_hms(6,Second);//1602显示秒write_hms(3,Minute);//1602显示分write_hms(0,Hour);//1602显示小时write_ymd(8,Date);//1602显示日期write_ymd(5,Month);//1602显示月份write_ymd(2,Year);//1602显示年write_week(week);//1602显示星期write_tmp(9,gettm());//显示温度zhengdian();}//--------码制转换函数---------//ucharBCD_Decimal(ucharbcd)//BCD码转成16进制{ucharDecimal;Decimal=bcd>>4;//高四位移到低四位return(Decimal=Decimal*10+(bcd&=0x0f));//原高四位数据*10加低四位}ucharDec_BCD(ucharDec)//16进制转换成BCD{ucharBCD;BCD=(Dec)/10*16+(Dec)%10;return(BCD);-78- }//-------------------延时函数-----//voiddelay(uintxms){uinti,j;for(i=xms;i>0;i--)for(j=100;j>0;j--);}voiddelayms(ucharms)//延时子程序{uintj;while(ms--){for(j=0;j<120;j++);}}////////////////放音部分子程序,放音地址由ADDR决定////voidplay(uintaddr){uinty;SS=0;MOSI=0;//发送开始SCLK=0;for(y=0;y<8;y++){-78- SCLK=0;if((0x20>>y)&0x01)MOSI=1;elseMOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}//发送结束SS=1;//上电结束delayms(50);SS=0;MOSI=0;//发送地址SCLK=0;for(y=0;y<16;y++){SCLK=0;if((addr>>y)&0x01)MOSI=1;elseMOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();-78- }//发送地址结束MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0xe0>>y)&0x01)MOSI=1;elseMOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}SS=1;SS=0;MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0xf0>>y)&0x01)MOSI=1;elseMOSI=0;_nop_();_nop_();_nop_();-78- SCLK=1;_nop_();_nop_();_nop_();}SS=1;}////////////////////////////////////voidstop()//停止播放{uchary;SS=1;SS=0;MOSI=0;//放音SCLK=0;for(y=0;y<8;y++){SCLK=0;if((0x30>>y)&0x01)MOSI=1;elseMOSI=0;_nop_();_nop_();_nop_();SCLK=1;_nop_();_nop_();_nop_();}-78- SS=1;}voidzhengdian()//整点报时函数{//uintnum1,num2;//num1=Hour/10;//取小时的十位//num2=Hour%10;//取小时的个位if(Second==0&&Minute==0){play(tab4[Hour]);//play(0x150);//delayms(60000);delayms(60000);delayms(60000);//stop();//P1=0xFF;//stop();//switch(num1)//{//case0:play(tab4[num2]);break;//播放0到9点//case1:play(tab5[num2]);break;//播放10到19点//case2:play(tab6[num2]);break;//20到23点}}}-78- 五、其他:1、仿真图2、实物图-78-'