📄 zlg7289a.c
字号:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
static uchar bdata ucByte;
sbit SCLK_7289a = P2^0;
sbit SDIO_7289a = P2^1;
sbit CS_7289a = P2^2;
sbit KEY_7289a = P2^3;
sbit MSB_7289a = ucByte^7;
sbit LSB_7289a = ucByte^0;
void InitZlg7289a (void);
void TrZlg7289a (uchar ucCommand);
void TrZlg7289ad (uchar ucCommand , uchar ucDat);
uchar ReZlg7289a (void);
static void SendByte (void);
static void ReceiveByte (void);
static void Delay (uchar ucTime);
uchar dirsbuf[]={0,1,2,3,4,5,6,7};
/************************************************************************
* 函 数 名: InitZlg7289a(void)
* 功能模式: 全局 *
* 函数说明: ZLG7289A初始化,初始化命令:0xa4
* 调用函数: TrZlg7289a()
* 全局变量: 无
* 输 入: 无
* 返 回: 无 *************************************************************************/
void InitZlg7289a (void)
{
TrZlg7289a (0xa4);
}
/************************************************************************
* 函 数 名: void TrZlg7289a (uchar ucCommand)
* 功能模式: 全局
* 函数说明: 向ZLG7289A传送单指令函数
* 调用函数: Delay()、SendByte()
* 全局变量: ucByte
* 输 入: ucCommand
* 返 回: 无 ************************************************************************/
void TrZlg7289a (uchar ucCommand)
{
CS_7289a = 0;
SCLK_7289a = 0;
SDIO_7289a = 0;
Delay(50);
ucByte = ucCommand;
SendByte();
CS_7289a = 1;
SDIO_7289a = 1;
SCLK_7289a = 1;
}
/************************************************************************
* 函 数 名: void TrZlg7289ad (uchar ucCommand,uchar ucDat)
* 功能模式: 全局
* 函数说明: 向ZLG7289A传送带数据的指令函数
* 调用函数: Delay()、SendByte()
* 全局变量: ucByte
* 输 入: ucCommand、ucDat
* 返 回: 无 ************************************************************************/
void TrZlg7289ad (uchar ucCommand,uchar ucDat)
{
SCLK_7289a = 0;
SDIO_7289a = 0;
CS_7289a = 0;
Delay(50);
ucByte = ucCommand;
SendByte();
ucByte = ucDat;
SendByte();
CS_7289a = 1;
SDIO_7289a = 1;
SCLK_7289a = 1;
}
/************************************************************************
* 函 数 名: uchar ReZlg7289a (void) *
* 功能模式: 全局
* 函数说明: 从ZLG7289A读回按键的值,函数中使用键盘控制字0x15 *
* 调用函数: Delay()、SendByte()、ReceiveByte() *
* 全局变量: ucByte
* 输 入: 无
* 返 回: ucByte
************************************************************************/
uchar ReZlg7289a (void)
{
SCLK_7289a = 0;
SDIO_7289a = 0;
CS_7289a = 0;
Delay(50);
ucByte = 0x15;
SendByte();
ReceiveByte();
CS_7289a = 1;
SDIO_7289a = 1;
SCLK_7289a = 1;
return ucByte;
}
/************************************************************************
* 函 数 名: static void SendByte (void) *
* 功能模式: 内部
* 函数说明: 向ZLG7289A发送一个字节的数据。 *
* 调用函数: Delay()
* 全局变量: ucByte、MSB_7289a *
* 输 入: 无
* 返 回: 无 ************************************************************************/
static void SendByte (void)
{
uchar i;
for(i=0;i<8;i++)
{
SDIO_7289a = MSB_7289a;
SCLK_7289a = 1;
Delay(10);
ucByte <<= 1;
SCLK_7289a = 0;
Delay(10);
}
}
/************************************************************************
* 函 数 名: static void ReceiveByte (void)
* 功能模式: 内部
* 函数说明: 从ZLG7289A读回一个字节的数据。
* 调用函数: Delay()
* 全局变量: ucByte、LSB_7289a
* 输 入: 无
* 返 回: 无 ************************************************************************/
static void ReceiveByte (void)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK_7289a = 1;
Delay(10);
ucByte <<= 1;
LSB_7289a = SDIO_7289a;
SCLK_7289a = 0;
Delay(10);
}
}
/************************************************************************
* 函 数 名: static void Delay (uchar ucTime)
* 功能模式: 内部
* 函数说明: 延时函数。
* 调用函数: 无
* 全局变量: 无 * 输 入: ucTime
* 返 回: 无
************************************************************************/
static void Delay (uchar ucTime)
{
uchar i;
for(i=0;i<ucTime;i++)
;
}
/*************************************************************************/
void display(uchar *p)
{uchar i;
uchar seg[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x00};
for (i=0;i<8;i++)
{if(i==1|i==5)TrZlg7289ad (0x90+i,(seg[p[i]])|0x80);
else TrZlg7289ad (0x90+i,seg[p[i]]);}
}
main()
{InitZlg7289a ();
display(dirsbuf);
while(1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -