




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE5分类号TN919编号201125502220集散系统的设计与模拟DesignandSimulationofDistributedControlSystem(申请烟台高校学士学位论文)申请学位:工学学士学位院系:计算机学院专业:自动化同学姓名:李帅学号:200725502220指导老师王培进(教授)2011年6月7日烟台高校计算机学院ﻩﻬ[摘要]该设计是一个基于串行通信的集散掌握系统。该集散掌握系统由PC与2个单片机组成,其中PC作为上位机对单片机进行掌握和监视,采纳VisualBasic编制界面.两片AT89C52单片机作为下位机,用来接收上位机指令并实现相应功能。通信基于USB通用串行总线标准,线路由USB-hub中转扩展。可以实现PC和单片机之间主从式半双工通信.本文简略商量了硬件电路的设计方法、主从式通信协议设计方法、主机人机交互界面的设计方法、下位单片机驱动的设计方法以及开发环境keiluVision2、VisualBasic6.0的使用方法,通过以上各种方法,最终实现了PC对多个单片机的集散掌握。[关键词]PC;单片机;集散系统;通信
Abstract:ThisdistributedcontrolsystembasedonserialcommunicationprotocoliscomposedofaPCandtwoMCUs.PCisusedasmaster,whoseinterfaceisprogramedbyVisualBasic,andMCUsareusedasslavesoastoreceivethesingleorderfromthemaster。ThedesignofcommunicationprotocolandcorrespondingdesignofhardwareandsoftwareofPCandmultipleMCUsisdescribedinthearticle.AllthedesignsHYPERLINK"app:ds:mention"\t"_self"mentionedabovegettogethertorealizetheDCSatlast.ThisarticlealsointroduceshowtousetheeditorsoftwaressuchaskeiluVision2andVisualBasic6。0.Somepicturesandchartsaregiveninordertomakethisarticlemorevividlytoreadandmoreeasilytounderstand.Keywords:PC;MCU;DCS;serialcommunicationﻬ名目TOC\o"1-3"\h\z\uHYPERLINK\l_Toc30700第一章序言ﻩPAGEREF_Toc307001HYPERLINK\l_Toc12247其次章系统总体设计ﻩPAGEREF_Toc122472HYPERLINK\l_Toc264482。1系统概述ﻩPAGEREF_Toc264482HYPERLINK\l_Toc48432。2系统概图ﻩPAGEREF_Toc48432HYPERLINK\l_Toc28042.3系统总体运行图ﻩPAGEREF_Toc28043HYPERLINK\l_Toc80612。4系统功能模块 PAGEREF_Toc80614HYPERLINK\l_Toc257032.5系统设计步骤ﻩPAGEREF_Toc257034HYPERLINK\l_Toc25799第三章系统硬件设计ﻩPAGEREF_Toc257995HYPERLINK\l_Toc128623。1硬件结构ﻩPAGEREF_Toc128625HYPERLINK\l_Toc272073.2上位机PC与USB集线器 PAGEREF_Toc272075HYPERLINK\l_Toc318203.3芯片PL2303ﻩPAGEREF_Toc318206HYPERLINK\l_Toc14213.4单片机 PAGEREF_Toc14217HYPERLINK\l_Toc8903第四章系统软件设计ﻩPAGEREF_Toc89037HYPERLINK\l_Toc315714。1通信协议ﻩPAGEREF_Toc315717HYPERLINK\l_Toc39574。1.1异步串行通信协议ﻩPAGEREF_Toc39577HYPERLINK\l_Toc118884.1。2帧 PAGEREF_Toc118888HYPERLINK\l_Toc249114.2下位机(单片机)串行通信及程序设计 PAGEREF_Toc249119HYPERLINK\l_Toc295524.2.1单片机开发环境uVision2介绍ﻩPAGEREF_Toc295529HYPERLINK\l_Toc282294。2.2下位单片机驱动程序ﻩPAGEREF_Toc282299HYPERLINK\l_Toc55844.3上位机(PC)串行通信及程序设计ﻩ558412HYPERLINK\l_Toc51194.3.1PC界面开发环境VisualBasic6.0介绍 PAGEREF_Toc511912HYPERLINK\l_Toc174554.3。2PC上位机界面程序编制ﻩPAGEREF_Toc1745512HYPERLINK\l_Toc22484结束语ﻩPAGEREF_Toc2248419HYPERLINK\l_Toc757致谢ﻩPAGEREF_Toc75721HYPERLINK\l_Toc5967参考文献ﻩPAGEREF_Toc596722HYPERLINK\l_Toc317附录A下位机程序代码ﻩPAGEREF_Toc31723HYPERLINK\l_Toc22003附录B上位机程序代码 PAGEREF_Toc2200329
第一章序言 随着计算机技术尤其是单片微型机技术的进展,随着多微机系统的应用和微机网络的进展,通信功能越来越显得重要[1]。这里所说的通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。由于串行通信是把组成信息的各个码位在同一根传输线上,从低位到高位,逐位地、挨次地进行传送的通信方式,所用的传输线少,一个方向上只须一条传输线,并且可以借助现成的电话网进行信息传送,因此,格外适合于远距离传送。对于那些与计算机相距不远的人机交互设备和串行外部设备如终端、打印机、规律分析仪、磁盘等,采纳串行方式进行近距离交换数据也很普遍。在实时掌握和管理方面,采纳多台微处理机组成分级分布掌握系统中,各CPU之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。单片机正朝着高性能和多品种方向进展,具有低功耗,小体积,大容量,高性能,设计灵敏、低价格和外围电路内装化等诸多特点。而PC具有强大的数据处理功能、监控和管理功能与格外友好的人机交互界面,人们已越来越多地采纳PC-单片机系统来对一些工业掌握系统中诸如温度、流量和压力等参数进行检测和掌握。DCS能够实现集中管理分散掌握的功能,随着工业化的进步,以前传统的采纳人工进行数据记录登记已经远远不能满意现在工业化生产的要求,而采纳PC上位机—单片机结构实现的数据采集系统具有自动化和无人值守等特点,使得操作人员不必身居生产一线即可得知一线设备状态并且集中掌握这些设备,给各领域的生产加工带来极大便利和平安,也使得生产更加合理优化,极大的提高了生产效率和产品质量.本设计是由PC和单片机组成的集散系统系统,能够通过PC与单片机的串行通信对外部设备进行信息采集和掌握,满意以上各种优势,具有很强的有用价值。ﻬ其次章系统总体设计2。1系统概述本集散掌握系统能够实现PC与两个单片机之间的串行通信,进而实现集中管理分散掌握的功能。该系统是由PC与2个单片机组成的主从集散掌握系统,其中PC做为上位机对下位单片机实现掌握和监视功能,采纳VB编制界面,包括通信和掌握两个功能模块。单片机作为下位机在整个系统中属于从属地位,主要用来接收上位机的命令并执行相应功能。要实现集散掌握,首先要解决的是主从机如何通信的问题,RS485标准抗干扰能力强,传输速率高,传送距离远,在当今串行通信领域应用比较广泛。但是本设计要求是DCS,距离近,下位机仅有2台,功能简洁,精度要求不高,又由于购置的单片机集成了USB转串口芯片PL2303,可直接连接PC的USB接口,因此我们改用USB串行通信,若要掌握两台单片机需要2个USB口,USB-Hub可将一个COM扩展成另外数个不同COM口,将单片机连接至转换后的COM口,PC就可以通过向不同COM口发送指令来掌握不同下位机了,一个简洁的集散系统就是这样实现的。通信无非就两种方向:(1)PC向单片机发送(2)单片机向PC发送。本系统将以上二者分开实现。前者是PC发送指令,单片机执行。例如:在PC上选择某个单片机,点击“点亮LED灯”,然后该单片机就会点亮相应LED灯,通信成功。后者是单片机向PC发送数据,PC接收。注意这里单片机是不能主动发数据的,需要PC的掌握指令触发。例如:在PC操作界面上选择单片机,并且点击“采集数据”,被选中的单片机则会采集数据并发送给PC,PC接收单片机采集的数据并显示,通信成功。ﻩ2。2系统概图系统的结构主要由三部分组成:(1)上位机系统;(2)下位机系统;(3)通信系统.上位机为PC,界面用VB编制,人机交互良好;下位机为2片AT89C52单片机,驱动程序采纳C语言编制;通信系统采纳USB串行通信。如图2。1所示。图2。1系统概图2.3系统总体运行图 本设计有一台主机,两台从机。各台从机之间不能相互通信。主机通过转变COM口选择从机,向其发送掌握指令和数据指令.从机处于从属地位,接收到上位机命令后进入串口中断,推断对比,要么执行诸如LED等亮的功能;要么进行数据采集,向PC发送数据。这里从机不能主动向主机发送数据,只能等待主机发送“允许从机发送数据指令”后,方可向主机发送数据。若要实现数据采集功能,主机需实行查询方式,每隔一段时间对从机查询一次。系统的运行过程是这样的:单片机始终在执行着自己的主函数,等待PC触发串口中断.PC在操作员的掌握下向单片机发送数据,单片机接收到串行数据,触发串行中断程序,对主机发送的指令数据进行推断对比,执行相应的指令.这里会有两种不同的功能,一种是单片机自己内部执行,仅对诸如LED灯、数码管、点阵等输出外设进行操作,另一种是单片机采集输入外设的数据,传送给PC上位机.一切执行结束后,单片机会结束中断回到主程序,连续等待PC触发中断。运行流程如图2.2所示。图2.2系统总体运行图ﻬ2.4系统功能模块系统功能共分两个模块,PC掌握单片机模和PC采集单片机的键值模块。前者对应PC发送数据,单片机接收;后者对应单片机发送数据,PC接收。PC掌握单片机模块检测:PC向某单片机发送检测指令,该单片机返回一串字符串至PC.点亮发光二极管:PC向某单片机发送该指令,该单片机点亮相应LED灯。熄灭发光二极管:PC向某单片机发送该指令,该单片机熄灭全部LED灯。点亮数码管时钟:PC向某单片机发送该指令,该单片机点亮数码管,显示PC上设定的相应时间,并且开头走秒。ﻩ熄灭数码管时钟:PC向某单片机发送该指令,该单片机熄灭数码管。点亮点阵:PC向某单片机发送该指令,该单片机点阵显示相应的点阵外形。熄灭点阵:PC向某单片机发送该指令,该单片机熄灭点阵。(二)PC采集单片机的键值模块 这里的键值是指单片机按键对应的值。在数码管上显示,初值为0,手动增减,按+键,则数值开头增加,按-键则数值减小,该键值可以用来模拟温度压力等物理量经过AD转换之后的数值(由于硬件和时间缘由,没有用温度传感器进行全真模拟,其实键值模拟采集和它的核心原理是一样的)。PC定时发送键值采集指令,对两个单片机进行轮换查询。每一个PC指令都会触发单片机的中断,让其发送键值数据至PC。PC采集之后进行越限报警和绘制图表等处理。2。5系统设计步骤系统设计总共分四个步骤:硬件选择与连接:设计硬件结构图并且购置相关硬件.通信协议的设计:统筹上位机与下位机,设计二者兼容的通信协议.单片机下位机的驱动程序C编程与调制:依据单片机硬件资源及系统需要实现的功能,设计下位片机的驱动。PC上位机的操作界面VB编程与调制:利用VisualBasic6.0设计一目了然、通俗易懂的操作界面.ﻬ第三章系统硬件设计3.1硬件结构 本系统硬件组成部件有:PC上位机、USB集线器、2个单片机(这里PL2303集成在了单片机之上),系统硬件结构如图3.1所示。图3.1硬件结构图3。2上位机PC与USB集线器PC就是众所周知的个人电脑,具有强大的数据处理能力,而且有良好的人机交互界面,很适合于做上位机,实现监控功能,本设计主要利用PC机USB通用串行通信接口进行串行通信。USB—HUB[2]就是一个USB接口扩展工具,能将PC上的一个USB口转换为数个不同USB口,单片机自身集成的USB驱动芯片可以将USB信号转化为单片机可以接收的TTL电平,故单片机可以直接连接至USB-HUB扩展出来的USB接口.PC通过查询不同USB口即可以掌握与该口连接的单片机。像树的主干一样,HUB是各分枝的汇合点,而根是PC,叶是单片机。HUB是一个共享设备,其实质是一个中继器,而中继器的主要功能是对接收到的信号进行再生放大,以扩大网络的传输距离。在网络中,集线器主要用于共享网络的建设,是解决从服务器直接到桌面的最佳、最经济的方案.在交换式网络中,HUB直接与交换机相联,将交换机端口的数据送到桌面。使用HUB组网灵敏,它处于网络的一个星型结点,对结点相连的工作站进行集中管理,不让出问题的工作站影响到整个网络的正常运行。由于HUB在网络中的重要作用,所以对于它的选型也是格外重要的。本设计选用的是一转四的一般USB集线器。3.3芯片PL2303图3.2PL2303芯片PL2303[3]是Prolific公司生产的一种高度集成的RS232-USB接口转换器,可供应一个RS232全双工异步串行通信装置与USB功能接口便利联接的解决方案。该器件内置USB功能掌握器、USB收发器、振荡器和带有全部调制解调器掌握信号的UART,只需外接几只电容就可实现USB信号与RS232信号的转换,能够便利嵌入到各种设备;该器件作为USB/RS232双向转换器,一方面从主机接收USB数据并将其转换为RS232信息流格式发送给外设;另一方面从RS232外设接收数据转换为USB数据格式传送回主机。这些工作全部由器件自动完成,十分便利.PL2303的高兼容驱动可在大多操作系统上模拟成传统COM端口,并允许基于COM端口应用可便利地转换成USB接口应用,通讯波特率高达6Mb/s。在工作模式和休眠模式时都具有功耗低,是嵌入式系统手持设备的抱负选择.该器件具有以下特征:完全兼容USB1.1协议;可调节的3~5V输出电压,满意3V、3.3V和5V不同应用需求;支持完整的RS232接口,可编程设置的波特率:75b/s~6Mb/s,并为外部串行接口供应电源;512字节可调的双向数据缓存;支持默认的ROM和外部EEPROM存储设备配置信息,具有I2C总线接口,支持从外部MODEM信号远程唤醒;支持Windows98,Windows2000,WindowsXP等操作系统;28引脚的SOIC封装,如图3。2所示。本设计采纳PL2303作为USB—RS232转换芯片,省去了原本MAX232芯片转换及相关总线的连接。而且PL2303可以同时给单片机供电,使系统线路更加简洁。ﻬ3。4单片机省略第四章系统软件设计4.1通信协议4。1.1异步串行通信协议(1)串行通信[7]串行通信是指所传送数据的各位按挨次一位一位地发送或接收。其特点是只需一对传输线,适合于长距离传输,但通信速度较并行通信时慢。随着通信技术的进展,串行通信速度不断提高,使得计算机网络通信普遍采纳串行通信方式.计算机掌握系统中各站间的数据传递及与信息管理系统间的数据交换都采纳了串行通信方式。(2)波特率波特率(BaudRate)是串行通信中的一个重要的指标。它定义为每秒钟传送二进制数码的位数,单位是位每秒,用bps、bit/s或b/s表示。在串行异步通信中,波特率为每秒传送的字符数与每个字符位数的乘积。例如,如果每秒传送的速率为120字符/s,而每个字符包含10位(1个起始位、7个数据位、l位奇偶校验、l位停止位),则波特率为:120字符/s´10b/字符=1200bps现在异步通信的波特率可达100Mbps,当采纳光纤作为传输介质时,传输波特率更高.(3)通信制式按通信线路上信息传送方向与时间的关系,可分为三种通信制式:单工通信、半双工通信和全双工通信。主要叙述一下半双工制式,由于本设计就是半双工制式。半双工制式系统中的两个站都由一个发送器和一个接收器组成,通过收发开关接到一根通信线上。在这种制式下,数据能从甲站传送到乙站,也能从乙站传送到甲站,但是不能同时在两个方向上传送,只能交替的发送和接收。其收发开关是由软件掌握的电子开关,通过半双工协议进行功能切换的。(4)串行异步通信[8]串行异步通信ASYNC(AsynchronousDataCommunication)是一个字符一个字符地按帧传送数据的方式。开头一个起始位“0”,接着是5~8位数据位,且规定低位在前、高位在后,然后是一个奇偶校验位,最后加上一个停止位“1”表示字符的结束。若数据没有筹备好则以空闲字符“1”来填充,直到数据筹备好形成下一帧.一帧信息包含1个起始位、5~8个数据位、1个奇偶校验位、1~2个停止位。无信号传送时,为停止位(高电平)状态,当消灭起始位(低电平)时,表示数据传送开头。因此停止位到起始位的电平转换,即为同步信息。进行异步通信时,收发双方必须有两项约定:一是帧信息格式,即字符的编码形式、奇偶校验形式、起始和停止位的格式等;二是传送速率。串行异步通信在向外发送字符时,由于在字符的首尾分别附加了一个起始位和停止位。因此,传送效率较低,传送速率较慢。(5)本设计ﻩ本设计采纳异步串行通信,波特率设为9600bps,一帧数据由1位起始位、8位数据位、无奇偶校验位、1位停止位共10位组成.半双工通信制式,同一时间信号只能单方向流通,但是主从机双方都可以发送和接收。ﻩ单片机串行口按方式1工作,波特率由定时器T1掌握。设置语句为:TMOD=0x21;ﻩﻩ ﻩ//设置T1为工作方式2,自动循环装入初值ﻩTH1=0xfd;ﻩﻩﻩﻩﻩ//初值设置,比特率为9600bps TL1=0xfd;
PC串口波特率通过VB通讯控件[9]的Settings属性设置,为保证数据传送的精准性,其与单片机的波特率、数据格式必须全都。设置语句为:ﻩMscomm1。settings=“9600,n,8,1”4.1。2帧该协议有两种帧格式:指令帧和数据帧。指令帧用于确定执行何种指令,数据帧为各种功能参数.本协议中的指令帧为PC发送,数据帧PC和单片机都可以发送。帧的种类:开头帧、结束帧、数据开头标志帧、功能帧、数据帧.前四种是指令帧,最后一种是数据帧.开头帧:PC发送的指令开头。结束帧:PC发送的指令结束.数据帧:PC或者单片机发送的带有各种信息参数的数据。功能帧:PC发送的指令帧,让单片机实现各种功能,本系统定义了9种功能帧,分别对应点亮数码管、点亮点阵、点亮LED灯等功能。数据开头标志帧:PC将要开头发送数据,让单片机筹备接收,注意这里发送完数据标志帧之后紧接着发送的一帧是数据的长度(data_length),单片机接收该长度的数据之后自动停止接收数据,开头接收指令帧.对应表格如表4-1表4.1各种帧及其相应的功能PC发送的十六进制指令(帧)单片机对应的功能PC发送的十六进制指令(帧)单片机对应的功能0xFE指令开头帧0x10关键值采集帧0xFF指令结束帧0x03点亮发光二极管帧0x01数据帧开头标志帧0x04熄灭发光二极管帧0x02熄灭数码管帧0x05测试并返回字符串帧0x06点亮数码管帧0x07点亮点阵帧0x09开头键值采集帧0x08熄灭点阵帧4。2下位机(单片机)串行通信及程序设计4.2.1单片机开发环境uVision2介绍省略4.2.2下位单片机驱动程序下位机驱动程序的主要原理是串口中断接收上位机发送的数据和指令,对上位机发送的数据进行推断比较,采纳置标志位变量XXX_flag为1的方法驱动相应功能程序.下位机在没有主机发送指令的时候,始终在执行dian_zhen()和led_tube()程序。其中dian_zhen()是点亮点阵用的,开头有一个If语句,推断D_flag标志位变量是否为1,若为1则触发该段程序,点亮点阵。若不为1,则dian_zhen()相当于空指令.led_tube()主要是用来点亮LED数码管的,里边有两个If推断语句,一个是推断标志位变量T_flag,用来触发数码管时钟现实程序;另一个标志位变量是J_flag,主要用来触发采集键值时LED数码管显示键值的程序。T_flag和J_flag是不能同时为1的,但是可以同时为0,表示led_tube()函数是个空指令.程序中主要的函数及功能voidcomm_init();ﻩﻩ//初始化voiddian_zhen();ﻩﻩ//点阵显示函数voidled_tube();ﻩ //数码管赋值,其调用display()函数voiddisplay(unchard0,unchard1,unchard2,unchard3);ﻩ //数码管扫描显示voiddelay(uncharz);ﻩ//延迟函数voidmain()ﻩﻩﻩ//主函数{ ﻩcomm_init(); while(1) {ﻩﻩﻩdian_zhen(); ﻩled_tube();ﻩ}}ﻩ中断有定时器T0中断,为50ms中断一次,主要是数码管时钟精准跑秒所用;另一个中断是串行中断,每来一个字节数据中断一次。串口中断尤为重要,是单片机通信系统的核心程序,其主要做的事情就是推断主机来的指令到底是让单片机执行什么功能,利用if—elseif语句进行推断选择,然后置相应功能标识位为1,触发主程序中内置的功能模块,进而实现相应功能。现展现串口中断程序如下,内部有简略解释。voidser()interrupt4ﻩ//串口中断。{ﻩRI=0;ﻩTI=0;ﻩﻩﻩ ﻩﻩES=0; ﻩﻩ//注意每次执行串行中断程序时都要先关中断,以免数据丢失。if((SBUF==0xfe)&&(controls_flag==0)&&(data_length==0))//指令开头标志ﻩﻩﻩ{ﻩctlstart_flag=1;L_flag=0;data_length=0;ﻩ}elseif((SBUF==0xff)&&(data_length==0))ﻩ//指令结束标志,清全部flag为0ﻩﻩ { ctlstart_flag=0;controls_flag=0;ii=0; }ﻩﻩelseif((SBUF==0x05)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩﻩ{ﻩ//检测指令,单片机流水灯,并发送“it'sok!”至PCﻩﻩﻩ for(i=0;i<2;i++)ﻩﻩﻩ {P0=~(1<<i);delay(100);}ﻩﻩ ﻩfor(i=0;i<len_s0;i++)//若接收到,则发送相关字符串ﻩﻩﻩﻩ{ﻩﻩ ﻩﻩﻩL_flag=1; ﻩﻩﻩﻩSBUF=s0[i];ﻩﻩ ﻩwhile(TI==0);//始终等到发送完了再往下执行ﻩﻩﻩﻩ TI=0;ﻩ ﻩﻩ} ﻩﻩ}elseif((SBUF==0x01)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩ {ﻩcontrols_flag=1; }//开头发送数据标志,下一帧就是数据elseif((SBUF==0x02)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩ { T_flag=0;ﻩ }ﻩ//熄灭数码管标志elseif((SBUF==0x03)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩ ﻩ{ﻩP0=a[0];ﻩﻩ}ﻩ//点亮LED灯elseif((SBUF==0x04)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩﻩ{ﻩP0=0xff;ﻩﻩ}ﻩ//熄灭LED灯elseif((ctlstart_flag==1)&&(controls_flag==1))//接收数据长度ﻩﻩﻩ{ﻩcontrols_flag=0;data_length=SBUF;ii=0; }elseif((ctlstart_flag==1)&&(data_length>0)) ﻩﻩ{ﻩ//接收数据,直到data_length为0表示接收数据结束ﻩﻩﻩﻩa[ii]=SBUF;ﻩﻩ ﻩii++;ﻩﻩ ﻩdata_length-—;ﻩ ﻩ ﻩ}elseif((SBUF==0x06)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩ {ﻩ//点亮数码管ﻩ ﻩ a0=a[0]/16;a1=a[0]%16;a2=a[1]/16;a3=a[1]%16;ﻩﻩﻩﻩT_flag=1;J_flag=0;ﻩﻩ }elseif((SBUF==0x07)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0)) ﻩﻩ{ﻩD_flag=1;ﻩﻩ}ﻩﻩ //点亮点阵标志elseif((SBUF==0x08)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩ ﻩ{ D_flag=0;P0=0xff;P2=0xff;ﻩ}ﻩ//熄灭点阵elseif((SBUF==0x09)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0)) ﻩ{ ﻩ ﻩ ﻩ ﻩﻩ//开头键值采集ﻩﻩﻩﻩJ_flag=1;T_flag=0;ﻩﻩ SBUF=temp_shi; ﻩﻩ while(TI==0);ﻩﻩﻩ ﻩ//键值发送ﻩﻩﻩﻩTI=0; ﻩﻩﻩSBUF=temp_fen;ﻩﻩﻩﻩwhile(TI==0);ﻩﻩﻩﻩTI=0;ﻩﻩﻩﻩ ﻩ}elseif((SBUF==0x10)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩﻩ{ﻩJ_flag=0; } ﻩﻩ//关闭键值采集 ES=1; ﻩﻩﻩﻩﻩ ﻩﻩ//开中断}ﻬ4.3上位机(PC)串行通信及程序设计4.3。1PC界面开发环境VisualBasic6.0介绍省略4.3.2PC上位机界面程序编制(一)VB串行通信方法ﻫ上位机利用VisualBasHYPERLINK”http://www.cibu.cn/tech/search_ic_page_1/”ic6.0编程。用VB6。0开发串行通信程序有两种法,一种是利用Windows的API函数;另一种是采纳VB6.0的通信控件MSComm。利用API函数编写串行通信程序较为简洁,需要掌握大量的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为简洁的低层次通信程序。而VB6。0的MSComm通信控件供应了标准的大事处理函数、大事、方法,并通过控件属性对串口参数进行设置,比较容易地解决了串口通信问题。
ﻩMSComm控件具有功能完善的串口数据发送和接收功能,是VB6。0供应的ActiveX控件,使用前需将该控件添加到VB工具栏:工程→部件,选择MicrosoftcommControl6.0,那么控件工具箱内便会多出一个标志,这就是串行通信主要使用的控件。PC利用MSComm控件发送数据方法简洁,直接把数据(十六进制)存入某一byte变量中,然后赋值给MSComm.output即可.PC利用MSComm控件接收数据的方式有两种,即大事驱动方式和查询方式,大事驱动方式是利用MSComm控件的OnComm大事捕获并处理通信错误大事,是处理串行端口交互的一种很有效的方法;查询方式是通过查询Mscomm.input中缓存的数据。后者比较适合于主从系统,主机不想接收从机数据的时候就不去查询Mscomm.input,若是使用MSComm控件的OnComm大事触发主机接收数据,在主机比较繁忙的时候从机发送数据也会触发OnComm大事,主机不得不响应该大事,使得主机很被动。本设计采集数据时就是采纳了查询方式,用Timer2定时器查询Mscomm。input中单片机发送的数据,100ms触发一次。PC利用MSComm控件接收的数据有两种数据格式,字符格式和二进制格式.本设计采纳的是后者,由于前者只能接收ASCii码128以下的可见字符,其他的接收会发生混乱,如果按二进制数据接收方式,接收之后再进行相应码制转换,就不会消灭混乱现象。选择二进制数据接收方式的语句是:Mscomm。InputMode=comInputModeBinary。(二)VB窗口界面设计本设计仅有一个窗体,窗体上放置一个带有两个选项的选项卡。第一个选项卡是PC掌握单片机实现某些功能,核心通信方向是PC→单片机;其次个选项卡是PC采集单片机键值数据,核心通信方向是单片机→PC。窗体界面如图4.15和4.16所示.●对于图4.15,主要进行单片机功能展现。选择单片机,可以实现多种功能,例如:测试通信,如若通信成功则返回单片机内置的一串字符串,指示灯闪烁绿色并且单片机流水灯点亮;点亮\熄灭数码管时钟,可以设置时分;点亮\熄灭指定LED等;点亮\熄灭点阵,可以对点阵自行设计图形。当鼠标移动到某个功能区域时,提示信息框会提示使用者如何去操作和相关注意事项。图4.15单片机功能模块展现选项卡1图4.16键值采集与报警●对于图4.16,主要进行键值采集与报警.点击开头采集则开头对键值数据进行采集,坐标图上开头显示单片机键值曲线(横坐标表示时间,最大值可以设定,纵坐标表示键值,坐标轴区域内可以用鼠标做标记)。点击键值数据,则键值数据以文本形式显示,便于查阅.设定报警上限之后,若是键值达到该值,那么左下角越限报警栏指示灯开头报警闪烁。(三)程序说明● 对于图4。15单片机功能模块展现选项卡,主要进行的是PC向单片机发送指令,这几个模块的编程原理都差不多,现在摘录其中的一个典型功能“点亮点阵”的程序进行介绍。ﻩ欲依据操作者设计的图形点亮点阵,首先应该产生一个数据,单片机接收该数据后能识别并点亮点阵。这就需要软件与硬件的统一。ﻩ8×8点阵显示的原理是动态扫描8列,每扫一列就给该列数据口送一个字节的数据,扫8列就需要8个数据。VB操作界面上设计了一个和实物一样的8×8点阵,这八个数据就是PC扫描8×8复选框得出的结果,复选框是一个控件数组,容量为64,分别是check2(0)~check2(63)。ﻩ数据生成了,下一步要解决的就是如何让单片机顺利接收。通信协议设计了一个数据开头标志帧(0x01),用来让单片机开头接收数据,PC发送该帧后紧接着发送数据块长度(data_length),单片机接收到了这个长度帧,立即开头将以后data_length长度的帧都暂存到某一数组中,用来点亮点阵。本功能有8个数据,故data_length值为8。ﻩ单片机接收到PC发送的数据之后存储起来,此时PC需要发送一个点亮点阵指令(0x07),单片机才开头扫描点阵,从而点亮点阵.ﻩ经过以上分析,欲实现点亮点阵功能,PCVB程序大致的思路是:扫描复选框控件数组→发送0xFE(指令开头标志)→发送0x01(开头发送数据块标志)→发送0x08(数据块长度为8)→发送数据块→发送0xFF(指令结束)→发送0xFE(指令开头标志)→发送0x07(点亮点阵,即让单片机开头扫描点阵)→发送0xFE(指令开头标志)。单片接收之后依据内置程序扫描点阵的每一列,然后依次取暂存的数据给点阵数据口,点阵就这样被点亮了。VB程序如下:PrivateSubCommand4_Click()Dimi%,j%ﻩﻩﻩ'声明两个临时变量Callopen_portﻩﻩ’open_port是一个过程,用来打开com口IfCommand4.Caption="点亮点阵”Then '该if是用来转变按钮上显示的字,并依据这些字选择不同的功能ctrl_data(1)=&HFEﻩ'指令开头ctrl_data(2)=&H1ﻩﻩ'数据开头标志ctrl_data(3)=&H8 ﻩ'数据长度为8Forj=0To7'扫描复选框空间数组’分8次送行值--—>a[i],大循环之后a[0]~a[7]中存的即是每行值Fori=(0+8*j)To(7+8*j)IfCheck2(i).Value=1Thenctrl_data(j+4)=ctrl_data(j+4)Or(2^(i-8*j))Elsectrl_data(j+4)=ctrl_data(j+4)And(Not(2^(i-8*j)))EndIfNextiﻩNextjctrl_data(12)=&HFFﻩ ﻩ'指令结束标志MSComm1.Output=ctrl_data ’全部指令数据筹备妥当后,发送ctrl_data(1)=&HFEﻩﻩﻩ'数据发送完了,下面要发送一个点ctrl_data(2)=&H7 ﻩﻩ '亮点阵的指令0x07ctrl_data(3)=&HFFMSComm1.Output=ctrl_dataCommand4。Caption="熄灭点阵"ElseIfCommand4.Caption="熄灭点阵"Thenctrl_data(1)=&HFEﻩﻩ '0x08是熄灭点阵的指令ctrl_data(2)=&H8ctrl_data(3)=&HFFMSComm1.Output=ctrl_dataCommand4.Caption=”点亮点阵”EndIfEndSub●ﻩ对于图4.16键值采集与报警选项卡,这是一个查询程序,通过timer2计时器不停的查询采集。点击采集键值之后,驱动整个程序自行运转的核心就是这个timer2计时器,timer计时到时(设计定时是100ms),执行一次内置程序。程序事先选择了某一com口,对该com口进行采集、数据处理,之后改为另一com口,等待下一次计时时间到就会采集和处理另一com口的数据了,这样便实现了PC机对两片单片机的轮流查询.ﻩ数据采集很简洁,首先PC向单片机发送采集指令(0x09)→延迟等待(单片机硬件发送相对于VB软件会很慢)→单片机发送数据→PC采集并对数据进行处理→切换com口,等待计时器计时到,从而对另一片单片机进行采集. 数据处理包括三大部分:一是转码,来的数据是二进制数据,转化成字符串在TEXT空间显示并且补零。二是绘图,键值曲线的绘制主要是在这里完成的,利用pic.line(x1,y1)-(x2,y2)进行绘制。三是越限报警,采集的数据与设定的上限进行对比,若是越限了就点亮指示灯.下面摘录该计时器程序着重说明一下。PrivateSubTimer2_Timer()OnErrorResumeNextﻩﻩ‘有错误不提示,直接执行下一条指令Dimi%,buff$ﻩﻩ ﻩ‘buff字符串用来暂存采集的数据并显示在text上buff=""Fori=1To20ctrl_data(i)=0NextIﻩﻩﻩﻩ ‘清掌握指令,防止遗留数据引起混乱Ifkeycollect_flagThen ‘keycollect_flag是“键值采集"按键按下的标志IfkeybThenﻩkeyb ﻩﻩﻩﻩ‘用来切换com口MSComm1.PortOpen=FalseMSComm1.CommPort=8ﻩ‘选择com8,与硬件有关MSComm1.InBufferSize=2ﻩ‘输入缓存容量为2个字节MSComm1.InputLen=0ﻩ‘接受输入缓存区全部字节MSComm1.PortOpen=Trueﻩ‘开com口ElseMSComm1.PortOpen=FalseMSComm1.CommPort=9ﻩ‘选择com9,与硬件有关MSComm1.InBufferSize=2MSComm1.InputLen=0MSComm1.PortOpen=TrueEndIfcollect_data=MSComm1.Inputﻩ‘清空输入缓存ctrl_data(1)=&HFEctrl_data(2)=&H9ﻩ ﻩ‘键值采集指令ctrl_data(3)=&HFFMSComm1.Output=ctrl_dataﻩ‘发送delay(0.05)ﻩ ﻩ ‘延迟等待单片机接受并返回数据collect_data=MSComm1.Input ‘接收键值i=LBound(collect_data)ﻩﻩ‘补零后存入buff字符串Ifcollect_data(i+1)<=9Andcollect_data(i)〉9Thenbuff=collect_data(i)&"0”&collect_data(i+1)ElseIfcollect_data(i+1)<=9Andcollect_data(i)〈=9Thenbuff="0”&collect_data(i)&"0”&collect_data(i+1)ElseIfcollect_data(i+1)>9Andcollect_data(i)<=9Thenbuff=”0”&collect_data(i)&collect_data(i+1)Elsebuff=collect_data(i)&collect_data(i+1)EndIfIfkeybThenText5.Text=buffﻩ在text上显示pic。Line(lastx1,lasty1)—((Timer—t0)*2800/x_max,Val(Text5.Text)*0。276) ﻩﻩ上面这句是单片机1的键值曲线绘制程序,利用pic。line绘制曲线,Timer是系统时间,t0是坐标零点时系统时间,它俩之差(Timer-t0)表示采集了多长时间。x_max是坐标最大值,2800/x_max表示一秒在pic图像框上多长距离,其值乘以(Timer-t0)就可以表示横坐标在pic图像框上的长度了。0.276表示的键值变化一在pic图像框上走多少距离,这是由pic图相框的简略大小计算出来的,是固定的,Val(Text5.Text)*0。276就可以表示纵坐标在pic图像框上的长度了。lastx1、lasty1是上一次直线的终点,作为这次直线绘制的起点,这样绘制的曲线就是连续的了。lastx1=(Timer-t0)*2800/x_maxlasty1=Val(Text5.Text)*0.276IfVal(Text5。Text)>Val(Text7.Text)Thenshan1_flag=True ‘越限报警Elseshan1_flag=FalseEndIfElseText6.Text=buffpic.Line(lastx2,lasty2)—((Timer-t0)*2800/x_max,Val(Text6。Text)*0.276),vbBlueﻩﻩ‘单片机2键值曲线绘制程序,曲线绘制原理‘‘和单片机1的键值曲线绘制相同。lastx2=(Timer—t0)*2800/x_maxlasty2=Val(Text6。Text)*0。276IfVal(Text6.Text)>Val(Text8。Text)Thenshan2_flag=TrueElseshan2_flag=FalseEndIfEndIfkeyb=Notkeyb com口切换If(Timer—t0)>(x_max+2)Thenﻩﻩ‘横坐标超出绘制范围提示MsgBox"超出绘图范围,请设置一个适当的横坐标最大值,并重新采集!",vbInformation+vbOKOnly,"超出范围"Timer2。Enabled=Falsekeycollect_flag=Falseshan1_flag=Falseshan2_flag=FalseText5.Text=""Text6。Text="”Command6。Enabled=TrueCommand7.Enabled=FalseEndIfEndIfEndSub
结束语经过近两个月的理论学习与上机编程,本集散系统终究设计成功并顺利运行.整个过程可以用五个字来形容:痛并快乐着。痛是由于读代码、写代码十分枯燥繁琐,有时候运行不成功就是由于那么一个小小的分号或者花括号,很容易让人精神崩溃;而快乐是由于真真正正的学到了知识,当看到设备按着自己的要求抱负运行时那种成就感,是平常课堂学习无法体会到的。我从以下两个方面对自己的这次毕业设计做一下总结:收获在这个系统设计过程中我受益匪浅,感慨颇丰,由于篇幅限制,现简要概述如下:刚开头做系统,我是一头雾水,不知从何下手,我借了数本关于串行通信、VB和单片机的书,看了也许有一个多月,看完之后合上课本,脑中一片空白。于是我筹备做硬件,边做边学。购置了两片单片机,开头一个功能一个功能的编程,突然发现之前在书本上看的知识几乎一点没用到,懊悔自己没有早点下手实践.单片机部分很快就熟识了,购买的最小系统学习版上的全部资源我都可以灵敏利用,最后将这些模块一个一个的集成在一块,就基本构成了现在的下位机驱动系统。在单片机的编程中,我最大的收获就是学会了如何使用标志变量,也就是编程中消灭的flag变量,用该变量可以触发某段程序,也可以关闭某段程序。这种思想贯穿了整个程序,使整个程序得以相互交织,相互联系。还有一个难点就是单片机的数据发送,由于系统是主从系统,从机无法主动向主机发送数据,必须等待主机发送“允许从机发送数据指令”,这样就有一个问题,主机发送了“允许指令”,从机发送是需要时间的,怎么才能保证从机发送的数据被主机精准接收呢?原来我设计的是让从机在main函数中始终发送,从而主机可以随时接收都有数据在缓存中,但这有造成了两大问题:一是如何让主机从这一大堆连续数据中按挨次挑出从机数据,另一问题是从机始终在发送,发送的时候是要关中断的,如果这时主机发送命令,从机是无法接收到的。解决这两个问题,我采纳了主机延迟接收和从机在串口中断中发送数据的方式.为了实现主从机通信,必须设计通信协议,我选择了通用的通信格式:9600bps波特率、10位一帧。我设计了一种独特的指令模式,那就是带有数据长度的数据块,主机发送的指令带有0x01,表示这发送的是数据块,然后下一帧是数据长度data_length,下几帧是数据块,从机接收要推断是否0x01,若是则接收长度data_length的数据块,存入某暂存数组中,接收完毕筹备接收下一个指令,这样主机就可以发送任意长度的数据了。我看了某些教材写的是格式固定的指令模式。即数据块不能多不能少,就是这么些帧。数据少时就要发送一些空数据来填补,造成多余通信,既浪费时间又浪费通信资源;数据多时又分批发送,可能会造成数据接收混乱.我的这种带数据长度的数据块发送模式,可以说本设计的一大亮点。至于主从机通信的硬件铺设,肯定要从实际动身。我原来打算用RS485总线来实现,但是需要很多芯片,诸如232/485转换芯片、MAX485芯片,相应的资金就会增加。主从机的协议也会增加一部分筛选过程,由于这样设计出来的系统采纳广播方式,主机发送到的数据从机都可以接收到,为了甄别从机,主机首先要发送一个地址片选标志,从机接收该标志后对比筛选,相应的从机筹备接收数据,其他从机连续等待地址标志,这样设计又给从机驱动增加了很多负担。本设计要求的通信距离不是很远,从机数量仅有两片,而且最重要的是我购置的单片机集成了PL2303芯片,该芯片可以把USB信号和RS232芯片进行相互转换,所以我们的通信采纳USB线路,中间利用USB—HUB扩展接口。经过以上设计,主从机就可以顺利通信了。用VB编制上位机的界面是重头戏,VB很好上手,功能也很强大,过去学习C的时候始终面对的不是蓝屏就是黑屏,连个窗口也没有,鼠标也不能用,界面十分丑陋,使用十分不便利,现在突然面对对象,感觉格外新奇,制作完成之后还可以生成。exe文件或者程序安装包,在其他任何一部电脑上均可安装执行。VB的控件十分丰富,本设计仅仅用了一个Mscomm控件就解决了全部串行通信的问题。刚开头看串行通信的教材,看到码制传输转换那一块几乎不知所云,上机之后才发现,这都不能算是问题,一天编程胜我读十年书。VB和单片机不一样,VB是键盘和鼠标触发的大事进行驱动的,而要进行数据采集的时候我考虑过两个方法,一是采纳OnComm大事触发,一是采纳Timer定时器触发,经过实战检验,我还是选择了Timer定时器触发。还有图相框绘制曲线图这一块,我是严格仿照教材上的程序编制的,如果让我自己琢磨,估量漏洞百出,耗时巨大!站在前人的肩膀上,可以少走很多弯路。不足该系统还存在着很大的不足,主要体现在以下几个方面:由于时间缘由,系统硬件方面直接购置了现成的51学习版和USB集线器,我主要的精力全部放在了软件上,对硬件很不熟识.以后有时间可以自行焊制一块51最小系统,加深对硬件的理解。系统用键值数据来模拟温度、压力等物理量,没有真正的实际采集处理这些物理量,导致系统不直观不有用。以后若是资源充足,可以采纳ds18b20对温度进行采集,对其他物理量可以采纳一些传感器和AD/DA芯片进行采集。系统采纳USB通信,通信长度太短,从机数量不多,可以采纳RS-485进行通信来弥补这一块的缺失。主机采集上来的数据不能存储和打印,关闭程序就会导致数据丢失。存储可以生成.dat文件或者写入数据库,打印可以用VB设计器生成报表。该系统通信方式有一些可以改进升级之处,比如从机可以主动向主机发送数据,不必等待主机发送“允许发送数据指令”;还有就是两从机之间也可以进行通信。这一块可以用主机的软件编程来实现,首先应采纳OnComm大事触发,接收从机发送的数据,比较并执行相应功能.这里需要重新设计通信协议。
致谢四年高校生活即将结束,掀掉这一页,我们又要去描绘新的一页.在这个收尾处,我认认真真地完成了一次毕业设计,算是为自己的高校生涯画上了一个完善的句号。回想这四年的高校学习生活,不算完善,但很充实;没留下多少傲慢,但留下了很多回忆。感谢那些一块学习一块生活的同学,感谢那些教授我知识、教育我做人的老师们,感谢你们陪伴和见证我长大,感谢你们给我平坦给我知识,感谢你们让我走过一段美妙快乐的高校生活。在这次毕业设计过程中,首先要感谢王培进老师的全力支持、热心关怀和悉心教育。他公务繁忙,却抽出很多时间来实验室对我们进行指导和关切,我常常问一些很天真很基本的问题,他总是很急躁很细致的讲给我听,这让我很是感动。还有刘老师和孙老师,他们始终都在关注着我的设计进度,始终鼓励我大胆设计,督促我不要偷懒,对我起了很好的激励和鞭策作用,让我有干劲有动力去克服困难和接受挑战,感谢他们。还要感谢在实验室陪我一起设计的战友们,在我遇到瓶颈的时候,我首先想到的总是这些同学们,他们给了我很多灵感和技术上的帮助,感谢他们。ﻬ参考文献[1] 百度空间.串行通信[EB/OL][2008-07-16]。http://hi.baidu.com/%CE%D2_%D4%B5_%C4%E3/blog/item/1ff89b588df4b2d89d8204dd.html[2]ﻩHYPERLINK"http://passport.baidu.com/?business&aid=7&default_tab=2&un=%C7%B0%B6%A8%C8%E7%B4%F3%BA%A3"\l"3"\o"查看此用户资料"\t"_blank”百度百科.USBHUB[EB/OL][2011-02—21].http://baike。baidu.com/view/392413.htm[3]ﻩHYPERLINK”http://space。eechin/space—29642.html”Tommy。PL2303中文资料[EB/OL][2011—2-16].http://www.eechina.com/redirect。php?tid=54203&goto=lastpost[4]ﻩ赵建领编著.51系列单片机开发宝典[M]。北京:电子工业出版社,2007[5] 何立民编著.单片机高级教程--—-应用与设计[M].其次版。北京:北京航空航天高校出版社,2007[6]ﻩ谢宜仁主编.单片机有用技术问答[M].北京:人民邮电出版社,2003[7]ﻩ晁阳编著.单片机MCS-51原理及应用开发教程[M].北京:清华高校出版社,2007[8]ﻩ李朝青编著.单片机原理及接口技术[M].北京:北京航空航天高校出版社,2007[9]ﻩ范逸之,陈立元编著.VisualBasic与RS-232串行通信掌握[M]。北京:清华高校出版社,2008[10]ﻩ戴仙金主编。51单片机及其C语言程序开发实例[M]北京:清华高校出版社,2008[11]ﻩ郑海春,谢维成主编。VisualBasic编程及实例分析教程[M].北京:清华高校出版社,2007ﻬ附录A下位机程序代码#include<reg52.h>#include<string.h>#include<intrins.h〉#defineuncharunsignedchar#defineunintunsignedint#defineshumaP0ﻩﻩﻩﻩﻩ//定义P0口为数据口sbitLED_0=P1^0;sbitLED_1=P1^1;sbitLED_2=P1^2;sbitLED_3=P1^3;sbitadd=P2^0;ﻩﻩﻩﻩﻩﻩ//加按键定义sbitdec=P2^1;uncharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82,0X7f};uncharctlstart_flag=0,controls_flag=0,data_length=0,T_flag=0,L_flag=0,D_flag=0,J_flag=0;unchartt,i,j,led=1,ii=0;unchars0[]={"It’sok!!"};uncharlen_s0=sizeof(s0);unchara0,a1,a2,a3,a4,a5,b0,b1,b2,b3;staticunchara[20];inttemp_shi,temp_fen;voidcomm_init();voiddian_zhen();voidled_tube();voiddisplay(unchard0,unchard1,unchard2,unchard3);voiddelay(uncharz);voidmain(){ﻩﻩcomm_init(); while(1)ﻩ{ﻩ ﻩdian_zhen();ﻩﻩled_tube();ﻩ}}voidcomm_init(){ TMOD=0x21;ﻩﻩﻩﻩ//设置T1为工作方式2ﻩTH1=0xfd;ﻩﻩﻩﻩ//装入初值,比特率为9600bpsﻩTL1=0xfd;ﻩTR1=1;ﻩﻩﻩ ﻩ//开启T1ﻩREN=1;ﻩﻩ ﻩﻩ//接收允许ﻩSM0=0;ﻩ ﻩﻩ //方式1ﻩSM1=1;ﻩEA=1;ﻩﻩﻩ ﻩES=1;ﻩPS=1;ﻩﻩﻩ ﻩﻩTH0=(65536-50000)/256;ﻩTL0=(65536—50000)%256;ﻩﻩET0=1; TR0=1; P0=0xff;ﻩT_flag=0;J_flag=0;ﻩ}ﻩvoiddian_zhen(){ﻩif(D_flag==1) {ﻩﻩfor(i=0;i<8;i++) ﻩ{ﻩ ﻩ if(D_flag==0)break;ﻩ P0=a[i];P2=~(1〈<i);ﻩﻩﻩdelay(1); ﻩ } }}voidled_tube(){ﻩ if(T_flag==1)ﻩ{ﻩﻩdisplay(a0,a1,a2,a3);ﻩ if(tt==0)ﻩﻩ{ﻩﻩﻩP0=0x7f;ﻩﻩ LED_1=0;ﻩﻩﻩfor(i=20;i>0;i--);ﻩ ﻩLED_1=1;ﻩﻩ}ﻩ}ﻩif(J_flag==1) {ﻩﻩif(add==0) ﻩ{ﻩ ﻩdelay(5);ﻩﻩﻩtemp_fen++;ﻩﻩ if(temp_fen〉99)ﻩ ﻩﻩ{ ﻩ ﻩﻩtemp_shi++;ﻩﻩ ﻩ temp_fen=0;ﻩ ﻩif(temp_shi>99) ﻩﻩﻩﻩ{temp_shi=0;temp_fen=0;}ﻩﻩ ﻩ}ﻩﻩ} ﻩelseif(dec==0)ﻩ {ﻩﻩﻩdelay(5);ﻩﻩﻩtemp_fen--;ﻩﻩﻩif(temp_fen〈0)ﻩﻩ {ﻩﻩﻩﻩtemp_shi-—; ﻩﻩﻩtemp_fen=99;ﻩ if(temp_shi〈0)ﻩ ﻩ {temp_shi=99;temp_fen=99;}ﻩﻩﻩ}ﻩﻩﻩ}ﻩﻩb0=temp_shi/10;ﻩﻩb1=temp_shi%10;ﻩﻩb2=temp_fen/10;ﻩ b3=temp_fen%10;ﻩﻩdisplay(b0,b1,b2,b3); ﻩﻩ}}voiddisplay(unchard0,unchard1,unchard2,unchard3){ shuma=table[d0]; LED_0=0;ﻩdelay(1); LED_0=1;ﻩshuma=table[d1];ﻩLED_1=0; delay(1);ﻩLED_1=1;ﻩshuma=table[d2];ﻩLED_2=0;ﻩdelay(1);ﻩLED_2=1;ﻩshuma=table[d3];ﻩLED_3=0;ﻩdelay(1);ﻩLED_3=1;}voidtimer0()interrupt1ﻩ//定时器T0中断{ﻩﻩTH0=(65536—50000)/256;ﻩTL0=(65536-50000)%256;ﻩtt++;ﻩif(tt==20)ﻩ{ﻩﻩtt=0;ﻩﻩa5++;ﻩﻩif(L_flag==1)ﻩﻩ{ﻩﻩﻩled=_crol_(led,1); P0=~led;ﻩ }ﻩ}ﻩif(a5>9)ﻩ{ﻩﻩa5=0;ﻩﻩa4++; } if(a4〉5)ﻩ{ ﻩa4=0;ﻩﻩ a3++; } if(a3〉9)ﻩ{ﻩ ﻩa3=0;ﻩ a2++;ﻩ}ﻩif(a2〉5)ﻩ{ﻩﻩa2=0;ﻩﻩa1++;ﻩﻩ}ﻩif(a1>3)ﻩ{ﻩ ﻩif(a0==2) { a0=0;a1=0;ﻩ}ﻩ ﻩelseif(a1〉9)ﻩﻩ{ ﻩﻩa1=0;ﻩﻩﻩa0++;ﻩ }ﻩﻩ}}voidser()interrupt4ﻩﻩ//串口中断{ﻩRI=0;ﻩTI=0;ﻩﻩﻩﻩﻩﻩES=0; if((SBUF==0xfe)&&(controls_flag==0)&&(data_length==0))ﻩ ﻩ{ﻩctlstart_flag=1;L_flag=0;data_length=0;ﻩ}ﻩelseif((SBUF==0xff)&&(data_length==0))ﻩ ﻩ{ﻩctlstart_flag=0;controls_flag=0;ii=0;ﻩ}ﻩ ﻩelseif((SBUF==0x05)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0)) ﻩﻩ{ﻩﻩﻩﻩﻩfor(i=0;i<2;i++)ﻩﻩﻩ {P0=~(1<〈i);delay(100);}ﻩﻩﻩﻩfor(i=0;i<len_s0;i++)//若接收到,则发送相关字符串 ﻩ {ﻩﻩﻩﻩﻩﻩL_flag=1;ﻩﻩﻩﻩ SBUF=s0[i]; ﻩ ﻩ while(TI==0);//始终等到发送完了再往下执行 ﻩﻩﻩ TI=0;ﻩ ﻩ }ﻩ }ﻩelseif((SBUF==0x01)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩﻩ{ﻩcontrols_flag=1;ﻩ}ﻩelseif((SBUF==0x02)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩ ﻩ{ﻩT_flag=0;ﻩﻩﻩﻩ}ﻩelseif((SBUF==0x03)&&(ctlstart_flag==1)&&(controls_flag==0)&&(data_length==0))ﻩﻩﻩ{ﻩP0=a[0];ﻩ}ﻩelseif((SBUF==0x04)&&(ctlstart_flag==
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国L形扎带行业发展研究报告
- 2025至2030年中国2,3-二氢吡喃市场现状分析及前景预测报告
- 2025至2030年三叶方形风压式工业排气扇项目可行性研究报告
- 2025至2030年PU超强建筑胶项目可行性研究报告
- 企业信息系统的维护与升级策略
- AI在公共交通优先信号系统中的应用
- 传统文化对现代企业管理的影响与启示
- 企业形象设计原则与实践
- 幼儿卫生保健教育课件
- 人教版生物七年级上册全册教案
- GB/T 27703-2011信息与文献图书馆和档案馆的文献保存要求
- GB/T 11379-2008金属覆盖层工程用铬电镀层
- RCS9200五防在线运行系统
- GB 30978-2014饮水机能效限定值及能效等级
- 五年级下册道德与法治知识点填空
- 2022年初级纯碱生产工理论考试题库(汇总版)
- 生态环境部卫星环境应用中心第一次公开招考3名项目工作人员模拟试卷【共500题附答案解析】
- 三年级下册美术教案及课后反思-第10课 图形的联想|浙美版
- 强迫症ppt精品课件
- 《食品感官分析技术》最全完整版课件全套教学教程
- 三年级下册数学课件-4.1 整体与部分 ▏沪教版 (共21张ppt)
评论
0/150
提交评论