基于AT89C52单片机的简易频率计设计说明.docx
- 文档编号:252391
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:13
- 大小:148.94KB
基于AT89C52单片机的简易频率计设计说明.docx
《基于AT89C52单片机的简易频率计设计说明.docx》由会员分享,可在线阅读,更多相关《基于AT89C52单片机的简易频率计设计说明.docx(13页珍藏版)》请在冰豆网上搜索。
基于AT89C52单片机的简易频率计设计说明
单片机系统开发与应用工程实习报告
选题名称:
基于AT89C52单片机的简易频率计设计
系(院):
专业:
计)
班级:
姓名:
学号:
指导教师:
学年学期:
2009~2010学年第2学期
2010年5月30日
摘要:
在电子技术中,频率是一个经常用到的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
本项目主要阐述了以AT89C52单片机作为核心器件,采用模块化布局,设计一个简易数字频率计,以达到测量频率并进行显示的目的。
本项目利用单片机的内部定时器溢出产生中断来实现定时,把单片机内部的定时/计数器0作为定时器,实现2.5ms定时。
外部待测脉冲从单片机的TI(第15引脚)输入,以定时/计数器1作为计数器,利用中断方式来达到间接测量的目的。
最后采用四位数码管显示。
本设计采用C语言进行软件编程,用keil软件进行调试。
最后把调试成功后的程序固化到AT89C52单片机中,接到预先焊好的电路板上,接上待测脉冲,通电运行,数码管成功显示待测脉冲频率。
关键词:
单片机;频率计;AT89C52
1项目综述
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
本项目主要阐述了选择AT89C52单片机作为核心器件,采用模块化布局,设计一个简易数字频率计测量频率并进行显示。
1.1设计要求
基于AT89C52单片机简易频率计的设计要求如下:
(1)测量范围。
幅度:
0.5~5V;频率:
1Hz~1MHz.
(2)测试误差≤0.1%。
(3)用4位数码管显示。
当频率变化时,能通过数码管及时看到变化后的信号频率。
1.2系统设计
1.2.1框图设计
基于AT89C52单片机简易频率计的电路主要由数码管显示电路、复位电路、晶振电路、电源电路等几部分组成,系统框图如图3.1所示。
图3.1基于AT89C52单片机简易频率计系统框图
1.2.3知识点
本项目需要通过学习和查阅资料,掌握和了解如下知识:
1)+5V电源原理及设计。
2)单片机复位电路工作原理及设计。
3)单片机晶振电路工作原理及设计。
4)频率信号发生器的特性及使用。
5)驱动电路74LS244的特性及使用。
6)AT89C52单片机引脚结构及功能。
7)单片机C语言程序设计方法。
2硬件设计
2.1电路原理图
基于AT89C52单片机简易频率计电路原理图如图2-1所示。
图2-1基于AT89C52单片机简易频率计电路原理图
2.2元件清单
基于AT89C52单片机简易频率计元件清单如表2-1所示。
表2-1基于AT89C52单片机简易频率计元件清单
元件名称
型号
数量/个
用途
单片机
AT89C52
1
控制核心
晶振
12MHz
1
晶振电路
电容
30pF
2
晶振电路
电解电容
10uF/10V
1
复位电路
电阻
10kΏ
1
复位电路
驱动器
74LS244
1
LED驱动
非门
74LS04
1
位选信号
数码管
4位共阴
1
显示电路
按键
1
复位电路
电源
+5V/0.5A
1
提供+5V
2.3主要芯片引脚说明
2.3.1AT89C52引脚说明
AT89C52为40脚双列直插封装8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
AT89C52共有6个中断向量:
两个外中断(INT0和INT1),3个定时器中断(定时器0、1、2)和串行口中断。
AT89C52引脚图如下:
图2-2AT89C52引脚图
主要管脚有:
XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口。
RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
P1,P2,P3是一组带有内部上拉电阻的8位双向I/O口。
2.3.274HC244引脚说明
74HC244可以让输入的数据保持比较长的时间,简单输入接口扩展通常使用的典型芯片为74HC244,由该芯片可构成三态数据缓冲器。
74HC244芯片的引脚排列如下图所示:
图2-374HC244引脚图
74HC244芯片内部共有两个四位三态缓冲器,使用时可分别以1C和2G作为它们的选通工作信号。
当1/OE和2/OE都为低电平时,输出端Y和输入端A状态相同;当1/OE和2/OE都为高电平时,输出呈高阻态。
3软件设计
本项目利用单片机的内部定时器溢出产生中断来实现定时。
待测信号由单片机的TI中断来间接测量。
定时/计数器0定时2.5ms中断并对中断次数进行计数,当2.5ms中断次数计到40次即0.1s时,查看定时/计数器1上的计得的数值,经过计算得到的待测信号的频率值,放入显示缓冲区,由数码管进行显示。
3.1程序流程图
主程序流程图如图3-1所示。
图3-1主程序流程图
3.2软件设计简述
1)利用单片机的内部定时器溢出产生中断来实现定时。
2)待测信号由单片机的TI(第15引脚)中断来间接测量。
3)采用12MHz晶振,机器周期为1us
4)定时/计数器0工作方式:
定时方式,工作方式1,每次定时2.5ms。
实现2.5ms定时算法:
(3-1)
即TH0=0xf6,TL0=0x3c
5)定时/计数器1工作方式:
计数方式,工作方式1。
当2.5ms中断次数计到40次即0.1s时,查看定时/计数器1上的计得的数值。
6)通过公式:
(3-2)
可以计算出脉冲频率。
最后的数据以KHz单位,采用四舍五入的方法保留一位小数。
7)显示采用四位共阴LED数码管,用单片机P0口的8位控制数码管的8段二极管的明暗。
用P2口的P2.0~P2.3作为4位数码管的选通信号,采用从低到高逐位扫描的方法。
3.3程序清单
基于AT89C52单片机简易频率计程序清单如下:
#include
bittimeint0,timeint1;
unsignedchardispbuf[4];
unsignedintperiod;
unsignedinttimecount=0;
unsignedintcount_1s;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//7段数码管代码表
HEX_TO_BCD(unsignedintn)//十六进制数转BCD码子程序,
//将BCD码送至显示缓存数组
{
unsignedchari;//当显示的频率超出范围,显示EEEE报错
if(n>9361)
for(i=0;i<4;i++)
dispbuf[i]=0x0e;
else
{
dispbuf[3]=n/1000;//取出千位字节
dispbuf[2]=(n/100)%10;//取出百位字节
dispbuf[1]=(n/10)%10;//取出十位字节
dispbuf[0]=n%10;//取出个位字节
}
}
voidscandisp(void)//显示子程序,
//将显示缓存数组中的BCD码扫描并显示在数码管上
{
unsignedcharposi=0x01;
unsignedchari,j,temp;
for(i=0;i<4;i++)//依次选中4个数码管
{
temp=dispbuf[i];
//查出字码
temp=table[temp];
//第三位显示小数点
if(i==1)
{
for(j=0;j<200;j++)
{
P2=posi;
P0=temp|0x80;
}
}
else
{
for(j=0;j<200;j++)
{
P2=posi;
P0=temp;
}
}
//依次点亮字位
posi<<=1;
}
}
voidINIT_TMR1INT(void)//定时器初始化了程序,定义了两种
{
//定时/计数器0工作定时器方式,定时/计数器1工作在计数器方式
TMOD=0x51;
ET1=1;
//中断0开中断
ET0=1;
//CPU开中断
EA=1;
count_1s=0;
//启动定时/计数器0开始定时
TR0=1;
TR1=1;
}
voidtime0(void)interrupt1//定时器0中断服务程序,系统自动调用,
//每2.5ms执行一次
{
TH0=0xf6;
TH1=0x3c;
//每次定时是2.5ms,40次即0.1s
if(++count_1s>40)
{
count_1s=0;
//每0.1s对计数器1所计数值进行统计
timecount=TH1*256+TL1;
TH1=0;
TL1=0;
//精确到小数点后1位,以KHz为单位
period=timecount/10;
//四舍五入显示
if((timecount%10)>4)
period++;
timecount=0;
HEX_TO_BCD(period);
}
}
voidtimer1(void)interrupt3//定时器1中断服务程序,溢出后中断
{
TH1=0x00;
TL1=0x00;
}
voidmain(void)//主函数
{
//初始化
INIT_TMR1INT();
while
(1)
{
//显示子程序
scandisp();
}
}
4系统仿真及调试
应用系统设计完成之后,就要进行硬件调试和软件调试,软件调试可以利用开发及仿真系统进行。
4.1硬件调试
硬件调试的调试主要是把电路各种参数调整到符合设计要求。
先排除硬件电路故障,包括设计性错误和工艺性故障。
一般原则是先静态后动态。
利用万用表或逻辑测试仪器,检查电路中各器件以及引脚是否连接正确,是否有短路故障。
先将单片机AT89C52芯片取下,对电路板进行通电检查,通过观察看是否有异常,是否有虚焊的情况,然后用万用表测试各电源电压,若这些都没有问题,则接上仿真机进行联机调试,观察各接口电路是否正常。
4.2软件调试
软件调试是利用仿真工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。
本设计采用的调试软件是keil。
程序调试时,先是一个模块一个模块地进行,一个子程序一个子程序地调试,最后联起来统调。
当程序调试无误后,就可以用在系统编程器将程序固化到AT89C52的FLASHROM中。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AT89C52 单片机 简易 频率计 设计 说明