方波,三角波锯齿波产生程序
方波-三角波-正弦波-锯齿波发生器
方波-三角波-正弦波-锯齿波发生器电子工程设计报告目录设计要求1.前言 (1)2方波、三角波、正弦波发生器方案 (2)2.1原理框图 (2)3.各组成部分的工作原理 (3)3.1方波发生电路的工作原理 (3)3.2方波--三角波转换电路的工作原理 (4)3.3三角波--正弦波转换电路的工作原理 (6)3.4方波—锯齿波转换电路的工作原理 (7)3.5总电路图 (8)方波—三角波—正弦波函数信号发生器摘要波形函数信号发生器广泛地应用于各场所。
函数信号发生器应用范围:通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波。
除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域,而我设计的正是多种波形发生器。
设计了多种波形发生器,该发生器通过将滞回电压比较器的输出信号通过RC电路反馈到输入端,即可组成矩形波信号发生器。
然后经过积分电路产生三角波,三角波通过低通滤波电路来实现正弦波的输出。
其优点是制作成本低,电路简单,使用方便,频率和幅值可调,具有实际的应用价值。
函数(波形)信号发生器。
能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫函数信号发生器在电路实验和设备检测中具有十分广泛的用途而因此电子专业的学生,对函数信号发生器的设计,仿真,制作已成为最基本的一种技能,也是一个很好的锻炼机会,是一种综合能力的锻炼,它涉及基本的电路原理知识,仿真软件的使用,以及电路的搭建,既考验基础知识的掌握,又锻练动手能力。
关键词:振荡电路;电压比较器;积分电路;低通滤波电路设计要求1.设计、组装、调试方波、三角波、正弦波发生器。
2.输出波形:方波、三角波、正弦波;锯齿波3.频率范围:在0.02-20KHz范围内且连续可调;1.前言在人们认识自然、改造自然的过程中,经常需要对各种各样的电子信号进行测量,因而如何根据被测量电子信号的不同特征和测量要求,灵活、快速的选用不同特征的信号源成了现代测量技术值得深入研究的课题。
单片机c语言程序设计---DA转换实验报告
单片机c语言程序设计---D/A转换实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: D/A转换实验一、实验目的和要求1.掌握数模转换的概念2.掌握D/A转换芯片DAC0832的功能及特点,掌握与单片机的接口3.掌握D/A转换芯片DAC0832的c语言编程实例二、实验内容和原理实验1.信号发生器功能:使用DAC0832用作信号发生器,编写产生锯齿波、三角波和方波的程序。
本次项目中,DAC0832采用单缓冲单极性的线选法接线方式,其选通地址为7FFFH。
(1)硬件设计使用P1口接3个独立的按键S01、S02、S03,当按下S01时输出锯齿波,按下S02时输出三角波,当按下S03时输出方波。
电路原理图如下仿真所需元器件(2)proteus仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
三、实验要求:1.完成信号发生器实验。
具体包括绘制仿真电路图、编写c源程序、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,总结观察的仿真结果。
完成思考题。
四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
五、实验结果与分析void main(){while(1){while( K01==0 ) //生成锯齿波{for(cDigital=0;cDigital<=250;cDigital++){TransformData(cDigital);//进行数模转换}}while( K02==0 ) //生成三角波{for(cDigital=0;cDigital<=250;cDigital++){TransformData(cDigital);//进行数模转换}for(cDigital=250;cDigital>=0;cDigital--){TransformData(cDigital);//进行数模转换}}while( K03==0 ) //生成方波{TransformData(0);//进行数模转换Delay(500);TransformData(250);//进行数模转换Delay(500);}}}六、讨论和心得。
输出三角波+锯齿波+方波+正弦波
一、目的与要求1.进一步掌握并行接口芯片8255A和微机接口的连接及其编程方法;2.进一步熟悉DAC0832数模转换器的特性和接口方法,掌握D/A 输出程序的设计和调试方法;3.掌握汇编语言程序设计方法;4.掌握接口芯片的应用,提高综合运用所学知识解决实际问题的基本方法;5.提高硬软件调试的方法。
二、实验容或题目(1)8255A相关部分实验原理与8255A相关部分如图11.4所示,PC口8位仅使用PC0,PC1两位接2个开关K1、K2,PB口8位接2个发光二极管(L1、L2),从PC口读入2位开关量送PB口显示。
拨动K1、K2,PB口上接的2个发光二极管L1、L2对应显示K1、K2的状态。
此外,随着PC0、PC1输入的四种开关状态(00、01、10、11)的改变,实时改变:1.2个发光二极管(L1、L2)的显示;2.8个LED数码管的显示(显示要求:0832――0x)x为0、1、2、3中的1个数;3.DAC0832的输出波形。
具体要求:00-输出方波;01-输出锯齿波;10-输出三角波;11-输出正弦波。
(2)DAC0832相关部分实验原理如图11.5所示,由于DAC0832有数据锁存器、选片、读、写控制信号线,故可与8088CPU 总线直接接口。
图中是只有一路模拟量输出,且为单极型电压输出。
DAC0832工作于单缓冲方式,它的ILE接+5V,CS#和XFER#相接后作为0832芯片的片选0832CS。
这样,对DAC0832执行一次写操作就把一个数据直接写入DAC寄存器、模拟量输出随之而变化。
(3)实验线路连接图11.4 图11.51.8255A芯片PC0、PC1插孔依次接K1、K2;2.8255A芯片PB0、PB1插孔依次接L1、L2;4.将0832片选信号0832CS插孔和译码输出070H~07FH插孔相连。
三、实验步骤与源程序1.按图11.4、11.5连好线路(共6根线);2.使用示波器,检测DAC0832的电压输出;3.使用DVCC86H调试软件,选择新建源文件或者在某个源文件基础上修改;4.完成源文件输入后,选择编译->编译连接传送;定位程序起始地址选择默认的1000H;5.编译错误,修改源程序;6.调试程序,拨动K1、K2,观察L1、L2显示、数码管显示、示波器波形;7.纪录各种波形的周期、幅值。
三角波_锯齿波_方波合成与分解MATLAB实现
3 连续周期信号的傅立叶级数分解与合成的 MATLAB 实现
3.1 方波
周期方波的傅里叶级数展开式:
( 3-1 ) MA TLAB 实现程序: clc; clear all; close all; n=input('n=') T0=0.01;A=1; t1=[0:0.0001:0.05]; z=square(2*pi*100*t); x=0; pi=3.1415926; w0=2*pi/T0; for i=1:n fw(i)=(2*i-1)*w0; a(i)=4*A/(pi*(2*i-1)); y(i,:)=a(i)*sin(fw(i)*t); fai(i)=0; x=x+y(i,:); figure(1) a=1:100 subplot(n,1,i); plot(t,y(i,:));xlabel(' 时间/s');ylabel(' 振幅') title([‘方波’,num2str(a(i)),' 次谐波']) end; figure(2); subplot(2,1,1);
n 0 , 1 , 2,
3 ,
即周期信号可分解为一系列不同频率的虚指数信号之和,式中 Fn 称为傅里 叶复系数,可由下式求得:
Fn 1 T2 f t e jnt dt T T 2
(2 8)
(2 5)
4
连续周期信号的傅立叶级数分析及其 MATLAB 实现
1 MATLAB..............................................................................................................................1
单片机产生各种波形及其程序图
,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe
9,0xea,0xec,0xee,0xef,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,0x e9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb 1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0 x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0 x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0 x02,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,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0 x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0 x80 }; void delayms(uint t) {
信号发生器 (正弦波,方波,三角波)51单片机 C语言代码
/**************************************//* 信号发生器(正弦波,方波,三角波)*//*************************************/#include<reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit cs=P2^0; //tlc5615片选端口sbit clk=P2^1; //tlc5615时钟线sbit din=P2^2; //tlc5615传输端口sbit key1=P1^0;sbit key2=P1^1; //按键的单片机接口uchar keydat;uchar flag; //波形发生终止信号的标志位一旦被置零立马停止发信号uchar flagsqu; //方波高低电平控制为(运用定时器1中断控制)uchar m,num;uchar dat=0xff;uchar code tosin[141]={ //正弦波的编码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,0x25,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,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7e,0x7f,0x80,0x7f,0x7e,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,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,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00};void delay(uchar z) //延时函数{uchar x,y;for(x=0;x<110;x++)for(y=z;y>0;y--);}void prepare() //tlc5615的初始化{cs=1;din=1;clk=0;cs=0; //cs的上升沿和下降沿必须在clk 为低时进?}/* 用中断来产生方波void Squtranslator(){TR1=1; //启动定时器1 控制高低电平的持续时间占空比do{do{_wave=0;}while((!flagsqu) && flag==1);//如果一旦终止信号的//产生可以立马退出循环flagsqu=0;do{_wave=1;}while((!flagsqu) && flag==1);flagsqu=0;}while(flag);flag=1;TR1=0;}*/void Squtranslator() //方波函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(200); //使高低电平持续一段时间if(dat1==0)dat1=0x7f; //完成了0和0x7f之间的替换elsedat1=0;}while(flag);}}void Tratranslator() //锯齿波的发生函数{uchar j;uchar dat1=0x7f;while(flag){do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1--;}while(flag && dat1); //一旦有终止信号就可以停止do{prepare();dat=dat1;for(j=0;j<12;j++){din=(bit)(dat>>7); //将数据的最高位赋给dinclk=1;dat=dat<<1; //一位位的传输clk=0;}cs=1; //cs的上升沿和下降沿必须在clk 为低时进行delay(2); //稍加延时dat1++;}while(flag && (!(dat1==0x7f)));}}void Sintranslator(uchar wave[],uchar num )//正弦波的转换函数{uchar i,j;uchar dat1;do{for(i=0;i<num;i++){prepare();dat1=wave[i]; //打开片选开始工作for(j=0;j<12;j++){din=(bit)(dat1>>7); //将数据的最高位赋给dinclk=1;dat1=dat1<<1; //一位位的传输clk=0;if(flag==0)break;}cs=1; //cs的上升沿和下降沿必须在clk为低时进行delay(1); //稍加延时if(flag==0)break;}}while(flag); //等待控制键的暂停}void keyscan() //切换功能按键返回键值函数{uchar i;for(i=0;i<4;i++){if(key1==0){delay(10);if(key1==0){keydat++;do{}while(!key1); //松手检测if(keydat==4)keydat=1;//加满回零处理}}}}void keycountrl() //切断输出控制函数{if(key2==0){delay(10);if(key2==0){flag=0;do{}while(!key2); //松手检测}}}void main (){uchar temp;TMOD=0x01; //确定定时器的工作方式TH0=(65536-50000)/256; //给定时器0赋予初值TL0=(65536-50000)%256;EA=1; //开总中断ET0=1; //开启定时器0中断TR0=1;while(1){do{switch(keydat){case 1:flag=1;do{Sintranslator(tosin,141);}while(flag);break;case 2: flag=1;do{Tratranslator();}while(flag);break;case 3: flag=1;do{Squtranslator();}while(flag);break;default:break;}}while(flag);temp=keydat; //装载键值while(keydat==temp); //在这里等待键值的改变}}void Time0() interrupt 1{TH0=(65536-50000)/256; //定时器0用来扫描按键不断地扫描dTL0=(65536-50000)%256;num++;if(num==4){keyscan();keycountrl();num=0;}}。
方波三角波正弦波锯齿波发生器
方波三角波正弦波锯齿波发生器This model paper was revised by LINDA on December 15, 2012.电子工程设计报告目录设计要求1.前言 ................................................................... 2方波、三角波、正弦波发生器方案...........................................原理框图 ............................................................ 3.各组成部分的工作原理 ...................................................方波发生电路的工作原理 .............................................方波--三角波转换电路的工作原理 .....................................三角波--正弦波转换电路的工作原理 ....................................方波—锯齿波转换电路的工作原理 .....................................总电路图 ............................................................方波—三角波—正弦波函数信号发生器摘要波形函数信号发生器广泛地应用于各场所。
函数信号发生器应用范围:通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波。
除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域,而我设计的正是多种波形发生器。
设计了多种波形发生器,该发生器通过将滞回电压比较器的输出信号通过RC电路反馈到输入端,即可组成矩形波信号发生器。
51单片机和dac0832输出方波、矩形波和正弦波由液晶1602显示的c语言程序
显示频率,幅度可调,可产生四种波形,正弦波,方波,锯齿波,三角波,希望你能喜欢,给你发了一张效果图,喜欢的话别忘了采纳我的回答啊#include<>#define uchar unsigned char#define uint unsigned int#define DAdata P0 //DA数据端口sbit DA_S1= P2^0; // 控制DAC0832的8位输入寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存sbit DA_S2= P2^1; // 控制DAC0832的8位DAC寄存器,仅当都为0时,可以输出数据(处于直通状态),否则,输出将被锁存sbit key= P3^2;uchar wavecount; //'抽点'计数uchar THtemp,TLtemp;//传递频率的中间变量uchar judge=1; //在方波输出函数中用于简单判别作用uchar waveform; //当其为0、1、2时,分别代表三种波uchar code freq_unit[3]={10,50,200}; //三种波的频率单位uchar idata wavefreq[3]={1,1,1}; //给每种波定义一个数组单元,用于存放单位频率的个数uchar code lcd_hang1[]={"Sine Wave " "Triangle Wave " "Square Wave " "Select Wave: " "press key! "};uchar idata lcd_hang2[16]={"f= Hz "};uchar code waveTH[]={0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe};uchar code waveTL[]={0x06,0x8a,0x10,0x4e,0x78,0x93,0xa8,0xb3,0xbe,0xc6, //正弦波频率调整中间值0xac,0xde,0x48,0x7a,0x99,0xaf,0xbb,0xc8,0xd0,0xde, //三角波频率调整中间值0x88,0x50,0x90,0x32,0x34,0xbe,0x4a,0xa3,0xe5,0x2c};/******************************************************************** *****************************/uchar code triangle_tab[]={ //每隔数字8,采取一次0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68 ,0x70,0x78,0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8, 0xf0,0xf8,0xff,0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0 x88,0x80,0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10 ,0x08,0x00};uchar code sine_tab[256]={//输出电压从0到最大值(正弦波1/4部分)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,0x e1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0 xfe,0xff,0xff,0xff,0xff,0xff,0xff,//输出电压从最大值到0(正弦波1/4部分)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,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 , 0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,//输出电压从0到最小值(正弦波1/4部分)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 ,0x1e,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,//输出电压从最小值到0(正弦波1/4部分)0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x0 7,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,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(uchar z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void triangle_out() //三角波输出{DAdata=triangle_tab[wavecount++];if(wavecount>64) wavecount=0;DA_S1=0; //打开8位输入寄存器DA_S1=1; //关闭8位输入寄存器void sine_out() //正弦波输出{DAdata=sine_tab[wavecount++];DA_S1=0; //打开8位输入寄存器DA_S1=1; //关闭8位输入寄存器}void square_out() //方波输出{judge=~judge;if(judge==1) DAdata=0xff;else DAdata=0x00;DA_S1=0; //打开8位输入寄存器DA_S1=1; //关闭8位输入寄存器}/************1602液晶的相关函数*************/#define lcd_ports P1sbit rs=P2^2;sbit rw=P2^3;sbit lcden=P2^4;void write_com(uchar com){rs=0; //置零,表示写指令lcden=0;lcd_ports=com;delay(5);lcden=1;delay(5);lcden=0;}void write_date(uchar date){rs=1; //置1,表示写数据(在指令所指的地方写数据)lcden=0;lcd_ports=date;delay(5);lcden=1;delay(5);lcden=0;void disp_lcd(uchar addr,uchar *temp1){uchar num;write_com(addr);delay(1); //延时一会儿for(num=0;num<16;num++){write_date(temp1[num]);//或者这样写write_date(*(temp1+num));delay(1);}}void init_lcd(){//uchar num;lcden=0; //可有可无rw=0; //初始化一定要设置为零,表示写数据write_com(0x38); //使液晶显示点阵,为下面做准备write_com(0x0c); //初始设置write_com(0x06); //初始设置write_com(0x01); //清零write_com(0x80); //使指针指向第一行第一格disp_lcd(0x80,&lcd_hang1[3*16]); //在第一行显示disp_lcd(0xc0,&lcd_hang1[4*16]); //在第二行显示}/********************1602液晶函数声明结束*********************/ void main(){uchar i=0;DA_S2=0; //使DAC寄存器处于直通状态DAdata=0;DA_S1=1; //关闭8位输入寄存器init_lcd();waveform=0;TMOD=0x01; //设置定时器0为16位工作方式IT0=1; //设置外部中断0为下降沿触发ET0=1; //开定时器中断EX0=1;EA=1;while(1){//DAout(0xff); //可输出TTL波形//DAout(0x80);//T_temp=32;}}void timer0() interrupt 1{TH0=THtemp;TL0=TLtemp;if(waveform==0) sine_out();else if(waveform==1) triangle_out();else if(waveform==2) square_out();}void key_int0() interrupt 0{uchar keytemp;uint total_freq; //总频率EA=0; TR0=0; //关总中断与定时器delay(5); //延时够吗if(key==0) //确实有按键按下而引发中断{keytemp=P3&0xf0; //获取P3口高四位的值switch(keytemp){case 0xe0: //选择波形waveform++;if(waveform>2) waveform=0;break;case 0xd0: //频率按规定单位依次增加wavefreq[waveform]++;if(wavefreq[waveform]>10) wavefreq[waveform]=1; // /*这边要用“>10”,因为它比“=11”可靠break;case 0xb0: //频率按规定单位依次衰减wavefreq[waveform]--;if(wavefreq[waveform]<1) wavefreq[waveform]=10; //这边要用“<1”,因为它比“=0”可靠性更高break;case 0x70: //TTL输出DA_S2=1; //使DAC寄存器关闭break;}THtemp=waveTH[waveform*10+(wavefreq[waveform]-1)]; //方括号中选取第几个数后,并把该值赋给T_tempTLtemp=waveTL[waveform*10+(wavefreq[waveform]-1)];total_freq= wavefreq[waveform] * freq_unit[waveform]; //求输出频率(个数*单位)lcd_hang2[5]=total_freq%10+0x30; //在液晶中显示个位,(0x30 在液晶显示中表示数字0)total_freq/=10; lcd_hang2[4]=total_freq%10+0x30; //在液晶中显示时十位total_freq/=10; lcd_hang2[3]=total_freq%10+0x30; //在液晶中显示时百位total_freq/=10; lcd_hang2[2]=total_freq%10+0x30; //在液晶中显示时千位disp_lcd(0x80,&lcd_hang1[waveform*16]); //在第一行显示disp_lcd(0xc0,lcd_hang2); //在第二行显示}wavecount=0; //'抽点'计数清零while(!key);EA=1; TR0=1; //开启总中断与定时器}。
实验五 三角波-方波(锯齿波-矩形波)发生器实验报告
实验五三角波-方波(锯齿波-矩形波)发生器实验报告实验目的:学习、理解、掌握由运算放大器构成的施密特比较器、积分器的原理,掌握锯齿波-矩形波(三角波-方波)发生器的构成方式,波形参数与电路元件值的关系,通过对理论计算、仿真、测试的数据对比分析获得对电路原理及实践能力的提升。
实验设备及器件:笔记本电脑(软件环境:Multisim13.0、WaveForms2015)AD2口袋仪器电容:0.1μF电阻:200Ω、10kΩ*4、30kΩ*3二极管:发光二极管*2(红色或绿色)、普通二极管*2运放:μA741*2面包板、连接线等实验内容:用两片μA741构成的三角波-方波发生器(施密特触发器+积分电路)见图1。
图1 三角波-方波电路1.测试(使用红色发光二极管):(1)按图1搭建电路,使用AD2测试vo1和vo的波形(屏幕拷贝波形并贴于下方,图2),观察测试的波形,给出方波及三角波的高电平、低电平、方波的高电平持续时间、方波的低电平的持续时间、占空比、振荡周期,并填入表1。
图2 三角波-方波电路的测试波形(2)令图1中的R4=10 kΩ,其他器件参数不变,构成锯齿波-矩形波发生器,使用AD2测试vo1和vo2的波形(屏幕拷贝波形并贴于下方,图3),通过波形给出锯齿波及矩形波的高电平、低电平、矩形波的高电平持续时间、矩形波的低电平的持续时间、占空比、振荡周期,并填入表2。
图3 锯齿波-矩形波电路的测试波形2.计算(1)利用测试(1)所得的方波高电平和低电平值(输出vo1,也就是发光二极管在该工作条件下的正向压降,计算周期时可使用正负峰值的平均值计算),并根据电路器件参数,理论计算三角波输出端(vo)的高电平和低电平值、方波高电平持续时间、方波低电平的持续时间、占空比、振荡周期,并填入表1。
(计算时需要考虑D3、D4二极管正向压降的影响,鉴于选用二极管的特性及实验中流过D 3、D4二极管的电流只有100μA左右,取正向压降为0.5V)。
波形发生器课程设计
教师批阅波形发生器设计摘要波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
函数信号发生器是一种能够产生多种波形,函数信号发生器是一种能够产生多种波形,如三角波、如三角波、锯齿波、矩形波(含方波)、正弦波的电路。
函数信号发生器在电路实验和设备检测中具有十分广泛的用途。
通过对函数波形发生器的原理以及构成分析,可设计一个能变换出三角波、正弦波、方波的函数波形发生器。
目前使用的信号发生器大部分是函数信号发生器,且特殊波形发生器的价格昂贵。
所以本设计使用的是DAC0832芯片构成的发生器,可产生三角波、方波、正弦波等多种特殊波形和任意波形,波形的频率可用程序控制改变。
在单片机上加外围器件距阵式键盘,通过键盘控制波形频率的增减以及波形的选择,并用了LCD 显示频率大小。
在单片机的输出端口接DAC0832进行D/A 转换,再通过运放进行波形调整,最后输出波形接在示波器上显示。
本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。
波器上显示。
本设计具有线路简单、结构紧凑、价格低廉、性能优越等优点。
本设计制作的波形发生器,可以输出多种标准波形,如方波、正弦波、三角波、锯齿波等,还可以输出任意波形,如用鼠标创建的一个周期的非规则波形或用函数描述的波形等,输出的波形的频率、幅度均可调,且能脱机输出。
设计的人机界面不但清晰美观,而且操作方便。
人机界面不但清晰美观,而且操作方便。
关键词:波形发生器;:波形发生器;DAC0832DAC0832DAC0832;;单片机;波形调整教师批阅目录一、设计目的及意义 ............................................................................. - 3 -1.1设计目的 ........................................................................................ - 3 -1.2设计意义 ........................................................................................ - 3 -二、方案论证 ......................................................................................... - 4 -2.1设计要求 ........................................................................................ - 4 -2.2方案论证 ........................................................................................ - 4 -三、硬件电路设计 ................................................................................. - 5 -3.1设计思路、元件选型设计思路、元件选型 .................................................................... - 5 -3.2原理图 ............................................................................................ - 5 -3.3主要芯片介绍主要芯片介绍 ................................................................................ - 6 -3.4硬件连线图 .................................................................................. - 10 -四、软件设计 ....................................................................................... - 10 -4.1锯齿波的产生过程锯齿波的产生过程 ...................................................................... - 11 -4.2三角波产生过程三角波产生过程 .......................................................................... - 13 -4.3 方波的产生过程 ......................................................................... - 14 -4.4 正弦波的产生过程 ..................................................................... - 16 -4.5通过开关实现波形切换和调频、调幅通过开关实现波形切换和调频、调幅 ...................................... - 18 -五、调试与仿真 ................................................................................... - 20 -5.1仿真结果 ...................................................................................... - 21 -六、总结 ............................................................................................... - 22 -七、参考文献: ................................................................................... - 23 -教师批阅一、设计目的及意义1.1设计目的(1)利用所学微机的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。
产生三角波c语言程序
产生三角波c语言程序三角波是一种周期性的波形,其波形特点是在一个周期内,波形从低到高再到低的过程中,波峰和波谷的变化是平滑的,呈现出类似于三角形的形状。
在C语言中,我们可以通过编写程序来产生三角波。
首先,我们需要了解三角波的数学表达式。
三角波的数学表达式可以表示为:y(t) = A * asin(2πft + φ)其中,A表示振幅,f表示频率,t表示时间,φ表示相位差。
在C语言中,我们可以使用math.h头文件中的asin函数来计算正弦值。
下面是一个简单的C语言程序,用于产生三角波:```c#include <stdio.h>#include <math.h>#define PI 3.14159265int main() {double amplitude = 1.0; // 振幅double frequency = 1.0; // 频率double phase = 0.0; // 相位差double time = 0.0; // 时间double value = 0.0; // 三角波值while (1) {value = amplitude * asin(2 * PI * frequency * time + phase);printf("%f\n", value);time += 0.01; // 时间步长,可以根据需要调整if (time >= 1.0 / frequency) {time = 0.0;}}return 0;}```在上面的程序中,我们首先定义了振幅、频率、相位差、时间和三角波值等变量。
然后,使用一个无限循环来计算三角波的值,并将其打印出来。
在每次循环中,我们使用asin函数来计算三角波的值,然后将其打印出来。
接着,我们通过增加时间的值来模拟时间的流逝。
当时间超过一个周期时,我们将时间重置为0,以便继续产生三角波。
需要注意的是,程序中的时间步长可以根据需要进行调整。
三角波,方波,锯齿波设计
单片机函数信号发生器课程设计目录1 引言 (2)2 设计任务和要求 (2)2.1设计目的 (2)2.2设计意义 (2)2.3方案设计与论证 (2)3 总原理图及主要模块的流程图 (4)3.1总原理图及元器件清单 (4)3.2主要流程图 (4)4 性能测试与分析 (4)5 结论与心得 (7)致谢 (7)参考文献 (7)1引言波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。
本次课程设计使用的AT89C51 单片机构成的发生器可产生锯齿波、三角波、梯形波,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑、性能优越等优点。
此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。
关键词:单片机,信号发生器。
2设计任务和要求2.1设计目的3)学习基本理论在实践中综合运用的初步经验,掌握模拟电路设计的基本方法、设计步骤,培养综合设计与调试能力。
4)掌握锯齿波——三角波——梯形波函数发生器的原理及设计方法。
5)学会函数信号发生器的设计方法和性能指标测试方法。
6)培养实践技能,提高分析和解决实际问题的能力。
2.2设计意义函数发生器作为一个常用的信号源,是现代测试领域内应用最为广泛的通用仪器之一。
在研制、生产、测试和维修各种电子元件、部件以及整机设备时,都学要有信号源。
由它产生不同频率不同波形的电压、电流信号并加到被测器件或设备上,用其他仪器观察。
测量被测仪器的输出响应,以分析确定它们的性能参数。
信号发生器是电子测量领域中最基本、应用最为广泛的一类电子仪器。
它可以产生多种波形信号,如锯齿波,三角波,梯形波等,因而广泛用于通信、雷达、导航、宇航等领域。
2.3方案设计与论证方案的比较:方案一:采用单片机函数发生器(如8038),8038可同时产生正弦波、方波等。
而且方法简单易行,用D/A转换器的输出来改变调制电压,可以实现数控调整频率,但产生信号的频率稳定度不高。
方波-三角波-正弦波-锯齿波发生器
电子工程设计报告目录设计要求1.前言 (1)2方波、三角波、正弦波发生器方案 (2)2.1原理框图 (2)3.各组成部分的工作原理 (3)3.1方波发生电路的工作原理 (3)3.2方波--三角波转换电路的工作原理 (4)3.3三角波--正弦波转换电路的工作原理 (6)3.4方波—锯齿波转换电路的工作原理 (7)3.5总电路图 (8)方波—三角波—正弦波函数信号发生器摘要波形函数信号发生器广泛地应用于各场所。
函数信号发生器应用范围:通信、广播、电视系统中,都需要射频〔高频〕发射,这里的射频波就是载波。
除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域,而我设计的正是多种波形发生器。
设计了多种波形发生器,该发生器通过将滞回电压比较器的输出信号通过RC电路反馈到输入端,即可组成矩形波信号发生器。
然后经过积分电路产生三角波,三角波通过低通滤波电路来实现正弦波的输出。
其优点是制作成本低,电路简单,使用方便,频率和幅值可调,具有实际的应用价值。
函数〔波形〕信号发生器。
能产生某些特定的周期性时间函数波形〔正弦波、方波、三角波、锯齿波和脉冲波等〕信号,频率范围可从几个微赫到几十兆赫函数信号发生器在电路实验和设备检测中具有十分广泛的用途而因此电子专业的学生,对函数信号发生器的设计,仿真,制作已成为最基本的一种技能,也是一个很好的锻炼时机,是一种综合能力的锻炼,它涉及基本的电路原理知识,仿真软件的使用,以及电路的搭建,既考验基础知识的掌握,又锻练动手能力。
关键词:振荡电路;电压比较器;积分电路;低通滤波电路设计要求1.设计、组装、调试方波、三角波、正弦波发生器。
2.输出波形:方波、三角波、正弦波;锯齿波3.频率范围:在0.02-20KHz范围内且连续可调;1.前言在人们认识自然、改造自然的过程中,经常需要对各种各样的电子信号进行测量,因而如何根据被测量电子信号的不同特征和测量要求,灵活、快速的选用不同特征的信号源成了现代测量技术值得深入研究的课题。
方波三角波正弦波锯齿波
方波三角波正弦波_锯齿波发生器This manuscript was revised by the office on December 10, 2020.电子工程设计报告目录方波—三角波—正弦波函数信号发生器摘要波形函数信号发生器广泛地应用于各场所。
函数信号发生器应用范围:通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波。
除供通信、仪表和自动控制系统测试用外,还广泛用于其他非电测量领域,而我设计的正是多种波形发生器。
设计了多种波形发生器,该发生器通过将滞回电压比较器的输出信号通过RC电路反馈到输入端,即可组成矩形波信号发生器。
然后经过积分电路产生三角波,三角波通过低通滤波电路来实现正弦波的输出。
其优点是制作成本低,电路简单,使用方便,频率和幅值可调,具有实际的应用价值。
函数(波形)信号发生器。
能产生某些特定的周期性时间函数波形(正弦波、方波、三角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫函数信号发生器在电路实验和设备检测中具有十分广泛的用途而因此电子专业的学生,对函数信号发生器的设计,仿真,制作已成为最基本的一种技能,也是一个很好的锻炼机会,是一种综合能力的锻炼,它涉及基本的电路原理知识,仿真软件的使用,以及电路的搭建,既考验基础知识的掌握,又锻练动手能力。
关键词:振荡电路;电压比较器;积分电路;低通滤波电路设计要求1.设计、组装、调试方波、三角波、正弦波发生器。
2.输出波形:方波、三角波、正弦波;锯齿波3.频率范围:在-20KHz范围内且连续可调;1.前言在人们认识自然、改造自然的过程中,经常需要对各种各样的电子信号进行测量,因而如何根据被测量电子信号的不同特征和测量要求,灵活、快速的选用不同特征的信号源成了现代测量技术值得深入研究的课题。
信号源主要给被测电路提供所需要的已知信号(各种波形),然后用其它仪表测量感兴趣的参数。
可见信号源在各种实验应用和实验测试处理中,它不是测量仪器,而是根据使用者的要求,作为激励源,仿真各种测试信号,提供给被测电路,以满足测量或各种实际需要。
信号合成与分解-三角波、锯齿波程序
clc;clear all;close all;n=7;T0=2;A=2;NofT0=2;%周期信号的时域描述tn_i=1;for tn=0:0.01:NofT0*T0if(rem (tn,T0)<=T0/4)y_t(tn_i)=4*A*rem(tn,T0)/T0;elseif (T0/4<=rem(tn,T0))&(rem(tn,T0)<=3*T0/4) y_t(tn_i)=-4*A*(rem(tn,T0)-T0/2)/T0;elseif(3*T0/4<= rem (tn,T0)<=T0)y_t(tn_i)=4*A*( rem (tn,T0)-T0)/T0;end;t_t(tn_i)=tn;tn_i=tn_i+1;end;%周期信号的频域描述t=0:0.01:NofT0*T0;x=0;pi=3.1415926;w0=2*pi/T0;for i=1:nfw(i)=(2*i-1)*w0;a(i)=(-1)^(i-1)*(8*A/(pi^2*(2*i-1)^2));fai(i)=0;y(i,:)=a(i)*sin(fw(i)*t);x=x+y(i,:);end;subplot(2,2,1);plot(t_t,[y_t;x]);title('三角波、三角波合成图')subplot(2,2,2);plot(t,[x; y]);title('0-n次谐波及合成图')subplot(2,2,3);stem(fw,a);title('三角波幅频谱图')subplot(2,2,4);stem(fw,fai);title('三角波相频谱图')clc;clear all;close all;n=7;T0=2;A=2;NofT0=2;%周期信号的时域描述tn_i=1;for tn=0:0.01:NofT0*T0y_t(tn_i)=A* rem (tn,T0)/T0;t_t(tn_i)=tn;tn_i=tn_i+1;end;%周期信号的频域描述t=0:0.01:NofT0*T0;x=A/2;pi=3.1415926;w0=2*pi/T0;for i=1:nfw(i)=i*w0;a(i)=-A/(pi*i);fai(i)=0;y(i,:)=a(i)*sin(fw(i)*t);x=x+y(i,:);end;subplot(2,2,1);plot(t_t,[y_t;x]);title('锯齿波、锯齿波合成图') subplot(2,2,2);plot(t,[x; y]);title('0-n次谐波及合成图') subplot(2,2,3);stem(fw,a);title('锯齿波幅频谱图')subplot(2,2,4);stem(fw,fai);title('锯齿波相频谱图')。
单片机产生方波、锯齿波、三角波程序
单片机产生方波、锯齿波、三角波程序单片机产生方波、锯齿波、三角波程序单片机产生方波、锯齿波、三角波程序#include<reg51.h>#define uchar unsigned char#define uint unsigned intunsigned char x=0,m=0,y=128;sbit WR_DA=P2^1;sbit CS_DA=P2^0;//DA与单片机的接口sbit S0=P3^0; //波形选择,每次按下将产生不同的波形sbit S1=P3^1; //频率减sbit S2=P3^2; //频率加sbit S3=P3^3; //调节方波的占空比uchar code SinTab[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x 9c,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,0xe 1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,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,0x ef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xb c,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0 x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x 51,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0 x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x 16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0 x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0 x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x 15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0 x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x 4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0 x72,0x76,0x79,0x7c,0x80 };void delayms(uint t){uint i;while(t--){for (i=0;i<125;i++);//对于11.0592M时钟,约延时1ms}}void delay(uint t){uint i;for (i=t;i>0;i--);}void time0_init(){TMOD|=0x01; //定时器设置 16位TH0=-50000/256;TL0=-50000%256;//初始化值ET0=1;TR0=1;EA=1;}void time0_int(void) interrupt 1 {TR0=0;//关闭定时器TH0=-50000/256;TL0=-50000%256;//重装初值if(S0==0){delayms(10);//按键消抖if(S0==0) m++;while(!S0);//松手检测}if(S1==0){delayms(10);if(S1==0) x=x+1;while(!S1);//松手检测}if(S2==0){delayms(10);if(S2==0) x=x-1;while(!S2);//松手检测}if(S3==0){delayms(10);if(S3==0) y=y+5; while(!S3);//松手检测}if(y>254) y=0;if(m>5) m=0;if(x>50) x=0;TR0=1;//启动定时器}void fangbo() //方波{uchar i,j;j=255-y;CS_DA=0;WR_DA=0;for(i=y;i>0;i--){P0=0;delay(x);}while(j--){P0=255;delay(x);}}void juchi() //锯齿波{CS_DA=0;WR_DA=0;for(i=255;i>0;i--){P0=i;delay(x);}}void sanjiao() //三角波{uchar i;CS_DA=0;WR_DA=0;for(i=0;i<255;i++){P0=i;delay(x);}while(i--){P0=i;delay(x);}}void tixing() //梯形波{uchar i=255,j,k;CS_DA=0;WR_DA=0;{P0=i;delay(x);}for(j=0;j<100;j++) {P0=0;delay(x);}for(k=0;k<255;k++) {P0=k;delay(x);}}void sin() //正弦波{uchar a;CS_DA=0;WR_DA=0;for(a=0;a<255;a++) {P0=SinTab[a]; delay(x);}}main(){time0_init(); while(1){switch(m){case 0:fangbo(); //方波break;case 1:juchi(); //锯齿波break;case 2:sanjiao(); //三角波break;case 3:sin(); //正弦波break;case 4:tixing(); //梯形波break; default: fangbo(); }}}。
信号合成与分解-三角波、锯齿波程序
clc;clear all;close all;n=7;T0=2;A=2;NofT0=2;%周期信号的时域描述tn_i=1;for tn=0:0.01:NofT0*T0if(rem (tn,T0)<=T0/4)y_t(tn_i)=4*A*rem(tn,T0)/T0;elseif (T0/4<=rem(tn,T0))&(rem(tn,T0)<=3*T0/4) y_t(tn_i)=-4*A*(rem(tn,T0)-T0/2)/T0;elseif(3*T0/4<= rem (tn,T0)<=T0)y_t(tn_i)=4*A*( rem (tn,T0)-T0)/T0;end;t_t(tn_i)=tn;tn_i=tn_i+1;end;%周期信号的频域描述t=0:0.01:NofT0*T0;x=0;pi=3.1415926;w0=2*pi/T0;for i=1:nfw(i)=(2*i-1)*w0;a(i)=(-1)^(i-1)*(8*A/(pi^2*(2*i-1)^2));fai(i)=0;y(i,:)=a(i)*sin(fw(i)*t);x=x+y(i,:);end;subplot(2,2,1);plot(t_t,[y_t;x]);title('三角波、三角波合成图')subplot(2,2,2);plot(t,[x; y]);title('0-n次谐波及合成图')subplot(2,2,3);stem(fw,a);title('三角波幅频谱图')subplot(2,2,4);stem(fw,fai);title('三角波相频谱图')clc;clear all;close all;n=7;T0=2;A=2;NofT0=2;%周期信号的时域描述tn_i=1;for tn=0:0.01:NofT0*T0y_t(tn_i)=A* rem (tn,T0)/T0;t_t(tn_i)=tn;tn_i=tn_i+1;end;%周期信号的频域描述t=0:0.01:NofT0*T0;x=A/2;pi=3.1415926;w0=2*pi/T0;for i=1:nfw(i)=i*w0;a(i)=-A/(pi*i);fai(i)=0;y(i,:)=a(i)*sin(fw(i)*t);x=x+y(i,:);end;subplot(2,2,1);plot(t_t,[y_t;x]);title('锯齿波、锯齿波合成图') subplot(2,2,2);plot(t,[x; y]);title('0-n次谐波及合成图') subplot(2,2,3);stem(fw,a);title('锯齿波幅频谱图')subplot(2,2,4);stem(fw,fai);title('锯齿波相频谱图')。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fangbo isport(clk,reset:in std_logic;q:out std_logic_vector(7 downto 0)); end;architecture behave of fangbo issignal a:std_logic;beginprocess(clk,reset)variable tmp:std_logic_vector(7 downto 0); begin if reset='0' then a<='0';elsif clk'event and clk='1' thenif tmp="11111111" thentmp:="00000000";elsetmp:=tmp+1;end if;if tmp<="10000000" thena<='1';else a<='0';end if;end if;end process;process(clk,a)beginif clk'event and clk='1' thenif a='1' thenq<="11111111";else q<="00000000";end if;end if;end process;end;三脚脖library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sanjiaobo isport(reset:in std_logic;clk:in std_logic;q:out std_logic_vector(7 downto 0));architecture behave of sanjiaobo isbeginprocess(clk,reset)variable tmp:std_logic_vector(7 downto 0);variable a:std_logic;beginif reset='0' then q<="00000000";elsif clk'event and clk='1' thenif a='0' thenif tmp="11111110" thentmp:="11111111";a:='1';else tmp:=tmp+1;end if;elseif tmp="00000001" then tmp:="00000000";a:='0';else tmp:=tmp-1;end if;end if;end if;q<=tmp;end process;end;正选library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Zhengxuanbo isport(clk,reset:in std_logic;d:out integer range 0 to 255);end;architecture behave of Zhengxuanbo isbeginprocess(clk,reset)variable tmp:integer range 0 to 63;beginif reset='0' thend<=0;elsif clk'event and clk='1' thenif tmp=63 thentmp:=0;elsetmp:=tmp+1;end if;case tmp iswhen 00=>d<=255; when 01=>d<=254; when02=>d<=252;when 03=>d<=249; when 04=>d<=245; when05=>d<=239;when 06=>d<=233; when 07=>d<=225; when08=>d<=217;when 09=>d<=207; when 10=>d<=197; when 11=>d<=186;when 12=>d<=174; when 13=>d<=162; when14=>d<=150;when 15=>d<=137; when 16=>d<=124; when17=>d<=112;when 18=>d<=99; when 19=>d<=87; when20=>d<=75;when 21=>d<=64; when 22=>d<=53; when23=>d<=43;when 24=>d<=34; when 25=>d<=26; when26=>d<=19;when 27=>d<=13; when 28=>d<=8; when29=>d<=4;when 30=>d<=1; when 31=>d<=0; when32=>d<=0;when 33=>d<=1; when 34=>d<=4; when35=>d<=8;when 36=>d<=13; when 37=>d<=19; when38=>d<=26;when 39=>d<=34; when 40=>d<=43; when41=>d<=53;when 42=>d<=64; when 43=>d<=75; when 44=>d<=87;when 45=>d<=99; when 46=>d<=112; when47=>d<=124;when 48=>d<=137; when 49=>d<=150; when50=>d<=162;when 51=>d<=174; when 52=>d<=186; when53=>d<=197;when 54=>d<=207; when 55=>d<=217; when56=>d<=225;when 57=>d<=233; when 58=>d<=239; when59=>d<=245;when 60=>d<=249; when 61=>d<=252; when62=>d<=254;when 63=>d<=255; when others=>null;end case;end if;end process;end;选择其LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Xuanzeqi ISPORT ( sel: in std_logic_vector(1 downto 0); d1,d2,d3,d4:in std_logic_vector(7 downto 0); q:out std_logic_vector(7 downto 0)); END;ARCHITECTURE behave OF Xuanzeqi is BEGINPROCESS(sel)BEGINCASE sel ISWHEN "00"=>q<=d1; --三角波WHEN "01"=>q<=d2; --方波WHEN "10"=>q<=d3; --正弦波WHEN "11"=>q<=d4;WHEN OTHERS=>null;END CASE;END PROCESS;END;分频library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport(clk:in std_logic;d:in std_logic_vector(7 downto 0);fout:out std_logic);end;architecture one of fenpin issignal full:std_logic;beginp_reg:process(clk)variable cnt8:std_logic_vector(7 downto 0); beginif clk'event and clk='1' thenif cnt8="11111111" thencnt8:=d; full<='1';else cnt8:=cnt8+1; full<='0';end if;end if;end process p_reg;p_div:process(full)variable cnt2:std_logic;beginif full'event and full='1' thencnt2:=not cnt2;if cnt2='1' then fout<='1';else fout<='0';end if;end if;end process p_div;end;00000library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity sintra isport(clk,reset:in std_logic;k:in integer range 15 downto 0;d:out integer range 255 downto 0);end sintra;architecture dacc of sintra issignal q: integer range 63 downto 0;beginprocess(clk)beginif (clk'event and clk='1') thenq<=q+k;end if;end process;process(q)begincase q iswhen 00=>d<=255;when 01=>d<=247;when 02=>d<=239;when 03=>d<=231;when 04=>d<=223;when 05=>d<=215;when 06=>d<=207;when 08=>d<=191; when 09=>d<=183; when 10=>d<=175; when 11=>d<=167; when 12=>d<=159; when 13=>d<=151; when 14=>d<=143; when 15=>d<=135; when 16=>d<=128; when 17=>d<=115; when 18=>d<=103; when 19=>d<=90; when 20=>d<=79; when 21=>d<=67; when 22=>d<=57; when 23=>d<=47; when 24=>d<=37; when 25=>d<=29; when 26=>d<=21; when 27=>d<=15; when 28=>d<=10; when 29=>d<=5; when 30=>d<=2; when 31=>d<=1; when 32=>d<=0; when 33=>d<=1; when 34=>d<=2; when 35=>d<=5; when 36=>d<=10; when 37=>d<=15; when 38=>d<=21; when 39=>d<=29; when 40=>d<=37; when 41=>d<=47; when 42=>d<=57; when 43=>d<=67; when 44=>d<=79; when 45=>d<=90; when 46=>d<=103; when 47=>d<=115; when 48=>d<=127; when 49=>d<=135; when 50=>d<=143;when 52=>d<=159;when 53=>d<=167;when 54=>d<=175;when 55=>d<=183;when 56=>d<=191;when 57=>d<=199;when 58=>d<=207;when 59=>d<=215;when 60=>d<=223;when 61=>d<=231;when 62=>d<=239;when 63=>d<=247;when others=>null;end case;end process;end dacc;。