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

📄 wave_cod.c

📁 完全调好用单片机产生的正弦波的程序
💻 C
字号:
/******************************************
 request:out put 1khz,10khz,100khz,1mhz
*******************************************/     
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>

#define  uchar unsigned char
#define  uint  unsigned int

#define  DAC0832 XBYTE[0X7FFF]//选通ADC0832
#define  bit_add XBYTE[0XBFFF]//送位码地址
#define  seg_add XBYTE[0XDFFF]//送段码地址

uchar   key;

bit  flag1=0;
bit  flag2=0;
bit  flag3=0;
bit  flag4=0;
bit  flag5=0;

unsigned char code wave[]=
{
 128, 131, 134, 137, 140, 143, 146, 149, 152, 156,
 159, 162, 165, 168, 171, 174, 176, 179, 182, 185,
 188, 191, 193, 196, 199, 201, 204, 206, 209, 211,
 213, 216, 218, 220, 222, 224, 226, 228, 230, 232,
 234, 236, 237, 239, 240, 242, 243, 245, 246, 247,
 248, 249, 250, 251, 252, 252, 253, 254, 254, 255,
 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
 254, 254, 253, 252, 252, 251, 250, 249, 248, 247,
 246, 245, 243, 242, 240, 239, 237, 236, 234, 232,
 230, 228, 226, 224, 222, 220, 218, 216, 213, 211,
 209, 206, 204, 201, 199, 196, 193, 191, 188, 185,
 182, 179, 176, 174, 171, 168, 165, 162, 159, 156,
 152, 149, 146, 143, 140, 137, 134, 131, 127, 124,
 121, 118, 115, 112, 109, 106, 103, 99, 96, 93,
 90, 87, 84, 81, 79, 76, 73, 70, 67, 64,
 62, 59, 56, 54, 51, 49, 46, 44, 42, 39,
 37, 35, 33, 31, 29, 27, 25, 23, 21, 19,
 18, 16, 15, 13, 12, 10, 9, 8, 7, 6,
 5, 4, 3, 3, 2, 1, 1, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
 2, 3, 3, 4, 5, 6, 7, 8, 9, 10,
 12, 13, 15, 16, 18, 19, 21, 23, 25, 27,
 29, 31, 33, 35, 37, 39, 42, 44, 46, 49,
 51, 54, 56, 59, 62, 64, 67, 70, 73, 76,
 79, 81, 84, 87, 90, 93, 96, 99, 103, 106,
 109, 112, 115, 118, 121, 124
};

unsigned char i=0;
void delay1ms(unsigned int n)      
{
    unsigned int m=0,j=0;
    for (m=n;m>0;m--)
     for (j=0;j<120;j++);  
}

/******squre wave******/
void squre_wave(void)
{
 DAC0832=0xff;
 
 DAC0832=0;
}

/*****san jiao   wave*****/
void threeangle_wave(void)
{uchar i;
 for(i=0;i<255;i++)
    DAC0832=i;
 for(i=255;i>0;i--)
    DAC0832=i;
}
/*****juchi wave******/
void juchi_wave(void)
{uchar i;
 for(i=0;i<255;i++)
    DAC0832=i;
}
/*****KEY SCAN******/
void scan_key(void)
{
 if(P1&0XFF!=0XFF)
   {delay_10ms();
    if(P1&0XFF!=0XFF)
	   {key=P1;
	   }
   }
}
/*****KEY PROCESS*****/
void key_process(void)
{uchar temp;
 temp=key;
 switch (temp)
        {case:0xfe  flag1=1;flag2=0;flag3=0;flag4=0;flag5=0;break;
		 case:0xfd  flag1=0;flag2=1;flag3=0;flag4=0;flag5=0;break;
		 case:0xfb  flag1=0;flag2=0;flag3=1;flag4=0;flag5=0;break;
		 case:0xf7  flag1=0;flag2=0;flag3=0;flag4=1;flag5=0;break;
		 case:0xef  flag1=0;flag2=0;flag3=0;flag4=0;flag5=1;break;
		 default:break;
		}
}
/******main function*****/
void main()
{
 while(1)
 {
  DAC0832=wave[i++];
  delay1ms(1000);
 }
}

time0() interrupt 1 using 1
{ 

   if(flag1==1)
     { TH0=(65535-numh)/256;
       TL0=(65535-numl)/256;
	 
	   uchar i;
	   DAC0832=wave[i++];
	   if(i==255)
	     i=0;
     }
   if(flag2==0)
    {
     TH0=(65535-numh)/256;
     TL0=(65535-numl)/256;

	 if(++t_on==100)DAC0832=0xff;
     else DAC0832=0;
    }
  
}

⌨️ 快捷键说明

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