嵌入式ARM 1月22日

牛人自己DIY信号发生器:1Hz~10MHz,高性价比_嵌入式


搞DIY,有一台信号源是很有必要的。奈何买商品化的仪器,价格不菲,所以很有必要自己做一个性价比很高的信号发生器。


能发出-2.5V~+2.5V,可调偏置输出0.6-5V。1HZ-10MHZ的信号,但是3M以后波形变形了,实际范围只有1hz-3Mhz。板子直接拿6块一模一样的拼成一个正方体就当壳子了。


过程省略,下面是原理图和源码,希望大家喜欢~





原理图





牛人自己DIY信号发生器:1Hz~10MHz,高性价比_嵌入式_02


牛人自己DIY信号发生器:1Hz~10MHz,高性价比_嵌入式_03






主要源码段




←左右滑动,查看代码→


#include "anjian.h"#include "intrins.h"
bit zisuo;u8 chufa;u8 zijia;
u8 anjian19(void)             //按键0-9{    unsigned char a=0;    P3 &= 0xe3;               //键盘初始:行值=0,列值=1            P3 |= 0xe0;               //P3.234=0  p3.567=1    _nop_();                  //缓冲,待IO端口电位稳定    a = P3&0xe0;              //得到行标志  得到P3.567电位    P3 &= 0x1f;               //翻转键盘接口输出                            P3 |= 0x1c;               //p3.234=1 p3.567=0    _nop_();    a |= (P3&0x1c);           //列标志 + 行标志    return a>>2;              //返回键值  返回 P3.234567}
u8 anjian1015(void)           //按键10-15{    unsigned char a=0;    P1 &= 0xe7;               //键盘初始:行值=0,列值=1            P1 |= 0xe0;               //P1.34=0  p1.567=1    _nop_();                  //缓冲,待IO端口电位稳定    a = P1&0xe0;              //得到行标志  得到P1.567电位
   P1 &= 0x1f;               //翻转键盘接口输出                            P1 |= 0x18;               //p1.34=1 p1.567=0    _nop_();    a |= (P1&0x18);           //列标志 + 行标志    return a>>3;              //返回键值 返回 P1.34567}
u8 anjian1617(void){    return P2&3;}
void anjian(void){    u8 a=anjian19();    u8 b=anjian1015();    u8 c=anjian1617();    if(a==0x3f&&b==0x1f&&c==3)    {        zijia=0;        zisuo=0;    }    else if(zisuo==0)    {        zijia++;        if(zijia>duananjishi)        {            zijia=0;            zisuo=1;            switch(a)            {                case 0x36:chufa=1;break;                case 0x35:chufa=2;break;                case 0x33:chufa=3;break;                case 0x2e:chufa=4;break;                case 0x2d:chufa=5;break;                case 0x2b:chufa=6;break;                case 0x1e:chufa=7;break;                case 0x1d:chufa=8;break;                case 0x1b:chufa=9;break;                default:break;            }            switch(c)            {                case 1:chufa=17;break;                case 2:chufa=10;break;                default:break;            }            switch(b).....................篇幅限制,仅展示部分代码..............





效果展示




1)方波的显示效果:


牛人自己DIY信号发生器:1Hz~10MHz,高性价比_嵌入式_04


2)三角波的显示效果:


牛人自己DIY信号发生器:1Hz~10MHz,高性价比_嵌入式_05


3)正弦波sin的显示效果:


牛人自己DIY信号发生器:1Hz~10MHz,高性价比_嵌入式_06


END


版权归原作者所有,如有侵权,请联系删除。
推荐阅读国内MCU能替代国外产品吗?MCU的未来又将如何?
STM32价格疯长下,盘点STM32的国产替代者
选微处理器MPU,还是单片机MCU?两者区别详解