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

📄 hd7279.c

📁 DDS数字信号发生器,采用AD9835DDS 专用芯片 输出范围1K--10MHZ 采用X25045作看门狗及数据存储器
💻 C
字号:
#define _HD7279_C_Def
#include "hd7279.h"
void write7279(unsigned char cmd, unsigned char dta);
unsigned char read7279(unsigned char command);
void send_byte( unsigned char out_byte);
unsigned char receive_byte(void);
void long_delay(void);
void short_delay(void);


//向HD7279发送纯指令
//cmd: 指令
void SendInstructTo7279(unsigned char cmd)
{
  clk_HD7279 = 0;
  _nop_();
  _nop_();
  cs_HD7279 = 0;
  send_byte (cmd);
  long_delay();
  cs_HD7279 = 1;
}
//bitNo:0~7, 要设置那一位LED
//data: 该位LED要显示的数据, 格式为: DP|X|X|X|d3|d2|d1|d0 ,其中DP为小数点, X=无影响 , d0~d3为数据
//transMode: 0=译码方式0; 1=译码方式1;others=不译码
unsigned char SetupLedData(unsigned char bitNo, unsigned char dat, unsigned char transMode)

{
 if( bitNo > 7) return 0;
 if( transMode==0 )
   bitNo = bitNo | DECODE0;
 else if( transMode==1 )
   bitNo = bitNo | DECODE1;
 else
   bitNo = bitNo | UNDECODE;

 write7279(bitNo, dat);
 
 return 1;
}
//flashCon: d8|...|d1 , d1到d8分别对应数码管1-8, 0=闪烁, 1=不闪烁
void Flash7279(unsigned char flashCon)
{
  write7279(BLINKCTL, flashCon);
  return;
}
//hideCon: d8|...|d1 , d1到d8分别对应数码管1-8, 0=消隐, 1=显示
void Hide7279(unsigned char hideCon)
{
  write7279(ACTCTL, hideCon);
  return;
}
//conOn:  X|X|d6|...|d1, d0-d5范围为00H-3FH .从第1个数码管到第8个数码管,从G段到A,DP段 依次为每段编码.
void SegOn7279(unsigned char conOn)
{
  write7279(SEGON, conOn);  
  return;
}
//conOff:  X|X|d6|...|d1, d0-d5范围为00H-3FH .从第1个数码管到第8个数码管,从G段到A,DP段 依次为每段编码.
void SegOff7279(unsigned char conOff)
{
  write7279(SEGOFF, conOff);
  return;
}
unsigned char Read7279KeyCode(void)
{
  return read7279(CMD_READ);
}

//向HD7279发送数据
void write7279(unsigned char cmd, unsigned char dta)
{
  clk_HD7279 = 0;
  _nop_();
  _nop_();
  cs_HD7279 = 0;
  send_byte (cmd);
  send_byte (dta);
  long_delay();
  cs_HD7279 = 1;
}
unsigned char read7279(unsigned char command)
{
  clk_HD7279 = 0;
  _nop_();
  _nop_();
  cs_HD7279 = 0;
  send_byte(command);
  return(receive_byte());
}
void send_byte( unsigned char out_byte)
{
  unsigned char i;
  long_delay();
  for ( i=0;i<8;i++ )
  {
    if (out_byte & 0x80)  dat_HD7279 = 1;
    else                  dat_HD7279 = 0;
    _nop_();
    _nop_();
    clk_HD7279 = 1;
    short_delay();
    clk_HD7279 = 0;
    short_delay();
    out_byte = out_byte<<1;
  }
  dat_HD7279 = 0;
}

unsigned char receive_byte(void)
{
  unsigned char i, in_byte;
  dat_HD7279 = 1; //
  long_delay();
  for ( i=0;i<8;i++ )
  {
    clk_HD7279 = 1;
    short_delay();
    in_byte = in_byte << 1;
    if (dat_HD7279)
    {
      in_byte = in_byte|0x01;
    }
    clk_HD7279 = 0;
    short_delay();
  }
  dat_HD7279=0;
  
  long_delay();  
  cs_HD7279 = 1;
  return (in_byte);
}
void long_delay(void)
{
  unsigned char i;
  for (i=0;i<0x30;i++)
  _nop_();
}
void short_delay(void)
{
  unsigned char i;
  for (i=0;i<8;i++)
  _nop_();
}

⌨️ 快捷键说明

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