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

📄 7281.c

📁 7281驱动数码管的驱动程序
💻 C
字号:

#define SET_HD7281_KEY P6 |= 0X02
#define CLR_HD7281_KEY P6 &= 0Xfd
#define HD7281_KEY P5&0x80
#define SET_HD7281_DATA P6 |= 0X01
#define CLR_HD7281_DATA P6 &= 0Xfe
#define HD7281_DATA P6&0x01
#define SET_HD7281_CLK P6 |= 0X04
#define CLR_HD7281_CLK P6 &= 0XFb
bit bdata Flag_KeyUp;
float xdata WeightShow;
float xdata tempFloat2,tempFloat1;
float xdata Temprature[4];
UCHAR xdata KeyBuffRD;
UCHAR xdata KeyBuff0;
UCHAR xdata KeyBuff1;
UCHAR xdata KeyBuff2;
bit bdata Flag_NoPack;			//去皮标志
bit bdata Flag_Stand; 			//稳定标志
bit bdata Flag_Date;			//日期标志
bit bdata Flag_Time;			//时间标志
bit bdata Flag_Auto;			//巡检状态
bit bdata Flag_Zero;	//零位标志
bit bdata Flag_Print;
bit bdata Flag_PowerUp=1;
bit bdata Flag_Cycle;
unsigned char xdata Cusor;
unsigned char  xdata ShowBuff[8];
//UCHAR code  NumCode[] = {0XDB,0x09,0xb3,0x3b,0x69,0X7a,0Xfa,0x0b,0xfb,0x7b,0XEB,0xf8,0xd2,0xb9,0xf2,0xe2,0xe9,0xd0,0xe3,0x04,0x00,0x98,0xa0,0xa8,0xb8,0xf0,0x79,0x19,0x20,};
  UCHAR code  NumCode[] = {0XC0,0xCF,0x64,0x46,0x4B,0X52,0X50,0xC7,0x40,0x42,0X41,0x58,0xF0,0x4c,0x70,0x71,0x49,0xF8,0x61,0xBF,0xff,0xdc,0x7d,0x5d,0x5c,0x78,0x4a,0xCE,0x7F,};

void write728x(unsigned char reg_add, unsigned char write_data)
{
	send_byte(reg_add);		// 发送寄存器地址
	send_byte(write_data);	// 发送数据字节
}
// **********************************************************
// *      读出 BC728X 内部寄存器的值, 调用参数为寄存器地址        *
// **********************************************************
unsigned char read728x(unsigned char reg_add)
{
	send_byte(reg_add|0x80);	// 发送读指令(bit7=1)
	return(receive_byte());	// 接收数据字节并返回
}
// ***********************************************************
// *                向 BC728X 发送一个字节                   *
// ***********************************************************
void send_byte(unsigned char send_byte)
{
	unsigned char bit_counter;
	CLR_HD7281_CLK;			// 产生一 clk 脉冲
	delay(1);
	SET_HD7281_CLK;
	do 		// 等待 BC728X 输出 dat 低电平响应
	{
		CLR_HD7281_CLK;			// 产生一 clk 脉冲
		delay(1);
		SET_HD7281_CLK;
	}while ((P6&0x01)==0x01);
	CLR_HD7281_CLK;			// 产生一 clk 脉冲
	delay(1);
	SET_HD7281_CLK;
	while ((P6&0x01)==0X00);		// 等待 BC728X 进入接收状态
	for (bit_counter=0;bit_counter<8;bit_counter++)
	{			// 发送 8 个比特
		if ((send_byte&0x80)==0)
 		{
  			CLR_HD7281_DATA;// 如果待发bit为0, 置 dat 为 0
  	 	}
  	 	else
  	 	{
  	 		SET_HD7281_DATA;		// 反之置为 1
  	  	}
 		send_byte=send_byte*2;	// send_byte 左移一位
		CLR_HD7281_CLK;			// 产生一 clk 脉冲
		delay(1);
		SET_HD7281_CLK;
		delay(5);		// 短暂延时
	}
	SET_HD7281_DATA;				// 恢复 dat 为高电平
}
// ************************************************************
// *                 从 BC728X 接收一个字节                     *
// ************************************************************
unsigned char receive_byte(void)
{
	unsigned char bit_counter, in_byte;
	CLR_HD7281_CLK;			// 产生一 clk 脉冲
	delay(1);
	SET_HD7281_CLK;
	while ((P6&0x01)==0x01);		// 等待 BC728X 响应
	CLR_HD7281_CLK;			// 产生一 clk 脉冲
	delay(1);
	SET_HD7281_CLK;
	for (bit_counter=0;bit_counter<8;bit_counter++)
	{			// 接收8个bit
		delay(1);	// 短暂延时
		in_byte=in_byte*2;	// in_byte 左移一位
		if((HD7281_DATA)==0x01)	// 如果 dat 为'1'
		{
			in_byte=in_byte|0x01;	// bit0=1
		}
		CLR_HD7281_CLK;			// 产生一 clk 脉冲
		delay(1);
		SET_HD7281_CLK;
	}
	return(in_byte);
}
// ***********************************************************
// *  短暂延时程序, 延时时间与参数time成正比, 范围是几个uS到几百个uS *
// ***********************************************************
void delay(unsigned char time)
{
	while (time!=0)
	{
		time--;
	}
}
//*********************************************
//*延时1分钟
//*********************************************
void Delay1min(unsigned char x)
{ 
   unsigned int   i;
   unsigned int   j;
   unsigned int  k;
   

    for (i=0; i<x; i++)
     {
            for (j=0; j<6000; j++)
            {
               for(k=0;k<11110;k++);
               
            }
    }
}  
void Delay1ms(unsigned char T)
{
 unsigned int i,j;
 for(i=0;i<T;i++)
 	{
 	for(j=0;j<1000;j++);
 	}

⌨️ 快捷键说明

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