📄 zlg8279_1.c
字号:
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg51.h>
sbit ZLG7289_CS=P1^4; // ZLG7289_CS--P1.4
sbit ZLG7289_CLK=P1^5; // ZLG7289_CLK-- P1.5
sbit ZLG7289_DATA=P1^6; // ZLG7289_DATA-- P1.2
sbit ZLG7289_KEY =P1^7; // ZLG7289_KEY-- P1.3
#define RunKey 0x33
#define StopKey 0x22
//-----------------------接口定义--------------------------------------------------------
#define ZLG7289_RESET 0xa4 //复位
#define ZLG7289_TEST 0xbf //测试
#define ZLG7289_RLC 0xa3 //循环左移
#define ZLG7289_RRC 0xa2 //循环右移
#define ZLG7289_RL 0xa1 //左移
#define ZLG7289_RR 0xa0 //右移
#define ZLG7289_DECODE0 0x80 //译码方式0
#define ZLG7289_DECODE1 0xc8 //译码方式1
#define ZLG7289_UNDECODE 0x90 //译码方式2: 不译码
#define ZLG7289_HIDE 0x98 //消隐
#define ZLG7289_FLASH 0x88 //闪烁
#define ZLG7289_SEGON 0xe0 //段亮
#define ZLG7289_SEGOFF 0xc0 //段灭
#define ZLG7289_READ 0x15 //读
//-------------------------------- ------------------------------------------------------------------
// 函数名称: delay
// 入口参数: N
// 函数功能:延时子程序,实现(16*N+24)us的延时
// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
//--------------------------------------------------------------------------------------------------
void delay(unsigned int N)
{
int i;
for(i=0;i<N;i++);
}
/*--------------------------------------------
调用方式: void ZLG7289_LongDelay(void)
函数说明 >500ms
--------------------------------------------*/
void ZLG7289_LongDelay(void)
{
unsigned char i;
for (i=0;i<7;i++)
delay(5000); //定时80ms
}
//-----------------------------------------------------------------------
//调用方式:void ZLG7289_ShortDelay(void)
//函数说明:=500ms
//------------------------------------------------------------------------
void ZLG7289_ShortDelay(void)
{;}
//-----------------------------------------------------------------------
//调用方式:ZLG7289_SendByte
//入口参数: out_byte
//函数说明:送指令
//------------------------------------------------------------------------
void ZLG7289_SendByte( unsigned char out_byte)
{
unsigned char i;
ZLG7289_CS=0;
ZLG7289_LongDelay();
for(i=0;i<8;i++)
{
if(out_byte&0x80) { ZLG7289_DATA=1; }
else { ZLG7289_DATA=0; }
ZLG7289_CLK=1;
ZLG7289_ShortDelay();
ZLG7289_CLK=0;
ZLG7289_ShortDelay();
out_byte=out_byte<<1;
}
ZLG7289_DATA=0;
}
//-----------------------------------------------------------------------
//调用方式:void WRITE_ZLG7289(unsigned char command, unsigned char dta)
//入口参数: command,dta
//函数说明:写函数
//------------------------------------------------------------------------
void WRITE_ZLG7289(unsigned char command, unsigned char dta)
{
ZLG7289_SendByte( command );
ZLG7289_SendByte( dta );
}
//-----------------------------------------------------------------------
//调用方式:unsigned char ZLG7289_ReceiveByte(void)
//返回值: 接收到的数据
//函数说明:接受一个BYTE函数
//------------------------------------------------------------------------
unsigned char ZLG7289_ReceiveByte(void)
{
unsigned char i, in_byte;
ZLG7289_DATA=1;
ZLG7289_LongDelay();
for(i=0;i<8;i++)
{ZLG7289_CLK=1;
ZLG7289_ShortDelay();
in_byte=in_byte<<1;
if(ZLG7289_DATA) { in_byte=in_byte|0x01; }
ZLG7289_CLK=0;
ZLG7289_ShortDelay();
}
ZLG7289_DATA=0;
return (in_byte);
}
//-----------------------------------------------------------------------
//调用方式:unsigned char ZLG7289_GetKey()
//返回值: 接收到的按键值
//函数说明:读键盘函数
//------------------------------------------------------------------------
unsigned char ZLG7289_GetKey()
{
unsigned char key;
if(!ZLG7289_KEY)
{
ZLG7289_SendByte(ZLG7289_READ);
key=ZLG7289_ReceiveByte();
switch( key )
{
case RunKey:
case StopKey:
while(!ZLG7289_KEY);
default: return(0xff);
}
}
return(0xff);
}
//-----------------------------------------------------------------------
//主函数形式
//------------------------------------------------------------------------
main()
{
ZLG7289_SendByte(0xa4);//复位
WRITE_ZLG7289(0x80,0);//显示‘0’
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -