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

正文內(nèi)容

基于at89s51單片機(jī)的單軸步進(jìn)電機(jī)控制器設(shè)計(jì)畢業(yè)設(shè)計(jì)(參考版)

2025-06-30 17:50本頁面
  

【正文】 } init_time0()。 num2++) { write_data(table2[num2])。 for(num2 = 0。 delay(100)。 num1 16。 init_lcd()。 //打開定時(shí)器0中斷 TR0=1。//計(jì)數(shù)10000次溢出,12MHZ晶振頻率溢出一次的 EA=1。 //定義定時(shí)器0的工作方式 TH0=(6553610000)/256。 step_up()。 //松手檢測(cè) delay(5)。 //步進(jìn)電機(jī)正向減速 } if(key6 == 0) //加速復(fù)位鍵按下 { delay(5)。 while(!key5)。 //延時(shí)消抖 while(!key5)。 step_back()。 delay(5)。 //步進(jìn)電機(jī)停止 } if(key4 == 0) //復(fù)位鍵按下 { delay(5)。 while(!key3)。 while(!key3)。 //松手檢測(cè) step_go()。 //松手檢測(cè) delay(5)。 } if(key2 == 0) //正向啟動(dòng)鍵按下 { delay(5)。 ding_wei(0x07,num)。z39。)。 write_data(39。 delay(5)。 delay(5)。 } } }//獨(dú)立鍵盤掃描函數(shù)void keyscan(){ P3 = 0xff。 } delay(10)。 num4++) { write_data(table3[num4])。 for(num4 = 0。 init_lcd()。 write_(0x01)。 delay(5)。 keyscan()。 mai_chong = ~mai_chong。)。 write_data(39。f39。 write_(0x80 + 0x4e)。 mai_chong = 1。 shi_neng = 1。 } } }//步進(jìn)電機(jī)復(fù)位函數(shù)void step_back(){ uint num4。 } delay(10)。 num5++) { write_data(table3[num5])。 //寫完成后狀態(tài) for(num5 = 0。 init_lcd()。 //顯示初始化 write_(0x01)。 //顯示清屏 delay(5)。 keyscan()。 mai_chong = ~mai_chong。)。 //寫步進(jìn)電機(jī)加速復(fù)位狀態(tài) write_data(39。j39。 write_(0x80 + 0x4e)。 mai_chong = 1。 shi_neng = 1。 } } }//步進(jìn)電機(jī)加速復(fù)位函數(shù)void step_up(){ uint num5。 //輸出時(shí)鐘脈沖 delay(80)。 while(1) { while(y = z) //判斷步進(jìn)電機(jī)脈沖信號(hào)是否完成 { y++。a39。)。 write_data(39。 fang_shi = 1。 fang_xiang = 1。}//步進(jìn)電機(jī)正向減速函數(shù)void step_slow(){ TR0 = 1。 ding_wei(0x44,m)。 m = (y/20)。z39。)。 write_data(39。 //關(guān)閉脈沖信號(hào) fang_shi = 1。 fang_xiang = 1。 //關(guān)定時(shí)器T0 TR0=0。//延時(shí) (括號(hào)內(nèi)數(shù)值越小,電機(jī)轉(zhuǎn)動(dòng)速度越快) keyscan()。 mai_chong = ~mai_chong。 //通過計(jì)算可知20個(gè)脈沖行程為1毫米 while(1) { delay(2)。)。 //寫正向轉(zhuǎn)動(dòng)狀態(tài) write_data(39。z39。 write_(0x80 + 0x4e)。 mai_chong = 1。 shi_neng = 1。 //顯示十位數(shù)字write_data(0x30 + ge)。 //調(diào)用LCD1602寫命令函數(shù)其中add為數(shù)據(jù)指針write_data(0x30 + bai)。 //計(jì)算設(shè)置值十位ge = ding_chang%10。 //定義LCD1602顯示的三位行程數(shù)值bai = ding_chang/100。//顯示光標(biāo)移動(dòng)設(shè)置(讀寫一個(gè)字符后地址指針加一)write_(0x0c)。 //顯示關(guān)閉write_(0x01)。}//lcd1602初始化函數(shù)void init_lcd(){write_(0x38)。 //使能端置1delay(5)。 //LCD1602使能端置0P0 = dat。 //向LCD1602輸入數(shù)據(jù) rw = 0。 //延時(shí)5ms lcden = 0。 //將指令由P0口送入 lcden = 1。 //向LCD1602寫入指令或數(shù)據(jù) lcden = 0。 }}//lcd1602寫命令函數(shù)void write_(uchar ){ rs = 0。 j 0。 i 0。 //聲明step_up()//延時(shí)函數(shù)void delay(uint x) { uint i, j。 //聲明keyscan()函數(shù)void init_time0()。 //聲明step_stop()函數(shù)void step_back()。 //定義當(dāng)前的脈沖數(shù),設(shè)置行程值uint z。uchar code table3[] = finish! 。//定義顯示界面 uchar code table1[] = set:000mm 。sbit mai_chong = P1^2。 //加速復(fù)位鍵//L297端口定義sbit shi_neng = P1^0。 //復(fù)位鍵sbit key5 = P2^3。 //啟動(dòng)前進(jìn)鍵sbit key3 = P1^6。//用戶按鍵定義sbit key1 = P1^4。 //lcd1602定義sbit rw = P2^1。論文中的很多材料取于相關(guān)書籍和互聯(lián)網(wǎng),也向相關(guān)資料的作者表示感謝。他總是鼓勵(lì)我們要相信自己,只要用心去做,就能把這個(gè)設(shè)計(jì)做好。在設(shè)計(jì)當(dāng)中也碰到過很多問題,無論簡(jiǎn)單復(fù)雜王老師總會(huì)耐心解釋,直到真正地理解。致 謝在這次設(shè)計(jì)當(dāng)中,我要特別感謝我的指導(dǎo)老師給與我的支持,由于在此之前對(duì)步進(jìn)電機(jī)以及步進(jìn)電機(jī)控制器設(shè)計(jì)不是很了解,王老師不僅很耐心的指導(dǎo)我,而且給我找來相關(guān)資料??梢钥隙?,隨著技術(shù)的不斷發(fā)展,步進(jìn)電機(jī)的控制應(yīng)用前景將越來越寬闊,而其控制系統(tǒng)也將向著智能化和網(wǎng)絡(luò)化的方向發(fā)展。我深知自己做的工作還很不夠,由于軟件和硬件的各方面原因,系統(tǒng)的應(yīng)用討論不夠,精度還有待于進(jìn)一步提高。設(shè)計(jì)當(dāng)中一些地方還可以進(jìn)一步完善,比如獨(dú)立按鍵電路,可以改用矩陣鍵盤電路這樣不僅可以方便操作也可以減少單片機(jī)I/O口的使用。軟件的設(shè)計(jì)大部分采用結(jié)構(gòu)化設(shè)計(jì)的方法以方便調(diào)試,并使其可讀性大大增強(qiáng),方便更改和移植。要合理地安排盡量減少干擾提高性能。設(shè)計(jì)當(dāng)中無論是軟件還是硬件設(shè)計(jì)都需要設(shè)計(jì)周全。整個(gè)系統(tǒng)所包含的技術(shù)幾乎包括了現(xiàn)本科學(xué)??刂茖I(yè)所要求的知識(shí),有利于實(shí)踐教學(xué)取得較大效果。結(jié) 論本設(shè)計(jì)通過分析步進(jìn)電機(jī)結(jié)構(gòu)、工作原理,查閱步進(jìn)電機(jī)控制系統(tǒng)的相關(guān)科技文獻(xiàn),遵循實(shí)用、簡(jiǎn)單、可靠和低成本的原則,設(shè)計(jì)了一種既可用于精度要求相對(duì)不高,但控制需完備的場(chǎng)合。通過在Proteus軟件上反復(fù)進(jìn)行調(diào)試改正,結(jié)果程序調(diào)試正常,能完成設(shè)計(jì)所需要的功能,當(dāng)程序啟動(dòng)后通過key1按鍵設(shè)置所需行程值,然后按下key2鍵啟動(dòng)步進(jìn)電機(jī)正向轉(zhuǎn)動(dòng),然后可通過按鍵使步進(jìn)電機(jī)停止、減速前進(jìn)、復(fù)位、加速復(fù)位等功能,并可以通過LCD1602實(shí)時(shí)顯示出來。用軟件模擬器調(diào)試不需任何在線仿真器,也不需要用戶樣機(jī),直接就可以在PC機(jī)上開發(fā)和調(diào)試。整體程序調(diào)試,即把各子程序整體連起來進(jìn)入到綜合電路調(diào)試,看是否能實(shí)現(xiàn)預(yù)計(jì)的功能顯示。調(diào)試過程中單片機(jī)相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、端口狀態(tài)等都可以在指定的窗口區(qū)域顯示出來,以確定程序運(yùn)行有無錯(cuò)誤。本設(shè)計(jì)是在Proteus軟件調(diào)試的,完全用仿真軟件在PC機(jī)上對(duì)目標(biāo)電路原理圖和程序進(jìn)行檢測(cè)和調(diào)試。在仿真調(diào)試當(dāng)中,經(jīng)常會(huì)出現(xiàn)一些硬件、軟件上的錯(cuò)誤,這是軟件和硬件開發(fā)者經(jīng)常遇見的,這就需要發(fā)現(xiàn)錯(cuò)誤并加以改正。通過軟件和硬件相結(jié)合系統(tǒng)即可運(yùn)行。整個(gè)系統(tǒng)軟件設(shè)計(jì)包括主程序、初始化子程序、顯示子程序、按鍵子程序四部分,所有程序都是密切聯(lián)系的,再結(jié)合設(shè)計(jì)的硬件電路,對(duì)所有部分進(jìn)行設(shè)計(jì)論證后然后銜接起來完成了整個(gè)步進(jìn)電機(jī)控制器軟硬件的設(shè)計(jì)。 運(yùn)行顯示界面軟件設(shè)計(jì)通過對(duì)整個(gè)系統(tǒng)按照各個(gè)程序模塊分別講解來加深對(duì)整個(gè)系統(tǒng)的軟件部分的理解。 //顯示個(gè)位數(shù)字} 上面程序?yàn)樵O(shè)置步進(jìn)電機(jī)所要走的定長以及當(dāng)前步進(jìn)電機(jī)的狀態(tài)。 //顯示百位數(shù)字 write_data(0x30 + shi)。 //計(jì)算設(shè)置值個(gè)位 write_(0x80 + add)。 //計(jì)算設(shè)置值百位 shi = ding_chang%100/10。void ding_wei(uchar add, uint ding_chang){ uint bai, shi, ge。 顯示程序流程圖顯示子程序是當(dāng)相應(yīng)按鍵按下之后,把步進(jìn)電機(jī)的運(yùn)行狀態(tài)通過LCD1602顯示出來。 //步進(jìn)電機(jī)加速復(fù)位 }}如上面程序所述對(duì)應(yīng)按鍵按下的時(shí)候,步進(jìn)電機(jī)有相應(yīng)的動(dòng)作以及顯示,如下圖設(shè)置定長為10mm,步進(jìn)電機(jī)正向轉(zhuǎn)動(dòng),已走行程值為4mm。 while(!key6)。 //延時(shí)消抖 while(!key6)。 step_slow()。 //松手檢測(cè) delay(5)。 //步進(jìn)電機(jī)復(fù)位 } if(key5 == 0) //正向減速鍵按下 { delay(5)。 //延時(shí)消抖 while(!key4)。 //延時(shí)消抖 while(!key4)。 //松手檢測(cè) step_stop()。 //松手檢測(cè) delay(5)。 //執(zhí)行正向啟動(dòng) } if(key3 == 0) //鍵3被按下 { delay(5)。 //延時(shí)消抖 while(!key2)。 //延時(shí)消抖 while(!key2)。void keyscan(){ P3 = 0xff。Key2為正向啟動(dòng)按鍵,key3為停止按鍵,key4為復(fù)位按鍵,key5為正向減速按鍵,key6為加速復(fù)位按鍵。所以在編程的時(shí)候判斷按鍵按下是低電平有效。 //打開定時(shí)器0中斷TR0=1。 //計(jì)數(shù)10000次溢出,溢出一次的時(shí)間為10usEA=1。 //定義定時(shí)器0的工作方式,為方式1TH0=(6553610000)/256。 //顯示光標(biāo)移動(dòng)設(shè)置(讀寫一個(gè)字符后地址指針加一)write_(0x0c)。 //顯示關(guān)閉write_(0x01)。void init_lcd(){write_(0x38)。系統(tǒng)初始化上電后,沒有按鍵按下,沒有設(shè)置行程值則步進(jìn)電機(jī)電機(jī)不轉(zhuǎn),不顯示當(dāng)前狀態(tài)和當(dāng)前行程值。設(shè)計(jì)中采用了定時(shí)器T0,工作方式為方式1即16為定時(shí)器/計(jì)數(shù)器,裝入定時(shí)器的初始值為55536也即計(jì)數(shù)10000次溢出。系統(tǒng)初始化對(duì)相應(yīng)的系統(tǒng)參數(shù)進(jìn)行初始化,包括系統(tǒng)上電默認(rèn)運(yùn)行參數(shù)設(shè)定,包括四相八拍的工作方式,LCD1602顯示界面、系統(tǒng)定時(shí)器設(shè)定、載入定時(shí)器初值和默認(rèn)的工作參數(shù)等。 系統(tǒng)啟動(dòng)顯示界面其中在LCD1602顯示界面第一行set為所需要設(shè)置的行程值,now為執(zhí)行完相應(yīng)按鍵子程序后顯示當(dāng)前已經(jīng)走的行程值,zt為當(dāng)前的狀態(tài),有設(shè)置(sz)、正向啟動(dòng)(zx)、停止(tz)、復(fù)位(fw)、正向減速(ja)、加速復(fù)位(js)等六個(gè)表示狀態(tài)。在步進(jìn)電機(jī)正向轉(zhuǎn)動(dòng)過程中,系統(tǒng)程序則繼續(xù)執(zhí)行按鍵掃描程序,如果有相應(yīng)的按鍵按下則轉(zhuǎn)到相應(yīng)按鍵子程序去執(zhí)行。 }}系統(tǒng)上電完成后,對(duì)LCD1602初始化,定時(shí)器也進(jìn)行初始化,啟動(dòng)顯示界面等待設(shè)置按鍵按下,進(jìn)行行程值的設(shè)定。
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1