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

📄 hd7279.h

📁 hd7279驱动程序
💻 H
字号:
/************************************************************/
/*********         HD7279.h C51 driver          *************/
/***********************--20071009     **********************/
/************************************************************/


/************************************************************************************/
#define Set_Bit(BIT)          (BIT = 1) /*定义置1函数*/
#define Clear_Bit(BIT)          (BIT = 0) /*定义清0函数*/
/************************************************************************************/ 
void Init_HD7279(void); /*定义初始化函数*/
void DispChar(unsigned char x,unsigned char Data);
void Cls(unsigned char x);
void DispNumb(unsigned char x,unsigned int n,unsigned char number_bit);
//---------------------------
void Write_Hd7279(unsigned char,unsigned char); /*定义HD7279写函数*/
unsigned char Read_Hd7279(unsigned char); /*定义HD7279读函数*/
void Send_Byte(unsigned char); /*定义HD7279发送字节函数*/
unsigned char Receive_Byte(void); /*定义HD7279接收字节函数*/
void Short_Delay(void); /*定义短延时函数*/
void Long_Delay(void); /*定义长延时函数*/
/************************************************************************************/
unsigned char Keyboard_Out; /*定义键值变量*/
bit Keyboard_Flag; /*定义按键标志*/
/************************************************************************************/
sbit Hd7279_Cs=P2^7;
sbit Hd7279_Key=P3^2; /*定义HD7279中断硬件连接*/
sbit Hd7279_Clk=P2^2; /*定义HD7279时钟硬件连接*/
sbit Hd7279_Data=P2^1; /*定义HD7279数据硬件连接*/
/************************************************************************************/

/************************************************************************************/
void Init_HD7279(void) /*MCU初始化函数*/
{
	//Set_Bit(EX0); /*外部中断0使能*/
	//Set_Bit(IT0); /*外部中断0下降沿触发*/
	//Set_Bit(EA); /*中断使能*/
	Hd7279_Cs=0;
	Send_Byte(0xa4); /*HD7279复位*/
	Write_Hd7279(0x98,0x1f); /*HD7279启动消隐功能,能提高灯的亮度*/
}
/************************************************************************************/
void int1_Hd7279key(void) interrupt 0 /*外部中断0函数*/
{         
Keyboard_Out=Read_Hd7279(0x15); /*读取键值*/ 
if(Keyboard_Out<=0x04) 
{
Set_Bit(Keyboard_Flag);            /*设置键标志*/
}
} 
/************************************************************************************/  
void Short_Delay(void) /*短延时函数*/
{ 
unsigned char i;
  for(i=0;i<0x08;i++);
}
/************************************************************************************/
void Long_Delay(void) /*长延时函数*/
{
unsigned char i;
  for(i=0;i<0x30;i++);
}
/************************************************************************************/
/************************************************************************************/
void Write_Hd7279(unsigned char Command,unsigned char Data) /*HD7279写函数*/
{ 
Send_Byte(Command);
   Send_Byte(Data);
}
/************************************************************************************/
unsigned char Read_Hd7279(unsigned char Command) /*HD7279读函数*/
{ 
Send_Byte(Command);
   return(Receive_Byte());
 }
/************************************************************************************/ 
void Send_Byte(unsigned char Data_Out) /*HD7279发送字节函数*/
{ 
unsigned char i;
   Long_Delay();
   for(i=0;i<8;i++)
   { 
   if(Data_Out&0x80) Set_Bit(Hd7279_Data);
     else Clear_Bit(Hd7279_Data);
     Set_Bit(Hd7279_Clk);
     Short_Delay();
     Clear_Bit(Hd7279_Clk);
     Short_Delay();
     Data_Out=Data_Out<<1;
    }
    Clear_Bit(Hd7279_Data);
 }
/************************************************************************************/ 
unsigned char Receive_Byte(void)  /*HD7279接收字节函数*/
{ 
unsigned char i,Data_In;
  Set_Bit(Hd7279_Data);
   Long_Delay();
   for(i=0;i<8;i++)
   {
   Set_Bit(Hd7279_Clk);
    Short_Delay();
    Data_In=Data_In<<1;
    if(Hd7279_Data) Data_In=Data_In|0x01;
    Clear_Bit(Hd7279_Clk);
    Short_Delay();
    }
    Clear_Bit(Hd7279_Data);
    return(Data_In);
}
/************************************************************************************/ 
//-----------------------------------------------------------------------------
void DispChar(unsigned char x,unsigned char Data)
{
	 //Write_Hd7279(0xc8+x,Data);
	 Write_Hd7279(0x80+x,Data);
}
//-----------------------------------------------------------------------------
void Cls(unsigned char x)
{
	 //Write_Hd7279(0xc0,x);
	 DispChar(x,15);
}
//----------------------------------------------------------------------
void DispNumb(unsigned char x,unsigned int n,unsigned char number_bit)
{
	unsigned char digi[4];
	unsigned char i;

	digi[0]=n/1000;n=n-digi[0]*1000;
	digi[1]=n/100;n=n-digi[1]*100;
	digi[2]=n/10;n=n-digi[2]*10;
	digi[3]=n;

	for(i=0;i<number_bit;i++) DispChar(x+i,digi[4-number_bit+i]);
}
//----------------------------------------------------------------------
//------------------End of HD7279.H-------------------------------------

⌨️ 快捷键说明

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