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

📄 zlg7289.c

📁 AVR中mega162的串口以及zlg7289的例子
💻 C
字号:
#include "zlg7289.h"

//------------------------------------------------------------
void Delay_Nms(unsigned int ms) 
{ 
    while (ms--) 
        _delay_ms(1); 
} 

void Delay_Nus(unsigned int us) 
{ 
    while (us--) 
        _delay_us(1); 
} 
//-------------------------------------------------------------
void ZLG7289_SPI_Write(uchar dat) 
{
  unsigned char i; 
  ZLG7289_DATA_PORT_H ;
  ZLG7289_DATA_DDR_OUT ;
  
  for (i=0;i<8;i++) 
  {  
		ZLG7289_CLK_PORT_L ;
		Delay_Nus(5); 
		if(dat & 0x80)
			ZLG7289_DATA_PORT_H ;
		else          
			ZLG7289_DATA_PORT_L ;
		ZLG7289_CLK_PORT_H ;
		Delay_Nus(5); 
		dat <<= 1;	
  } 
}

////////////////////////////////////////////////////
/*
函数:ZLG7289_SPI_Read()
功能:从SPI 总线读取1 个字节的数据
返回:
读取到的数据
*/
uchar ZLG7289_SPI_Read(void)
{
   unsigned char i; 
  uchar dat=0 ;  
  ZLG7289_DATA_PORT_H ;
  ZLG7289_DATA_DDR_IN ;//需要有一个上升沿作为输入输出的转变
   for (i=0;i<9;i++) 
  {
	ZLG7289_CLK_PORT_H;
	Delay_Nus(5);
	dat = dat<<1; 
	if(ZLG7289_DATA_PINA)dat++;
	ZLG7289_CLK_PORT_L;
	Delay_Nus(5);
  } 
  return(dat);
}
/*
功能:执行ZLG7289 键盘命令
返回:
返回读到的按键值:0~63
如果返回0xFF 则表示没有键按下
*/
uchar ZLG7289_Key(void) 
{
	uchar key=0;
	ZLG7289_CS_PORT_L ;
	Delay_Nus(25);
	ZLG7289_SPI_Write(0x15);
	Delay_Nus(25);
	key = ZLG7289_SPI_Read();
	ZLG7289_CS_PORT_H ;
	Delay_Nus(25); 
	return key;
}
/*
函数:ZLG7289_Init()
功能:ZLG7289 初始化
参数:
t:SPI 总线的延时值设置,取值1-40(超出范围可能导致错误)
说明:
t的取值可以参照以下公式:t >= 5 * f1 / f2,其中f1 表示80C51 的
晶振频率,f2 表示ZLG7289 的晶振频率
*/
void ZLG7289_Init(void)
{
	ZLG7289_CS_DDR_OUT   ;
    ZLG7289_CLK_DDR_OUT  ;
	ZLG7289_DATA_DDR_OUT ;
    ZLG7289_KEY_DDR_IN   ;
   
	ZLG7289_CS_PORT_H    ;
	ZLG7289_KEY_PORT_R   ;
	ZLG7289_CLK_PORT_L   ;
	ZLG7289_DATA_PORT_H  ;
	Delay_Nus(25);  
}

⌨️ 快捷键说明

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