⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlg7289a.c

📁 周立功的7289功能在这里了
💻 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 + -