频率计单片机课程设计.docx
- 文档编号:9251081
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:25
- 大小:544.05KB
频率计单片机课程设计.docx
《频率计单片机课程设计.docx》由会员分享,可在线阅读,更多相关《频率计单片机课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
频率计单片机课程设计
频率计
摘要
数字频率计是直接用十进制数字显示被测信号频率的一种测量装置。
设计中应用单片机的数学运算和控制功能,通过AT89C52内部存储程序进行软件计数,对输出进行控制。
在单片机应用系统中利用C语言编程具有一定的优点,本次课程设计介绍了C语言实现数字频率计的软件设计以及硬件电路。
全部软件编程不是采用常规的汇编语言,而是利用C语言强大的浮点运算能力,实现频率计的软件设计,因此提高了频率计的测量精度,具有一定的实用价值。
本次课程设计通过在Keil环境中用C语言编程,并在Protues中设计电路进行仿真测试,实现了频率计在信号1Hz~500kHz频率段的测试,误差较小,与输入信号源的频率相近。
最后通过LCD显示模块显示出信号频率。
同时还利用AD0808进行对源信号模数转换,得到信号的最大值。
关键词:
频率测量单片机C语言频率计
目录
摘要1
关键词:
频率测量单片机C语言频率计1
绪论(或前言)3
1、课程设计的主要内容4
2、单片机的种类、用途、发展历史、基本工作原理、常规用法、组成最小系统的硬件设计方法5
2.1.1主流单片机简介5
2.1.2单片机的用途6
2.1.3单片机的历史7
2.1.4单片机基本工作原理7
2.1.5单片机组成最小系统的硬件设计方法8
2.2接口电路的特点、分类及设计方法8
2.3课题的设计思路、实施方法9
2.4硬件设计:
系统电路图、关键元器件的性能、参数及外形封装等10
2.5软件设计:
包括程序流程框图、源代码(汇编或C语言),典型程序要求加注释12
2.5.1程序流程图:
12
2.5.2C程序源代码:
12
见附件12
2.6设计测试结果:
12
3、总结14
附件:
15
绪论(或前言)
数字频率计在电子、通讯的领域中的实验、研究开发、生产用途非常广泛,它可以由逻辑电路组成,也可以用单片机控制。
由逻辑电路组成的频率计,结构复杂,组装、调试比较麻烦;传统的频率计通常采用组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量低频信号时不宜直接使用。
为了实现智能化的电子计数测频,实现一个宽领域,高精度的频率,一种有效的方法是运用单片机测量频率,频率测量在科技研究和实际应用中的作用日益重要。
由单片机控制的频率计,数据采集、计算、译码级量程的自动转换,都可以有CPU来完成,简化了电路,提高了系统的可靠性。
频率信号抗干扰性强、易于传输,可以获得较高的测量精度。
同时,频率测量方法的优化也越来越受到重视。
本设计以89C52单片机为控制器件的频率测量方法,单片机对频率的测试应用了单片机的计数器,在1s时间内所记脉冲数即为信号的频率,所以将源信号转换为方波形式的脉冲,即可实现对信号频率的测量。
与此同时使用精简的C语言编写程序,采用单片机智能控制结合外围电子电路,得以高低频率的精度测量,最终实现多功能数字频率计的设计方案。
根据频率计的特点,可广泛应用于各种测试场所。
1、课程设计的主要内容
单片机原理及应用课程设计任务书
系(部):
xxx专业:
xxx
指导教师:
xxxxxxxxxx
课题名称
基于单片机多课题课程设计
设计内容及要求
1课题内容:
以单片机为核心,完成
1.1数字式温度计的设计;1.2作息时间系统的设计;1.3音乐播放系统的设计;1.4音乐演奏系统的设计;1.51602点阵字符显示系统设计;1.6城市道路交通灯控制设计,1.7数字频率计的设计;1.8流水灯的设计;1.912864点阵字符显示系统设计;2.0PWM方式控制LED;具体设计参数及要求详见指导书。
2要求:
2.1完成该系统的硬件和软件的设计,在Proteus软件上仿真通过;
2.2外围硬件的电路原理图设计组与组间不得完全一样。
否则将严重影响评分成绩。
设计工作量
1、汇编或C51语言程序设计;
2、程序调试;
3、软件设计在Wave6000或KeilC调试、仿真,硬件设计在Proteus7.4版本上上进行调试、仿真;
4、提交课程设计说明书,包括设计原理、软件设计、程序分析(程序重要部分要求加注释)、仿真和调试过程分析、参考文献、设计总结等,具体要求、格式见课程设计说明书模板。
进度安排
起止日期(或时间量)
设计内容(或预期目标)
备注
第1天
课题、安排介绍、分组;课题介绍之后,收集、查阅资料方案论证、设计项目确定、系统整体设计。
第2天~第7天
硬件设计:
利用Proteus7.4平台结合软硬件设计调试、仿真;
软件设计:
利用Wave6000或KeilC平台,编程、调试、仿真;
第8天~第9天
验收作品、答辩
第10天
撰写课程设计说明书
教研室
意见
年月日
系(部)主管领导意见
年月日
2、单片机的种类、用途、发展历史、基本工作原理、常规用法、组成最小系统的硬件设计方法
2.1.1主流单片机简介
8051单片机
最早由Intel公司推出的8051/31类单片机也是世界上用量最大的几种单片机之一。
由于Intel公司在嵌入式应用应用方面将重点放在286、386、奔腾等与PC类的高档芯片的开发上,8051单片机主要由Philips、Dallas、Siemens、Atmel、华邦、LG等公司接手生产。
这些公司都以MCS—51中的基础结构8051为基核推出了许多各具特色、具有优异性能的单片机。
这样,把这些厂家以8051为基核推出的各种型号的兼容型单片机统称为51系列单片机。
Intel公司MCS—51系列单片机中的8051是其中最基础的单片机型号。
ATMEL单片机
ATMEL公司的90系列单片机是增强型RISC内载Flash的单片机,通常为AVR单片机。
AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。
它取消机器周期,以时钟周期为指令周期,实行流水作业。
AVR单片机指令以字为单位,且大部分指令都为单周期指令。
而单周期既可执行本指令功能,同时完成下一条指令的读取。
Microship单片机
PIC单片机系列是美国微芯公司(Microship)的产品,是当前市场份额增长最快的单片机之一。
CPU采用RISC结构,分别有33、35、58条指令(视单片机的级别而定),属精简指令集。
而51系列有111条指令,AVR单片机有118条指令,都比前者复杂。
采用Harvard双总线结构,运行速度快(指令周期约160~200ns),它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期(个别除外),这也是高效率运行的原因之一。
此外,它还具有低工作电压、低功耗、驱动能力强等特点。
Motorola单片机
Motorola是世界上最大的单片机厂商。
从M6800开始,开发了广泛的品种,4位、8位、16位和32位的单片机都能生产,Motorola单片机的特点之一是在同样单片机种类的速度下所用的时钟频率较Intel类单片机低得多,因而使得高频噪声低,抗干扰能力强,更适合于工控领域及恶劣的环境。
Micon单片机
工业级OTP单片机,Micon公司生产,与PIC单片机管脚完全一致,海尔集团的电冰箱控制器,TCL通信产品,长安奥拓铃木小轿车功率分配器就采用这种单片机。
Scenix单片机
Scenix公司推出的8位RISC结构SX系列单片机与Intel的PentiumII等一起被评选为1998年世界十大处理器。
在技术上有其独到之处:
SX系列双时钟设置,指令运行速度可达50/75/100MIPS(每秒执行百万条指令,XXXMInstructionPerSecond);具有虚拟外设功能,柔性化I/O端口,所有的I/O端口都可单独编程设定,公司提供各种I/O的库函数,用于实现各种I/O模块的功能,如多路UART、多路A/D、PWM、SPI、DTMF、FS、LCD驱动等等。
采用EEPROM/Flash程序存储器,可以实现在线系统编程。
通过计算机RS232C接口,采用专用串行电缆即可对目标系统进行在线实时仿真。
华邦单片机
华邦公司的W77、W78系列8位单片机的脚位和指令集与8051兼容,但每个指令周期只需要4个时钟周期,速度提高了三倍,工作频率最高可达40MHz。
同时增加了WatchDogTimer、6组外部中断源、2组UART、2组Datapointer以及Waitstatecontrolpin。
W741系列的4位单片机带液晶驱动、在线烧录、保密性高、低操作电压(1.2V~1.8V)。
2.1.2单片机的用途
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机了解计算机原理与结构的最佳选择。
除了电脑之外还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器,如图2所示)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
在计算机出现以前,有不少能工巧匠做出了不少精巧的机械。
进入电器时代后,人们借助电气技术实现了自动控制机械,自动生产线甚至自动工厂,并且大大地发展了控制理论。
然而,在一些大中型系统中自动化结果均不理想。
只有在计算机出现后,人们才见到了希望的曙光。
如今借助计算机逐渐实现了人类的梦想。
但是,计算机出现后的相当长的时间里,计算机作为科学武器,在科学的神圣殿堂里默默地工作,而工业现场的测控领域并没有得到真正的应用。
只有在单片机(Microcontroller)出现后,计算机才真正地从科学的神圣殿堂走入寻常百姓家,成为广大工程技术人员现代化技术革新,技术革命的有利武器。
目前,单片机在民用和工业测控领域得到最广泛的应用。
彩电,冰箱,空调,录像机,VCD,遥控器,游戏机,电饭煲等无处不见单片机的影子,单片机早已深深地溶入我们每个人的生活之中。
单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。
单片机按用途大体上可分为两大类:
1--通用型单片机
2--专用型单片机
专用型单片机是指用途比较专一,出厂时程序已经一次性固化好,不能再修改的单片机。
例如电子表里的单片机就是其中的一种。
其生产成本很低。
通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。
小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。
2.1.3单片机的历史:
第一代:
七十年代后期,4位逻辑控制器件发展到8位。
使用NMOS工艺(速度低,功耗大、集成度低)。
代表产品:
MC6800、Intel8048。
第二代:
八十年代初,采用CMOS工艺,并逐渐被高速低功耗的HMOS工艺代替。
代表产品:
MC146805、Intel8051。
第三代:
近十年来,MCU的发展出现了许多新特点:
(1)在技术上,由可扩展总线型向纯单片型发展,即只能工作在单片方式。
(2)MCU的扩展方式从并行总线型发展出各种串行总线。
(3)将多个CPU集成到一个MCU中。
(4)在降低功耗,提高可靠性方面,MCU工作电压已降至3.3V。
第四代:
FLASH的使用使MCU技术进入了第四代。
2.1.4单片机基本工作原理
一个基本的MCS-51单片机通常包括:
中央处理器、ROM、RAM、定时/计数器和I/O口等各功能部件,各个功能由内部的总线连接起来,从而实现数据通信。
其内部框图如图所示。
图3.1MS51单片机结构图
2.1.5单片机组成最小系统的硬件设计方法
单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。
最小系统原理图如图所示。
图.系统电路图
2.2接口电路的特点、分类及设计方法
对于信号的处理利用了运放LM324,三极管2N222的组合输入至P3.5口;
测量结果通过LM1602显示,数据/命令传输送至单片机P1口;
对与信号幅值测量,利用了AD0808的零通道,一路测量,输入至单片机P0口,并通过多次采样得到采样的最大值。
电路图如下:
2.3课题的设计思路、实施方法
本次课程设计再利用单片机内部计数器的基础上,由于计数器只能对矩形波脉冲的计数,所以要测得频率就必须将源信号进行放大整形处理将源信号转换为等频率的矩形脉冲信号。
信号的整形放大电路如下:
利用集成运放虚短和虚断的特性,将其工作于线性放大区,经过一级放大,二级整形电路使信号转换为近似的等频方波,然后再利用三极管的截至导通特性,可使信号转换为高电平为5V的方波信号,而信号频率不变,如此可完全满足单片机计数器端的脉冲高低电平,进一步测出信号的频率。
利用单片机内部的定时器中断,设置1S的计数时间,则在1S内计脉冲数即为信号的频率。
对于信号电压的测量,本次课程设计采用了信号的模数转换,利用单片机对数字信号采样,计算得出近似值,为受模数转换芯片AD0808精度的限制,测量结果肯定存在误差,精度为Vref/256,在测量中采用多次采样求出最大值,得到信号的幅值。
2.4硬件设计:
系统电路图、关键元器件的性能、参数及外形封装等
AT89C52单片机
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
AT89C52封装及性能
主要功能特性
·兼容MCS51指令系统
·8k可反复擦写(>1000次)FlashROM
·32个双向I/O口
·256x8bit内部RAM
·3个16位可编程定时/计数器中断
·时钟频率0-24MHz
·2个串行中断
·可编程UART串行通道
·2个外部中断源
·共8个中断源
·3级加密位
LM324封装及性能参数
AD0808的封装及性能参数
极限参数
电源电压(Vcc):
6.5V
控制端输入电压:
-0.3V~15V
其它输入和输出端电压:
-0.3V~Vcc+0.3V
贮存温度:
-65℃~+150℃
功耗(T=+25℃):
875mW
引线焊接温度:
①气相焊接(60s):
215℃;②红外焊接(15s):
220℃
抗静电强度:
400V
三极管NPN2N222
:
主要参数:
2.5软件设计:
包括程序流程框图、源代码(汇编或C语言),典型程序要求加注释
2.5.1程序流程图:
2.5.2C程序源代码:
见附件
2.6设计测试结果:
2.6.1部分频率测试实际显示图
5v的100Hz信号测试500kHz信号测量结果
2.6.2误差测试表
频率范围
误差
抽样实际频率
抽样测量频率
1Hz~100Hz
0%
1Hz
1Hz
50Hz
50Hz
100Hz
100Hz
100Hz~1KHz
0%
200Hz
200Hz
500Hz
500Hz
1KHz
1000Hz
1KHz~10KHz
0.05%
2KHZ
2001Hz
8KHz
8001Hz
10KHz
10002Hz
10KHz~100KHz
0.014%
20KHz
20002Hz
60KHz
60009Hz
100KHz
100014Hz
100KHz~500KHz
0.015%
200KHz
200031Hz
400KHz
400063Hz
500KHz
500078Hz
说明:
测试方法:
软件仿真;
测试工具:
protus.
2.6.3实验总结:
1.该频率计在1~10KHz误差最大,最大误差为0.05%;
2.误差主要有两部来源,一、定时器和计数器中断冲突,表现为误差与频率值有关。
二、其他程序与中断之间的干扰,表现为随频率值升高误差数值增大。
两者综合表现为在1~10KHz误差最大。
3.本频率计测试最大频率为500KHz,大于500KHz将无法检测到信号。
同时还需满足高电平和低电平值都大于2us。
3、总结
本次课程设计受益匪浅,不但加强了对单片机原理的理解,也提高了单片机技术的应用能力,同时还复习了数电、模电知识。
提高了综合应用模电、数电、单片机的能力。
这次课程设计也让我深深的感受到了知识的缺乏,发现自己了解的领域非常有限。
如高频、信号处理等知识明显感觉不够,急需补充课外知识。
也感觉到需要学习几款更加高级的单片机,51虽然价格便宜、操作简单。
但内部资源非常有限,速度也比较低。
不能适应一些要求较高的场合。
另外这次课程设计也让我认识到仿真的重要性,仿真可以缩短开发周期,降低开发成本。
有效的提高开发效率,要想成为一名优秀的光电工程师必须熟练的掌握仿真技术。
最后,感谢老师的耐心指导。
谢谢!
4、参考文献
1)www.21IC.com及PDF文件
2)论文《数字频率计中C语言编程的研究》
3)论文《数字频率计的设计》
4)单片机原理与应用——中南大学出版社——曾屹
5)视频keilC51的操作
附件:
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
uchari,j,k;
uchardate,dat;
unsignedlongnum,num3,num1,num2,date1;
sbitE=P2^7;
sbitRW=P2^6;
sbitRS=P2^5;
sbitALE=P2^0;
sbitEOC=P2^1;
sbitOE=P2^2;
ucharfreq[10],vol[7];//分别存放频率和电压
ucharcodetabe[]="frequency:
";
ucharcodetabe1[]="V_MAX:
";
ucharcodetabe2[]="beintesting";
//延迟
voiddelay()
{
inti,j;
for(i=0;i<=10;i++)
for(j=0;j<=10;j++)
;
}
//延迟2
voiddelay2(uchardit)
{for(i=dit;i>0;i--)
for(j=0;j<100;j++);
}
//lcd写命令
voidwrite_com(uchardel)
{
P1=del;
RS=0;
RW=0;
E=0;
delay();
E=1;
delay();
}
//写数据
voidwrite_date(uchardel)
{
P1=del;
RS=1;
RW=0;
E=0;
delay();
E=1;
delay();
}
//lcd初始化
voidL1602_init()
{
write_com(0x01);
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0xd0);
}
//定时器初始化
voidtime_init()
{
ET0=1;
TL0=0XB0;
TH0=0X3C;
TR0=0;
}
//定时器0中断
voidtime_int0()interrupt1
{
k+=1;
TL0=0XB0;
TH0=0X3C;
}
//计数器1初始化
voidtime_init1()
{
ET1=1;
TH1=0X00;
TL1=0X00;
TR1=0;
}
//计数器只能中断入口
voidtime_int1()interrupt3
{
num3+=1;
}
//LCD显示部分
voiddisplay(ucharadd,uchar*p)
{
write_com(add);//先写地址
while
(1)
{
if(*p=='\0')
break;
write_date(*p);
p++;
}
}
//AD转换采样并输出结果
voidA_D()
{dat=0x00;
for(j=0;j<100;j++)
{
OE=0;
ALE=0;
_nop_();
ALE=1;
for(i=0;i<20;i++);
ALE=0;
//for(i=0;i<20;i++);
while(EOC==0)//等待转换完毕
{_nop_();}
OE=1;
dat=P0;
if(date date=dat; } date1=date;//转换为long型 date1=date1*1000; date1=date1*5/256; for(i=0;i<=3;i++) { vol[i]=date1/pow(10,(3-i)); date1-=vol[i]*pow(10,(3-i)); } for(i=0;i<4;i++
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 频率计 单片机 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)