1、基于单片机控制直流电机调速系统设计正文672020年4月19日文档仅供参考目 录第一章 引言11.1 课题的研究意义1第二章 总体设计方案22.1设计思路与原理22.2系统总体设计框图32.3系统主要参数设计原理4第三章 硬件设计53.1使用设备53.2 AT89S52单片机简介:73.3 PWM信号发生电路设计103.4 显示与键盘模块113.5 ZigBee无线收发模块113.6 转动源模块13第四章 系统的软件设计与实现144.1 系统软件简介144.2 编程语言简介144.3程序设计15第五章 上位机设计235.1 函数介绍235.2 前面板设计255.3 程序框图设计26第六章 运行
2、与调试27个人小结31参考文献41附录142第一章 引言1.1 课题的研究意义直流电机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动系统中得到了广泛的应用。近年来,交流调速系统发展很快,然而直流拖动系统无论是在理论上还是在实践上都比较成熟,而且从反馈闭环控制的角度来看,它又是交流拖动控制系统的基础,因此直流调速系统在生活中有着举足轻重的作用。虽然随着电力技术的发展,特别是在大功率电力电子器件问世以后,直流电机拖动将有逐步被交流电机拖动所取代的趋势,但在中、小功率场合,常采用永磁直流电动机。早期的直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集
3、成电路以及少量的数字电路组成,控制自通的硬件部分非常复杂,功能单一,而且系统非常不灵活,调试困难。随着单片机技术的不断进步,使得许多控制功能及算法能够采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能够达到更高的稳定性能,同时还具有软特性好,过载能力强,可进行PID调节,调速稳定等优势。因此,本课题的研究具有很好的实际意义。本次设计主要研究的是PID控制技术在运动控制领域中的应用,纵所周知运动控制系统最主要的控制对象是电机,在不同的生产过程中,电机的运行状态要满足生产要求,其中电机速度的控制在占有至关重要的作用,因此本次设计主要是利用PID控制技术对直流电机转速的控制。其设计
4、思路为:以AT89S52单片机为控制核心,产生占空比受PID算法控制的PWM脉冲实现对直流电机转速的控制。同时利用光电传感器将电机速度转换成脉冲频率反馈到单片机中,构成转速闭环控制系统,达到转速无静差调节的目的。因此该系统在硬件方面包括:电源模块、电机驱动模块、控制模块、速度检测模块、人机交互模块。软件部分采用C语言进行程序设计,其优点为:可移植性强、算法容易实现、修改及调试方便、易读等。第二章 总体设计方案2.1设计思路与原理本文主要研究了利用AT89S52单片机控制PWM信号从而实现对直流电机转速进行控制的方法。而中间利用了大家都比较熟悉的数字PID算法,以前大家用的比较多的是模拟PID算
5、法,可是由于现场的系统参数、温度等条件发生变化,使系统很难达到最佳的控制效果,因此采用模拟PID控制器难以获得满意的控制效果。数字PID不但能够实现模拟PID所完成的控制任务,而且具备控制算法灵活、可靠性高等优点,应用面越来越广。本实验还利用了Labview设计上位机来对直流电机的转速进行测量,并在Labview的前面板显示出转速,再经过Labview的串口通信反馈给单片机,然后利用数字PID算法调节转速,经过Labview实时检测转速大小。单片机直流电机调速简介:单片机直流调速系统可实现对直流电动机的平滑调速。PWM是经过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要
6、求的一种电压调整方法。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。经过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。因此,PWM又被称为“开关驱动装置”。本系统以AT89S52单片机为核心,经过单片机控制,C语言编程实现对直流电机的平滑调速。本实验主要运用的是脉冲触发(也就是上升沿触发中断)系统控制方案的分析:本直流电机调速系统以单片机系统为依托,根据PWM调速的基本原理,以直流电机电枢上电压的占空比来改变平均电压的大小,从而控制电动机的转速为依据,实现对直流电动机的平滑调速,并经过单片机
7、控制速度的变化。转速监测与反馈系统的分析:以往我们会使用测速发电机来进行转速的测量与分析,把输入的机械转速变换为电压信号输出,并要求输出的电压信号与转速成正比,分为直流与交流两种。而运用Labview(G语言)设计转速测量系统是种大胆的尝试,用Labview设计起来方便,操作简单,只要用Labview的串口通信就能够与单片机相连接,编入C代码就能实现监测功能。2.2系统总体设计框图上位机监控光电对管转动源转速显示MCUINTOP1.7模拟PWMPID调整由于上位机和单片机都具有串口,因此经常使用串口完成两者之间的数据交换,这就需要在上位端设计相应的串口通信程序。完成了与单片机的数据交换后,就能
8、在Labview的前面板实时监测转速,用上位机监测到的数据反馈给MCU,用P1.7模拟PWM,进而经过位置型PID进行调整,将数据传输给转动源,实现调整转速的功能。PWM信号的产生与放大就是在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,而且根据需要改变一个周期内“接通”和“断开”时间的长短。经过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置”。N给定PID驱动电机+2.3系统主要参数设计原理模拟PID就是在现场安装的利用DDZII或者DDZIII型表再加上其它气动仪表的模块,对现场控制变量的模
9、拟信号利用旋钮或拨盘对PID的三个值进行设定对或者手动控制输出的系统,其信号均为模拟信号。 数字PID就是把现场的控制变量的模拟信号和对现场受控变量的输出信号均转换成了数字信号,PID的实现也是经过数字信号的设定来完成的。现在大多在DCS、PLC系统内完成的。 数字PID有两种模式:位置型PID算式,增量型PID算式。增量型PID不需要做累加,控制量增量的确定仅与最近几次误差采样值有关,计算误差或计算精度问题对控制量的计算影响较小,而位置型算法要用到过去的误差累加值,容易产生大的累加误差。增量型算法得出的是控制量的增量,例如阀门控制中,只输出阀门开度的变化部分,误动作影响小,必要时经过逻辑判断
10、限制或禁止本次输出,不会严重影响系统的工作。采用增量型算法,易实现手动到自动的无冲击切第三章 硬件设计3.1使用设备ZYMCU02主机模块、显示与键盘模块、ZigBee无线收发实验模块、转动源实验模块、电脑一台(已装KEIL和STC下载软件)、导线。 实验连线表: 表3-1主台体ZigBee无线收发模块转动源ZYMCU02主机模块显示与键盘模块+24V+24VGNDGNDVout+24VGNDGND+5V+5VGNDGND频率/转速表“+”FoutP3.2频率/转速表“-”GNDP1.0KEY1(设置)P1.1KEY2(加)P1.2KEY3(减)P1.3Q7(用于指示“设置”按键的动作状态)P
11、7.7与GND之间未标示的插针P1.7P00.7LED4-H.AP20.7LED4-8.0 图3.1 ZYMCU02主机模块3.2 AT89S52单片机简介:AT89S52为 ATMEL 所生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flsah存储器。(一)、AT89S52主要功能列举如下:1、拥有灵巧的8位CPU和在系统可编程Flash2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)3、内部程序存储器(ROM)为 8KB4、内部数据存储器(RAM)为 256字节5、32 个可编程I/O 口线6、8 个中断向量源7、三个 16 位定时器/计数器8、三级加密程序
12、存储器9、全双工UART串行通道(二)、AT89S52各引脚功能介绍:图3.2VCC:AT89S52电源正端输入,接+5V。VSS:电源地端。XTAL1:单芯片系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就能够动作了,另外能够在两引脚与地之间加入一 20PF 的小电容,能够使系统更稳定,避免噪声干扰而死机。RESET:AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内
13、容均被设成已知状态,而且至地址0000H处开始读入程序代码而执行程序。EA/Vpp:EA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。另外,在将程序代码烧录至8751内部EPROM时,能够利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROG:ALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。AT8
14、9S52能够利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此能够用来驱动其它周边晶片的时基输入。另外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN:此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,一般这支脚是接到EPROM的OE脚。AT89S52能够利用PSEN及RD引脚分别启用存在外部的RA
15、M与EPROM,使得数据存储器与程序存储器能够合并在一起而共用64K的定址范围。PORT0(P0.0P0.7):端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其它三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时能够推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位
16、地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚能够推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器能够推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当
17、做定时器2的外部脉冲输入脚,而P1.1能够有T2EX功能,能够做外部中断输入的触发脚位。PORT3(P3.0P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器能够推动4个TTL负载,同时还多工具有其它的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数
18、据存储器的读取信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/P
19、SEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不论是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。3.3 PWM信号发生电路设计PWM(Pulse Width Modulati
20、on)脉宽调制。PWM的基本原理:PWM是经过控制固定电压的直流电源开关频率,改变负载两端的电压,从而达到控制要求的一种电压调整方法。PWM能够应用在许多方面,比如:电机调速、温度控制、压力控制等等。在PWM驱动控制的调整系统中,经过一个频率来接通和断开电源,就能够改变一个周期内“接通”和“断开”时间的长短,就可改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,平均电压是经过等效直流电流实现的,由冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同,冲量即指窄脉冲的面积,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置”。如图3.3所示:图3.3 P
21、WM方波设电机始终接通电源时,电机转速最大为Vmax,设占空比为D= t1 / T,则电机的平均速度为Va = Vmax * D,其中Va指的是电机的平均速度;Vmax 是指电机在全通电时的最大速度;D = t1 / T是指占空比。由上面的公式可见,当我们改变占空比D = t1 / T时,就能够得到不同的电机平均速度Vd,从而达到调速的目的。严格来说,平均速度Vd 与占空比D并非严格的线性关系,可是在一般的应用中,我们能够将其近似地看成是线性关系。 图3.4 显示与键盘模块3.4 显示与键盘模块LED动态扫描方式:动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。其接口电路是把所有显示
22、器的8个笔划段a-h同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。键盘是由一组按压式或触摸式开关构成的阵列。智能仪表键盘的设置应由该仪表具体的功能来决定,因此,智能仪表往往采用专用的功能键盘。矩阵式键盘适用于按键数量较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。在按键数量较多的场合,矩阵式键盘比独立式键盘要节省很多的I/O口。 3.5 ZigBee无线收发模块Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们
23、之间能够进行相互通信;每个网络节点间的距离能够从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还能够与现有的其它的各种网络连接。图3.5 ZigBee无线收发模块运用Zigbee的优点: 1 无网络使用费:使用移动网需要长期支付网络使用费,而且是按节点终端的数量计算的,而Zigbee没有这笔费用; 2 设备投入低:使用移动网需要购买移动终端设备,每个终端的价格在人民币1000元上下,而使用Zigbee 网络,不但Zigbee网络节点模块(相当于基站)费用每只人民币不到1000元,而且,主要使用的网络子节点(相当于手机)的价格还要低得多; 3 通信更可靠:由于现有移动网主要
24、是为手机通信而设计的,尽管CDMA-1X和GPRS能够进行数据通信,但实践发现,不但通信数率比设计速率低很多,而且数据通信的可靠信也存在一定的问题。而Zigbee网络则是专门为控制数据的传输而设计的,因而控制数据的传输具有相当的保证。 4 高度的灵活性和低成本:首先,经过使用覆盖距离不同,功能不同的Zigbee网络节点,以及其它非Zigbee系统的低成本的无线收发模块,建立起一个Zigbee局部自动化控制网,(这个网络能够是星型,树状,网状及其共同组成的复合网结构)再经过互联网或移动网与远端的计算机相连,从而实现低成本,高效率的工业自动化遥测遥控;3.6 转动源模块图3.6 转动源模块霍尔效应
25、是磁电效应的一种,利用霍尔效应在电机上安装磁片,而将霍尔集成片安装在固定轴上,经过对脉冲的计数进行电机速度的检测,表示式为UHKHIB,当被测圆盘上装上N只磁性体时,转盘每转一周磁场变化N次,每转一周霍尔电势就同频率相应变化,输出电势经过放大、整形和计数电路就能够测出被测旋转物的转速。第四章 系统的软件设计与实现4.1 系统软件简介本设计使用的软件是Keil编程软件。Keil软件是当前最流行的开发单片机的软件,Keil提供了包括编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,经过一个集成开发环境(Vision)将这些部分组合在一起。使用Keil Software工
26、具时的项目开发流程和其它软件开发项目的流程极其相似:创立一个项目,从器件库中选择目标器件,配置工具设置。用C语言或汇编语言创立源程序。用项目管理器生成应用。修改源程序中的错误。测试连接应用。4.2 编程语言简介本设计采用C语言进行编程。虽然汇编语言在控制底层硬件方面有着良好的性能且执行效率高,可是编程效率低,可移植性和可读性差,维护极其不便,从而导致整个系统的可靠性也较差。C语言与汇编语言相较而言有以下优势:能够大幅加快开发进度,特别是开发一些复杂的系统,程序量越大,用C语言就越有优势。能够实现软件的结构化编程,C语言使得软件的逻辑结构变得清晰、有条理。省去了人工分配单片机资源(包括寄存器、R
27、AM等)的工作。在汇编语言中要每一个子程序分配单片机的资源,而在C语言中,只要在代码中声明一下变量的类型,编译器就会自动分配相关资源,从而有效地避免了人工分配单片机资源可能带来的差错。当写好一个算法后,需要移植到不同的MCU上时,在汇编语言中只有重新编写代码,因而汇编语言的可移植性很差;而用C语言开发时,符合ANSI C标准的程序基本不必修改,只要将一些与硬件相关的代码做适度的修改,就能够移植到其它种类的单片机上。C语言提供data、idata、pdata、xdata、和code等存储器类型,针对单片机的内部数据存储空间、外部数据存储空间和程序空间自动为变量合理地分配空间,而且C语言提供复杂的
28、数据类型,如指针、数组、结构体等,极大地增强了程序的处理能力和灵活性。C语言较汇编语言的不足之处就是使用C语言写出来的代码会比用汇编语言占用的空间大5%20%,因此执行起来效率就不及汇编语言。4.3程序设计主程序主程序是一个循环程序,其主要思路是,先设定好速度初始值,这个初始值与测速电路送来的值相比较得到一个误差值,然后用PID算法输出控制系数给PWM发生电路改变波形的占空比,进而控制电机的转速。其程序流程图如图所示。软件由1个主程序、1个中断子程序、1个PID控制算法子程序、1个定时器子程序、3个延时子程序和2个显示子程序组成。主程序主程序是一个循环程序,其主要思路是由单片机P1.7口生数据
29、送到PWM信号发生电路,然后用PID算法输出控制系数给PWM发生电路改变波形的占空比进而控制电机的转速。主程序流程图如图3-1所示: 图3-11.主程序设计:void main() P1=0x00; SCON=0x40; PCON=0x80; TMOD=0x21; TL1=0xfa;TH1=0xfa;TH0=0XFE;TL0=0X33; ES=0;ET0=1;EX0=1; TR1=1;TR0=1;EA=1; while(1) while (key1=0|key2=0|key3=0|a=0) if(key1=0&key2=1&key3=1) while(key1=0);state_flag=st
30、ate_flag;if(state_flag=1)EX0=1;TR0=1;en =0;en_1 =0;en_2 =0;un =0; wide=150;a=1; /wide = set_count; if(state_flag=0) PWM = 0;EA=0;TR0=0;run_count=0;stop_count=0;time=0;t1=0;t2=0;display_num4(set_count);a=0; if(key1=1&key2=0&key3=1&state_flag=0) while(key2=0); delay1(20);set_count+=1;if(set_count300)
31、set_count=100;if(key1=1&key2=1&key3=0&state_flag=0) while(key3=0); delay1(20);if(set_count100) set_count-=1;if(set_count=100) set_count=300;else display_num4(stop_count); while(key1=1&key2=1&key3=1&a=1) if(time=400) time=0;stop_count=run_count/2;run_count=0;pid(); 主程序主程序是一个循环程序,其主要思路是,首先判断系统的运行模式,如果
32、KEY1键按下,且state_flag为1则系统处于运行模式,如果state_flag为0则为设置模式。如果系统处于设置模式,则关闭定时器中断和外部中断,同时初始化部分变量,KEY2为按键加,KEY3为按键减。如果系统处于运行模式,xcount开始计时,当xcount=82时,即为1s时,调用串口中断子程序,单片机开始发送数据,模拟I/O口输出PWM,此时PWM波的频率为81.43Hz,周期为12.82ms,然后调用PID函数,计算出PWM波输出的占空比,最后上位机显示转速。2. PID控制算法子程序设计:void pid(void) /PID 计算输出量 en=set_count-stop_
33、count;un=a0*en-a1*en_1+a2*en_2;/计算输出量 if(un 400)un = 400;else if(un 900)wide=900; /防止超限,确保计算饿wide值有效else if(wide10)wide=10; 位置式PID控制:增量式PID控制:从表示式我们能够得出以下结论:(1) 位置式PID控制的输出与整个过去的状态有关,用到了误差的累加值;而增量式PID的输出只与当前拍和前两拍的误差有关,因此位置式PID控制的累积误差相对更大;(2) 增量式PID控制输出的是控制量增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等,而位置式P
34、ID适用于执行机构不带积分部件的对象,如电液伺服阀。(3) 由于增量式PID输出的是控制量增量,如果计算机出现故障,误动作影响较小,而执行机构本身有记忆功能,可仍保持原位,不会严重影响系统的工作,而位置式的输出直接对应对象的输出,因此对系统影响较大。(4) PID调节器的参数整定方法有很多,但可归结为理论计算法和试测法两种。用理论计算法设计调节器的前提是能获得被控对象准确的数学模型,这在工业过程中一般较难做到。因此,实际用得较多的还是试测法。这种方法最大优点就是整定参数时不依赖对象的数学模型,简单易行。当然,这是一种近似的方法,有时可能略嫌粗糙,但相当适用,可解决一般实际问题。本文使用试测法。
35、3.延时子程序:void delay(uint time) uint i; for(i=0;itime&key1=1;i+) display_num4(stop_count);void delay1_ms(uint time) /1ms延时函数uint i,j;for(i=0;itime;i+)for(j=0;j123;j+);void delay1(uint num) uint i; for(i=0;inum;i+) display_num4(set_count);4. 显示子程序:void display_num1(uint dat,uchar num1) /指定的位上显示 指定的一位数据
36、P0=xianshidat;/段显switch(num1)case 1:P2=0x01;break;case 2:P2=0x02;break;case 3:P2=0x04;break;case 4:P2=0x08;break;default: break;delay1_ms(2);void display_num4(uint num)/四位数据显示函数uint qian,bai,shi,ge; qian=num/1000;if(qian=0)qian=11;display_num1(qian,4);bai=(num%1000)/100;if(qian=11&bai=0)bai=11;displ
37、ay_num1(bai,3);shi=(num%100)/10;if(qian=11&bai=11&shi=0)shi=11;display_num1(shi,2);ge=num%10;display_num1(ge,1);5. 外中断子程序:void int0() interrupt 0 /外部中断0用于电机转速测量EX0=0;run_count+;EX0=1;6. 定关中断开启计数器T1工作计数器清零调用子程序dis_num()将TL1中的十六进制数转换成十进制数将TL1中的计数值赋给count开启定时器T0工作定时器T0赋初值计时值+0832输入值减小/PWM占空比减小8032输入值增大
38、/PWM占空比增大0832数据口赋初值TL1计数值的十进制数赋值给out计时1s到?输出值Serialadvance 下,也能够在VISA 资源线上右键创立 属性节点串口设置Bytes at Port, Bytes at Port 这个属性节点读取当前串口缓冲区有多少字节数,然后将它的输出连接到VISA 读取的读取字节数这个输入端上即可,这样当前缓冲区中有多少个字节就读回多少个,不会有任何等待。另外,我们需要用两个开关按钮指示是否打开串口和接收数据,实现以上要求,需要两个条件结构的嵌套。4.搜索/拆分字符串 主要作用:使一个字符串拆分为两个子串。可在特定字符或子字符串上拆分字符串。在字符串中搜索/拆分搜索字符串/字符中指定的字符串或字符。该函数拆分字符串,经过匹配之前的子字符串和匹配剩余字符串返回剩余的两个字符串。如该函数没有找到搜索字符串,匹配偏移量可返回-1,匹配之前的子字符串返回整个原始字符串,匹配剩余字符串返回空字符串。 这个函数节点能够帮助我们以字符串形式保存所要接收的数据。在搜索字符串/字符输入端接入字符串常量F即可。5. 分数/指数字符串至数值转换 从偏移量位置开始,使字符串中的下列字符:0-9、加号、减号、e、E、小数点(一般是句点)解析为工程、科学或分数格式的浮点数,经过数字返