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

📄 lm2035.c

📁 数字式控制正弦波发生IC,简单的串口数据传输方式
💻 C
字号:
/*============================
      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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -