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

📄 zlg7290.c

📁 FOR platform Calc candler
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: ZLG7290.C
**创   建   人: 叶皓贲
**最后修改日期:  2003-3-4
**描        述: ZLG7290库函数程序
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 叶皓贲
** 版  本: 0.01
** 日 期: 2003-3-4
** 描 述: ZLG7290库函数程序
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "config.h"
#include "I2CINT.h"

#define zlg7290 0x70 //ZLG7290的IIC地址

#define SubKey  0x01 
#define SubCmdBuf 0x07
#define SubDpRam 0x10
/*********************************************************************************************************
** 函数名称: 	DelayNS
** 功能描述: 	长软件延时
** 输 入: i :	延时参数,值越大时延时越久
**         
** 输 出: 无
** 全局变量:	无
** 调用模块: 	无
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void delayMS(unsigned char i)
{ 
	unsigned char j,k;
	for(k=0;k<i;k++)
		for(j=0;j<60;j++);
}

/*********************************************************************************************************
** 函数名称: 	ZLG7290_SendData
** 功能描述: 	发送数据
** 输 入:SubAdd :	输入数据
**       DATA 	:	输入值
**         
** 输 出: 0 : Fail
**        1 :  OK
** 全局变量:	无
** 调用模块: 	delayMS
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

unsigned char ZLG7290_SendData(unsigned char SubAdd,unsigned char Data)
{
	if(SubAdd>0x17)
		return 0;
	VICIntEnable = 1<<9;
	ISendStr(zlg7290,SubAdd,&Data,1);
	VICIntEnClr = 1<<9;	
	delayMS(10);
	return 1;
}
/*********************************************************************************************************
** 函数名称: 	ZLG7290_SendCmd
** 功能描述: 	发送命令(对子地址7、8)
** 输 入:DATA1  :	命令1
**       DATA2 	:	命令2
**         
** 输 出: 0 : Fail
**        1 :  OK
** 全局变量:	无
** 调用模块: 	ISendStr、delayMS
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

unsigned char ZLG7290_SendCmd(unsigned char Data1,unsigned char Data2)
{
unsigned char Data[2];	
	Data[0]=Data1;
	Data[1]=Data2;
	VICIntEnable = 1<<9;
	ISendStr(zlg7290,0x07,Data,2);
	delayMS(10);
	VICIntEnClr = 1<<9;	
	return 1;
}  
/*********************************************************************************************************
** 函数名称: 	ZLG7290_SendBuf
** 功能描述: 	向显示缓冲区发送数据
** 输 入: * disp_buf  	:	要发送数据的起始地址
**         num 		:	发送个数
**         
** 输 出: 无
** 全局变量:	无
** 调用模块: 	ZLG7290_SendCmd
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void	ZLG7290_SendBuf(unsigned char * disp_buf,unsigned char num)
{
	unsigned char i;
	for(i=0;i<num;i++)
	{	
		ZLG7290_SendCmd(0x60+i,*disp_buf);
		disp_buf++;
	}
}
/*********************************************************************************************************
** 函数名称: 	ZLG7290_GetKey
** 功能描述: 	读取键值
** 输 入: 无
**         
** 输 出: >0  键值
**        =0  无键按下
** 全局变量:	无
** 调用模块: 	IRcvStr、delayMS
**
** 作 者: 叶皓贲
** 日 期: 2003-3-4
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

unsigned char	ZLG7290_GetKey(void)
{
	unsigned char rece;
	rece=0;
	VICIntEnable = 1<<9;	
	IRcvStr(zlg7290,1,&rece,1);
	delayMS(10);
	VICIntEnClr = 1<<9;	
	return rece;
}



/****************************************Copyright (c)**************************************************
**------------------------------------------------------------------------------------------------------
**
** 创建人:  wgejygah
** 日 期:	2007-5-20
** 描 述:  ZLG7290驱动包增强版
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/




/*********************************************************************************************************
** 函数名称: 	ZLG7290_Flash
** 功能描述: 	闪烁控制
** 输 入:  Fn	:	闪烁控制指令(Fn应当是字节型)
**					Fn的8个位分别控制数码管的8个位是否闪烁,0-不闪烁,1-闪烁
**        
**         
** 输 出: 		无
** 全局变量:	无
** 调用模块: 	ZLG7290_SendCmd
********************************************************************************************************/
void	ZLG7290_Flash(unsigned char Fn)
{
	
		ZLG7290_SendCmd(0x70,Fn);
	
}


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

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


/*
函数:DispHexValue()
功能:以16进制方式显示数值
参数:
	x:显示位置,取值0~6
	dat:要显示的数据,取值0~255
*/
void ZLG7290_DispHex(signed char x, unsigned char dat)
{
	unsigned char d;
	d = dat / 16;
	ZLG7290_Download(x,0,0,d);
	d = dat - d * 16;
	ZLG7290_Download(x+1,0,0,d);
}

⌨️ 快捷键说明

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