基于89C51智能转速计设计.doc

上传人:pu****.1 文档编号:544819862 上传时间:2023-02-16 格式:DOC 页数:6 大小:49.50KB
返回 下载 相关 举报
基于89C51智能转速计设计.doc_第1页
第1页 / 共6页
基于89C51智能转速计设计.doc_第2页
第2页 / 共6页
基于89C51智能转速计设计.doc_第3页
第3页 / 共6页
基于89C51智能转速计设计.doc_第4页
第4页 / 共6页
基于89C51智能转速计设计.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于89C51智能转速计设计.doc》由会员分享,可在线阅读,更多相关《基于89C51智能转速计设计.doc(6页珍藏版)》请在金锄头文库上搜索。

1、基于89C51的智能转速计设计作者:jdzj868 来源:机电之家下载站 录入:jdzj868 更新时间:2009-11-13 14:29:33 点击数:0 【字体: 】转速计是日常生活中比较重要的计量仪表之一,在汽、电子、纺织、造纸等方面有广泛的应用。但是由于过去的技术比较落后转速计一般都使用机械式或机电式的机构。其结构原理如下: 这样的机构虽然原理非常简单,设计也比较方便,但其缺点也是显而易见的。例如:机械接触式设计会影响被测件的正常工作,低速运转时会产生较大影响传动式结构使测量器件寿命变短,间接提高了产品价格,影响其市场占有率采用测速电机,增加了整个系统的成本降低了测量精度功率消耗大,无

2、便携性可言可见,这样的设计给市场推广带来了很大的阻碍,而且降低了测量精度。从而给很难占领市场。相比之下本文介绍的智能转速计避免了老式转速计的以上缺点。采用光电测量的方法。结构框图如下:光电测量部分原理:检测齿轮上有10个齿均匀分布在轮盘周围,并被直接固定在被测轴上,安装时光电耦合器的发光二极管和光敏三极管正对齿轮上的齿,当被测轴转动时带动检测齿轮转动,光电耦合器通过对检测齿轮上的齿进行耦合从而产生数字脉冲。脉冲经过放大送向单片机的计数端。单片机部分工作原理:本文采用的单片机为AT89C51,内有两个定时/计数器。在程序设计时笔者将T0定时/计数器作为1秒定时使用,将T1定时/计数器作对脉冲的计

3、数器使用。单片机计数端在接收到脉冲后对脉冲进行计数,每隔1秒提取TH1和TL1中的计数数据,并进行相应的运算,对16进制数据进行处理,得到10进制数据,送显示缓存进行显示输出。在对TH1和TL1数据整合处理时使用到了C程序中的结构和共用的概念union unsigned int word; struct unsigned char high; unsigned char low; bytes; result;result.bytes.high=TH1;result.bytes.low=TL1;counter=result.word;这样一来就可以把两个无符号字符型变量数据按高低字节合并成一个整

4、型变量来处理了。在本文中四位7段LED能够显示09999的数值,根据下文提供的计数值与转速之间的关系可确定计数值范围必须达到01667,很显然这样的数据通过字节来处理是非常不方便的,但如果通过上述方法转化成整型变量来处理值域变为065535,足以容纳01667中的任何一个整型数值。具体计数值与转速之间的数学关系如下:转速(round/minute)= 并将转速值通过动态扫描电路和程序显示在4位7段LED数码管上。其优点如下:采用单片机控制,精度高,稳定性好,测量范围大功率小,易于提高其便携性能,突出产品优势产品成本低廉,整套系统价格不超过15元人民币抗干扰能力强,可避免外界电磁干扰和其他干扰因

5、素的影响非接触式测量,采用光电器件测量,无连接轴,对被测件无任何影响,提高测量精度电子式测量方法缩小整个系统的体积,使便携式产品的开发更具可操作性非机械式测量方法,采用电子器件,提高设备的寿命,间接降低成本通过以上比较不难看出智能转速计不管从成本上、精度上还是便携性能上都比原有的机电式设备好得多。从市场开发的角度来看各方面都比较出色。该产品通过改进还可以做成出租车里程计、水文监测以及气象监测的有关仪器仪表。#include reg51.h#define uchar unsigned char#define uint unsigned intuchar code disptab=0xc0,0xf

6、9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;uchar code bittab=0x01,0x02,0x04,0x08;uchar data dispbuf=0,0,0,0;void main(void)void disp();EA=1;ET0=1;TMOD=0x51;TH0=0x3c;TL0=0xb0;TR0=1;TR1=1;for(;)disp();void disp(void)uchar i,deley;for(i=0;i4;i+)P1=bittabi;P2=disptabdispbufi;for(deley=0;deley200;deley+);

7、void timer(void) interrupt 1 using 1static uchar i;uint counter;unionuint word;structuchar high;uchar low; byte; result;TH0=0x3c;TL0=0xb0;i+;if(i=10)result.byte.high=TH1;result.byte.low=TL1;counter=result.word;counter*=6;dispbuf0=counter%10;dispbuf1=counter%100/10;dispbuf2=counter%1000/100;dispbuf3=counter/1000;

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

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号