⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 波形发生器.c

📁 基于DAC0832的单片机模拟DDS低频信号
💻 C
字号:
#include"reg51.h"
#define uchar unsigned char 
sbit ksaw=P1^0;    //锯齿波按键.
sbit ktran=P1^1;    //三角波按键.
sbit ksquare=P1^2;  //方波按键.
sbit ksin=P1^3;     //正弦波按键.
void delay( );
uchar  code tab[128]={
64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,
109,111,113,115,117,118,120,121,123,124,125,126,126,
127,127,127,127,127,127,127,126,126,125,124,123,121,
120,118,117,115,113,111,109,106,104,102,99,96,94,91,
88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,39,
36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,
1,0,0,0,0,0,0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,
25,28,31,33,36,39,42,45,48,51,54,57,60};
void delay( )
{
  uchar i;
  for(i=0;i<255;i++);
}

void saw(void)   //锯齿波.
{
 uchar i;
 while(1)
 {
  for(i=0;i<255;i++)
  P0=i;
  if(ksaw==0)
  delay( );
  if(ksaw==0)
  {
   while(ksaw==0);
   break;
  }
 }
}

void tran(void)  //三角波
{
 uchar i;
 while(1)
 {
  for(i=0;i<255;i++)
  P0=i;
  for(i=255;i>0;i--)
  P0=i;
  if(ktran==0)
   delay( );
   if(ktran==0)
   {
    while(ktran==0);
    break;
   }
  }
}

void square(void)  //方波
{
  while(1)
  {
   P0=0x00;
   delay();
   P0=0xff;
   delay();
   if(ksquare==0)
    delay( );
    if(ksquare==0)
    {
     while(ksquare==0);
   	 break;
    }   
  }

}

void sin( )    //正弦波
{
  unsigned int  i;
  while(1)
  {
   if(++i==128)i=0;
   P0=tab[i];
   if(ksin==0)
     delay( );
     if(ksin==0)
    {
      while(ksin==0);
      break;
    }	  
  }
}

void main(void)  //主函数
{
  if(ksaw==0)
  {
   delay( );
   if(ksaw==0)
   {
    while(ksaw==0);
    saw();
   }
  }

  if(ktran==0)
  {
   delay( );
   if(ktran==0)
   {
    while(ktran==0);
    tran( );
   }
  }

  if(ksquare==0)
  {
   delay( );
   if(ksquare==0)
   {
    while(ksquare==0);
    square( );
   }
  }

  if(ksin==0)
  {
   delay();
   if(ksin==0)
   {
    while(ksin==0);
    sin( );
   }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -