xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 7KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-11
  • 語言: C/C++
  • 標(biāo)簽:

資源簡(jiǎn)介

基于單片機(jī)的加速度傳感器信號(hào)采集 并積分求速度和位移的c語言源碼

資源截圖

代碼片段和文件信息

#include
#include

#define?uchar?unsigned?char
#define?uint?unsigned?int

sfr?P2M0??=?0x95;
sfr?P2M1??=?0x96;
sfr?CLK_DIV?=?0xC7;

sbit?SDA=P2^7;
sbit?SCL=P2^6;
sbit?test=P2^5;
sbit?test1=P2^2;

//-------------------變量初始化-------------------------------
uint?ZuoBiao[2];????//存XY加速度值
uint?s[4];?????????//分別存XY加速度的高低位.
uint?ack;
int?iAccReal[4]={0000};
int?iAccFilter;
int?count=0;
double?ax[4]={0.00.00.00.0}ay[4]={0.00.00.00.0}vx[3]={0.00.00.0}vy[3]={0.00.00.0};
double?LX[2]={0.00.0}LY[2]={0.00.0};
double?ax_temp=0.0ay_temp=0.0vx_temp=0.0vy_temp=0.0;
double?t=0.005926;
//-------------------函數(shù)聲明----------------------------------
void?Start_I2c();
void?Stop_I2c();
void?SendByte(uchar?c);
uchar?RcvByte();
void?Ack_I2c(int?a);
void?MXC_init();
void?Delay1us(unsigned?int?us);
void?RS232_init(void);
void?serial_send(uchar?dat);

//-------------------函數(shù)定義----------------------------------
void?main(void)
{??
????P2M0=0xC0;?//開漏模式0xC0
????P2M1=0xC0;?
????CLK_DIV=0x00;?
??? TMOD=0x21;//0010?0001
TH0=0x00;//定時(shí)
TL0=0x00;
TR0=1;//開啟T0定時(shí)器
ET0=1;//允許T0定時(shí)器中斷
EA=1;//開啟總中斷允許 ?
???RS232_init(); //串口初始化
MXC_init();??//傳感器初始化??????
???while(1)
???{test=1;test1=0;Delay1us(1);//測(cè)試中斷是否執(zhí)行,中斷時(shí)間是否超出TH0/TL0的設(shè)定值
???}
}

//-------------------IIC的開始命令-----------------------------
void?Start_I2c()
{
???SDA=1;?????/*發(fā)送起始條件的數(shù)據(jù)信號(hào)*/
???Delay1us(1);
???SCL=1;
???Delay1us(2);??????/*起始條件建立時(shí)間大于4.7us延時(shí)*/??
???SDA=0;?????/*發(fā)送起始信號(hào)*/
???Delay1us(2);??????/*?起始條件鎖定時(shí)間大于4μs*/????
???SCL=0;?????/*鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)?*/
???Delay1us(2);
}
//-------------------IIC的停止命令-----------------------------
void?Stop_I2c()
{
???SDA=0;????/*發(fā)送結(jié)束條件的數(shù)據(jù)信號(hào)*/
???Delay1us(2);?????/*發(fā)送結(jié)束條件的時(shí)鐘信號(hào)*/
???SCL=1;????/*結(jié)束條件建立時(shí)間大于4us*/?
???Delay1us(2);
???SDA=1;????/*發(fā)送I2C總線結(jié)束信號(hào)*/
???Delay1us(2);
}
//------------------發(fā)送命令的函數(shù)-----------------------------
void?SendByte(uchar?c)
{
???uchar?BitCnt;
???ack=0;
???for(BitCnt=0;BitCnt<8;BitCnt++)???/*要傳送的數(shù)據(jù)長度為8位*/
???{
????if((c< ????else???SDA=0;????????????????
????Delay1us(1);
????SCL=1;????????????????/*置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位*/??????
????Delay1us(2);??????????????/*保證時(shí)鐘高電平周期大于4μs*/????????????
????SCL=0;?
???}???
??Delay1us(2);
??SDA=1;?????????????????/*8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/
??Delay1us(2);???
??SCL=1;
??Delay1us(2);
??if(SDA==1)ack=0;?????
??else?ack=1;?????????/*判斷是否接收到應(yīng)答信號(hào)*/
??SCL=0;
??Delay1us(2);
}
//------------------接收一次數(shù)據(jù)的函數(shù)-------------------------
uchar?RcvByte()
{
???uchar?retc;
???uchar?BitCnt;
???retc=0;?
???SDA=1;????????????????/*置數(shù)據(jù)線為輸入方式*/
???for(BitCnt=0;BitCnt<8;BitCnt++)
????{
??????Delay1us(1);???
??????SCL=0;???????????????????/*置時(shí)鐘線為低,準(zhǔn)備接收數(shù)據(jù)位*/???
??????Delay1us(2);??????????????????/*時(shí)鐘低電平周期大于4.7μs*/???
??????SCL=1;???????????????????/*置時(shí)鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/
??????Delay1us(2);
??????retc=retc<<1;
??????if(SDA==1)retc=retc

評(píng)論

共有 條評(píng)論

相關(guān)資源