Proteus函数信号发生器原理图(仿真工程文件可到附件中下载):
单片机源程序如下(正弦波和方波):
- //频率可调方波
- //============
- #include <reg51.h>
- sbit fangbo=P3^5;
- void clearmen();
- void keyscan();
- //=================
- void main()
- {
- clearmen();
- while(1)
- {keyscan();}
- }
- //====================
- void clearmen()
- {
- P3=0xff;THHL=6555;
- TH1=THHL/256;TL1=THHL%256;
- TMOD=0x11;ET1=1;TR1=1;EA=1;
- }
复制代码
- #include <reg51.h>
- #define uchar unsigned char
- #define dataout P0
- void clearmen();
- unsigned int a;
- void keyscan();
- void delay1ms(unsigned char ms);
- sbit fangbo=P3^7;
- //=============正弦波数据====================
- uchar code sin_tab[128]={64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,
- 109,111,113,115,117,118,120,121,123,124,125,126,126,
- 127,127,127,127,127,127,127,126,126,125,124,123,121,
- 120,118,117,115,113,111,109,106,104,102,99,96,94,91,
- 88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,
- 36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,
- 1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,
- 25,28,31,33,36,39,42,45,48,51,54,57,60
- };
- unsigned int data THHL =65535;
- uchar n=0;
- sbit K1=P1^4;
- bdata sinthr;
- //===============================================================
- void main()
- {
- clearmen();
- while(1)
- {keyscan();}
- }
- //===============================================================
- void keyscan()
- {
- if(K1==0)
- {
- delay1ms(10);
- while(K1==0);
- THHL=THHL+255;
- if(THHL >= 65235)THHL=65535;
- }
- }
- //================================================================
- void clearmen()
- {
- dataout=0x00;THHL=56555;
- P3=0xff;
- TH1=THHL/256;TL1=THHL%256;
- TMOD=0x11;ET1=1;TR1=1;EA=1;
- P3=0x00;
- a=0;
- }
- //===============================================================
- void time_intt1(void) interrupt 3
- {
- EA=0;TR1=0;TH1=THHL/256;TL1=THHL%256;TR1=1;
- dataout=sin_tab[a];
- fangbo=~fangbo;
- n++;
- a++;
- if(n> 255){n=0;}
- if(a>127){a=0;}
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
Proteus函数信号发生器.rar
(136.05 KB, 下载次数: 94)
|