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

正文內(nèi)容

畢業(yè)設(shè)計-基于atmega8單片機(jī)尋跡小車設(shè)計-資料下載頁

2024-11-10 10:10本頁面

【導(dǎo)讀】本設(shè)計是基于ATmega8單片機(jī)控制的簡易自動尋跡小車系統(tǒng)。計出一款可以自主按照預(yù)設(shè)的軌跡行走的小車。從設(shè)計的功能要求出發(fā),小車硬。件系統(tǒng)由ATmega8微控制器、紅外傳感器、和直流驅(qū)動電機(jī)組成。ATmega8為控制核心,用單片機(jī)產(chǎn)生PWM波,控制電機(jī)速度繼而改變小車方向。路面檢測信號反饋給單片機(jī)。單片機(jī)對采集到的信號予以分析判斷,及時控制驅(qū)。識別黑色引導(dǎo)線并根據(jù)黑色引導(dǎo)實現(xiàn)快速穩(wěn)定的尋線行駛。智能小車的背景····································································2. 課題研究的目的和意義····························································3. 理論及設(shè)計方案·········&#18

  

【正文】 軟件設(shè)計,在接下了的這章,就要進(jìn)行系統(tǒng)的仿真驗證整個系統(tǒng)的可行性,本次仿真系統(tǒng)采用的是 ICC AVR 和 Proteus 搭建的系統(tǒng)仿真調(diào)適平臺。 ICC AVR 與 Proteus 說明 ICC AVR 是一款非常好用的 AVR 編譯軟件。它綜合了編輯器和工程管理器的集成工作環(huán)境 ,使用符合 ANSI 標(biāo)準(zhǔn)的 C 語言來開發(fā)微控制器 MCU 程序的一個工具 。 Proteus 是當(dāng)前 EDA( Electronic Design Auromation) 市場上性價比最高和性能最強(qiáng)的一款單片機(jī)軟件仿真系統(tǒng),它由 ISIS 原理圖設(shè)計、 仿真系統(tǒng)和ARES 印制電路板設(shè)計系統(tǒng)組成。其中, ISIS 能夠完成模擬電路仿真、數(shù)字電路仿真以及單片機(jī)實驗仿真。 模擬光電檢測電路 在 Proteus 仿真中,以電阻、 LED 燈和開關(guān)串聯(lián)接入電源來以模擬光電開關(guān)檢測黑線的過程。電路圖如圖 51 所示。 圖 51 光電開關(guān)模擬電路 開關(guān) 2 開關(guān) 1 開關(guān) 0 開關(guān) 3 開關(guān) 4 開關(guān) 5 PC0~PC5 28 手動閉合“開關(guān) 0” ~“開關(guān) 5”中一個,則相應(yīng) PC 端口輸出高電平。以此模擬光電開關(guān)檢測到黑線。 表 51 開關(guān)閉合模擬黑線位置 Proteus 仿真過程以及結(jié)果 巡線小車程序使用 ICC AVR 軟件編寫源代碼,并編譯生成 .hex 文件,導(dǎo)入Proteus 中模擬運行。在仿真過程中為了便于觀察左右兩側(cè)電機(jī)電壓的占空比,在 Proteus 中調(diào)入示波器 A,示波器 B。分別輸出右電機(jī)電壓波形圖和左電機(jī)電壓波形圖。如圖示波器 A、示波器 B 的接法。 圖 52 示波 器的接線及對應(yīng)電機(jī) 開關(guān) 0 開關(guān) 1 開關(guān) 2 開關(guān) 3 開關(guān) 4 開關(guān) 5 模擬黑線位置 閉合 開 開 開 開 開 最右端 開 閉合 開 開 開 開 偏右 開 開 閉合 開 開 開 中心 開 開 開 閉合 開 開 中心 開 開 開 開 閉合 開 偏左 開 開 開 開 開 閉合 最左端 29 Proteus 仿真步驟及結(jié)論: ( 1)點擊 Proteus 左下角運行程序,開始模擬小車的運行過程。此時左右電機(jī)都已相同速度轉(zhuǎn)動,左右示波器輸出相同占空比波形。 ( 2)當(dāng)閉合開關(guān) 2 或開關(guān) 3(黑線在中心)左右電機(jī)轉(zhuǎn)速任然相同。 ( 3)斷開所有開關(guān),閉合開關(guān) 4(黑線偏左)。右電機(jī)轉(zhuǎn)速稍微比左電機(jī)快,觀察示波器,示波器 A 高電平持續(xù)時間比示波器 B 更長。 ( 4)斷開所有開關(guān),閉合開關(guān) 5(黑線最左)。右電機(jī)轉(zhuǎn)速明顯比左電機(jī)快,觀察示波器,示波器 A 高電平持續(xù)時間比示波器 B 更長。 ( 5)黑線在偏右模擬同上。 結(jié)論: 模擬小車巡線運行成功。 30 結(jié) 論 本論文設(shè)計以 ATmega8 單片機(jī)為基礎(chǔ)設(shè)計了一套能自動巡線并行駛的小車電路及程序。其中電路圖包括實物電路圖和仿真電路圖兩套電路。不同之處在于仿真電路圖 以 按鍵 開關(guān)模擬光電開關(guān) 并 省去了程序下載電路。程序中 ADC 子程序, PWM 調(diào)速子程序, PID 控制子程序,電機(jī)速度選擇程序都含有,并都能按預(yù)期的執(zhí)行。在 Proteus 仿真中也得到了驗證,仿真很成功。但是仿真依然是處于理論的基礎(chǔ),只是驗證的電路圖及程序的可行 性。在實際的小車運行中人需要要考慮很多問題,比如光電開關(guān)的誤差 ;實 際小車的運行速度是否會影響檢測黑線 ; 小車經(jīng)過不同角度的彎道速度應(yīng)該 取 多少 ; 還有 PID 控制中 PK 、 DK 取值 。都這些問題實際制作小車過程中都需要一一考慮并調(diào)試修改。 31 參考文獻(xiàn) [1]章政 ,吳懷宇 ,程磊 .大學(xué)生智能汽車設(shè)計基礎(chǔ)與實踐 .電子工業(yè)出社 .2020,7 [2]張建民 ,機(jī)電一體化系統(tǒng)設(shè)計 (第三版 ),高等教育出版社 2020,7 [3]熊和金 . 智能汽車系統(tǒng)研究的若干問題 ,2020,2:37~40 [4]姜培剛,蓋玉先 .機(jī)電 一體化系統(tǒng)設(shè)計 .北京 :機(jī)械工業(yè)出版社, [5]馬潮,詹衛(wèi)前,狄德根 .ATmega8 原理與應(yīng)用 .2020,3 [6]唐一平 ,機(jī)械工程專業(yè)英語 ,電子工業(yè)出版社 ,2020,10 [7]楊路明 ,郭浩志 .C 言語程序設(shè)計教程 .北京郵電大學(xué)出版社 ,2020,5 [8]郁有文 ,常建 ,程繼紅 .傳感器原理及工程應(yīng)用 (第二版 ).西安 :西安電子科技大學(xué)出版社 ,2020 [9]黃智偉 ,全國大學(xué)生電子設(shè)計競賽訓(xùn)練教程 .北京 :電子工業(yè)出版社 ,2020 [10]鄒逢興,微機(jī)計算機(jī)原理與接口技術(shù) .北京:清華大學(xué)出版社, [11]周斌 ,李立國 ,黃開勝 .智能車光電傳感器布局對路徑的識別的影響研究 .電子產(chǎn)品世界 ,2020,5 139~140 [12]夏路易 ,石宗義 .電路原理圖與電路板設(shè)計教程 Protel :北京希望電子出版社 ,2020 [13] 沈文, AVR 單片機(jī) C 語言開發(fā)編程入門指導(dǎo) .北京:清華大學(xué)出版社 [14] and of the CIRP,1989,2(38):627634 [15]Daniel Hunt ’ s Newest Threat. New York:Chapman and Hall,1987 32 謝 辭 經(jīng)過半年的忙碌和工作,本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個 本科生的畢業(yè)設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個設(shè)計是難以想象的。 在這里首先要感謝 張老師。老師平日里工作繁忙,但在我做畢業(yè)設(shè)計的每個階段,從外出實習(xí)到查閱資料,設(shè)計草案的確定和修改,中期檢查等整個過程中都給予了我悉心的指導(dǎo)。除了敬佩張老師的專業(yè)水平外, 他 嚴(yán)肅 的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵著我。 其次要感謝和我一起作畢業(yè)設(shè)計的其他同學(xué),他們在設(shè)計中勤奮工作,克服了許多困難來完成此次畢業(yè)設(shè)計,并承擔(dān) 了大部分的工作量。如果沒有他們的努力工作,此次設(shè)計的完成將 變得非常困難。 然后還要感謝大學(xué)四年來所有的老師,為我打下扎實的專業(yè)知識基礎(chǔ);同時還要感謝所有的同學(xué)們,正是因為有了他們的支持和鼓勵,此次畢業(yè)設(shè)計才會順利完成。 33 附錄 1 include include define uchar unsigned char define uint unsigned int define countertop 10000 define Kp 600 define Kd 1200 uchar IR_state0=0。 // 定義 IR 傳感器的狀態(tài) int err[3]={0}。 //定義三次的誤差值 int err_D=0,err_P=0。 //定義偏差,利用比例,差分 int std_left=0,std_right=0,t_b=0。 char num[6]={0,0,0,0,0,0}。 int i=0。 void port_init(void) { PORTB = 0x00。 DDRB = 0xff。 PORTC = 0x00。 DDRC = 0x00。 } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI()。 //disable all interrupts port_init()。 34 MCUCR = 0x00。 GICR = 0x00。 TIMSK = 0x00。 //timer interrupt sources SEI()。 //reenable interrupts //all peripherals are now initialized } /************************************ adc 初始化 *************************************/ void adc_init() { ACSR=0x80。 //關(guān)掉模擬比較器的電源 (禁用模擬比較器 ) ADMUX=(1REFS0)。//設(shè)置參考電壓為 AREF 端輸入; ADCSRA=(1ADEN)。//使能 ADC。選擇的是連續(xù)模式 SFIOR=0x00。 //adc 高速模式選擇 } /************************************ atmega8 ADC 轉(zhuǎn)換程序 *************************************/ unsigned char adc_get(int q) // q 為要 ADMUX 值,可以選擇 ADC 通道 { unsigned int temp。 ADMUX=q。 ADCSRA|=(1ADSC)。 //開始轉(zhuǎn)換 while(!(ADCSRamp。(1ADIF))){。} //等待轉(zhuǎn)換完成 ADCSR|=(1ADIF)。 //清標(biāo)志 temp=ADC。 //讀數(shù) temp=temp*5/0x03ff。 //轉(zhuǎn)換成 05(表示 05) return (unsigned char)(temp)。 } 35 void adc_all() //獲取 PC0~PC5 6 個通道的信息并存放在 num[]數(shù)組中 { num[0]=adc_get(0x40)。 num[1]=adc_get(0x41)。 num[2]=adc_get(0x42)。 num[3]=adc_get(0x43)。 num[4]=adc_get(0x44)。 num[5]=adc_get(0x45)。 } /************************************ 速度選擇子程序 *************************************/ void speed(uchar level) { switch(level) { case 2:std_left=2020。std_right=2020。break。 //定義速度 1,低速 case 5:std_left=5000。std_right=5000。break。 //定義速度 2,中速 case 10:std_left=8000。std_right=8000。break。 //定義速度 3,高速 } } 36 void ErrSet() //誤差處理函數(shù) { err[2]=err[1]。err[1]=err[0]。 switch(IR_state0) { case 0: err[0]=0。speed(10)。break。 //線在正中心 case 3: err[0]=1。speed(5)。break。 //左偏 1 case 1: err[0]=1。speed(5)。break。 //右偏 1 case 4: err[0]=2。speed(2)。break。 //左偏 2 case 2: err[0]=2。speed(2)。break。 //右偏 2 } } /************************************ 定時器 1 相位修正 PWM 初始化 *************************************/ void init_timer1_PWM(unsigned int x,unsigned int y) { DDRB|=(1PB1)|(1PB2)。 TCCR1B=0x0。//先停止 TC1 TCNT1=0。//設(shè)置 TCNT1 的初值 OCR1A=x。//設(shè)置 OC1A 的初值 OCR1B=y。//設(shè)置 OC1B 的初值 ICR1=countertop。//設(shè)置 ICR 的初值 TCCR1A|=(1COM1A1)|(1COM1B1)|(1WGM11)。 TCCR1B|=(1WGM13)|(1CS11)。 } 37 //調(diào)節(jié)占空比 void timer1_PWM(int x,int y) { if (x=countertop) x=countertop。 //避免 PWM 值超過計數(shù)器的最大值; if (y=countertop) y=countertop。 //避免 PWM 值超過計數(shù)器的最大值; OCR1A=x。 OCR1B=y。 } /************************************ /采樣函數(shù) *************************************/ void Sample() { for(i=0。i6。i++){num[i]=0。} //清楚數(shù)組 num[] adc_all()。 if(num[0]1) {IR_state0=2。} //右偏 2 if(num[1]1) {IR_state0=1。 } //右偏 1 if(num[2]1) {IR_state0=0。 } //中心 if(num[3]1) {IR_state0=0。 } //中心 if(num[4]1) {IR_state0=3。 } //左偏 1 if(num[5]1) {IR_state0=4。 } //左偏 2 //else {IR_state0=0。} } int PidSet() { err_P=err[0]。 err_D=err[0]err[1]。 return(Kp*err_P+Kd*err_D)。 } //主函數(shù) int main() { int leftpwm=0,rightpwm=0。 38 int value=0。 adc_init()。 init_devices()。 init_timer1_PWM(4000,4000)。 while(1) //循環(huán)巡線 { Sample()。 ErrSet()。 value=PidSet()。 leftpwm=std_leftvalue。 rightpwm=std_right+value。 timer1_PWM(leftpwm,rightpwm)。 } } 39 附錄 2 實物電路圖 40 附錄 3 模擬電路圖 41
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1