新人报道--发个小小测速计
jun662011/12/16电子技术 IP:广东
进坛子就得发个有技术的帖子 折煞我们这些菜鸟啊,就把曾经的曾经的DIY5位测速计拿来给大家露个脸 还望大家支持,早日成为KC的鬼子

好了 开工………………

五位速速计主要是来测我的电机主轴的速度,带一个红外发射接收的反射头,已经成型了的
废话不多说 上原理图
T(RZI[L_C[01TTJDERG$K_P.jpg

源代码 欢迎山寨欢迎复制

#include <reg51.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int  
bit FLAG=0;
uchar code seg[]={ 0x0C,0xDD,0x34,0x94,0xC5,0x86,0x06,0x9D,0x04,0x84, };      
     //0,1,2,3,4,5,6,7,8,9
uchar disbuf[]={0,0,0,0,0};
sbit led1=P3^0;
sbit led2=P3^1;
sbit led3=P3^2;
sbit led4=P3^3;
sbit led5=P3^5;
uint discount=0;
uint timecount=0;//定时的次数
uint x;

void delay(void){  
unsigned char i=10;
while(i--);
}
void t1_serv() interrupt 3
{
  TH1=236;//(65536-tm)/256;uint tm=5000;//5000 wei dingshide shijian
  TL1=120;//(65536-tm)%256;  244/72/304
  timecount++;    
//200 次为1秒计数  600则相对于3秒钟的计数,那么测1min时则要乘以20
    if(timecount==600)
     {
   FLAG=1;
   TR0=0;    //关闭定时器
   timecount=0;
  }  
}    
void main()
{
  
   uint i=0;
   TMOD=0x15;
   TH0=0;
   TL0=0;
   TH1=244;//(65536-tm)/256;
   TL1=72;//(65536-tm)%256;
   TR0=1;
   TR1=1;
   ET0=1;
   ET1=1;
   EA=1;
   while(1)
  {
   if(FLAG==1)
    {
   FLAG=0;
   x=TH0<<8|TL0;
   x=x*20;   //对应上面定时器的值
   /******** 数据修正,由于晶振的偏差,所以需要更精准的转速需要在这里进行数据修正
   比如在我测试的时候晶振是12.031416M,那么他的偏差就是1500转/min时少1,那么我就在
   下面进行加1处理,加600是因为考虑到4舍5入的道理,比如当测到1400转时很接近1500了
   那么应该加1的,但1400/1500是为0没有起到修正的作用,所以1500×60%=900时可以考虑
   加1,那么数据需要加600刚好达到1500.所以加600的4舍5入值。见下修正值。其他晶振值
   时可以通过类似方法进行修正。
   ****************/
    x=x+(x+600)/1500 ;// 数据修正
   for(i=0;i<5;i++) disbuf=0;
     i=0;  
    while(x/10)      /*数字逐个赋值给数组*/
  {
       disbuf=x%10;
    x=x/10;
    i++;
   }            /*    */
    disbuf=x;
    TH0=0;
       TL0=0;
    TR0=1;
      
     }
    led1=0;  
P1=seg[disbuf[0]];
led5=1;  
delay();   //延时
    led5=0;  
    P1=seg[disbuf[1]];
    led4=1;
delay();   //延时
    led4=0;  
    P1=seg[disbuf[2]];
    led3=1;
delay();   //延时
    led3=0;
    P1=seg[disbuf[3]];
    led2=1;
delay();   //延时
    led2=0;
    P1=seg[disbuf[4]];
    led1=1;
delay();   //延时
    
    
   }
  
}
+50  科创币    潜水员    2011/12/17 鼓励开源,还算不错的作品
来自:电子信息 / 电子技术
22
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
jun66 作者
13年2个月前 IP:未同步
344936
占位上点实物图
IMAG0320.jpg IMAG0319.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
344940
IMAG0336.jpg
+100
科创币
jrcsh
2011-12-17
漂亮
+100
科创币
thallium2012
2011-12-17
厉害 鼓励这样的新人
+100
科创币
caoyuan9642
2011-12-17
很好。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
344941
有什么问题大家提啊 不怎么会说话
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
laser63588
13年2个月前 IP:未同步
344945
LZ有钱人,都直接做板子的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
344946
回 4楼(laser63588) 的帖子
还好了 现在打板便宜了,自己焊洞洞板太丑了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
wzh19940105
13年2个月前 IP:未同步
344955
这帖子有技术含量。大大超过了我以前见的新人贴
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
344960
回 6楼(wzh19940105) 的帖子
这个这个……谢谢帮顶啊,我就单片机那点出息 嘿嘿
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jrcsh
13年2个月前 IP:未同步
345012
1, 因当叫 转速计

2, 测转速方法  有些不是很严密,明天有时间在分析
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
345079
回 8楼(jrcsh) 的帖子
希望指正,我测量的方法是通过单片机的定时器来做的,定时3秒钟,然后计3秒钟的触发次数再乘以20得到每分钟的转速,我不知道你说的不严密指的那部分,如果要计数60秒的触发次数是不现实的,因为这样的画数码管的值会不断的改变而且速度很快你基本上看不到数字的,目前大部分都是通过这种计数方式的,这种方式就是在开始和结尾段不是很准确,但在中间部分还是很准确的,我测试过用示波器发出的校正的1K方波。得到的值是59999 理论值是60000 也就是说误差只有1/60000吧,这个误差我相信大家都可以接受吧。当然还希望楼上帮忙指正下。谢谢了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
潜伏者
13年2个月前 IP:未同步
345091
如果能出个测速套件就好了,测电炮初速的那种。我做的还是不好用。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
345092
回 10楼(狩%猎者) 的帖子
谢谢帮顶,套件没有,打样倒是有多的,PM楼主了,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
silence_2882
13年2个月前 IP:未同步
345101
新人来学习啦。太低调了哦,。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
345105
谢谢帮顶 祝你早日升级成功
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
潜伏者
13年2个月前 IP:未同步
345107
就是有两个光电传感器,发射物一次通过,由单片机计算时间,然后把两个传感器的距离带入。得到发射物的速度,最后显示在数码管上。本人单片机不行。还在学习。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
345111
你这个要求我这个现成的不能实现 不过可以改造下应该可以,装两个红外头,公用一个T0,然后计算他出发两次的时间,这样是最简单的,但也有问题就是因为共用一个T0所以只有第一红外管只能触发一次,当误触发了一次就导致中断时间错误,不知道你听懂没,还有一种就是直接用两个计数器,但我没用过 顺便问下 你准备让两个的间距弄多远呢 还有你那个速度一般是达到多少M/S的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
潜伏者
13年2个月前 IP:未同步
345118
不知道可不可以这样解决,当物体到达第一个位置时开启计数器,当到达第二个位置时停止计数,并读出,然后加入距离,计算出速度。最后显示。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
潜伏者
13年2个月前 IP:未同步
345119
间距10cm左右,目前一般在100M/s。但是早晚会超过1000m/s
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
345122
按1000来算就是1000/0.1=10Khz这个频率对单片机12M来说还是没什么问题的。有时间我帮你弄下
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
zgchen
13年2个月前 IP:未同步
345142
这个不错!能用到摩托车上不啊?
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
jun66作者
13年2个月前 IP:未同步
345144
回 19楼(zgchen) 的帖子
理论上可以的 但问题还是要看你的安装位置,因为红外发射式的 他只能感应到3-5cm左右了 对于那么大的家伙这个距离很近的 能安装吗,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
博海
13年2个月前 IP:未同步
346997
真是好东西啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
jun66
笔友
文章
6
回复
138
学术分
0
2011/12/16注册,8年2个月前活动

很懒,

主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}