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

📄 led7279.c

📁 7279数码管显示驱动程序
💻 C
字号:

********************************************************************************************************/


#include <iom128v.h>
#include <macros.h>
#include <MATH.H>

/*--------------------------------------------
调用方式:自行I/O 口定义﹫2001/05/12 
函数说明:私有函数,各接口定义 
--------------------------------------------*/
#define   HD7279_CS_SEL                DDRE  |= BIT2
#define   HD7279_CS_CLR	               PORTE &=~BIT2   //低电平输出
#define   HD7279_CS_SET                PORTE |= BIT2

#define   HD7279_CLK_SEL               DDRE  |= BIT3
#define   HD7279_CLK_CLR	           PORTE &=~BIT3
#define   HD7279_CLK_SET  	           PORTE |= BIT3

#define   HD7279_DATA_OUTSEL           DDRE  |= BIT4
#define   HD7279_DATA_CLR	           PORTE &=~BIT4
#define   HD7279_DATA_SET  	           PORTE |= BIT4
#define   HD7279_DATA_INSEL            DDRE &= ~ BIT4
#define   HD7279_DATA_IN              (PINE>>4)&0x01


#ifdef HD7279
/*--------------------------------------------
调用方式:自定义函数﹫2001/05/12 
函数说明:私有函数,自行定义
--------------------------------------------*/
#define RunKey         0x02
#define StopKey        0x04

#define   HD7279_KEY_SEL     
#define   HD7279_KEY_CLR	  
#define   HD7279_KEY_SET  
#define   HD7279_KEY_IN
/*--------------------------------------------
调用方式: HD7279A 各指令定义﹫2001/05/12 
函数说明:私有函数,接口定义 
--------------------------------------------*/
void HD7279_Init(void)
{
    HD7279_CS_SEL;
	HD7279_CLK_SEL;
	HD7279_DATA_OUTSEL;
	HD7279_KEY_SEL;
}

/*--------------------------------------------
调用方式: void HD7279_LongDelay(void) 等侍函数﹫2001/05/12 
函数说明 私有函数,>500ms 
--------------------------------------------*/
void HD7279_LongDelay(void)
{ 
	unsigned char i; 
	for (i=0;i<136;i++);
}

void HD7279_ShortDelay(void)
{
	     unsigned char i; 
	    for (i=0;i<116;i++);
}

/*--------------------------------------------
调用方式:void HD7279_ShortDelay(void) 等侍函数﹫2001/05/12
函数说明:私有函数,=500ms 
--------------------------------------------*
/void HD7279_ShortDelay(void)
{;} 
/*--------------------------------------------
调用方式:void Delay10ms(unsigned char time) 等侍函数﹫2001/05/12
函数说明:私有函数, 6M晶振
--------------------------------------------*/
void Delay10ms(unsigned char time)
{ 
	unsigned char i; 
	unsigned int j;
	for(i=0;i<time;i++) 
	{ 
		for(j=0;j<931;j++) 
		{;} 
	}
}
/*--------------------------------------------
调用方式:void HD7279_ShortDelay(void) 函数﹫2001/05/12 
函数说明:私有函数,送指令
--------------------------------------------*/
void HD7279_SendByte( unsigned char out_byte)
{ 
	unsigned char i;
	HD7279_CS_CLR; 
	HD7279_DATA_OUTSEL;
	HD7279_LongDelay(); 
	for(i=0;i<8;i++) 
	{ 
		if(out_byte&0x80) 
		{ 
			HD7279_DATA_SET; 
		} 
		else 
		{ 
			HD7279_DATA_CLR;
		} 
		HD7279_CLK_SET; 
		HD7279_ShortDelay(); 
		HD7279_CLK_CLR; 
		HD7279_ShortDelay(); 
		out_byte=out_byte<<1;
	} 
	HD7279_DATA_CLR;
}
/*--------------------------------------------
调用方式:void Write7279(unsigned char command, unsigned char dta) 函数﹫2001/05/12
函数说明:私有函数,写函数
--------------------------------------------*/
void Write7279(unsigned char command, unsigned char dta)
{ 
	HD7279_SendByte( command ); 
	HD7279_SendByte( dta );
}

/*--------------------------------------------
调用方式:unsigned char HD7279_ReceiveByte(void)函数﹫2001/05/12 
函数说明:私有函数,接受一个BYTE函数
--------------------------------------------*/

unsigned char HD7279_ReceiveByte(void)
{ 
	unsigned char i, in_byte;
	
	HD7279_DATA_SET; 
	HD7279_LongDelay(); 
	for(i=0;i<8;i++) 
	{
	    HD7279_CLK_SET; 
		HD7279_ShortDelay(); 
		in_byte=in_byte<<1; 
		HD7279_DATA_INSEL;
		if(HD7279_DATA_IN) 
		{
		      in_byte=in_byte|0x01; 
		} 
		HD7279_CLK_CLR; 
		HD7279_ShortDelay(); 
	} 
	HD7279_DATA_OUTSEL;
	HD7279_DATA_CLR; 
	return (in_byte);
}
#endif






⌨️ 快捷键说明

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