电机测速与控制论文.doc_第1页
电机测速与控制论文.doc_第2页
电机测速与控制论文.doc_第3页
电机测速与控制论文.doc_第4页
电机测速与控制论文.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

成都电子机械高等专科学校 电气与电子工程系 毕业设计论文毕业设计(论文)题目: 电机测速与控制专业:应用电子技术班级: 09221 学号: 36 姓名: 贺宗建 指导老师: 曾一江 成都电子机械高等专科学校二一二年五月摘 要在工业生产中,常会遇到各种需要测量转速的场合,转速是指作圆周运动的物体在单位时间内所转过的圈数,其大小及变化往往意味着机器设备运转的正常与否,因此,转速测量一直是工业领域的一个重要问题。例如在发动机、电动机、机床主轴等旋转设备的运转和控制中,常需要实时监控其转速以便随时调整生产方案。在使用模拟技术制作测速表时,常用测速发电机的方法,即利用传感器测得电机转动脉冲,利用脉冲计算每分钟点击转速。 这次设计内容包含知识全面,在测量系统中能学到关于测量转速的传感器采样问题,单片机部分的内容,显示部分等各个模块的通信和联调。全面了解单片机和信号放大的具体内容。进一步锻炼我们在信号采集,处理,显示方面的实际工作能力。关键词:电动机 单片机 传感器 设计要求: 1、采用单片机作为控制器实现电机的测速、加速、减速控制;2、测速结果在液晶屏或者led上显示;3、液晶屏上同时能显示实时时钟;目 录概述3单片机at89c51简介 4复位电路 7晶振电路 10按键控制模块 11显示部分设计13管脚接线13指令功能13时钟实时显示功能14电机驱动 15四相步进电机工作原理16传感器选择 17霍尔传感器 17光电传感器 18转速测量方法19转速测量原理19系统软件设计20主程序初始化20程序框图22调试步骤 26全电路仿真29总结30致谢30参考文献31附录程序代码 32概 述 目前测量电机转速的方法很多,按照不同的理论方法,先后产生过模拟测速法(如离心式转速表、用电机转矩或者电机电枢电动势计算所得)、同步测速法(如机械式或闪光式频闪测速仪)以及计数测速法。计数测速法又可分为机械式定时计数法和电子式定时计数法。传统的电机转速检测多采用测速发电机或光电数字脉冲编码器,也有采用电磁式(利用电磁感应原理或可变磁阻的霍尔元件等)、电容式(对高频振荡进行幅值调制或频率调制)等,还有一些特殊的测速器是利用置于旋转体内的放射性材料来发生脉冲信号其中应用最广的是光电式,光电式测系统具有低惯性、低噪声、高分辨率和高精度的优点加之激光光源、光栅、光学码盘、ccd 器件、光导纤维等的相继出现和成功应用,使得光电传感器在检测和控制领域得到了广泛的应用。而采用光电传感器的电机转速测量系统测量准确度高、采样速度快、测量范围宽和测量精度与被测转速无关等优点,具有广阔的应用前景。 单 片 机 晶振电路复位电路按键控制加速减速显示转换lcd显示电机驱动转速采集实时时钟实现模块设计整体思路框图各部分模块的功能: 单片机:整个设计的核心部分,对各个模块进行控制,对数据进行处理。晶振电路:提供基准频率。复位电路:对单片机进行初始化处理。控制模块:对需要实现的功能进行控制与转换切换。显示模块:通过液晶显示器lcd对转速、时钟进行显示。电机驱动:用放大电路对电机进行驱动,使电动机运转。转速采集:通过传感器采集电机转速信号送入单片机处理。时钟模块:实现时钟显示的核心,具有计时功能。单片机at89c52介绍at89c51是一种带8k字节闪烁可编程可擦除只读存储器(fperomfalsh programmable and erasable read only memory)的低电压,高性能cmos8位微处理器,俗称单片机。该器件采用atmel高密度非易失存储器制造技术制造,与工业标准的mcs-51指令集和输出管脚相兼容。由于将多功能8位cpu和闪烁存储器组合在单个芯片中,atmel的at89c52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。这是常用的一种单片机,型号为at89c52,它将计算机的功能都集成到这个芯片内部去了,就这么一个小小的芯片就能构成一台小型的电脑,因此叫做单片机。at89c51芯片 它有40个管脚,分成两排,每一排各有20个脚,其中左下角标有箭头的为第1脚,然后按逆时针方向依次为第2脚、第3脚第40脚。在40个管脚中,其中有32个脚可用于各种控制,比如控制小灯的亮与灭、控制电机的正转与反转、控制电梯的升与降等,这32个脚叫做单片机的“端口”,在单片机技术中,每个端口都有一个特定的名字,比如第一脚的那个端口叫做“p1.0”。at89c51管脚分布vcc:供电电压,gnd:接地。 p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门电流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。 p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。 p3口也可作为at89c51的一些特殊功能口。p3口管脚备选功能: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(外部数据存储器读选通)p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时, ale只有在执行movx,movc指令时ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部时钟工作电路的输入。xtal2:来自反向振荡器的输出。3振荡器特性:xtal1和xtal2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,xtal2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。4芯片擦除:整个perom阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ale管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,at89c51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,cpu停止工作。但ram,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存ram的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。复位电路 mcs-51单片机复位电路是指单片机的初始化操作。单片机启运运行时,都需要先复位,其作用是使cpu和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。复位电路复位功能: 复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。单片机的复位是由外部的复位电路来实现的。片内复位电路是复位引脚rst通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的s5p2,由复位电路采样一次。复位电路通常采用上电自动复位(如图(a))和按钮复位(如图 (b)两种方式。rc复位电路单片机复位后的状态: 单片机的复位操作使单片机进入初始化状态,其中包括使程序计数器pc0000h,这表明程序从0000h地址单元开始执行。单片机冷启动后,片内ram为随机值,运行中的复位操作不改变片内ram区中的内容,21个特殊功能寄存器复位后的状态为确定值。 寄存器复位后状态表特殊功能寄存器初始状态特殊功能寄存器初始状态abpsw00h00h00htmodtconth000h00h00hspdpldphp0p3ipie07h00h00hffh*00000b0*00000btl0th1tl1sbufsconpcon00h00h00h不定00h0*bpsw00h,表明选寄存器0组为工作寄存器组; sp07h,表明堆栈指针指向片内ram 07h字节单元,根据堆栈操作的先加后压法则,第一个被压入的内容写入到08h单元中;po-p3ffh,表明已向各端口线写入1,此时,各端口既可用于输入又可用于输出 。ip00000b,表明各个中断源处于低优先级; ie000000b,表明各个中断均被关断; 系统复位是任何微机系统执行的第一步,使整个控制芯片回到默认的硬件状态下。51单片机的复位是由reset引脚来控制的,平则执行芯片内部的程序代码,若为低电平便会执行外部程序。51单片机在系统复位时,将其内部的一些重要寄存器设置为特定的值,至于内部ram内部的数据则不变。此引脚与高电平相接超过24个振荡周期后,51单片机即进入芯片内部复位状态,而且一直在此状态下等待,直到reset引脚转为低电平后,才检查ea引脚是高电平或低电平,若为高电晶振电路 晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。at89c51单片机内部有一个用于构成振荡器的高增益反相放大器。引脚xtal1和xtal2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容c1和c2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12mhz,电容应尽可能的选择陶瓷电容,电容值约为30f。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。 晶振电路按键控制控制模块采用74ls148优先编码器,其 为 8 线3 线优先编码器,共有 54/74148 和 54/74ls148 两种线路结构型式, 将 8 条数据线(07)进行 3 线(4-2-1)二进制(八进制)优先编码,即对最高位数据线进行译码。 利用选通端(ei)和输出选通端(eo)可进行八进制扩展。通过按键实现lcd显示电机转速和实时时钟切换,同时通过按键实现加速、减速控制。优先编码器实物图07 编码输入端(低电平有效) ,ei 选通输入端(低电平有效) ,a0、a1、a2 编码输出端(低电平有效) ,gs 宽展端(低电平有效) ,eo 选通输出端。优先编码器管脚输入输出ei01234567a2a1a0gseohxxxxxxxxhhhhhlhhhhhhhhhhhhllxxxxxxxlllllhlxxxxxxlhllhlhlxxxxxlhhlhllhlxxxxlhhhlhhlhlxxxlhhhhhlllhlxxlhhhhhhlhlhlxlhhhhhhhhllhllhhhhhhhhhhlhh高电平 l低电平 x任意优先编码器功能表此设计中占用第4、5、6、7线输入,当任意端口按键按下有低电平输入,都将通过p1口输给单片机处理。译码结果:减速按键-4口:011加速按键-5口:010时钟按键-6口:001转速按键-7口:000显示部分设计(1)液晶显示简介:本设计显示部分采用lcd1602显示芯片,1602芯片字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式lcd。管脚接线功能:第1脚:vss为地电源 第2脚:vdd接5v正电源 第3脚:v0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10k的电位器调整对比度 。第4脚:rs为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:rw为读写信号线,高电平时进行读操作,低电平时进行写操作。当rs和rw共同为低电平时可以写入指令或者显示地址,当rs为低电平rw为高电平时可以读忙信号,当rs为高电平rw为低电平时可以写入数据。 第6脚:e端为使能端,当e端由高电平跳变成低电平时,液晶模块执行命令。第714脚:d0d7为8位双向数据线。 第1516脚:空脚 1602液晶模块内部的字符发生存储器(cgrom)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码指令功能:指令1:清显示,指令码01h,光标复位到地址00h位置 指令2:光标复位,光标返回到地址00h 指令3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。 d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令 dl:高电平时为4位总线,低电平时为8位总线 n:低电平时为单行显示,高电平时双行显示 f: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 (有些模块是 dl:高电平时为8位总线,低电平时为4位总线) 指令7:字符发生器ram地址设置 指令8:ddram地址设置 指令9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 (2)动态显示仿真时钟实时功能实现 本设计时钟显示通过ds1302芯片完成。它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。ds1302的引脚排列,其中vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302与cpu的连接需要三条线,即sclk(7)、i/o(6)、rst(5)。实际上,在调试程序时可以不加电容器,只加一个32.768khz 的晶振即可。ds1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位msb(d7)必须为逻辑1,如果d7=0,则禁止写ds1302,即写保护;d6=0,指定时钟数据,d6=1,指定ram数据;d5d1指定输入或输出的特定寄存器;最低位lsb(d0)为逻辑0,指定写操作(输入), d0=1,指定读操作(输出)。 在ds1302的时钟日历或ram进行数据传送时,ds1302必须首先发送命令字节。若进行单字节传送,8位命令字节传送结束之后,在下2个sclk周期的上升沿输入数据字节,或在下8个sclk周期的下降沿输出数据字节。 ds1302与ram相关的寄存器分为两类:一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为c0hfdh,其中奇数为读操作,偶数为写操作;再一类为突发方式下的ram寄存器,在此方式下可一次性读、写所有的ram的31个字节。ds1302抓图电机驱动:在设计中采用光电传感器采集信号,这种传感器是把旋转轴的转速变为相应频率的脉冲,然后用测量电路测出频率,由频率值就可知道所侧转速值。这种测量方法具有传感器结构简单、可靠、测量精度高的特点。是目前常用的一种测量转速的方法。 本设计采用单片机输送4路信号,通过反向处理送入uln2003a芯片,uln2003a芯片主要功能是放大,由于产生的电压信号很小,所以要进行放大处理,一般要放大至少1000倍(60db),然后再进行信号处理工作。 通过p2口4个端口提供4相电,经过反向输入uln2003a芯片处理放大以驱动电机转动。电机驱动抓图四相步进电机工作原理:四相步进电机,采用单极性直流电源供电。只要对步进电机的各相绕组按合适的时序通电,就能使步进电机步进转动。下图是该四相反应式步进电机工作原理示意图。步进电机工作原理示意图开始时,开关 sb接通电源,sa、sc、sd断开,b相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和c、d相 绕组磁极产生错齿,2、5号齿就和d、a相绕组磁极产生错齿。当开关sc接通电源,sb、sa、sd断开时,由于c相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和c相绕组的磁极对齐。而0、3号齿和a、b相绕组产生错齿,2、5号齿就和a、d相绕组磁极产生错齿。依次类推,a、b、c、d四相绕组轮流供电,则转子会沿着a、b、c、d方向转动。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图a、b、c所示:步进电机工作时序波形图传感器选择:转速测量的方案选择,一般要考虑传感器的结构、安装以及测速范围与环境条件等方面的适用性;再就是二次仪表的要求,除了显示以外还有控制、通讯和远传方面的要求。经过我和同组同学查资料、构思和自己的设计,总体电路我们有两套设计方案,部分重要模块也考虑了其它设计方法,经过分析,从实现难度、熟悉程度、器件用量等方面综合考虑,我们才最终选择了光电传感器。霍尔传感器霍尔传感器是利用霍尔效应进行工作的。其核心元件是根据霍尔效应原理制成的霍尔元件。本文介绍一种泵驱动轴的转速采用霍尔转速传感器测量。传感器的定子上有2 个互相垂直的绕组a 和b, 在绕组的中心线上粘有霍尔片ha 和hb ,转子为永久磁钢,霍尔元件ha 和hb 的激励电机分别与绕组a 和b 相连,它们的霍尔电极串联后作为传感器的输出。 霍尔转速传感器的结构原理图 霍尔转速传感器的接线图缺点:采用霍尔传感器在信号采样的时候,会出现采样不精确,因为它是靠磁性感应才采集脉冲的,使用时间长了会出现磁性变小,影响脉冲的采样精度。光电传感器 整个测量系统的组成框图如图所示。从图中可见,转子由一直流调速电机驱动,可实现大转速范围内的无级调速。转速信号由光电传感器拾取,使用时应先在转子上做好光电标记,具体办法可以是:将转子表面擦干净后用黑漆(或黑色胶布) 全部涂黑,再将一块反光材料贴在其上作为光电标记,然后将光电传感器(光电头) 固定在正对光电标记的某一适当距离处。光电头采用低功耗高亮度led ,光源为高可靠性可见红光,无论黑夜还是白天,或是背景光强有大范围改变都不影响接收效果。光电头包含有前置电路,输出05v的脉冲信号。接到单片机89c51的相应管脚上,通过89c51内部定时/计时器t0、t1及相应的程序设计,组成一个数字式转速测量系统。 测量系统的组成框图优点:这种方案使用光电转速传感器具有采样精确,采样速度快,范围广的特点。转速测量方法被 测 物 体传 感 器单 片 机lcd 显 示测速原理图计数测速法又可分为机械式定时计数法和电子式定时计数法。本设计采用单片机和光电传感器组成的高精度转速测量系统,其转速测量方法采用的是电子式定时计数法。对转速的测量实际上是对转子旋转引起的周期脉冲信号的频率进行测量。在频率的工程测量中,电子式定时计数测量频率的方法:在一定时间间隔t 内,计数被测信号的脉冲重复变化次数n ,则被测信号的频率f 可表示为:f =n/t转速测量原理转速测量系统,多采用光电传感器,从转轴上预先粘贴的一个标志上获得一转一个转速脉冲,随后利用电子倍频器和测频方法实现转速测量。可以在微处理器的参与下,通过测量转轴的转动一圈截获一次光电脉冲信号,换算出转轴的频率或转速。即通过速度传感器,将转速信号变为电脉冲,利用微机在单位时间内对脉冲进行计数,再经过软件计算获得转速数据。即:v=n/ (mt)v 转速、单位:转/ 分钟;n 采样时间内所计脉冲个数;t采样时间、单位:分钟;m 每旋转一周所产生的脉冲个数。如果m=60, 那么1 秒钟内脉冲个数n就是转速n, 即:v=n/ (mt) =n/60 1/60=n 系统软件设计 硬件电路完成以后,进行系统软件设计。首先要分析系统对软件的要求,然后进行软件的总体的设计,包括程序的总体设计和对程序的模块化设计。按整体功能分为多个不同的模块,单独设计、编程、调试,然后将各个模块装配联调,组成完整的软件。 根据设计的要求,单片机的任务是:内部进行计数,在计算出速度后显示。软件编程用c语言完成的,需要能掌握c语言,还要熟练at89c51单片机。从程序流程图、编写程序、编译,到最后的调试,是很复杂的。主程序初始化(1).定时器的初始化 at89c51有两个定时器/计数器t0和t1,每个定时器/计数器均可设置成为16位,也可以设置成为13位进行定时或计数。计数器的功能是对t0或t1外来脉冲的进行计数,外部输入脉冲负跳变时,计数器进行加1。 定时功能是通过计数器的计数来实现的,每个机器周期产生1个计数脉冲,即每个机器周期计数器加1,因此定时时间等于计数个数乘以机器周期。定时器工作时,每接收到1个计数脉冲(或机器周期)则在设定的初值基础上自动加1,当所有位都为1时,再加1就会产生溢出,将向cpu提出定时器溢出中断申请。当定时器采用不同的工作方式和设置不同的初值时,产生溢出中断的定时值和计数值将不同,从而可以适应不同的定时或计数控制。 定时器有4种工作方式:方式0、方式1、方式2和方式3。工作方式寄存器tmod的设定:gatec/tm1-m0gatec/tm1m0tmod各位的含义如下:gate:门控位,用于控制定时/计数器的启动是否受外部中断请求信号的影响。c/t:定时或计数方式选择位,当c/t=1时工作于计数方式;当c/t=0时工作于定时方式。m1、m0为工作方式选择位 ,用于对t0的四种工作方式,t1的三种工作方式进行选择,选择情况如下表:m1m0=00为方式0;m1m0=01为方式1; 表5-1 m1、m0为工作方式选择位mom1工作方式方式说明00110101012313位定时/计数器16位定时/计数器8位自动重置定时/计数器两个8位定时/计数器(只有t0有)(2)中断允许控制mcs-51单片机中没有专门的开中断和关中断指令,对各个中断源的允许和屏蔽是由内部的中断允许寄存器ie的各位来控制的。中断允许寄存器ie的字节地址为a8h,可以进行位寻址. ea:中断允许总控位。ea=0,屏蔽所有的中断请求;ea=1,开放中断。 et2:定时器/计数器t2的溢出中断允许位 es:串行口中断允许位。 et1:定时器/计数器t1的溢出中断允许位。 ex1:外部中断 int1的中断允许位。et0:定时器/计数器t0的溢出中断允许位。 ex0:外部中断 int0的中断允许位显示子程序读取时钟时间设置初始时间液晶初始化中断初始化 开始主程序框图:外中断0子程序:(按键按下信号)外中断0 保存状态 返回外中断1子程序:返回清零定时器t0的初值,为计算下1圈的转速准备。读定时器t0的初值计算电机1圈的转速,变量value保存 外中断1(电机转动一圈产生一个下降沿信号)把value拆成3位数,送给液晶显示数组定时器t1重赋初值定时器t1中断子程序:定时器t1(电机换相信号)控制电机变相时间的变量change自加change=设置 的转速 n y清零change,电机 改变状态。返回显示子程序显示子程序:按键信号 0 1 2 3显示时间加速减速显示速度减速处理加速处理返回用keil实现联机调试的步骤 keil除了可以编写、编译和仿真执行来调试用户程序外,还可以通过串口实现联机调试,即通过单步、断点看代码在硬件上的执行效果。步骤如下:使用的是at89c51cc03单片机,keil版本是keil c51 v9.00。1、用keil建立工程项目文件,编程、编译调试用户程序,保证软件执行进行没什么问题。2、修改keil安装点keil/c51/flashmon目录下与单片机型号一致的配置文件config.inc,主要是根据实际情况修改cpu_clock和code_start两个参数值,我改为12m和0e000h。3、重新编译该目录下的程序,生成新的调试程序monitor.hex,如果没有重新生成,把选项create hex file勾上。4、运行flip程序,将monitor.hex烧进单片机中,起始地址为0e000h,即 sbv=e0、bljb选上、bsb=0、eb=ff5、点击start application按钮执行monitor.hex程序6、运行keil,打开工程项目文件,修改调试参数,即菜单project-option for target,选debug页,点击右边的use keil monitor 51 driver,点击seting按钮,选择串口和波特率,注意,要和烧片子时用的波特率一致,一般用9600。需要注意的是,如果串口为自动方式(即除了三根通信线外,还接了rts和dtr),需要将rts和dtr设置为inactive7、编译好程序,点击debug菜单下的调试命令,可以单步执行,可以设置断点,可以全速运行,这时候实际使用单片机硬件运行程序,可以看到执行效果,如显示、按键响应等。这种情况下可以调试程序实际执行的效果。8、如果不设置断点,全速运行用户程序,则用户程序和实际运行一致,keil会失去对用户程序的控制,无法中断用户程序的执行(只有按reset才能中断用户程序运行了)9、发现问题可退出调试状态,修改程序,重新编译,然后再次进入调试状态,单步或设置断点进行调试。注意,全速运行时不能中断,否则退不出(强行退出的后果是monitor的状态不对,无法再次进入联机调试状态)。10、退出调试后,无论是按reset还是通过flip程序的start application按钮,都无法再次执行monitor程序,此时执行的是用户程序,要想继续调试,只能擦除flash,重新将monitor烧进单片机。全部编译没有错误和警告,那么软件的编写就完成了,并且生成了十六进制hex单片机可用文件。程序编译成功: 程序编译当硬件放置完,画好电路图后,双击单片机,弹出一个对话框,找到开始在keil里面生成的hex文件,单击ok显示切换抓图全电路仿真总 结采用单片机技术来实现转速的测量,可以提高转速测量的精确度,并且加快了采样的速率,具有较好的实时性。 基于单片机的转速测量系统,具有硬件电路简单,程序简单和运算速度快,测速范围广,抗干扰性能好的特点。在设计的信号处理电路中经过滤波,能够进一步减少误差,使测速精度得到提高。通过这次毕业设计,我深深懂得了要不断把所学知识学以致用,也发现了自己的知识薄弱,还需通过自身不断努力,不断提高自己的分析问题、解决问题的能力,同时也提高了我的专业技能,拓展了我的专业知识面,使我更加体会到要想完成一件事必须认真、踏实、勤于思考、和谨慎稳重。致 谢经过长时间的忙碌,毕业设计已经接近尾声,通过这次学校组织的毕业设计,端正了自己学习的态度,锻炼了自己独立动手的能力,在此,我要感谢每一个帮助过我的人。首先,我要感谢的是我的指导教师曾一江老师。曾老师平日里工作繁多,三年里都是曾老师亲自执教,为这次的毕业设计奠定了知识基础,在毕业设计的制作中都给予我悉心的指导和帮助。另外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。再次,我要感谢的是我的同学沈小平同学和同组同学邓先均同学,在我毕业设计期间,他们给了我不少的关心和帮助,特别是沈小平同学,如果没有他的悉心指导与帮助,我想这次的毕业设计不会完成的如此顺利。理论与实践的结合,是对知识较好牢固掌握的一种方法,这次的毕设就有这种理念。学校真是高瞻远瞩,因为就在前几天,我刚刚到即将工作的公司报到了,接触了自己将来的工作岗位,把知识与实践相结合是多么的重要啊!所以作为毕业生的我表示深切感谢.这次毕业设计机会真的是难得与重要。.最后我要感谢的是我亲爱的成都电子机械高等专科学校,感谢您三年来的培养。主要参考文献1.单片机原理及接口技术曾一江 科学出版社2.单片机c语言应用100 例王东锋 董冠强 电子工业出版社3.单片机c语言应用程序设计戴佳 戴卫恒 刘博文 电子工业出版社4.单片机c语言与protues仿真技能实训 刘娟 中国电力出版社5.传感器及应用 王煜东编 机械工业出版社6.电力拖动自动控制系统-运动控制系统陈伯时 .机械工业出版社7.一种高精度实时电机转速测量新方法马全权,强盛 齐齐哈尔大学学报8.传感器原理及应用.北京航空航天大学出版社王雪文.张志勇9.模拟集成电路应用.西北工业大学出版社王秀杰,张畴先附录:程序代码 main#include #include lcd1602.h#include ds1302.huchar phase;/电机4相的变换uchar second ; /时间的计数uchar change ;/设置电机转速的中断标志uchar state ; /中断源的选择状态uchar speed=40 ; /电机初始的速度uchar speed_up,slow_down; /电机的加速与减速uchar mot_spee1= the speed is ;uchar mot_spee2= 000 r/min ;/uchar four_single=0x01,0x02,0x04,0x08; /单4拍模式uchar four_double=0x0c,0x06,0x03,0x09; /双4拍模式void init_break() /中断初始化函数tmod=0x11;th0=0x00;tl0=0x00;th1=(65536-5000)/256; /定时5mstl1=(65536-5000)%256;et0=1;et1=1;it0=1;ex0=1;it1=1;ex1=1;ea=1;tr0=1;tr1=1;void main()init_break();lcd_init();set_time();while(1)read_time();display();void int0()interrupt 0state=p1;void int1()interrupt 2uchar value ;/电机的转速value=60000000/(second*65536+

温馨提示

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

评论

0/150

提交评论