內附程序代碼和程序文件以及仿真文件,這次偷懶沒寫報告
4.8.png (31.99 KB, 下載次數: 87)
下載附件
初始顯示可以根據自己喜好修改
2017-6-21 22:55 上傳
4.7.png (80.01 KB, 下載次數: 84)
下載附件
2017-6-21 22:55 上傳
4.6.png (81.71 KB, 下載次數: 78)
下載附件
2017-6-21 22:55 上傳
4.5.png (80.77 KB, 下載次數: 94)
下載附件
2017-6-21 22:54 上傳
4.4.png (81.69 KB, 下載次數: 99)
下載附件
2017-6-21 22:54 上傳
0.png (40.37 KB, 下載次數: 91)
下載附件
2017-6-21 23:03 上傳
單片機源程序:
- #include <reg51.h>
- #include <stdio.h>
- #include <absacc.h>
- #define uchar unsigned char
- uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- uchar code tab1[8]={0x3f,0x7f,0x40,0x5b,0x06,0xdb,0x3f,0x6d};
- uchar code
- tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
- 0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,
- 0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xec,0xee,0xef,0xf1,0xf2,0xf4,0xf5,
- 0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,
- 0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe3,0xe1,0xde,0xdd,0xda,
- 0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,
- 0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,
- 0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51,
- 0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,
- 0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,
- 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
- 0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,
- 0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e,
- 0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80};
- uchar b=0,c=0,d=0,e=0,i,k,tl,th;
- int ww=0,qw=0,bw=8,sw=8,gw=8,zkgw=0,zksw=5;
- int t,f,m,choice=1,zk=50;
- void delay100ms()
- {
- unsigned char i,j;
- for(i=200;i>0;i--);
- for(j=248;j>0;j--);
- }
- void chushihua(void)
- {
- P3=0xfe;
- P2=tab1[0];
- for(i=0;i<=60;i++);
- P3=0xfd;
- P2=tab1[1];
- for(i=0;i<=60;i++);
- P3=0xfb;
- P2=tab1[2];
- for(i=0;i<=60;i++);
- P3=0xfb;//小數點顯示P2=0x00;
- for(i=0;i<=60;i++);
- P3=0xf7;
- P2=tab1[3];
- for(i=0;i<=60;i++);
- P3=0xef;P2=tab1[4];
- for(i=0;i<=60;i++);
- P3=0xdf;
- P2=tab1[5];
- for(i=0;i<=60;i++);
- P3=0xbf;P2=tab1[6];
- for(i=0;i<=60;i++);
- P3=0x7f;
- P2=tab1[7];
- for(i=0;i<=60;i++);}
- void key1(void)
- {
- if(choice<4)
- choice=choice+1;
- else
- choice=1;}/*個位頻率調整*/
- void key2(void)
- {
- if(gw<9)
- gw=gw+1;
- else
- gw=0;}
- void key3(void)
- {
- if(sw<9)
- sw=sw+1;
- else
- sw=0;}/*百位頻率調整*/
- void key4(void)
- {
- if(bw<9)
- bw=bw+1;
- else
- bw=0;}
- void key5(void)
- {
- if(qw<9)
- qw=qw+1;
- else
- qw=0;}/*萬位頻率調整*/
- void key6(void)
- {
- if(ww<5)
- ww=ww+1;
- else
- ww=0;}/*方波占空比加大*/
- void key7(void)
- {
- if (zk<100)
- zk=zk+1;
- else
- zk=0;}
- void key8(void)
- {
- if(zk>=1)
- zk=zk-1;
- else
- zk=0;
- }
- void jisuan(void)
- {TR0=0;//關閉定時器
- f=100000*ww+1000*qw+100*bw+10*sw+gw;
- t=1000000/f;
- th=-t/256;
- tl=-t%256;
- ww=f/10000;
- f=f%10000;
- qw=f/1000;
- f=f%1000;
- bw=f/100;
- f=f%100;
- sw=f/10;
- gw=f%10;
- zkgw=zk%10;
- zksw=zk/10;
- TR0=1;}
- void display (void)
- {
- P3=0xfb;
- P2=tab[choice];
- for(i=0;i<=60;i++);
- P3=0xfb;
- P2=0x80;//小數點顯示
- for(i=0;i<=60;i++);
- P3=0xf7;
- P2=tab[ww];
- for(i=0;i<=60;i++);
- P3=0xef;
- P2=tab[qw];
- for(i=0;i<=60;i++);
- P3=0xdf;P2=tab[bw];
- for(i=0;i<=60;i++);
- P3=0xbf;
- P2=tab[sw];
- for(i=0;i<=60;i++);
- P3=0x7f;
- P2=tab[gw];
- for(i=0;i<=60;i++);
- if(choice==3)
- {P3=0xfd;
- P2=tab[zkgw];
- for(i=0;i<=60;i++);
- P3=0xfe;
- P2=tab[zksw];
- for(i=0;i<=60;i++);
- P3=0xfd;
- P2=0x80;//小數點顯示
- for(i=0;i<=60;i++) ;
- }}
- void judge (void)
- {
- {unsigned char X,Y,Z;
- P1=0xff;
- P1=0x0f;//先對P3置數行掃描
- if(P1!=0x0f)//判斷是否有鍵按下
- {delay100ms();//延時,軟件去干擾
- if(P1!=0x0f)//確認按鍵按X=P1;
- {
- X=P1;//保存行掃描時有鍵按下時狀態
- P1=0xf0;//列掃描
- Y=P1;//保存列掃描時有鍵按下時狀態
- Z=X|Y;//取出鍵值
- switch (Z)//判斷鍵值(那一個鍵按下)
- {
- case 0x7d: key1(); break;
- case 0xee: key2(); break;//對鍵值賦值
- case 0xde: key3(); break;
- case 0xbe: key4(); break;
- case 0x7e: key5(); break;
- case 0xed: key6(); break;
- case 0xdd: key7(); break;
- case 0xbd: key8();break;
- }}}
- }}
- void main (void)
- {
- int n;
- for(n=0;n<600;n++)
- {
- chushihua();
- }
- TMOD=0X01;
- TR0=1;
- th=-t/256;
- tl=-t%156;
- TH0=th;
- TL0=tl;
- ET0=1;
- EA=1;
- while(1)
- {
- jisuan();
- for(i=0;i<=50;i++);
- display();
- judge();
- }
- }
- void time0_int(void)
- interrupt 1//中斷服務程序
- {
- TR0=0;
- if(choice==1)
- {
- P0=tosin[b];//正弦波
- b++;
- }
- else
- if(choice==2)//三角波
- {if(c<=128)P0=c;
- else
- P0=255-c;
- c++;
- }
- else
- if(choice==3)//方波
- {k=zk*256/100;d++;
- if(d<=k)P0=0x00;
- else
- P0=0xff;}
- else
- if(choice==4)//鋸齒波
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
全部資料下載地址:
波形發生器.rar
(39.34 KB, 下載次數: 103)
2017-6-21 22:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|