基于单片机的步进电机转速计设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的步进电机转速计设计基于单片机的步进电机速度测量系统设计
一、设计内容和要求
本设计主要介绍了用单片机和八位共阴数码管相结合的方法来实现实时测速,以单片机AT89C51芯片为核心,辅以步进电机和LED数码管及必要的外围电路,构成了一个单片机数字温度计步进电机速度测量系统。

其主要研究内容包括两方面,一是对系统硬件部分的设计,包括速度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现速度的采集与显示。

通过利用步进电机进行设计,能够满足实时检测温度的要求,同时通过LED数码管的显示功能,可以实现不间断的速度显示,并带有复位功能。

本次设计的主要思路是利用51系列单片机,步进电机和LED数码显示器,构成实速度检测与显示的单片机控制系统,即转速计。

通过对单片机编写相应的程序,达到能够实时检测实时速度的目的。

通过对本课题的设计能够熟悉转速计的工作原理及过程,了解各功能器件(单片机、步进电机、LED)的基本原理与应用,掌握各部分电路的硬件连线与程序编写,最终完成对转速计的总体设计。

本次设计的主要要求:
(1)根据设计需要,选用AT89C51单片机为核心器件;
(2)转速器件采用摩尔传感器,利用单总线式连接方式与单片机的串行接口
P0.0引脚相连;
(3)显示电路采用8个LED数码管显示器接P1口并行显示温度值,数码管由P2口(P2.2~P2.3)选通,动态显示。

(4)给出全部电路和源程序。

转速是电动机极为重要的一个状态参数,在很多运动系统的测控中,都需要对电机的转速进行测量,速度测量的精度直接影响系统的控制情况,它是关系测控效果的一个重要因素。

不论是直流调速系统还是交流调速系统,只有转速的高精度检测才能得到高精度的控制系统。

在电机的转速测量中,影响测量精度的主要因素有两个:一是采样点的多少,采样点越多,速度测量结果越精确,尤其是对于低转速的测量。

二是采样频率,采样频率越高,采样的数据就越准确。

常用的数字测量方法电机转动速度的数字检测基本方法是利用与电动机同轴连接的光电脉冲发生器的输出脉冲频率与转速成正比的原理。

根据脉冲发生器发出的脉冲速度和序列,测量转速和判别其转动方向。

根据脉冲计数来实现转速测量的方法主要有:M法(测频法)、T法(测周期法)和M/T法(频率/周期法)。

二、课程设计的目的和意义
在工程实践中,经常会遇到各种需要测量转速的场合,例如在发动机、电动机、机床主轴等旋转设备的试验运转和控制中,常需要分时或连续测量、显示其转速及瞬时速度。

为了能精确地测量转速,还要保证测量的实时性,要求能测得瞬时转速。

本文提出一种基于89C52单片机实施电机转速
[1]测量的方法,利用霍尔传感器采集脉冲信号,通过定时计数算法程序,将转速结果实时显示出来。

随着科技的飞速发展,计算机应用技术日益渗透到社会生产生活的各个领域,而单片机的应用则起到了举足轻重的作用。

单片机又称单片微控制器,就是把一个计算机系统集成到一个芯片上。

它完整地包含了计算机内部的CPU(运算器、控制器)、程序存储器(相当于计算机的硬盘)、数据存储器(相当于计算机的内存)、输入输出端口等。

虽然它的运算速度无法和计算机相比,但在一些
实际的控制应用场合已经足够使用了。

对于高等院校电子类和计算机类的学生,学习单片机是很重要的,而进行应用单片机的课程设计更是重中之重,将所学理论知识应用到实际,使更加全面的了
[2]解和掌握单片机的应用。

在本次设计中也用到了一些常用的数字电子单元元件,如霍尔传感器,霍尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿命长、安装方便等优点。

在实际的使用中,一般需要一个铁质的测速齿轮,齿厚大于2 mm 即可,将之固定在待测转速的轴上。

步进电动机又称脉冲电动机或阶跃电动机,国外一般称为Steppingmotor、Pulse motor或Stepper servo,其应用发展已有约80年的历史。

可以说步进电动机天生就是一种离散运动的装置,是纯粹的数字控制电动机,步迸电机驱动器通过外加控制脉冲,控制步进电动机各相绕组的导通或截止,从而使电动机产生步进运动。

就是说给一个电脉冲信号,电动机就转过一个角度或者前进一步,其输出转角、转速与输入脉冲的个数、频率有着严格的比例关系。

这些关系在负载能力范围内不随电源电压、负载大小、环境条件等的变化而变化。

在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,同时步进电机只有周期性的误差而无累积误差,精度高。

步进电动机可以在宽广的频率范围内通过改变脉冲频率来实现调速、快速起停、正反转控制等,这是步进电动机最突出的优点。

正是由于步进电机具有突出的优点,所以成了机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。

随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

比如在数控系统中就得到广泛的应用。

目前世界各国都在大力发展数控技术,我国的数控系统也取得了很大的发展,我国已经能够自行研制开发适合我国数控机床发展需要的各种档次的数控系统。


中华中数控系统解决了“五轴联动”,为“神州”系列飞船顺列升空立下了汗马功劳。

虽然与发达国家相比,我们我国的数控技术方面整体发展水平还比较低,但已经在我国占有非常重要的地位,并起了很大的作用。

我国数控系统在初期就是以单板机或单片机为数控核心,以步进电机为执行元件,由于其结构简单,价格便宜,很适合我国中小型企业使用。

三、课程设计的总体方案和思路
1速度测量方案论证
2.1(1) 方案一
此方案包括传感器、处理器和显示3个部分。

其方框图如图2.1所示。

在该方案中传感器是由红外发光二极管,和红外光敏三极管构成。

测速的过程为:在电机的转轴上安装一个圆盘,并在圆盘的边缘处开一个孔让二极管发出的红外光刚好可以通过。

在圆盘的上下方分别安装好发光二极管和光敏三极管,当电机转动时就可以通过圆盘来改变光敏三极管接收的光线,从而产生点位信号的变化,这样就构成了一个收发检测系统,可以检测电机的转速。

运用的
[3]原理和光电耦合器是相同的。

光信 L光
敏号E敏
二转单片机处理 D 三电机
极显极换
管管示
图2.1 方案一方框图
2.1(2) 方案二
此方案也由传感器、处理器和显示3个部分几部分组成,但所选择的传感器类型不同,其方框图如图2.2所示。

此方案的测速系统主要是由开关型霍尔传感器AH44E以及磁钢构成,由它们来检测电机的转速。

工作方式为:将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。

这样通过高低电平的转换,将其
[4]送入单片机后就可以测量它的转速。


LED 尔
单片机处理显传电机
感示

图2.2 方案二方框图
2 速度测量方案的确定
两个方案的主体电路相同,只是传感器的的选择不同。

而选择开关型霍尔传感器则具有多种优点:1.精度高:在工作温度区内精度优于1%。

2.过载能力强:当原边电流超负荷,模块达到饱和,可自动保护,即使过载电流是额定值的20倍时,模块也不会损坏。

3.模块的高灵敏度,使之能够区分在“高分量”上的弱信号,例如:在几百安的直流分量上区分出几毫安的交流分量。

4.还可以通过使用多块磁钢来倍频,以增加测量的精度。

鉴于以上考虑,最终选定方案二为本次课程设计方案。

四、各模块元件功能
1开关型霍尔传感器介绍
1.1 开关型霍尔传感器工作原理
霍尔传感器是利用霍尔效应原理制成的一种磁敏传感器。

它是近年来为适应信息采集的需要而迅速发展起来的一种新型传感器,这类传感器具有工作频带宽,响应快、面积小、灵敏度高、无缺点、便于集成化、多功能化等优点,且易与计算机和其它数字仪表接口,因此被广泛用于自动监测、自动测量、自动报警、自动控制、信息传递、生物医学等各个领域。

此处主要介绍开关型霍尔传感器。

开关型霍尔传感器由稳压器A、硅霍尔片B、差分放大器C、施密特触发器D和OC门输出E五部分组成,如图3.1所示:从输入端1输入电压Vcc,经稳压器A稳压后加在硅霍尔片B的两端,以提供恒定不变的工作电流(在垂直于霍尔片的感应面方向施加磁场,产生霍尔电势差Vw,该n信号经差分放大C放大后送至施密特
触发器D整形。

当磁场达到“工作点”(即B)时,触发器D输出高电压(相对于器0 地电位),使三极管E导通,输出端V输出低电位,此状态称为“开”。

当施
加的磁场达到“释放点”0
(即B)时,触发器D输出低电压,使三极管E截止,输出端V输出高电位,此
状态称为“关”。

这样200
[5]次高低电位变换,使霍尔传感器完成了1次开关动作。

开关型霍尔传感器
构成图如图3.1所示:
图3.1 开关型霍尔传感器构成图
1.2 开关型霍尔传感器的应用
开关型霍尔集成传感器(以下简称开关型霍尔传感器)主要被应用于周期和频率的测量、转速的测量、液位控制等方面。

常用的开关型霍尔传感器有美国sPRAG1公司的UGN3000系列如UGN3020、UGN3O3O等。

它没有输入端,因磁场是由空间输入的。

规定用磁铁的S极接近开关型霍尔传感器正面时形成的B为正值,从图3.2曲线看:当B =0时, V为高;B=Bop时, V立即变低,这点称为“工作00 点”。

继续升高B, V不变。

降低B到Brp时,V又回升。

这点称为“释放点”。

00
如图3.2所示,Brp 一 Bop称为磁滞。

在此差值内,输出电位保持高电位或低电位不变,因而输出稳定可靠。

图3.2 开关型霍尔传感器输出电压与外加磁感应强度关系 4 单元模块电路方案设计
1、AT89C51介绍
单片机AT89C51是一种带4K字节可编程可擦除只读存储器
U1的低电压,高性能CMOS8位微处理器,如图2所示。

该器件采
1939XTAL1P0.0/AD0用ATMEL高密度非易失存储器制造技术制造,与工业标准的38P0.1/AD137P0.2/AD2MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU 和存储1836XTAL2P0.3/AD335P0.4/AD4器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制34P0.5/AD533P0.6/AD6器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

932RSTP0.7/AD7AT89C51的主要特性介绍:
21P2.0/A822P2.1/A9?与MCS-51 兼容; 23P2.2/A102924?4K字节可编程存储器; PSENP2.3/A113025ALEP2.4/A123126?寿命:1000写/擦循环;
EAP2.5/A1327P2.6/A1428?数据保留时间:10年; P2.7/A15
110?全静态工作:0Hz-24MHz; P1.0P3.0/RXD211P1.1P3.1/TXD312?三级程序存储器锁定; P1.2P3.2/INT0413P1.3P3.3/INT1514?128×8位内部RAM;32可编程I/O 线; P1.4P3.4/T0615P1.5P3.5/T1716?两个16位定时器/计数器;有5个中断源; P1.6P3.6/WR817P1.7P3.7/RD?可编程串行通道;具有低功耗的闲置和掉电模式; AT89C51?具有片内振荡器和时钟电路;
图2 AT89C51 2 、单片机最小系统
单片机最小系统是内部时钟接引脚XTAL1和XTAL2,采用18KHz的晶振CRYSTAL,用两个30pF的电容进行稳压,如图3所示:
图3 内部时钟电路
3 速度检测部分
速度检测部分是由开关型霍尔传感器和磁钢组成。

其电路图如图4.2所示。

测量电机转速的第一步就是要将电机地转速表示为单片机可以识别的脉冲信号,从而进行脉冲计数。

霍尔器件作为一种转速测量系统的传感器,具有结构牢固、体积小、重量轻、寿命长、安装方便等优点,当电机转动时,带动安装在电机上的磁铁,产生对应频率的脉冲信号,经过信号处理后输出到计数器或其他的脉冲计数装置,进行转速的测量。

在实际的使用中,一般需要两个磁钢,
[6]将之固定在待测转速的轴上。

所谓磁钢,就是磁钢就是一种有磁性的钢铁。

在传感检测电路中将磁钢安装在电机的转轴上,而霍尔传感器则放在转轴的旁边,霍尔传感器连接在电路中,当磁钢随转轴经过霍尔传感器时,由开关型霍尔传感器的工作原理知,此时将输出一个低电平信号;而当磁钢离开霍尔传感器后,又将输出一个高电平。

这样通过高低电平的转换,
[7]将其送入单片机后就可以测量它的转速。

其电路如下图4.2
J2
CON2
R17
霍尔传感器+5V1
MG1+MOTOR SERVO123
ATDUNOVCCG-
转速测量电路
GND

4.2 传感器部分
4 数码显示部分
显示器是最常用的输出设备,其种类繁多,但在单片机系统设计中常用的是发光二极管显示器(LED)和液晶显示器(LCD)两种,由于这两种显示器结构简单,价格便宜,接口电路容易实现,因而得到广泛应用。

本设计用到的是LED显示器,电路如图4.7所示。

下面是发光二极管显示器(LED)的结构、工作原理及接口电路。

如图4.7所示
图4.7 LED显示部分
4.1 LED结构与原理
LED又称为数码管,它主要由8段发光二极管组成的不同组合,可以显示a,g 为数字和字符显示段,dp段为小数点显示,通过a,g为7个发光段的不同组合,可以显示0,9和A,F共16个数字和字母。

LED可以分为共阴极和共阳极两种结构,如图4.8(a)和图4.8(b) 所示。

共阴极结构即把8个发光二极管阴极连在一起。

这种装入数码管中显示字形的数据称字形码,又称段选码。

Rx8Rx8 aagfbagnd
bb cc
dd
ee ff
gg
dpdpdpcedgnd
数码管管脚分配图 a共阴极 b共阳极
图4.8 7段LED数码管
表4-1 7段LED的段选码表
显共阴共阳显共阴共阳
示字符极段码极段码示字符极段码极段码
0 3fH C0H 8 7fH 80H
1 06H F9H 9 6fH 90H
2 5bH A4H A 77H 88H
3 4fH B0H B 7fH 83H
4 66H 99H C 39H C6H
5 6dH 92H D 3fH A1H
6 7dH 82H E 79H 86H
7 07H F8H F 71H 8EH
如下图所示是一个共阴极数码管经反相器后接至单片机的电路,要想显示数字“7”须a、b、c这3个显示段发光 (即这3个字段为底电平)只要在P接口输入11111000(07)即可。

里07即1
为数字7的段选码。

字形与段选码的关系见表4-1所示。

a 1a
fb反锁2 bg
3c AT89S51ec4d相 d存5edp 68fdp GND7器g器
9
图4.9 显示电路
4.2 LED显示器显示方式
点亮LED显示器有两种方式:一是静态显示:二是动态显示。

所谓静态显示,就是当显示器显示某一个字符时,相应的发光二极管恒定的导通或截止。

如图4.10(a)所示为4位静态LED显示电路。

该电路每一位可单独显
示。

只要在要显示的那位段选线上保持段选电平,该位就能保持显示相应的显示字符。

这种电路的优点是:在同一瞬间可以显示不同的字符;但缺点就是占用端口资源较多。

从下图可以看出,每位LED显示器需要单独占用8根端口线,因而,在数据较多时不采用此中设计,而是采用动态显示方式。

本设计采用静态显示。

图4.10(a)静态显示电路
所谓动态显示,就是将要显示的多位LED显示器采用一个8位的段选端口,然后采用动态扫描方式一位一位地轮流点亮各位显示器。

如下图4.10(b)所示为4位LED动态显示电路。

+5V
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
AT89C51
P2.0 P2.1 P2.2 P2.3
图4.10 (b)4位动态LED显示器电路
5 光报警装置
为了保证步进电机的转速在安全范围内,本设计采用二极管作为超速的报警装置,当其转速超过设定上限时,二极管发光提醒步进电机的转速已超过设定上限。

本设计的报警电路如图4.11所示:
图4.11 光报警原理图
五、软件程序设计
1 程序总体设计流程图
5.1 程序总体设计流程图
T1中断入口
定时器装入初值
扫描键盘
启动, T0中断入口
正转, 开始装入定时器初值
反转脉冲正转脉冲系统初始化脉冲计数装入初值计算速度是否测速, 打开T0
开定时器T1 返回速度值显示转速显示测量速度
等待中断 T0中断出口 T1中断出口
系统总体框图如图(5-1)所示,程序由键盘扫描处理模块、数码管显示模块、转速检测模块组成。

并且将键盘扫描处理、显示写进定时器中断服务程序,以提高程序的执行效率。

本系统采用STC89C52中的T0定时器和T1计数器配合使用对转速脉冲定时计数。

计数器T1工作于计数状态对外部脉冲进行计数;T0工作为定时器方式每次定时50ms,并记到20次后中断,总计时为1s。

该程序的流程图如图5.2:
图5.2 主程序流程图图5.3 T0测速流程图
该程序编程的思想就是在给定的1s之内,用单片机自带的计数器T1对外部脉冲进行计数。

图5.3是定时服务程序,改程序主要是完成1s的定时任务,并且对变量
buf_min进行加一处理,其中在对T0进行赋初值时,选择为50000,这样记到20次最接近1s。

、源程序设计:3
#include<reg52.h> led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6
d,0x7d,0x07,0x7f,0x6f,0x00}; #define uchar unsigned char //共阴极码#define uint unsigned int //uchar
uchar code
showbit[]={0xfe,0xfd,0xfb,0xf7,0x7ffan[]={0xfc,0xf9,0xf3,0xf6}; ,0xbf,0x df,0xef}; //位码
//反转控制字 uint code
uchar code
speed[]={50,60,70,80,90,100,110,120zheng[]={0xfc,0xf6,0xf3,0xf9};
//,130,140,150,160,170,180,190,200,21正转控制字
0,220,230,240,250,260,270,280,290,3uint code
00,310,320,330,340,350,360,370,380,X[]={55295,46081,39497,34561,30719,39 0,400,410,420,430,440,450,460,47027640,25133,23036,21266,19748,18430,480 ,490,500,510,520,530,540,550,56,17280,16263,15359,14551,13822,13160,570, 580,590,600,610,620,630,640,65,12566,12020,11519,11059,10633,10250,660,6 70,680,690,700,710,720,730,39,9874,9533,9215,8918,8640,8377,81740,750,76 0,770,780,790,800,810,82031,7899,7679,7472,7275,7088,6911,67,830,840,850 ,860,870,880,890,900,9142,6582,6429,6283,6143,6009,5881,570,920,930,940, 950,960,970,980,990,160,5642,5528,5420,5316,5216,5119,50000};
26,4937,4850,4766,4685,4607,4532,44sbit P3_0=P3^0;
58,4387,4319,4253,4188,4126,4065,40sbit P3_1=P3^1;
06,3949,3893,3839,3786,3736,3686,36
37,3590,3544,3499,3456,3412,3371,33sbit qidong=P1^0;
30,3291,3252,3214,3177,3141,3105,30sbit tingzhi=P1^1;
71,3037,3004,2972,2940,2909,2880,28sbit zf=P1^2;
49,2821,2792,2764}; sbit xsqh=P1^3;
//uchar sbit jiasu=P1^4;
sbit jiansu=P1^5; led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x9
2,0x82,0xf8,0x80,0x90}; //共阳极sbit jiasu100=P1^6;
码 sbit jiansu100=P1^7;
uchar sbit P3_4=P3^4; //个位
sbit P3_5=P3^5; //十位 bai=s/100%10; sbit P3_6=P3^6; //百位
qian=s/1000%10; sbit P3_7=P3^7; //千位 P3_4=0; sbit P3_2=P3^2;
P0=led[ge]; uint L,N,M,K,speednow,Q; delayled(); uint cesu; P3_4=1;
uchar P3_5=0; T1count,beforecount,aftercount; P0=led[shi]; bit flag;
//flag为1正转, delayled(); flag为0反转 P3_5=1; bit star_flag; //启动为1,停 P3_6=0; 止为0 P0=led[bai]; bit xianshi_flag; //测速为1,
delayled(); 设定速度为0 P3_6=1; bit beforechange; P3_7=0; bit afterchange; P0=led[qian]; void delayuln(void) //1ms误差 0us delayled(); { unsigned char a,b,c; P3_7=1;
for(c=1;c>0;c--) }
for(b=142;b>0;b--)
for(a=2;a>0;a--); void motor_zf() //换向程序 } {
if(star_flag==0) void delayled()//1ms {
{ flag=!flag;
P3_0=!P3_0; unsigned char a,b,c;
for(c=1;c>0;c--) }
for(b=142;b>0;b--) else
for(a=2;a>0;a--); {
} beforechange=1; void delaykey(void) //10ms误差 P3_2=0; -0.000000000002us L=N;
{ }
unsigned char a,b; //beforechange=1;
for(b=102;b>0;b--) //P3_2=0;
for(a=3;a>0;a--); //L=N;
} }
void speedup() //速度+10 void display(uint s) //显示函数 { { if(N<95)
uint ge,shi,bai,qian; N++;
ge=s%10;
shi=s/10%10; }
void speeddown() //速度-10 }
{ if(jiasu100==0)
if(N>0) {
N--; speedup100();
while(jiasu100==0);
}
} if(jiansu100==0) void speedup100() //速度+100 {
{ speeddown100();
if(N<86) while(jiansu100==0);
N=N+10; }
if(tingzhi==0) } {
void speeddown100() //速度-100 star_flag=0; { while(tingzhi==0);
if(N>9) }
N=N-10; if(xsqh==0)
{
} xianshi_flag=!xianshi_flag;
void key() //键盘扫描程序 P3_1=!P3_1; { while(xsqh==0);
if((P1&0xff)!=0xff) }
{ }
delaykey(); }
if(zf==0) //主程序
{ void main()
motor_zf(); {
while(zf==0); star_flag=0;
} flag=1;
if(qidong==0) P3_0=0;
{ xianshi_flag=0;
star_flag=1; P3_1=1;
while(qidong==0); N=0;
} Q=0;
if(jiasu==0) TMOD=0x11;
{ TH1=(65536-15000)/256;
speedup(); TL1=(65536-15000)%256;
while(jiasu==0); TH0=(65536-50000)/256;
} TL0=(65536-50000)%256;
if(jiansu==0) EA=1;
{ TR1=1;
speeddown(); ET1=1;
while(jiansu==0); IT1=1;
TR0=0; afterchange=1;
PX1=1; P3_0=!P3_0;
PT0=1; }
while(1); }
} }
//定时器T1中断服务程序 if(afterchange==1) void time1_int(void) interrupt 3 {
{ aftercount++; TH1=(65536-X[N])/256; //装入初 if(aftercount==100) 值 {
TL1=(65536-X[N])%256; N++;
key(); //扫描键盘 if(L==N) if(star_flag==1) //判断是否启动 {
{ afterchange=0;
if(xianshi_flag==1) //判断是否测 flag=!flag; 速,如果测速,打开定时器T0和外部中 P3_2=1; 断允许 }
{ }
ET0=1; }
TR0=1; }
EX1=1; else
} {P2=fan[M]; //输出反转脉冲
else delayuln();
{ M++;
ET0=0; if(M==4)M=0;
TR0=0; if(beforechange==1) EX1=0; {
} beforecount++;
if(flag==1) //判断正反转 if(beforecount==100) { {
P2=zheng[M]; //输出正转脉冲 N--;
delayuln(); if(N==0)
M++; {
if(M==4)M=0; beforechange=0;
if(beforechange==1) afterchange=1;
{ P3_0=!P3_0;
beforecount++; }
if(beforecount==100) }
{ }
N--; if(afterchange==1)
if(N==0) {
{ aftercount++;
beforechange=0; if(aftercount==100)
{ void time0_int(void) interrupt 1
N++; {
if(L==N) TH0=(65536-20000)/256;
{ TL0=(65536-20000)%256;
afterchange=0; //50ms*10=500ms
flag=!flag; T1count++;
P3_2=1; if(T1count==50) //计时1秒钟
} {
} EX1=0;
} cesu=Q*30; //*60/2 //计算电
} 机转速
speednow=speed[N]; if(cesu>200)
} {P3_2=0;}
else {P3_2=1; }
else Q=0;
speednow=0; // speed_huoer=1123; T1count=0; if(xianshi_flag==0) //判断是否测速 EX1=1;
{display(speednow);} //如果不测速, }
显示控制转速 }
else //外部脉冲计数程序
{display(cesu);} //如果测速,显示void int0_int() interrupt 2
测量速度 {
} Q++;
//定时器T0中断服务程序 }
六、仿真调试
1、经软件调试-仿真器调试通过,并烧录芯片,得到所要求的设计结果。

试验成功。

现根据具体设计方案对整体电路仿真如下图:
2、总电路图
七、实际目标系统测试情况
八、课程设计总结心得体会
通过本次课程设计,使我学到了许多书本上无法学到的知识,也使我深刻体会到单片机技术应用领域的广泛。

不仅让我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。

在本次课程设计过程中,我学会了在
网络上查找有关本设计的各硬件的资源,其中包括:交流电机调速、STC89C52单片机等,为本次课程设计提供了一定的资料。

在做课程设计的初期阶段,难度很大,没有头绪。

通过求助于毛老师、理清了思路。

同时,在图书馆里、网上查阅资料,攻克了课程设计中的道道难题。

最后经过指导老师的耐心指点和连续的奋战才算基本合格。

办事只要有了头绪,就会简单很多。

本次设计能完成,算是有了很大的收获。

总的感受有以下几方面:
1、通过本次设计,我不但对单片机有了更为深入的了解,对一个课题如何画流程图,编程序等有了一定的认识。

2、进一步加强了我的动手能力和运用专业知识的能力,从中学习到如何去思考和解决问题,以及如何灵活地改变方法去实现设计方案。

特别是深刻体会到了软件和硬件结合的重要性,以及两
者的联系和配合作用。

3、让我了解到单片机技术对当今人们生活的重要性。

同时这次做课程设计的经历也使我受益匪浅,让我知道做任何事情都应脚踏实地,刻苦努力地去做,只有这样,才能做好。

在设计过程中,得到了我的指导老师的悉心指导与帮助,在此表示衷心的感谢。

九、参考文献
[1] 欧阳文主编.ATMEL89系列单片机的原理与开发实践[M].北京:中国电力出版社,2007.
[2] 张毅刚主编.单片机原理及应用[M].北京:高等教育出版社,2003.
[3] 吴霞.利用89C51单片机实现的一种低转速测量方法[J].机电工
程,2000,17(6):18-20.
[4] 邵显涛,陈明,李俊.基于霍尔传感器电机转速的单片机测量[J].研究与开发,2008,27(10):29-31.
[5] 赵树磊,谢吉华,刘永峰.基于霍尔传感器的电机测速装置[J].江苏电器,2008(10):53-56.
[6] 李福进,陈至坤,王汝琳,梁月肖.基于单片机的转速测量方法[J].工况自动化,2006(1):54-55.
[7] 常健生主编.检测与转换技术[M].第3版.北京:机械工业出版社,2003.
[8] 张毅刚等.单片机原理及应用[M].北京:高等教育出版社,2004.
[9] 郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2010.
电子技术基础实验――电子电路实验?设计?仿真[M].北京:高等教育出版社,[10] 陈大钦主编.
2000.。

相关文档
最新文档