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

📄 zlg7290.c

📁 ucos v2.62 安装程序 附带已移植到C8051F020的UCOS源码
💻 C
字号:
#include "zlg7290.h"
#include "IIC.h"
#include <C8051F020.H>

/***********************************************************************
*函数:       ZLG7290_WriteReg()
*调用函数:   bit SmbSend (unsigned char slaveAddr, unsigned char subAddr, 
*                          unsigned char subMod, unsigned char size, unsigned char *sendPtr)
*功能:       向ZLG7290 的某个内部寄存器写入数据
*参数:
*             RegAddr:ZLG7290 的内部寄存器地址
*             dat:要写入的数据
*返回:
*             1:正常
*             0:访问ZLG7290 时出现异常
************************************************************************/
unsigned char  ZLG7290_WriteReg(unsigned char regAddr, unsigned char dat)
{
   unsigned char  b;
   b = SmbSend(ZLG7290_I2C_ADDR, &regAddr, 1, 1, &dat);
   return b;
}
/***********************************************************************
*函数:    ZLG7290_ReadReg()
*功能:    从ZLG7290 的某个内部寄存器读出数据
*调用函数:bit SmbRec(unsigned char slaveAddr,unsigned char subAddr,
                      unsigned char subMod,unsigned char size, unsigned char *recPtr )
*参数:
*          RegAddr:ZLG7290 的内部寄存器地址
*          *dat:保存读出的数据
*返回:
*          1:正常
*          0:访问ZLG7290 时出现异常
************************************************************************/
unsigned char  ZLG7290_ReadReg(unsigned char regAddr, unsigned char *dat)
{
   unsigned char  b;
   b = SmbRec(ZLG7290_I2C_ADDR, &regAddr, 1, 1, dat);
   return b;
}

/***********************************************************************
*函数:ZLG7290_Cmd()
*功能:向ZLG7290 发送控制命令
*调用函数:   bit SmbSend (unsigned char slaveAddr, unsigned char subAddr, 
*                          unsigned char subMod, unsigned char size, unsigned char *sendPtr)
*参数:
*      cmd0:写入CmdBuf0 寄存器的命令字(第1 字节)
*      cmd1:写入CmdBuf1 寄存器的命令字(第2 字节)
*返回:
*      1:正常
*      0:访问ZLG7290 时出现异常
**********************************************************************/
unsigned char ZLG7290_Cmd(unsigned char cmd0, unsigned char cmd1) reentrant 
{
   unsigned  b;
   unsigned char buf[2];
   unsigned char cmdBuf;
   cmdBuf = ZLG7290_CmdBuf;
   buf[0] = cmd0;
   buf[1] = cmd1;
   b = SmbSend(ZLG7290_I2C_ADDR,&cmdBuf,1,2,buf);
return b;
}

/*******************************************************************
*函数:ZLG7290_SegOnOff()
*功能:段寻址,单独点亮或熄灭数码管(或LED)中的某一段
*参数:
*      seg:取值0~63,表示数码管(或LED)的段号
*      b:0 表示熄灭,1 表示点亮
*返回:
*      0:正常
*      1:访问ZLG7290 时出现异常
*说明:
*      在每一位数码管中,段号顺序按照“a,b,c,d,e,f,g,dp”进行
*******************************************************************/
unsigned char  ZLG7290_SegOnOff(unsigned char seg, unsigned char  b)
{
   unsigned char cmd;
   cmd = seg & 0x3F;
   if ( b ) 
   cmd |= 0x80;
   return ZLG7290_Cmd(0x01,cmd);
}

/*****************************************************************
*函数:ZLG7290_Download()
*功能:下载数据并译码
*
*参数:
*      addr:取值0~7,显示缓存DpRam0~DpRam7 的编号
*      dp:是否点亮该位的小数点,0-熄灭,1-点亮
*      flash:控制该位是否闪烁,0-不闪烁,1-闪烁
*      dat:取值0~31,表示要显示的数据
*返回:
*      1:正常
*      0:访问ZLG7290 时出现异常
*说明:
*      显示数据具体的译码方式请参见ZLG7290 的数据手册
*****************************************************************/
unsigned char  ZLG7290_Download(unsigned char addr, unsigned char  dp, unsigned char  flash, unsigned char dat)
{
   unsigned char cmd0;
   unsigned char cmd1;
   cmd0 = addr & 0x0F;
   cmd0 |= 0x60;
   cmd1 = dat & 0x1F;
   if ( dp ) 
      cmd1 |= 0x80;
   if ( flash ) 
      cmd1 |= 0x40;
   return ZLG7290_Cmd(cmd0,cmd1);
}

void ZLG7290_GetKey(unsigned char * keyValue)
{
	while(IE0==0);
	ZLG7290_ReadReg(ZLG7290_Key,keyValue);	 //读取键值、
	 
	
}
void ZLG7290_GetRepeatCnt(unsigned char *repeatCnt)
{
    while(IE0==0);
	ZLG7290_ReadReg(ZLG7290_RepeatCnt,repeatCnt); // 连击计数器值

}
/*****************************************************************
*函数:ZLG7290_Clear(char a)
*功能:清除指定位的显示
*
*参数:
*      a:   取小于-1全部清除,a>=0,a<=7 时清楚该位的显示

*返回: 无

*说明:
*      显示数据具体的译码方式请参见ZLG7290 的数据手册
*/
void ZLG7290_Clear(char a)
{	
	unsigned char i = 0;
	if(a<=-1)
	{
		for(i=0;i<8;i++)
		ZLG7290_Download(i,0,0,0x1f);
	}
	if(a>-1&&a<8)
		ZLG7290_Download(a,0,0,0x1f);
	if(a>=8)
	return;
}
unsigned char ZLG7290_DispValue(unsigned char x, unsigned long int dat)
{
    unsigned char d[8];
	unsigned char i = 0;
	unsigned char j;
	while(dat>0)
	{
	    d[i] = dat%10;
		dat /= 10;
		i++;    
	}
	if(x<i-1)
	    return 0;
	for(j=0;j<i;j++)
	{
      ZLG7290_Download(x-j,0,0,d[j]);
    }
	return 1;
}

⌨️ 快捷键说明

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