工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->LCD1602液晶显示频率计

LCD1602液晶显示频率计

作者:dolphin时间:2016-09-22

频率计是我们在电子电路试验中经常会用到的测量仪器之一,它能将频率值用数码管或液晶显示器直接显示出来,给测试带来很大的方便。

本文将介绍使用ME300B单片机学习开发系统来设计一个用AT89S51内部的定时器/计数器来完成待测信号频率的测量,并用LCD1602显示的简易频率计的过程。


工作原理

频率的测量实际上就是在1S时间内对被测信号进行计数,此计数值就是该输入信号的频率值。
AT89S51单片机内部具有2个16位的定时器/计数器T0和T1,他们均可以用作定时器或事件计数器,并可以在定时或计数溢出时产生中断,具体的工作状态可以由编程来实现。

使用定时器/计数器TO和T1,将TO设置为定时方式,每50ms产生一次中断,产生20次中断所用时间正好为1S;将T1设置为计数方式,T1的初值设置为0,计65535个脉冲后产生一次溢出中断,在T1中断溢出时对溢出次数进行计数(计数值为N)。

1S内T1计的总的脉冲数为65535×N+TH1×256+TL1,这个数值就是被测信号的频率值。



1、频率输入信号的来源

(1)AT89S51的地址锁存信号输出端ALE

ALE端子输出的脉冲频率为系统时钟频率的1/6。当系统频率为11.0592MHz时,ALE的输出频率为1.8432MHz。把T1作为计数器使用时,它最快的计数速率是系统时钟频率的1/24,则T1最快的计数速率为O.46MHz(460kHz)。因此,本演示程序可测最高频率也就为460kHz。由于这个频率值小于ALE的输出频率,可以使用一片CD4040进行分频,如图2所示。我们可以在万能板上焊接此电路,然后通过连接线和ME300B连接。CD4040的ALE信号从ME300B的外扩接口J1的ALE端引出,CD4040的Q2输出信号18432MHz/4=460800Hz)接到ME300B上J1的P35(即实验CPU的P3.5)端口,CD4040的5V供电可通过连接线从ME300B的J7端子取得。

按图2连接好ME300B的硬件,插上1602液晶模块和实验芯片AT89S51或AT89S52,写入演示程序后,液晶即显示真实的频率值,如图3所示内容。

(2)在定时中断服务子程序对P1.4取反,在P1.4端口输出频率为10Hz的方波脉冲,接到P3.5端口可进行自测,LCD1602显示如图4所示的内容。

(3)你也可以通过ME300B的J1插座上P35引脚将外部其他频率源如信号发生器的信号引入,这样就可以测量其他信号源的频率了。要注意输入信号必须是可被单片机接收的TTL/CMOS兼容信号。

2、演示程序的编程

(1)定时器/计数器子程序

在编程中充分利用单片机的定时与计数功能,将T0设置为定时方式,每50ms产生一次中断,产生20次中断所用时间正好为1S;将T1设置为计数方式,并将T1中断定义为优先。T1的初值置为O后,计65535个脉冲后产生一次溢出中断,在T1计数器中断服务子程序中对溢出次数进行计数。在测量时要同时启动TO和T1,达到1S后也要同时关闭T0和T1。





(2)数据处理子程序

1S到后,将计数溢出中断的次数和计数器里的计数值取出进行综合数据处理,处理后的数据送LCD1602显示。

在定时器T0中断服务程序中我们可以看到计数值分别存入INT_G、INT_H和INT_L三个存储单元中。保存在三个存储单元中的数据分别代表为N×65535、TH1×256和TL1,则T1总的计数为N×65535+TH1×256+TL1。

调用数据处理子程序将三字节二进制整数转换成四字节BCD码,再将四字节BCD码送入LCD1602显示子程序。在LCD1602显示子程序中自动将BCD码变为ASCII码,最终由LCD1602液晶显示出来被测信号的频率值。



TO产生的1S时钟信号是控制计数器T1计数的标准时钟信号,其精度很大程度上决定了频率计的频率测量精度。经过对标准时钟信号的校正,该频率计对系统时钟经过24分频后的信号(理论值460800Hz)进行测量,该频率计的测量值为460807Hz。对P1.4产生的自测信号(计算值10Hz)进行测量,该频率计的测量值为10Hz。测试结果表明用此方法制作的频率计是可以满足电子爱好者对频率测量的要求。

如果有条件的话,可使用标准信号发生器对频率计进行校正。

演示程序是由许多子程序组成,本文只是着重介绍了两个子程序。



评论

技术专区