#include <AT89X51.H>unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66};// 0 1 2 3 4 unsigned char
time1; //////延时函数参数/////// /////////////////////////////变量说明////////////////////////////////////// unsigned char time2;unsigned char time3;unsigned char count;unsigned char ms;////////////////////////////////////////函数说明//////////////////////////////// void initial(void); ////初始化函数//////void initial_time0(void); //////定时器0初始化/////// void anjian(void); ////////////按键函数////void delay(unsigned char time1,time2,time3); ////延时函数////void disp(unsigned char count); /////静态显示子函数/////void delay1(char ms); void fangbo(void); //方波函数//void sanjiaobo(void); //三角波函数//void juchibo(void); //锯齿波函数//void tixingbo(void); //正弦波函数// void main (void){ initial(); while(1) { anjian(); }}/*************************************************************************//函数名称:void anjian(void)//函数说明:按键函数//函数功能:// 注意:*************************************************************************/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();} /*************************************************************************//函数名称:void fangbo(void)//函数说明:方波函数//函数功能:// 注意:*************************************************************************/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); } }/*************************************************************************//函数名称:voidsanjiaobo(void)//函数说明:三角波函数//函数功能:// 注意:*************************************************************************/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); }}/*************************************************************************//函数名称:voidjuchibo(void)//函数说明:锯齿波函数//函数功能:// 注意:*************************************************************************/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); } }/*************************************************************************//函数名称:void tixingbo(void)//函数说明:梯形波函数//函数功能:// 注意:*************************************************************************/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); }}/*************************************************************************//函数名称:voidinitial(void)//函数说明:初始化函数//函数功能:// 注意:*************************************************************************/void initial(void) { P0=0xff; P1=0xff; P2=0xff; P3=0xff; }/*************************************************************************//函数名称:delay(unsignedchar time1,time2,time3)//函数说明:延时函数//函数功能://入口参数:unsigned chartime1,time2,time3//出口参数:// 注意:延时时间的计算:(time1*time2*time3*8us)us time1,time2,time3可以不进行变量说明 *************************************************************************/ 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--); } } }/*************************************************************************//函数名称:disp(unsignedchar count)//函数说明:静态显示子函数//函数功能://入口参数:unsigned charcount//出口参数:// 注意:*************************************************************************/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++){} }}
一周热门 更多>