标题:
基于stc15单片机+fdc2214手势识别系统,ti杯源程序
[打印本页]
作者:
hl521521
时间:
2018-10-23 09:30
标题:
基于stc15单片机+fdc2214手势识别系统,ti杯源程序
本代码是TI杯省赛手势识别代码,如果需要原理图的话,我回去整理,画出来,再分享,显示用的是串口屏
0.png
(50.59 KB, 下载次数: 40)
下载附件
2018-10-23 15:02 上传
单片机源程序如下:
#include "FDCIIC.h"
#include "FDCdelay.h"
//uint8 dis[6]; //显示数字(-511至512)的字符数组
//int dis_data; //变量
//********************************************************************************
//整数转字符串
//********************************************************************************
//void lcd_printf(uint8 *s,int temp_data)
//{
// if(temp_data<0)
// {
// temp_data=-temp_data;
// *s='-';
// }
// else *s=' ';
// *++s =temp_data/10000+0x30;
// temp_data=temp_data%10000; //取余运算
// *++s =temp_data/1000+0x30;
// temp_data=temp_data%1000; //取余运算
// *++s =temp_data/100+0x30;
// temp_data=temp_data%100; //取余运算
// *++s =temp_data/10+0x30;
// temp_data=temp_data%10; //取余运算
// *++s =temp_data+0x30;
//}
//*************************************************************************************************
//I2C起始信号
//*************************************************************************************************
void I2C_Start()
{
SDA = 1; //拉高数据线
SCL = 1; //拉高时钟线
Delay5us(); //延时
SDA = 0; //产生下降沿
Delay5us(); //延时
SCL = 0; //拉低时钟线
}
//*************************************************************************************************
//I2C停止信号
//*************************************************************************************************
void I2C_Stop()
{
SDA = 0; //拉低数据线
SCL = 0;
Delay5us();
SCL = 1; //拉高时钟线
Delay5us(); //延时
SDA = 1; //产生上升沿
//Delay5us(); //延时
}
//**************************************************************************************************
//I2C发送应答信号
//入口参数:ack (0:ACK 1:NAK)
//**************************************************************************************************
void I2C_SendACK(bit ack)
{
SDA = ack; //写应答信号
SCL = 1; //拉高时钟线
Delay5us(); //延时
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
//****************************************************************************************************
//I2C接收应答信号
//****************************************************************************************************
bit I2C_RecvACK()
{
SCL = 1; //拉高时钟线
Delay5us(); //延时
CY = SDA; //读应答信号
SCL = 0; //拉低时钟线
Delay5us(); //延时
return CY;
}
//*****************************************************************************************************
//向I2C总线发送一个字节数据
//*****************************************************************************************************
void I2C_SendByte(uint8 dat)
{
uint8 i;
for (i=0; i<8; i++) //8位计数器
{
dat <<= 1; //移出数据的最高位
SDA = CY; //送数据口
SCL = 1; //拉高时钟线
Delay5us(); //延时
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
I2C_RecvACK();
}
//*****************************************************************************************************
//从I2C总线接收一个字节数据
//******************************************************************************************************
uint8 I2C_RecvByte()
{
uint8 i;
uint8 dat = 0;
SDA = 1; //使能内部上拉,准备读取数据,
for (i=0; i<8; i++) //8位计数器
{
dat <<= 1;
SCL = 1; //拉高时钟线
Delay5us(); //延时
dat |= SDA; //读数据
SCL = 0; //拉低时钟线
Delay5us(); //延时
}
return dat;
}
/*******************************************************************************
* 函数名 : WriteRegfdc2214
* 描述 : 写寄存器数据
* 输入参数 : add,value
* 返回参数 : 无
*******************************************************************************/
void WriteRegfdc2214(unsigned char add,unsigned int value)
{
I2C_Start();
I2C_SendByte(0X54); //ADDR=0时,地址0X2A<<1+0=0X54
I2C_SendByte(add); //写地址
I2C_SendByte(value>>8); //
I2C_SendByte(value&0xff);//写低8位
I2C_Stop(); //产生一个停止条件
delay_ms();
}
/*******************************************************************************
* 函数名 : ReadRegLDC
* 描述 : 读寄存器数据
* 输入参数 : add地址
* 返回参数 : 无
*******************************************************************************/
unsigned int ReadRegfdc2214(unsigned char add)
{
unsigned int status;
unsigned int a,b;
I2C_Start();
I2C_SendByte(0X54); //写命令ADDR=0
I2C_SendByte(add); //
I2C_Start(); //重新开始
I2C_SendByte(0X55); //发送读命令ADDR=0
a=I2C_RecvByte(); //读高位
I2C_SendACK(0);
b=I2C_RecvByte(); //读低位
I2C_SendACK(1);
status=a*256+b;
I2C_Stop();
return (status);
}
/*******************************************************************************
* 函数名 : InitSingleLDC1314
* 描述 : 初始化单通道
* 输入参数 : 无
* 返回参数 : 无
*******************************************************************************/
void InitSinglefdc2214(void)
{
WriteRegfdc2214(0x08,0x0fa0);//设置转换时间 设置达到最高精度
WriteRegfdc2214(0x10,0x000f);//FDC2214_SETTLECOUNT_CH0 稳定技计数计数
WriteRegfdc2214(0x14,0x08); //参考分频系数
// LDC_Write_Reg(0x0C,0x0F00); //调零
WriteRegfdc2214(0x19,0x0000); //ERROE_CONFIG
WriteRegfdc2214(0x1B,0x020D); //通道配置
WriteRegfdc2214(0x1E,0xF800); //配置驱动电流
WriteRegfdc2214(0x1A,0x1C81); //参数配置
//以下自己//
WriteRegfdc2214(0x18,0x02); //使用外部时钟
}
/*******************************************************************************
* 函数名 : InitMultiLDC1314
* 描述 : 初始化多通道
* 输入参数 : 无
* 返回参数 : 无
*******************************************************************************/
void InitMultifdc2214(void)//双通道
{
WriteRegfdc2214(0x08,0x0fa0);//转换时间 \\稳定参考计数值、||原值为0x04D6
WriteRegfdc2214(0x09,0x0fa0);
WriteRegfdc2214(0x0A,0x0fa0);//转换时间
WriteRegfdc2214(0x0B,0x0fa0);
WriteRegfdc2214(0x0C,0x0F00); //调0值 CH0
WriteRegfdc2214(0x0D,0x0F00); //调0值 CH1
WriteRegfdc2214(0x0E,0x0F00); //调0值 CH2
WriteRegfdc2214(0x0F,0x0F00); //调0值 CH3
WriteRegfdc2214(0x10,0x000A);//作用时间 CH1
WriteRegfdc2214(0x11,0x000A);//CH2
WriteRegfdc2214(0x12,0x000A);//CH3
WriteRegfdc2214(0x13,0x000A);//CH4
WriteRegfdc2214(0x14,0x08);//分频 \\修改分频系数可改变数值大小 原值为0x2002
WriteRegfdc2214(0x15,0x08);
WriteRegfdc2214(0x16,0x08);//分频
WriteRegfdc2214(0x17,0x08);
WriteRegfdc2214(0x19,0x0000);
WriteRegfdc2214(0x1B,0xC20D);//配置多通道 2通道--0x820D
WriteRegfdc2214(0x1E,0x9000); //驱动电流 CH0
WriteRegfdc2214(0x1F,0x9000); //CH1
WriteRegfdc2214(0x20,0x9000); //CH2
WriteRegfdc2214(0x21,0x9000); //CH3
WriteRegfdc2214(0x1A,0x1C81);//配置寄存器
}
/*********************************END FILE*************************************/
复制代码
所有资料51hei提供下载:
新建文件夹.zip
(379.37 KB, 下载次数: 131)
2018-10-23 09:28 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-10-23 15:04
好东东 希望能分享原理图
作者:
z1233
时间:
2019-1-8 11:05
楼主可以分享一下电路图吗?谢谢
作者:
1473376265
时间:
2019-8-8 15:33
楼主楼主求主函数
作者:
2537986670
时间:
2019-9-14 16:55
你好,我现在正在学习手势识别中fdc2214的用法,感觉里面单通道和多通道的初始化代码不太明白,能详细的解释一下吗?
作者:
aaaaaa。
时间:
2019-10-12 19:04
楼主,求原理图
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1