- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合肥工业大学计算机学院
创新设计报告
设计题目: 频率计
专 业: 电子信息科学与技术
班 级: 10-01班
组 长:
副 组 长:
组 员:
2012年6月18日—2012年7月15日
基于52单片机的频率计
摘要:设计以ATMEL单片机为核心,利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
本设计的目的是通过在对单片机原理及应用的学习,以及查阅资料,培养自学与动手能力,把学到的知识应用到日常生活当中。在设计的过程中,不断的补充不知道的内容、巩固所学,和队友的分工合作、相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。
关键字:AT89s52,高频,低频 ,110hz,测周,测频
设计题目及要求:
(1):被测频率fx小于110Hz采用测周法,显示频率XXX。XXX;fx大于110Hz采用测频法,显示频率XXXXXX;
(2):可利用键盘分段测量和自动分段测量;
(3):可完成单脉冲测量,输入脉冲宽度范围是100微秒--0.1秒;
(4):自由发挥其他功能.
(5):要求有单片机硬件系统框图,电路原理图,软件流程图
原理:
1基本设计原理
运用单片机TO,T1计数功能来完成对输入信号的计数。其T1为
计数器,T1为计时器。
为T1装入初值19466,定时300ms,重复20次即为1s,与此同时将同时计数的T0里的值取出,即为该频率信号1s的频率示数
2系统主要功能
利用单片机的T0,T1计数定时器功能,来完成对输入信号进行率计数,计数结果通过8位动态数码管显示出来,。
特点1,由开关控制启动。
特点2,可利用键盘分段测量和自动分段测量;
特点3,可以多次测量,自动刷新 1s一次。
特点4,使用溢出标志T0count,防止20ms内计数超过65536次的频率信号溢出造成的示数错误
二频率计的硬件结构设计
1单元电路
(1)矩阵键盘
(2)数码管显示
2
三系统工作
原理
选择AT89S52单片机芯片,选用两位8段共阴极LED数码管实现频率显示,利用8279作I/O口扩展,连接数码管。通过定时器1计时方式,定时器0计数方式,定时每秒钟对外部频率计数,把计数值在数码管上显示
四软件设计
1 程序流程图
2程序设计:
/**********************************************
功能说明:频率计,利用T0计数模式测频率
接线说明:P2控制位选,P1控制段选
作 者:合工大 LS
**********************************************/
#includereg52.h
#define S P2
#define uchar unsigned char
#define uint unsigned int
uint temp0,temp1,m,n,k,wei,num,t;
unsigned long int temp;
unsigned long int count;
uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f}; //共阴数码管
//--------------------延时----------------------------//
void delay(unsigned char delaytime)
{
while(delaytime--);
}
//--------------------数码管显示----------------//
void display()
{
S=0x01;delay(5);P1=table[temp1/1000];delay(500);
S=0x02;delay(5);P1=table[temp1/100%10];delay(500);
S=0x04;delay(5);P1=table[temp1/10%10];delay(500);
S=0x08;delay(5);P1=table[temp1%10];delay(500);
S=0x10;delay(5);P1=table[temp0/1000];delay(500);
S=0x20;delay(5);P1=table[temp0/100%1
文档评论(0)