C语言如何驱动1628芯片

根据1628芯片手册写出相对应的驱动程序

//**********************************************************//
//**********************************************************//
//*******************1628驱动芯片*************************//
//**********************************************************//
//**********************************************************//
//**********************************************************//
void send_1628_cmd(u8 data)//发8位数据有片选
{
	u8 i;
	stb=0;
	for(i=0;i<8;++i)
	{
		clk=0;
		if(data & 0x01)
		{	
			dio=1;
		}
		else
		{
			dio=0;
		}
		data >>= 1;
		clk=1;
		
	}
	stb=1;
}

void send_1628_8b(u8 data)//发8位数据无片选
{
	u8 i;
	for(i=0;i<8;++i)
	{
		clk=0;
		if(data & 0x01)
		{	
			dio=1;
		}
		else
		{
			dio=0;
		}
		data >>= 1;
		clk=1;
		
	}
}

void send_1628_16b(u16 data)//发16位数据
{
	u8 i;
	for(i=0;i<16;++i)
	{
		clk=0;
		if(data & 0x01)
		{	
			dio=1;
		}
		else
		{
			dio=0;
		}
		data >>= 1;
		clk=1;
		
	}
}

void send_1628_showall(u8 data)//发送显示内容
{
	send_1628_cmd(0x40);
	u8 i;
	stb=0;
	
	
	send_1628_8b(0xc0);
	for(i=0;i<16;++i)
	{
		send_1628_8b(data);
	}
	stb=1;

}


void dsp_1628_init()
{
	send_1628_cmd(0x03);
	send_1628_cmd(0x8f);
	send_1628_showall(0x00);

}


void sm1628_dsp()
{
	send_1628_cmd(0x40);
	u8 i;
	stb=0;

	send_1628_8b(0xC0);	//显示数据发送地址0xC0
	for(i = 0; i < 7; ++i)
	{
		send_1628_16b(sm1628_send_buf[i]);	
	}
	stb=1;
		
}

//数据读取
void sm1628_Rec_data()
{
	u8 i,j;
	stb = 0;
	send_1628_8b(0x42);         //数据读取模式	0x42
	SDI_ENABLE;					//端口设置输入
	delay_us(1);				//延时
	for(i = 0; i < 7; ++i)
	{
		for(j = 0;j < 8; ++j)
		{
			clk = 0;
			sm1628_rec_buf[i] >>= 1;//从低位开始读取
			clk = 1;
			if(dio) 
				sm1628_rec_buf[i]|=0x80;
		}	
	}
	stb = 1;
	SDO_ENABLE;
	send_1628_cmd(0x40);
	
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值