如何讲正弦波转化为方波?频率不变。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何讲正弦波转化为方波?频率不变。相关的知识,希望对你有一定的参考价值。

利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。

幅度不同、不规则的脉冲信号时加到施密特触发器的输入端时,能选择幅度大于欲设值的脉冲信号进行输出。

扩展资料:

正弦波是频率成分最为单一的一种信号,因这种信号的波形是数学上的正弦曲线而得名。任何复杂信号——例如音乐信号,都可以看成由许许多多频率不同、大小不等的正弦波复合而成。

和放大电路不同, 自激振荡电路是一种不需要外加信号而能自己产生输出信号的电子电路。因此,常作为产生各种频率信号的信号发生器。振荡电路分为正弦波和非正弦波振荡器。

方波是一种非正弦曲线的波形,通常会与电子和讯号处理时出现。理想方波只有“高”和“低”这两个值。电流或电压的波形为矩形的信号即为矩形波信号,高电平在一个波形周期内占有的时间比值称为占空比,也可理解为电路释放能量的有效释放时间与总释放时间的比值。

参考资料来源:百度百科——正弦波

参考资料来源:百度百科——方波

参考技术A

首先,你得先说是转成数字信号还是模拟信号。如果输入的正弦波电压是从0-5V,在数字电路中,那就是用施密特触发器,你上百度图片输入“施密特触发器”,可以有很多种实现方式。

如果是正弦波电压从负电压到正电压(即),你就得用运放了,做成“滞回比较器”的电路,同样你可以在百度图片里输入“滞回比较器”

其实施密特触发器和滞回比较器的传输特性很像,我给你张图吧,这是我自己画的哦,上面有注解,分别是这两个电路

如果想要理解明白,建议再回去看一下数电模电,把数电中的施密特触发器和模电中的电压比较器看一下

本回答被提问者采纳
参考技术B 施密特触发器的应用
1. 波形变换 可将三角波、正弦波等变成矩形波。 2. 脉冲波的整形 数字系统中,矩形脉冲在传输中经常发生波形畸变,出现上升沿和下降沿不理想的情况,可用施密特触发器整形后,获得较理想的矩形脉冲。 3. 脉冲鉴幅 幅度不同、不规则的脉冲信号时加到施密特触发器的输入端时,能选择幅度大于欲设值的脉冲信号进行输出。
利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。

信号发生器的设计(期末课程设计)

题目:信号发生器的设计

设计一个信号源,可以输出三种波形(正弦波,方波,三角波),通过按键可以改变输出波形,也可以改变波形的频率,并且频率可以通过数码管显示出来(频率显示到个位,大概正确就好,不用太准确)。

1、实现正弦波的输出,并且能够改变频率,5

(1)实现正弦波的输出,2分

(2)能够改变频率,1分

(3)能够显示频率,2分

2、实现方波的输出,并且能够改变频率,5

(1)实现方波的输出,2分

(2)能够改变频率,1分

(3)能够显示频率,2分

3、实现三角波的输出,并且能够改变频率,5

(1)实现三角波的输出,2分

(2)能够改变频率,1分

(3)能够显示频率,2分

提问环节:教师提问有关信号源的3个问题,根据学生回答情况给分,每个问题5,满分15

使用的单片机:

技术图片

注意事项:

1.频率只显示到个位,所以在周期 t上做了一些限制(见代码注释)。
2.按按钮时,按下要停一段时间(等待一个周期走完),按钮才会起作用。

参考代码:

说明:次程序用单片机上的LED灯来模拟波的输出。

     K1:切换输出波
     K2:频率降低
     K3:频率提高
     默认频率:方波f1=5, 三角波f2=1, sin正弦波f3=1

  1 //hill20200709
  2 #include<reg52.h> //头文件
  3 #include<intrins.h> //左右移函数头文件
  4 #define uchar unsigned char 
  5 #define uint unsigned int
  6 sbit K1=P3^4; //按键声明
  7 sbit K2=P3^5; 
  8 sbit K3=P3^6;  
  9 
 10 int t1=100; //单位为ms
 11 int t2=2;
 12 int t3=2;
 13 
 14 uchar code table[]={
 15 0x3f,0x06,0x5b,0x4f,
 16 0x66,0x6d,0x7d,0x07,
 17 0x7f,0x6f,0x77,0x7c,
 18 0x39,0x5e,0x79,0x71};
 19 
 20 sbit DU =P2^6;
 21 sbit WE =P2^7; 
 22 
 23 
 24 uchar code tosin[256]=
 25 {0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,
 26     0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5 ,
 27     0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd ,
 28     0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda ,
 29     0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,
 30     0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,
 31     0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,
 32     0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00 ,
 33     0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,
 34     0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e , 
 35   0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 }; 
 36 
 37 char n;
 38 
 39 void delayms(uint ms)    
 40 {
 41     uint k,l;
 42     for(k=ms;k;k--)    
 43         for(l=110;l;l--);    //约1ms
 44 }
 45 
 46 void dispFre(uint flag){ //显示频率
 47 
 48     int f,num;
 49 
 50     if(flag==0){
 51         f=1000/((2*t1)); //自动类型转化为整形
 52     }
 53     else if(flag==1){
 54         f=1000/(400*t2);
 55     }
 56     else{
 57         f=1000/(256*t3);
 58     }
 59 
 60     num=f%10; //只要个位
 61 
 62     DU=1;
 63     P0=table[num]; 
 64     DU=0;
 65     WE=1;      
 66     P0=0xdf;      //1101 1111
 67     WE=0;
 68     delayms(2);
 69 }
 70 
 71 
 72 void square() //方波
 73 {
 74         P1=0; //全灭
 75         delayms(t1);
 76 
 77         P1=255; //全亮
 78         delayms(t1);
 79 }
 80 
 81 void triangle() //三角波
 82 {
 83     int a,x,y;
 84     for(x=200;x;x--)
 85     {
 86         a++;
 87         delayms(t2);
 88         P1=a;
 89     }
 90     for(y=200;y;y--)
 91     {        
 92         a--;
 93         delayms(t2);
 94         P1=a;
 95     }
 96 }
 97 
 98 void sin() //正弦波
 99 {
100     int i;
101     for(i=0;i<=255;i++)
102     {
103         P1=tosin[i];
104         delayms(t3);
105     }
106 }
107 
108 void key_switch() //定义按键函数
109 {
110     if(K1==0) //定义负责K1的函数
111     {
112         delayms(10);
113         if(K1==0){
114             n++;
115             if(n==3){
116                 n=0;
117             }
118             while(!K1); //K1按下去了就一直运行空循环
119         }
120     }    
121 }
122 void key_plus(){ //定义负责K2的函数
123     if(K2==0){
124         delayms(10);
125         if(t1<520){      //t1=500时,f=1; 等于520时f=0
126             t1=t1+20;
127         }
128         else{     //f减到0时,自动复位到初始的5
129             t1=100;
130         }
131         if(t2<3){ //t2加到3时 f=0
132             t2++;
133         }
134         else{
135             t2=2;
136         }
137         if(t3<4){ //t3加到4时 f=0
138             t3++;
139         }
140         else{
141             t3=2;
142         }
143         while(!K2);
144     }
145 }
146 void key_minus(){ //定义负责K3的函数 减t 加f
147     if(K3==0){ //时间出现负数的时候程序会卡死
148         delayms(10);
149         if(t1>60){      //t1=60时,f=8; 等于40时f=12
150             t1=t1-20;
151         }
152         else{     //f加到8时,自动复位到5
153             t1=100;
154         }
155         if(t2>0){ //t2
156             t2--;
157         }
158         else{
159             t2=2;
160         }
161         if(t3>0){ //t3
162             t3--;
163         }
164         else{
165             t3=2;
166         }
167         while(!K3);
168     }
169         
170 }
171 
172 void main()
173 {
174 
175     while(1)
176     {
177         key_switch();
178         key_plus();
179         key_minus();
180         dispFre(n);
181         if(n==0){
182             square(); //方波
183             
184         }
185         else if(n==1){
186             triangle(); //三角波
187             
188         }
189         else{
190             sin(); //正弦波
191             
192         }
193         
194     }
195 }

 本人单片机初学者,多多关照!文章内容肯定有不当之处,敬请指出改正。

以上是关于如何讲正弦波转化为方波?频率不变。的主要内容,如果未能解决你的问题,请参考以下文章

正弦波转变为方波?

利用运放怎样实现由方波变成正弦波

急求正弦波转为方波的方法(利用单片机测1Hz~3MHz的正弦波)

如何将正弦信号转换成同频率方波信号

方波转成锯齿波和三角波的原理???

方波,正弦波,三角波信号是如何产生的