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

📄 zlg8279_1.c

📁 单片机键盘控制程序
💻 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 + -