直流电机PWM恒速控制器_第1页
直流电机PWM恒速控制器_第2页
直流电机PWM恒速控制器_第3页
直流电机PWM恒速控制器_第4页
直流电机PWM恒速控制器_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

直流电机恒速控制器摘要:当今,自动化控制系统已经在各行各业得到了广泛的应用和发展,而直流驱动控制作为电气传动的主流在现代化生产中起着主要作用。长期以来,直流电机因其转速调节比较灵活,方法简单,易于大范围平滑调速,控制性能好等特点,一直在传动领域占有统治地位。它广泛应用于数控机床、工业机器人等工厂自动化设备中。随着现代化生产规模的不断扩大,各个行业对直流电机的需求愈益增大,并对其性能提出了更高的要求。为此,研究并制造高性能、高可靠性的直流电机控制系统有着十分重要的现实意义。本文介绍一套基于单片机的直流电机恒速控制器,根据系统的要求完成了整体方案设计和系统选型,针对所设计的控制方案对控制系统的软、硬件设计作了详细论述。硬件部分先作了整体设计,然后介绍了以51单片机为核心的硬件构成,对键盘电路、测量电路和显示电路等作了详细阐述;软件部分采用模块化设计思想,编制了各个模块的流程图。论述了软件的设计思想和方法。针对直流电机运行环境恶劣、干扰严重的特点,从系统的硬件设计、软件设计等多方面进行抗干扰的综合考虑,并利用多种软件和硬件技术来提高和改善系统的抗干扰能力,有效地提高了系统的可靠性和实用性。关键词:直流电机单片机恒速控制目录TOC\o"1-5"\h\z摘要 2\o"CurrentDocument"第1章绪论 4\o"CurrentDocument"1.1引言 41.2单片机控制调速系统 4\o"CurrentDocument"第2章PWM调速系统介绍 5\o"CurrentDocument"PWM技术简介 5\o"CurrentDocument"2.2直流电动机的PWM调速 7\o"CurrentDocument"第3章系统硬件的具体设计与实现 9\o"CurrentDocument"1微控制器概述 9\o"CurrentDocument"3.1.1主控芯片STC89C52简介 9\o"CurrentDocument"3.1.2时钟电路设计 12\o"CurrentDocument"3.1.3复位电路设计 13\o"CurrentDocument"3.2直流电动机工作电路 14\o"CurrentDocument"3.3数码管显示电路 163.4按键电路设计 17\o"CurrentDocument"5转速测量电路设计 20\o"CurrentDocument"3.6电源电路 20\o"CurrentDocument"第4章软件设计 21\o"CurrentDocument"KeilC5简介 21\o"CurrentDocument"2主程序设计 22\o"CurrentDocument"4.3PWM控制程序设计 22\o"CurrentDocument"第5章论文总结 24\o"CurrentDocument"致谢 25参考文献 26程序一:电路原理图 27\o"CurrentDocument"附录二:程序 28第1章绪论1.1引言在电气时代的今天,电机在工农业生产、人们日常生活中起着十分重要的作用。直流电机是最常见的一种控制电机、在各领域中得到广泛应用。直流电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。与交流电机相比,直流电机结构复杂,成本高,运行维护复杂。但是直流电机具有良好的调速性能、较大的起动转矩和过载能力强等许多优点。近年来,直流电机的结构和控制方式都发生了很大的变化,随着计算机进入控制领域以及新型的电力电子功率元器件的不断出现,采用全控型的开关功率元件进行脉宽调制(pulsewidthmodulation,简称PWM)已成为直流电机新的调速方式。这种调速方式具有开关频率高、低速运行稳定、动态性能优良、效率高等优点,更重要的这种调速方式很容易在单片机控制中实现,因此具有很好的发展前景。1.2单片机控制调速系统单片微型计算机的诞生是计算机发展史上的一个新的里程碑。近年来,随着技术的发展和进步,以及市场对产品功能和性能的要求不断提高,直流电动机的应用更加广泛。直流电动机的起动和调速性能、过载能力强等特点显得十分重要。而作为单片嵌入式系统的核心——单片机,正朝着多功能、多选择、高速度、低功耗、低价格、大存储容量和强I/O功能等方向发展。随着计算机档次的不断提高,功能的不断完善,单片机已越来越广泛地应用在各种领域的控制、自动化、智能化等方面,特别是在直流电动机的调速控制系统中。这是因为单片机具有很多优点:体积小,功能全,抗干扰能力强,可靠性高,结构合理,指令丰富,控制功能强,造价低等。所以选用单片机作为控制系统的核心以提高整个系统的可靠性和可行性。1.3本文任务要求本文所要完成的是基于单片机的直流电机恒速控制设计,选用PWM技术作为直流电机的调速原理。由按键输入速度要求,经单片机进行数据处理后输出控制信号,调节电机的转速,并由数码管显示预定速度与实际速度。本文根据设计要求,拟定了总体的设计方案,完成了单片机系统、LED显示、按键、测速、直流电动机各部分电路的硬件设计,完成了主程序、中断、PWM控制各部分程序的软件设计,并对软硬件进行了分别的调试,最后经过整理总结,完成了论文的撰写。第2章PWM调速系统介绍PWM技术简介PWM(PulseWidthModulation)——脉冲宽度调制,广泛应用在从测量、通信到功率控制与变换的许多领域中。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。PWM控制技术一直是变频技术的核心技术之一。1964年A.Schonung和H.stemmler首先提出把这项通讯技术应用到交流传动中,从此为交流传动的推广应用开辟了新的局面。从最初采用模拟电路完成三角调制波和参考正弦波比较,产生正弦脉宽调制SPWM信号以控制功率器件的开关开始,到目前采用全数字化方案,完成优化的实时在线的PWM信号输出,可以说直到目前为止,PWM在各种应用场合仍在主导地位,并一直是人们研究的热点。由于PWM可以同时实现变频变压反抑制谐波的特点。由此在交流传动及至其它能量变换系统中得到广泛应用。PWM控制技术大致可以为为三类,正弦PWM(包括电压,电流或磁通的正弦为目标的各种PWM方案,多重PWM也应归于此类),优化PWM及随机PWM。正弦PWM已为人们所熟知,而旨在改善输出电压、电流波形,降低电源系统谐波的多重PWM技术在大功率变频器中有其独特的优势(如ABBACS1000系列和美国ROBICON公司的完美无谐波系列等);而优化PWM所追求的则是实现电流谐波畸变率(THD)最小,电压利用率最高,效率最优,及转矩脉动最小以及其它特定优化目标。在70年代开始至80年代初,由于当时大功率晶体管主要为双极性达林顿三极管,载波频率一般最高不超过5kHz,电机绕组的电磁噪音及谐波引起的振动引起人们的关注。为求得改善,随机PWM方法应运而生。其原理是随机改变开关频率使电机电磁噪音近似为限带白噪音(在线性频率坐标系中,各频率能量分布是均匀的),尽管噪音的总分贝数未变,但以固定开关频率为特征的有色噪音强度大大削弱。正因为如此,即使在IGBT已被广泛应用的今天,对于载波频率必须限制在较低频率的场合,随机PWM仍然有其特殊的价值(DTC控制即为一例);别一方面则告诉人们消除机械和电磁噪音的最佳方法不是盲目地提高工作频率,因为随机PWM技术提供了一个分析、解决问题的全新思路。采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。PWM控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在上世纪80年代以前一直未能实现。直到进入上世纪80年代,随着全控型电力电子器件的出现和迅速发展,PWM控制技术才真正得到应用。随着电力电子技术、微电子技术和自动控制技术的发展以及各种新的理论方法,如现代控制理论、非线性系统控制思想的应用,PWM控制技术获得了空前的发展。到目前为止,已出现了多种PWM控制技术,根据PWM控制技术的特点,到目前为止主要有相电压控制、线电压控制、电流控制、空间电压矢量控制、矢量控制、直接转矩控制、非线性控制、谐振软开关8类方法。PWM控制技术以其控制简单,灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。主要应用在电力电子技术行业,具体讲,包括风力发电、电机调速、直流供电等领域,由于其四象限变流的特点,可以反馈再生制动的能量,对于目前国家提出的节能减排具有积极意义。由于当

今科学技术的发展已经没有了学科之间的界限,结合现代控制理论思想或实现无谐振软开关技术将会成为PWM控制技术发展的主要方向之一。2.2直流电动机的PWM调速在现代化的生产实践中,直流电机的应用是相当广泛的。伴随着电子技术的发展,以及现代控制理论的应用,直流电机控制技术也得到了很大的发展。直流电动机的调速性能较好,且起动转距较大,能在很宽的范围内平滑调速,调速比大,起制动性能好,定位精度高。因此常用于调速控制系统,称之为直流传动系统。在直流电机的调速控制系统中,速度调节主要通过改变电枢电压大小来实现,经常采用晶闸管相控整流调速或大功率晶体管脉宽调制调速两种方法,后者就是PWM。PWM常见于中小功率系统,其工作原理是:通过改变接通脉冲的宽度,改变直流电机电枢上电压的占空比,即方波高低电平的时间比,从而改变电枢电压的平均值,控制电机的转速。图2.1PWM调速原理图2.1PWM调速原理由图2.1可知,电动机两端得到的电压平均值U可用下式表示为:avU=t汀XU=aU (2-1)av a' pwm pwm式中t-开关每次接通的时间,aT-开关通断的时间周期,a-占空比。由公式(2.1)可见,改变PWM脉冲的占空比,电动机两端的电压平均值U也av随之改变,从而电动机的转速得到了控制。如今的直流调速系统多采用数字化控制,并运用现代控制理论所提供的控制算法,这也是电气传动控制系统的发展方向。而PWM调速系统以其主电路线路简单、功率元件少、开关频率高、其控制水平从1000Hz可达到4000Hz、电机电流连续、低速性能好、谐波少、稳态精度高、脉动小、损耗和发热都较小、调速范围宽、调速系统频带宽、快速响应性能好、动态抗扰能力强等优点而成为运用最广泛的数字化控制方法。PWM调速的直流电机驱动电路主要性能指标如下所示。1、 输出电流和电压范围。它决定着电路能驱动多大功率的电机。2、 效率。高的效率不仅意味着节省电源,也会减少驱动电路的发热。要提高电路的效率,可以从保证功率器件的开关工作状态和防止共态导通(H桥电路可能出现的一个问题,即两个功率器件同时导通使电源短路)入手。3、 对控制输入端的影响。功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电路,这可以用高的输入阻抗或者光电耦合器实现隔离。4、 对电源的影响。共态导通可以引起电源电压的瞬间下降造成高频电源污染,大电流可能导致地线电位浮动。5、 可靠性。电机驱动电路应该尽可能做到:无论加上何种控制信号,何种无源负载,电路都是安全的。采用微机来完成直流电机PWM调速器的设计,不仅简化了系统的结构,提高了系统的性价比,而且经实践证明,整个系统的精度、快速性以及可靠性等动态、静态指标都取得了令人满意的结果。PWM既经济、节约空间、抗噪性能又强,是一种直流电机调速中广泛应用道技术。第3章系统硬件的具体设计与实现本系统由单片机作为直流电动机反馈控制的核心,系统中包括主控模块、电动机驱动模块、电动机控制模块、显示模块、键盘模块、转速检测模块、电源模块等几部分。系统框图如图3.1所示。以下分别对这几部分模块进行阐述。图3.1硬件系统框图微控制器概述计算机的产生加快了人类改造世界的步伐,但是它毕竟体积庞大。微控制器(单片机)就是在这种情况下诞生的。微控制器,亦称单片机或者单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。它的结构与指令功能都是按照工业控制的要求设计的,在智能控制系统中,微控制器得到了广泛的应用。单片机目前已被广泛地应用于家电、医疗、仪器仪表、工业自动化、航空航天等领域。市场上比较流行的单片机种类主要有Intel公司、Atmel公司、Philip公司和宏晶公司的8051系列单片机,Motorola公司的M6800系列单片机,Intel公司的MCS96系列单片机以及Microchip公司的PIC系列单片机等。各个系列的单片机各有所长,在处理速度、稳定性、I/O能力、功耗、功能、价格等方面各有优劣。这些种类繁多的单片机家族,给我们单片机的选择也提供了很大的余地。3.1.1主控芯片STC89C52简介STC89系列单片机是MCS-51系列单片机的派生产品。而我们采用的STC89C51RC是宏晶科技推出的新一代超强抗干扰/高速/低功耗的单片机。它们在指令系统、硬件结构和片内资源上与标准8051单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。STC89系列单片机高速(最高时钟频率80MHz)、低功耗,具有在系统和在应用可编程(ISP,IAP),不占用户资源。主要性能包括有:80C51核心处理器单元,故80C51的汇编语言可以直接移植到这里;3V/5V工作电压,操作频率0〜33MHz;5V工作电压,操作频率0〜40MHz(STC89C52RC实际最高可达80MHz);大容量内部数据RAM,1K字节RAM;64/32/16/8KB片内Flash程序存储器,具有在应用可编程(IAP),在系统可编程(ISP),可实现远程软件升级,无需编程器;(5)支持12时钟(默认)或6时钟模式;双DPTR数据指针;SPI(串行外围接口)和增强型UART;PCA(可编程计数器阵列),具有PWM的捕获/比较功能;4个8位I/O口,含3个高电流P1口,可直接驱动LED;3个16位定时器/计数器;可编程看门狗定时器(WDT);低EMI方式(ALE禁止);兼容TTL和COMS逻辑电平;掉电检测和低功耗模式等。而其中STC单片机最大的优势在于以下四点:最大可拥有1kbit片内RAM(数据存储器)普通的8051系列单片及片内RAM只有128(8051)或256(8052)字节,低128字节(地址:00H〜7FH),可直接或间接寻址,高128字节(地址:80H~FFH),只可间接寻址。STC89系列单片机另外增加了768字节的片内扩展RAM,以解决众多技术人员在编程时的RAM资源严重缺乏的问题。768字节的片内扩展RAM(地址:000H~2FFH)与外部扩展RAM地址重叠,单片机可通过软件设置AUXR.1,决定是否使用片内扩展RAM,以防止可能的与外部扩展RAM的冲突,默认为使用片内扩展RAM。64K片内Flash(程序存储器)STC89系列单片机按芯片型号分别有64/32/16/8K片内Flash,分为2个Flash存储块:Block0和Block1°2个Flash存储块在物理上Block0在前,lock1在后。通过REMAP功能可以将Flash块重定位。图3.2所示是STC89C52RC的程序存储器结构。FFFFHEM«=-0印朴FFFFHEM«=-0印朴1SfCF|l:C(|±OCiEAff=15FCF|l:Cfl=01rrrrnrrrirnEOtlOHB电血BkxklEllDOHE帰血Bh»k1DFFfHDFFFHEKwrualKByte&Ewn-al扣帆日止Ealeirnal24KSyte7FFFHI24KByteBkxifa7FFF!H70KH32KBylu1FFFHB电血Bkxklg:M?H&MOH KBC-H£Af=1SFCF](10]iMn11图3.2STC89C52RC程序存储器结构ISP技术ISP主要应用于在线(或远程)升级,通过执行ISP引导码改写用户程序,无须编程器,无须亲临现场。STC89系列单片机在出厂时,片内已经烧录有ISP引导码,占用Block1的程序空间前2K字节,并设置为从Blockl启动。启动时,首先执行ISP引导码,确认是程序下载,还是正常启动。无论是程序下载还是正常启动,ISP引导码最后总是将REMAP取消,恢复Block0在前8K的地址空间,进而执行Block0中的用户程序,即用户程序总是放在Block0的00H开始的单元,除非用户自行修改了ISP引导码。图3.3是STC单片机的ISP在线下载应用程序的工作界面,此软件最新版本为V4.8版,可以在STC官方网站上免费下载。Euph'B^L:SulwcLKUfjinUK翠片吟空*FioscjrE.ybJlfWlT ™oWff11Euph'B^L:SulwcLKUfjinUK翠片吟空*FioscjrE.ybJlfWlT ™oWff11轉!:伴|_rw_|HDU^工盤彌|TtbetwFll-ii汕崗‘卿frlgnFilw.'杆开範悴门?|¥P®P)千用区HB■迫]KtalMJ>»ri站1H3~'I PtTffiftfc剤迅中 伽时崩|B—| 詳杆开期祜:履冲ETnm■宙g1™~3* MH4?X]]猛也dfiUt<AfeetTZEfl!i»ae5fli= 阿工]加憫『阅円i£ST!1csr^•断中EMIfi[中*h打555WW:广BT.r^>l•¥堆足iiTwtesna 广侃口也痔mi锂x冋豪处氐™yTii^ansa可14血事皿TX^fcVi.o.rtn.3肓勻1谄?无矣厂甬于mm侗下觐决童罰ASTBfcn-ufl 「馳止W问T:^TnmPE»i!fiiw«ftU!ii—hG-fl:wwrf宦歯w曲pv诽盼7疮曲Tlf比”嘲媲關吐电Utz谒单[SciriVTtI II归曲心懂貫柚Ir^ryw«uflftswa^ft-a«sh««厂姐荷屮■砌主Eft6fi]£ti^s-I44^PKE«ETfcA4-wit«((((■DCCCCDHXCCD«»MDHMXKD[««-[■K(cnti0曲、w«wW«wCiCUCCD[««(■[OKI*c«cn>ccoicciJMXnO[<■»»»»wwwro^»»»»QElMlMlxlggggaaIMlMlMlM>Hix]>x]>x]ai3除al«-WWWnnnmWM»WWWwwwwmH妙aoaoQCIoaoaoaoaoclaoaoaoaoICKIEgagaglwar««««rawuMaMmmmwftMMMHWNNNn.HMMWWWwwwHODs^gggg闻通連ODs^mgggiwalIMIM!»il]il]il]il]闻IMIMIMIMagaixJix]血頌In«««ram址宾ISJtCTR|fcHFK|tifiKvriHSk^M|倔iwjlL蚣.TW敝阳Im*C5iKiW.加岸占me宙滴鼬用円雅盅肿躺厂戸芳盹序fstt遴■序F3.b'lxlr:F3.b'lxlr:l.'TiDiflijIS*;*;M计3 CLw|fl*1—・—g,u申牯底科fj邛|FHEn^aHr.*res广w»rRHW1A'^:i霞可图3.3STCISPV4.8软件运行界面STC89系列单片机IAP技术IAP功能就是在应用可编程,利用该功能,就可将本不具有EEPROM的单片机具有相当于EEPROM的功能,而且存储空间远大于EEPROMoIAP不能对自身所在的Block编程,即当程序运行在Block0时,可编程的是Block1;当程序运行在Block1时,可编程的是BlockO。根据这个特点,通过REMAP功能可设置在应用编程的Flash的大小。STC89由美国设计,在台湾生产,是目前在相同性能条件下价格最优的一个品种。STC89的高性能及低价格能为设计带来相当的大技术改进和经济的效益。3.1.2时钟电路设计P1.0P1.1P1.2P1JP3.4P1.5P]再PL7RESE1X2XIP1.0P1.1P1.2P1JP3.4P1.5P]再PL7RESE1X2XIVSSvcc30pF■1039Is363424~2TVCCPO.Opn,iP02.PQJP0.4P0.5P0.6P0„7EA-*WA1E-PPSENP2JP2.6P2.5P2.4PZJP22P2.1P2.0图3.4单片机及外围电路STC89C52RC内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图3.5(a)所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2〜12MHz之间选择,电容值在5〜30pF之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图3.5(b)所示,XTAL1接地,XTAL2接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz

的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟Pl和P2,供单片机图3.5(a)内部方式时钟电路OCTJ使用。在本设计中,使用的是如图3.5(a)图3.5(a)内部方式时钟电路OCTJn图n图3.5(b)外部方式时钟电路3.1.3复位电路设计复位操作复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表3-1所示。表3-1一些寄存器的复位状态PCICONMHAttTUi(»H希时刚TWO他H怖Ill翊hrfwTH1i闭P吟旳tFMStONW-HIfw托惮0恸思5BUF不圧IE瞰网刚氐OXX買饶财BTMODia-1复位信号及其产生RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。产生复位信号的电路逻辑如图3.6所示。略I'Vm

略I'Vm图3.6复位信号的电路逻辑图整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图3.7(a)所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图3.7(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的,其电路如图3.7(c)所示。彳VccC+ZZ.nF-iR彳VccC+ZZ.nF-iR>RJiT/VpolldlJL图3.7(a)上电复位1R^t/VfuI(b)按键电平复位VccRESET|图3.4复位信号的电路逻辑图VggRESET廿b~i

I爲j

B卜n22fiFT<-KST.Wm(c)按键脉冲复位上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。本系统的复位电路采用图3.7(b)上电复位方式。3.2直流电动机工作电路单片机输出端输出的PWM调速信号的电流很小,不足以驱动直流电机正常工作,所以在单片机输出端口和直流电机中间必须加入驱动电路。我选用NPN型三极管作为驱动电路来控制直流电机,它构成的驱动电路具有结构简单、工作稳定、电流放大效果明显等优点。如图3.8所示。本文设计的核心单元主要是直流电机。在本设计中,采用的是直流小电机。直流电源通过开关线路向电动机定子绕组供电。三极管Q1与Q4,Q2与Q3在这里起到关断的作用,如果不接,则电机始终处于工作状态。当三级管的基极没有

电流流入时,三极管处于关断状态,回路不导通,直流电机无法正常工作;相反,有电流流入基极时,直流电机开始转动,电流大小不同,电机两端的电压就不同,风扇的转速也就不同了。信号经过单片机的处理,再经过三极管Q1或Q2的驱动放大后,正好控制直流电机的正转和反转。当电流流过Q2,Q3时,电机正转。流过QI,Q4时,电机反转。直流电机M的正极与+5V电源相连,负极通过三极管后接地,形成一个回路,保证电机的正常工作。直流电机和单片机使用的是同一电源,但我们采用光电耦合电路,如图3.9所示。单片机的12脚(DO_A),13脚(DO_B)发出的PWM波形信号的占空比如果为0%(即全是低电平),三极管无法导通,电机停止工作。占空比如果不为0%,电机开始转动。占空比越大,电压就越大,电机的转速也就越快,从而可以调节电机的转速。VDD,IRS4.7KCTHB013 W:5E1◎MotorD2IX-iCTHB013 W:5E1◎MotorD2IX-i!■图3.8直流电动机电路图3.9光电耦合电路3.3数码管显示电路用单片机驱动LED数码管分为静态显示和动态显示。静态显示就是显示驱动电路具有锁存功能,单片机将所要显示的数据送出后就不再控制LED,直到下次显示时再传送一次新的显示数据。静态显示的数据稳定,占用的CPU时间少。静态显示中,每一个显示器都要占用单独的的具有锁存功能的I/O接口,该接口用于笔划段字型代码。这样单片机只要把显示的字形代码发送到接口电路,该字段就可以显示发送的字形。要显示新的数据时,单片机再发送新的数据。另一种方法是动态扫描显示。由于单片机本身具有较强的逻辑控制能力,所以采用动态软件译码并不复杂。而且软件译码其译码逻辑可随意编程设定,不受硬件译码逻辑限制。采用动态扫描软件译码的方式能大大简化硬件电路结构,降低系统成本。它用分时的方法轮流控制各个显示器的COM端,使各个显示器轮流点亮。在轮流点亮扫描的过程中,每位显示器的点亮时间极为短暂,但由于人的视觉暂留现象及发光二极管的余辉效应,给人的印象是一组稳定的数据显示。静态显示数据稳定,占用极少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的点了路硬件较少;动态显示需要CPU时刻对显示器进行数据刷新,显示数据由闪烁感,占用的CPU时间多,但使用的硬件少。显示器模块由两组四位一体的共阳数码管和8个9012组成。单个LED是由7段发光二极管构成的显示单元。有10个引脚,对应于7个段、一个小数点和两个公共端。在显示电路中,这些发光二极管有两种接法:共阳极接法和共阴极接法。本设计中需要用两组四个LED组成显示单元,并采用动态显示方式。由于使用4个单个LED进行显示的连线比较复杂,同时单片机的端口驱动能力也难以保证,而需要加入专门的驱动芯片。所以,采用两组4个LED连体的、内部已将其相应段接好的共阳极LED,它具有12个引脚,含7个段和4个公共端,为提高数码管的亮度,可在位选上加入一个三极管驱动电路。在图3.10所示的由STC89C52控制的显示电路中,要选取合适的电阻R,才能保证LED的亮度,过大或者过小都无法让LED正常显示。本设计中取R为220欧比较理想。若考虑印制板布线的方便,可以采用贴片电阻和排阻来节省空间,不过本设计还是采用普通电阻。另外,也可以用74LS244和74LS06构成驱动显示电路,但这样同样要加限流电阻。因为74LS06是开漏器件,需要在输出处加上上拉电阻。

3.4按键电路设计键盘是标准的输入设备,实现键盘有两种方案:一是采用现有的一些芯片实现键盘扫描,如8279,CH451,LMC9768等,还有就是用软件实现键盘扫描。使用现成的芯片可以节省CPU的开销,但增加了成本,而用软件实现具有较强的灵活性,也只需要很少的CPU开销,可以节省开发成本。本文便使用软件实现键盘的扫描,常见的可分为独立按键式键盘和行列扫描式键盘。独立按键是直接用I/O口线构成的单个按键电路,如图3.11所示,其特点是每个按键都单独占用一根I/O口线,每个按键的工作不影响其他I/O口线的状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须要占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,不宜采用。图3.11中,按键均采用低电平有效,此时,上拉电阻保证了按键断开时,I/O口线有确定的高电平。当I/O口线内部有上拉电阻时,外电路可不接上拉电阻。独立式按键常采用查询式结构。先逐位查询每根I/O口线的输入状态,如某一根I/O口线输入为低电平,则可确认该I/O口线所对应的按键已按下,然后再转向该键的功能处理程序。

//0///0///7y1/lj1=25图3.11独立式按键 图3.12矩阵式键盘2•矩阵式按键,单片机系统中,若使按键较多时,通常采用矩阵式(也称行列式)键盘。矩阵式键盘由行线和列线组成,按键位于行、列线的交叉点上,其结构如图所示。由图3.12可知,一个4*4的行、列结构可以构成一个含有16个按键的键盘,显然,在按键数量较多时,矩阵式键盘较之独立式按键键盘要节省很多1/0口。矩阵式键盘中,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到+5V上。当无键按下时,行线处于高电平状态;当有键按下时,行、列线将导通,此时,行线电平将由与此行线相连的列线电平决定。这是识别按键是否按下的关键。然而,矩阵键盘中的行线、列线和多个按键相连,各按键按下与否均影响该键所在行线和列线的电平,各按键间将相互影响。因此,必须将行线,列线信号配合起来做适当处理,才能确定闭合键的位置。本设计采用的矩阵式键盘电路如图3.13所示。由于P2口内存有上拉电阻,所以我们这里没有接外部上拉电阻。考虑到设计的需要,这里我们只设置了16个按键,按键的功能如下。4*4键盘键值描述1 2 3 NULL4 5 6 NULL7 8 9 STOPENT

vcc图3.134*4vcc图3.134*4键盘与单片机接口电路理论上当按键按下或弹起时,可以相应的产生低电平或高电平,但实际并非如此。键盘按键一般都采用触点式按键开关。当按键被按下或释放时,按键触点的弹性会产生抖动现象。即当按键按下时,触点不会迅速可靠地接通,当按键释放时,触点也不会立即断开,而是要经过一段时间的抖动才能稳定下来,按键材料不同,抖动时间也各不相同。按键抖动可能导致单片机将一次按键操作识别为多次操作,一般采用硬件电路或软件程序来消除。效放

有释效放

有释H1.1iBJ94—I-1-i先释放抖动iII!■ii-iidJ图3.14按键抖动示意图一次完整的按键过程,包含以下几个阶段:如图3.14所示。等待阶段:此时按键尚未按下,处于空闲阶段;闭合抖动阶段:此时键刚刚按下,但信号处于抖动状态,系统在检测时应消抖延时,约5ms到20ms;有效闭合阶段:此时抖动己经结束,一个有效按键动作己经产生,系统应该在此时执行按键功能,或将按键编码记录下来,待键弹起时再执行其功能;释放抖动阶段:许多时候编程人员并不在此时消抖延时,但最好也执行一次消抖延时,以防止误操作;有效释放阶段:若设计要求在按键抬起时才执行功能,则应当在此时进行按键功能的处理。

按键击键的类型有多种划分方式:按击键时间分:短击和长击;按击键次数分:单击和连击;按特殊功能分:双击或组合键等。功能分析如下:1•短击,用户快速按下单个按键,然后立即释放;2•长击,用户长时间按下一个按键。如某些重要的功能键,复位,为防止用户误操作;3.连击,实现连续操作效果,如连续加1或减1;4•复合按键,用户同时按下两个或多个按键,实现某些特殊功能;5•无键按下,当用户在一定时间内未按任何按键,执行某些特殊的操作,如自动进入待机态或节能态。3.5转速测量电路设计光电传感器是应用非常广泛的一种器件,有各种各样的形式,如透射式、反射式等,基本的原理就是当发射管光照到接收管时,接收管导通,反之关断。以透射式为例,如图3.15所示,当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则打开。为此,可以制作一个遮光片安装在转轴上,当扇叶经过时,产生脉冲信号。123图3.16转速测量电路3.6电源电路电源电路如图3.17所示,这里分别为电路供电源与电机电源。VCCGXDGNDGNDVCCGXDGNDGND图3.17电源电路第4章软件设计KeilC51简介C是一种源于编写UNIX操作系统的语言,它是一种结构化语言,可产生紧凑代码。C结构是以括号()而不是字和特殊符号的语言。C可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;关键字及运算函数可用近似人的思维过程方式使用;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强的数据处理能力;已编好程序可容易地植入新程序,因为它具有方便的模块化编程技术。8051系列单片机作为工业标准地位,从1985年开始就有8051单片机的C语言编译器,简称C51。C51程序结构与一般C语言没有什么差别。一个C51程序大体上是一个函数定义的集合,在这个集合中有仅有一个名为main的函数(主函数)。主函数是程序的入口,主函数中的所有语句执行完毕,则程序执行结束°C51提供的数据结构是以数据类型的形式出现的,我们最常用的KeilC5l编译器具体支持的数据类型有:位型(bit)、无符号字符(unsignedchar)、有符号字符(signedchar)、无符号整型(unsignedint)、有符号整型(signedint)、无符号长型(unsignedlong)、有符号长型(signedlong)、浮点(float)和指针类型等。KeilC51编译器完全支持8051单片机的硬件结构,可完全访问8051硬件系统的所有部分。该编译器通过将变量、常量定义成不同的存贮类型(data,Nata,idata,pdata,xdata,code)的方法,将它们定位在不同的存贮区中。存贮类型与8051单片机实际存贮空间的对应关系如表4-1所示。

存贮典型与存亡空间时对应关系data直援寻址片内数据存贮区.访问速懂快门胡爭节)bdala可位寻扯片比戳搦存贮区,允许愷与字节•(£合请问〔苛字节}idatA间播可址片片fil擄存贮区,对访冋片内金部RAM地社空河w話宇节]pdata分页寻加月外數抿存贮Kf25f>字节[由MOVX④良0协网xdala片外数据存MOVX<&DPTR访问code代码存贮区⑹(O*由MOVC@DPTR访问表4-1存贮类型与存贮空间的对应关系基于单片机编程语言的上述特点,本设计采用C语言编程。为实现系统功能软件主要可分为三部分:主程序(即控制程序)、中断程序和PWM控制程序。4.2主程序设计主程序部分其实就是控制操作部分,执行各项初始化,速度调整,以及决定是否要开启中断打开定时功能,流程图如下:图4.1主程序流程图4.3PWM控制程序设计STC89C52内含两个PWM控制器,每一个都可以选择接通时间和周期。占空比是接通时间与周期之比;调制频率为周期的倒数。执行PWM操作之前,它要求在软件中完成以下工作:*设置提供调制方波的片上定时器/计数器的周期;*在PWM控制寄存器中设置接通时间;*设置PWM输出的方向,这个输出是一个通用I/O管脚;*启动定时器;*使能PWM控制器;在选择模块和工作方式后,对系统进行初始化,设置PCA时钟的模式。当时钟CL的值小于CCAP0L时,输出为低,当CL的值等于或大于CCAP0L时,输出为高。当CL的值由FF变为00溢出时,CCAP0H的内容装载到CCAP0L中。图4.2PWM调速程序流程图第5章论文总结本次设计采用STC89C52单片机,电路结构简单、体积小巧、功耗低、成本低廉,可以实现电机恒速控制。在本次系统设计过程中,我研究了PWM调速系统的基本原理,深入学习和掌握其主要设计思路和设计方法,根据选题内容和要求联系具体情况选用了相关芯片,认真查阅资料设计出了软件和硬件,并对系统进行了认真的调试。该毕业设计涉及了单片机、微机控制、C语言编程、自动控制、电机拖动等多门学科。通过设计也让我明白了许多平时很少注意的问题,由于本人主修电子信息,对自动控制的学习时间用的比较少,其中有很多知识掌握程度不够,对自动控制系统接触也较少。所以在系统设计过程中存在很多不足之处,希望在以后的工作与学习中不断地充实自己的知识结构,能够更好的学习电机拖动及自动控制方面的知识。我相信这在我以后的工作当中亦将是很有用处的,在这里诚恳地希望审议毕业设计的各位领导、老师们给与指正、批评。致谢本次毕业设计是在XXX老师的悉心指导下完成的。在这短短的几个月时间里我学到了很多东西,相信这对我以后的工作和学习会起到很大的帮助。我在这里特别感谢我的XXX老师,谢谢您!最后感谢所有帮助过我的老师和同学,祝他们工作顺利,学习进步!参考文献沈晋源,韩志军,王振波.单片机应用系统设计一入门向导与设计实例[M].北京:机械工业出版社,2005丁元杰•单片微机原理及应用[M].北京:机械工业出版社,1999张淑清,姜万录.单片微型计算机接口技术及其应用[M].北京:国防工业出版社,2000何立民•单片机应用技术选编5[M].北京:北京航空航天大学出版社,1997康华光.电子技术基础模拟部分[M].北京:高等教育出版社,1999康华光.电子技术基础数字部分[M].北京:高等教育出版社,2000李锡雄,陈婉儿•脉宽调制技术[M].武汉:华中理工大学出版社,1996陈国呈.PWM变频调速技术[M].北京:机械工业出版社,1998谭建成•电机控制专用集成电路[M].北京:机械工业出版社,1997潘新民,王燕•微型计算机控制技术[M].电子工业出版社,2003黄卫平•单片机控制的全数字锁相直流调速系统的研制[J].中国仪器仪表98.3韩志荣,黄乡生,李跃忠.AT89C51单片机在直流电机闭环调速系统中的应用[J].华东地质学院学报•第25卷•第1期70-74张民,陶卫东,刘汉玉•微机控制直流脉宽调速系统研究[J].辽宁工程技术大学学报(自然科学版)•第20卷•第3期314-316

程序一:电路原理图附录二:程序//*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*标题:直流电机控制*文件名:直流电机控制*功能描述:利用单片机的定时器0来定时,计数器1来计数,在定时器0的定时时间内计数器1来计外部脉冲数,通过定时1S来计算电机的转速(rpm).定时器2用来PWM波的发生和按键检测扫描.通过按键可以设定电机的转速和控制电机左转,右转和停止.4*4键盘键值描述123NULL456NULL7 8 9 STOP—0 —ENT#include<reg52.h>#include<math.h>#defineuint8unsignedchar#defineuint16unsignedint#defineuint32unsignedlongint#defineTIMERO_HIGHTOxDC //设置定时器0工作方式1自动装载初值,定时10ms,Fosc=11.059200MHZ#defineTIMER0_LOW0x00#defineTIMER2_HIGHT0xFC //设置定时器2工作方式为自动装载初值,定时1ms,Fosc=11.059200MHZ#defineTIMER2_LOW0x66#definePWMFULL100//定义键盘对应键值#defineNUM014#defineNUM11#defineNUM22#defineNUM33#defineNUM45#defineNUM56#defineNUM67#defineNUM79#defineNUM810#defineNUM911#defineUP4#defineDOWN8#defineLEFT13#defineRIGHT15#defineSTOP12#defineENT16/*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x*-_■•\/xh*Mr|:|r'-II*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x*//>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*ir|_*乂^4-fvozr]]>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*>f*/sbitCTRL_A=P3"2;sbitCTRL_B=P3'3;/*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x*-_■•\/xh*Mr乡一I*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x*// *y**y**y**y**y**y**y**y**y**y**y*Jrl.乂C4-f\J厶I_I *y**Y**Y**Y**Y**Y**Y**y**y**y**y*/uint8codeDispCode[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09};//共阳数码管段码表/*******************************定义数据变量*******************************/bitbtimer0flag;bitbdirection;uint16Revolution;uint16DispRevolution;uint16SetRevolution;uint8RevoCnt;uint8Timer2Cnt;uint8Timer2CntKey;uint16Timer2Cnt1S;uint8Timer2CntnS;//定时器0中断标志位//电机转向位,1:正转,bitbtimer0flag;bitbdirection;uint16Revolution;uint16DispRevolution;uint16SetRevolution;uint8RevoCnt;uint8Timer2Cnt;uint8Timer2CntKey;uint16Timer2Cnt1S;uint8Timer2CntnS;//定时器2计数器//定时器2按键扫描计数器//定时器2定时1S计数器//定时器2定时nS计数器

uint8PwmValue;bitbSetState;bitbrun;uint8SetNumber;uint8SetItemCnt;uint16DispCnt;uint8PwmValue;bitbSetState;bitbrun;uint8SetNumber;uint8SetItemCnt;uint16DispCnt;//修改转速标志位//电机运转标志位//按键修改的值//修改的位数//显示计数器/ -―■•\/yKAi*x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x**x*/乂-f-t//初始化定时器voidTimerInitProc();//初始化定时器//测量定时器定时时间内的转速//获取测量的转速值revo,uint16set_revo);//测量定时器定时时间内的转速//获取测量的转速值revo,uint16set_revo);//显示转速voidDisplay(uint8chose_dat,uint8dat);voidMeasureRevolution();uint16GetRevolution();voidShowDisp(uint16measvoidChangeSetRevolution(uint8voidDelayMs(uint8Ms);voidmain(){uint8i;voidChangeSetRevolution(uint8voidDelayMs(uint8Ms);voidmain(){uint8i;InitVar();TimerInitProc();while(1){//初始化变量//初始化定时器//主函数循环Revolution=0;//每循环一次清一次for(i=RevoCnt;i>0;i--) //定时器0定时1Oms,循环100次,测得Is的转速{MeasureRevolution(); //测量定时器定时时间内的转速ShowDisp(DispRevolution,SetRevolution);//显示测得转速和设定的转速}//把转速单位转为//把转速单位转为rpm//转换结果存放显示变量}}定时器/计数器0中断处理null定时器/计数器0中断处理nullnullnullvoidTimer0IntProc()interrupt1{TR1=0; //停止计数器1计数TR0=0; //停止定时器0TH0=TIMER0_HIGHT;//设置定时器0高字节初值TL0=TIMER0_LOW;//设置定时器0低字节初值btimer0flag=1;//定时器0中断标志置1}/////////////////////////EndofTimer0IntProc////////////////////////函数功能:定时器/计数器2中断处理入口参数:null返回:null备注:nullvoidTimer2IntProc()interrupt5{uint8key_value;TF2=0; //软件清清中断标志位if(Timer2Cnt<PWMFULL-1){Timer2Cnt++;}else{Timer2Cnt=0;}if(++Timer2CntlS==5000) //电机稳定需要一定时间,5S更改一次PWM输出值{Timer2Cnt1S=0;if(abs(SetRevolution-DispRevolution)<240) //转速误差4rpm{if(++Timer2CntnS==4)//在小于转速误差内为让电机运行稳定20S更新一次PWM输出值{if(DispRevolution<SetRevolution-100&&SetRevolution>100)//测得转速小于设定转速,加大PWM脉宽{if(PwmValue<100)PwmValue++;}elseif(DispRevolution>SetRevolution+100)//测得转速大于设定转速,减小PWM脉宽{if(PwmValue>0)PwmValue--;}Timer2CntnS=0;}}else{if(DispRevolution<SetRevolution) //测得转速小于设定转速,加大PWM脉宽{if(PwmValue<100)PwmValue++;}elseif(DispRevolution>SetRevolution) //测得转速大于设定转速,减小PWM脉宽{if(PwmValue>0)PwmValue--;}Timer2CntnS=0;}}if(Timer2Cnt<PwmValue&&brun==1)//PWM输出{if(bdirection==1) //电机正转{CTRL_A=0;CTRL_B=1;}else //电机反转{CTRL_A=1;CTRL_B=0;}}else{CTRL_A=1;CTRL_B=1;}if(++Timer2CntKey==20)//定时检测按键{Timer2CntKey=0;key_value=Key_Judge();//获取按键值switch(key_value){case0://判断按键//无按键返回break;caseNUM0://数字键,在修改状态有效if(bSetState==1){SetNumber=0;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM1:if(bSetState==1){SetNumber=1;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM2:if(bSetState==1){SetNumber=2;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM3:if(bSetState==1){SetNumber=3;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM4:if(bSetState==1){SetNumber=4;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM5:if(bSetState==1){SetNumber=5;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM6:if(bSetState==1){SetNumber=6;ChangeSetRevolution(SetItemCnt,SetNumber);break;caseNUM7:if(bSetState==1){SetNumber=7;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM8:if(bSetState==1){SetNumber=8;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseNUM9:if(bSetState==1){SetNumber=9;ChangeSetRevolution(SetItemCnt,SetNumber);}break;caseUP:caseDOWN://无效按键break;caseLEFT://左转键bdirection=0; //电机反转bSetState=0; //如果在修改状态,则退出修改状态,保存修改值SetItemCnt=0;brun=1;//启动电机运转break;caseRIGHT://右转键bdirection=1; //电机正转bSetState=0; //如果在修改状态,则退出修改状态,保存修改值SetItemCnt=0;brun=1;//启动电机运转break;caseSTOP://停止键,停止电机转动brun=0;break;caseENT://修改,确定,移位,多功能键if(bSetState==1){if(++SetItemCnt==4)//未到修改最后一位,向右移动一位修改值{bSetState=0;//修改完毕,退出修改状态SetItemCnt=0;}}else{bSetState=1;//非修改状态,进入修改状态}brun=1;break;default:break;}/////////////////////////EndofTimer2IntProc////////////////////////函数功能:定时器/计数器初始化入口参数:null返 回:null备 注:nullvoidTimerInitProc(){TMOD&=0xF0;TMOD|=0x01;//设置定时器0,方式1:16位定时器TH0=TIMER0_HIGHT;//设置定时器0高字节初值TL0=TIMER0_LOW;//设置定时器0低字节初值TMOD&=0x0F;TMOD|=0x50;//设置计数器1,方式1:16位计时器TH1=0; //设置计数器1高字节初值TL1=0; //设置计数器1低字节初值RCAP2H=TIMER2_HIGHT;//设置定时器2高字节初值,自动装载RCAP2L=TIMER2_LOW;//设置定时器2低字节初值,自动装载TR2=1;//启动定时器2ET0=1;//开定时器0中断ET2=1;//开定时器2中断EA=1;//开总中断}/////////////////////////EndofTimerInitProc////////////////////////voidInitVar(){btimer0flag=0;bdirection=1;bSetState=0;brun=1;RevoCnt=100;SetRevolution=0000;Timer2Cnt=0;Timer2CntKey=0;Timer2Cnt1S=0;PwmValue=0;SetItemCnt=0;DispCnt=0;}voidMeasureRevolution(){TH1=0;TL1=0;TR0=1;TR1=1;//定时器中断标志清0//电机正转//电机运转//转速测量次数//设定转速初值//定时器2中断计数器while(btimer0flag==0);btimer0flagRevolution}//定时器1计时清0//启动定时器0//启动定时器1开始计时//等待定时时间到0;Revolution+GetRevolution();uint16GetRevolution(){uint16meas_revo;//获取定时器定时时间内电机转动的圈数meas_revo=(TH1<<8)|TL1;returnmeas_revo;//获取定时器定时时间内电机转动的圈数}voidShowDisp(uint16meas_revo,uint16set_revo){Display(3,DispCode[meas_revo%10]);//显示测量转速的最低位meas_revo=meas_revo/10;Display(2,DispCode[meas_revo%10]);meas_revo=meas_revo/10;Display(1,DispCode[meas_revo%10]);meas_revo=meas_revo/10;Display(0,DispCode[meas_revo%10]);//显示测量转速的最高位meas_revo=meas_revo/10;Display(7,DispCode[set_revo%10]);//显示设定转速的最低位set_revo=set_revo/10;Display(6,DispCode[set_revo%10]);set_revo=set_revo/10;Display(5,DispCode[set_revo%10]);set_revo=set_revo/10;Display(4,DispCode[set_revo%10]);//显示设定转速的最高位set_revo=set_revo/10;}//*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*函数名:Display(ucharchose_dat,uchardat)*函数功能:数码管显示*入口参数:chose_dat数码管显示字位,dat显示字型*返回:无*»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L**»L*/*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论