#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);
}
}
/*************************************************************************
//函数名称:void sanjiaobo(void)
//函数说明:三角波函数
//函数功能:
// 注意:
*************************************************************************/
void sanjiaobo(void)
{
while(1)
{
unsigned char 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);
}
}
/*************************************************************************
//函数名称:void juchibo(void)
//函数说明:锯齿波函数
//函数功能:
// 注意:
*************************************************************************/
void juchibo(void)
{
while(1)
{
unsigned char 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)
{
unsigned char tixingbo_4;
if(tixingbo_4<120)
{P0=tixingbo_4;}
else if(tixingbo_4==120)
delay1(1);
else if(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);
}
}
/*************************************************************************
//函数名称:void initial(void)
//函数说明:初始化函数
//函数功能:
// 注意:
*************************************************************************/
void initial(void)
{
P0=0xff;
P1=0xff;
P2=0xff;
P3=0xff;
}
/*************************************************************************
//函数名称:delay(unsigned char time1,time2,time3)
//函数说明:延时函数
//函数功能:
//入口参数:unsigned char time1,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(unsigned char count)
//函数说明:静态显示子函数
//函数功能:
//入口参数:unsigned char count
//出口参数:
// 注意:
*************************************************************************/
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++){}
}
}
此帖出自
小平头技术问答
一周热门 更多>