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

📄 mxh.c

📁 单片机控制实现的信号发生器
💻 C
字号:
/**********************************************************
制作者:长江大学电信学院梅旭红
QQ:707378760
Email:mxh20999@163.com
**********************************************************/
#include<reg52.h>
#include<absacc.h>

#define DAC0832 XBYTE[0x0fff]

float code table2[]={
								 
  100.0000 , 102.4541 , 104.9068 , 107.3565 , 109.8017  ,112.2411 , 114.6730 , 117.0962,  119.5090,


  121.9101 , 124.2980,  126.6713 , 129.0285,  131.3682 , 133.6890 , 135.9895,  138.2683,  140.5241,


  142.7555 , 144.9611,  147.1397,  149.2898  ,151.4103 , 153.4998 , 155.5570,  157.5808 , 159.5699,


  161.5232 , 163.4393 , 165.3173,  167.1559 , 168.9541,  170.7107,  172.4247 , 174.0951,  175.7209,


  177.3010 , 178.8346,  180.3208 , 181.7585 , 183.1470,  184.4854 , 185.7729,  187.0087  ,188.1921,


  189.3224 , 190.3989 , 191.4210 , 192.3880 , 193.2993 , 194.1544 , 194.9528 , 195.6940 , 196.3776,


  197.0031 , 197.5702 , 198.0785,  198.5278 , 198.9177 , 199.2480 , 199.5185 , 199.7290,  199.8795,


  199.9699 , 200.0000 , 199.9699,  199.8795 , 199.7290 , 199.5185 , 199.2480  ,198.9177  ,198.5278,


  198.0785,  197.5702,  197.0031 , 196.3776,  195.6940 , 194.9528 , 194.1544,  193.2993 , 192.3880,
 

  191.4210 , 190.3989 , 189.3224 , 188.1921,  187.0087,  185.7729 , 184.4854,  183.1470,  181.7585,


  180.3208,  178.8346 , 177.3010,  175.7209 , 174.0951 , 172.4247 , 170.7107,  168.9541 , 167.1559,


  165.3173 , 163.4393 , 161.5232,  159.5699 , 157.5808 , 155.5570 , 153.4998  ,151.4103 , 149.2898,
 

  147.1397 , 144.9611 , 142.7555 , 140.5241 , 138.2683 , 135.9895 , 133.6890,  131.3682,  129.0285,
 

  126.6713 , 124.2980 , 121.9101 , 119.5090 , 117.0962 , 114.6730 , 112.2411,  109.8017,  107.3565,
 

  104.9068,  102.4541 , 100.0000  , 97.5459 ,  95.0932,   92.6435,   90.1983 ,  87.7589 ,  85.3270,


   82.9038  , 80.4910 ,  78.0899  , 75.7020 ,  73.3287 ,  70.9715,   68.6318,   66.3110 ,  64.0105,


   61.7317  , 59.4759 ,  57.2445 ,  55.0389,   52.8603 ,  50.7102 ,  48.5897,   46.5002  , 44.4430,
 

   42.4192  , 40.4301,   38.4768 ,  36.5607 ,  34.6827,   32.8441 ,  31.0459 ,  29.2893 ,  27.5753,


   25.9049,   24.2791,   22.6990 ,  21.1654  , 19.6792  , 18.2415 ,  16.8530 ,  15.5146  , 14.2271,
 

   12.9913,   11.8079,   10.6776,    9.6011 ,   8.5790,    7.6120,    6.7007,    5.8456 ,   5.0472,
 

    4.3060 ,   3.6224 ,   2.9969 ,   2.4298  ,  1.9215 ,   1.4722  ,  1.0823  ,  0.7520 ,   0.4815,


    0.2710 ,   0.1205,    0.0301 ,        0  ,  0.0301  ,  0.1205 ,   0.2710  ,  0.4815  ,  0.7520,


    1.0823 ,   1.4722 ,   1.9215 ,   2.4298,    2.9969 ,   3.6224 ,   4.3060 ,   5.0472  ,  5.8456,


    6.7007  ,  7.6120  ,  8.5790,   9.6011  , 10.6776,   11.8079 ,  12.9913  , 14.2271,   15.5146,


   16.8530  , 18.2415,   19.6792 ,  21.1654 ,  22.6990 ,  24.2791  , 25.9049 ,  27.5753 ,  29.2893,


   31.0459 ,  32.8441 ,  34.6827,   36.5607  , 38.4768 ,  40.4301,   42.4192  , 44.4430  , 46.5002,


   48.5897  , 50.7102  , 52.8603,   55.0389 ,  57.2445 ,  59.4759,   61.7317 ,  64.0105 ,  66.3110,


   68.6318 ,  70.9715 ,  73.3287   ,75.7020 ,  78.0899,   80.4910,   82.9038  , 85.3270 ,  87.7589,


   90.1983,   92.6435 ,  95.0932 ,  97.5459 , 100.0000

						    };

/**********************延时函数*************************/
void delay(unsigned int i)
{
	while(i--);
}
/*********************方波**********************/
void fang()
{		
		DAC0832=0;
		delay(15);

		DAC0832=0xff;
		delay(15);
		
}
/********************锯齿波********************/
void jvchi()
{
	unsigned char i;	
		for(i=0;i<255;i++)
				{
					DAC0832=i;
				//	delay(10);
				}
		
}
/*********************三角波*******************/
void tran()
{
	unsigned char i;
	for(i=0;i<255;i++)
		{
			DAC0832=i;
	//		delay(10);
		}
	for(i=255;i>0;i--)
		{
			DAC0832=i;
		//	delay(10);
		}
}

/******************正弦波*********************/
void sin()
{
	unsigned int i;
	for(i=0;i<256;i++)
		{
			DAC0832=table2[i];
		//	delay(10);
		}

}
/*********************主函数********************/
void main(void)
{	
		while(1)
		{
			if(P1==0xfe)fang();
			if(P1==0xfd)jvchi();
			if(P1==0xfb)tran();
			if(P1==0xf7)sin();
			if(P1==0xff)DAC0832=0;
  	    }
		
}


⌨️ 快捷键说明

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