高速记数 点击:1277 | 回复:7



猎隼

    
  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2006-01-06 19:51:00
楼主
请问我想在AT89C51上实现高速记数的功能,能不能实现?



周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2006-01-06 22:49:00
1楼
频率、脉冲宽度、计多少?

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2006-01-07 19:58:00
2楼
我自己编了一个类似的程序,在KEIL软件上模拟运行了一下,感觉反应速度不快。主要分了三个部分:
第一部分为记数器的外围信号输入,并进行初始记数。
第二部分为数字转换,将无符号数字转换成6位字符。
第三部分为将六个字符按先后顺序通过P0和P2口进行片选式的输出。
我将焦点都集中在了显示输出的环节,只有在输出端口扫描完一个周期后,才会去检测是否有记数信号的输入。
我欲选的晶振为12MHz,50KHz以下,6位数字。
请帮忙我的思路是否有错误?

胡家

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 552回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-01-10 20:20:00
3楼
50K,每一次中断操作不能超过20uS,一个中断的PUSH,POP保护现场都要十来个uS,我觉得你的程序用循环结构绝不可能检测到那么高速的脉冲。你可能需要换晶振,换那东西应该很方便的呀,如果你换个24M的,那就有40个uS可用。把显示放大循环里处理,包括比较耗时的BCD转换。用定时器中断或外部中断来计数,中断里只进行计数,不进行其他的操作。理论上显示会偶尔有读到半个字的情况,但只是理论,肉眼是看不出来的

胡家

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 552回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-01-10 20:27:00
4楼

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2006-01-10 21:21:00
5楼
‘用定时器中断或外部中断来计数,中断里只进行计数’是会产生上述问题。
但计数过程应该是采用计数器方式,50K 是没有问题的。注意把显示扫描过程使用中断完成,不要采用位延时扫描。

猎隼

  • 精华:1帖
  • 求助:1帖
  • 帖子:151帖 | 1661回
  • 年度积分:0
  • 历史总积分:8983
  • 注册:2005年9月28日
发表于:2006-03-17 16:27:00
6楼
我现在已经成功的用中断进行加减计数操作,理论上是可行的,但不知道运行时是否会影响输出显示,会不会有显示不及时的问题。

chenxueyong

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 9回
  • 年度积分:97
  • 历史总积分:128
  • 注册:2006年3月08日
发表于:2007-06-21 20:40:00
7楼
高速计数的频率与单片机外围晶振的频率有绝对关系。晶振频率越高,计数频率越高,但AT89C51的晶振频率不可超过33MHz。

热门招聘
相关主题

官方公众号

智造工程师