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

📄 hd7279驱动.c

📁 HD7279与51的驱动
💻 C
字号:
#include "at89x051.h"
/*--------------------------------------------
调用方式:自行I/O 口定义﹫2001/05/12 
函数说明:私有函数,各接口定义 
--------------------------------------------*/
sbit HD7279_CS=P1^7; 	
sbit HD7279_CLK=P1^6; 	
sbit HD7279_DATA=P1^5; 	
sbit HD7279_KEY =P3^2; 	
/*--------------------------------------------
调用方式: HD7279A 各指令定义﹫2001/05/12 
函数说明:私有函数,接口定义 
--------------------------------------------*/
#define HD7279_RESET 	0xa4 //复位
#define HD7279_TEST 	0xbf //测试 
#define HD7279_RLC 		0xa3 //循环左移
#define HD7279_RRC 		0xa2 //循环右移
#define HD7279_RL 		0xa1 //左移
#define HD7279_RR 		0xa0 //右移 
#define HD7279_DECODE0 	0x80 //译码方式0
#define HD7279_DECODE1 	0xc8 //译码方式1
#define HD7279_UNDECODE 0x90 //译码方式2: 不译码 
#define HD7279_HIDE 	0x98 //消隐
#define HD7279_FLASH 	0x88 //闪烁 
#define HD7279_SEGON 	0xe0 //段亮
#define HD7279_SEGOFF 	0xc0 //段灭 
#define HD7279_READ 	0x15 //读 
/*--------------------------------------------
调用方式: void HD7279_LongDelay(void) 等侍函数﹫2001/05/12 
函数说明 私有函数,>500ms 
--------------------------------------------*/
void  HD7279_LongDelay(void)
{ 
unsigned char i; 
for (i=0;i<12;i++);
}
/*--------------------------------------------
调用方式:void HD7279_ShortDelay(void) 等侍函数﹫2001/05/12
函数说明:私有函数,=500ms 
--------------------------------------------*/
void HD7279_ShortDelay(void)
{
unsigned char i; 
for (i=0;i<3;i++);} 
/*--------------------------------------------
调用方式: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<1862;j++) 
{;} 
}
}
/*--------------------------------------------
调用方式:void HD7279_ShortDelay(void) 函数﹫2001/05/12 
函数说明:私有函数,送指令
--------------------------------------------*/
void HD7279_SendByte( unsigned char out_byte)
{ 
unsigned char i;
HD7279_CS=0; 
HD7279_LongDelay(); 
for(i=0;i<8;i++) 
{ 
if(out_byte&0x80) { HD7279_DATA=1; } 
else { HD7279_DATA=0; } 
HD7279_CLK=1; 
HD7279_ShortDelay(); 
HD7279_CLK=0; 
HD7279_ShortDelay(); 
out_byte=out_byte<<1;
} 
HD7279_DATA=1;
}
/*--------------------------------------------
调用方式: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 );
}
/**********************************************/
void wr7279(unsigned char dig,unsigned char dta)//扫描dig位数码管
{unsigned char L;
L=0X80+dig;
HD7279_SendByte(L);
HD7279_SendByte( dta );
}

/*************************************************
******************************************************/
void wr7279_1(unsigned char dig,unsigned char dta)//扫描dig位数码管
{unsigned char L;
L=0Xc8+dig;
HD7279_SendByte(L);
HD7279_SendByte( dta );
}
/*--------------------------------------------
调用方式:unsigned char HD7279_ReceiveByte(void)函数﹫2001/05/12 
函数说明:私有函数,接受一个BYTE函数
--------------------------------------------*/
unsigned char HD7279_ReceiveByte(void)
{ 
unsigned char i, in_byte;
HD7279_DATA=1; 
HD7279_LongDelay(); 
for(i=0;i<8;i++) 
{HD7279_CLK=1; 
HD7279_ShortDelay(); 
in_byte=in_byte<<1; 
if(HD7279_DATA) { in_byte=in_byte|0x01; } 
HD7279_CLK=0; 
HD7279_ShortDelay(); 
} 
HD7279_DATA=1; 
return (in_byte);
}

/***************************************************************************/
wrshuju01(y)
{
wr7279(0,y/10);
wr7279(1,y%10);
 }
/*****************************************************************************/
wrshuju23(y)
{
wr7279(2,y/10);
wr7279(3,y%10);
 }
/*--------------------------------------------
调用方式:main()函数﹫2001/05/12 
函数说明:私有函数,例函数
--------------------------------------------*/
hd7279_init()
{
HD7279_SendByte(0xa4);//复位

⌨️ 快捷键说明

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