成为订阅者(免费)

加入29,000名其他订阅者以获得用户销售折扣和 其他免费资源。
:
:
大学教师'担心 - 您的邮件地址完全是 安全的。我保证使用它 只要 to send you MicroZine.

用于PIC频率计数器电路的示意图和C代码 about 50MHz

该PIC频率计数器电路使用a 多路复用七个段显示 to provide 8位数并使用定时器1计数输入信号的边缘和计时器0到 count time.

它使用更简单的方法 直接的 频率测量 这意味着输入事件(您 想要获得频率读数)用于直接递增计数器 (inside the PIC).

制造频率计数器的另一种方式是互惠计数 使用上升沿事件触发计数器并停止计数器 falling edge.

直接计数方法意味着显示的数字数取决于 在输入为1Hz输入的输入上,显示数字1表示a 1Hz的频率。互惠计数显示更多数字以获取更多的分辨率 在较低的频率下,它可以显示赫兹的分数。但是,对于基础 使用此处所示的频率计数器非常有用。


以与此同样的方式 液晶 计数器项目该频率计数器电路使用16位计数器模式下的TMR1 计算输入信号边缘。累计累积计数器溢出 倍数为65536的总数。增加柜台的当前值 结束给出了总数。此外,定时器0用于获取 通过计数1E6时钟边(FSOC / 4 = 1MHz),精确为1秒 主时钟频率由4MHz的晶体共振设置。

7段显示的其他问题是它们必须更新 大约每20毫米的眼睛都被愚弄,看到一个连续 显示所以定时器0的一部分0计数进入执行7段显示 刷新。通常,您将使用TTL芯片,为您提供刷新 (75LS47或CMOS 4511),但这里的设计都是全部的。

复杂的位是中断例程必须小,使得 在允许显示刷新时正确捕获计数。

频率计数器电路规范

闽频 1Hz
最大频率 ~50MHz (限制输入引脚特性)。
输入信号电平 TTL.

频率计数器的基本操作

门时间计算

创建1秒的捕获时间需要计算内部时钟 (FOSC / 4 = 4E6 / 4),如在我们使用Timer0之前。要做到这一点,我们需要使用 当计数器的溢出时产生的中断。

主时钟处理周期= fosc / 4 =(1 /(4e6 / 4))= 1e-6 = 1us

要获得1秒,我们需要1 /(FOSC / 4)计数= 1 / 1E-6 = 1E6

定时器0计数器每256计数溢出。

由于每次计数器通过256时,都会发生溢出 COUNT 1E6 / 256 OVERFLOWS1E6 / 256 = 3906.25

额外的0.25表示在最后一个中断之前需要64个周期 fires see the

液晶项目 计算时的计算完全相同。

屏幕更新率

就像LCD项目一样,测量时间为1秒钟 最终计数实际上是输入信号的频率,并再次使用1 第二个测量时间为1 Hz提供频率分辨率。

注意:精确的最大工作频率由 PIC输入引脚特性。

编译器 mikroelectronika mikroc编译器 自由!
目标 16F877A(重新替换为具有TMR1的其他照片)
软件级别 先进的。
软件说明 不断的时间码。
硬件级别 中间的
硬件笔记 七个段复用。
项目版本 1.04
项目文件 进入 你的细节得到了 下载 Link
并获得微控制器通讯:


(注意:您的电子邮件安全它永远不会 be sold or rented).
你会 get 一切C源代码和十六进制文件。

注意:检查您的电子邮件以获取项目代码下载 link.

频率计数器电路测试程序

一旦构造,您可以使用使用的接线 以下两个文件如果1st下载文件似乎没有工作:

这些测试还将测试使用单个7的系统 segment displays.

频率计数器 电路:测试布线1 下载 here.
频率计数器 电路:测试布线2 下载 here.

测试布线1:向显示器输出恒定数字和 reads "12345678"从左到右。您可以使用此测试查看portd是否 并且每个晶体管驱动器正确连接。

测试接线2:从1-8的移动数字输出到测试portd 与每个7个段的连接。只需观察每个数字并确保它发生 通过每个数字1到8。

汇编

有关编译这些文件的教程 点击 here.

如果要检查,您可以重新编译频率计数器电路文件 代码操作(使用内置模拟器)或更改源代码。笔记 十六进制文件包含在下载中。

对于该电路和笔记的一般操作理论 在频率计数上 频率 计数器电路点击此处。

pic频率计数器电路使用7段显示器, TMR0 and TMR1.
(单击图表以打开PDF)。
7SEGUNT展示频率计数器

pic频率计数器电路硬件

频率计数器电路的主电路块是 如下图所示。

使用约翰逊复用8个七个段显示器 在每个时钟脉冲后激活单个输出的计数器(4017)。口岸A. 将重置线和时钟信号驱动到4017和晶体管 4017的输出连接到每个七个段的共同阴极 展示。这使得微沿每个显示器顺序地。端口D驱动器 段使能为控制显示的字符。

晶体振荡器只是晶体和两个电容器 连接到OSC1和OSC2的PIC振荡器端口。电容器都可以 除非您想要使用频率参考进行调整,否则请修复。如果你不't 具有准确的参考,然后使用固定电容器。

pic Micro可以是具有计时器0和计时器1的任何类型 硬件和拥有足够的内存来保持程序和足够的端口 驱动4017和段使能线(8位)。

LED在每个栅极时间结束时切换到指示 处理器还活着 - 所以如果没有输入信号,你可以判断 该软件正在工作。

您可以通过电路中的PIC编程 ICSP.连接器。

频率计数器示意电路

了解用于创建的工具 this diagram.

pic频率计数器电路软件

pic频率计数器电路的项目文件

编译器项目文件
频率_counter_4mhz_7seg_tmr1.mcppi.

C源文件。
频率_counter_4mhz_7seg_tmr1.c.
ltoa.c.
seven_segment.c.

标题文件。
比特
Sevensegent.h.
ltoa.h.

输出文件
频率_counter_4mhz_7seg_tmr1.hex.

简要描述;简介

  • 频率_counter.c:包含代码开始点(在例程中 'main').
  • SevenseClet.c:七个段刷新更新例程。
  • ltoa.c.转换为ASCII(一个字符串)的长单词。
  • Bit.h:用于位操作的宏。

所有其他头文件都包含原型。

pic频率计数器电路代码操作。

频率_counter_4mhz_7seg_tmr1.c.

此文件包含端口初始化, Interrupt_initialisation,main和中断函数。

初始化后,代码进入无限循环 不断等待在中断例程中设置的更新标志。所以 实际上,系统的主要部分未包含在内"main" but in 中断()代码。

在 it_ports() - 设置端口方向

在 it_interrupts() - 设置计时器0和计时器1 controls.

start_timer_count() - 重新启动计时器0和1 从零计算并再次开始中断。

中断() - 接受和行动中断 events.

主要的() - Initialises code and enters an endless 循环反应更新标志。

功能:主要

此例程是程序的入口点,并调用所有初始化 然后函数启动中断例程,并进入无限循环等待 the the flag: 'update_display'.

当设置标志时,它需要存储的定时器值并计算 总存储时间。如果这是非零,则它将转换为放入的字符串 array 'op'。 SevenseCent.c代码使用此数组在更新7时使用 segment displays.

如果计算的值为零,则零将放入数组'op' for display instead.

功能:中断

此例程包含计数器的主要操作。正如所讨论的计时器 1通过增加每个输入事件(边缘)的tmr1_counter来计算事件'

定时器0计数每个FOSC / 4边缘的时间增加。

为定时器0溢出生成中断(256 *(1 /(fosc / 4.))))和如 以前讨论过的定时器0溢出的定时器0越近1 second is 3906.

此时,标志DO_TMR0_END_COUNT被设置为定时器0 中断服务例程下一个计数将是最后一个。这一点 调整定时器0,用于64个FOSC / 4周期的溢出计数和何时 更新中断触发变量(以字母为前缀'st_'). At 这一点完成1秒时间已过期并更新显示 必需的。这是通过设置标志update_display来实现的。常规主要 然后在中断完成后对此标志作出反应。

定时器0中断的最后一件事是调用显示刷新 例程display_str_8seg7每19个定时器0溢出(请参阅SevEneCent.C for details).

Sevensement.c.

此文件具有8位数七个段显示驱动程序。

4017的第一个输出未连接,因此这是如此 重置状态。在每个呼叫中​​,下一个数字都在端口D和4017上输出 通过划分时钟,一点是先进的。通过这种方式在每个电话后打电话 digit is displayed.

功能:init_display_str_8seg7 -

此例程将硬件和索引计数器初始化到已知状态。

功能:display_str_8seg7.

例程是故意小的,并且不会立即输出所有数字 由于它直接从中断例程中调用即,它是其中的一部分 中断例程。在每个例程的每个调用下,输出下一个数字 通过递增idx选择的下一个数字(变量idx的范围 在文件Sevense.C中,所以没有其他任何东西可以看到或改变它)。

这意味着常规没有花费太长,以便其他中断 can be serviced.

中断的实际呼叫速率是计时器0溢出的19 时间和它也是中断代码从它看起来的最后一件事 并不像捕获频率事件或计数时间那么重要。这个号码 is:

19 * 256 * FOSC / 4 = 19 * 256 * 1E-6 = 0.0049s〜5ms

因此,所有8位数都会在大约5ms * 8 = 40ms时更新,即25Hz。

它是通过实验发现的,但是您预期的重复率。

ltoa.c.

这是一个长字到ASCII输出的公共域转换。

它可以更有效,但允许使用任何数字基础。

比特

这包含应为的位操作的宏 编译器独立。

频率计数器电路的代码描述结束。

新的! Comments

让你说到你刚刚阅读的东西!留下下面的框中的评论。


跳跃 频率计数器电路
最佳微控制器项目主页。 





隐私政策 | 接触 | 关于我

网站地图 | 使用条款


ezoic.报告此广告

访问我们的Facebook页面:

   点击这里



最近的文章

  1. 如何使用ADS1115

    使用ADS1115精度16位ADC进行教程进行低功耗。

    阅读更多

  2. arduino.模拟输出...易模拟输出生成

    arduino.模拟输出:如何创建最精确的PWM模拟输出以及如何创建模拟PWM正弦波。

    阅读更多

  3. 数号和等效的快速宏。加快代码!

    了解DigitalWrite()的工作原理......现在使用17倍宏宏!

    阅读更多

  4. TCS230颜色传感芯片:如何运作以及如何使用它。

    如何使用TCS230(/ TCS3200)彩色检测器芯片并轻松将其添加到您的任何项目中。

    阅读更多

  5. 如何使用ADXL345进行运动感测等。

    使用ADXL345 Acellerometer,您可以检测到16G!您还可以了解如何使用它来点击检测等。

    阅读更多

  6. HMC5883L 3轴数字MAGENTOMTER如何运作

    HMC5883L - 如何制作数字罗盘,了解HMC5883L和QMC5883L之间的差异以及它们是否兼容。

    阅读更多



读者 Comments

"I wanted to thank
你这么好
对于所有信息
你已经提供了
你的网站's

高超极好的."

- 逃亡Potthath.

"This site really is
最好的和我最喜欢的。
我发现这里有很多很有用
项目和提示。"

- 米兰

Bursach.<at>gmail.com<

"Awesome site,
非常,非常容易和好
导航!"


-
镭_tr.<at>
wolf359.cjb.net.


学习微控制器

"Interested in
微控制器?"

注册
免费7天指南:

自由 GUIDE : CLICK HERE


"I am a newbie to PIC
我想说
 how great your
网站一直在为我。"


- 戴夫

de_scott.<at>bellsouth.net

"Your site is a great
和完美的工作。
恭喜。"


- SURESH.

IntegratedInfosys.<at>
Yahoo.com.

"I couldn't find the correct
要定义的词语
你的网页。

非常有用,揭开,
诚实明确。

非常感谢
你的时间和作品。
问候。"


- Anon.

回到顶部