#include <AT89X51.H> unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66}// 0 1 2 3 4 unsigned char time1; //////延時(shí)函數(shù)參數(shù)/////// /////////////////////////////變量說明////////////////////////////////////// unsigned char time2; unsigned char time3; unsigned char count; unsigned char ms; ////////////////////////////////////////函數(shù)說明//////////////////////////////// void initial(void); ////初始化函數(shù)//// //void initial_time0(void); //////定時(shí)器0初始化/////// void anjian(void); ////////////按鍵函數(shù)//// void delay(unsigned char time1,time2,time3); ////延時(shí)函數(shù)//// void disp(unsigned char count); /////靜態(tài)顯示子函數(shù)///// void delay1(char ms); void fangbo(void); //方波函數(shù)// void sanjiaobo(void); //三角波函數(shù)// void juchibo(void); //鋸齒波函數(shù)// void tixingbo(void); //正弦波函數(shù)// void main (void) { initial(); while(1) { anjian(); } } /************************************************************************* //函數(shù)名稱:void anjian(void) //函數(shù)說明:按鍵函數(shù) //函數(shù)功能: // 注意: *************************************************************************/ void anjian(void) { if(P3_7==0) {delay(1,50,248); if(P3_7==0) {count=1; disp(count); fangbo(); } } while(P3_7==0); count=0; disp(count); anjian(); } /************************************************************************* //函數(shù)名稱:void fangbo(void) //函數(shù)說明:方波函數(shù) //函數(shù)功能: // 注意: *************************************************************************/ void fangbo(void) { while(1) { unsigned char fangbo_1; fangbo_1+=8; if(fangbo_1>128&fangbo_1<256) {P0=0x00;} if(fangbo_1<128) {P0=0xff;} if(P3_7==0) {delay(1,50,248); if(P3_7==0) { count=2; disp(count); sanjiaobo(); } } while(P3_7==0); } } /************************************************************************* //函數(shù)名稱:voidsanjiaobo(void) //函數(shù)說明:三角波函數(shù) //函數(shù)功能: // 注意: *************************************************************************/ void sanjiaobo(void) { while(1) { unsignedchar sanjiaobo_2; if(sanjiaobo_2<=128) {P0=sanjiaobo_2;} else {P0=255-sanjiaobo_2;} sanjiaobo_2+=5; if(sanjiaobo_2>=255) {sanjiaobo_2=0x00;} if(P3_7==0) { delay(1,50,248); if(P3_7==0) {count=3; disp(count); juchibo(); } } while(P3_7==0); } } /************************************************************************* //函數(shù)名稱:voidjuchibo(void) //函數(shù)說明:鋸齒波函數(shù) //函數(shù)功能: // 注意: *************************************************************************/ void juchibo(void) { while(1) { unsignedchar juchibo_3; if(juchibo_3<180) {P0=juchibo_3;} juchibo_3+=4; if(juchibo_3>=180) {juchibo_3=0x00;} if(P3_7==0) { delay(1,50,248); if(P3_7==0) {count=4; disp(count); tixingbo(); } } while(P3_7==0); } } /************************************************************************* //函數(shù)名稱:voidtixingbo(void) //函數(shù)說明:梯形波函數(shù) //函數(shù)功能: // 注意: *************************************************************************/ void tixingbo(void) { while(1) { unsignedchar tixingbo_4; if(tixingbo_4<120) {P0=tixingbo_4;} elseif(tixingbo_4==120) delay1(1); elseif(tixingbo_4<240) {P0=240-tixingbo_4;} if(tixingbo_4==240) {delay1(1);} if(tixingbo_4>240) { tixingbo_4=0x00; } tixingbo_4+=10; if(P3_7==0) {delay(1,50,248); if(P3_7==0) { count=0; disp(count); anjian(); } } while(P3_7==0); } } /************************************************************************* //函數(shù)名稱:voidinitial(void) //函數(shù)說明:初始化函數(shù) //函數(shù)功能: // 注意: *************************************************************************/ void initial(void) { P0=0xff; P1=0xff; P2=0xff; P3=0xff; } /************************************************************************* //函數(shù)名稱:delay(unsignedchar time1,time2,time3) //函數(shù)說明:延時(shí)函數(shù) //函數(shù)功能: //入口參數(shù):unsigned chartime1,time2,time3 //出口參數(shù): // 注意:延時(shí)時(shí)間的計(jì)算:(time1*time2*time3*8us)us time1,time2,time3可以不進(jìn)行變量說明 *************************************************************************/ void delay(unsigned char time1,time2,time3) { unsigned char i,j,k; for(i=time1;i>0;i--) { for(j=time2;j>0;j--) { for(k=time3;k>0;k--); } } } /************************************************************************* //函數(shù)名稱:disp(unsignedchar count) //函數(shù)說明:靜態(tài)顯示子函數(shù) //函數(shù)功能: //入口參數(shù):unsigned charcount //出口參數(shù): // 注意: *************************************************************************/ void disp(unsigned char count) { P2=table[count]; delay(1,5,248); } void delay1(char ms) { char ti; while(ms--) { for(ti=0;ti<16;ti++){} } }
|