基于单片机的全数字信号发生器设计说明Word文档下载推荐.docx
- 文档编号:15124458
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:11
- 大小:93.95KB
基于单片机的全数字信号发生器设计说明Word文档下载推荐.docx
《基于单片机的全数字信号发生器设计说明Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的全数字信号发生器设计说明Word文档下载推荐.docx(11页珍藏版)》请在冰豆网上搜索。
0~1Hz,以0.1Hz步进,1~500Hz,以1Hz步进;
波形:
矩形波或方波均可;
精度:
频率值的相对误差不超过±
1%;
功能:
(1)信号发生,信号发生器以给定的频率输出信号;
(2)脉冲个数计数,仪器可对本身已发出的脉冲个数进行计数;
(3)设定值可存储,每次上电自动调出前次设定值。
二、初步设计
在确定了性能指标后,可以进行初步设计,考虑其显示、操作等方面的要求。
1、显示部分
待设定的频率值最高为500HZ,只要3位数码管即可;
要求对输出脉冲计数,虽未给出要求的计数值,但3位数码管最大仅能计到999,似乎太少了一些,再考虑到该仪器以后的扩展,如希望以后能加一些高端点频(600、700、800、900、1000、2000、5000、10K等),需要更多的数码管显示,因此最终选择5位数码管显示。
2、键盘部分
键盘有很多方案可供选择,如工业品中常用的三键或四键方案,当然也可以用多键(如市售有一些标准的12或16键键盘)等,经过反复比较,考虑到易制作、易使用等等诸多因素,最终将键的个数确定为5个。
键盘操作方案是仪器易用性的很重要的一个方面,这并非仪器的关键部分,但键盘、显示程序的工作量往往占据整个设计的很大的一部份。
对键盘设计,重要的是要确定各按键功能,描述出各键的具体操作。
本仪器的键设计如下:
1.工作状态描述
由转换键切换两种状态
(1)显示设定的频率值
(2)显示脉冲个数值
2.键定义
切换键 增加键 减少键 开启/停止键 清除键
3.键操作描述
切换键:
切换两种工作状态
增加和减少键:
在显示设定频率值时按,按增加键、减少键设定频率,围为0.1~500HZ,每按一次增加键,设定值加1,如果按着键不放,稍后进入连续状态,设定值快速增加;
按减少键,设定值减1,如果按着键不放,稍后进入连续状态,设定值快速减少。
当频率设定值小于1以后,每按一次增加或减少键,设定值增加或减少0.1。
开启/停止键:
开始/停止信号发生
清除键:
用于清除当前脉冲个数的计数值。
4.工作过程
开机后,信号发生器自动运行,有信号输出,按下“开启/停止”键,则信号发生器停止工作,没有信号输出,再次按下“开启/停止”键,则信号发生器又开始工作,继续输出信号。
信号灯用于指示信号发生器工作还是停止,当有信号产生时,信号指示灯闪烁,信号发生器暂停工作时,信号指示灯灭。
三、硬件电路的设计
在确定了性能指标、操作方案后,可以开始设计,首先要确定信号产生的方式。
该信号发生器的绝对精度指标不高,但是其要求的最低频率低至0.1HZ,而最高分辨也要求达到0.1HZ,如果采用模拟技术难以达到,或需要付出较高代价才能做到。
考虑到仪器的最高输出频率仅为500HZ,而且只需要提供要方波或矩形波,所以采用单片机做成全数字信号发生器。
在有了这一设计思想之后,需要确定该方案是否可行,该方案准备采用单片机的定时器产生信号,由于定时器的定时时间只能是整数,因此,不可避免会在一些频率点上产生误差,为此,用Excel对计数值、真实频率值作了测算,部分表格如表1和表2所示,经过测算表明,当采用12M晶振时,绝对误差最大约0.12HZ(492Hz处),相对误差最大约0.024%(492Hz处),可以满足要求,因此决定采用这一方案。
当然,这仅是理论值,考虑到单片机定时中断的响应时间等因素,实际的误差肯定要比这个计算值大,但是要达到±
1%的精度要求并不难,而其长期工作的稳定性取决于晶振的稳定度,并且晶振频率的变化引起的输出频率的变化也很微小,因此其长期工作稳定性也很好。
以下是部份测算的表格,完整的表格在本期光盘Excel文件中。
表1 较高频率算法
理论频率t(ms)真实频率绝对误差相对误差
10100000100.00E+000.00E+00
119090911.000011.00E-069.09E-08
128333312.000054.00E-063.33E-07
137692313.000011.00E-067.69E-08
147142913.99992-6.00E-06-4.29E-07
156666714.99993-5.00E-06-3.33E-07
1662500160.00E+000.00E+00
175882416.99986-8.00E-06-4.71E-07
185555617.99986-8.00E-06-4.44E-07
195263218.99985-8.00E-06-4.21E-07
2050000200.00E+000.00E+00
表1 较低频率算法
f(hz)t(ms)次数频率值误差相对误差
0.11000000050000.10.00E+000.00E+00
0.2500000025000.20.00E+000.00E+00
0.3333333316670.29994-2.00E-04-6.67E-04
0.4250000012500.40.00E+000.00E+00
0.5200000010000.50.00E+000.00E+00
0.616666678330.600244.00E-046.67E-04
0.714285717140.700284.00E-045.72E-04
0.812500006250.80.00E+000.00E+00
0.911111115560.899281-7.99E-04-8.88E-04
在确定了信号发生的方式以后,综合初步设计中提出的一些技术指标要求,进一步确定具体的实施方案。
根据以往的设计经验,显示部分由单片机的P0口与P2口直接驱动;
数据存储则采用串行EEPROM;
信号由单片机的一个I/O口输出,并经驱动后输出。
经过上述的设计后,可以确定这个仪器的框图如图1所示。
原理框图出来后,选择一款合适的机壳,然后综合考虑按键、数码管的安装方式,以便进行更详细的设计。
数码管和按键必须安装在印板上才能安装到面板上,数码管与单片机的连线较多,5位数码管,需要13根线,再加上按键的连线共有19根,如果将单片机放在另一块板上,必然要用大量导线与键盘显示板连接,而大量的连线是我们不愿意做的,这不仅使得安装困难,而且线易折断造成故障,因此干脆将单片机也装在同一块板上,只留下电源和输出电路放在另一块板上,这样,两块板间只需3根引线即可,大大降低了装配困难,也减少了故障隐患。
整个设计的原理图,如图2和图3所示。
其中图2是主板图,提供了包括数码管显示驱动、键盘等在的大部份功能。
从图中可以看到,该电路主要由这样几部份组成:
(1)数码管显示部份,由单片机及相关外围电路构成5位数码管显示电路;
(2)按键部份,按设计共有5个按键;
(3)EEPROM存储器,这里选择I2C接口的AT24C01A芯片;
(4)一只LED指示灯;
(5)输出管脚。
以上分别需要单片机片机的13、5、3、1、1个引脚,因此,单片机共要用到23只管脚。
引脚数量确定后,即可初步确定主芯片的型号,这里选用40引脚的AT89C51单片机。
如果编程中发现部资源(如片RAM、ROM、定时器等)不够,可以更换为89C52等其他单片机,比较灵活。
图3是电源、输出部分,从图中可以看出,仪器的输出接口采用两种方式,即集电极开路(OC门)方式和射极输出方式,其中OC门方式是很多以频率信号为输出的仪器的标准输出方式,如光电编码器、霍尔开关等。
全数字信号发生器的硬件部分就介绍到这里,下一期将介绍程序的编写。
图2
本仪器的程序主要由键盘、显示程序、AT24C01A读写程序、信号产生程序等部分组成。
以下对部分功能作一些分析。
一、键盘程序
本仪器需要调整的数值围较大,因此,“增加”和“减少”键必须具有快速连加和快速连减的功能,否则调整速度太慢。
这种键盘可以用多种方法来实现,关键在于设计一个正确的程序结构,图1是一种实现方法的流程图。
图1 流程图
程序工作时,不断地扫描键盘,第一次扫描到有键按下后如常规键盘一样,进行键值处理,处理完毕,不等待键盘释放,直接退出键盘程序。
当又一次执行到键盘程序,如果检测到键还被按着,就不再直接去键值处理程序,而是将一个计数器加1,直接返回主程序,如此循环,直到计数到一个定值(如500,表示键盘程序已被执行了500次),如果键还被按着,说明用户有连加(或连减)要求,程序即将计数器减去一个数值(如30),然后进行键值处理。
这样,以后键盘程序每执行30次,就执行一次键值处进程序,实现了第一次启动时间较长,以后快速连续动作的要求。
如果检测到键已被释放,则清除所有标志,将计数器清零,准备下一次按键处理。
程序开始时定义了两个常量:
Qdsj和Ljsj,如下所示
const
uint
Qdsj=500;
/*与首次启动连加(减)功能的时间有关*/
Ljsj=30;
/*与连加(减)的速度有关*/
这两个常量与第一次启动及连加、减的速度有关,具体数值应根据实际情况试验后确定。
下面是部分键处理程序,注意其中这两个变量的使用。
void
Key()/*键处理*/
{
……
if(!
KeyValue)
{
…无键按下,清除一切标志退出
}
if(KeyMark)
/*第一次检测到按键吗?
*/
KeyCounter++;
/*不是第一次(KeyMark已是1了)*/
if(Qdsj==KeyCounter)/*连续按着已有Qdsj次了*/
KeyCounter-=Ljsj;
/*减去Ljsj次*/
KeyProcess(KeyValue,1);
/*键值处理*/
else{
return
;
}
/*
如果按着还没有到Qdsj*/
else/*第一次检测到有键按下*/
{mDelay(10);
/*延时10毫秒*/
…再次检测
KeyValue)
{…
清除一切标志并返回}
二、小数点的处理
要在LED数码管上显示小数点,可以有两种选择,一种方式是在显示0.1~0.9时用小数显示,而在显示1~500时不显示小数点,这种方式编程略麻烦一些
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 信号发生器 设计 说明