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

正文內(nèi)容

基于89c51的直流電機(jī)轉(zhuǎn)速的測量與控制畢業(yè)論文(編輯修改稿)

2025-07-25 00:29 本頁面
 

【文章內(nèi)容簡介】 一個(gè)算法后,需要移植到不同的MCU上時(shí),在匯編語言中只有重新編寫代碼,因而匯編語言的可移植性很差;而用C語言開發(fā)時(shí),符合ANSI C標(biāo)準(zhǔn)的程序基本不必修改,只要將一些與硬件相關(guān)的代碼做適度的修改,就可以移植到其他種類的單片機(jī)上。⑤C語言提供data、idata、pdata、xdata、和code等存儲(chǔ)器類型,針對(duì)單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)空間、外部數(shù)據(jù)存儲(chǔ)空間和程序空間自動(dòng)為變量合理地分配空間,而且C語言提供復(fù)雜的數(shù)據(jù)類型,如指針、數(shù)組、結(jié)構(gòu)體等,極大地增強(qiáng)了程序的處理能力和靈活性。C語言較匯編語言的不足之處就是使用C語言寫出來的代碼會(huì)比用匯編語言占用的空間大5%~20%,所以執(zhí)行起來效率就不及匯編語言。 設(shè)計(jì)流程及分析 設(shè)計(jì)整體介紹設(shè)計(jì)中采用PWM和DAC兩種方式驅(qū)動(dòng)電機(jī),利用霍爾效應(yīng)原理,用計(jì)數(shù)器T1對(duì)脈沖進(jìn)行計(jì)數(shù),用定時(shí)器T0計(jì)時(shí),計(jì)時(shí)1秒時(shí)間到后停止計(jì)數(shù)并存儲(chǔ)計(jì)數(shù)值,同時(shí)將計(jì)數(shù)值實(shí)時(shí)顯示在LCD液晶顯示屏上。鍵盤輸入定義為外部中斷,鍵盤輸入值顯示在LCD指定位置,輸入操作停止后,系統(tǒng)會(huì)自動(dòng)比較輸入值與電機(jī)實(shí)時(shí)轉(zhuǎn)速值,并根據(jù)差值進(jìn)行調(diào)速,調(diào)速的過程也會(huì)顯示在LCD上。系統(tǒng)初始化系統(tǒng)主程序鍵盤輸入外部中斷服務(wù)程序定時(shí)器T0中斷服務(wù)程序LCD顯示子程序 系統(tǒng)軟件模塊圖 程序流程圖 PWM模塊流程圖。 PWM模塊程序流程圖,A、B值在程序中自行設(shè)定,A/(A+B)即為占空比。改變A的值,即可改變轉(zhuǎn)速。 LCD模塊流程圖由于LCD顯示程序里有較多的參數(shù)設(shè)置,在這里對(duì)怎樣顯示就不做過多的講述。 LCD顯示流程概圖 8279及鍵盤模塊流程圖8279命令字:讀鍵盤RAM每次要鍵入3個(gè)數(shù)字:S=2,S鍵入值左移一位存儲(chǔ)最低位讀入鍵入值S0是否 8279及鍵盤模塊流程圖 主程序流程圖 定義定時(shí)器T0、T1并賦初值8279定義8255定義調(diào)用子程序lcd_dis,使LCD顯示輸入字符,并通過8255 A口輸入相應(yīng)的值,對(duì)LCD進(jìn)行軟件復(fù)位,并啟動(dòng)LCD工作調(diào)用子程序lcd_dis,使LCD顯示輸入字符,并通過8255 A口輸入相應(yīng)的值,對(duì)LCD進(jìn)行顯示開啟操作,并啟動(dòng)LCD工作逐頁逐點(diǎn)清屏d=0。d++依次賦所要顯示的字符串的首地址,并調(diào)用子程序dis_num,在指定位置上顯示字符調(diào)用子程序de50ms,延時(shí)50ms是d80?否逐頁逐點(diǎn)清屏依次賦所要顯示的字符串的首地址,并調(diào)用子程序dis_num,在指定位置上顯示字符開中斷結(jié)束 主程序流程圖 片內(nèi)計(jì)數(shù)器0(T0)中斷服務(wù)程序關(guān)中斷開啟計(jì)數(shù)器T1工作計(jì)數(shù)器清零調(diào)用子程序dis_num()將TL1中的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)將TL1中的計(jì)數(shù)值賦給count開啟定時(shí)器T0工作定時(shí)器T0賦初值計(jì)時(shí)值++0832輸入值減小/PWM占空比減小8032輸入值增大/PWM占空比增大0832數(shù)據(jù)口賦初值TL1計(jì)數(shù)值的十進(jìn)制數(shù)賦值給out計(jì)時(shí)1s到?輸出值鍵入值?有值鍵入?是否是否是否 片內(nèi)計(jì)數(shù)器0(T0)中斷程序流程圖 部分子程序分析 LCD子程序LCD模塊的程序較多,其中最主要的子程序dis_num中調(diào)用了該系列中的其他子程序,而且變量較多,流程圖不便于解釋,而其他的子程序均較短,功能單一,也用文字進(jìn)行的簡要的說明即可。,介紹一下LCD模塊中一系列的子程序。① 子程序master():向8255控制口寫入命令字,使片選信號(hào)CS1處于低電平狀態(tài),啟動(dòng)主屏工作。② 子程序slave():向8255控制口寫入命令字,使片選信號(hào)CS2處于低電平狀態(tài),啟動(dòng)從屏工作。③ 子程序lcd_dis():向8255控制口寫入命令字0x0e,使LCD顯示輸入字符,然后調(diào)用子程序act_cs()。④ 子程序act_cs():向8255控制口寫入命令字,使片選信號(hào)CSCS2均處于低電平狀態(tài),啟動(dòng)LCD工作。 ⑤子程序wdat():向8255控制口寫入命令字0x0f,使LCD顯示數(shù)據(jù)0。⑥子程序dis_num():在LCD指定的位置上顯示指定的字符。具體說明如下:四個(gè)參數(shù)中,p是指針,用來選擇要顯示的字符;r用來確定顯示的頁;loc用來指定起始列;n用來選擇顯示的屏。設(shè)定變量a和b,均賦值為第0頁的值0xb8,將a與r相或后作為整體參數(shù)調(diào)用子程序lcd_dis()。再將指定的起始列號(hào)作為參數(shù),調(diào)用子程序lcd_dis()。指定要顯示的字符串首地址,將字符串里的內(nèi)容依次作為參數(shù),調(diào)用wdat(),再根據(jù)是在主屏還是在從屏上顯示來選擇調(diào)用master()還是slave()。再將b與(r+1)相或,其他步驟與a與r相或及之后的步驟相同。 PWM子程序本設(shè)計(jì)中通過P10口輸出脈沖,PWM是通過調(diào)整占空比來調(diào)整電機(jī)轉(zhuǎn)速的。在單片機(jī)試驗(yàn)箱中可能加了反相器,所以在實(shí)驗(yàn)箱中P10=0占的比例越大,電機(jī)轉(zhuǎn)速越大。先令P10=0,延時(shí)del條語句的時(shí)間,再令P10=1,再延時(shí)255del條語句的時(shí)間。隨著del值的改變,占空比也在不斷改變,本設(shè)計(jì)中,占空比為del/255。 4 調(diào)試與實(shí)驗(yàn)結(jié)果 系統(tǒng)測試結(jié)果 硬件連接在程序編譯通過后,將Keil設(shè)置成硬件仿真,連接單片機(jī)上的串口仿真線。單片機(jī)實(shí)驗(yàn)箱中開關(guān)KC撥上,KF撥至A端。若采用計(jì)數(shù)器計(jì)數(shù),;若采用中斷計(jì)數(shù)。打開單片機(jī)電源,進(jìn)行調(diào)試。程序運(yùn)行時(shí),開始時(shí)會(huì)有一個(gè)時(shí)長4秒的提示,若采用PAM方式驅(qū)動(dòng)電機(jī),就將開關(guān)K8撥上;若采用DAC方式驅(qū)動(dòng)電機(jī),就將開關(guān)K8撥下。 測試結(jié)果與分析(255del)/del,在實(shí)際測試中發(fā)現(xiàn)低電平所占比例越大,電機(jī)轉(zhuǎn)速越快,所以本設(shè)計(jì)中的占空比為del/255。電機(jī)轉(zhuǎn)速測量值比預(yù)計(jì)的值要大,這里的原因主要是程序中語句導(dǎo)致的延時(shí)。 測試數(shù)據(jù)鍵盤輸入值PWM方式DAC方式顯示轉(zhuǎn)速值 轉(zhuǎn)/秒占空比顯示轉(zhuǎn)速值 轉(zhuǎn)/秒132131~133120119~12110099~1008584~8679%78~8078~8065%64~6664~6650%49~5149~5126%25~2725~271918~201514~16測試結(jié)果說明:,運(yùn)行程序后通過鍵盤輸入“00A”,使電機(jī)持續(xù)加速,最終可測得電機(jī)最大轉(zhuǎn)速值。DAC方式的最大轉(zhuǎn)速值為134轉(zhuǎn)/秒,PWM方式的最大轉(zhuǎn)速值為80轉(zhuǎn)/秒。,所以從鍵盤輸入設(shè)定值時(shí),無法達(dá)到兩種驅(qū)動(dòng)方式的最大值。一旦電機(jī)旋轉(zhuǎn)速度超過其最大速度界限,電機(jī)就會(huì)停轉(zhuǎn)。,DAC方式下的最大輸入值為132,PWM方式下的最大輸入值為79。這里的“穩(wěn)定”定義為電機(jī)的最終轉(zhuǎn)速值在設(shè)定值附近有177。1的波動(dòng)。另外,PWM方式輸出的最大轉(zhuǎn)速不如DAC方式,這有兩種可能的原因:三極管TIP127的驅(qū)動(dòng)能力不如3DG12A強(qiáng),或者TIP127已經(jīng)老化。因?yàn)槌绦蛘Z句本身就有一定的延時(shí),再加上用C語言編程,一條C語句在進(jìn)行編譯時(shí)能夠編譯成好幾條匯編語句,有的甚至十幾條,這樣就增加了延時(shí)。雖然程序中設(shè)定1s顯示轉(zhuǎn)速值,但由于語句延時(shí)問題的存在,顯示的值可能是多于1s的轉(zhuǎn)數(shù),所以轉(zhuǎn)速值有偏大的問題。本設(shè)計(jì)比較突出的功能就是調(diào)速。在28矩陣鍵盤上輸入表中轉(zhuǎn)速范圍內(nèi)的數(shù)值(一次輸入三個(gè)數(shù)字),電機(jī)的轉(zhuǎn)速會(huì)從它的初始轉(zhuǎn)速向輸入值靠近,并最終在輸入值大小附近波動(dòng)177。1。在程序運(yùn)行過程中可以多次輸入轉(zhuǎn)速值,一旦停止輸入,程序就會(huì)自動(dòng)比較輸入值與轉(zhuǎn)速值的大小,并作調(diào)整。 設(shè)計(jì)心得這個(gè)設(shè)計(jì)的幾大模塊比較明確,在編寫程序時(shí),我選擇先編寫出每一個(gè)模塊,讓每一個(gè)模塊實(shí)現(xiàn)其基本的功能,然后再逐步合并模塊,來實(shí)現(xiàn)設(shè)計(jì)的要求。在編寫程序的過程中遇到了一些問題,通過解決這些問題,我也有了一些收獲。PWM模塊不需要很多的語句去描述,只要理解了它的工作原理,而且要實(shí)際測量轉(zhuǎn)速與P10口置1的關(guān)系,才能得出正確的調(diào)速語句。編寫8279鍵盤/顯示器程序時(shí)出現(xiàn)的問題就是數(shù)字顯示問題。開始時(shí)數(shù)字顯示順序的設(shè)置有問題,六位LED均顯示數(shù)字,但六位顯示的數(shù)字相同。后來請(qǐng)教了同學(xué),發(fā)現(xiàn)數(shù)組賦值的順序顛倒了。開始時(shí)我的鍵盤顯示循環(huán)語句是:for(s=0。s6。s++) { key_in[s+1]=key_in[s]。 } key_in[0]=data_8279。由于先賦的是key_in[0]的值,這時(shí)鍵入值會(huì)依次左移,導(dǎo)致高五位的值與輸入的最低位的值相同。而改為:for(s=5。s0。s) { key_in[s]=key_in[s1]。 } key_in[0]=data_8279。顯示就正確了。這時(shí)程序是從最高位開始讀數(shù),雖然也是賦值給key_in[0],但高位都未被依次賦值,所以顯示就正確了。這點(diǎn)是理解出現(xiàn)了偏差,值得注意。LCD模塊是這幾大模塊里最生疏的一塊,以前用的都是LED,不會(huì)涉及到頁、行等的設(shè)置。編寫LCD模塊程序的關(guān)鍵是要看懂它的說明書和命令字,負(fù)責(zé)很難掌握其顯示規(guī)則。這一段程序我弄了四天,其實(shí)真的靜下心來看懂說明書和命令字,很快就寫出來了。在匯編語言中,只需要在主程序前定義中斷入口。在C語言中,中斷函數(shù)有它自己的格式,不同的中斷號(hào)對(duì)應(yīng)不同的中斷源。一開始我鬧了個(gè)很大的笑話,中斷號(hào)是隨便寫的,后來調(diào)試時(shí)中斷不起作用,這才發(fā)現(xiàn)中斷號(hào)的作用。在我最初設(shè)計(jì)的程序中,主函數(shù)里有很多不必要的語句。通過查閱資料我了解到,由于主函數(shù)肩負(fù)著入口和出口的重任,所以最好不要把太多的細(xì)節(jié)方面的邏輯直接放在主函數(shù)內(nèi),這樣不利于維護(hù)和擴(kuò)展。主函數(shù)應(yīng)該盡量簡潔,具體的實(shí)現(xiàn)細(xì)節(jié)應(yīng)該放到被調(diào)用的子函數(shù)里面去。指針、數(shù)組是C語言的優(yōu)勢所在,但在使用時(shí)要注意定義變量的數(shù)據(jù)類型的范圍。例如在附錄2的源程序中有一個(gè)包含320個(gè)元素的數(shù)組,在調(diào)用數(shù)組里的內(nèi)容時(shí)要注意所設(shè)變量的取值范圍。例如,程序中用來作為顯示模塊變量的u、v、w,它們的數(shù)據(jù)類型就要定義為unsigned int(無符號(hào)整型),其值域范圍是0~65535。開始時(shí)我全都設(shè)置成了unsigned char(無符號(hào)字符型),其值域范圍是0到255,調(diào)用數(shù)組元素進(jìn)行顯示時(shí)需要用u、v、w乘以32。當(dāng)需要顯示的數(shù)字是8和9時(shí),832與932的值都超過了255,這時(shí)8和9就分別顯示為0和1。在調(diào)試程序時(shí)我一直不明白轉(zhuǎn)速值為什么速度值總有一個(gè)跳變,后來發(fā)現(xiàn)在整個(gè)變速過程中,LCD上一直沒有出現(xiàn)過8和9,所以才發(fā)現(xiàn)了這個(gè)問題。在最后的程序組合中,要注意各模塊放置的位置。由于有1秒的定時(shí),計(jì)數(shù)的停止、轉(zhuǎn)速值的顯示、轉(zhuǎn)速的調(diào)整等都要以計(jì)時(shí)為1秒為前提。在根據(jù)設(shè)定值調(diào)速那部分程序里,比較輸入值和輸出值的大小后,del的加減量可以自定,不一定必須是加1或減1。剛開始時(shí)為了轉(zhuǎn)速改變得比較平滑,我的調(diào)速語句為:if(outin) del=del+。else if(outin) del=del1。但在測試中我發(fā)現(xiàn),轉(zhuǎn)速值在轉(zhuǎn)速很高時(shí)變化的比較穩(wěn),不會(huì)再設(shè)定值附近有太大的波動(dòng);但是在轉(zhuǎn)速較低時(shí)對(duì)轉(zhuǎn)速的變化影響比較大,尤其對(duì)測量兩種驅(qū)動(dòng)方式的最小轉(zhuǎn)速值有很大的影響。所以為了相對(duì)準(zhǔn)確,我還是把del值的增量改成了1。 結(jié) 論這次的設(shè)計(jì)能夠?qū)崿F(xiàn)課題的基本任務(wù):電機(jī)驅(qū)動(dòng)采用了DAC方式和PWM方式;實(shí)現(xiàn)了對(duì)直流電機(jī)轉(zhuǎn)速的測量;能夠?qū)崟r(shí)顯示電機(jī)的轉(zhuǎn)速值;通過鍵盤輸入電機(jī)轉(zhuǎn)速設(shè)定值,并能夠在電機(jī)轉(zhuǎn)速可控范圍內(nèi)控制電機(jī)轉(zhuǎn)速等于設(shè)定值;能夠同時(shí)顯示直流電機(jī)轉(zhuǎn)速的設(shè)定值和實(shí)際測量值。計(jì)脈沖數(shù)方式也有兩種方式實(shí)現(xiàn):計(jì)數(shù)器計(jì)數(shù)方式和中斷計(jì)數(shù)方式。電機(jī)的啟動(dòng)速度可以從0開始,只需把del的初值設(shè)為0,程序運(yùn)行后通過鍵盤輸入“00A”即可實(shí)現(xiàn)加速旋轉(zhuǎn),轉(zhuǎn)到程序里設(shè)定的某個(gè)值后就保持勻速,然后再從鍵盤輸入轉(zhuǎn)速設(shè)定值進(jìn)行調(diào)速。另外,也可以讓電機(jī)開始就按設(shè)定值轉(zhuǎn),在按下調(diào)速鍵后電機(jī)停轉(zhuǎn),然后再加速至指定轉(zhuǎn)速值。系統(tǒng)最大的不足就是測得的電機(jī)轉(zhuǎn)速與正常值比起來較大。在較熟練地掌握了C語言后,可以通過精簡程序語句來減少不必要的延時(shí)。另外,也可以按照計(jì)算出的精確數(shù)據(jù)做一塊硬件電路板,這樣可以避免元器件的老化引起的誤差。 [參考文獻(xiàn)][1][M].合肥:合肥工業(yè)大學(xué)出版社,2005.[2]劉鯤 [M].北京:人民郵電出版社,2008.[3]用單片機(jī)控制直流電機(jī)的設(shè)計(jì).[4]楊隆梓 申建華 [J/OL].電子科技 ,2004,第9期. [5][N].福建師范大學(xué)學(xué)報(bào), 2003,第3期(自然科學(xué)版).[6]劉小兵 [J/OL].電氣開關(guān),2008,第4期.[7]李維軍 韓小剛 [J/OL].機(jī)電一體化,2004,10(5). [8],2010年5月. [9][J/OL].電子技術(shù),2008,第10期. [10]張波 [J/OL].機(jī)床電器,2006,第3期:4749. 附錄1 設(shè)計(jì)模塊電路圖圖1 DAC0832及PWM驅(qū)動(dòng)直流電機(jī)連接單片機(jī)最小系統(tǒng)電路圖圖2 8279及鍵盤連接單片機(jī)最小系統(tǒng)電路圖圖3 8255及LCD連接單片機(jī)最小系統(tǒng)電路圖 附錄2 設(shè)計(jì)源程序1(計(jì)數(shù)器計(jì)數(shù))includeinclude typedef unsigned char uchar。typedef unsigned int uint。//下面四條
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦