📄 zlg7290.txt
字号:
//最后修改时间 : 2004-2-18
//*****************************************************************
u08 I2c_Send(u08 icadder, u08 adder, u08 value)
{
if (adder >0x17)
return False;
Start_I2c();
I2c_Send_Byte(icadder); //写入IC地址
_Nop(15);
I2c_Send_Byte(adder); //写入寄存器地址
_Nop(15);
I2c_Send_Byte(value); //写入值
_Nop(30);
Stop_I2c();
return True;
}
//==============================================
//ZLG7290接口部分
//==============================================
//*****************************************************************
//函 数 名 : ZLG_Get_Key
//建 立 时 间 : 2004-2-18
//功 能 描 述 : 从ZLG7290里读取键盘数值
//备 注 : 有返回值,返回的为读取的按键值,如果是0则是没有按键读回
//最后修改时间 : 2004-2-19
//*****************************************************************
u08 ZLG_Get_Key(void)
{
u08 tmp;
tmp = 0;
I2c_Read(zlg7290, 0x01, 0x01, &tmp);
_Nop(1);
return tmp;
}
//*****************************************************************
//函 数 名 : ZLG_Disp_Cnt
//建 立 时 间 : 2004-2-18
//功 能 描 述 : 向ZLG7290写入要显示的数码管的数量(0--7)
//备 注 : 有返回值,成功写入数据返回True,注意ZLG7290扫描位数寄存器的设置
//最后修改时间 : 2004-2-19
//*****************************************************************
u08 ZLG_Disp_Cnt(u08 Count)
{
u08 tmp;
tmp = 0;
if (Count > 0x07)
return False;
I2c_Send(zlg7290,0x0D,Count);
_Nop(1);
I2c_Read(zlg7290,0x0D,0x01,&tmp);
asm("nop");
if (tmp == Count)
return True;
else
return False;
}
//*****************************************************************
//函 数 名 : ZLG_Disp_LED
//建 立 时 间 : 2004-2-18
//功 能 描 述 : 向ZLG7290写入要显示的数码管和内容.
//备 注 : 有返回值,成功写入数据返回True,注意ZLG7290扫描位数寄存器的设置
//最后修改时间 : 2004-2-19
//*****************************************************************
u08 ZLG_Disp_LED(u08 Led_Index,u08 Led_Num)
{
u08 tmp;
tmp = 0;
if ((Led_Index < 0x10) || (Led_Index > 0x17))
return False;
I2c_Send(zlg7290,Led_Index,Led_Num);
asm("nop");
I2c_Read(zlg7290,Led_Index,0x01,&tmp);
asm("nop");
if (tmp == Led_Num)
return True;
else
return False;
}
//*****************************************************************
//函 数 名 : ZLG_Cls
//建 立 时 间 : 2004-2-18
//功 能 描 述 : 清LED显示,Type =0 全部清除显示为0,Type=1 全部不显示,默认为1
//备 注 : 有返回值,成功则返回True,失败返回False
//最后修改时间 : 2004-2-18
//*****************************************************************
u08 ZLG_Cls(u08 Type)
{
u08 tmp,i;
u08 Num;
tmp = 0;
Num = 0x00;
if (Type == 0x00)
Num = 0xFC;
for(i=0;i<8;i++)
{
I2c_Send(zlg7290,SubDpRam+i,Num);
asm("nop");
asm("nop");
}
_Nop(1);
for(i=0;i<8;i++)
{
I2c_Read(zlg7290,SubDpRam+i,0x01,&tmp);
if(tmp != Num)
return False;
}
_Nop(1);
return True;
}
#ifndef USE_INT
//*****************************************************************
//函 数 名 : ZLG_Check_Key
//建 立 时 间 : 2004-2-19
//功 能 描 述 : 检查是否有按键,只有在没有定义过USE_INT后才能使用
//备 注 : 有返回值 ,如果返回True表示有按键产生
//最后修改时间 : 2004-2-19
//*****************************************************************
u08 ZLG_Check_Key(void)
{
u08 tmp;
I2c_Read(zlg7290,0x00,0x01,&tmp);
if ((tmp & 0x01) == 0x01 )
return True;
else
return False;
}
#endif
//*****************************************************************
//函 数 名 : ZLG_Read_Reg
//建 立 时 间 : 2004-2-19
//功 能 描 述 : 读取指定寄存器,作为I2c的读取数据的API使用,扩展功能用
//备 注 : 有返回值
//最后修改时间 : 2004-2-19
//*****************************************************************
u08 ZLG_Read_Reg(u08 reg)
{
u08 tmp;
tmp = 0;
I2c_Read(zlg7290,reg,0x01,&tmp);
return tmp;
}
//*****************************************************************
//函 数 名 : ZLG_Write_reg
//建 立 时 间 : 2004-2-19
//功 能 描 述 : 向指定寄存器写入数据,作为I2c的写入数据的API使用,扩展功能用
//备 注 : 有返回值
//最后修改时间 : 2004-2-19
//*****************************************************************
u08 ZLG_Write_reg(u08 reg, u08 value)
{
u08 tmp;
tmp = 0;
I2c_Send(zlg7290,reg,value);
_Nop(1);
I2c_Read(zlg7290,reg,0x01,&tmp);
if (tmp == value)
return True;
else
return False;
}
//*****************************************************************
//函 数 名 : RST_ZLG
//建 立 时 间 : 2004-2-19
//功 能 描 述 : 由于ZLG的不稳定,控制它的复位,达到整个系统的健壮
//备 注 : 有返回值,此函数未经实际测试
//最后修改时间 : 2004-2-19
//*****************************************************************
#ifdef USE_RST
void delay(u16 dly_Time)
{
u16 i,t;
t = dly_Time;
while(t--)
for(i=0;i<6300;i++);
}
u08 RST_ZLG(void)
{
u08 tmp;
tmp = 0x00;
RST_0;
delay(400); //延时100未经实际测试
_Nop(2);
RST_1;
I2c_Send(zlg7290,0x00,0xF0);
_Nop(10);
I2c_Read(zlg7290,0x00,0x01,&tmp);
if(tmp == 0xF0)
return True;
else
return False;
}
#endif
//##################程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -