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

正文內(nèi)容

單片機(jī)課設(shè)pwm控制微型直流電機(jī)調(diào)速正反轉(zhuǎn)啟停(編輯修改稿)

2025-08-03 13:08 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 過控制通入電機(jī)的脈沖頻率,從而控制電機(jī)的轉(zhuǎn)速。對(duì)于單片機(jī)而言,主要的方法有:軟件延時(shí)和定時(shí)中斷在此電路中電機(jī)的轉(zhuǎn)速控制主要是通過定時(shí)器的中斷來實(shí)現(xiàn)的,該電路控制電機(jī)加速度主要是通過SS3的斷開和閉合,從而控制外部中斷根據(jù)按鍵次數(shù),改變速度值存儲(chǔ)區(qū)中的數(shù)據(jù),從而控制電機(jī)的輸出脈沖頻率,從而改變了電機(jī)的轉(zhuǎn)速。 按鍵控制電路 狀態(tài)顯示電路設(shè)計(jì)在該步進(jìn)電機(jī)的控制系統(tǒng)中,電機(jī)可以正反轉(zhuǎn),可以加減速,其中電機(jī)轉(zhuǎn)速的等級(jí)分為八級(jí),為了方便知道電機(jī)的運(yùn)行狀態(tài)和電機(jī)的轉(zhuǎn)速的等級(jí),這里設(shè)計(jì)了電機(jī)轉(zhuǎn)速和電機(jī)的工作狀態(tài)的顯示電路。在顯示電路中,主要是利用了單片機(jī)的P0口和P2口。采用兩個(gè)共陽數(shù)碼管作顯示。第一個(gè)數(shù)碼管接的a、b、c、d、e、f、g、~,用于顯示電機(jī)正反轉(zhuǎn)狀態(tài),正轉(zhuǎn)時(shí)顯示“1”,反轉(zhuǎn)時(shí)顯示“0”,不轉(zhuǎn)時(shí)數(shù)碼管熄滅。第二個(gè)數(shù)碼管的a、b、c、d、e、f、g、~,用于顯示電機(jī)的轉(zhuǎn)速級(jí)別,共六級(jí),即從0~5轉(zhuǎn)速依次遞增,“0”表示轉(zhuǎn)速為零。 狀態(tài)顯示電路 把各個(gè)模塊的電路組合成總電路。 總體電路圖第四章 系統(tǒng)軟件設(shè)計(jì)實(shí)現(xiàn)系統(tǒng)功能可以采用多種方法,由于要控制電機(jī)的啟停、加減速信號(hào)和換向信號(hào),因此,整個(gè)程序可以分為驅(qū)動(dòng)程序、鍵盤掃描程序、延時(shí)程序、定時(shí)器的初始化程序、速度調(diào)節(jié)程序和狀態(tài)顯示程序。其中,驅(qū)動(dòng)程序主要是用來啟動(dòng)和停止電機(jī)的運(yùn)行,若停止開關(guān)合上則電機(jī)停止運(yùn)轉(zhuǎn),反之電機(jī)按照相應(yīng)的速度檔位運(yùn)轉(zhuǎn);鍵盤掃描程序的功能是不斷地掃描按鍵,看是否有按鍵按下,以便及時(shí)對(duì)其做出反應(yīng);延時(shí)程序的功能是防止按鍵時(shí)抖動(dòng),以免按鍵掃描時(shí)發(fā)生錯(cuò)誤,導(dǎo)致響應(yīng)錯(cuò)誤;定時(shí)器初始化程序用來對(duì)所用的定時(shí)器進(jìn)行初始化設(shè)置;速度調(diào)節(jié)程序的功能是控制脈沖頻率,它決定了電機(jī)轉(zhuǎn)速的快慢;狀態(tài)顯示程序是利用數(shù)碼管來顯示點(diǎn)擊的正反轉(zhuǎn)狀態(tài)和速度檔位。 主程序中要完成的工作主要有對(duì)系統(tǒng)初始值的設(shè)置、系統(tǒng)狀態(tài)的顯示以及各種開關(guān)狀態(tài)的檢測(cè)判斷等。系統(tǒng)上電后,首先對(duì)定時(shí)器的狀態(tài)進(jìn)行設(shè)置,包括定時(shí)器的工作方式以及對(duì)P1口送初值以決定脈沖分配方式,速度值存儲(chǔ)區(qū)送初值決定電機(jī)的啟動(dòng)速度,對(duì)方向值存儲(chǔ)區(qū)送初值決定步進(jìn)電機(jī)旋轉(zhuǎn)方向等內(nèi)容等;然后對(duì)系統(tǒng)的狀態(tài)進(jìn)行顯示;接著不斷的進(jìn)行鍵盤掃描,若有按鍵按下,則調(diào)出相應(yīng)的子程序,使系統(tǒng)對(duì)按鍵作出反應(yīng);然后又根據(jù)反應(yīng)后的系統(tǒng)狀態(tài)更新顯示。,主程序部分如下:void main(){ time_init()。 while(1){ display()。 keyscan()。 }}開始定時(shí)器初始化 是否按下turn鍵? N Y是否為TURN鍵按下?Y 反轉(zhuǎn)N NN是否為加速鍵按下?是否為減速鍵按下?YY 正轉(zhuǎn) 減速加速顯示狀態(tài) 主程序流程圖 定時(shí)器的初始化程序設(shè)計(jì)定時(shí)器是用來產(chǎn)生PWM信號(hào)以控制直流電機(jī)轉(zhuǎn)動(dòng)的。因此,必須設(shè)置好定時(shí)器的工作方式以及定時(shí)初值,還要開啟中斷,以便響應(yīng)按鍵動(dòng)作。所用定時(shí)器為定時(shí)器0,設(shè)置為工作方式為1。在模式1中,寄存器TH0和TL0以全8位參與操作,構(gòu)成一個(gè)16位定時(shí)/計(jì)數(shù)器,當(dāng)TH0溢出時(shí)向中斷標(biāo)志位TF0進(jìn)位,并申請(qǐng)中斷。在這種模式下T0定時(shí)時(shí)間最長(zhǎng),有利于在更大的范圍內(nèi)對(duì)電機(jī)進(jìn)行調(diào)速。寄存器TH0和TL0分別存儲(chǔ)定時(shí)初值的高八位和低八位,由于計(jì)數(shù)值范圍為1—65536,則可確定初值的大小。程序如下: void time_init(){TMOD=0x01。 TH0=(65536a)/256。TL0=(65536a)%256。 ET0=1。 EA=1。 TR0=0。} 顯示程序設(shè)計(jì)單片機(jī)的P0口和P2口用來控制兩個(gè)共陽極的七段數(shù)碼管。分別用來顯示電機(jī)的正反轉(zhuǎn)狀態(tài)以及當(dāng)前速度所在的檔位。當(dāng)電機(jī)正轉(zhuǎn)時(shí),第一個(gè)數(shù)碼管顯示0;反轉(zhuǎn)時(shí),第二個(gè)數(shù)碼管分別顯示0—5。程序如下:void display() { if(right==0)P0=0xc0。 elseif(right==1amp。amp。left==0) P0=0xf9。 switch(count) { case 0:P2=0xc0。count=0。break。//速度等級(jí)為0,第二個(gè)數(shù)碼管顯示0 case 1:P2=0xf9。count=1。break。//速度等級(jí)為1,第二個(gè)數(shù)碼管顯示1 case 2:P2=0xa4。count=2。break。//速度等級(jí)為2,第二個(gè)數(shù)碼管顯示2 case 3:P2=0xb0。count=3。break。//速度等級(jí)為3,第二個(gè)數(shù)碼管顯示3 case 4:P2=0x99。count=4。break。//速度等級(jí)為4,第二個(gè)數(shù)碼管顯示4 case 5:P2=0x92。count=5。break。//速度等級(jí)為5,第二個(gè)數(shù)碼管顯示5 default :break。 }} 鍵盤掃描程序設(shè)計(jì)鍵盤掃描程序用來對(duì)按鍵動(dòng)作做出及時(shí)響應(yīng)。當(dāng)進(jìn)行加速或減速操作時(shí),要求電機(jī)的速度能夠進(jìn)行相應(yīng)的變化。這些都通過改變定時(shí)器產(chǎn)生的PWM信號(hào)的占空比來實(shí)現(xiàn)?!WM(脈沖寬度調(diào)制)是一系列周期固定、占空比可調(diào)的脈沖系列,由于每個(gè)脈沖的高電平時(shí)間和低電平時(shí)間之和必須等于周期數(shù),所以輸出電平的維持時(shí)間必須由定時(shí)器來控制。設(shè)PWM周期為T,高電平時(shí)間為TH,低電平時(shí)間為TL,電壓為VCC,則輸出電壓的平均值為:UAV=VCC*TH/(TH+TL)=VCC*TH/T=aVCC,當(dāng)VCC固定時(shí),其電壓值取決于PWM波形的占空比a,而PWM的占空比由單片機(jī)軟件內(nèi)部用于控制PWM輸出的寄存器決定。但是,一般按鍵在按下的時(shí)候有抖動(dòng)的問題,即鍵的簧片在按下時(shí)會(huì)有輕微的彈跳,需經(jīng)過一個(gè)短暫的時(shí)間才會(huì)可靠地接觸。若在簧片抖動(dòng)時(shí)進(jìn)行掃描就可能得出不正確的結(jié)果。因此,在程序中要考慮防抖動(dòng)的問題。最簡(jiǎn)單的辦法是在檢測(cè)到有鍵按下時(shí),等待(延遲)一段時(shí)間再進(jìn)行“行掃描”,延遲時(shí)間為10~20ms。這可通過調(diào)用子程序來解決,當(dāng)系統(tǒng)中有顯示子程序時(shí),調(diào)用幾次顯示子程序也能同時(shí)達(dá)到消除抖動(dòng)的目的。程序如下:void delay(uchar z) //在12M下延時(shí)z毫秒{uint x,y。for(x=z。x0。x)for(y=110。y0。y)。}void keyscan(){ if(stop==0){TR0=0。 //關(guān)閉定時(shí)器0 即可停止轉(zhuǎn)動(dòng)end_turn。}if(left==0amp。amp。stop==1){TR0=1。 dflag=1。 }if(right==0amp。amp。stop==1){ TR0=1。 dflag=0。 //轉(zhuǎn)向標(biāo)志復(fù)位則右轉(zhuǎn)}if(add==0||sub==0){if(add==0) { delay(5) 。 //延時(shí)消抖 if(add==0) {while(add==0) 。 //等待松手 count++。} }if(sub==0){ delay(5) 。if(sub==0){while(sub==0) 。count。}} if(count==0) {t0=25000。t1=25000。} if(count==1) {t0=20000。t1=30000。 //占空比為百分之60 } if(count==2) {t0=15000。t1=35000。 //占空比為百分之70 }if(count==3) {t0=10000。 t1=40000。 //占空比為百分之80 } if(count==4){t0=5000。t1=45000。 //占空比為百分之90 }if(count==5) {t0=t1=47500
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1