1、单片机函数信号发生器设计摘 要: 本系统利用单片机AT89S52采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz3kHz的波形。通过键盘来控制三种波形的类型选择、频率变化,并通过液晶屏1602显示其各自的类型以及数值,系统大致包括信号发生部分、数/模转换部分以及液晶显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。关键词:单片机AT89S52、DAC0832、液晶1602Abstract: this system capitalize on AT89s52,it ma
2、kes use of central processor to generate three kinds of waves, they are triangle wave, and use D/A conversion module, wave generate module and liquid crystal display of 1602, it can have the 1Hz-3KHz profile. In this system it can control wave form choosing, frequency, range,can have the sine wave,
3、the square-wave, the triangular wave. Simultaneously may also take the frequency measurement frequency,and displays them through liquid crystal display of 1602. this design includes three modules. They are D/A conversion module, wave generate module and liquid crystal display of LED module. In this
4、design, the wave generator into wave form module and D/A conversion module are discussed in detail. key word: AT89S52, DAC0832, liquid crystal 1602.1. 系统设计1.1 设计要求 1.2方案设计与论证 1.2.1 信号发生电路方案论证 1.2.2 单片机的选择论证 1.2.3 显示方案论证 1.2.4 键盘方案论证1.3 总体系统设计 1.4 硬件实现及单元电路设计 1.4.1 单片机最小系统的设计1.4.2 波形产生模块设计 1.4.3 显示模块
5、的设计 1.4.4 键盘模块的设计1.5 软件设计流程1.6 源程序2. 输出波形的种类与频率的测试2.1 测试仪器及测试说明2.2 测试结果3. 设计心的及体会4. 附录4.1 参考文献4.2 附图1、 系统设计经过考虑,我们确定方案如下:利用AT89S52单片机采用程序设计方法产生锯齿波、正弦波、矩形波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值。1.1、设计要求1、利用单片机采用软件设计方法产生三种波形2)、三种波形可通过键盘选择3)、波形频率可调4)、需显
6、示波形的种类及1.1 课题的来源与技术背景不论是在生产还是在科研与教学上,信号发生器都是电子工程师仿真实验的最佳工具。随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,信号发生器己成为测试仪器中至关重要的一类,因此开发信号发生器具有重大意义。传统的信号发生器采用专用芯片,成本高,控制方式不灵活。本设计充分利用单片机灵活的控制、丰富的外设处理能力,采用DDS技术,实现频率、幅值可调的函数波形的输出,同时可以根据需要方便地实现各种比较复杂的调频、调相和调幅功能,具有良好的实用性。根据其频率发生方法又可分为谐振法和合成法两种。一般的传统发生器都是采用的谐振法,即用具有频率选择性
7、的回路来产生正弦振荡,来获得所需频率,也可以根据频率合成技术来获得所需频率。利用频率合成技术制成的合成波形发生器,通常被称为频率合成器或频率综合器。频率综合器是指利用频率合成技术合成的频率源,它常常是没有调制的,也没有足够宽的和足够准确的输出电平调节,其工作范围往往也不宽,最小频率间隔也比较大,一般做专用设备使用,或做某一个系统中的一个组成部分。1.2 研究信号发生器的目的及意义波形发生器是信号源的一种,主要给被测电路提供所需要的己知信号(各种波形,然后用其它仪表测量感兴趣的参数。可见信号源在各种实验应用和试验测试处理中,它的应用非常广泛。它不是测量仪器,而是根据使用者的要求,作为激励源,仿真
8、各种测试信号,提供给被测电路,以满足测量或各种实际需要。目前我国己经开始研制波形发生器,并取得了可喜的成果。但总的来说,我国波形发生器还没有形成真正的产业。就目前国内的成熟产品来看,多为一些PC仪器插卡,独立的仪器和VXI系统的模块很少,并且我国目前在波形发生器的种类和性能都与国外同类产品存在较大的差距,因此加紧对这类产品的研制显得迫在眉睫。函数波形发生器发展很快近几年来,国际上波形发生器技术发展主要体现在以下几个方面: (1)过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变得更加方便和容易。波形发生器通常允
9、许用一系列的点、直线和固定的函数段把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂的波形可以由几个比较简单的公式复合成v=f(t形式的波形方程的数学表达式产生。从而促进了波形发生器向任意波形发生器的发展,各种计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视化编程语言(如Visual Basic, Visual C等等编写任意波形发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。(2)与VXI资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算机的插卡以及新近开发的VXI模块。由于VXI总线的逐渐成熟和对测量仪器的高要
10、求,在很多领域需要使用VXI系统测量产生复杂的波形,VXI的系统资源提供了明显的优越性,但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得波形发生器VXI模块仅限于航空、军事及国防等大型领域。在民用方面,VXI模块远远不如台式仪器更为方便。(3)随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类似产品减少了一半。1.3 主要研究内容(1)理论基础分析。了解波形发生器的相关理论,包括几种常用波形,如正弦波、方波等,然后介绍了
11、波形发生器的主要方案及原理。(2)硬件系统设计。主要包括以下几个模块:串口电路;键盘、LED显示电路;单片机系统;DAC芯片和放大电路设计。 (3)软件系统设计。主要有:系统总体流程设计;串口程序设计;单片机程序设计;键盘响应程序设计;LED显示程序设计;DAC控制程序设计。(4)系统仿真调试。通过计算机进行模拟仿真调试。2. 信号发生器的理论分析与设计方案在测试与测量技术过程中,常用到已知波形的数字化生成,它在许多与测量有关的领域有着不可替代的作用。例如,数字化仿真,常被用于算法研究、模型研究、系统辨识或以蒙特卡罗法搜索模型与算法。任意波形发生器出现以后,给人们提供的不仅是一个通用的基础技术
12、平台,而是在人们面前打开了通往无限宽广空间的一扇门,使得人们对于信号波形的掌握与应用再也不必局限于简单的正弦波、方波等几种有限的波形了,它可以按照人们提供的测量序列产生出几乎任意形状的连续波形信号。常用波形介绍函数波形的一般表达式可以表示为 ,下面来介绍几种常用的函数波形3:2.1.1 正弦函数正弦信号与余弦信号,两者只是在相位上相差2,可以统称为正弦信号。其一般形式为f (t=Asin(t+ (1)式中,A 为振幅, 是角频率, 为初相位。上述三量是正弦信号的三要素。它的波形见图1。正弦信号是周期信号,其周期T 与频率f 及角频率 之间的关系为: (2)图1 正弦波形在实际应用中经常遇到单边
13、指数衰减的正弦信号,其波形如图2所示,表达式为: (3)图2 指数衰减的正弦信号波形2.1.2 方波波形函数方波函数是一种常用的波形函数,其表达式为: (4)方波的波形如图2-3所示:图3 方波波形2.2 设计方案目前信号发生的主要实现方法由直接模拟法、直接数字法两种。2.2.1 直接模拟法图4 直接模拟法框图这是传统函数发生器的简化基本结构,一般都是由自由振荡器产生原始波形,然后经过转换电路将原始波形转换成其他波形,在上图中三角波是由振荡器产生的,方波是三角波通过比较器转变而成的,正弦波是三角波通过一个波形整形电路(正弦波整形器)演变而来的,所需要波形经过放大和衰减输出,显然这种方式产生的波
14、形种类有限,每增加一种波形,都要增加相应的转换电路,整个电路变得很复杂,最重要的是要产生用户所需要的任意波形复杂的波形几乎不可能5。2.2.2 直接数字法直接数字法是采用直接数字合成(Direct Digital Synthesis)的方法实现信号产生。该技术具有频率转换速度快、频率分辨率高、易于控制的突出特点。直接数字合成技术近年来发展得很快,而要产生任意波形就必须采用直接数字很成技术。随着DDS技术的发展,出现了各种各样的直接数字合成的结构,但基本上可以发成两种:(1)基于地址计数器的数字频率合成法;(2)基于相位累加器的数字频率合成法。由于直接数字法在设计上的的优点,本课题设计采用的是基
15、于地址计数器的直接数字合成法。1.2方案设计与论证 1.2.1 信号发生电路方案论证 方案一:通过单片机控制D/A,输出三种波形。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。 方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波,再利用过零比较器转换成方波,积分电路转换成三角波。此方案,电路复杂,干扰因素多,不易实现。 方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的三角波、方波和正弦波三种周期性波形。但此方案成本高,程序复杂度高。以上三种方案综合考虑,选
16、择方案一。1.2.2 单片机的选择论证 方案一:AT89S52单片机是一种高性能8位单片微型计算机。它把构成计算机的中央处理器CPU、存储器、寄存器、I/O接口制作在一块集成电路芯片中,从而构成较为完整的计算机、而且其价格便宜。方案二:C8051F005单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。除了具有标准8052的数字外设部件,片内还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,而且执行速度快。但其价格较贵以上两种方案综合考虑,选择方案一1.2.3 显示方案论证 方案一:采用LED数码管。LED数码管由8个发光二
17、极管组成,每只数码管轮流显示各自的字符。由于人眼具有视觉暂留特性,当每只数码管显示的时间间隔小于1/16s时人眼感觉不到闪动,看到的是每只数码管常亮。使用数码管显示编程较易,但要显示内容多,而且数码管不能显示字母。 方案二:采用LCD液晶显示器1602。其功率小,效果明显,显示编程容易控制,可以显示字母。以上两种方案综合考虑,选择方案二。1.2.4 键盘方案论证方案一:矩阵式键盘。矩阵式键盘的按键触点接于由行、列母线构成的矩阵电路的交叉处。当键盘上没有键闭合时,所有的行和列线都断开,行线都呈高电平。当某一个键闭合时,该键所对应的行线和列线被短路。方案二:编码式键盘。编码式键盘的按键触点接于74
18、LS148芯片。当键盘上没有闭合时,所有键都断开,当某一键闭合时,该键对应的编码由74LS148输出。以上两种方案综合考虑,选择方案一。1.3总体系统设计该系统采用单片机作为数据处理及控制核心,由单片机完成人机界面、系统控制、信号的采集分析以及信号的处理和变换,采用按键输入,利用液晶显示电路输出数字显示的方案。将设计任务分解为按键电路、液晶显示电路等模块。图(1)为系统的总体框图 图(1) 总体方框图1.4硬件实现及单元电路设计 1.4.1单片机最小系统的设计89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单可靠。用80C51单片机构成最小应用系统时,只要将单片机接
19、上时钟电路和复位电路即可,如图(2) 89C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:(1 有可供用户使用的大量I/O口线。(2 内部存储器容量有限。(3 应用系统开发具有特殊性。图(2) 89C51单片机最小系统1.4.2 波形产生模块设计 由单片机采用编程方法产生三种波形、通过DA转换模块DAC0832在进过滤波放大之后输出。其电路图如下: 图(3)波形产生电路如上图所示,单片机的P0口连接DAC0832的八位数据输入端,DAC0832的输出端接放大器,经过放大后输出所要的波形。DAC0832的为八位数据并行输入的,其结构图如下:图(4)
20、DAC0832的内部结构1.4.3 显示模块的设计通过液晶1602显示输出的波形、频率,其电路图如下:图(5)液晶显示如上图所示,1602的八位数据端接单片机的P1口,其三个使能端RS、RW、E分别接单片机的P3.2P3.4。通过软件控制液晶屏可以显示波形的种类以及波形的频率。1.4.4 键盘显示模块的设计本系统采用独立键盘,其连接电路图如下:图(6)键盘图中键盘独立键盘引出的八跟线分别接单片机的P2口,只用其第四列,因此在程序初始化时P2.7脚给低电平。如图开关3用来切换输出波形、开关7和8用来调节频率的加减。当按开关7时输出波形的频率增加,按开关8时输出波形的频率减小。1.5 软件设计流程
21、本系统采用AT89S52单片机,用编程的方法来产生三种波形,并通过编程来切换三种波形以及波形频率的改变。具体功能有:(1)各个波形的切换;(2)各种参数的设定;(3)频率增减等。软件调通后,通过编程器下载到AT89S52芯片中,然后插到系统中即可独立完成所有的控制。软件的流程图如下:图(7)程序流程图1.6源程序#include #define uchar unsigned char #define uint unsigned int sbit lcdrw=P33;sbit lcdrs=P32;sbit lcde=P34;sbit d=P27;sbit s1=P20;sbit s2=P21;s
22、bit s3=P22;sbit cs=P35;sbit wr=P36;uchar s1num,a,ys,j;uint fre;uchar code tosin256=0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0x
23、ef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0x
24、c7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x
25、1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x
26、25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 ;/*正弦波码 */void delay(uint z /延时子程序 uchar i,j;for(i=z;i0;i-for(j=110;j0;j-;void delay1(uint yuint i;for(i=y;i0;i-;void write_com(uchar co
27、m /1602写指令 lcdrs=0;P1=com;delay(5;lcde=1;delay(5;lcde=0;void write_data(uchar date /1602数据 lcdrs=1;P1=date;delay(5;lcde=1;delay(5;lcde=0; void init( /初始化 lcdrw=0;lcde=0;wr=0;cs=0;write_com(0x38;write_com(0x0c;write_com(0x06;write_com(0x01;write_com(0x80+0x00; write_data(0x77; /写wave:write_data(0x61;
28、write_data(0x76;write_data(0x65;write_data(0x3a;write_com(0x80+0x40; /写 f: write_data(0x66;write_data(0x3a; void write_f(uint date /写频率 uchar qian,bai,shi,ge;qian=date/1000;bai=date/100%10;shi=date/10%10;ge=date%10;write_com(0x80+0x42;write_data(0x30+qian;write_data(0x30+bai;write_data(0x30+shi;writ
29、e_data(0x30+ge;write_data(0x48;write_data(0x5a;void xsf( /显示频率 if(s1num=1fre=(1000/(9+3*ys;write_f(fre; if(s1num=2fre=(100000/(3*ys;write_f(fre; if(s1num=3fre=(1000/(15+3*ys;write_f(fre; void keyscanf( d=0;if(s1=0delay(5;if(s1=0 while(!s1;s1num+;if(s1num=1ys=0;write_com(0x80+0x05; write_data(0x73; /
30、写sine:write_data(0x69;write_data(0x6e;write_data(0x65;write_data(0x20;write_data(0x20; if(s1num=2ys=10;write_com(0x80+0x05; write_data(0x73; /写squraewrite_data(0x71;write_data(0x75;write_data(0x61;write_data(0x72;write_data(0x65; if(s1num=3ys=0;write_com(0x80+0x05; /trainwrite_data(0x74; write_data(0x72;write_data(0x61;write_data(0x69;write_data(0x6e;write_data(0x20;if(s1num=4s1num=0;P1=0;write_com(0x80+0x05; write_data(0x20; write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20;write_data(0x20; write_com(0x80+0x42;write_data(0x20;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1