📄 zlg7290.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 + -