找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20373|回复: 12
打印 上一主题 下一主题
收起左侧

基于51单片机的波形发生器的课程设计报告

  [复制链接]
跳转到指定楼层
楼主
ID:427966 发表于 2018-11-16 22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
《智能仪器仪表设计与调试》课程设计报告
课程设计任务书

设计题目:基于单片机的波形发生器设计

学生姓名


课程名称

智能仪器仪表设计与调试

专业班级

测控普

地    点

实验楼I512、506

起止时间




设计内容及要求
1.要求设计的波形发生器完成以下功能:
1)运用单片机控制产生多种波形,这些波形包括三角波、方波、锯齿波等。
2)信号发生器所产生的波形的频率、幅值均为连续可调。
2. 扩展功能
1)在上位机将波形实时显示出来。
2)用红外线遥控器实现上述功能。
3)其它功能
设计参数

  • 幅值0~5V可调
  • 频率0~1KHz可调


进度要求

              1. 布置仪表设计任务、方案设计 (1天)
      2. 硬件设计、制作、调试 (1天)
      3. 软件设计、调试 (5天)
      4. 综合测试 (1天)
      5. 成果展示、答辩 (1天)
      6. 撰写报告 (1天)
      详见进度安排表
参考资料
  • 程德福.智能仪器.机械工业出版社. 2009.9
  • 胡文金. 单片机系统实训教程.重庆:重庆大学出版社,2005
  • 梁森. 自动检测技术及应用.北京:机械工业出版社,2012

其它


说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
系主任:                                         指导教师:


目录


一、 设计任务和性能指标
1.1 设计任务
1.2 性能指标
二、设计方案
2.1硬件选择
2.2 系统总体设计
三、系统硬件设计
3.1 单片机的最小系统
3.2 按键电路设计
3.3 LCD显示的设计
四、系统软件设计
4.1 主程序设计
4.2              LCD显示子程序设计
4.3              D/A转换子程序设计
五、调试及性能分析
5.1 调试步骤
5.2 性能分析
六、心得体会
参考文献
附录 1 系统硬件电路图
附录 2   程序代码

一、 设计任务和性能指标
1.1 设计任务
按要求设计波形发生器并完成相关功能:
(1)运用单片机控制产生多种波形,这些波形包括三角波、方波、锯齿波等。
(2)信号的发生器所产生波形的频率、幅值均为连续可调。
扩展功能
在上位机将波形实时显示出来,用红外线遥控器实现上述功能,其它功能。
1.2 性能指标
      (1)幅值0~5V可调
      (2)频率0~1KHz可调               

二、设计方案   
采用AT89C51单片机和数模转换器PCF8591实现波形的产生。波形的产生方法是用AT89C51单片机执行波形程序,向PCF8591转换器的输入端输入相应的数据,从而在DA转换电路输出端再通过运放电路转换得到相应的电压波形。在AT89C51的P1口接按键控制波形的各类和波形的频率,每种波形对应一种按键方式。此方案原理简单,同时适合操作,实现起来也相对较容易。产生的三种波形的频率可由按键控制,并通过按键改变来转换不同的波形,也能够在示波器上显示出所要求的波形。波形的频率步进也可以实现调节,具有线路简单、可行性高、符合设计要求等优点。加上LCD数码显示管,从而能够在LCD上显示出频率值、幅度值信息。输出的波形也较稳定,精度较高,通过滤波电路使得系统的抗干扰性增强,电路简单,性价比高。

图2.1系统组成结构框图

2.1硬件选择
     (1)单片机:STC12C5AI6S2是高速/低功耗/超强抗干扰的新一代8051 单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810 专用复位电路,2路PWM,8路高速10位A/D转 换(250K/S),针对电机控制,强干扰场合。
    (2)PCF8591:PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

  2.2 系统总体设计
    本系统是用单片机来控制波形的转换以及幅值和频率的改变的,所以该系 统可以分为4个电路模块 ,下面是总体设计框图。

     
                          图2.2  系统总体设计框图

三、系统硬件设计
3.1 单片机的最小系统
  由于单片机最小系统只需要外围有时钟电路和复位电路即可,则单片机最小系统有着两个外围电路即可正常工作,下面是单片机的最小系统原理图。
                  

                           图3.1    STC12C5AI6S2单片机最小系统



3.2 按键电路设计
本实现采用4个按键来进行波形的转换、幅值的改变、频率的改变,P20键用来改变波P21、P22用来改变幅值的大小,P32用来改变频率的大小,下面是按键电路图。
图3.2按键电路图


3.3 LCD显示的设计
  本硬件采用的是12864-12L的液晶显示屏,显示屏将波形的转化显示在显示屏上,下面是 液晶显示的电路。


     

                                     图3.3              12864-12L液晶显示电路


四、系统软件设计

4.1 主程序设计
   主程序内进行的是波形的切换及幅值、频率的改变,用示波器和LCD显示,将主要的写进即可,其他的就写在外面,下面是主程序流程图。
         

图4.1 主程序流程图

4.2  LCD显示子程序设计
液晶显示的程序在本程序中比较的简单,就是为了实时的显示出当前的波形是什么,用按键切换之后液晶显示也跟着变。液晶显示程序需首先初始化,再进行数据的传输,并进行字符的显示,所以写出相应的几个程序即可进行LCD的显示。

图4.2 LCD 显示流程图
4.3   D/A转换子程序设计
本程序采用PCD8591来作D/A转换器,需要将A1、A1、A2接地,单片机上的P1和P11接PCF8591上的SCL和SDA端口,AOUT接示波器,供显示D/A转换要满足I2C协议才能进行数据的传输。

        void write_add(uchar date)               
{
    start();
    write_byte(0x90);   
    respons();
    write_byte(0x40);
    respons();
    write_byte(date);
    respons();
    stop();

}



五、调试及性能分析

5.1 调试步骤
硬件调试:检查线路连接有无错误,SDA和SCL接单片机的P10和P11口,VCC接电源,CND接地,AOUT接示波器,在下载数据到单片机之后数据在传输的时候PCF8591上的一个蓝色的灯会不停的闪,说明有数据在传输,否则无数据传输。
   软件调试:首先看I2C协议是否正确,否则不能传输数据,再看按键的逻辑关系是否正确,还有就是LCD的显示是否正确。
   调节电源,使其输出5V电压,调整好示波器。给电路供电,观察示波器,记录各频段对应波形的情况,峰峰值。调试结果表明,该电路在要求频率范围内的大部分频率范围基本上不失真,除了在最高频率的最低频率有少许失真,其中,当频率接近10KHz时,方波高低电压跃变时出现毛刺,审过零比较器的频率特性所致,另外,在最高频和最低频段,三角波出现少许弯斜,可选用频率特性更为宽的电容进行校正。

5.2 性能分析
  经过一段时间运行后,可以对系统的性能进行测试。对于本波形发生器来说,用示波器可以测试其性能指标,按前面所述设计的波形发生器,能产生正弦波、三角波及方波信号,其幅值可以0—5V内变化,频率也可以调整。

六、心得体会
    在为期几周的时间里,终于顺利地完成了此次课程设计,并从中学习到了很多的知识和经验,对单片机以及C语言有了更深刻的了解。本次课程设计也发现了许多问题,此次单片机的设计硬件电路较为简单,而程序的设计在当中占据很重要的部分。这次课程设计是用STC12C5AI6S2单片机与PCF8591D/A转换器来实现的波形产生与显示,所以要对这两个模块非常的熟悉。对于PCF8591需要深入的认识I2C协议的内容才能正确的传输数据。而对于单片机而需要对各个接口非常熟悉,才能保证数据的正常传输。此外还要熟练的使用示波器,对产生的波形进行调整,来得到更好的效果。它考验我们灵活的运用所学知识,培养了我们在遇到问题善于触屏的良好学习态度,使我认识到设计思路更节省了时间。灵活运用,以书本知识为基础灵活的扩展,学习前人的验,向高层次迈进。当然还是存在不足的地方,例如当频率过小的时候矩形波会有些失真,转换器转换可以加一个锁存器,放大电路设计上还有待进一步改进,使其具有更强的输出能力等。

附录 1 系统硬件电路图

单片机源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<math.h>
  4. #define  uchar  unsigned  char
  5. #define  uint  unsigned   int
  6. unsigned long Result,i;
  7. sbit SDA=P1^1;    //PCF8591 接口
  8. sbit SCL=P1^0;
  9. unsigned int a=0;                  //波形采样点值
  10. unsigned int b=0;
  11. unsigned  int c=0;

  12. unsigned  int bx_chang=0;
  13. unsigned  int n=40;  //频率计算值
  14. unsigned char TH;
  15. unsigned char TL;
  16. unsigned int mode=0; //0为调节幅度 1为调节频率
  17. unsigned int fd=6;              //幅度初值  3.0V
  18. unsigned int  x;              //采样点的间隔
  19. unsigned int u;                            //lcd刷屏变量
  20. //*************
  21. sbit CS =P3^5;                             //LCD接口
  22. sbit SID=P3^6;
  23. sbit SCLK=P3^7;
  24. sbit PSB=P1^5;
  25. //*************
  26. sbit p20=P2^0; //波形调节
  27. sbit p21=P2^1; //增加              频率、幅度
  28. sbit p22=P2^2; //减少              频率、幅度
  29. sbit p32=P3^2; //频率幅度选择

  30.                                                                                                                   //sin波形数组
  31. uchar code tosin[256]={
  32.             0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE,
  33.                                           0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8,
  34.                                           0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5,
  35.                                           0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  36.                                           0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,
  37.                                           0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDF,0xDD,0xDA,
  38.                                           0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1,
  39.                                           0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80,
  40.                                           0x80,0x7C,0x79,0x76,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51,
  41.                                           0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27,
  42.                                           0x25,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A,
  43.                                           0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  44.                                           0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
  45.                                           0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0x1E,0x20,0x22,0x25,
  46.                                           0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E,
  47.                                           0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x80
  48.                                           };
  49.                              

  50. //***********************************************

  51. void delay(unsigned int z)                                                  //延迟函数
  52. {   unsigned int x,y;   
  53.      for(x=z;x>0;x--)
  54.        for(y=125;y>0;y--) ;
  55. }
  56. //***************************************************LCD显示函数组
  57. void SendByte(unsigned char Dbyte)                                                             //LCD字节传送
  58. {
  59.      unsigned char i;           
  60.               CS=1;
  61.      for(i=0;i<8;i++)
  62.      {              SCLK = 0;         
  63.                   if((Dbyte<<i)&0x80)      
  64.                             SID=1;                        
  65.                             else
  66.                             SID=0;
  67.                             SCLK = 1;
  68.        SCLK = 0;
  69.      }
  70.               CS=0;
  71. }

  72. void Lcd_WriteCmd(unsigned char Cbyte )                               //LCD的数据与指令传送
  73. {
  74.      delay(10);
  75.      SendByte(0xf8);         
  76.      SendByte(0xf0&Cbyte);     
  77.      SendByte(0xf0&(Cbyte<<4));  
  78. }

  79. void Lcd_WriteData(unsigned char Dbyte )
  80. {
  81.      delay(10);
  82.      SendByte(0xfa);              
  83.      SendByte(0xf0&Dbyte);     
  84.      SendByte(0xf0&(Dbyte<<4));  
  85. }                                                                                                                 
  86. void InitLCD()                                                            //LCD初始化
  87. {
  88.               Lcd_WriteCmd(0x30);            
  89.               Lcd_WriteCmd(0x06);              
  90.               Lcd_WriteCmd(0x0c);               
  91.               Lcd_WriteCmd(0x04);            
  92.               Lcd_WriteCmd(0x01);                              
  93.               Lcd_WriteCmd(0x02);                                          
  94.               Lcd_WriteCmd(0x80);                           
  95. }                                                                                                               
  96. void xianshi(unsigned char x,unsigned char y,unsigned char *stri)              //LCD数据传送地址
  97. {                                                                                                               
  98.               if(x==1)      Lcd_WriteCmd(0x80+y-1);                           
  99.               else if(x==2) Lcd_WriteCmd(0x90+y-1);
  100.               else if(x==3) Lcd_WriteCmd(0x88+y-1);
  101.               else if(x==4) Lcd_WriteCmd(0x98+y-1);            
  102. while(*stri>0)
  103.               {
  104.                             Lcd_WriteData(*stri);
  105.                             stri++;
  106.               }            
  107. }
  108. //****************************************************

  109. void delayp()                                          //延迟函数
  110. {;;}


  111. void delay_1ms(uint z)
  112. {
  113.     uint x,y;
  114.     for(x=z;x>0;x--)
  115.         for(y=110;y>0;y--)
  116.             ;
  117. }
  118. //****************************************I2C协议
  119. void start()//开始信号
  120. {
  121.     SDA=1;
  122.     delayp();
  123.     SCL=1;
  124.     delayp();
  125.     SDA=0;
  126.     delayp();
  127. }

  128. void stop() //停止信号
  129. {
  130.     SDA=0;
  131.     delayp();
  132.     SCL=1;
  133.     delayp();
  134.     SDA=1;
  135.     delayp();
  136. }


  137. void respons()//应答    相当于一个智能的延时函数
  138. {
  139.     uchar i;
  140.     SCL=1;
  141.     delayp();
  142.     while((SDA==1)&&(i<250))
  143.         i++;
  144.     SCL=0;
  145.     delayp();
  146. }

  147. void init() //初始化
  148. {
  149.     SDA=1;
  150.     delayp();
  151.     SCL=1;
  152.     delayp();     
  153. }

  154. void write_byte(uchar date) //写一字节数据
  155. {
  156.     uchar i,temp;
  157.     temp=date;
  158.     for(i=0;i<8;i++)
  159.     {
  160.         temp=temp<<1; //左移一位 移出的一位在CY中
  161.         SCL=0;          //只有在scl=0时sda能变化值
  162.         delayp();
  163.         SDA=CY;
  164.         delayp();
  165.         SCL=1;
  166.         delayp();         
  167.     }   
  168.     SCL=0;
  169.     delayp();
  170.     SDA=1;
  171.     delayp();
  172. }



  173. void write_add(uchar date)                  //D/A转换
  174. {
  175.     start();
  176.     write_byte(0x90);   
  177.     respons();
  178.     write_byte(0x40);
  179.     respons();
  180.     write_byte(date);
  181.     respons();
  182.     stop();

  183. }
  184. //****************************************************
  185.                               
  186. int main()//************************************************主函数
  187. {
  188.     TMOD = 0x01;
  189.               TH0 = (65536-99000/n)/256;                   //定时时间
  190.               TL0 = (65536-99000/n)%256;
  191.               TH1 = (65536-5000)/256;
  192.               TL1 = (65536-5000)%256;
  193.               EA = 1;
  194.               ET0 = 1;
  195.               ET1 = 1;
  196.               TR0 = 1;
  197.               TR1 = 1;            
  198.     init();                                                           
  199.     while(1)
  200.   {                           
  201.                             PSB=0;
  202.                             InitLCD();
  203. //*******************************************显示模块
  204. for(u=0;u<9;u++)
  205. {
  206.         xianshi(1,1,"信号发生器");
  207.                             xianshi(2,1,"波形:");

  208.               if(bx_chang==0)                xianshi(2,4,"sin");
  209.               if(bx_chang==1)                                   xianshi(2,4,"Square");
  210.               if(bx_chang==2)                             xianshi(2,4,"Triangle");
  211.         if(mode==0)                           
  212. {
  213.                       xianshi(3,1,"幅度:");
  214.                                    Lcd_WriteData(0x30+(fd*5/10));
  215.                             xianshi(3,5,".");
  216.                       Lcd_WriteData(0x30+(fd*5%10));
  217.                             xianshi(3,6,"V");
  218.                                                                       }
  219.                     if(mode==1)                           
  220. {
  221.                       xianshi(3,1,"频率:");
  222.                                           Lcd_WriteData(0x30+(n/2/100));
  223.                                   Lcd_WriteData(0x30+(n/2/10));
  224.                                   Lcd_WriteData(0x30+(n/2%10));
  225.                               xianshi(3,8,"HZ");
  226.                                                                       }                              
  227.   }
  228.   }
  229. }

  230. //**************************************************************8   
  231. void refresh_f( void ) interrupt 1                 //定时器中断
  232. {

  233.   if(n>=0&&n<40)
  234. {              x=14;
  235.               TH0 = (65536-92900/n)/256;              
  236.               TL0 = (65536-92900/n)%256;
  237.               }
  238.   else if (n>=40&&n<80)
  239. {              x=15;
  240.               TH0 = (65536-97920/n)/256;              
  241.               TL0 = (65536-97920/n)%256;
  242.               }

  243.                
  244. //*************************************正弦波形                                
  245.      a=a+x;
  246.                     if(a<256&&bx_chang==0)
  247.                       {
  248.                     write_add(tosin[a]*0.1*fd);
  249.                      
  250.                        }
  251.                       if(a>=256)
  252.                              {
  253.                                 a=0;
  254.                               }
  255.                            
  256. //************************************方波波形

  257.               b=b+x;
  258.                               if(b<128&&bx_chang==1)
  259.               {
  260.                     write_add(0x00*0.1*fd);
  261.                         
  262.               }
  263.               if(b>=128&&b<256&&bx_chang==1)
  264.                                write_add(0xff*0.1*fd);
  265.               if(b>=256)
  266.               {
  267.                  b=0;
  268.               }
  269.                                          

  270.                                          

  271. //*************************************三角波波形
  272.               c=c+x;

  273.                               if(c<128&&bx_chang==2)

  274.               {                                          

  275.                             write_add(c*0.2*fd);
  276.               }
  277.               if(c>=128&&c<256&&bx_chang==2)   
  278.               write_add((-c+256)*0.2*fd);
  279.                         
  280.             
  281.               if(c>=256)
  282.               {
  283.                  c=0;
  284.               }

  285. }
  286. //********************************************定时器中断   按键中断
  287. void refresh_zd( void ) interrupt 3
  288. {

  289.               TH1 = (65536-5000)/256;                               //5000us
  290.               TL1 = (65536-5000)%256;
  291. //*******************************************8
  292.         if(p32==0)                              //频率或者幅度调节选择
  293.                             {
  294.                               
  295.                                  delay_1ms(1000);
  296.                                           if(p32==0)
  297.                                           mode=mode+1;
  298.                                           if(mode>=2)
  299.                                           mode=0;
  300.                            
  301.                             }
  302.          if(p20==0)                              //波形选择
  303.                             {
  304.                                delay_1ms(1000);
  305.                                bx_chang=bx_chang+1;
  306.                                if(bx_chang>=3)
  307.                                bx_chang=0;
  308.                            
  309.                             }
  310. //*******************************************频率调节
  311.                             if(p21==0&&mode==1)
  312.                             {
  313.                                delay_1ms(1000);
  314.                                n=n+2;
  315.                                if(n>=120)
  316.                                n=1;
  317.                            
  318.                             }  
  319.                             if(p22==0&&mode==1)
  320.                             {
  321.                                delay_1ms(1000);
  322.                                n=n-2;
  323.                                if(n<=0)
  324.                                n=120;
  325.                            
  326.                             }
  327. //*******************************************幅度调节
  328.                             if(p21==0&&mode==0)
  329.                             {
  330.                                delay_1ms(1000);
  331.                                fd=fd+1;
  332.                                if(fd>=10)
  333.                                fd=1;
  334.                            
  335.                             }  
  336.                             if(p22==0&&mode==0)
  337.                             {
  338.                                delay_1ms(1000);
  339.                                fd=fd-1;
  340.                                if(fd<=1)
  341.                                fd=10;
  342.                            
  343.                             }
  344. }
复制代码

所有资料51hei提供下载:
基于单片机的波形发生器的设计.doc (293 KB, 下载次数: 181)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:435621 发表于 2018-11-29 12:10 | 只看该作者
看起来很不错啊
回复

使用道具 举报

板凳
ID:467851 发表于 2019-1-14 13:27 | 只看该作者
图看不清啊
回复

使用道具 举报

地板
ID:635578 发表于 2019-11-28 20:32 | 只看该作者
看起来不错,我的目前无法调频
回复

使用道具 举报

5#
ID:635578 发表于 2019-11-28 23:59 | 只看该作者
有人成功了嘛
为啥我的没有波形
回复

使用道具 举报

6#
ID:655378 发表于 2019-12-3 20:07 | 只看该作者
图都不对
回复

使用道具 举报

7#
ID:771950 发表于 2020-6-7 17:26 | 只看该作者

你知道怎么是对的吗
回复

使用道具 举报

8#
ID:253767 发表于 2020-6-8 08:07 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

9#
ID:743314 发表于 2020-6-14 22:00 来自手机 | 只看该作者
tieq1952 发表于 2020-6-8 08:07
谢谢分享!!!

请问你调试出来成功了吗
回复

使用道具 举报

10#
ID:743314 发表于 2020-6-14 22:31 来自手机 | 只看该作者
794209461 发表于 2020-6-7 17:26
你知道怎么是对的吗

请问你调试出来了吗
回复

使用道具 举报

11#
ID:778097 发表于 2020-6-15 08:26 | 只看该作者
这个图分辨率太恶劣了
回复

使用道具 举报

12#
ID:785332 发表于 2020-6-21 13:43 来自手机 | 只看该作者
怎么调
回复

使用道具 举报

13#
ID:873715 发表于 2021-1-5 14:08 | 只看该作者
你好我想问一下你这个程序怎么改幅值和频率啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表