lm2035.c

来自「数字式控制正弦波发生IC,简单的串口数据传输方式」· C语言 代码 · 共 73 行

C
73
字号
/*============================
      LM2035驱动程序
	  文件名:LM2035.c
===============================*/
#include"hardwareinterface.h"

#define fclk_in 11059200   //LM2035的基准频率


/*===========正弦波串行数据输入===========
入口参数:SINDATA为要产生相应频率的16位数据
==========================================*/
void SinData(unsigned int SINDATA)
{
  unsigned char i;

  Sin_LAT=0;
  for(i=0;i<16;i++)
  {
    Sin_SCK=0;
    if((SINDATA>>i)&0x0001)Sin_SID=1;
	else Sin_SID=0;
	if(i==15)
	{
	  Sin_LAT=1;
      Sin_LAT=0;
	 }
	Sin_SCK=1;
   } 
 }

/*============正弦波数据输出计算=========
入口参数:F为输入的频率值
出口参数:Sindata为F对应的16位数据

注释:由LM2035的数据书的公式

     F=fclk_in*(D15~D0)/2^23

	 Fmin=fclk_in/2^23
==========================================*/
unsigned int SinDataOut(unsigned int F)
{
  unsigned  long a;
  unsigned int Sindata;

  if(F<=500)
  {
    a=(unsigned long )F*8388608;
    Sindata=(unsigned int)(a/fclk_in);
   }
  else if(F>500&&F<=1000)
  {
    a=(unsigned long )F/10*8388608;
	Sindata=(unsigned int)(a/fclk_in*10);
   }
  else 
  {
    a=(unsigned long )F/100*8388608;
	Sindata=(unsigned int)(a/fclk_in*100);
   }
   return Sindata;
 }

/*===========低功耗模式==========*/
void SinPower(void)
{
  SinData(0);
  Sin_LAT=1;
 }


⌨️ 快捷键说明

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