能发出-2.5V~+2.5V,可调偏置输出0.6-5V。1HZ-10MHZ的信号,但是3M以后波形变形了,实际范围只有1hz-3Mhz。
板子直接拿6块一模一样的拼成一个正方体就当壳子了。
过程省略,下面是原理图,
下面是制作好的样子及测试
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #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)
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
程序.rar
(121.44 KB, 下载次数: 330)
|