|
本代碼是TI杯省賽手勢(shì)識(shí)別代碼,如果需要原理圖的話,我回去整理,畫出來,再分享,顯示用的是串口屏
0.png (50.59 KB, 下載次數(shù): 40)
下載附件
2018-10-23 15:02 上傳
單片機(jī)源程序如下:
- #include "FDCIIC.h"
- #include "FDCdelay.h"
- //uint8 dis[6]; //顯示數(shù)字(-511至512)的字符數(shù)組
- //int dis_data; //變量
- //********************************************************************************
- //整數(shù)轉(zhuǎn)字符串
- //********************************************************************************
- //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; //取余運(yùn)算
- // *++s =temp_data/1000+0x30;
- // temp_data=temp_data%1000; //取余運(yùn)算
- // *++s =temp_data/100+0x30;
- // temp_data=temp_data%100; //取余運(yùn)算
- // *++s =temp_data/10+0x30;
- // temp_data=temp_data%10; //取余運(yùn)算
- // *++s =temp_data+0x30;
- //}
- //*************************************************************************************************
- //I2C起始信號(hào)
- //*************************************************************************************************
- void I2C_Start()
- {
- SDA = 1; //拉高數(shù)據(jù)線
- SCL = 1; //拉高時(shí)鐘線
- Delay5us(); //延時(shí)
- SDA = 0; //產(chǎn)生下降沿
- Delay5us(); //延時(shí)
- SCL = 0; //拉低時(shí)鐘線
- }
- //*************************************************************************************************
- //I2C停止信號(hào)
- //*************************************************************************************************
- void I2C_Stop()
- {
- SDA = 0; //拉低數(shù)據(jù)線
- SCL = 0;
- Delay5us();
- SCL = 1; //拉高時(shí)鐘線
- Delay5us(); //延時(shí)
- SDA = 1; //產(chǎn)生上升沿
- //Delay5us(); //延時(shí)
- }
- //**************************************************************************************************
- //I2C發(fā)送應(yīng)答信號(hào)
- //入口參數(shù):ack (0:ACK 1:NAK)
- //**************************************************************************************************
- void I2C_SendACK(bit ack)
- {
- SDA = ack; //寫應(yīng)答信號(hào)
- SCL = 1; //拉高時(shí)鐘線
- Delay5us(); //延時(shí)
- SCL = 0; //拉低時(shí)鐘線
- Delay5us(); //延時(shí)
- }
- //****************************************************************************************************
- //I2C接收應(yīng)答信號(hào)
- //****************************************************************************************************
- bit I2C_RecvACK()
- {
- SCL = 1; //拉高時(shí)鐘線
- Delay5us(); //延時(shí)
- CY = SDA; //讀應(yīng)答信號(hào)
- SCL = 0; //拉低時(shí)鐘線
- Delay5us(); //延時(shí)
- return CY;
- }
- //*****************************************************************************************************
- //向I2C總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)
- //*****************************************************************************************************
- void I2C_SendByte(uint8 dat)
- {
- uint8 i;
- for (i=0; i<8; i++) //8位計(jì)數(shù)器
- {
- dat <<= 1; //移出數(shù)據(jù)的最高位
- SDA = CY; //送數(shù)據(jù)口
- SCL = 1; //拉高時(shí)鐘線
- Delay5us(); //延時(shí)
- SCL = 0; //拉低時(shí)鐘線
- Delay5us(); //延時(shí)
- }
- I2C_RecvACK();
- }
- //*****************************************************************************************************
- //從I2C總線接收一個(gè)字節(jié)數(shù)據(jù)
- //******************************************************************************************************
- uint8 I2C_RecvByte()
- {
- uint8 i;
- uint8 dat = 0;
- SDA = 1; //使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
- for (i=0; i<8; i++) //8位計(jì)數(shù)器
- {
- dat <<= 1;
- SCL = 1; //拉高時(shí)鐘線
- Delay5us(); //延時(shí)
- dat |= SDA; //讀數(shù)據(jù)
- SCL = 0; //拉低時(shí)鐘線
- Delay5us(); //延時(shí)
- }
- return dat;
- }
- /*******************************************************************************
- * 函數(shù)名 : WriteRegfdc2214
- * 描述 : 寫寄存器數(shù)據(jù)
- * 輸入?yún)?shù) : add,value
- * 返回參數(shù) : 無
- *******************************************************************************/
- void WriteRegfdc2214(unsigned char add,unsigned int value)
- {
- I2C_Start();
- I2C_SendByte(0X54); //ADDR=0時(shí),地址0X2A<<1+0=0X54
- I2C_SendByte(add); //寫地址
- I2C_SendByte(value>>8); //
- I2C_SendByte(value&0xff);//寫低8位
- I2C_Stop(); //產(chǎn)生一個(gè)停止條件
- delay_ms();
- }
- /*******************************************************************************
- * 函數(shù)名 : ReadRegLDC
- * 描述 : 讀寄存器數(shù)據(jù)
- * 輸入?yún)?shù) : add地址
- * 返回參數(shù) : 無
- *******************************************************************************/
- unsigned int ReadRegfdc2214(unsigned char add)
- {
- unsigned int status;
- unsigned int a,b;
- I2C_Start();
- I2C_SendByte(0X54); //寫命令A(yù)DDR=0
- I2C_SendByte(add); //
- I2C_Start(); //重新開始
- I2C_SendByte(0X55); //發(fā)送讀命令A(yù)DDR=0
-
- a=I2C_RecvByte(); //讀高位
- I2C_SendACK(0);
- b=I2C_RecvByte(); //讀低位
- I2C_SendACK(1);
- status=a*256+b;
- I2C_Stop();
- return (status);
- }
- /*******************************************************************************
- * 函數(shù)名 : InitSingleLDC1314
- * 描述 : 初始化單通道
- * 輸入?yún)?shù) : 無
- * 返回參數(shù) : 無
- *******************************************************************************/
- void InitSinglefdc2214(void)
- {
- WriteRegfdc2214(0x08,0x0fa0);//設(shè)置轉(zhuǎn)換時(shí)間 設(shè)置達(dá)到最高精度
- WriteRegfdc2214(0x10,0x000f);//FDC2214_SETTLECOUNT_CH0 穩(wěn)定技計(jì)數(shù)計(jì)數(shù)
-
- WriteRegfdc2214(0x14,0x08); //參考分頻系數(shù)
- // LDC_Write_Reg(0x0C,0x0F00); //調(diào)零
- WriteRegfdc2214(0x19,0x0000); //ERROE_CONFIG
-
- WriteRegfdc2214(0x1B,0x020D); //通道配置
- WriteRegfdc2214(0x1E,0xF800); //配置驅(qū)動(dòng)電流
- WriteRegfdc2214(0x1A,0x1C81); //參數(shù)配置
- //以下自己//
- WriteRegfdc2214(0x18,0x02); //使用外部時(shí)鐘
- }
- /*******************************************************************************
- * 函數(shù)名 : InitMultiLDC1314
- * 描述 : 初始化多通道
- * 輸入?yún)?shù) : 無
- * 返回參數(shù) : 無
- *******************************************************************************/
- void InitMultifdc2214(void)//雙通道
- {
- WriteRegfdc2214(0x08,0x0fa0);//轉(zhuǎn)換時(shí)間 \\穩(wěn)定參考計(jì)數(shù)值、||原值為0x04D6
- WriteRegfdc2214(0x09,0x0fa0);
- WriteRegfdc2214(0x0A,0x0fa0);//轉(zhuǎn)換時(shí)間
- WriteRegfdc2214(0x0B,0x0fa0);
-
- WriteRegfdc2214(0x0C,0x0F00); //調(diào)0值 CH0
- WriteRegfdc2214(0x0D,0x0F00); //調(diào)0值 CH1
- WriteRegfdc2214(0x0E,0x0F00); //調(diào)0值 CH2
- WriteRegfdc2214(0x0F,0x0F00); //調(diào)0值 CH3
-
- WriteRegfdc2214(0x10,0x000A);//作用時(shí)間 CH1
- WriteRegfdc2214(0x11,0x000A);//CH2
- WriteRegfdc2214(0x12,0x000A);//CH3
- WriteRegfdc2214(0x13,0x000A);//CH4
-
- WriteRegfdc2214(0x14,0x08);//分頻 \\修改分頻系數(shù)可改變數(shù)值大小 原值為0x2002
- WriteRegfdc2214(0x15,0x08);
- WriteRegfdc2214(0x16,0x08);//分頻
- WriteRegfdc2214(0x17,0x08);
-
- WriteRegfdc2214(0x19,0x0000);
- WriteRegfdc2214(0x1B,0xC20D);//配置多通道 2通道--0x820D
-
- WriteRegfdc2214(0x1E,0x9000); //驅(qū)動(dòng)電流 CH0
- WriteRegfdc2214(0x1F,0x9000); //CH1
- WriteRegfdc2214(0x20,0x9000); //CH2
- WriteRegfdc2214(0x21,0x9000); //CH3
-
- WriteRegfdc2214(0x1A,0x1C81);//配置寄存器
-
-
- }
- /*********************************END FILE*************************************/
復(fù)制代碼
所有資料51hei提供下載:
新建文件夾.zip
(379.37 KB, 下載次數(shù): 131)
2018-10-23 09:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|