?? zlg7289.c
字號:
/****************************************************************************
* File:ZLG7289.C
* 功能:ZLG7289A鍵盤顯示芯片顯示驅動程序。
* 說明:MCS-51單片機,晶振不要大于12MHz。
****************************************************************************/
#include <Reg51.h>
#include "ZLG7289.H"
// 定義控制口線,用戶根據自已的系統相應更改
bit temp1;
/****************************************************************************
* 名稱:Delay8uS
* 功能:8uS軟件延時
* 說明:用戶根據自已的系統相應更改
****************************************************************************/
void Delay8uS(void)
{ uchar i;
for(i=0; i<4; i++);
}
/****************************************************************************
* 名稱:Delay50uS
* 功能:50uS軟件延時
* 說明:用戶根據自已的系統相應更改
****************************************************************************/
void Delay50uS(void)
{ uchar i;
for(i=0; i<25; i++);
}
/****************************************************************************
* 名稱:ZLG7289_SendByte
* 功能:發送字節數據,高位在前,符合ZLG7289傳輸協議。
* 入口參數:dat 待發送的數據
* 注意:使用此函數前要選擇ZLG7289,即ZLG7289_CS = 0;
* 本函數不操作ZLG7289_CS
****************************************************************************/
void ZLG7289_SendByte(uchar dat)
{ uchar i;
Delay50uS(); // 延時,T1
for(i=0; i<8; i++)
{ if( (dat&0x80)==0 ) ZLG7289_DIO = 0;
else ZLG7289_DIO = 1;
dat = dat<<1; // 數據移位
ZLG7289_CLK = 1; // 發送CLK脈沖
Delay8uS(); // 延時,T2
ZLG7289_CLK = 0;
Delay8uS(); // 延時,T3
}
ZLG7289_DIO = 0;
}
uchar ZLG7289_RcvByte()
{ uchar i,dat=0;
ZLG7289_DIO=1;
Delay50uS(); // 延時,T1
for(i=0; i<8; i++)
{
ZLG7289_CLK = 1;// 發送CLK脈沖
dat = dat<<1; // 數據移位
Delay8uS();
dat=dat+(uchar)ZLG7289_DIO;
ZLG7289_CLK = 0;
Delay8uS(); // 延時,T2
}
ZLG7289_DIO = 0;
return dat;
}
/****************************************************************************
* 名稱:ZLG7289_SendCommand
* 功能:向ZLG7289發送命令。
* 入口參數:com 待發送的命令字
****************************************************************************/
void ZLG7289_SendCommand(uchar com)
{
ZLG7289_CLK = 0;
ZLG7289_CS = 0;
ZLG7289_SendByte(com); // 將命令發送出去
ZLG7289_CS = 1;
}
uchar ZLG7289_GetKey()
{
uchar dat,i;
ZLG7289_CLK = 0;
ZLG7289_CS = 0;
Delay50uS();
dat=0x15; // 延時,T1
for(i=0; i<8; i++)
{ if( (dat&0x80)==0 ) ZLG7289_DIO = 0;
else ZLG7289_DIO = 1;
dat = dat<<1; // 數據移位
ZLG7289_CLK = 1; // 發送CLK脈沖
Delay8uS(); // 延時,T2
ZLG7289_CLK = 0;
Delay8uS(); // 延時,T3
}
dat=0;
Delay50uS();
for(i=0; i<8; i++)
{
ZLG7289_CLK = 1;// 發送CLK脈沖'
Delay8uS();
temp1=ZLG7289_DIO;
dat=dat<<1;
dat=dat+(uchar)temp1;
ZLG7289_CLK = 0;
Delay8uS();
}
ZLG7289_DIO = 0;
ZLG7289_CS = 1;
return dat;
}
/****************************************************************************
* 名稱:ZLG7289_SendData
* 功能:向ZLG7289發送數據。即帶數據的命令。
* 入口參數:com 待發送的命令字
* dat 待發送的數據
****************************************************************************/
void ZLG7289_SendData(uchar com, uchar dat)
{ ZLG7289_CLK = 0;
ZLG7289_CS = 0;
ZLG7289_SendByte(com);
Delay50uS(); // 延時,T4
ZLG7289_SendByte(dat);
ZLG7289_CS = 1;
}
/****************************************************************************
* 名稱:ZLG7289_SendBuf
* 功能:向ZLG7289發送顯示數據,8字節,不譯碼。
* 入口參數:buf 顯示數據緩沖區指針
****************************************************************************/
void ZLG7289_SendBuf(uchar *buf)
{ uchar i;
for(i=0; i<8; i++)
{ ZLG7289_SendData(Z_DISPADR1+i, *buf++);
}
}
/****************************************************************************
* 名稱:ZLG7289_FillDat
* 功能:顯示填充。顯示不譯碼。
* 入口參數:dat 待填充的顯示數據
****************************************************************************/
void ZLG7289_SendFillDat(uchar dat)
{ uchar i;
for(i=0; i<8; i++)
{ ZLG7289_SendData(Z_DISPADRX+i, dat);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -