本代碼是TI杯省賽手勢識別代碼,如果需要原理圖的話,我回去整理,畫出來,再分享,顯示用的是串口屏
單片機源程序如下:
- #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 上傳
點擊文件名下載附件
|