freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

雙輪自平衡小車項目設(shè)計報告-資料下載頁

2025-03-04 19:56本頁面

【導(dǎo)讀】隨著科技進(jìn)步,生活水平的提高,人們追求智能與舒適的愿望也日益強(qiáng)烈。從而催生了許多智能化的產(chǎn)品。本文介紹了基于STC90C51單片機(jī)的自平衡小車系統(tǒng)的設(shè)計。行檢測,并通過單片機(jī)來控制電機(jī)來實現(xiàn)雙輪小車自如平衡地運(yùn)動。車智能自主控制的目的。其系統(tǒng)主要由以下幾個部分組成:單片機(jī)控制系統(tǒng)、陀螺儀加速度檢。測模塊、光碼盤測速模塊、穩(wěn)壓模塊、電機(jī)驅(qū)動模塊、LCD1602顯示模塊組成。本設(shè)計的自平衡小車工作原理:給小車通電,平衡放在地上,當(dāng)小車開始傾斜時,單片機(jī)系統(tǒng)收集到以上三組數(shù)據(jù),對數(shù)據(jù)進(jìn)行量化處理后,在PID

  

【正文】 //延時 dat |= SDA。 //讀數(shù)據(jù) SCL = 0。 //拉低時鐘線 Delay5us()。 //延時 } return dat。 } //************************************** //向 I2C 設(shè)備寫入一個字節(jié)數(shù)據(jù) //************************************** void Single_WriteI2C(uchar REG_Address,uchar REG_data) { I2C_Start()。 //起始信號 I2C_SendByte(SlaveAddress)。 //發(fā)送設(shè)備地址 +寫信號 I2C_SendByte(REG_Address)。 //內(nèi)部寄存器地址, I2C_SendByte(REG_data)。 //內(nèi)部寄存器數(shù)據(jù), I2C_Stop()。 //發(fā)送停止信號 } //************************************** //從 I2C 設(shè)備讀取一個字節(jié)數(shù)據(jù) //************************************** uchar Single_ReadI2C(uchar REG_Address) { uchar REG_data。 I2C_Start()。 //起始信號 I2C_SendByte(SlaveAddress)。 //發(fā)送設(shè)備地址 +寫信號 I2C_SendByte(REG_Address)。 //發(fā)送存儲單元地址,從 0 開始 I2C_Start()。 //起始信號 I2C_SendByte(SlaveAddress+1)。 //發(fā)送設(shè)備地址 +讀信號 REG_data=I2C_RecvByte()。 //讀出寄存器數(shù)據(jù) I2C_SendACK(1)。 //接收應(yīng)答信號 I2C_Stop()。 //停止信號 return REG_data。 } //************************************** //初始化 MPU6050 //************************************** void InitMPU6050() { Single_WriteI2C(PWR_MGMT_1, 0x00)。 //解除休眠狀態(tài) Single_WriteI2C(SMPLRT_DIV, 0x07)。 Single_WriteI2C(CONFIG, 0x06)。 Single_WriteI2C(GYRO_CONFIG, 0x18)。 Single_WriteI2C(ACCEL_CONFIG, 0x01)。 } //************************************** //合成數(shù)據(jù) //************************************** int GetData(uchar REG_Address) { char H,L。 H=Single_ReadI2C(REG_Address)。 L=Single_ReadI2C(REG_Address+1)。 return (H8)+L。 //合成數(shù)據(jù) } //************************************** //在 1602 上顯示 10 位數(shù)據(jù) //************************************** void Display10BitData(int value,uchar x,uchar y) { value/=19。 value=20。 //角度值基準(zhǔn)校正 //轉(zhuǎn)換為 10 位數(shù)據(jù) lcd_printf(dis, value)。 //轉(zhuǎn)換數(shù)據(jù)顯示 DisplayListChar(x,y,dis,4)。 //啟始列,行,顯示數(shù)組,顯示長度 } void main() { int i,j,k,m,n,num0=380,num1,num2=380,num3,num4=380,num5,num6=380,num7,cun1,t1,t2。 char c=39。A39。 delay(1000)。 //上電延時 InitLcd()。 //液晶初始化 InitMPU6050()。 //初始化 MPU6050 delay(500)。 while(1) { for(i=0。i50000。i++) { if(key0==0) { delay(4000)。 if(key0==0) { c++。 } } if(key1==0) { delay(4000)。 if(key1==0) { c。 } } if(key2==0amp。amp。c==39。A39。) { delay(4000)。 if(key2==0) { num0+=19。 num1++。 } } if(key3==0amp。amp。c==39。A39。) { delay(4000)。 if(key3==0) { num0=19。 num1。 } } if(key2==0amp。amp。c==39。B39。) { delay(4000)。 if(key2==0) { num2+=19。 num3++。 } } if(key3==0amp。amp。c==39。B39。) { delay(4000)。 if(key3==0) { num2=19。 num3。 } } if(key2==0amp。amp。c==39。C39。) { delay(4000)。 if(key2==0) { num4+=19。 num5++。 } } if(key3==0amp。amp。c==39。C39。) { delay(4000)。 if(key3==0) { num4=19。 num5。 } } if(key2==0amp。amp。c==39。D39。) { delay(4000)。 if(key2==0) { num6+=19。 num7++。 } } if(key3==0amp。amp。c==39。D39。) { delay(4000)。 if(key3==0) { num6=19。 num7。 } } m=GetData(ACCEL_XOUT_H)/96。 //使 m 的值介于正負(fù) 180 n=abs(m)。 j=m/5。 k=n*3/5+num1/2+j*num1/3+j*j*num1/4+num3+num3*num3/2。 cun1=n*4/5+num5/2+j*num5/2+j*j*num5/3+num7+num7*num7/2。 t1=k。 t2=cun1。 if(m0amp。amp。m60) //如果車子傾斜在正向 30 度以內(nèi) { P01=0。 //控制電機(jī)轉(zhuǎn)向 P14=0。 P02=1。 P15=1。 while(t1) { if(k%8==0||k%8==1||k%8==2||k%8==3||k%8==4||k%8==5) { P00=1。 //PWM 調(diào)速 P03=1。 } if(k%8==6||k%8==7) { P03=0。 P00=1。 } t1。 } P00=0。 P03=0。 delay(4)。 if(i%30==0) //使顯示頻率為原來的 1/30 { Display10BitData(GetData(ACCEL_XOUT_H),2,0)。 //顯示 X 軸加速度 Display10BitData(GetData(GYRO_XOUT_H),2,1)。 //顯示 X 軸角速度 DisplayOneChar(7,0,39。139。)。 //如果正傾則顯示 001 DisplayOneChar(7,1,c)。 Display10BitData(num0,8,0)。 //按鍵微調(diào) Display10BitData(num2,12,0)。 Display10BitData(num4,8,1)。 Display10BitData(num6,12,1)。 } } if(m0amp。amp。m60) //如果車子傾斜在負(fù)向 30 度以內(nèi) { P01=1。 P14=1。 P02=0。 P15=0。 while(t2) { if(cun1%8==0||cun1%8==1||cun1%8==2||cun1%8==3||cun1%8==4||cun1%8==5) { P00=1。 P03=1。 } if(cun1%8==6||cun1%8==7) { P03=0。 P00=1。 } t2。 } P00=0。 P03=0。 delay(4)。 if(i%30==0) { Display10BitData(GetData(ACCEL_XOUT_H),2,0)。 //顯示 X 軸加速度 Display10BitData(GetData(GYRO_XOUT_H),2,1)。 //顯示 X 軸角速度 DisplayOneChar(7,0,39。039。)。 //如果反傾則顯示 000 DisplayOneChar(7,1,c)。 Display10BitData(num0,8,0)。 //顯示按鍵值 Display10BitData(num2,12,0)。 Display10BitData(num4,8,1)。 Display10BitData(num6,12,1)。 } } /* if(m=60||m=60) //如果車子傾斜角大于正負(fù) 30 則電機(jī)停止轉(zhuǎn)動 { P01=1。 P14=1。 P02=1。 P15=1。 if(i%30==0) { Display10BitData(GetData(ACCEL_XOUT_H),2,0)。 //顯示 X 軸加速度 Display10BitData(GetData(GYRO_XOUT_H),2,1)。 //顯示 X軸角速度 Display10Bi
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1