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