基于单片机的电机转速测量系统设计.doc

上传人:叶*** 文档编号:35083955 上传时间:2022-08-20 格式:DOC 页数:43 大小:149KB
返回 下载 相关 举报
基于单片机的电机转速测量系统设计.doc_第1页
第1页 / 共43页
基于单片机的电机转速测量系统设计.doc_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《基于单片机的电机转速测量系统设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的电机转速测量系统设计.doc(43页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、单片机课程设计题 目 基于单片机电机转速测量系统设计 学院名称 电气工程学院 指导教师 * 班 级 电力*班 学 号 * 学生姓名 * 2012年1 月5 日第 43 页摘 要在工程实践中,经常会遇到各种需要测量转速场合,测量转速方法分为模拟式与数字式两种。模拟式采用测速发电机为检测元件,得到信号是模拟量。数字式通常采用光电编码器,霍尔元件等为检测元件,得到信号是脉冲信号。随着微型计算机广泛应用,特别是高性能价格比单片机出现,转速测量普遍采用以单片机为核心数字式测量方法。本设计主要用STC89C51作为控制核心,由光电传感器、1620A-1液晶显示屏,直流电机构成。详细介绍了单片机测量转速系统

2、及单片机控制转速系统。充分发挥了单片机性能。本文重点是测量速度并显示在液晶屏上。最后系统调试,通过仿真软件proteus验证方案正确性后,再进行实物测试,经过不断调试最终得出正确结果。关键字:STC89C51(单片机); 转速; 传感器;控制引言11 系统方案提出和论证22 系统功能概述32.1 光电传感器简介42.2 系统要求及主要内容52.3 系统技术指标53 系统总体设计63.1 硬件电路设计思路63.2 软件设计思路64 硬件电路设计74.1 单片机模块74.1.1 处理执行元件84.1.2 时钟电路114.1.3 复位电路124.1.4 显示电路135软件设计165.1 单片机转速程

3、序设计思路及过程165.1.1 单片机程序设计思路175.1.2 单片机转速计算程序184.2 程序设计194.3 C语言程序206 系统调试276.1 硬件调试276.2 软件调试286.3 综合调试306.4 故障分析及解决方案307 结论及经验31参考文献32致 谢33附 录34引言 智能化转速测量可以对电机转速进行测量,电机在运行过程中,需要对其平稳性进行监测,适时对转速测量有效地可以反映电机状况。 本系统主要由传感器,单片机STC89C51构成。可以对转速进行测量,测量转速精度较高,实现对电机转速测量。 单片机英文名称是Micro Controller unit,缩写为MCU,又称为

4、微控制器,它是一种面向控制大规模集成电路芯片。它具有功能强、体积小、可靠性高、应用简单灵活,因而使用非常广泛,有力地推动各行业技术发展与更新换代。 本文首先在第二章绪论介绍了此系统功能、技术指标以及主要内容等;在第三章论述了总体设计过程,确定了技术指标及器件选择;第四章着重描述了系统硬件电路设计、硬件设计框图及所使用各种芯片功能及特性;在第四章中重点剖析了软件设计过程;最后在第六章中具体论述单片机、电平转换电路、通信处理及调试。由于本人水平有限,加之时间仓促,论文中难免会有错误与不足之外,不够理想、许多方面还需要继续完善与改进。在此特别感谢我指导教师*教师大力指导。 1 系统方案提出与论证 转

5、速测量方案选择一般要考虑传感器结构、安装以及测速范围及环境条件等方面适用性;再就是二次仪表要求,出了显示以外还有控制、通讯与远传方面要求。本说明书中给出两种转速测量方案,经过我与队友查资料、构思与自己设计,总体电路我们有两套设计方案,部分重要模块也考虑了其它设计方法,经过分析,从实现难度、熟练程度、器件用量等方面综合考虑,我们才最终选择了一个方案。下面就看下我们对两套设计方案简要说明。 方案一:霍尔传感器测量方案霍尔传感器是利用霍尔效应进行工作,其核心元件是根据霍尔效应原理制成霍尔元件。本文介绍一种泵驱动轴转速采用霍尔转速传感器测量。霍尔转速传感器结构原理图如图3.8。 传感器定子上有2个互相

6、垂直绕组A与B相连,在绕组中心线上粘有霍尔片HA与HB,转子为永久磁钢,霍尔元件HA与HB激磁电机分别及绕组A与B相连,它们霍尔电极串联作为传感输出。缺点:采用霍尔传感器在信号采样时候,会出现采样不精确,因为它是靠磁性感应才采集脉冲,使用时间长了会出现磁性变小,影响脉冲采样精度。 方案二:光电传感器 整个测量系统转子由一直流调速电机驱动,可实现大转速范围无级调速。转速信号由光电传感器拾取,使用时应在转子上做好光电标记,具体办法可以是:将转子表面擦干净后用黑漆(或者黑色胶布)全部涂黑,再将一块反光材料贴在其上作为光电标记,然后将光电传感器(光电头)固定在正对光电标记某一适当距离处。光电投采用低功

7、耗亮度LED,光源为高可靠性可见光,无论黑夜还是白天,或者是背景光强、有大范围改变都不影响接收效果。光电头包含有前置电路,输出0-5V脉冲信号。接到单片机89C51相应管脚上,通过89C51内部定时器/计数器T0、T1及相应程序设计,组成一个数字式转速测量系统。优点这种方案使用光电传感器具有采用精确,采样速度快、范围广特点。综上所述,方案二使用光电传感器来作为设计最佳方案。2 系统功能概述 功能: 系统主要实现功能是:STC89C51单片机接收光电传感器传来脉冲信号,单片机根据外部中断,以及内部定时器进行记数计算出电机转速送到LED显示,并通过输出PWM波控制电机转速。记录各时段转速,画出V-

8、T坐标图。组成及框图: 传感器电路、转速测量、液晶显示、PWM控制电路等将在以下章节作详细地设计。系统硬件电路如图2.1。输出PWM单 片 机 AT89C51传感器 驱动电路直流电机液晶显示图2.1 系统硬件电路 应用:从实用角度看,评价一个系统实用价值重要标准,就是这个系统对社会生活与科技观念有多大贡献。转速测量系统具有大范围、高精度等优点、测量速度快,这种系统将会有良好应用。2.1 光电传感器简介光电传感器是采用光电元件作为检测元件传感器。它首先把被测量变化转换成光信号变化,然后借助光电元件进一步将光信号转换成电信号。光电传感器一般由光源、光学通路与光电元件三部分组成。光电检测方法具有精度

9、高、反应快、非接触等优点,而且可测参数多,传感器结构简单,形式灵活多样,因此,光电式传感器在检测与控制中应用非常广泛。光电传感器是各种光电检测系统中实现光电转换关键元件,它是把光信号(红外、可见及紫外光辐射)转变成为电信号器件。光电式传感器是以光电器件作为转换元件传感器。它可用于检测直接引起光量变化非电量,如光强、光照度、辐射测温、气体成分分析等;也可用来检测能转换成光量变化其他非电量,如零件直径、表面粗糙度、应变、位移、振动、速度、加速度,以及物体形状、工作状态识别等。光电式传感器具有非接触、响应快、性能可靠等特点,因此在工业自动化装置与机器人中获得广泛应用。近年来,新光电器件不断涌现,特别

10、是CCD图像传感器诞生,为光电传感器进一步应用开创了新一页。本设计仿真中直流电机为带光电传感器电机。2.2 系统要求及主要内容 将光电传感器产生脉冲信号输出入到单片机定时器0口,单片机工作在内部定时器工作方式0,对周期信号进行内部记数,调用计算公式算出转速,调用显示程序显示在液晶屏上。 主要内容: (1)单片机部分主要完成电机转速测量 (2)LED部分主要是把转速显示出来,显示范围0-6000r/min (3) 输出PWM波控制电机转速 (4) 传感器电路模块2.3 系统技术指标系统主要完成以下功能:测量系统:(1) 设计并制作单片机转速测量硬件系统;(2) 用C语言完成转速测量软件系统;(3

11、) 要求把转速显示在液晶屏;(4) 可以自己行控制电机在一个稳定转速上;根据系统要实现功能以及要求,要实现单片机转速测量主要是各个模块设计,定时器记数功能、以及LED驱动。单片机可通过编程控制外围部件,能实现较高自动化程度。以它为系统核心控制模块可实现主从控制,完成预定任务。3 系统总体设计3.1 硬件电路设计思路硬件设计任务是根据总体设计要求,在选择机型基础上,具体确定系统中所要使用元器件,设计出系统原理框图、电路原理图。89C51单片机通过T0输入传感器脉冲信号,中断0口输出PWM波,P1口、P2口接LED动态显示。转速测量部分硬件设计思路:本次设计单片机部分硬件框图如 图2.1所示。CP

12、U执行单元显示电路复位电路 时钟电路图3.1 单片机部分硬件框图 具体详细叙述将在下面章节中逐一介绍。3.2 软件设计思路 软件需要解决是定时器0记数,由于测量转速范围大,所以低速与高速都要考虑在内,关键在于一个四字节除三字节程序实现。显示部分、需要有一个二进制到十进制转化程序,以及转换成非压缩BCD 程序后、才能进行调用查表程序送到显示。 软件工作流程:光电传感器利用光电电效应产生一周期脉冲向单片机T0计数器(P3.4)口发送脉冲信号,定时器工作在内部定时,TH0、TL0设定初值为0,作为除数低两字节,利用软件记数器、定时器0中断次数作为除数高字节。中断完毕读取内部记数值作为除数,调用除法程

13、序计算转速,再对二进制数进行一系列变换后调用查表显示程序,显示在液晶屏上。 转速部分软件设计思路: STC89C51单片机P3.4口接收传感器信号。主要编写两个定时中断服务程序TO、T1,读取记数值三个字节,并再次清0记数初值以便下次记数与计算。后调用查表程序送显示。4 硬件电路设计 硬件功能由总体设计所规定,硬件设计任务是根据总体设计要求,在选择机型基础上,具体确定系统中所要使用元器件,设计出系统电路原理图,必要时做一些部件实验,以确定电路图正确性,以及工艺结构设计加工、印制板制作、样机组装等。 整个单片机测量转速系统为单片机控制模块、光电传感器模块、发送模块,各个模块都承担着各自任务。 设

14、计单片机模块,考虑到单片机本身外围电路较多,所以在单片机模块方面需要极为小心。在整个电路设计时要考虑电平转换电路,具体每一部分设计将在以下章节中详细分析。4.1 单片机模块根据系统功能要求以及单片机硬件电路设计思路(如图3.1)对单片机模块进行设计,要使单片机准确测量电机转速,并且使测出数据能显示出来,所以整个单片机部分分为传感器电路、时钟电路、复位电路、执行元件以及显示电路五个部分。4.1.1 处理执行元件单片机我们采用STC89C51(其引脚图如图4.1),相较于INTEL公司8051它本身带有一定优点。STC89C51是一种带4K字节闪烁可编程可擦除只读存贮器低电压,高性能CMOS 8位

15、微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,及工业标准MCS-51指令集与输出管脚相兼容。由于将多功能8位CPU与闪烁存储器组合在单个芯片中,ATMELSTC89C51是一种高效微控制器, AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉方案。图4.1 STC89C51引脚图主要特性:及MCS-51 兼容4K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗闲置与掉电模式片内振荡器与时钟电路管脚

16、说明:(1)VCC:供电电压;(2)GND:接地;(3)P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。(4)P1口:P1口是一个内部提供上拉电阻8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉缘故。在FLASH编程与校验时,P1口作为第八位地址接收

17、。(5)P2口:P2口为一个内部上拉电阻8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口管脚被外部拉低,将输出电流。这是由于内部上拉缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器内容。P2口在FLASH编程与校验时接收高八位地址信号与控制信号。(6)P3口:P3口管脚是8个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它

18、们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉缘故。P3口也可作为STC89C51一些特殊功能口,如下表所示:(7)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期高电平时间。(8)ALE/PROG:当访问外部存储器时,地址锁存允许输出电平用于锁存地址地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变频率周期输出正脉冲信号,此频率为振荡器频率1/6。因此它可用作对外部输出脉冲或用于定时目。然而要注意是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE输出可在SFR8EH地址上置0

19、。表3.1 P3口第二功能引 脚第二功能信 号 名 称RXDTXDINT0INT1T0T1WRRD串行数据接收串行数据发送外部中断0请求外部中断1请求定时器/计数器0计数输入定时器/计数器1计数输入外部RAM写选通外部RAM读选通P3口同时为闪烁编程与编程校验接收一些控制信号。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 (9)/PSEN:外部程序存储器选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效/PSEN信号将不出现。 (10)/EA/VP

20、P:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。(11)XTAL1:反向振荡放大器输入及内部时钟工作电路输入。(12) XTAL2:来自反向振荡器输出。振荡器特性:XTAL1与XTAL2分别为反向放大器输入与输出。该反向放大器可以配置为片内振荡器。石英振荡与陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号脉宽

21、无任何要求,但必须保证脉冲高低电平要求宽度。芯片擦除:整个PEROM阵列与三个锁定位电擦除可通过正确控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,STC89C51设有稳态逻辑,可以在低到零频率条件下静态逻辑,支持两种软件可选掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口与中断系统仍在工作。在掉电模式下,保存RAM内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。4.1.2 时钟电路时钟电路是计算机心脏,它控制着计算机工作节奏。MCS-51单片机允许

22、时钟频率是因型号而异典型值为12MHZMCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入与输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部各个部件。STC89C51是属于CMOS8位微处理器,它时钟电路在结构上有别于NMOS型单片机。CMOS型单片机内部(如STC89C51)有一个可控负反馈反相放大器,外接晶振(或陶瓷谐振器)与电容组成振荡器,图3.2为CMOS型单片机时钟电路框图。振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD0,振荡器停止工作,整个单片机也就停止工作,以达到节电目。清“0”PD,使振荡器工作产

23、生时钟,单片机便正常运行。图中SYS为晶振或陶瓷谐振器,振荡器产生时钟频率主要由SYS参数确定(晶振上标明频率)。电容C1与C2作用有两个:其一是使振荡器起振,其二是对振荡器频率f起微调作用(C1、C2大,f变小),其典型值为30pF。图4.2 CMOS型单片机时钟电路框图4.1.3 复位电路计算机在启动运行时都需要复位,使中央处理器CPU与系统中其它部件都处于一个确定初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(即24个时钟周期)以上高电平,使器件复位,

24、只要RST保持高电平,MCS-51保持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都 输出高电平。RST变为低电平后,退出复位,CPU从初始状态开始工作。单片机采用复位方式是自动复位方式。对于MOS(STC89C51)单片机只要接一个电容至VCC即可(见图3.3)。在加电瞬间,电容通过电阻充电,就在RST端出现一定时间高电平,只要高电平时间足够长,就可以使MCS-51有效复位。RST端在加电时应保持高电平时间包括VCC上升时间与振荡器起振时间,Vss上升时间若为10ms,振荡器起振时间与频率有关。10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠复位,RST在上电应保

25、持20ms以上高电平。RC时间常数越大,上电RST端保持高电平时间越长。若复位电路失效,加电后CPU从一个随机状态开始工作,系统就不能正常运转。图4.3 上电复位电路4.1.4 显示电路 4.4 LCD1602液晶屏(1)1602LCD主要技术参数 显示容量为162个字符; 芯片工作电压为4.55.5V; 工作电流为2.0mA(5.0V); 模块最佳工作电压为5.0V;4.35(WH)mm。(2)接口,信号说明1602LCD采用标准14引脚(无背光)或16引脚(带背光)接口,各引脚接口说明见表 1602液晶接口引脚定义编号符号引脚说明编号符号引脚说明1VSS电源地9D2Date I/O2VDD

26、电源正极10D3Date I/O3VL液晶显示偏压信号11D4Date I/O4RS数据/命令选择端(V/L)12D5Date I/O5R/W读/写选择端(H/L)13D6Date I/O6E使能信号14D7Date I/O7D0Date I/O15BLA背光源正极8D1Date I/O16BLK背光源负极1、2 组电源 一组是模块电源 一组是背光板电源 均为5V 供电。2、VL 是调节对比度引脚调节此脚上电压可以改变黑白对比度3、RS 是很多液晶上都有引脚 是命令/数据选择引脚 该脚电平为高时表示将进行数据操作;为低时表示进行命令操作。4、RW 也是很多液晶上都有引脚 是读写选择端 该脚电平

27、为高是表示要对液晶进行读操作;为低时表示要进行写操作。5、E 同样很多液晶模块有此引脚 通常在总线上信号稳定后给一正脉冲通知把数据读走,在此脚为高电平时候总线不允许变化。6、D0D7 8 位双向并行总线,用来传送命令与数据。7、BLA是背光源正极,BLK是背光源负极。(3)控制器接口说明 基本操作时序见表 基本操作时序读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无对此液晶操作主要有以下几种方法。1

28、写命令(包括但不限于初始化、调节显示位置、清除显示)2 写数据 (把一个字符ASC 码写入液晶使其显示)3 读忙信号(液晶乃低速设备,每次操作前应该测试忙信号,确定其不忙时再操作)(4)1602LCD指令码(命令码)此液晶上电时候需要初始化 典型指令码是38H,也就是上电时候需要 调用 void write_cmd(unsigned char command)这个函数写指令码,用法是write_cmd(0x38);执行完这个函数可以把液晶初始化成16x2 显示5x7 点阵8 位总线接口。以下指令码用法相同。此液晶支持指令码有 指令码功能00111000设置162显示,57点陈,8位数据接口解释

29、:就是0x38 命令 指令码功能00001DCBD=1 开显示;D=0 关显示C=1 显示光标;C=0 不显示光标B=1 光标闪烁;B=0 光标不显示000001NSN=1 当读或写一个字符后地址指针加一,且光标加一N=0 当读或写一个字符后地址指针减一,且光标减一S=1 当写一个字符,整屏显示左移(N=1) 或右移(N=0),以得到光标不移动而屏幕移动效果。S=1 当写一个字符,整屏显示不移动解释:第一行指令主要能完成功能是控制液晶显示否,光标显示否,光标闪烁否?共有以下8 种指令0000100008H关液晶显示 光标不闪烁 不显示光标位置0000100109H关液晶显示 光标不闪烁 显示光

30、标位置000010100AH关液晶显示 光标不闪烁 不显示光标位置000010110BH关液晶显示 光标不闪烁 显示光标位置000011000CH开液晶显示 光标不闪烁 不显示光标位置000011010DH开液晶显示 光标不闪烁 显示光标位置000011100EH开液晶显示 光标不闪烁 不显示光标位置000011110FH开液晶显示 光标不闪烁 显示光标位置解释:第二行指令主要能完成功能是写完字符光标或屏幕移动方向指令码功能80H+地址码(0-27H,40H-67H)设置数据地址指针解释:用该指令码可以把光标移动到想要位置这是虚拟液晶显示图 表示2 行16 列显示 方框中数字表示当前位置指针8

31、0H81H82H83H84H85H86H87H88H89H8AH8BH8CH8DH8EH8FHC0HC1HC2HC3HC4HC5HC6HC7HC8HC9HCAHCBHCCHCDHCEHCFH例如: 只要调用write_cmd(0x82) ;函数就能把光标挪到第1 行第3 列位置指令码功能01H 02H显示回车:1数据指针清零5软件设计 本章重点阐述测量转速汇编语言。以及软件设计过程。 软件需要解决是单片机中断服务程序设计、计算程序设计、显示部分程序设计以及在我们这里非重点介绍通信程序设计。5.1 单片机转速程序设计思路及过程单片机测量转速可以分为若干模块,然后在主程序中调用各个模块, 流程图如

32、图5.1所示。开始初 始 化计算程序 数值转换 字符调用显 示 程 序返 回图 5.1主程序流程图5.1.1 单片机程序设计思路计算转速公式: n=N/MTc (r/min)n 转速、单位:转/分钟N 采样时间内所计脉冲个数Tc 采样时间、单位:分钟M 每旋转一周所产生脉冲数(通常指测速码盘齿数)如果M=60,那么一秒钟内产生脉冲个数N就是转速n,即:n= =N通常M为60其中,N是内部定时器计数值,为三字节,分别由TH0,TL0,VTT构成;Tc为时基,由于采用11.0592M晶振,所以Tc不在是1um,而是12M/11.0592M约为1.08um,带入上面公式,即可得到转速精确计算公式:

33、N=60*11059200/12N=55296000/N再将55296000化为二进制存入单片机内存单元。下面我们将介绍除数是如何获得:单片机转速测量完成,定时器T0作为内部定时器,外部中断来时候读取TH0,TL0,并同时清零TH0、TL0,使定时器再次循环计内部脉冲。此外,对于低速情况下,我们还要设定一个软件计数器VTT,当外部中断还没来而内部定时器已经溢出,产生定时器0中断时,增加VTT,作为三字节中高字节。三字节组成除数,上面常数为四字节,所以计算程序实际上就是调用一个四字节除三字节商为两字节(最高转速6000r/min足够)程序。为液晶屏显示出来,需将二进制转换为十进制,在将十进制转换

34、为十六进制,才能调用查表程序,最后送显示。5.1.2 单片机转速计算程序由于本次设计系统要实现功能是将光电传感器信号送到单片机外部中断口,再对周期方波进行内部计数,调用计算程序把转速测出来。可以说是核心部分,流程图如图4.2所示:开 始被除数初始化读取定时值调用除法程序返 回 图5.2 计算程序流程图计算程序中又再次调用了除法程序,这里除法为四字节除三字节商为两字节,除法程序编程思想可以与手工计算除法相似,比较减法思想,流程图如图5.3所示具体程序见附录。5.2 程序设计根据以上设计思路与各个模块流程图即可编写出本次课程设计程序,注意其中各个模块间参数传递以及堆栈指针等问题,程序设计任务即可完

35、成,写出初始程序,再进行上机调试,这些我们将具体在下章中加以详细叙述。开始电机转速是否在设定转速范围内给电机的转速赋初值控制PWM计算速度标志是否为1计算速度是否T0继续计数否是调用显示图5.3显示程序流程图5.3 C语言程序#include#define uchar unsigned char#define uint unsigned intsbit input=p32;sbit E=p27; /1602使能引脚sbit RW=p26; /1602读写引脚sbit RS=P25; /1602数据/命令选择引脚sbit key1=p34;sbit pwm=p10;unsigned char c

36、ycle; /定义周期 该数字X基准定时时间 如果是10 则周期是100.1ms unsigned char pwm_on; /定义高电平时间uchar count=0;int count_2=0;int sudu=0;/*名称:delay()*功能:延时,延时时间为10ms*del*输入:del*输出:无/void delay() int i ,j; for(i=0;i=100;i+) for(j=0;j=20;j+);/*名称:enable(uchar del)*功能:1602命令函数*输入:输入命令值*输出:无/void enable(uchar del)P0=del;RS=0;RW=0

37、;E=0;delay();E=1;delay();/*名称:write(uchar del)*功能:1602写数据函数*输入:需要写入1602数据*输出:无/void wrote(uchar del) P0=del; RS=1; RW=0; E=0; delay(); E=1; delay();/*名称:L1602_init()*功能:1602初始化*输入:无*输出:无/void L1602_init(void) enable(0x01); enable(0x38); enable(0x0c); enable(0x06); enable(0xd0);/*名称:L1602_char(uchar

38、hang ,uchar lie ,char sign)*功能:改变液晶中某位值,如果要让第一行,第五个字符显示b,调用该函数如下 L1602_char(1,5,b)*输入:行,列,需要输入1602数据*输出:无/ void L1602_char(uchar hang ,uchar lie ,char sign) uchar a; if(hang =1) a=0x80; if(hang =2) a=oxc0; a=a+lie-1; enable(a); write(sign);/*名称:1602_string(uchar hang ,uchar lie ,uchar *p)*功能:改变液晶屏中某

39、位值,如果要让第一行,第五个字符开始显示 ab cd ef,调用该函数如下 L1602-string(1,5,ab cd ef;)*输入:行,列,需要输入1602数据*输出:无/void L1602-string(uchar hang, uchar lie,uchar *p) uchar a; if (hang=1) a = 0x80; if (hang=2) a = 0xc0; a = a + lie - 1 enable(a); while(1) if (*p = 0) break; write(*p); p+;/*名称:outside-Init()*功能:外部中断0 初始化*输入:无*输

40、出:无/void outside-Init(void) EX0 = 1; /开外部中断0 IT0 = 1; /负边沿触发 EA = 1; /开总中断*名称:Outside-Init()*功能:外部中断0中断处理*输入:无*输出:无void Outside-Init(void) interrupt 0 EX0 = 0; if (input = 0 ) /对按键进行抗干扰处理 count+; /TR0=1;EX0 = 1;/*名称:main()*功能:外部中断实验主程序*输入:无*输出:无/Void main (void) int a, b, c, d; L1602-init(); outside

41、-init(); TMOD |=0x01; /定时器设置 1ms in 12M crystal TH0=(65536-1000)/256; TL0=(65536-1000)%256; /定时1ms IE=0x83; /打开中断 TR0=1; CYCLE=10; /时间可以调整 这个是10步调整 周期100ms 8位 PWM 就是256步 PWM-ON=6; while(1) if(!KEY1) delay(); if(!KEY1) PWM-ON+; if (PWM-ON=9)PWM-ON=0; a = sude/1000; b = (sudu - a*1000)/100; c = (sudu

42、- a*1000- b*100)/10; d = sudu -a*1000- b*100 -c*10; L1602-char(1,5,a+0x30); L1602-char(1,6,b+0x30); L1602-char(1,7,c+0x30); L1602-char(1,8,d+0x30);void time(void) interrupt 1 using 1 static unsigned char count-1; TH0=(65536-1000)/256; TL0=(65536-1000)%256; /定时1ms if (count-1=PWM-ON ) PWM = 1; /灯灭 count-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com