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

正文內(nèi)容

基于單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2025-06-30 18:21本頁(yè)面

【導(dǎo)讀】目前步進(jìn)電機(jī)控制技術(shù)已經(jīng)比較成熟,在高校教學(xué)中也越來(lái)越得到重視。路、單片機(jī)技術(shù)、電機(jī)控制技術(shù)結(jié)合起來(lái)的步進(jìn)電機(jī)教學(xué)實(shí)驗(yàn)系統(tǒng)。述了步進(jìn)電機(jī)的發(fā)展應(yīng)用情況,以及常見(jiàn)的控制方式。然后以單片機(jī)為主控制器。設(shè)計(jì)了一整套的控制方案,以及完整的程序流程以及設(shè)計(jì)。

  

【正文】 能直接管理和控制硬件設(shè)備,它能直接處理中斷。也能直接訪問(wèn)存儲(chǔ)器及 I/O 接口電路。 C 語(yǔ)言是 Combined Language(組合語(yǔ)言)的中英混合簡(jiǎn)稱。是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開(kāi)發(fā)上,而且各類科研都需要用到 C 語(yǔ)言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開(kāi)發(fā)。 其特點(diǎn)有: 1) C 是中級(jí)語(yǔ)言。它把高級(jí)語(yǔ)言的基 本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。 C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作, 而 25 這三者是計(jì)算機(jī)最基本的工作單元。 2) C 是結(jié)構(gòu)式語(yǔ)言。結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護(hù)以及調(diào)試。 C 語(yǔ)言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。 3) C 語(yǔ)言功能齊全。具有各種各樣的數(shù)據(jù)類型,并引入了 指針 概念,可使程序效率更高。另外 C 語(yǔ)言也具 有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比較強(qiáng)大,可以實(shí)現(xiàn)決策目的的游戲。 4) C 語(yǔ)言適用范圍大。適合于多種操作系統(tǒng),如 Windows、 DOS、 UNIX等等;也適用于多種機(jī)型。 C 語(yǔ)言對(duì)編寫(xiě)需要硬件進(jìn)行操作的場(chǎng)合,明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用 C 語(yǔ)言編寫(xiě)的。 綜上 所述,本系統(tǒng)采用 C語(yǔ)言來(lái)編寫(xiě)程序。 26 程序的設(shè)計(jì) 各功能程序設(shè)計(jì)方案 1)不同控制方式運(yùn)行: 用鍵盤(pán)選擇運(yùn)行方式,當(dāng)鍵盤(pán)按下時(shí)進(jìn)入中斷, 根據(jù)鍵盤(pán)輸入,將轉(zhuǎn)向、控制方式、是否預(yù)置步數(shù)各設(shè)置一個(gè)變量表示,設(shè) 置完成后,根據(jù) 各變量值選擇進(jìn)入相應(yīng)子函數(shù)進(jìn)行控制。 子程序流程圖 圖 41 下面列出部分程序及實(shí)現(xiàn)功能。 key_certain () interrupt 0 using 2 //外部中斷 0 子程序 { char key=0 hang1=0。 hang2=0。 hang3=0。 if(lie1!=1|lie2!=1|lie3!=1) { delay(20)。 Y N 進(jìn)入中斷 鍵盤(pán)第 N 行置 1 逐行檢測(cè)鍵盤(pán)列信號(hào) 是否為 0 計(jì)算鍵值 返回主函數(shù),返回值為鍵值 N+1 27 if(lie1!=1|lie2!=1|lie3!=1)//延時(shí)去抖動(dòng),再次確認(rèn)鍵被按下,鍵按下返回值為 1,否則為 0 key=1。 else return=0。 } else return=0。 if(key)== 1) //確定鍵被按下后,掃描是那個(gè)鍵被按下 { for(j=0。j3。j++) //四次掃描處理 { if(j==0) { hang1=0。 hang2=1。 hang3=1。 } if(j==1) { hang1=1。 hang2=0。 hang3=1。 } if(j==2) { hang1=1。 hang2=1。 hang3=0。 }//逐行置 0 if(lie1==0) key=3*j+0。 if(lie2==0) key=3*j+1。 if(lie3==0) key=3*j+2。 } 28 } retuen(key)。 } 2)轉(zhuǎn)速控制: 調(diào)用單片機(jī)內(nèi)定時(shí)器作為延時(shí)時(shí)間源,將定時(shí)器時(shí)間設(shè)定作為一個(gè)子程序,定時(shí)器參數(shù)為變量 ,根據(jù)鍵盤(pán)輸入來(lái)改變定時(shí)器設(shè)定參數(shù),從而改變轉(zhuǎn)速。 每次鍵盤(pán)按下進(jìn)入中斷都重置一次定時(shí)器參數(shù),即可保證速度實(shí)時(shí)更新。 子程序流程圖: 圖 42 下面列出部分程序及實(shí)現(xiàn)功能 void Timer0Init(void) //初始化定時(shí)器 0 程序 { TMOD = 0x01。 //設(shè)置模式 1 定時(shí)器 0 工作方式 0 TH0 = HI。 //給 TH0, TL0 賦初始值 開(kāi)始 讀取鍵值 是否為加速、減速鍵 Y 改變定時(shí)器參數(shù) 初始化定時(shí)器 返回 N 29 TL0 = LO。 TR0 = 1。 //啟動(dòng)定時(shí)器 0 ET0 = 1。 //定時(shí)器中斷開(kāi) EA = 1。 //總中斷開(kāi) } key_certain () interrupt 0 using 2 //外部中斷 0 子程序 { if( key==2) timedata=timedata10。 if(key==3) timedata=timedata+10。 _TH0_TL0_=65536 timedata HI=_TH0_TL0_ / 256 //給高 8 位賦值 LO=_TH0_TL0_ % 256 //給低 8 位賦值 Timer0Init()。 } 3)運(yùn)行時(shí)轉(zhuǎn)向: 設(shè)定一個(gè)變量,變量值為 1電機(jī)正轉(zhuǎn),為 0 電機(jī)反轉(zhuǎn)。 鍵盤(pán)在接入單片機(jī) I/O 口的同時(shí)接入 單片機(jī)的外部中斷引腳,在 鍵盤(pán)按下時(shí)進(jìn)入中斷來(lái)判斷鍵值,這樣既可在運(yùn)行時(shí)改變參數(shù)。 子程序流程圖: 開(kāi)始 讀取鍵值 改變轉(zhuǎn)向變量 是否為正或反轉(zhuǎn)按鍵 Y N 返回 圖 43 30 4)預(yù)置步數(shù):當(dāng)用鍵盤(pán)選擇預(yù)置步數(shù)模式時(shí),設(shè)置一個(gè)變量作為預(yù)設(shè)步數(shù),使用鍵盤(pán)可以改變這個(gè)變量,運(yùn)行時(shí)該變量作為循環(huán)次數(shù)。 模式為連續(xù)運(yùn)行非預(yù)置步數(shù)時(shí),程序循環(huán)使用 while(1)。預(yù)置步數(shù)時(shí),程序循環(huán)采 for(i=0。in。i++)。 流程圖與控制轉(zhuǎn)向相同,下面列出 預(yù)置步數(shù)時(shí)程序的實(shí)現(xiàn)方法。 以單三拍真轉(zhuǎn)為例,變量 stepdata 為步數(shù)變量返回值。 for(j=0。jstepdata。j++) //循環(huán)次數(shù)為步數(shù)變量 { if(location==1) //根據(jù)光電編碼器返回值確定下一步動(dòng)作 { AA=1。 BB=0; CC=1。 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==2) { AA=1。 BB=1; CC=0 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==3) { AA=0。 BB=1; CC=1。 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 31 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } } 5)重新啟動(dòng)不丟步:由于該系統(tǒng)是閉環(huán)系統(tǒng),每次動(dòng)作后系統(tǒng)會(huì)讀取光電編碼器返回值,當(dāng)重新啟動(dòng)時(shí)會(huì)根據(jù)當(dāng)前位置選擇相應(yīng)的走步脈沖。 6)系統(tǒng)初始化:初始化程序中,根據(jù)原理圖確定各個(gè) I/0 口變量名、函數(shù)聲明,頭文件、宏定義等。程序如下: include define uchar unsigned char define uint unsigned int sbit rs = P2^0。 //H=data。 L=mand。 sbit rw = P2^1。 //H=read。 L=write。 sbit e = P2^2。 //input enable。 sbit psb= P2^3。 //H=并口 。 L=串口 。 sbit rst= P2^4。 //Reset Signal 低電平有效 sbit AA=P1^0。 sbit BB=P1^1。 sbit CC=P1^2。 7)不同運(yùn)行模式:該系統(tǒng)步進(jìn)電機(jī)共有三種運(yùn)行模式,分別是單三拍、雙三拍、六拍模式。不同運(yùn)行模式由不同的走步脈沖實(shí)現(xiàn)。 由鍵盤(pán)選擇運(yùn)行模式,在主函數(shù)中根據(jù)鍵值進(jìn)入相應(yīng)的子程序。 單三拍走步脈沖為 ABCA, 程序?qū)崿F(xiàn)方法: if(location==1) { AA=1。 BB=0; CC=1 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==2) 32 { AA=1。 BB=1; CC=0 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==3) { AA=0。 BB=1; CC=1 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } 雙三拍 走步脈沖為 ABBCCA,程序?qū)崿F(xiàn)方法: if(location==4) { AA=0。 BB=0; CC=1 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==5) 33 { AA=1。 BB=0; CC=0 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==6) { AA=0。 BB=1; CC=0; while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==1) { AA=0。 BB=1; CC=1 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } 六拍 走步脈沖為 AABBBCCCA,程序?qū)崿F(xiàn)方法: if(location==1) { AA=0。 34 BB=0; CC=1 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==4) { AA=1。 BB=0; CC=1 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==2) { AA=1。 BB=0; CC=0 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==5) { AA=1。 BB=1; CC=0 while(!TF0) //等待定時(shí)器計(jì)時(shí)時(shí)間到 TF=0。 35 TH0 = HI。 //給 TH0, TL0 賦初始值 TL0 = LO } if(location==
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1