#include #define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

uchar a,b,c,d;

#define LED_DAT P0

sbit pin_SpeedSenser = P3^5; //速度传感器脉冲信号输出端接在T1上

#define TIME_CYLC 100 //12M晶振,定时器10ms 中断一次 我们1秒计算一次转速,1000ms/10ms = 100

#define PLUS_PER 2 //码盘的齿数 ,这里假定码盘上有2个齿,即传感器检测到2个脉冲,认为1圈

#define K 1.0 //校准系数

sbit zhen1=P1^0;

sbit fan1=P1^1;

sbit en1=P1^2;

uchar code loops[] = {0x7f,0xbf,0xdf,0xef}; //定义显示位控制驱动码

uchar code table[]={0x14,0xd7,0x4c,0x45,0x87,0x25,0x24,0x57,0x04,0x05}; // 0,1,2,3,4,5,6,7,8,9

uint Tcounter = 0; //时间计数器

bit Flag_Fresh = 0; // 刷新标志

bit Flag_clac = 0; //计算转速标志

bit Flag_Err = 0; //超量程标志

//在数码管上显示一个四位数

void DisplayFresh();

//计算转速,并把结果放入数码管缓冲区

void ClacSpeed();

//初始化定时器

void init_timer();

//延时函数

void Delay(uint ms);

void it_timer0() interrupt 1 //定时器0中断的响应函数

{

TF0 = 0; //定时器 T0用于数码管的动态刷新

TH0 = 0xD8; //初始化

TL0 = 0xF0;

Flag_Fresh = 1;

Tcounter++;

if(Tcounter>TIME_CYLC)

{

Flag_clac = 1;//周期到,该重新计算转速了

}

}

void it_timer1() interrupt 3 //中断地址是0x001b

{

TF1 = 0; //定时器T1用于单位时间内收到的脉冲数,要速度不是很快,T1永远不会益处

Flag_Err = 1; //如果速度很高,我们应考虑另外一种测速方法:脉冲宽度算转速

}

void main(void)

{

init_timer();

while(1)

{

zhen1=1;

fan1=0;

en1=1;

Delay(31);

en1=0;

Delay(169);

if(Flag_Fresh)

{

Flag_Fresh = 0;

DisplayFresh(); // 定时刷新数码管显示

}

if(Flag_clac)

{

Flag_clac = 0;

ClacSpeed(); //计算转速,并把结果放入数码管缓冲区

Tcounter = 0;//周期定时清零

TH1=TL1 = 0x00;//脉冲计数清零

}

if(Flag_Err) //超量程处理

{

//数码管显示字母EEEE,开机时初始化为0000

a = 0x2c;

b = 0x2c;

c = 0x2c;

d = 0x2c;

while(1)

{

DisplayFresh();//不再测速 等待复位i

}

}

}

}

//在数码管上显示一个四位数

void DisplayFresh()

{

P2 =loops[0] ;

LED_DAT = table[a];

Delay(20);

P2 =loops[1] ;

LED_DAT = table[b];

Delay(20);

P2 =loops[2] ;

LED_DAT = table[c];

Delay(20);

P2 =loops[3] ;

LED_DAT = table[d];

Delay(20);

}

//计算转速,并把结果放入数码管缓冲区

void ClacSpeed()

{

uint speed ;

ulong PlusCounter;

PlusCounter = TH1*256 + TL1;

speed = K*(PlusCounter/PLUS_PER);//K是校准系数,如速度不准,调节K的大小

a = (speed/1000)%10;

b = (speed/100)%10;

c = (speed/10)%10;

d = speed%10;

}

void init_timer() //初始化

{

TMOD = 0x51; //定时10毫秒,TOT1选择软件门方式1,T0定时,T1计数,96页可查

TH0 = 0xD8; //T0初始化

TL0 = 0xF0;

ET0=1; //T0中断允许

EA=1; //T0中断

TR0=1; //TO运行

TH1 = 0x00; //T1初始化

TL1 = 0x00;

ET1=1; //T1中断允许

TR1=1; //T1运行

zhen1=1;

fan1=0;

}

void Delay(uint ms) //延时0.1ms函数

{

uchar x,y;

for(x=ms;x>0;x--)

for(y=11;y>0;y--);

}

测速C语言,测速显示C程序相关推荐

  1. c语言流动字体显示的程序,1602字符液晶显示屏程序详解(C语言详细解说)

    液晶模块和数码管相比,液晶模块会显得更加专业.漂亮.液晶显示屏以其体积小.功耗低.超薄轻巧.显示内容丰富.使用方便等等诸多优点,在电子设备.通讯.家用电器.仪器仪表等低功耗应用系统之中得到越来越广泛的 ...

  2. C语言16x16点阵显示汉字程序,16X16点阵汉字显示程序

    <16X16点阵汉字显示程序>由会员分享,可在线阅读,更多相关<16X16点阵汉字显示程序(5页珍藏版)>请在人人文库网上搜索. 1.include #define uchar ...

  3. C语言16x16点阵显示汉字程序,单片机+16x16点阵,汉字滚动显示程序(带仿真)

    2013-6-26 04:31 上传 点击文件名下载附件 下面是源代码预览: #include #include #define DATAOUT P2 //P2 use as data, you ca ...

  4. 电脑如何测网速_Macbook Pro怎么查看网速Mac怎么测网速?

    苹果笔记本怎么查看网速苹果电脑怎么查网速这两个问题在网上大把的人询问,由于本身mac不提供图形化的网速查看软件,加入mac本身的软件少.所以不像Windows随便下载个软件即可查看网速.这里介绍两个软 ...

  5. 外国测试网速软件,5G测速终于不用国外APP了 可能是最强的国产工具来了

    手机的配置越来越高,但网络性能是否也日益进步?在这个通讯技术正处于换代的关键节点,加之手游的日益兴盛,手机网络质量的重要性日益显著. 之前我们曾经介绍过最流行的网速测试App Speedtest专门推 ...

  6. 电脑测速软件_网速慢,怎么办,教你测速,教你解决方案

    网速慢.网页慢.视频卡.游戏卡,如何判断自己的宽带速率是否有问题,本期我们来讨论下,如何正确测试网速,信道干扰.2.4G与5G信号.IPTV测速. 一.电脑测速 受到无线环境影响,无线性能瓶颈等多方面 ...

  7. STM32定时器捕获编码器模式测速和方向测不准问题

    ** STM32定时器捕获编码器模式测速和方向测不准问题 问题概述 关于STM32编码器模式电机测速的资料网上一抓一大把,却发现真的拿过来用还是有问题的,比如刚刚做了个东西,是个个头比较大的麦克纳姆轮 ...

  8. 苹果手机测试网络速度的软件,‎App Store 上的“网速测试大师-测网速首选”

    网速测试大师(SpeedTest Master)致力于为全球用户提供快速专业的网络测速服务.[最新功能]5G测速.Ping 测试.游戏Ping.一键设备检测. 网速测试大师,是您的手机管家,wifi管 ...

  9. 测试网速_测速软件测试的网速真的准确吗?

    前些日子,朋友在某电信公司办理一条500M的家用宽带,邀请我去他家体验急速网络,我经不住他的再三邀请,欣然前往,一路上他一直在得瑟:不服跑个分!不服测个速!但是到了他家,就发现,跑分超级高,测速超级快 ...

最新文章

  1. Python处理XML文件
  2. 基于STC8G1K08的实验电路板
  3. mybatis中sqlSession的设计与实现
  4. linux i2c子系统入口,I2C子系统1 - ARM_Linuxx的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. c调用python打包_如何将C++的API封装成python可调用形式?
  6. 粗虚线和细虚线_建筑图纸的细线,粗线,虚线表示什么
  7. 仍不切换到Java 8的6个理由
  8. 安装安全狗后php5.5无法访问,关于安全狗的详细介绍
  9. 作者:曹玉社(1990-),男,国防科学技术大学并行与分布处理重点实验室硕士生...
  10. 【字节跳动-搜索】22秋招提前批/社招 内推来了!直推到组!全程跟进!
  11. Phoenix官方教程 (一) 构建和运行
  12. HTML+CSS制作炫彩的数字时钟
  13. 41.django中auth用户认证
  14. InDesign教程,如何对齐和调整对象位置?
  15. 软件开发中的成本意识
  16. WEEX|初始化工程
  17. rv1126+imx307/335/415公板使用总结
  18. 基于SpringBoot的统计报表后台管理系统
  19. Linux基本命令-权限、运维相关
  20. 体验魅力Cognos BI 10 系列,第1 部分: 第一次安装

热门文章

  1. edge 禁止网页自动刷新_如何在Microsoft Edge中自动翻译网页
  2. python股票接口_小小- python用雅虎财经(yahoo)接口写简易爬虫获取A股上证所有股票(可以单独选择个股)历史数据...
  3. 分享两个靠谱的微信跳转浏览器打开网页/下载app的接口
  4. 速卖通新手卖家入门知识问答
  5. 苹果WWDC大会:iOS求稳,AR求新,APP求全
  6. 不对窗体进行边框装饰后,实现对鼠标事件的监控
  7. 关于《石油化工可燃气体和有毒气体检测报警设计规范》GB50493-2009 的笔记
  8. 如何度过8天长假?小灰推荐几部经典电影给大家!
  9. 关系数据库设计五大范式学习记录——<五>
  10. 数字IC入门工具大全之 英特尔 Quartus Prime是什么?三个版本有什么区别