

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 拖動系統(tǒng)課程設計</b></p><p><b> 報告書</b></p><p><b> 題目:</b></p><p><b> 專業(yè):</b></p><p><b> 姓名:</b>&l
2、t;/p><p><b> 學號: </b></p><p><b> 指導教師:</b></p><p><b> 任務書</b></p><p> 課題名稱:開環(huán)控制的PWM直流調速系統(tǒng)設計與實現</p><p><b> 課程設
3、計任務:</b></p><p> 1、查找文獻,掌握直流電動機PWM調速的基本工作原理;</p><p> 2、設計直流電動機開環(huán)調速系統(tǒng),建立系統(tǒng)模型并進行仿真試驗;</p><p> 3、設計并調試基于51單片機的H橋驅動控制電路;</p><p> 4、設計速度調節(jié)器算法,對開環(huán)系統(tǒng)進行負載試驗;</p>
4、;<p><b> 課程設計要求:</b></p><p> 1、能獨立設置電機速度(按鍵設置或滑動變阻器設置或上位機設置);</p><p> 2、能顯示當前電機的實際速度(單位為:r/min);</p><p> 3、能控制電機啟動、停止、正反轉、軟啟動和軟制動;</p><p><b&g
5、t; 課程設計內容:</b></p><p> 1、設計直流電動機開閉環(huán)調速系統(tǒng)總體方案;</p><p> 2、建立系統(tǒng)數學模型,并設計電流調節(jié)器和轉速調節(jié)器算法;</p><p> 3、直流電機的控制電路、驅動電路、保護電路及其檢測電路設計</p><p> 4、 基于單片機的開環(huán)調速系統(tǒng)軟件程序設計;</p&
6、gt;<p><b> 任務下達日期:</b></p><p><b> 2015年6月3日</b></p><p><b> 設計日期:</b></p><p><b> 2015年6月9日</b></p><p><b>
7、; 摘要</b></p><p> 本次設計先通過上網查找資料,了解直流電機PWM開環(huán)調速系統(tǒng)的原理及其特性。再通過PROTUES電路仿真PWM波形控制輸出并設計該開環(huán)直流電機調速系統(tǒng)硬件電路。此次設計的系統(tǒng)可通過按鈕實現正反轉調節(jié),實現電機的7檔調速,并且在LCD屏幕中實時顯示出電機的狀態(tài),包括正反轉,檔位以及電機轉速。該系統(tǒng)有如下優(yōu)點:需用的大功率可控器件少,線路簡單;調速范圍寬:電流波形系數
8、好,附加損耗??;功率因數高。</p><p> 關鍵詞:開環(huán) 直流電機 PWM 51單片機 </p><p><b> 目錄</b></p><p><b> 1 系統(tǒng)概述6</b></p><p> 2 硬件電路設計7</p><p> 2.1 主控制
9、模塊7</p><p> 2.1.1 單片機管腳介紹:7</p><p> 2.1.2 晶振電路與復位電路8</p><p> 2.2.3矩陣鍵盤9</p><p> 2.2脈沖整形觸發(fā)電路設計10</p><p> 2.3 LCD160210</p><p> 2.4電
10、機參數11</p><p> 2.5 電機驅動模塊11</p><p> 2.5.1 模塊描述11</p><p> 2.5.2 模塊接口說明11</p><p> 2.5.3模塊使用說明12</p><p><b> 3 軟件設計12</b></p><
11、p> 3.1 操作說明12</p><p> 3.2 c程序設計13</p><p> 3.2.1 LCD160213</p><p> 3.2.2 矩陣鍵盤讀取13</p><p> 3.2.3 占空比計算14</p><p> 3.2.4 PWM信號產生14</p>&l
12、t;p> 3.2.5 轉速計算14</p><p> 3.2.6 換向14</p><p><b> 4 系統(tǒng)調試14</b></p><p> 4.1 PWM信號調試14</p><p> 4.2 電機轉速測試14</p><p><b> 5 結束語15
13、</b></p><p><b> 6 參考文獻15</b></p><p><b> 7 附錄15</b></p><p> 7.1 設計圖紙15</p><p> 7.2 元器件清單15</p><p><b> 7.3 程序15
14、</b></p><p><b> 1 系統(tǒng)概述</b></p><p> 該直流電機調速系統(tǒng)是以STC89C52單片機為核心,配以相應硬件電路,完成電機啟動停止控制、正反裝控制以及1-7檔電機轉速選擇等功能。實際運用時,用戶可以根據自己需求來設置電機檔位或電機的正反轉,起停。</p><p> PWM直流電機調速系統(tǒng)主要由矩
15、陣鍵盤、單片機、脈沖整形觸發(fā)電路、電機驅動模塊等部分組成。其中矩陣鍵盤用于控制電機各種功能的實現。電機上裝有41線碼盤,電機轉一周形成41個脈沖,通過脈沖整形觸發(fā)電路接入52單片機的I/O口進行計數并用于計算電機轉速。電機PWM控制信號由52單片機定時器定時觸發(fā),通過I/O口輸入至電機驅動模塊來進行控制電機轉速。</p><p> 圖一:系統(tǒng)功能方塊圖</p><p> 如圖1所示電源
16、輸入電路為STC89C52提供5Vvcc電源。晶振電路的主要作用是提供基準頻率,在電路產生震蕩電流,發(fā)出時鐘信號。復位電路是使單片機的CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復位后PC=0000H,使單片機從第—個單元取指令。鍵盤接口電路實現PWM直流電機調速系統(tǒng)的各種功能。脈沖整形觸發(fā)電路將電機41線碼盤產生的脈沖輸入至單片機進行電機轉速計算。電機驅動模塊接收單片機PWM控制信號來驅動電機。LC
17、D1602液晶屏用來顯示電機的正反轉狀態(tài)、起停狀態(tài)、檔位及實時的轉速。</p><p><b> 2 硬件電路設計</b></p><p><b> 2.1 主控制模塊</b></p><p> 2.1.1 單片機管腳介紹:</p><p><b> 圖2:單片機管腳</b&
18、gt;</p><p> 單VCC(40):供電電壓,其工作電壓為5V。</p><p> GND(20):接地。</p><p> P0端口(P0.0-P0.7):P0口為一個8位漏極開路雙向I/O口,每個引腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程
19、時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。</p><p> P1端口(P1.0-P1.7):P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高電平,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p&g
20、t;<p> P2端口(P2.0-P2.7):P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口,用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器
21、進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。</p><p> P3端口(P3.0-P3.7):P3口管腳是一個帶有內部上拉電阻的8位的雙向I/O端口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入端時,由于外部下拉為低電平,P3口將輸出電流(ILL)。</p><p> P3
22、口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> 復位RST(9):復位輸入。在振蕩器運行時,有兩個機器周期(24個振蕩周期)以上的高電平出現在此引腳時,將使單片機復位,只要這個引腳保持高電平,51芯片便循環(huán)復位。復位后P3.0-P3.7口均置1,引腳表現為高電平,程序計數器和特殊功能寄存器SFR全部清零。當復位腳由高電平變?yōu)榈碗娖綍r,芯片為ROM的00H處開始運行程序。復位操作不會對內部RAM有
23、所影響。</p><p> ALE/ (30):當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地低位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如果想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有
24、在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,則置位無效。</p><p> (29):外部程序存儲器的選通信號。在由外部程序存儲器取指令期間,每個機器周期兩次 有效。但在訪問外部數據存儲器時,這兩次有效的 信號將不出現。</p><p> EA/VPP(31):當 保持低電平時,則在此期間外部程序存儲器(0000H-FFF
25、FH),不管是否有內部程序存儲器。注意加密方式1時, 將內部鎖定為RESET;當 端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V的編程電源(VPP)。</p><p> XTAL1(19):來自反向振蕩放大器的輸入及內部時鐘工作電路的輸入。</p><p> XTAL2(18):來自反向振蕩器的輸出。片機的管腳如圖2所示。</p><
26、;p> 2.1.2 晶振電路與復位電路</p><p> 本系統(tǒng)采用STC系統(tǒng)列單片機,相比其他系列單片機具有很多優(yōu)點。一般STC單片機資源比其他單片機要多,而且執(zhí)行速度快;STC系列單片機使用串口對單片機進行燒寫,下載程序較為方便;STC52單片機內部集成了看門狗電路;且具有很強抗干擾能力。</p><p> 本系統(tǒng)采用內部方式的時鐘電路和加電自復位的復位電路,如下圖3:&l
27、t;/p><p> 圖3:晶振電路與復位電路</p><p><b> 2.2.3矩陣鍵盤</b></p><p> 鍵盤是與單片機進行人機交互的最基本的途徑,其以按鍵的形式來設置控制功能或輸入數據,按鍵的輸入狀態(tài)本質上是一個開關量。對于簡單的開關量的輸入可以采用獨立式按鍵,這種方法接口簡單,但占用單片機I/O端口資源較多。對于輸入參數較多、
28、功能復雜的系統(tǒng),需要采用矩陣式鍵盤進行輸入控制。本系統(tǒng)采用2*3矩陣式鍵盤,鍵盤連接方式如圖4所示:</p><p><b> 圖4:矩陣鍵盤</b></p><p> 2.2脈沖整形觸發(fā)電路設計</p><p> 圖5:脈沖觸發(fā)整形電路</p><p> 脈沖觸發(fā)整形電路如上圖5所示。當光透過光柵時,光電門導通
29、,NPN接受到高電壓使三極管也導通,從而使單片機接受到一個從高電平到低電平的下降沿信號。</p><p> 2.3 LCD1602</p><p> 液晶顯示器(LCD)是一種功耗很低的顯示器,它的使用非常廣泛,比如電子表、計算器、數碼相機、計算機的顯示器和液晶電視等。電機調速過程中所需要顯示的信息比較多,為了能直觀的看到結果,本設計采用液晶顯示屏LCD進行顯示,具體連接方式如圖6所示
30、。</p><p> 圖6:LCD1602電路</p><p><b> 2.4電機參數</b></p><p> 圖7:電機實物圖及參數</p><p> 電機的實物圖及參數如上圖7所示。電機的線碼盤為41線,電機轉動一周會發(fā)出41個脈沖信號。其一些實測數據如下表所示:</p><p>
31、 2.5 電機驅動模塊</p><p> 2.5.1 模塊描述</p><p> 1 雙全新電機驅動芯片,兼容L9110</p><p> 2 模塊供電電壓:2.5-12V</p><p> 3 適合的電機范圍:電機工作電壓2.5v-12V之間,最大工作電流0.8A</p><p> 4 可以同時驅動2個直
32、流電機,或者1個4線2相式步進電機。</p><p> 5 PCB板尺寸:2.8cm*2.1cm 超小體積,適合組裝</p><p> 6設有固定安裝孔,直徑:3mm</p><p> 2.5.2 模塊接口說明</p><p> 6P黑色彎排針說明:</p><p> 1 VCC 外接2.5V-12V電壓&
33、lt;/p><p> 2 GND 外接GND</p><p> 3 IA1 外接單片機IO口</p><p> 4 IB1 外接單片機IO口</p><p> 5 IA2 外接單片機IO口</p><p> 6 IB2 外接單片機IO口</p><p><b> 4P
34、綠端子說明:</b></p><p> 1 OA1 OB1 接直流電機2個引腳,無方向</p><p> 2 OA2 OB2 接直流電機2個引腳,無方向</p><p> 2.5.3模塊使用說明 </p><p> 接通VCC,GND 模塊電源指示燈亮 </p><p> IA1輸入高電平,IB
35、1輸入低電平,【OA1 OB1】電機正轉;</p><p> IA1輸入低電平,IB1輸入高電平,【OA1 OB1】電機反轉;</p><p> IA2輸入高電平,IB2輸入低電平,【OA2 OB2】電機正轉;</p><p> IA2輸入低電平,IB2輸入高電平,【OA2 OB2】電機反轉;</p><p><b> 3
36、軟件設計</b></p><p><b> 3.1 操作說明</b></p><p> 矩陣鍵盤3排6個按鍵分別對應不同的功能。功能如下圖8所示:</p><p> 圖8:矩陣鍵盤按鍵功能</p><p> 電機默認的啟動狀態(tài)為3檔速度,方向正轉。可以通過不同的功能按鍵來對電機的起停、正反轉、轉速等控
37、制。電機的實時狀態(tài)會顯示在LCD1602中。電機轉速1s刷新一次。</p><p><b> 3.2 c程序設計</b></p><p> 3.2.1 LCD1602</p><p> 圖9:LCD1602寄存器選擇控制表</p><p> LCD1602的寄存器控制如上圖9所示。當寫入數據時,令RE=1 R/
38、W=0;使能端E設置為低電平,單片機I/O口輸出指令,令使能端為E低電平,此時E下降沿是LCD1602寫入指令。想LCD1602寫入數據用同樣的方法。寫入數據或指令程序流程圖如下圖10所示。</p><p><b> N</b></p><p><b> Y</b></p><p> 圖10:LCD1602寫入指令/
39、數據流程圖</p><p> 3.2.2 矩陣鍵盤讀取</p><p> 矩陣鍵盤讀取數值的流程如下圖11所示。</p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p>
40、;<p><b> N</b></p><p><b> N</b></p><p><b> Y</b></p><p> 圖11:矩陣鍵盤運行流程</p><p> 3.2.3 占空比計算</p><p> 本單片機采用的是
41、24M晶振,且設置PWM周期為10ms。當設定好檔位K時,可以根據一下公式計算出PWM占空比的定時器定時時間。</p><p> 低電平信號TL1=(65536-2000*(10-K))%255;</p><p> 低電平信號TH1=(65536-2000*(10-K)-TL1)/255;</p><p> 高電平信號TL1=(65536-2000*K)%25
42、5; </p><p> 高電平信號TH1=(65536-2000*K-TL1)/255;</p><p> 3.2.4 PWM信號產生</p><p> PWM信號根據占空比計算所得的數值附給定時器。定時器1采用方式1定時。并幾下當前 電平的狀態(tài)。當狀態(tài)為1時,表示輸出為高電平,計時器載入高電平信號的時間;當狀態(tài)為0時,表示輸出應為低電平,計時器載
43、入低電平信號時間。每進入一次中斷,狀態(tài)加一與2取余數。</p><p> 3.2.5 轉速計算</p><p> 通過T0計時器/計數器計數。本設計采用M法測速。當單片機P3.2口接收到下降沿信號時,產生中斷,每產生一次中斷,給計一次數。直到產生第100個PWM信號后,根據公式speed=(60*下降沿個數)/(41)計算出電機轉速并刷新屏幕。每次計算完成后,重新給PWM信號和下降沿中
44、斷信號計數,以能夠繼續(xù)準確的測出電機轉速。</p><p><b> 3.2.6 換向</b></p><p> 當電機高速運轉時,若直接換向則會導致過流現象。故在換向時,軟件上要停止PWM信號產生,并進行一段延遲,讓電機轉速降為0時,在定時器開始工作,輸出PWM信號換向。當PWM1信號為高電平,PWM2信號為低電平時,電機正轉;PWM1為低電平,PWM2為高電平
45、時,電機反轉;當PWM1和PWM2信號都為低電平時,電機停止。</p><p><b> 4 系統(tǒng)調試</b></p><p> 4.1 PWM信號調試</p><p> 用PROTUES仿真測量PWM信好的周期與占空比。由于在設計中,單片機采用24MHz的晶振,且定時器采用方式1的方法進行計時,故應設置一周期定時器在入值TC=2^16-
46、2000;但在仿真中,實際測的PWM的周期約為12.6ms,仿真如下圖12所示:</p><p> 圖12:PWM信號周期測試圖1</p><p> 根據仿真測得的PWM信號進行對計數器載入值調整,當TC=2^16-1511時,PWM周期約為10ms,測試結果如下圖13所示:</p><p> 圖13:PWM信號周期測試2</p><p&g
47、t; 4.2 電機轉速測試</p><p><b> 5 結束語</b></p><p> 通過此次的課程設計,讓我對單片機的運用更加的熟練。對其定時器的了解更加深刻。也學會了運用單片機產生PWM信號來控制電機的運行。同樣的也加深了對開環(huán)電機調速的理解,以及提高了我程序的編寫,排序能力。這次課程設計讓我對運用單片機實際做東西有了更多感觸,如:PWM信號產生,定時
48、器設定的值不一定就是實際的定時值,因為在中斷中程序的運行也需要一定的時間,也造成了單片機無法產生頻率極高的PWM信號。</p><p><b> 6 參考文獻</b></p><p> 王兆安 劉進軍.電力電子技術 北京:機械工業(yè)出版社,2009,5</p><p> 張俊謨 單片機中級教程 北京:北京航空航天大學出版社,2006,10&
49、lt;/p><p> 林瑞光 電機與拖到基礎 杭州:浙江大學出版社,2012,7</p><p> 陳伯時 電力拖動自動控制系統(tǒng) 北京:機械工業(yè)出版社,2009,8</p><p><b> 7 附錄</b></p><p><b> 7.1 設計圖紙</b></p><p&
50、gt;<b> 7.2 元器件清單</b></p><p><b> 7.3 程序</b></p><p> #include<reg52.h></p><p> #include<stdio.h></p><p> #define uchar unsigne
51、d char</p><p> #define uint unsigned int </p><p> #define LCD_FL 0X80 //第一行地址0x80-0xA7</p><p> #define LCD_SL 0Xc0 //第二行地址0xC0-0xE7</p><p> #define LCD_S 0X0c /
52、/開顯示 不顯示光標 光標不閃爍</p><p> #define LCD_Display_mode 0X38 //設置16x2顯示 5x7點陣 8位數據接口</p><p> #define LCD_clear 0x01 //清屏指令 數據指針清零 所有顯示清零</p><p> #define COM 0//指令</p><p>
53、 #define DATE 1 //數據</p><p> sbit PWM1=P2^0;// pwm1信號</p><p> sbit PWM2=P2^1; // pwm2信號</p><p> sbit RS=P2^4; // LCD1602 寄存器選擇</p><p> sbit RW=P2^5; //16
54、02讀寫選擇</p><p> sbit E=P2^6; // 1602使能端</p><p> int state,direction,rank;//起停1on 0 off 方向 1正2反 檔位</p><p> int key_in;//按鍵輸入</p><p> int BG;//輸出高低點評狀態(tài)<
55、/p><p> uint RAND,S;int speed;//數度計算參數</p><p> int PHTH,PHTL,PLTL,PLTH;//定時器時間</p><p> void delay_1ms(int t) // 1ms大致延時</p><p><b> {</b></p><p
56、><b> int i,j;</b></p><p> for(i=0;i<t;i++)</p><p> for(j=0;j<120;j++);</p><p><b> }</b></p><p> //--------------------------------
57、--------------------------------------------------------------lcd1062</p><p> void delay(uint a)//小延時</p><p><b> {</b></p><p> while(a--);</p><p><b&g
58、t; }</b></p><p> void write(uint x,uchar sth)// 命令或數據寫入</p><p><b> {</b></p><p> RS=x;RW=0;E=0;</p><p><b> P0=sth;</b></p&g
59、t;<p><b> delay(3);</b></p><p><b> E=1;</b></p><p> delay(25);</p><p><b> E=0;</b></p><p><b> } </b>&
60、lt;/p><p> void write_string(uint line,uchar *str)// 字符串輸入</p><p><b> {</b></p><p> write(COM,line);</p><p><b> while(1)</b></p><
61、p><b> {</b></p><p> if(*str=='\0') break;</p><p> write(DATE,*str);</p><p><b> str++;</b></p><p> delay(50);</p><p>
62、;<b> }</b></p><p><b> }</b></p><p> void lcd_init() // 初始化</p><p><b> { </b></p><p> delay_1ms(15);</p><
63、;p> write(COM,LCD_Display_mode);</p><p> delay_1ms(5);</p><p> write(COM,LCD_S);</p><p> delay_1ms(5);</p><p> write(COM,LCD_clear);</p><p> delay
64、_1ms(5);</p><p> write_string(LCD_FL,"STATE:CW OFF"); //cw順時針,正轉 ccw逆時針</p><p> delay_1ms(5);</p><p> write_string(LCD_SL,"RS(rpm):0 ");</p&
65、gt;<p><b> }</b></p><p> //-----------------------------------------------------------------------------------------------------</p><p> //---------------------------------
66、---------------------------------------------------------------------鍵盤輸入</p><p> void key()</p><p><b> {</b></p><p> static int key_sure=0;//避免一直按著一個鍵的時候一直讀入 </p&
67、gt;<p> uint key_flash; </p><p> key_in=-1;</p><p><b> P1=0x0f;</b></p><p> if((P1&0x0f)!=0x0f)</p><p><b> {</b></p><
68、;p> delay_1ms(1);</p><p> if((P1&0x0f)!=0x0f&&key_sure==1)</p><p><b> {</b></p><p> key_sure=0;</p><p> key_flash=P1|0xf0;</p>&l
69、t;p> P1=key_flash;</p><p> switch(P1)</p><p><b> {</b></p><p> case 0xee: key_in=1;break;//+</p><p> case 0xed: key_in=2;break;//-</p><p&
70、gt; case 0xde: key_in=4;break;//正轉</p><p> case 0xdd: key_in=5;break;//反轉</p><p> case 0xbe: key_in=7;break;//啟動</p><p> case 0xbd: key_in=8;break;//停止 </p><p><
71、b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> key_
72、sure=1;</p><p><b> }</b></p><p><b> }</b></p><p> //---------------------------------------------------</p><p> //--------------------------
73、----------------- 根據檔位進行占空比計算</p><p> void time_calculate()</p><p><b> {</b></p><p> PLTL=(65536-1511*(10-rank))%255;</p><p> PLTH=(65536-1511*(10-rank
74、)-PLTL)/255;</p><p> PHTL=(65536-1511*rank)%255; //2000,實際周期12.6ms 1587,10.5ms</p><p> PHTH=(65536-1511*rank-PHTL)/255;</p><p><b> }</b></p><p> //
75、------------------------------------------------</p><p> //------------------------------------------------pwm信號產生</p><p> void pwm_on() </p><p><b> {</b></p>
76、<p><b> BG=1;</b></p><p> time_calculate();</p><p> if(direction==1)</p><p><b> {</b></p><p><b> PWM1=1;</b></p>&
77、lt;p><b> PWM2=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> PWM1=0;</b><
78、;/p><p><b> PWM2=1;</b></p><p><b> }</b></p><p> TR1=1;ET1=1;</p><p><b> TH1=PHTH;</b></p><p><b> TL1=PHTL;<
79、/b></p><p> RAND=0;S=0;</p><p><b> }</b></p><p> //-------------------------------------------------------------------</p><p> //--------------------
80、---------------------------------電機轉速計算</p><p> void speed_calculate()</p><p><b> {</b></p><p> char yy[4];</p><p> S=0;speed=0;</p><p>
81、speed=(60*RAND)/(41);</p><p><b> RAND=0;</b></p><p> sprintf(yy,"%d",speed);</p><p> if(speed%1000==0)</p><p> {yy[3]='\0';}</p>
82、<p> delay(5) ;</p><p> write_string(LCD_SL+8," "); //屏幕清空</p><p> delay(35);</p><p> write_string(LCD_SL+8,yy);</p><p><b> }</b>
83、;</p><p> //-------------------------------------------------------------------</p><p> //--------------------------------------------------------------計時器1中斷</p><p> void time0(
84、) interrupt 3 </p><p><b> { </b></p><p> time_calculate();</p><p><b> BG++;S++;</b></p><p><b> if(BG==1)</b></p><p
85、><b> {</b></p><p><b> TH1=PHTH;</b></p><p><b> TL1=PHTL;</b></p><p><b> } </b></p><p><b> else</b>&l
86、t;/p><p><b> {</b></p><p><b> BG=0;</b></p><p><b> TH1=PLTH;</b></p><p><b> TL1=PLTL;</b></p><p><b>
87、 }</b></p><p> if(direction==1) {PWM1=~PWM1;PWM2=0;}</p><p> else {PWM2=~PWM2;PWM1=0;} </p><p><b> }</b></p><p> //------------------------------
88、---------------------------------------</p><p> //--------------------------------------------------------計數器中斷</p><p> void time2() interrupt 0 </p><p><b> {</b><
89、;/p><p><b> RAND++;</b></p><p> if(S==200)</p><p> {speed_calculate(); } </p><p><b> }</b></p><p> //----------------------------
90、---------------------------------</p><p> //------------------------------------------------------------主程序</p><p> void main()</p><p><b> {</b></p><p>
91、 rank=5; // 設置默認轉速</p><p> state=0; // 電機停止狀態(tài)</p><p> direction=1; // 電機轉向為正方向</p><p> PWM1=0;// 無PWM信號</p><p> PWM2=0; //</p><p&g
92、t; lcd_init();//初始化屏幕</p><p><b> while(1)</b></p><p><b> {</b></p><p><b> key();</b></p><p> if(key_in>0)</p><
93、;p><b> {</b></p><p> if(key_in==1||key_in==2)</p><p><b> {</b></p><p> if(key_in==1&&rank<9)</p><p><b> {</b><
94、/p><p><b> rank++;</b></p><p><b> }</b></p><p> if(key_in==2&&rank>3)</p><p><b> {</b></p><p><b> r
95、ank--;</b></p><p><b> }</b></p><p> time_calculate();</p><p><b> }</b></p><p><b> else</b></p><p> if(key_in
96、==7||key_in==8)</p><p><b> {</b></p><p> if(key_in==8&&state==1)</p><p><b> {</b></p><p> PWM1=0;PWM2=0; TR1=0;ET1=0;state=0; //定時
97、器和計數器中斷設置</p><p><b> EX0=0;</b></p><p> write_string(LCD_SL,"RS(rpm):0 "); </p><p><b> }</b></p><p><b> else</b>
98、</p><p> if(key_in==7&&state==0) </p><p><b> {</b></p><p> TR1=1;ET1=1;EA=1;TMOD=0x10;</p><p> BG=1; state=1;IT0=1;EX0=1;PX1=1; //定時器和計數器中斷設置
99、</p><p> //定時器1以方式1記時</p><p> //計數器0以下降沿觸發(fā)中斷</p><p> S=0;RAND=0;</p><p> pwm_on(); </p><p> } </p><p><b> }</b>
100、</p><p><b> else</b></p><p> if(key_in==4||key_in==5)</p><p><b> {</b></p><p> if(direction==2&&key_in==4)</p><p><b
101、> {</b></p><p> direction=1;PWM1=0;PWM2=0;</p><p> TR1=0;ET1=0;</p><p> delay_1ms(400);</p><p><b> }</b></p><p><b> else&l
102、t;/b></p><p> if(direction==1&&key_in==5)</p><p><b> {</b></p><p> direction=2;PWM1=0;PWM2=0;</p><p> TR1=0;ET1=0;//換向時先停止在換向</p>&l
103、t;p> delay_1ms(400);</p><p><b> }</b></p><p> if(state==1)</p><p><b> {</b></p><p><b> pwm_on();</b></p><p><
104、;b> }</b></p><p><b> }</b></p><p> key_in=-1;</p><p> write_string(LCD_FL,"STATE: ");</p><p> if(state==1)</p><p
105、><b> {</b></p><p> char xx[5];int R;</p><p><b> R=rank-2;</b></p><p> sprintf(xx, "%d", R);</p><p> write_string(LCD_FL+13,xx)
106、;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> write_string(LCD_FL+13,"OFF"); //刷新屏幕</p><
107、p><b> }</b></p><p> if(direction==1)</p><p> write_string(LCD_FL+6,"CW");</p><p><b> else</b></p><p> write_string(LCD_FL+6,&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- pwm電機調速課程設計--直流pwm調速控制系統(tǒng)的仿真與設計
- pwm電機調速課程設計---直流pwm調速控制系統(tǒng)的仿真與設計
- 電力拖動課程設計---雙閉環(huán)不可逆直流調速系統(tǒng)設計
- 電力拖動課程設計---單閉環(huán)轉速負反饋直流調速系統(tǒng)
- pwm脈寬直流調速系統(tǒng)設計課程設計
- 電力拖動自動控制系統(tǒng)課程設計--雙閉環(huán)直流調速與仿真
- pwm直流脈寬調速系統(tǒng)課程設計
- 拖動控制系統(tǒng)課程設計--雙閉環(huán)不可逆直流調速系統(tǒng)設計
- 拖動控制系統(tǒng)課程設計-雙閉環(huán)不可逆直流調速系統(tǒng)設計
- 電機與拖動控制課程設計--直流電機調速控制系統(tǒng)設計
- 電力拖動課程設計--v-m雙閉環(huán)不可逆直流調速系統(tǒng)設計
- 電力拖動自動控制系統(tǒng)課程設計-轉速電流雙閉環(huán)直流調速系統(tǒng)
- 交直流調速課程設計--雙閉環(huán)可逆直流脈寬pwm調速系統(tǒng)設計
- 電力拖動自動控制系統(tǒng)課程設計-轉速電流雙閉環(huán)直流調速系統(tǒng)
- 電力拖動自動控制系統(tǒng)課程設計-轉速電流雙閉環(huán)直流調速系統(tǒng)
- 電力拖動控制系統(tǒng)課程設計
- 電力拖動v-m雙閉環(huán)不可逆直流調速系統(tǒng)課程設計
- 雙閉環(huán)pwm調速課程設計--雙閉環(huán)可逆直流脈寬pwm調速系統(tǒng)設計
- 電力拖動與運動控制系統(tǒng)課程設計
- 電機拖動課程設計--直流電機調速系統(tǒng)的設計
評論
0/150
提交評論