找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

求大神们看一下,那一段程序调波形,那一段程序调脉宽,急啊

[复制链接]
jjshr527 发表于 2015-5-15 17:22:30 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
#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++){}
}
}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-23 11:11 , Processed in 0.057587 second(s), 11 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表