频率计的设计数字简易频率计的设计
一 总体方案设计
(1)系统总体结构
(2)芯片选择
AT89S52芯片:选用该单片机作为频率计的控制部件,用来实现频率的核心的功能。
74LS245芯片:用来驱动数码管。
74LS373芯片:锁存器,用来锁存输出的信号。
74LS240芯片:八单线驱动器,缓冲输出的信号。
74LS393芯片:两个四位二进制计数器。
74LS04芯片:反相器,用以电压的反向。
8255芯片:可编程并行I/O接口芯片,用以扩展单片机的IO口。
LED数码显示管:用来显示所检测到的频率。
(3)定时与计数方式
设置AT...
数字简易频率计的设计
一 总体
设计
(1)系统总体结构
(2)芯片选择
AT89S52芯片:选用该单片机作为频率计的控制部件,用来实现频率的核心的功能。
74LS245芯片:用来驱动数码管。
74LS373芯片:锁存器,用来锁存输出的信号。
74LS240芯片:八单线驱动器,缓冲输出的信号。
74LS393芯片:两个四位二进制计数器。
74LS04芯片:反相器,用以电压的反向。
8255芯片:可编程并行I/O接口芯片,用以扩展单片机的IO口。
LED数码显示管:用来显示所检测到的频率。
(3)定时与计数方式
设置AT89S52的定时/计数器0 为计数功能,工作方式1;定时/计数器1 为定时器功能,工作方式1
2、硬件电路设计
(1)AT89S52单片机的最小系统
此次课程设计的要求如下:一方面,单片机要通过I/O口中接收输入信号,另一方面要通过I/O口控制数码管的初始化、显示方式以及要显示的字符。
因此,设计必须以单片机为核心,显示器为外围设备。硬件上,单片机通过电路板电路与液晶显示电路相连;软件上,单片机要下载完整的程序对二者进行适时的控制。
图1 单片机控制的数显频率计电路系统框图
从图中可以看出,单片机控制的数显频率计的主要功能模块分为2类:
● 数码管显示:是指在单片机的控制下,数码管显示被测信号的频率。
● 单片机模块:通过输入的信号来测出频率,并把相应的频率通过8255输出到数码管显示。
单片机电路主要是通过编写程序来控制硬件电路。因此,可以通过改变程序,提高测量精度。
(2)方波发生电路设计
分频电路:该电路由一篇74LS393构成,T0-T7为分频输出插孔。该计数器在加电时由RESET清零。当输入为8.0MHZ时,T0-T7输出脉冲分别为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,312500HZ
脉冲发生电路:实验台提供了8.0MHZ的脉冲源
(3)显示电路的设计
单片机通过74LS240输出段选信号,实现数码管每一段的显示;通过74LS245再经过非门后实现位选,从而将单片机的输出信号显示出来。
(4)AT82S51单片机接口的设计
该课设使用了8255a用来扩展端口,单片机P0,P2口作为地址线来控制PA,PB口的输出,选择8255a为工作方式0即基本输入/输出方式。
三.软件设计
软件设计概述:
1)利用单片机的内部定时器溢出产生中断来实现定时。
2)待测信号由单片机的T0(第15引脚)中断来间接测量。
3)采用12MHz晶振,机器周期为1us
4)定时/计数器0工作方式:计数方式,工作方式1,每次定时1ms。
即TH1=(65536-1000)/256,TL1=(65536-1000)%256
5)定时/计数器0工作方式: 定时方式,工作方式1。当1ms达到后,查看定时/计数器1上的计得的数值 。
6)通过公式:脉冲频率=计数器数值/1ms,可以计算出脉冲频率。最后的数据以KHz为单位 。
7)显示采用六位共阳LED数码管,用单片机P0口作为地址线来控制8255a以实现对数码管的段的明暗的控制。用P2口作为地址线连接到8255a再通过74LS245反选作为6位数码管的选通信号,采用从低到高逐位扫描的方法。
(1)主程序框图
(2)初始化子程序框图
(3)中断子程序流程图
(4)数码管显示程序流程图
四、调试与测试结果分析
(1)实验系统连线
该实验室基于实验箱完成的,只需要连接两根线,即8MHZ连接到T插口,P3.4连接到T0~T7的任意一个插孔。
(2)程序调试
在程序上机调试过程中,运行程序,当输入合适的脉冲后,数码管并未显示相应的的频率,经逐步检查后发现是数码管的位选信号没有反选,导致数码管未被选中,因此不显示相应数据。
在排除错误之后,在误差的允许范围内,当输入脉冲后,数码管通过单片机的控制能够显示相应的频率,程序运行成功。
(3)实验结果分析
把电路按要求接好,接上待测脉冲信号,打开电源即可测量出待测脉冲信号的频率。本设计利用实验室提供的单片机实验箱上的脉冲信号进行测试,当接入的脉冲信号为500KHz时,可以看到数码管上的显示值为532KHz;当接入的脉冲信号为250KHz时,可以看到数码管上的显示值为137KHz。经计算,测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。
五、系统原理图
六、实验原理
该课程设计为
七、参考文献:
1 陈海宴.51单片机原理及应用.北京:北京航天航空大学出版社,2010.7
2谭浩强.c语言程序设计.北京:清华大学出版社,1990.
附录
#include
#include
#define add XBYTE[0xff23]
#define PA XBYTE[0xff20]
#define PB XBYTE[0xff21]
#define PC XBYTE[0xff22]
/*
A口 地址:0FF20H
B口 地址:0FF21H
C口 地址:0FF22H
D口 地址:0FF23H
*/
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
unsigned char wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned int f;
void delaynms(unsigned int ms)
{
unsigned int x,y;
for(x=ms;x;x--)
for(y=110;y;y--);
}
void smg(unsigned char aa,unsigned char bb)
{
PA=~wei[aa]; //A口:位选
PB=table[bb]; //B口:段选
delaynms(2);
}
void init_count0_timer1()//设置计数器
{
TMOD=0x15; //计数器0 工作方式1 定时器1 工作方式1
TH1=(65535-1000)/256;//1ms
TL1=(65535-1000)%256;
TR1=1;
ET1=1;
TH0=0;
TL0=0;
TR0=1;
EA=1;
}
void timer1() interrupt 3
{
TH1=(65535-1000)/256;//1ms
TL1=(65535-1000)%256;
f=TH0*256+TL0;
TH0=0;
TL0=0;
}
void main()
{
add=0x80;
init_count0_timer1();
while(1)
{
smg(0,f/1000);
smg(1,f%1000/100);
smg(2,f%100/10);
smg(3,f%10);
}
}
本文档为【频率计的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。