基于proteus仿真的转速测量系统.doc_第1页
基于proteus仿真的转速测量系统.doc_第2页
基于proteus仿真的转速测量系统.doc_第3页
基于proteus仿真的转速测量系统.doc_第4页
基于proteus仿真的转速测量系统.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

基于Proteus仿真的转速测量系统设计摘要:利用增量式编码器的信号特征、proteus软件的基本功能,设计以AT89C52单片机为控制中心的编码器转速测量电路,详细分析软件实现的方法,并给出c语言程序,利用Proteus软件进行仿真得到预期的测量结果。本文便是运用AT89C52单片机控制的智能化转速测量仪。电机在运行过程中,需要对其进行监控,转速是一个必不可少的一个参数。本系统基于proteus仿真对电机转速进行测量,并可以和PC机进行通信,显示电机的转速,并观察电机运行的基本状况。本设计主要用AT89C52作为控制核心,由增量式编码器、LED数码显像管、HIN232CPE电平转换、及RS232构成。详细介绍了单片机的测量转速系统及PC机与单片机之间的串行通讯。充分发挥了单片机的性能。本文重点是测量速度并显示在5位LED数码管上。其优点硬件是电路简单,软件功能完善,测量速度快增、精度高、控制系统可靠,性价比较高等特点。关键字:单片机; 转速; 编码器一、 设计任务在工程实践中,经常会遇到各种需要测量转速的场合,测量转速的方法分为模拟式和数字式两种。模拟式采用测速发电机为检测元件,得到的信号是模拟量。数字式通常采用光电编码器,霍尔元件等为检测元件,得到的信号是脉冲信号。随着微型计算机的广泛应用,特别是高性能价格比的单片机的出现,转速测量普遍采用以单片机为核心的数字式测量方法。本课程需要设计一个以单片机为控制中心的编码器转速测量系统,编码器信号利用信号源直接输入。七段数码发光管作为转速显示输出。本组通过设计整个系统方案,单片机选型为AT89C52,源代码进行设计以及注释,绘制出系统硬件电路图以及控制软件的主程序与子程序的流程图,并且成功的基于proteus进行了系统仿真。二、 总体设计三、 硬件设计 利用Proteus ISIS 新建项目,通过左侧栏区得P命令,在Pick devices窗口中选择系统元器件。根据需要找出所需元器件,排列,然后进行布线。如图所示,采用AT89c52单片机作为控制器,使用(7SEG-MPX4-CA-RED)4位七段数码发光管作为转速输出,可以输出0-9999之间的数值。单片机P1口8个引脚接在LED显示器的段选码(a、b、c、d、e、f、g、dp)引脚上,单片机的P2口的4个引脚接在LED显示器位选码(1、2、3、4)引脚上,电阻起限流作用,采用总线方式接线使电路更为简洁。 为简化设计编码器信号利用信号源直接输入P3.4和P0.4口以代替。在工具栏内选中信号源工具,在对象选择窗口选择“PLUSE”对象,分别连接在P3.2、P0.4作为编码器A、B路信号、参数设为类型为plus、频率为1kHz、电压幅值为5V模拟正向转动时将B路信号延时250微秒(1kHz时1周期对应1ms,滞后90度即延时250微秒) 为区分编码器是正转、反转以确定对计数脉冲进行递增或递减操作。利用介入P3.2口信号的下降沿触发外部中断INTO,在中断服务程序中,判断此时P0.4口的电压,如果是高电平,则为正向运转,正向运行标志位P0.5置1,并对脉冲计数加1,相反如果此时P0.4口为低电平,则为反向运转,将运行方向标志清零,对脉冲数减1。四、 软件设计1、 软件设计思路分析2、 程序流程图主程序流程图3、 源代码 #include#include#define uchar unsigned char#define uint unsigned intsbit SIGA=P03;/A路信号sbit SIGB=P04;/B路信号sbit DIREC=P05;/方向指示灯 uchar flag,m;uint pcount,temp,temp1,m1;uchar code table18=0xc0,0xf9,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff,0xf9,0x0c,;uchar a4=0;uchar *bp;void init(void)DIREC=1; pcount=0; TMOD=0x01;/定时器0方式1 TH0=0x3c; TL0=0xb0; EA=1; ET0=1;/开中断 IT0=1;EX0=1;TR0=1;void tim0(void) interrupt 1 using 1/定时器中断程序TH0=0x3d;TL0=0xb0;temp1=pcount-temp;/计算T0的时间内脉冲数temp=pcount;flag=1;/设标志 void int0(void) interrupt 0 using 0/外部中断程序 if(SIGB=1)/B信号为高电平 DIREC=1;/正向运行 pcount+; else DIREC=0;/反向运行 pcount-; void delayms(uchar ms)/延时程序 uchar i; while(ms-) for(i=0;i20;i+); void display1(char idata *ap)/显示子程序 uchar sel,i;P2=0;/关显示sel=0x08;/选最左边ledfor(i=0;i1;/右移一位 void chang(int num)/转换子程序uchar t;int num1;t=0;if(num0)/取绝对值num=-num;num1=20*num;/转换成每秒脉冲数for(t=0;t4;t+)at=num1%10;/取余数送数组anum1=num1/10;/除10 void main() Init(); do if(flag=1) m1=temp1; chang(m1); flag=0; bp=&a0; display1(bp); while(1); 五、 仿真 在Keil vsion3环境下,新建Keil 项目,选用AT89C52单片机作为工作CPU,新建kcsj.c文件并加载至项目中,在“Option for tonget”中打开“Output”窗口,选择“Creat hex file”选项,工作主频率设定为12MHz。设计程序并进行编译,编译成功后将产生kcsh.hex文件。在proteus中选中AT89C52进行设置,设置单片机工作频率为12MHz,按照正确的路径加载kcsj.hex文件。单击Prot

温馨提示

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

最新文档

评论

0/150

提交评论