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

📄 test.c

📁 读卡器 fm1702实现收发 zlg7290实现按键与显示控制
💻 C
字号:
/*
ZLG7290 演示程序
*/
#include "I2C.h"
#include "ZLG7290.h"
void  Clearall(void);

/*
函数:Test_DispBuf()
功能:测试直接写显存
*/
void Test_DispBuf()
{
	code char DispDat[16] ={0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A};//字母AbCdEFgHiJkLoPqr 的字形数据
	unsigned char  data n;
	unsigned char  data x;
	unsigned char reg;
	unsigned char dat;
	for( n=0;n<16;n++)
 	{
  	  for ( x=0; x<8; x++)
   	  {
   	     reg = ZLG7290_DpRam + x;
    	 dat = DispDat[n];
    	 ZLG7290_WriteReg(reg,dat);
   	  }
  	  Delay(10);
 	}
    Delay(100);
}
/*
函数:Test_Download()
功能:测试下载数据功能
*/
void Test_Download()
{
	unsigned char data x;	
	uchar data dat;
    uchar data aa[2]={0x60,0x88};
	uchar data bb[2]={0x60,0x00};
	//点亮所有数码管
	
	for ( x=0; x<8; x++ )
	{
	   I2C_Data_Write(ZLG7290_CmdBuf,2,&aa);
		Delay(10);
		aa[0]+=1;
	}
	Delay(100);
	//依次显示所有字型
	
	for ( dat=0; dat<32; dat++ )
	{
	    bb[0]=0x60;
		for ( x=0; x<8; x++ )
		{
			I2C_Data_Write(ZLG7290_CmdBuf,2,&bb);
			bb[0]+=1;Delay(10);
		}
		bb[1]+=1;
		Delay(10);
	}
}
/*
函数:Test_ScanNum()
功能:测试不同扫描位数
说明:扫描位数越少,数码管就越亮
*/
void Test_ScanNum()
{
	unsigned char data x;	
    uchar data aa[2]={0x60,0x88};
	//点亮所有数码管
	
	for ( x=0; x<8; x++ )
	{
	   I2C_Data_Write(ZLG7290_CmdBuf,2,&aa);
		Delay(10);
		aa[0]+=1;
	}
	Delay(100);
	for ( x=0; x<8; x++ )
	{
	 // x=i;
	  ZLG7290_WriteReg( ZLG7290_ScanNum,x);
  	  Delay(100);
	}
}
/*
函数:Test_Flash()
功能:测试闪烁功能
*/
void Test_Flash()
{
	uchar data dat0 = 0x01;
	uchar data x;
	//显示01234567
	for ( x=0; x<8; x++ )
	{
	  ZLG7290_cmd(x+0x60,x);
	  Delay(10);
	}
	//设置闪烁控制寄存器
	ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);
	//闪烁演示
	for ( x=0; x<8; x++ )
	{
	  ZLG7290_Flash(dat0);
	  dat0 <<= 1;
	  Delay(500);
	}
	//数码管的8 个位一起闪烁
	ZLG7290_Flash(0xFF);
	Delay(500);
	//停止闪烁
	ZLG7290_Flash(0x00);
	Delay(500);
}
/*
函数:Test_SegOnOff()
功能:测试段寻址功能
*/
void Test_SegOnOff()
{
	unsigned char data seg;
	ClearAll();
	Delay(100);
	for ( seg=0; seg<64; seg++ )
	{
	  ZLG7290_SegOnOff(seg,1);
	  Delay(3);
	}
	Delay(1000);
	for ( seg=0; seg<64; seg++ )
	{
	  ZLG7290_SegOnOff(seg,0);
	  Delay(3);
	}
	Delay(1000);
}
/*
函数:DispValue()
功能:显示100 以内的数值
参数:
x:显示位置,取值0~6
dat:要显示的数据,取值0~99
*/
void DispValue(uchar num)
{
  uchar data d;
  d=num/10;
  ZLG7290_cmd(0x60,d);
  Delay(5);
  d=num-d*10;
  ZLG7290_cmd(0x61,d);
}
/*
函数:DispHexValue()
功能:以16 进制方式显示数值
参数:
x:显示位置,取值0~6
dat:要显示的数据,取值0~255
*/
/*void DispHexValue( unsigned char dat)
{
	unsigned char data d;
	d = dat / 16;
    ZLG7290_cmd(0x63,d);
	Delay(5);
	d = dat - d * 16;
	ZLG7290_cmd(0x64,d);
}*/
/*
函数:Test_Key()
功能:测试按键功能
*/
void Test_Key()
{
	EA = 0;
	EX1 = 1; //允许外部中断
	
	EA = 1;
    PCON |= 0x01; //使CPU 进入空闲状态,任一中断可唤醒	
}
void int1() interrupt 2 using 0
{
   	unsigned char data KeyValue;
//	unsigned char data RepeatCnt;
//	unsigned char data FnKeyValue;
	//读取键值、连击计数器值、功能键值
	KeyValue=ZLG7290_ReadReg(ZLG7290_Key);
	Delay(10);
//	RepeatCnt=ZLG7290_ReadReg(ZLG7290_RepeatCnt);
//	Delay(10);
 // FnKeyValue=ZLG7290_ReadReg(ZLG7290_FunctionKey);
	Delay(10);
	//显示键值、连击计数器值、功能键值
	DispValue(KeyValue);
	Delay(100);
//	DispHexValue(RepeatCnt);
//	Delay(100);
//	DispHexValue(6,FnKeyValue);	
}
void main(void)
{   
    Clearall();
	while (1)
	{   		
	// 	Test_DispBuf(); //测试直接写显存
	//	Delay(500);
	//	Test_Download(); //测试下载数据
	//	Delay(500);
	//	Test_ScanNum(); //测试不同扫描位数
	//	Delay(500);
	//	Test_Flash(); //测试闪烁功能
	//	Delay(500);
	//	Test_SegOnOff(); //测试段寻址功能
		Test_Key(); //测试键盘功能
	}
}

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -