标题: 求指教,自己编的小程序有一点小问题,单片机测速及数码管显示速度 [打印本页]

作者: 13151322    时间: 2017-4-8 11:21
标题: 求指教,自己编的小程序有一点小问题,单片机测速及数码管显示速度
程序说明:
每圈产生200个脉冲,轮径125mm,每秒显示速度;
程序里面每一行都有说明。
我遇到的问题:50Hz时应该显示3,但是数码是000和014循环显示;
300Hz时应该显示21,但是数码是014和028循环显示;
700Hz时应该显示49,但是数码是056和042循环显示;
1000Hz时应该显示70,这个是正确显示的;
1500Hz时应该显示105,但是数码是098和113循环显示。
我的发现:
数码管显示不准确的,应该显示的正好是循环显示的那两个数的平均数,是我自己瞎猜的,不知道是什么问题;
我后来用其他频率仿真,发现只有200Hz的倍数才会显示正确,小于200Hz都是000和014循环显示,是因为计数满200才会执行数据处理的程序;
然后我修改了代码,如图;
修改之后还不如原来,希望有好心的大神帮我分析分析,谢谢了。


修改代码.png (19.94 KB, 下载次数: 136)

修改代码01

修改代码01

修改代码1.png (10.13 KB, 下载次数: 108)

修改代码02

修改代码02

修改后仿真.png (13.78 KB, 下载次数: 109)

修改后仿真应该显示70却只显示14

修改后仿真应该显示70却只显示14

00.rar

193.93 KB, 下载次数: 38

修改前后的程序


作者: yzwzfyz    时间: 2017-4-8 15:46
定时器中time是干什么的?计算式中未看到time。
作者: 13151322    时间: 2017-4-8 16:32
yzwzfyz 发表于 2017-4-8 15:46
定时器中time是干什么的?计算式中未看到time。

time是定时器T0计时使用的,定时为50ms,记满20次即为1s
作者: yzwzfyz    时间: 2017-4-8 21:31
记满1S后干什么?有什么用?用在何处了?与计算的何处理相关?
作者: zl2168    时间: 2017-4-9 07:53
本帖最后由 zl2168 于 2017-4-9 15:20 编辑

给你几个案例参考
实例73 测量脉冲频率
Proteus仿真一下,确认有效
实例73 测量脉冲频率.rar (52.74 KB, 下载次数: 26)

以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版
书中电路和程序设计有详细说明,程序语句条条有注解。











欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1