正弦波,方波,三角波的发生电路设计_第1页
正弦波,方波,三角波的发生电路设计_第2页
正弦波,方波,三角波的发生电路设计_第3页
正弦波,方波,三角波的发生电路设计_第4页
正弦波,方波,三角波的发生电路设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、正弦波方波三角波的发生电路设计摘要现今世界中电子技术与电子产品的应用越加广泛,人们对电子技术的要求也越来越高。因此如何根据实际要求设计出简便实用的电子技术物品便显得尤为重要。灵活、快速的选用不同特征的信号源成了现代测量技术值得深入研究的课题。能将简单的易获取的信号转换为自己所需的复杂信号是一项必不可少的技术。我们有必要做好这相关方面的研究,为被测电路提供所需要的信号及各种波形,以便完成各种相关试验。信号源在各种试验应用和实验测试处理中,仿真各种测试信号,提供给被测电路,用来满足实验的各种要求。关键词:单片机,信号发生器,波形ABSTRACT:The application of electro

2、nic technology and electronic products in today's world increasingly extensive, people also more and more high to the requirement of electronic technology. According to actual requirements so how to design simple and practical electronic technology items, it becomes very important. Flexible, fas

3、t, choose different characteristics of the signal source is worth studying deeply the modern measuring technology. Can be simple, easy to obtain signal can be converted into their complex signal is an essential technology. It is necessary for us to do the related research, to provide the required si

4、gnal circuit under test and various waveform, to complete various related experiment. Signal source in various test application and test processing, simulation of testing signal, provided to the circuit under test, to satisfy the requirements of the experiments.KEY WORDS: Microcontroller, signal gen

5、erator, waveform目录第一章 前言41.1 课题研究背景41.2 波形介绍51.2.1正弦波51.2.2三角波51.2.3方波61.3硬件介绍61.3.1 AT89C51单片机61.3.2 DAC0832转换器7第二章发生电路设计原理92.1功能和基本原理92.2红外电路92.3复位电路102.4LCD显示部分电路102.5电源部分112.6外部时钟电路112.7显示接口电路112.8独立按键部分122.9波形转换电路122.10串口通信模块13第三章 软件设计153.2 键盘中断子程序213.3系统初始化子程序21第四章 系统仿真224.1仿真电路图224.2输出波形图224.

6、2.1、测量仪器及测试说明224.2.2测试过程224.2.3、测试结果24第五章 结束语25参考文献26附录27致谢28第一章 前言1.1 课题研究背景 函数信号发生器是一种常用信号源。通常能够产生正弦波、方波、三角波等多种波形,因其时间波形可用某种时间函数来描述而得名。函数信号发生器在电路实验和设备检测中具有十分广泛的应用,密切地联系着工业、农业、生物医学等产业,并对它们的发展起到极大的促进作用。 伴随着单片机技术的快速发展与普遍应用,函数信号发生器的性能和性价比将会有更大的提升空间。基于单片机的函数信号发生器将为智能化生活提供实质的帮助。1.2 波形介绍 1.2.1正弦波正弦信号可用如下

7、形式表示:f (t)=Asin(t+ ),其中,A 为振幅, 是角频率, 为初相位。正弦函数为一周期信号如下图1所示: 图1 正弦波1.2.2三角波三角波波形如下图2所示:图2 三角波1.2.3方波方波函数是我们常用且所熟知的简单波形函数,做脉冲等,其表示形式如下: 方波波形如下图3所示:图3 方波当方波下半段幅值为0时,就为矩形波,一个原理,所以不再赘述矩形波。1.3硬件介绍1.3.1 AT89C51单片机1.AT89C51单片机的简介AT89C51单片机是一种带4 k字节的闪存(FPEROM - FLASH编程和可擦只读存储器)的低电压、高性能CMOS 8位微处理器。AT89C2051是一

8、种带2 k字节flash可编程单片机可擦除只读存储器(ROM)。单片机可擦除只读存储器可以抹去反复1000次。该设备采用ATMEL高密度非易失存储器制造技术,和行业标准的MCS - 51指令集和输出管兼容。由于多功能8位CPU和闪存在单一芯片,ATMEL AT89C51单片机的结合是一种有效的微控制器,AT89C2051的精简版本。AT89C51为许多嵌入式控制系统提供了一个解决方案概述高灵活性和低价格的特点。能够提供以下标准特性:4 k字节的Flash闪存,128字节的内部RAM,32个I / O端口线,两个16位定时器/计数器,一个两个阶段5向量中断结构、全双工串行通信端口,芯片上的时钟振

9、荡器电路及时。同时,AT89C51单片机静态逻辑运算可以减少到0赫兹,和两个软件支持可选的节能工作模式。免费停止CPU的工作方式,但是允许RAM,定时器/计数器,串行通信端口和中断系统继续工作。电方式节省内存的内容,但振荡器停止工作和其他工作,直到下一个硬件复位所有部分。2.AT89C2051的功能单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地进行工作。因而时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路方式有两种:一种是内部时钟方式,一种是外部时钟方式,这里采用的是内部时钟方式,外接晶振。时钟电路由片外晶体、微调电容和单片机的内部电路组成。选

10、取频率为11.0592MHz的晶振,微调电容是瓷片电容。89S52单片机的P0.7口作为波形输出口,若接示波器,则可通过示波器来观察波形,是一个矩形波。1.3.2 DAC0832转换器1. DAC0832转换器的简介DAC0832DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。2. DAC0832的功能(1)分辨率它反映了最小输出模拟电压值的变化。定义为满量程输出电压之比2 n,其中n位DAC。分辨率有

11、一定的与数字量的输入数字的关系。全系列的5 v,使用8位DAC,分辨率为5 v / 256 = 19.5 mV;当使用DAC分辨率为5 v / 1024 = 4.88 mV。显然,位数越高分辨率越高。(2)建立时间建立时间是描述DAC转换速度快慢的参数。定义为从输入数字量变化到输出达到终值误差±1/2 LSB(最低有效位)所需的时间。(3)接口形式接口是DAC的输入/输出特性。包括输入数字量的形式:十六进制或BCD,是否输入。 DAC0832是使用一个非常常见的8 D / A转换器,因为它和输入数据寄存器,它可以直接与单片机接口。 DAC0832输出电流的形式,需要时将可以外部运算放

12、大器的电压输出。属于系列芯片和DAC0830 DAC0831,它们可以相互替换。根据数据输入过程中,有三种单片机和DAC0832连接方式:二级缓冲单级缓冲的连接方法连接模式,直接连接。第二章发生电路设计原理2.1功能和基本原理 AT89C51外接12M晶振作为时钟频率,设计并使用功率降低。使用电复位复位电路,其工作原理是,得电,相当于电容的两端短路,因此TST引脚为高电平,那么电容器充电。RST端电压下降缓慢,在一定程度上,是低水平,单片机就开始工作。产生方波计划:低于100赫兹的频率,根据定时器溢出时间1us,定时器溢出时代的等效频率值,当达到规定的数量,达到的状态的方波的输出接脚; 对于大

13、于100HZ的频率,直接根据频率值设置其定时溢出的时间,当溢出时间达到时,将输出管脚取反达到方波的产生。产生三角波计划的想法:产生峰值电压5 v的三角波,一个周期需要时间510次,可以计算每次溢出的时间,然后每次加权可以实现三角波电压波形;生成正弦波程序理念:设定一个周期的正弦波表,通过20个数据,相当于255倍,每个周期时间,时间可以计算为每个时间的溢出,每个点可以得到电压加权正弦电压,即正弦波的形成。2.2红外电路红外的工作原理:51单片机对遥控的解码和我们前面所讲的串口并口通信不同,他不是单纯的用高电平代表1,低电平代表0。这一点大家要从思想上面转变过来。他是发送一连串的数据帧,这个数据

14、帧就是一连串的二进制代码,单片机通过区分高电平的持续时间来区别红外编码的。我们就以HC6800单片机上的红外接头为例来说明,当高电平的脉冲宽度为1.12ms的时候单片机认为它为0,当高电平的脉冲宽度为2.25的时候单片机认为它为1。单片机是通过判断脉冲的宽度来得到信息位为0还是为1的。根据各部分的功能。可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时均是低位在前。高位在后。分析可以得到引导码高电平为45ms,低电平为45ms。当接收到此码时表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种。地址码重发了一次。主要是加强遥控器

15、的可靠性如果两次地址码不相同则说明本帧数据有错应丢弃。不同的设备可以拥有不同的地址码因此。同种编码的遥控器只要设置地址码不同,也不会相互干扰。在同一个遥控器中所有按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系则本次遥控接收有误数据应丢弃。在同一个遥控器上所有按键的数据码均不相同。数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前)两者之和应为0FFH。2.3复位电路这种复位电路的工作原理是:单片机的复位电路在刚接通电

16、时,刚开始电容是没有电的,电容内的电阻很低,通电后,5V的电通过电阻给电容进行充电,电容两端的电会由0V慢慢的升到4V左右(此时间很短一般小于0.3秒),RC构成的微分电路在上电瞬间产生一个微分脉冲,其宽度大于两个机器周期,89C51将复位。正因为这样,复位脚的电由低电位升到高电位,引起了内部电路的复位工作,RST端电压慢慢下降,降到一定电压值以后,即为低电平,单片机开始正常工作(这是单片机的上电复位,也叫初始化复位);当按下复位键时,电容两端放电,电容又回到0V了,于是又进行了一次复位工作(这是手动复位原理)。 下图4为复位电路图4复位电路2.4LCD显示部分电路为了节约成本,采用1602来

17、作为显示器,用独立按键来控制不同的显示,能完成基本的显示功能。图5 LCD液晶显示电路2.5电源部分本电源设计了两个接口,方便不同接口的电源接入,并且在电源部分加上滤波电容,起过滤接入电源的杂波的作用,为了电路中得到+12V、-12V和+5V的直流工作电压,用变压器变压后再通过芯片和电容设计出所需要的电路。图6电源电路2.6外部时钟电路图7采用11.0592MHz的晶振和两个22pf的电容组成时钟电路部分图7外部时钟电路2.7显示接口电路 功能:驱动Led液晶显示器,扫描按钮。 LCD1602液晶显示和一个矩阵的按钮。按键时, 通过P2口将数字信号发送到LCD1602,LCD1602显示液晶点

18、阵设计,如字母、数字、符号,其外部电压5 v。扫描通过使用软件程序实现,当按键时,立即扫描发现,立即调用子程序,执行相应的功能。与单片机连接如图所示:图8 部分电路图2.8独立按键部分图9为用独立按键来控制不同的输出波形图9独立按键2.9波形转换电路功能:转换波形样本值编码模拟值,完成波形的输出。由一块DAC0832和LF356运放。DAC0832是两个输入数据寄存器的8位DAC。当前生产的DAC芯片分为两种,一种是芯片内部数据寄存器设置,不需要外加电路,就可以直接与微机接口连接。另一种类型的芯片没有数据寄存器、输出信号变化状态的数据输入行,所以你不能直接与微机接口连接,必须通过并口与微机接口

19、相连。DAC0832 有20条引线的双列直插式CMOS设备,里面有两个级别的数据寄存器,完成8位 D / A转换,且不需要额外的电路。DAC0832是电流输出类型,在示波器上显示波形,通常需要电压信号和电流信号,电压信号的转换可以使用运算放大器LF356实现。单片机发送DAC0832数字编码,生成不同的输出。先利用采样定理对各种波形进行抽样,然后把各种采样值进行编码,收到的数字量存入各个波形表,执行程序时通过查表的方法依次取出,D / A转换后输出波形可以计算出来。假如N个点构成波形的一个周期,DAC0832输出N个样本值,样本点能形成一个轨迹,即,一个周期。重复输出N点之后,成为第二个周期。

20、利用单片机的晶振控制输出周期的速度,也就是控制输出的波形的频率。从而控制输出波形和振幅和频率,如正弦波,取20个样值点。具体连接的电路图如图10所示:示:图10 D/A转换的电路连接图2.10串口通信模块图11中通过MAX232进行TTL电平和232电平转换,从而单片机和上位机之间通信提供通道。图11串口通信电路通信电路的目的就是让通信双发的电平匹配,单片机用的是TTL电平,上位机的串口用的是232电平。TTL电平的逻辑1的电压范围是+3.3V到+5V,逻辑0的电压范围是0到+3.3V;232电平的逻辑1的电压范围是-15V到-5V,逻辑0的电压范围是+5V到+15V。因此设计串口通信电路就是

21、让这两种电平统一。第三章 软件设计信号发生器的软件设计包括主程序、延时子程序、系统初始化程序、键盘中断子程序、定时器中断子程序。3.1 主程序#include<reg51.h>unsigned char i,sqar_num=128; /最大值100,默认值50unsigned char cho=0; /0:正弦波。1:方波。2:三角波。unsigned char num=0;unsigned char TIME0_H=0xff,TIME0_L=0xd9; /定时器0的初值设置;全局变量.对应正弦波sbit chg= P10; /三角波100Hz.sbit freq_u=P11;s

22、bit freq_d=P12;sbit duty_u=P13;sbit duty_d=P14;sbit cs =P37;bit flag=0;unsigned int FREQ=50;/初始化频率,50HZsbit rs=P35;sbit lcdcs=P30;unsigned char TempBuffer7;unsigned char value1="Frequency:"void delay(unsigned int ms)unsigned int i,j;for (j=0;j<ms;j+)for (i=0;i<120;i+);unsigned char c

23、ode sin_num= 0, 0,0,0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,4,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,12,12,13,14,15,15,16,17,18,18,19,20,21,22,23,24,25,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41,42,44,45,46,47,49,50,51,52,54,55,56,57,59,60,61,63,64,66,67,68,70,71,73,74,75,77,78,80,81,83,84,86,87,89,90,92,93,

24、95,96,98,99,101,102,104,106,107,109,110,112,113,115,116,118,120,121,123,124,126,128,129,131, 132,134,135, 137, 139,140,142,143,145,146,148, 149,151,153,154,156,157,159,160,162,163,165, 166,168,169,171,172,174,175,177, 178,180,181, 182,184,185,187,188,189,191,192,194,195,196,198,199, 200,201,203,204,

25、205,206,208,209,210,211,213,214,215,216,217,218, 219,220,221,223,224,225,226,227,228,229,230,230,231,232,233,234, 235,236,237,237,238,239,240,240,241,242,243,243,244,245,245,246, 246,247,247,248,248,249,249,250,250,251,251, 251,252,252,253,253, 253,253,254,254,254,254,254,255,255,255,255, 255,255,25

26、5,255,255 ;/调节部分-频率void freq_ud(void) unsigned int temp; if(freq_d=0) FREQ-; else if(freq_u=0) FREQ+; if(cho=1|cho=3) /三角波256次中断一周期,特殊处理下。否则他的频率是100(+-)n*2Hz. temp=0xffff-3906/FREQ; /方波,三角波默认为100hz,切换后频率也为50HZ 65336-106/(256*FREQ) TIME0_H=temp/256; TIME0_L=temp%256; else if(cho=0|cho=3)/正弦波 三角波默认周期5

27、0hz 65536-106/(512*FREQ) temp=0xffff-1953/FREQ; TIME0_H=temp/256; TIME0_L=temp%256; /调节部分-方波的占空比void duty_ud(void) /方波也采用512次中断构成一个周期。 if(duty_d=0&sqar_num>0) sqar_num-; else if(duty_u=0&sqar_num<255) sqar_num+;/波形发生函数void sint(void) if(!flag) cs=0;P2=sin_numnum+;cs=1;if(num=0)num=255;

28、flag=1; else if(flag) cs=0;P2=sin_numnum-;cs=1; if(num=255)num=0;flag=0; void square(void) if(i+<sqar_num) cs=0;P2=0XFF;cs=1;elsecs=0;P2=0X00;cs=1;/*void triangle(void) cs=0;P2=num+;cs=1; */void triangle(void) if(flag) cs=0;P2=num+;cs=1;if(num=0)num=255;flag=1; else if(flag) cs=0;P2=num-;cs=1; if

29、(num=255)num=1;flag=0; /1602显示开始void write_command(unsigned char command)rs=0;P0=command;lcdcs=1;lcdcs=0;void write_data(unsigned char data0)rs=1;P0=data0;lcdcs=1;lcdcs=0;void init_1602()delay(15);write_command(0x38);delay(5);write_command(0x0c);delay(5);write_command(0x06);delay(5); /1602显示结束/*频率值转

30、换为字符串*/void temp_to_str() TempBuffer0=FREQ/1000+'0' /千位 TempBuffer1=FREQ%1000/100+'0' /百位 TempBuffer2=FREQ%1000%100/10+'0'/十位 TempBuffer3=FREQ%1000%100%10+'0'/个位 TempBuffer4='H' TempBuffer5='Z' TempBuffer6='0'/*频率显示*/void show_frequency()unsign

31、ed char i; /init_1602();/初始化lcd write_command(0x8a);/液晶显示位置 temp_to_str(); /*for (i=0;i<sizeof(value1)-1;i+)write_data(value1i);delay(5);*/ for (i=0;i<sizeof(TempBuffer)-1;i+)write_data(TempBufferi);delay(5);void main() TMOD=0X01; TH0=0xff; TL0=0xd9; IT0=1; /设置中断触发方式,下降沿 EA=1; EX0=1; ET0=1; IP

32、=0X01; /键盘中断级别高init_1602();/初始化lcd write_command(0x80);/液晶显示位置 delay(5); for (i=0;i<sizeof(value1)-1;i+)write_data(value1i);delay(5); TR0=1; while(1) show_frequency();/按键中断处理程序。void it0() interrupt 0 if(chg=0) FREQ=50; if(+cho=3) cho=0;num=0; /num=0;所有数据从新开始,保证波形的完整性 else if(freq_u=0|freq_d=0) fr

33、eq_ud(); else if (cho=1&(duty_d=0|duty_u=0) duty_ud(); else ;/定时器中断处理程序。void intt0() interrupt 1/TH0=0x00;TL0=0x00;sinx();switch(cho) case 0:TH0=TIME0_H;TL0=TIME0_L;sint() ;break; /正弦波/每半周期256取样。case 1:TH0=TIME0_H;TL0=TIME0_L;square();break;/方波 /为了提高方波的最高频率,只有牺牲占空比的最小可调值。分100份 每次1%。case 2:TH0=TI

34、ME0_H;TL0=TIME0_L;triangle();break;/三角波default: ; 3.2 键盘中断子程序 键盘用外中断0实现。当有键按下时,产生低电平送入INT0口,形成中断请求信号,CUP转去执行键盘中断子程序,进行频率调节或占空比调节。 (1)频率调节 按下按键1或2时,进行频率的调节,占空比不变。1键按下时,频率增加100Hz,若2键按下时,频率增加10Hz。频率最大值为500Hz,当频率大于最大值时,重新赋值为50Hz。 (2)占空比调节 当按键3和4按下时,进行占空比调节,频率不变。3键按下时,占空比进行增加10%,4键按下时,占空比增加1%。占空比最大值为99%,

35、当占空比大于99%时,重新赋值为1%。 3.3系统初始化子程序 在此程序中,给所有变量赋初值:键盘扫描口、初始频率与占空比及定时、开中断、定时器0与定时器1的工作方式等。初始化时启动了定时器0和定时器1.其中初始频率为50Hz,占空比为50%。 第四章 系统仿真4.1仿真电路图通过Proteus软件和电路原理图绘制出如下仿真电路图,对程序和电路功能进行测试图13 proteus仿真电路图4.2输出波形图4.2.1、测量仪器及测试说明测量仪器:稳压电源、示波器、数字万用表。测量说明:正弦波、矩形波、三角波信号的输出,通过对独立键盘来实现其的不同波形的输出以及其频率的改变。4.2.2测试过程 当程

36、序下进去时经过初始化,液晶屏的上只显示“wave:”和“f:“,当开关三按一下是此时输出波形为正弦波,按两下时输出为方波,按三下时输出为三角波。另外两个开关可以调节频率,三种波形的频率可调范围不同,分别如下: 正弦波:1180HZ 方 波:13.3KHZ 三角波:1180HZ根据示波器的波形频率的显示计算出三种波形的频率计算公式如下:正弦波:f=(1000/(9+3*ys)方 波:f=(100000/(3*ys)三角波:f=(1000/(15+3*ys)其中ys为延时的变量。三种波形的仿真波形图如下:图14正弦波图15方波图16三角波4.2.3 测试结果    各项指标均达到要求。测试数据如下: 1.产生正弦波、方波、三角波基本实现2.三种波形的频率都可调,但不能步进的调节,其中方波的可调范围最广为13.3KHZ,其他两种波形的频率范围不大1180HZ3显示部分基本实现4.键盘功能实现第五章 结束语在单片机课程设计中,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论