利用51單片機搭建正弦波產生電路仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (19.1 KB, 下載次數: 62)
下載附件
2019-1-19 16:44 上傳
單片機源程序如下:
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define uchar unsigned char
- sbit wr2=P3^7;
- sbit rs = P2^6;
- sbit rw= P2^5;
- sbit ep = P2^7;
- sbit gn=P2^4;
- sbit up=P2^3;
- sbit down=P2^2;
- sbit S1=P2^0;
- sbit S2=P2^1;
- sbit wr1=P3^0;
- sbit dir1=P3^1;
- sbit dir2=P3^4;
- uchar j,k=39,flag,amp=0xfa;
- uint freq;
- code uchar v[]="amplitude:";
- uchar vv[5];
- code uchar f[]="freqency:";
- code uint fj[40]={999,744,591,490,419,366,325,292,265,243,224,208,194,181,171,
- 161,153,145,138,132,126,121,116,111,107,104,100,97,94,91,85,81,74,71,67,64,60,57,53,50};
- code uchar sj[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,33,36,38,40,42,45,48,51,55};
- uchar fv[6];
- code uchar sin[]={0x7F,0x84,0x88,0x8D,0x91,0x96,0x9B,0x9F,0xA4,0xA8,0xAC,0xB1,0xB5,0xB9,0xBD,0xC1,0xC5,0xC9,
- 0xCD,0xD0,0xD4,0xD7,0xDA,0xDE,0xE1,0xE4,0xE6,0xE9,0xEB,0xEE,0xF0,0xF2 ,0xF4,0xF6,0xF7,0xF9,0xFA,0xFB,
- 0xFC,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD ,0xFD,0xFC,0xFB,0xF9,0xF8,0xF7,0xF5,0xF3,0xF1,0xEF,0xED,
- 0xEA,0xE8,0xE5,0xE2,0xDF ,0xDC,0xD9,0xD5,0xD2,0xCE,0xCB,0xC7,0xC3,0xBF,0xBB,0xB7,0xB3,0xAE,0xAA,0xA6,0xA1,
- 0x9D,0x98,0x94,0x8F,0x8B,0x86,0x81,0x7D,0x78,0x73,0x6F,0x6A,0x66,0x61,0x5D,0x58 ,0x54,0x50,0x4B,0x47,0x43,
- 0x3F,0x3B,0x37,0x33,0x30,0x2C,0x29,0x25,0x22,0x1F,0x1C ,0x19,0x16,0x14,0x11,0x0F,0x0D,0x0B,0x09,0x07,0x06,
- 0x05,0x03,0x02,0x01,0x01,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x07,0x08,0x0A,0x0C,
- 0x0E,0x10,0x13,0x15,0x18,0x1A,0x1D,0x20,0x24,0x27,0x2A,0x2E,0x31,0x35,0x39,0x3D,0x41,0x45,0x49,0x4D,0x52,0x56,
- 0x5A,0x5F,0x63,0x68,0x6D,0x71,0x76,0x7A,0x7F};
- void delay(uchar z)
- {
- uchar x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com)
- {
- rs=0;
- P0=com;
- delay(5); //?nop????????
- ep=1;
- delay(5);
- ep=0;
- }
- void write_data(uchar date)
- {
- rs=1;
- P0=date;
- delay(5);
- ep=1;
- delay(5);
- ep=0;
- }
- void init_1602()
- {
- rw=0;
- write_com(0x38);
- delay(1);
- write_com(0x0c);
- delay(1);
- write_com(0x06);
- delay(1);
- write_com(0x01);
- delay(1);
- }
- void display_1602(uchar *v)
- {
- uchar i=0;
- while(v[i]!='\0')
- {
- write_data(v[i]);
- i++;
- delay(1);
- }
- }
- void dealv(uchar amp)
- {
- int i;
- i=amp*10;
- i=i/50;
- vv[0]=i/10+48;
- vv[1]='.';
- vv[2]=i%10+48;
- vv[3]='V';
- vv[4]='\0';
- }
- void dealf()
- {
- freq=fj[k];
- fv[0]=freq/100+48;
- fv[1]=freq%100/10+48;
- fv[2]=freq%10+48;
- fv[3]='H';
- fv[4]='z';
- fv[5]='\0';
- freq=0; //????
- }
- void fudu(uchar amp)
- {
- P1=amp;
- wr1=0;
- delay(1);
- wr1=1;
- }
- void keyscan1()
- {
- if(gn==0)
- {
- delay(20);
- if(gn==0);
- {
- while(!gn);
- flag^=0x01;
- }
- }
- if(flag)
- {
- dir1=0;
- if(up==0)
- {
- delay(10);
- if(up==0);
- {
- while(!up);
- dir2^=1;
- amp+=5;
- if(amp>250) amp=0; //??????
- fudu(amp);
- dealv(amp);
- write_com(0x80+10);
- display_1602(vv);
- }
- }
- if(down==0)
- {
- delay(100);
- if(down==0);
- {
- while(!down);
- dir2^=1;
- amp-=5;
- if(amp==0) amp=250;
- fudu(amp);
- dealv(amp);
- write_com(0x80+10);
- display_1602(vv);
- }
- }
- }
- else
- {
- dir1=1;
- if(up==0)
- {
- delay(100);
- if(up==0);
- {
- while(!up);
- dir2^=1;
- k++;
- delay(10);
- if(k>39) k=0; //???????
- dealf();
- write_com(0xc0+10);
- display_1602(fv);
- }
- }
- if(down==0)
- {
- delay(80);
- if(down==0);
- {
- while(!down);
- dir2^=1;
- k--;
- delay(10); //
- if(k>=250) k=39;
- dealf();
- write_com(0xc0+10);
- display_1602(fv);
- }
- }
- }
- }
- void main()
- {
- uchar i;
- fudu(amp);
- init_1602();
- write_com(0x80);
- display_1602(v);
- write_com(0xc0);
- display_1602(f);
- dealv(amp);
- write_com(0x80+10);
- display_1602(vv);
- dealf();
- write_com(0x80+0x40+10);
- display_1602(fv);
- while(1)
- {
- keyscan1();
- for(j=0;j<173;j++)
- {
- P1=sin[j];
- wr2=0;
- for(i=sj[k];i>0;i--); //??????????
- wr2=1;
- for(i=sj[k];i>0;i--);
- wr2=1;
- }
- }
- }
復制代碼
0.png (10.86 KB, 下載次數: 60)
下載附件
2019-1-19 16:45 上傳
所有資料51hei提供下載:
51 正弦波.zip
(68.17 KB, 下載次數: 80)
2019-1-19 11:40 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|