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

📄 bc7281.c

📁 BC7281的驱动程序用于8051单片机!
💻 C
字号:
//BC7281 驱动8位LED和16个按键程序
#include <C8051F120.h>
#include <BC7281.h>
#include <Delay.h>

extern bit KeyChg;
//函数定义
void Send_Byte(BYTE send_byte) //发送一个字节至BC7281
{
	BYTE idata bit_counter;
	BC_CLK=0;
	BC_CLK=1;
	do{
		BC_CLK=0;
		Delay_us(10);
		BC_CLK=1;
	}while(BC_DAT);
	BC_CLK=0;
	Delay_us(10);
	BC_CLK=1;
	while(!BC_DAT);
	for(bit_counter=0;bit_counter<8;bit_counter++)
	{
		if((send_byte & 0x80) ==0)
			{BC_DAT=0;}
		else
			{BC_DAT=1;}
		send_byte=send_byte*2;
		BC_CLK=0;
		Delay_us(10);
		BC_CLK=1;
		Delay_us(10);
	}
	//Delay_us(10);
	BC_DAT=1;
}

BYTE Receive_Byte(void)//从BC7281接收一个字节
{
	BYTE idata bit_counter,in_byte;
	BC_CLK=0;
	Delay_us(10);
	BC_CLK=1;
	while(BC_DAT);
	BC_CLK=0;
	Delay_us(10);
	BC_CLK=1;
	for(bit_counter=0;bit_counter<8;bit_counter++)
	{
		Delay_us(10);
		in_byte=in_byte*2;
		if(BC_DAT)
		{
			in_byte=in_byte | 0x01;
		}
		BC_CLK=0;
		Delay_us(10);
		BC_CLK=1;
	}
	return(in_byte);
}

/*void Write7281(BYTE position,BYTE d_value) //显示数码,position-显示的位置 d_value-要显示的数据
{
	BYTE wd;
	EA=0;
	position-=0x01;
	wd=(position<<4 | (d_value & 0x0F));
	Send_Byte(0x15);//写入寄存器地址
	Send_Byte(wd);//写入数据
	EA=1;
}*/

void Set7281(BYTE reg_add,BYTE write_data)//设置,reg_add-寄存器地址,write_data-参数
{
	EA=0;
	Send_Byte(reg_add);//写入寄存器地址
	Send_Byte(write_data);//写入数据
	EA=1;
}


BYTE GetKey(void) //从BC7281读一个字节,reg_add-寄存器地址
{
	EA=0;
	Send_Byte(0x13 | 0x80);//发送读指令
	EA=1;
	return (Receive_Byte());
}

void INT0_ISR(void) interrupt 0	using 1	   //BC7281中断
{
	KeyChg=1;       			//键值改变标志位
}








⌨️ 快捷键说明

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