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

正文內容

畢業(yè)設計--基于stm32的智能小車設計(參考版)

2024-12-05 17:21本頁面
  

【正文】 //最左 = EXTI_Mo。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2)。 EXTI_Init(amp。 = EXTI_Trigger_Rising_Falling。 =EXTI_Line1。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE)。 //使能定時器 5 } 附錄 2 void EXTIX_Init(void) { EXTI_InitTypeDef EXTI_InitStructure。 //根據(jù) NVIC_InitStruct 中指定的參數(shù)初始化外設 NVIC寄存器 基于 stm32 的智能小車設計 42 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE)。 //IRQ 通道被使能 NVIC_Init(amp。 //先占優(yōu)先級 2 級 = 0。 //中斷分組初始化 = TIM5_IRQn。//IC1F=0000 配置輸入濾波器 不濾波 TIM_ICInit(TIM5, amp。 //映射到 TI1 上 = TIM_ICPSC_DIV1。 //CC1S=01 選擇輸入端 IC1 映射到 TI1 上 = TIM_ICPolarity_Rising。TIM_TimeBaseStructure)。 //設置時鐘分割 :TDTS = Tck_tim = TIM_CounterMode_Up。 //設定計數(shù)器自動重裝值 =psc。 GPIO_ResetBits(GPIOA,GPIO_Pin_0)。 //PA0 輸入 GPIO_Init(GPIOA, amp。 //使能 GPIOA 時鐘 = GPIO_Pin_0。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE)。 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure。同時 我還要感謝 湯飛 同學、 柳曉峰 同學的真誠指點,以及其他各位老師和同學的不吝指教,使我度過了緊張而又充實的三個月。 我 首先要感謝 的 是我的 母校 ,它為 我提供了一個良好的學習環(huán)境, 非常 感謝學院 領導對我們畢業(yè)設計相關工作精心合理的安排。在這期間,我在 所學 的 基礎知識 之上, 去接觸 stm32, 在接觸之初,我不斷的遇到問題,而我也知道不經(jīng)一番寒徹骨,哪的梅香撲鼻來的道理,最終我克服了種種困難,不僅使自己的知識更加牢固,而且也鍛煉了自己的心性。 總的來說,設計方案是完善的, 基本上達到了設計 所 要求 的目標。 上文提到的兩種方法,又受到所采購的器件的物理尺寸的影響。 ? 增加轉彎額定值 S 在本次試驗中,循跡探頭距小車的車輪距離太近,導致小車的額定值 S過小,進而導致小車在循跡工 作時誤差較大。在本次試驗中我們采用的車輪直徑稍大,從而導致小車轉彎的靈敏度大大下降。小車的轉彎靈敏度與小車的車輪直徑有關,具體來講就是: 在車輪角速度一定的情況下,車輪直徑越大,有公式 V=ω R,車輪的線速度就越大,那么在單位時間內有,小車的行駛距離就會變大。 ? 減小轉彎時間 T 小車的轉彎時間 T 與小車的轉彎靈敏度成反比 。假設小車的轉彎時間為 T,小車的轉彎時的速度為 V,我們要保證小車轉彎的路程不超過額定值 S,那么就有公式 VT=S。 在本方案中 ,由于受到所采購的硬件模塊尺寸的影響,循跡模塊在進行工作的時候,受到外部影響的因素很大。而在軟件設計方案中,我們只分析軟流程件設計,以確定對應的程序編碼。 接著分別介紹了各個模塊的硬件設計方案以及軟件設計方案。 論文首先分析了研究智能小車的研究意義,對于此次研究的必要性進行了可行性分析。本文的重點是基于stm32 微處理器為核心,添加其他外圍電路為輔助,并且加載必要的程序設計,使小車智能化行動。 PC7 的軟件仿真結果如下圖所示: 圖 PC7 腳電平仿真圖 基于 stm32 的智能小車設計 34 程序下載 串口下載軟件使用 mcuisp, 該軟件屬于第三方軟件 , 由單片機在線編程網(wǎng)提供 , 該軟件啟動界面如 圖 : 圖 mcuisp 啟動界面 我們使用 mcuisp 軟件進行程序下載,程序 下載圖如下所示: 圖 mcuisp 程序下載圖 基于 stm32 的智能小車設計 35 測 試 在 程序 調試 中 , 我們知道 PC7 的電平變化已經(jīng)滿足了超聲波的發(fā)射條件 ,我們本節(jié) 就是對硬件進行測試,驗證本次方案是否成功。支持 ARM7, ARM9,和最新的 CortrxM3 核處理器, 自動配置啟動代碼,具有強大的軟件仿真功能,而且具有啟動代碼小,性能高的優(yōu)點,軟件 keil3 的操作主界面如圖 : 圖 Keil 主界面 在程序仿真中,我們只能觀察 PC7 腳位的電平變化,來判斷是否滿足超聲波的發(fā)射條件,而對于超聲波發(fā)射到接受的高電平持續(xù)時間 t,我們在程序仿真中是無法觀測到的。 我們 使用 keil3 軟件進行程序仿真, 然后 使用 mcuscip 軟件把我們得到的目標文件燒到處理器中,即程序下載。} EXTI_ClearITPendingBit(EXTI_Line1)。 編寫中斷服務函數(shù) 我們在中斷初始化之后 , 就需要寫中斷服務函數(shù)啦 , 我們就以 PE1 為例, 當基于 stm32 的智能小車設計 32 PE1 的值發(fā)生變化時,我們就進入中斷服務函數(shù),在中斷服務函數(shù)中判斷紅外探測器是否在黑帶上方,如果在,此時我們需要使小車向左轉,如果不在黑帶上方,小車就繼續(xù)前進。當紅外探測器模塊在白色上方時,輸出為 1。但是,在提升電路的處理速度的同時, 帶來的缺點就是分辨率降低,因為只要在 du 附近輸出的電壓值就不會改變。加入 R4 電阻,就成為人們所說的“施密特觸發(fā)器”,其特性圖如圖 所示: 基于 stm32 的智能小車設計 30 圖 施密特觸發(fā)器特性圖 當輸入端的電壓發(fā)生轉化時 , 只要在比較電壓值附近的干擾不超過 du 之值 ,輸出的電壓就不會改變 。 因此 可以通過調節(jié) R2 的電阻值,改變比較電壓的大小即“ — ”端電壓的大小,從而控制探測的距離。其 單個 IR 探測器 電路原理圖如圖 所示: 圖 IR 探測器電路原理圖 根據(jù)原理圖詳解 下 IR 探測器的工作原理: VCC 為模塊提供電源,是 IR 探測器工作的前提條件,紅外發(fā)射管 DF2 發(fā)射紅外光到達“地面”,經(jīng)反射后 紅外光會到達 DS2 紅外接收管,由于不同顏色的地面會對光的吸收有著不同的效果,所以發(fā)射后的光的強度也會不同,反射強度不同, LM339 的 5 腳會輸入一個變化的電壓量, LM339 是一個電壓 較器 ,當 LM339 的“ +”端輸入信號大于“ ”端的比較信號后, LM339 的輸出端截止,在外部的上拉電源的作用下,使 IR 探測器的輸出端輸出 +5v 的電壓。我們知道 IR 探測器是由紅外發(fā)射管、紅外接收管和部分電路組成。 其中中間的 1 個 IR 探測器在本實驗中并未使用。要做到 4 路循跡 ,需要使用 4 個 獨立的 紅外探測器器件 。 考慮到成本和操作, 本實驗 使用 的紅外探測器。循跡模塊的設計就是使小車能準確的識別黑帶的軌跡。//開啟下一次捕獲 }} 循跡模塊 設計 這節(jié)要完成的任務是使小車沿著黑帶 運動 。 } TIM_Cmd(TIM2, ENABLE)。 t=0。 rotate_Left()。} if(flag==2) {turn_Right()。}} else { if(flag==0){farward_Low()。 TIM_SetCompare2(TIM3,150)。 //舵機左轉 } if(t==3) {t=0。//舵機右轉 } if(t==2){ Leftstate=temp。 if(t==1) { Midstate=temp。t++。//得到總的高電平時間 TIM_Cmd(TIM2, DISABLE)。 temp*=65536。0X80)//成功捕獲到了一次上升沿 { temp=TIM5CH1_CAPTURE_STAamp。 //標記捕獲到了上升沿 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling)。 TIM_SetCounter(TIM5,0)。 //CC1P=0 設置為上升沿捕獲 }else //還未開始 ,第一次捕獲上升沿 { TIM5CH1_CAPTURE_STA=0。 //標記成功捕獲到一次上升沿 TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5)。}} if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕獲 1 發(fā)生捕獲事件 基于 stm32 的智能小車設計 27 { if(TIM5CH1_CAPTURE_STAamp。//標記成功捕獲了一次 TIM5CH1_CAPTURE_VAL=0XFFFF。0X40)//已經(jīng)捕獲到高電平了 { if((TIM5CH1_CAPTURE_STAamp。 我們知道了如何設置 TIM5 的 CH1 為輸入捕獲模式, 我們是在 TIM5 的中斷 服務函數(shù)中采集持續(xù)時間 t 的, TIM5CH1_CAPTURE_STA 為輸入捕獲狀態(tài),TIM5CH1_CAPTURE_VAL 為輸入捕獲值 , 中斷服務函數(shù)如下所示 : if((TIM5CH1_CAPTURE_STAamp。NVIC_InitStructure)。 = ENABLE。 =1。 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE)。TIM5_ICInitStructure)。 = 0x00。 = TIM_ICSelection_DirectTI。 =TIM_Channel_1。TIM_TimeBaseStructure)?;?stm32 的智能小車設計 26 = TIM_CounterMode_Up。 =psc。 ? 初始化 TIM5, 設置 TIM5 的 psc 和 arr。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE)。 然后,我們再看看控制寄存器 TIMx_CR1,我們只用到了最低位,所以我們僅介紹位 0 的功能, TIMx_CR1 寄存器各位描述及位 0 功能描述如下如所示: 圖 TIMx_CR1 寄存器各位描述及位 0 功能描述 我們要使能計數(shù)器,所以位 0 設置為 1。 接著我們再來看看捕獲 /比較使能寄存器 TIMx_CCER,本節(jié)用到了 CC1E 和 CC1P兩位,描述如下圖所示: 圖 TIMx_CCER 最低兩位描述 基于 stm32 的智能小車設計 25 所以要使能通道 CH1 輸入捕獲, CC1E 必須設置為 1,而 CC1P 則可以根據(jù)實際情況設置。 TIM5_PSC、 TIM5_ARR、 TIM5_CCR1 這 3個寄存器用法與前節(jié)中相同,我們就不在贅述,而在本實驗中,捕獲 /比較寄存器 TIM5_CCMR1 非常重要,該寄存器的各位描述如下圖所示: 基于 stm32 的智能小車設計 24 圖 TIMx_CCMR1 各位描述 我們使用的是 TIM5 捕獲 /比較通道 CH1,所以圖中只介紹 [7:0]位。為了使 TIM5 通道 CH1 具有捕獲功能,我們需要用 到 TIM5_PSC、 TIM5_ARR、 捕獲 /比較模式寄存器( TIM5_CCMR1) 、 捕獲 /比較使能寄存器 (TIM5_CCER)、 捕獲 /比較寄存器( TIM5_CCR1) 、 DMA/中斷使能寄存器( TIM5_DIER) 、 控制寄存器 (TIM5_CR1)。 輸入捕獲的原理,簡單的講就是通過檢測 TIM5(定時器)通道 CH1 的邊沿信號, 當邊沿信號發(fā)生變化時,當前寄存器的值 TIM1_CNT 存放到通道的捕獲 /比較寄存器( TIM5_CCR1)里面。 我們 開啟 TIM5 通道 CH1(定時器 5)的輸入捕獲模式, 采集 ECHO 端口的 高電平 持續(xù) 時間 。 GPIO_ResetBits(GPIOC,GPIO_Pin_7)。 GPIO_SetBits(GPIOC,GPIO_Pin_7)。 由于配置定時器中斷模式十分簡單 , 我們就不在詳細介紹 , 其詳細代碼見附錄 4.定時器 TIM2 的 中斷周期計算公式為 T=((arr+1)*(ps
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1