函数发生器的软件设计.docx
- 文档编号:4665585
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:47
- 大小:594.37KB
函数发生器的软件设计.docx
《函数发生器的软件设计.docx》由会员分享,可在线阅读,更多相关《函数发生器的软件设计.docx(47页珍藏版)》请在冰豆网上搜索。
函数发生器的软件设计
题目函数发生器的软件设计
专业学号姓名
设计的主要内容:
1利用AT89C51、DAC0832等芯片对函数发生器进行设计,使之能产生正弦波、方波、三角波。
2设计软件总程序和具体的正弦波、三角波、方波产生子程序。
3掌握正弦波、方波、三角波三种波形发生的原理。
基本要求:
1能产生正弦波、方波、三角波三种波形,波形的频率可调,输出幅度的可调,并且具有显示功能。
2英文翻译不少于5000字符。
3资料综述不少于3000字符。
4中英文摘要不少于200字符。
主要参考资料:
1蔡明生电子设计北京高等教育出版社2004.1
2全国大学生电子设计竞赛组委会第五届全国大学生电子设计竞赛获奖作品选编北京北京理工大学出版社2003.1
3张毅坤陈善久裘雪红单片微型计算机原理及应用西安西安电子科技大学出版社1998
完成期限:
2011年2月28日到2010年6月10日
指导教师签章:
专业负责人签章:
2011年2月26
函数发生器的软件设计
摘要
函数发生器是一种多波形的信号源,它可以产生正弦波,方波,三角波等任意波形,在电子行业中应用很广泛。
本设计是设计一个基于单片机的函数发生器的软件设计,利用AT89C51单片机产生正弦波,方波,三角波三种波形,用C语言编程,程序中包括中断子程序,显示子程序,键盘扫描子程序等功能子程序,正弦波用查表法编程,利用改变查询两点之间的时间改变频率,程序也可控制幅度的改变,方波和三角波程序简单,将在论文中详解,最后输出的波形利用DAC0832进行数/模转换,用LCD显示幅度和频率。
本设计是以软件介绍为主,对各个程序的编写调试都有很好的介绍。
关键词函数发生器单片机数/模转换
FunctionGeneratorSoftware
ABSTRACT
FunctionGeneratorisamulti-wavesignalsource,whichcanproducesine,square,triangularwavearbitrarywaveformapplicationsintheelectronicsindustryisextensive.Thisdesignistodesignamicrocontrollerbasedfunctiongeneratorofsoftwaredesign,useofmicrocontrollerAT89C51producesine,square,triangleofthreewaveforms,usingClanguageprogramming,theprogramincludesinterruptroutines,displayroutines,thekeyboardscansubroutinefeaturessuchassubroutines,sinewavemethodwiththelookuptableprogramming,usingthetimechangethequerytochangethefrequencybetweentwopoints,theprogramcanalsocontroltherateofchange,squarewaveandtriangularwaveprocedureissimple,XiangJieinthepaper,thefinaloutputwaveformforuseDAC0832D/Aconverter,withLCDdisplayamplitudeandfrequency.Thedesignisbasedonsoftware,themainpresentation,thepreparationofeachprogramhasaverygoodintroductiontodebugging.
KEYWORDSFunctionGeneratorSCMD/Aconverter
1绪论
1.1设计背景
函数发生器亦称波形发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。
目前,市场上常见的波形发生器多为纯硬件的搭接而成,且波形种类有限,多为锯齿、正弦、方波、三角等波形。
函数发生器作为一种常见的应用电子仪器设备,传统的可以完全由硬件电路搭接而成,如采用555振荡电路发生正弦波、三角波和方波的电路便是可取的路径之一,不用依靠单片机。
但是这种电路存在波形质量差,控制难,可调范围小,电路复杂和体积大等缺点。
在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到低频信号源[1]。
而由硬件电路构成的低频信号其性能难以令人满意,而且由于低频信号源所需的RC很大;大电阻,大电容在制作上有困难,参数的精度亦难以保证;体积大,漏电,损耗显著更是其致命的弱点。
一旦工作需求功能有增加,则电路复杂程度会大大增加。
1.2单片机的应用
当今是科学技术及仪器设备高度智能化飞速发展的信息社会,电子技术的进步,给人们带来了根本性的转变。
现代电子领域中,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。
单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机、微波炉到音响汽车,处处可见其应用。
因此,单片机技术开发和应用水平已逐步成为一个国家工业发展水平的标志之一。
一块单片机芯片就是一台计算机。
由于单片机的这种特殊的结构形式,在某些应用领域中,它承担了大中型计算机和通用微型计算机无法完成的一些工作。
使其具有很多显著的优点和特点,因此在各个领域中都得到了迅猛的发展。
单片机的特点归纳起来有以下几个方面[2]。
⑴具有优异的性能价格比
单片机尽可能地把应用所需的存储器,各种功能的I/O接口集成在一块芯片内,因而其性能很高,而价格却相对较低廉,即性能价格比很高。
⑵集成度高、体积小、可靠性高
单片机把各种功能部件集成在一块芯片上,因而集成度高,均为大规模或超大规模集成电路。
又内部采用总线结构,减少了芯片之间的连线,这大大提高了单片机的可靠性与抗干扰能力。
同时,其体积小,对于强磁场环境易于采取屏蔽措施,适合于在恶劣环境下工作。
⑶控制功能强
单片机体积虽小,但“五脏俱全”,它非常适用于专门的控制用途。
为了满足工业控制要求,一般单片机的指令系统中有极丰富的转移指令,I/O口的逻辑操作指令以及位操作指令。
其逻辑控制功能及运行速度均高于同一档次的微机。
⑷低电压、低功耗
单片机大量用于携带式产品和家用消费类产品,低电压和低功耗尤为重要。
目前,许多单片机已可在2.2V电压下运行,有的已能在1.2V或0.9V下工作,功耗降至μA级,一粒钮扣电池就可长期使用。
利用单片机采用程序设计方法来产生低频信号,其下限频率很低。
具有线路相对简单,结构紧凑,价格低廉,频率稳定度高,抗干扰能力强,用途广泛等优点,并且能够对波形进行细微调整,改良波形,使其满足系统的要求[3]。
只要对电路稍加修改,调整程序,即可完成功能升级。
这里介绍一种采用AT89C51单片机和一片DAC0832数模转换器做成的便携式函数发生器,它的特点是价格低、性能高,在低频范围稳定性好、操作方便、体积小、耗电少等。
函数发生器与其它相比还具有如下优点[4]:
①较分立元件信号发生器而言,具有频率高,工作稳定,容易调试等特性;②较专用DDS芯片的信号发生器而言,具有结构简单,成本低等特性。
2系统设计方案
2.1系统分析
2.1.1功能定义
基于单片机的信号发生系统是一个实际应用系统,可为相关实验及实际应用提供支持。
本论文包括硬件系统的详细设计及C语言在基本控制中的应用[5]。
此系统具有的功能如下:
硬件部分
⑴电源模块(±12V,5V);
⑵时钟与复位电路模块;
⑶键盘设计模块;
⑷波形产生与电压变换模块;
⑸D/A转换模块;
⑹显示模块;
软件部分
⑴系统复位初始化;
⑵键盘扫描与处理;
⑶三角波发生程序设计;
⑷正弦波发生程序设计;
⑸方波发生程序设计;
⑹中断服务程序设计;
⑺液晶显示;
2.1.2可行性分析
⑴可行性分析
根据技术指标及系统设计目的,经研究芯片的选择如下[6]:
①主控芯片采用ATMEL公司的89C51;
②采用12MHz的晶振器为89C51提供时钟信号;
③稳压块选用7812与7805相串联,提供12V和5V电压,7912产生-12V电压;
④对于89C51的P0口的数据采用74LS373进行锁存后经过DAC0832进行D/A转换;
⑤显示器采用LCD1602液晶显示;
⑥8位D/A转换器采用DAC0832;
⑦运算放大器采用LM324。
大部分的芯片及器件都可以通过网络购买,所以器件的选择完全可行。
⑵经济上的可行性讨论
本设计是一个实验系统,芯片的选择在前面已经讨论,从前面的讨论中可见芯片大部分可在网上找到。
因此,设计费用主要集中在购买元器件上,而大部分的元器件又不是很贵,所以经济上本设计完全可行。
2.2系统需求分析
2.2.1系统功能要求
系统具有D/A转换功能,LCD1602液晶显示功能,上电自动复位功能,2×4键盘输入接口,信号幅度频率变换功能。
2.2.2系统性能要求
⑴系统的D/A转换功能具有8位精度;
⑵动态扫描LCD显示器;
⑶89C51单片机时钟信号为12MHZ;
⑷系统上电自动复位;
⑸系统具有8位行列扫描键盘。
2.3总体方案设计
一个单片机主系统的硬件电路设计包含两部分内容:
一是单片机系统扩展部分设计,它包括存储器扩展和接口扩展。
存储器扩展指EPROM、EEPROM和RAM的扩展。
接口扩展是指各接口芯片以及其他功能器件的扩展[7]。
二是各功能模块的设计,如信号检测功能模块、信号控制功能模块、人机对话功能模块、通讯功能模块等,根据系统功能要求配置相应的D/A、键盘、显示器等外围设备。
本机硬件设计包括两部分,即电源部分设计和主系统设计。
电源设计和主系统框图分别如图2-1,2-2所示。
图2-1交流—直流电压转换
图2-2主系统结构框图
3函数发生器硬件设计
3.1总体硬件设计
单片机应用系统的硬件电路设计包含两部分内容[8]:
一是系统扩展,即单片机内部的功能单元(如ROM、I/O、定时/计数器等)容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计适当的电路。
二是系统配置,即按照功能要求配置外围设备如显示器、D/A转换等,要设计合适的电路。
系统的扩展和模块设计应遵循下列原则[9]:
⑴尽可能选择标准化、模块化的典型电路,提高设计的成功率和结构的灵活性。
⑵系统的扩展与外围设备配置的水平应充分满足应用系统的功能要求。
⑶硬件结构应结合应用软件方案一并考虑。
硬件结果与软件方案会产生相互影响,考虑的原则是:
软件能实现的功能尽可能由软件来实现,以简化硬件结构。
但必须注意,由软件实现的硬件功能,其响应时间要比直接用硬件响应来的长,而且占用CPU时间。
所以,选择软件方案时,要考虑到这些因素。
⑷可靠性及抗干扰性设计是硬件系统设计不可缺少的部分,它包括芯片、器件选择,去耦滤波等。
⑸单片机外接电路较多时,必须考虑其驱动能力。
驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力,增设线驱动器或减少芯片功耗,降低总线负载。
⑹系统的扩展及各功能模块的设计在满足系统功能要求的基础上,应适当留有余地,以备将来修改、扩展之需。
⑺在考虑硬件总体结构的同时要注意通用性的问题。
根据以上原则,进行硬件设计。
系统采用较为普及的89C51单片机作为系统的核心。
它不但容易实现设计指标,而且还有较好的性价比[10]。
①程序存贮器
89C51内部自带8K的ROM,512B的RAM,所以不需要对其扩展存储器。
②键盘接口
矩阵式键盘适用于按键数量较多的场合,系统采用了行列式键盘设计即矩阵键盘,用I/O线组成行、列结构,按键设置在行列的交点上,2×4的行列结构可构成8个键的键盘。
因此,在按键数量较多时,可以节省I/O线。
按键的识别方法有两种,一种为扫描法,另一种为线反转法。
此设计采用了行列式及与之相适应的行列扫描法。
③LCD液晶驱动
本设计实现了89C51的I/O口对2×4键盘和8位LCD液晶显示的控制。
为增加对LCD液晶显示器的驱动能力及稳定性,在它与89C51之间设置了提高驱动能力的74LS373。
④D/A转换
本设计D/A转换部分采用DAC0832芯片,由于它不带锁存器,故在使用时必须加74LS373进行数据锁存[11]。
⑤信号变换部分
对信号的变换部分采用四运放集成芯片LM324,它采用14脚双列直插塑料封装,它的内部包含四组形式完全相同的运算放大器。
⑥可靠性方面
在使用应用系统时,可能会受到多种干扰的侵袭,直接影响到系统的可靠性,因此,本系统适当加入去耦电容,以减少干扰,确保精度。
3.2系统模块设计
3.2.1电源模块设计
稳压电源是单片机控制系统的重要组成部分,它不仅为测控系统提供多路电源电压,还直接影响到系统的技术指标和抗干扰性能。
近年来,传统的线性稳压电源正逐步被高有效率的开关电源所取代,特别是单片开关电源的迅速推广应用,为设计新型、高效、节能电源创造了良好的条件。
本机使用三种共地电源:
+12V,-12V,+5V,硬件设计中采用自带电源方式。
因为本机有89C51单片机,还有许多逻辑芯片,这些芯片的工作电源电压为+5V,所以电源中必须有+5V电源。
另外由于D/A转换器件Vee端需接-12V电压,LM324也需要提供±12V电源,所以需要设计一个能产生±12V,+5V的电源[12]。
经过综合分析,变压器选用16W/32V变压器,整流用一片RBV-406集成电桥。
稳压部分选用三端集成7805,7812,7912稳压器件。
特别说明,在使用稳压器件时,一定要注意7912是左边接地,右边输出,中间输入;而7812是左边输入,右边输出,中间接地。
电源部分原理图如3-1图所示:
图3-1电源原理图
3.2.2复位与时钟电路模块设计
⑴复位电路设计
单片机的复位是靠外电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位[18]。
为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。
复位电路连接如下图所示。
系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。
经过一段时间,电容充电,使RESET端呈低电位,复位结束。
复位电路如图3-2所示:
图3-2复位电路
⑵时钟电路设计
89C51系列单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。
由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。
晶振通常选用6MHZ、12MHZ或24MHZ。
内部振荡方式如图3-3所示。
图中电容C1、C2起稳定振荡频率、快速起振的作用。
电容值一般为5~30pF。
内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。
外部振荡方式是把已有的时钟信号引入单片机内。
这种方式适宜用来使单片机的时钟与外部信号保持一致。
外部振荡方式电路如图3-4所示。
对HMOS的单片机(8031,8031AH等),外部时钟信号由XTAL2引入;对于CHMOS的单片机(89C51),外部时钟信号由XTAL1引入。
图3-3内部振荡图3-4外部振荡
3.2.3D/A转换模块设计
⑴D/A转换器概述
D/A转换器的性能指标:
①分辨率:
输出模拟电压应能区分0~2n-1共2n个输入数字量。
表示方法:
用输入二进制数的位数表示;如8位。
用输出模拟电压的最小值与最大值的比值表示。
指最小输出电压和最大输出电压之比。
DAC0832的分辨率为1/256。
②精度:
DAC0832实际输出电压与理想的输出电压的偏差。
DAC0832的最大满刻度偏差为+1LSB。
③线性度:
DAC0832实际传输特性曲线与理想的传输特性曲线的偏差。
DAC0832的最大误差为+0.19%。
④温度灵敏度:
在输入不变的情况下,输出模拟电压随温度变化产生的变化量。
一般用满刻度输出条件下温度每升高1℃,输出电压变化的百分数作为温度系数。
⑤转换速度:
用完成一次转换所需的时间——建立时间Tset来衡量。
建立时间:
输入信号从开始变化到输出电压进入与稳态值相差1/2LSB范围以内的时间。
输入信号由全0变为全1所需时间最长。
当外接运放时,转换时间还应加上运放的上升(下降)时间。
(3-1)
式中
为转换时间,
为建立时间,
输出最大电压值,
为运放输出转换速率。
⑵D/A转换系统的实现
根据DAC0832的特性设计出本系统的D/A转换电路如图3-5所示:
图3-5系统D/A实现
工作原理:
本系统由VREF提供参考电压,相应参考电流为I=VREF/R1。
电容C4提供补偿,OUT输出电流,经过LM324运算放大器转换成电压。
所以输出电压:
(3-2)
=5K(3-3)
(3-4)
3.2.4电压变换原理图
电压变换的原理采用运算放大器搭建电路,DAC输出的信号经过LM324运算放大电路,达到预定的信号输出幅度,运算电路的设计中,Rf为反馈电阻,经过一定的比例运算达到最终的设计目的。
C5为滤波电容。
可以滤除杂波信号。
具体设计电路原理图如图3-6所示:
图3-6系统信号变换
3.2.5键盘接口设计
⑴键盘设计需要解决的几个问题:
键盘是若干按键的集合,是向系统提供操作人员干预命令及数据的接口设备。
键盘可分为编码键盘和非编码键盘两种类型。
编码键盘能自动识别按下的键并产生相应代码,以并行或串行方式发给CPU。
它使用方便,接口简单,响应速度快,但需要专用的硬件电路。
非编码键盘则是通过软件来确定按键并计算键值。
这种方法虽然没有编码键盘速度快,但它不需要专用的硬件支持,因此得到了广泛的应用。
键盘是计算机应用系统中的一个重要组成部分,设计时必须解决下述一些问题。
①按键的确认
键盘实际上是一组按键开关的集合,其中每一个按键就是一个开关量输入装置。
键的闭合与否,取决于机械弹性开关的通、断状态。
反应在电压上就是呈现出高电平或低电平,若高电平表示断开,那么低电平键闭合。
所以,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。
②重键与连击的处理
实际按键操作中,若无意中同时或先后按下两个以上的键,系统确定哪个键操作是有效的,完全取决设计者的意图。
如视按下时间最长者为有效键,或认为最先按下的键为当前的按键,也可以将最后释放的键看成是输入键。
不过单片机控制系统的资源有限,交互能力不强,通常总是采用单键按下有效,多键同时按下无效的原则。
有时,由于操作人员按键动作不够熟练,会使一次按键产生多次击键的效果,及重键的情形。
为消除重键的影响,编制程序时可以将键的释放作为按键的结束。
等键释放电平后再转去执行相应的功能程序,以防止一次击键多次执行的错误发生。
③按键防抖动技术
键盘作为向系统提供操作人员的干预命令的接口,以其特定的按键代表着各种确定操作命令。
所以准确无误地辨认每个键的动作及其所处的状态,是系统能否正常工作的关键。
多数键盘的按键均采用机械弹性开关。
一个电信号通过机械触点的断开、闭合过程,完成高、低电平的切换。
由于机械触点的弹性作用,一个按键开关闭合及断开的瞬间必然伴随有一连串的抖动。
消除按键盘抖动通常有两种方法:
硬件消抖和软件消抖。
通过硬件电路消除按键过程中抖动的影响是一种广为采用的措施。
这种做法,工作可靠,且节省机时。
硬件消抖是通过在按键输出电路上加一定的硬件线路来消除抖动,一般采用R—S触发器或单稳态电路,如图3-7所示。
软件消抖则是利用延时来跳过抖动过程。
图3-7单稳态硬件消抖电路
键盘的结构形式一般有两种:
独立式键盘与矩阵式键盘。
独立式键盘就是各按键相互独立,每个按键各接一根I/O口线,每根I/O口线上的按键都不会影响其它的I/O口线,示例如下图所示。
矩阵式键盘又叫行列式键盘。
用I/O口线组成行、列结构,键位设置在行列的交点上。
例如4×4的行、列结构可组成16个键的键盘,比一个键位用一根I/O口线的独立式键盘少了一半的I/O口线。
对矩阵键盘的工作过程可分两步:
第一步是CPU首先检测键盘上是否有键按下;第二步是再识别是哪一个键按下。
独立式键盘如图3-8所示:
图3-8独立式键盘
⑵矩阵键盘的工作方式
①查询工作方式
这种方式是直接在主程序中插入键盘检测子程序,主程序每执行一次,则键盘检测子程序就对键盘进行检测一次。
如果没有键按下,则跳过键识别,直接执行其他程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值。
然后根据编码值进行相应的处理,处理完后再回到主程序执行。
键盘扫描子程序流程如图3-9所示:
图3-9键盘扫描流程图
②中断工作方式
如图所示,就是中断工作方式,当有中断的时候,就去执行扫描程序,没有中断的时候,CPU可以去做其他的事情。
这样可以提高CPU的效率。
键盘中断工作方式如图3-10所示:
图3-10键盘中断工作方式
⑶系统键盘的实现
依据上述工作原理,结合本设计实际,设计出本系统键盘结构如图3-11所示。
图3-11系统键盘实现
工作原理如下:
①检测键盘上是否有键按下:
将行线送入低电平,列线送入高电平。
读入P1口的状态来判别。
其具体过程如下:
P1口输出0FH,即所有行线置成高电平,所有列线置成低电平,然后将P1口状态读入与0FH比较。
如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。
②识别键盘中哪一个键按下:
确认有键按下后,保存行扫描时有键按下时的状态X。
P1口输出F0H,进行列扫描,保存列扫描状态Y,取出键值Z=X|Y.例如第一行第一列有键按下,那么行扫描读入的状态为00001110,列扫描读入的状态为11100000,最后键值Z=11101110=EEH,然后转去执行相应的服务程序。
3.2.6显示器接口设计
功能简介:
其液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,每一个字符都有一个固定的代码[13]。
LCD1602以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用,实物图如图3-12所示:
外形尺寸(LxWxH)80.0x36x12.0
视域尺寸(WxHxT)64.5x13.8
驱动电压(V)5.0Vor3.3V
工作温度:
(oC)0~50or-20~70
存储温度:
(oC)-10~60or-30~80
显示类型:
STNorFSTN
颜色:
蓝色(带背光)
生产工艺:
SMT
其主要技术参数为:
显示容量:
4.5~5.5V;
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 发生器 软件设计