?? zlg7290.txt
字號(hào):
//最后修改時(shí)間 : 2004-2-18
//*****************************************************************
u08 I2c_Send(u08 icadder, u08 adder, u08 value)
{
if (adder >0x17)
return False;
Start_I2c();
I2c_Send_Byte(icadder); //寫(xiě)入IC地址
_Nop(15);
I2c_Send_Byte(adder); //寫(xiě)入寄存器地址
_Nop(15);
I2c_Send_Byte(value); //寫(xiě)入值
_Nop(30);
Stop_I2c();
return True;
}
//==============================================
//ZLG7290接口部分
//==============================================
//*****************************************************************
//函 數(shù) 名 : ZLG_Get_Key
//建 立 時(shí) 間 : 2004-2-18
//功 能 描 述 : 從ZLG7290里讀取鍵盤(pán)數(shù)值
//備 注 : 有返回值,返回的為讀取的按鍵值,如果是0則是沒(méi)有按鍵讀回
//最后修改時(shí)間 : 2004-2-19
//*****************************************************************
u08 ZLG_Get_Key(void)
{
u08 tmp;
tmp = 0;
I2c_Read(zlg7290, 0x01, 0x01, &tmp);
_Nop(1);
return tmp;
}
//*****************************************************************
//函 數(shù) 名 : ZLG_Disp_Cnt
//建 立 時(shí) 間 : 2004-2-18
//功 能 描 述 : 向ZLG7290寫(xiě)入要顯示的數(shù)碼管的數(shù)量(0--7)
//備 注 : 有返回值,成功寫(xiě)入數(shù)據(jù)返回True,注意ZLG7290掃描位數(shù)寄存器的設(shè)置
//最后修改時(shí)間 : 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;
}
//*****************************************************************
//函 數(shù) 名 : ZLG_Disp_LED
//建 立 時(shí) 間 : 2004-2-18
//功 能 描 述 : 向ZLG7290寫(xiě)入要顯示的數(shù)碼管和內(nèi)容.
//備 注 : 有返回值,成功寫(xiě)入數(shù)據(jù)返回True,注意ZLG7290掃描位數(shù)寄存器的設(shè)置
//最后修改時(shí)間 : 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;
}
//*****************************************************************
//函 數(shù) 名 : ZLG_Cls
//建 立 時(shí) 間 : 2004-2-18
//功 能 描 述 : 清LED顯示,Type =0 全部清除顯示為0,Type=1 全部不顯示,默認(rèn)為1
//備 注 : 有返回值,成功則返回True,失敗返回False
//最后修改時(shí)間 : 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
//*****************************************************************
//函 數(shù) 名 : ZLG_Check_Key
//建 立 時(shí) 間 : 2004-2-19
//功 能 描 述 : 檢查是否有按鍵,只有在沒(méi)有定義過(guò)USE_INT后才能使用
//備 注 : 有返回值 ,如果返回True表示有按鍵產(chǎn)生
//最后修改時(shí)間 : 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
//*****************************************************************
//函 數(shù) 名 : ZLG_Read_Reg
//建 立 時(shí) 間 : 2004-2-19
//功 能 描 述 : 讀取指定寄存器,作為I2c的讀取數(shù)據(jù)的API使用,擴(kuò)展功能用
//備 注 : 有返回值
//最后修改時(shí)間 : 2004-2-19
//*****************************************************************
u08 ZLG_Read_Reg(u08 reg)
{
u08 tmp;
tmp = 0;
I2c_Read(zlg7290,reg,0x01,&tmp);
return tmp;
}
//*****************************************************************
//函 數(shù) 名 : ZLG_Write_reg
//建 立 時(shí) 間 : 2004-2-19
//功 能 描 述 : 向指定寄存器寫(xiě)入數(shù)據(jù),作為I2c的寫(xiě)入數(shù)據(jù)的API使用,擴(kuò)展功能用
//備 注 : 有返回值
//最后修改時(shí)間 : 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;
}
//*****************************************************************
//函 數(shù) 名 : RST_ZLG
//建 立 時(shí) 間 : 2004-2-19
//功 能 描 述 : 由于ZLG的不穩(wěn)定,控制它的復(fù)位,達(dá)到整個(gè)系統(tǒng)的健壯
//備 注 : 有返回值,此函數(shù)未經(jīng)實(shí)際測(cè)試
//最后修改時(shí)間 : 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); //延時(shí)100未經(jīng)實(shí)際測(cè)試
_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
//##################程序結(jié)束
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -