嵌入式微控制器结课论文
学 院: 核
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
与地球物理学院
班 级: 1221201
学 号: 201220120126
姓 名: 何鹏宇
基于单片机的数字频率计设计
摘要:本文设计了一种以单片机STC89C52为核心的数字频率计,介绍了单片机、放大整形模块、分频模块和LCD1602显示模块等各个模块的组成和工作原理。测量时,将被测输入信号送给单片机计数,通过程序控制计数,结果送LCD1602显示频率值。本次设计是以单片机STC89C52为控制核心,单片机系统通过定时器、计数器对正弦波,方波三角波信号进行脉冲计数,将得到的频率数据在液晶显示屏上进行显示,最后显示测量的频率值。本次设计所制作的频率计外围电路简单,大部分功能都通过软件编程实现,利用单片机控制继电器实现频率计的自动换挡功能;用单片机T0控制端口实现频率的测量功能;通过分频电路实现对频率档位的控制。本次设计的频率计具有测量准确度高,响应速度快,体积小等优点。实现了1Hz~1MHz范围的频率测量,而且可以实现量程自动切换。
关键词:频率计;单片机;计数器;测量
目录
一、系统总体设计及方案分析 3
1、数字频率计的设计参数和功能指标 3
2、系统设计原理分析 3
3、系统总方案论证与设计 4
三、系统软件流程设计 8
1、系统主程序流程框图 8
2、系统部分程序如下: 9
四、系统调试结果 11
1、系统的软硬件调试结果 11
2、系统误差分析与改进方法 12
五、系统硬件总电路图 12
六、设计总结
一、系统总体设计及方案分析
1、数字频率计的设计参数和功能指标
设计一个数字频率计,具体要求如下:
(1)测量范围信号:方波、正弦波;幅度:1V-5V,直流偏置0V-1V;频率:1Hz-1MHz;
(2)测量误差≤1%;
(3)输入阻抗〉100K?;
(4)LCD显示结果
2、系统设计原理分析
频率测量的原理总结成一句话,就是“在单位时间内对被测信号进行计数”。被测信号,通过输入通道的放大器放大后,进入整形加以整形变为矩形波,并送到主门的输入端。由晶体振荡器产生的基频,按十进制分频得出的分频脉冲,经过选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。若在一定的时间间隔T内累计周期性的重复变化次数N,则频率的
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式为式:
(2-1)
图2.1说明了测频的原理及误差产生的原因。
在图2.1中,假设时基信号为1KHZ,则用此法测得的待测信号为1KHZ×5=5KHZ。但从图中可以看出,待测信号应该在5.5KHZ左右,误差约有0.5/5.5≈9.1%。这个误差是比较大的,实际上,测量的脉冲个数的误差会在±1之间。假设所测得的脉冲个数为N,则所测频率的误差最大为
。显然,减小误差的方法,就是增大N。本频率计要求测频误差在1‰以下,则N应大于1000。通过计算,对1KHZ以下的信号用测频法,反应的时间长于或等于10s,。由此可以得出一个初步结论:测频法适合于测高频信号。
图2.1 测频原理
频率计数器严格地按照
公式进行测频。由于数字测量的离散性,被测频率在计数器中所记进的脉冲数可有正一个或负一个脉冲的±1量化误差,在不计其他误差影响的情况下,测量精度将为:
。
应当指出,测量频率时所产生的误差是由N和T两个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定时,精度越高。为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加T来满足,为了增加T的稳定度,只需提高晶体振荡器的稳定度和分频电路的可靠性就能达到。
上述表明,在频率测量时,被测信号频率越高,测量精度越高。
3、系统总方案论证与设计
本设计的系统
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
主要由信号输入与放大整形模块、分频与量程自动切换模块、微处理器模块、按键模式切换模块、电源输入模块等组成。其系统整体框图如图所示。
系统总体结构框图
(1) 输入信号放大模块
考虑到输入信号最高频率达到1MHz,同时输入信号幅度较小需进行放大,故信号放大部分运算放大器选用LLM318运算放大器是美国国家半导体公司生产的通用型运放系列中速度最快的器件。与其它种类的通用型运放相比具有电压转换速率高、频带宽、输出动态范围大、较完善的保护电路等突出优点。适合于在脉冲信号放大器、宽带放大器、中频放大器、宽频带信号发生器、快速A/D转换器、高速比较器等电路中应用。电路中采用±5V供电,也间接的限定信号的幅度。
(2) 整形电路以及参考电压电路设计
采用电压比较器对放大后的信号进行整形,转换成
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的矩形脉冲。考虑到要能满足最大频率1MHz的信号,这里选用高速比较器TL714CP。TL714CP是TI公司生产的一款高速电压比较器,单电源供电,增益带宽积50MHz。这里采用同向比较,考虑到信号带有毛刺,高速电压比较器在参考电压处会出现抖动造成连续翻转,从而使系统在脉冲计数上带来误差。所以在比较器上加了一个正反馈(类似斯密特触发器),避免这种干扰现象出现。反馈电阻的参数大小根据具体情况调试后选定。另外,为了使整形的效果更加好,在高速电压比较器后面增加了两级74LS14的整形。参考电压用电位器调整出来,最终选择参考电压为2V。
(3) 分频电路模块
输入信号的频率范围为1Hz~1MHz,本系统将它分成1Hz~10KHz, 10KHz~1MHz两档。故需要一个分频通道,分频系数为100。这里采用集成计数器电路CD4518BE,自制分频通道电路,一片CD4518BE即可实现10*10分频。
(4) 量程自动切换电路设计
根据设计思想将量程共分为两档,故只需两路路通道即可。由于数据选择器和模拟开关的高频特性并不理想,而且还具有一定的阻抗,故本方案选择两路继电器来实现量程自动切换。通过软件编程实现单片机IO端口的高低电平的切换从而达到控制继电器的工作状态,进而进行量程的切换。
(5)
单片机最小系统与显示模块
高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能。但是高速对于系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。并联2个30pF陶瓷电容帮助起振。显示模块使用LCD1602液晶显示,更加直观。按键电路的三个按键分别用来量程切换和模式切换。本系统模式有手动换挡模式和自动换挡模式。
三、系统软件流程设计
本章节主要介绍了电路的软件设计,整个系统由主程序,定时计数中断服务程序模块、量程和模式切换、数据处理模块和显示子程序模块组成。
1、系统主程序流程框图
开始
CPU初始化
LCD初始化
模式切换
T0计数,T1定时
N
定时时间
是否到了?
Y
频率测量
量程判断及切换
LCD显示
2、系统部分程序如下:
/********************************************************************
* 名称 : Main()
* 功能 : 主
函
关于工期滞后的函关于工程严重滞后的函关于工程进度滞后的回复函关于征求同志党风廉政意见的函关于征求廉洁自律情况的复函
数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
{
P3_4=1;
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
L1602_init();
L1602_string(1,6,"waitting");
L1602_string(2,6,"pin lv ji");
while(1)
{
Key_Scan();
}
}
void to(void) interrupt 1 using 0
{
T0count++;
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
timecount++;
if(timecount==20)
{
TR0=0;
TR1=0;
timecount=0;
flag=1;
}
}
Key_Scan();
}
}
void zidong()
{
B0=1;
B1=0;
delayms(30);
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
while(flag==0);
if(x==0)
display1();
flag=0;
x=T0count*65536+TH0*256+TL0;
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=0;//关CPU中断
TR0=0;// 停止计数
TR1=0;//T1停止计时
x=x*100;
if(x<10000)
{liangcheng1();}
liangcheng2();
}
四、系统调试结果
1、系统的软硬件调试结果
为了衡量这次设计的频率计的工作情况和测量精度,我们对系统进行了调试。用这次设计的频率计对信号(2V)进行了测量,使用函数发生器输出各种波形,由实物频率计测得频率,记录数据。实际记录数据如下表所示。
表5.3 Hz档的数据记录表
输入
1
10
100
500
557
630
750
821
900
测量
1
10
100
500
557
630
750
821
900
误差/%
0
0
0
0
0
0
0
0
0
表5.4 KHz和MHz档的数据记录表
输入
10K
150K
175K
200K
400K
550K
600K
900K
1M
测量
10
150.01
175.01
200
400.02
550
600.02
900.01
1M
误差/%
0
0.0067
0.0057
0.004
0
0.0033
0.0014
0.0037
2、系统误差分析与改进方法
(1)、经测量结果显示,与预计的技术指标基本相符合。然而一个真正优秀的频率计在软件设计方面,低频段应该采用测周法,在高频段采用直接测量法才更加精确,这也将是以后可以继续深入和提高的地方。
(2)由于元器件本身误差,随着时间的延长,其测量值也会产生误差,造成测量结果没有软件仿真精确。
(3)芯片的选择、硬件制作、分频部分、放大整形部分。提高放大整形这部分的准确度,分频部分可以用多级分频可以使分频更准确。
(4)可以采用等精度频率测量法提高精度。等精度测频的方法是:采用频率准确的高频信号作为标准频率信号,保证测量的闸门时间为被测信号的整数倍,并在闸门时间内对标准信号脉冲和被测信号脉冲同时进行计数,实现整个频率测量范围内的测量精度相等,当标准信号频率很高,闸门时间足够长时,可实现高精度的频率测量。
五,系统硬件总电路图
六、设计总结
通过本次设计,自己的动手能力和编程能力有了质的提高,为以后的进步奠定了基础。实习中我既发现了自己的很多一些进步之处,也发现了自己的一些不足之处。下面就本次实习简要的说说我个人的收获与感受。
考虑问题分析问题不够全面。例如:在编程的时候,没有考虑到继电器开始工作那一瞬间的影响,导致测量出来的频率在一个时间内不准确,后面在程序中通过在继电器工作那一瞬间不进行采样数据,从而达到提高测量精度的目的。
因此,实习结束后,我还得去加强自身学习,更加积极主动地了解专业知识,探索自己所不知道的,进一步扩大自己的知识面。我个人认为硬件和软件设计都是是个既灵活又细腻的工作,它要求耐心和细心去不断完善,同时还需要有良好的逻辑思维能力。通过这次毕业设计,我分析问题和解决问题的能力有所提高,也巩固了所学的知识,加深了对理论知识的理解,更重要的是锻炼自己的独立性,为我今后的工作和学习打下坚实的基础。
自己的动手实践操作能力还得继续提高。经过本次实习,虽然感觉我自己的动手实践能力有了一定的提高,但现在的水平还是有上升空间。在PCB布局时,第一次布出来的线因为太细,结果在腐蚀电路板的时候,很多的铜线都被腐蚀掉,导致电路很多线路都是断路。这就是平时缺乏动手实践的表现,在第二次重新布线时,经过认真总结与思考,将线宽改为40mil,这样腐蚀出来的电路板就既美观各线路又能正常连通。
综上所述,为本次实习中的几点收获与感受,有不当之处还望批评指正。当然,本次实习获益良多,上面所讲的只是冰山一角。总之,本次实习之后,还得加强自身的学习与专业素养的提高。