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

正文內(nèi)容

基于單片機(jī)的特殊變頻器的設(shè)計(jì)98104-資料下載頁(yè)

2025-07-27 05:01本頁(yè)面
  

【正文】 ,則逆變電流的頻率慢,反之,則逆變電流頻率快。頻率由上位機(jī)通過(guò)鍵盤設(shè)定,上位機(jī)再根據(jù)頻率計(jì)算出單片機(jī)輸出控制字時(shí)應(yīng)持續(xù)的時(shí)間,以串行通訊的方式傳輸給單片機(jī),這樣就實(shí)現(xiàn)了逆變電流頻率的控制??刂芐PWM脈沖生成的程序主要由主程序和中斷程序組成,脈沖控制字的查表輸出由中斷程序完成,而串行通訊則由主程序控制。所謂中斷是指中央處理單元CPU正在處理某一件事情的時(shí)候,外部發(fā)生某一事件(如一個(gè)電平的變化,一個(gè)脈沖沿的發(fā)生或定時(shí)器的溢出等)請(qǐng)求CPU迅速去處理,于是,CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)入處理所發(fā)生的事件;中斷服務(wù)處理完畢以后,再回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作,這樣的過(guò)程稱為中斷。系統(tǒng)用中斷程序?qū)崿F(xiàn)查表功能,在系統(tǒng)運(yùn)行過(guò)程中中斷始終是打開(kāi)的,當(dāng)上位機(jī)又發(fā)一個(gè)新的相關(guān)頻率的數(shù)據(jù)下來(lái)時(shí),單片機(jī)馬上響應(yīng)新頻率的中斷,改變每個(gè)數(shù)據(jù)持續(xù)輸出的時(shí)間,這使得系統(tǒng)的響應(yīng)迅速,能夠達(dá)到快速變頻的效果。中斷程序的流程圖如圖45所示。中斷部分的程序如下:ZDT0: PUSH ACC MOV A,R3 DEC A MOV DPTR,TABLE_OUT MOVC A,@A+DPTR MOV P1,A DJNZ R3,ZDT0_END MOV R3,162ZDT0_END: MOV TMOD,01H MOV TH0,R5 MOV TL0,R6 POP ACC RETI TABLE_OUT: DB 1AH,1AH,1AH,1AH,1AH DB 29H,25H,16H,1AH,1AH DB 1AH,1AH,1AH,2AH,29H DB 29H,29H,29H,29H,25H DB 16H,1AH,2AH,2AH,29H查表輸出控制字重裝查表計(jì)數(shù)器的初值重裝定時(shí)器(計(jì)數(shù)值由主程序接受到數(shù)據(jù)后計(jì)算得到)開(kāi)始 檢測(cè)是否已經(jīng)輸出了一個(gè)完整正弦波波形現(xiàn)場(chǎng)保護(hù)恢復(fù)現(xiàn)場(chǎng)YN中斷結(jié)束返回圖45 查表中斷子程序流程圖 DB 29H,29H,19H,19H,19H DB 15H,15H,25H,26H,1AH DB 19H,19H,19H,19H,19H DB 15H,25H,25H,25H,25H DB 25H,26H,1AH,19H,15H DB 15H,25H,25H,25H,29H DB 29H,29H,2AH,2AH,26H DB 16H,19H,29H,29H,29H DB 29H,29H,2AH,26H,26H DB 26H,26H,26H,16H,19H DB 29H,2AH,2AH,26H,26H DB 26H,25H,25H,25H,15H DB 15H,16H,1AH,29H,25H DB 25H,25H,25H,25H,15H DB 16H,16H,16H,16H,16H DB 1AH,29H,25H,15H,15H DB 16H,16H,16H,26H,26H DB 26H,2AH,2AH,1AH,19H DB 25H,26H,26H,26H,26H DB 26H,2AH,1AH,1AH,1AH DB 1AH,1AH,19H,25H,26H DB 2AH,2AH,1AH,1AH,1AH DB 16H,16H,16H,15H,15H DB 19H,29H,26H,16H,16H DB 16H,16H,16H,15H,19H DB 19H,19H,19H,19H,29H DB 26H,16H,16H,15H,19HDB 19H,19H 主程序用來(lái)實(shí)現(xiàn)串行通訊,其流程圖如圖46所示。 Y開(kāi)始初始化系統(tǒng)等待上位機(jī)發(fā)送定時(shí)時(shí)間接受并保存數(shù)據(jù)檢測(cè)是否接收完畢調(diào)用ASCII碼轉(zhuǎn)換程序和運(yùn)算程序,算出定時(shí)時(shí)間更新當(dāng)前定時(shí)器定時(shí)時(shí)間NNY Y圖46 單片機(jī)主程序流程圖主程序中所調(diào)用的運(yùn)算程序的流程圖如圖47所示。開(kāi)始清零標(biāo)志位C把十位數(shù)乘10并保存雙字節(jié)數(shù)用個(gè)位的數(shù)加上面的雙字節(jié)數(shù)(采用帶進(jìn)位加)并保存把百位數(shù)乘以100,并用帶進(jìn)位加完成與上次保存的雙字節(jié)數(shù)的加法運(yùn)算將結(jié)果的高位保存到A中,低位保存到B中結(jié)束 圖47 運(yùn)算程序流。Delphi具備優(yōu)秀的可視化開(kāi)發(fā)環(huán)境、高效率的編譯器、結(jié)構(gòu)良好的編程語(yǔ)言、對(duì)數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)編程的靈活支持以及層次清晰和可伸縮的框架,適合各種層次的開(kāi)發(fā)人員。Delphi采用Borland公司獨(dú)步全球的Pascal語(yǔ)言,作為開(kāi)發(fā)的語(yǔ)言。經(jīng)過(guò)擴(kuò)展升級(jí)的Pascal語(yǔ)言是一種面向?qū)ο蟮恼Z(yǔ)言,但又不像一般的C語(yǔ)言那樣難以接近。Delphi使得窗口程序的設(shè)計(jì)難度大大降低,使用Delphi進(jìn)行系統(tǒng)開(kāi)發(fā)的人數(shù)也是筆直地增加的,因?yàn)樗峁┝讼喈?dāng)簡(jiǎn)單的途徑給想設(shè)計(jì)窗口程序的設(shè)計(jì)人員。Delphi與微軟的Visual Basic同屬快速開(kāi)發(fā)工具。系統(tǒng)的上位機(jī)主要完成的功能有:從鍵盤輸入電路的頻率參數(shù),通過(guò)計(jì)算將其轉(zhuǎn)換成相應(yīng)的單片機(jī)定時(shí)/計(jì)數(shù)器的定時(shí)常數(shù),并通過(guò)串行通訊傳到下位機(jī)。故程序主要就分成兩部分:一是完成計(jì)算;二是實(shí)現(xiàn)通訊。本部分重點(diǎn)介紹計(jì)算部分程序的編寫以及一些相關(guān)軟件實(shí)現(xiàn)方面的語(yǔ)句等等。通訊部分詳見(jiàn)本章第三節(jié)。上位機(jī)的人機(jī)控制界面是相當(dāng)簡(jiǎn)單的,一是對(duì)通信端口打開(kāi)與關(guān)閉的控制;二是頻率的輸入以及下傳,其簡(jiǎn)單的控制界面如圖48所示。圖48 頻率控制界面用Delphi實(shí)現(xiàn)計(jì)算是比較簡(jiǎn)單的,只要建立正確的算式,正確運(yùn)用算術(shù)運(yùn)算符,同時(shí)注意數(shù)據(jù)類型之間的轉(zhuǎn)化等處理就可以實(shí)現(xiàn)。系統(tǒng)要求的是在確定通信口打開(kāi)的情況下,在控制界面中輸入頻率后按界面上的“數(shù)據(jù)傳送” 按鈕就能將單片機(jī)定時(shí)器中所需的初值下發(fā)出去。因而計(jì)算部分的程序就在“數(shù)據(jù)傳送”按鈕的OnClick事件中。系統(tǒng)的計(jì)算主要是實(shí)現(xiàn)根據(jù)用戶所鍵入的頻率數(shù)值得到定時(shí)器中THX與TLX中的初值(X=0或1,系統(tǒng)中X為0)?,F(xiàn)以工頻50Hz的輸入頻率為例,計(jì)算出THX與TLX中的值。根據(jù)T=1/?(T為周期,單位為s, ?即頻率,單位為Hz),再根據(jù)將一個(gè)周期分為162的操作,即125μs,這就是每個(gè)控制字持續(xù)輸出的時(shí)間。但如果直接將這個(gè)數(shù)值下發(fā)到單片機(jī)是不能實(shí)現(xiàn)目的的。首先算出這樣一個(gè)定時(shí)時(shí)間應(yīng)該附給THX與TLX的數(shù)值。在單片機(jī)中定時(shí)時(shí)用T0定時(shí)器,并設(shè)其工作于方式一,故根據(jù)方式一中定時(shí)初值的計(jì)算公式:THX中的初值=(65535定時(shí)值)/256;TLX中的初值=(65535定時(shí)值)/256;在上位機(jī)程序里計(jì)算求出TH0和TL0,然后下傳給下位機(jī)。這個(gè)過(guò)程由圖47控制界面圖中的“數(shù)據(jù)傳送”按鈕的OnClick事件來(lái)完成。在將由上面計(jì)算得出的初值寫到串行口的操作中,因?yàn)閱纹瑱C(jī)中只有整型數(shù)據(jù),故具體是這樣實(shí)現(xiàn)的:每位的數(shù)值離散化后,再分別轉(zhuǎn)化為字符型的數(shù)據(jù),將轉(zhuǎn)化后的數(shù)據(jù)直接發(fā)送到下位機(jī)中。這樣單片機(jī)實(shí)際接收到的是這個(gè)數(shù)值的ASCII值,因而要再轉(zhuǎn)化為整型數(shù)據(jù),這個(gè)過(guò)程由下位機(jī)的主程序部分完成。上位機(jī)實(shí)現(xiàn)計(jì)算部分的程序如下:procedure (Sender: TObject)。 var D1,D2,D3,D4,D5,D6,th0,tl0,i:integer。 second,unit_second:double。 S1,S2,S3,S4,S5,S6:string。 lrc:LongWord。beginif (hComm=0) then exit。 second:=(+6)/strtoint() 。 //根據(jù)輸入頻率求定時(shí)器定時(shí)時(shí)間 unit_second:=second/162。 th0:=round((65535int(unit_second))/256)。 //計(jì)算T0計(jì)時(shí)器中的初值 tl0:=(65535round(unit_second))mod 256。 D1:=th0 div 100。 //將初值的每位離散化 D2:=(th0D1*100)div 10。 D3:=(th0D1*100D2*10)div 1。 D4:=tl0 div 100。 D5:=(tl0D4*100)div 10。 D6:=(tl0D4*100D5*10)div 1。 S1:=inttostr(D1)。 S2:=inttostr(D2)。 S3:=inttostr(D3)。 S4:=inttostr(D4)。 S5:=inttostr(D5)。 S6:=inttostr(D6)。 i:=0。 //向下位機(jī)傳送定時(shí)時(shí)間 while i6 do begin i:=i+1。 case i of 1:WriteFile(hm,PChar(S1)^,Length(S1),lrc,nil)。 2:WriteFile(hm,PChar(S2)^,Length(S2),lrc,nil)。 3:WriteFile(hm,PChar(S3)^,Length(S3),lrc,nil)。 4:WriteFile(hm,PChar(S4)^,Length(S4),lrc,nil)。 5:WriteFile(hm,PChar(S5)^,Length(S5),lrc,nil)。 6:WriteFile(hm,PChar(S6)^,Length(S6),lrc,nil)。 end。 end。 end。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1