这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 做一个性价比很高的信号发生器(1HZ-10MHZ)

共10条 1/1 1 跳转至

做一个性价比很高的信号发生器(1HZ-10MHZ)

工程师
2021-01-21 17:24:22     打赏

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

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


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


主要源码段:

#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)

……………………


…………





关键词: 信号发生器     信号源    

工程师
2021-01-21 17:26:29     打赏
2楼

方波的显示效果:


工程师
2021-01-21 17:26:52     打赏
3楼

三角波的显示效果:


工程师
2021-01-21 17:27:38     打赏
4楼

正弦波sin的显示效果:


工程师
2021-01-21 17:39:36     打赏
5楼

波形漂亮呢!赞一个!


工程师
2021-01-21 17:47:20     打赏
6楼
赞赞赞  问一下  硬件成本是多少?



院士
2021-01-21 17:53:06     打赏
7楼

DIY 一个信号发生器,我都想了几年了。

也没有付出个行动啊~~


高工
2021-01-25 11:06:25     打赏
8楼

谢谢分享


菜鸟
2021-05-10 14:28:06     打赏
9楼

支持原创


高工
2021-06-12 06:31:18     打赏
10楼

不错,谢谢分享。


共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]