河南城建学院本科毕业设计(论文) 附录A ,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08 ,0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23 ,0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B ,0x4E,0x51,0x54,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C};
uchar fun=1,b=0,c=0,d=0,e=0,tl,th,flag=0;
sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P2_7=P2^7;
uchar de1,de2; uchar A=4;
void key1(void); void key2(void); void key3(void); void key4(void); void delay(uchar k);
void main(void) {
TMOD=0X01; th=0xff; tl=0xe8; TH0=th; TL0=tl; ET0=1; EA=1; EX1=1; PX1=1; IT1=1; TR0=1; while(1) {
P3_0=0; P3_1=1; P3_2=0; if(num[flag*3]!=0) {
P1=tab[num[flag*3]]; delay(1); } P1=0;
28
河南城建学院本科毕业设计(论文) 附录A P3_0=1; P3_1=0; P3_2=0;
P1=tab[num[flag*3+1]]; delay(1); P1=0;
P3_0=0; P3_1=0; P3_2=0; P1=tab[num[flag*3+2]]; delay(1); P1=0;
P3_0=1; P3_1=1; P3_2=0; P1=tab[fun+9]; delay(1); P1=0; } }
void delay(uchar k) {
for(de1=0;de1<10;de1++)
for(de2=0;de2 void key1(void) //1键选择发波类型,1为正弦波,2为三角波,3为方波,4锯齿波 { fun++; if(fun==5) fun=0x01; } void key2(void) //2键加大频率 { tl+=0x1; if(tl>0xe8) tl=0x00; if(flag>0) flag--; else flag=255; } void key3(void) //3键减小频率 { if(th>0x00) 29 河南城建学院本科毕业设计(论文) 附录A { tl-=0x1; if(flag<255) flag++; else flag=0; } } void key4(void) { } void time0_int(void) interrupt 1 //中断服务程序 { TR0=0; if(fun==1) { DA0832=tosin[b]/4*A; //正弦波 b++; } else if(fun==2) //三角波 { if(c<128)DA0832=c*2/4*A; else DA0832=(255-c)*2/4*A; c++; } else if(fun==3) // 方波 { d++; if(d<=128)DA0832=0x00; else DA0832=0xff/4*A; } else if(fun==4) // 锯齿波 { e++; DA0832=e/4*A; } TH0=th; TL0=tl; TR0=1; 30 河南城建学院本科毕业设计(论文) 附录A } void int1 (void) interrupt 2 //int1中断服务程序 { if(P2!=0xff) delay(125); if(P2==0xff) return; if(P2==0xef) key1(); if(P2==0xdf) key2(); if(P2==0xbf) key3(); if(P2==0x7f) key4(); } 31 河南城建学院本科毕业设计(论文) 附录B 附录B:总电路图 32