c語言電壓保護,電壓保護原理

本文目錄一覽:

C語言編程『能檢測電路短路現象,怎麼編寫其程序呢

出現電路短路的時候,電流很大,可以用電流感測器來檢測;也可以先將電流轉換成電壓,再檢測電壓值來判斷是否發生短路。

在程序里設定一個閾值,當檢測到的電壓值大於該閾值時,延時一下再判斷,如果還是大於,就說明有短路,再執行短路保護,沒有的話就跳過執行下面的程序。可以用定時檢測,也可以用循環檢測。

僅是一個思路,希望對你有用,程序還是自己寫好,當你在調試中不斷的修正錯誤時就是在進步。

怎樣寫電站運行情況

首先是檢查避雷器,然後設備散熱,絕緣,還有注意房子別漏雨(真的發生過) 中國的防護措施沒有外國好,輻射危害更大 變電站運行方面的資料要了解 1�系統構成 整個系統由前、後台機兩部分組成,各RTU通過插件板與DF—2000主機連接且相互獨立。 (1)前置機部分 1)硬軟體環境 系統硬體主要由前台主機、網路配件、智能通道控制板和調製解調設備組成。 運行環境為Workgroup3�11、中文之星V2�0,主程序及動態庫均用C語言編寫。 2)主要監控對象 監控對象是本電站中控室RTU、大壩RTU以及雙牌水電站RTU發來的信息。 3)主要功能 實時數據接收、發送、轉發和計算,可設計計算周期及遙測、遙信及電度等總加;設置 遙測、遙信、通道、電度以及RTU參數的總加轉發和曲線追憶等屬性;保存遙測、遙信、電 度、事項和曲線信息;遙測、遙信、電度、事項和通道故障記錄並通過網路發布。 (2)後台機部分 1)硬軟體環境 系統硬體由後台主機、工作站、網卡、HUB及相關設備組成。 操作系統使用Windows NT4�0(或WIN98),編程環境為VC++、EXCEL5�0、VFP6�0 。 2)組網方式 採用星型連接方式,使用RJ45雙絞線通過HUB及HUB級聯方式減少故障可能發生點,保證網路 的暢通和實時數據的可用。 3)系統同步 由後台主機向網路對時或通過串口掛接衛星時鐘以保證網路同步。 4)系統處理容量 模擬量:10000個;數字量:2000個;脈衝量:2000個; 狀態量:20000個;虛擬量:2000個;通道:32路;RTU:32路。 5)主要技術指標 主備機切換10s;畫面響應3s;數據刷新3s;事項分辨10ms;開關變位至調屏3s; 歷史數據響應2s。 2�系統功能說明 (1)SCADA功能 數據採集功能;RTU數據通訊;接收處理不同格式的遙測量,遙信量,電度量,並處理為系 統要求的統一格式;接收處理RTU記錄的SOE事件信息;實現並發送對RTU的遙控、遙調等下 行操作信號;接收同步/非同步通道信號;對通訊過程監視診斷,統計通道停運時間;在線關 閉和打開指定通道,動態複位通訊口;GPS時鐘介面。 (2)人機交互功能 1) 畫面類型 廠站接線圖、負荷曲線圖、頻率曲線圖、系統總加圖、I、P、Q、V曲線圖(歷 史/實時)、動態棒圖、全網系統圖窗、實時/歷史數據報表、地理位置圖、系統配置圖、系 統工況圖、通道工況圖、實時事項彈出、報表修改、和戶自定義各類畫面等。 2)顯示內容 遙測、遙信(開關、刀閘、保護信號、變壓器檔位信號等)、電度量、頻率、系統實時或置 入的數據和狀態和計算處理量(上網功率、電度量總加,負荷計劃與實際差值及系統返供電 量)等。 3)操作類型 調圖方式有熱點、菜單和熱鍵三種;多顯示器顯示不同畫面;報表數據在線修改;實時資料庫 和歷史資料庫在線修改;負荷曲線設置與修改;機上模擬屏不下位進行模擬操作。 (3)數據處理功能 1)遙信 變壓器檔位遙信信號轉變為遙測量上屏, 儀錶/數值多種畫面顯示;對檢修線路進行代路操作 ,將旁路有功、無功等代替檢修線路的值;開關量人工置數及掛接地線;開關動作次數統計; 根據事故總信號是否動作,對開關作出事故跳閘或人工拉閘的告警。 2)遙測 數字濾波: 用閘門電壓將不合格數據濾掉;零漂處理:數據小於規定零值時視為零值;YC在開 關分時歸零處理: 線路開關斷開時,系統可自動判斷線路YC值合理性,將其歸零;各類虛擬點 計算/統計/控制;模擬量人工置數;連續模擬量輸出記錄:遙測類曲線(電壓、負荷、頻率) 。 3)電量 對RTU發送的實測脈衝接收並計數處理,進行有功、無功積分累計生成電度量值。包括上網 電量、返供電量累計。 4)統計計算 統計全電站有功功率總加、無功功率總加、電度量總統計、RTU月停運時間、停運次數及動 作率以及遙控、遙調次數、動作率,同時根據實測值計算如功率因數、發電出力、用電負荷 、交換功率等以及安全天數自動計數。 (4)事項發生及告警處理 事故時自動調圖、列印、報警等;根據RTU發送的事故總信號,繼電器動作信號和相應模擬量, 線路有關刀閘狀態,區別事故信息與正常變位信息;保存事故信息並隨時列印存檔;繼電器動 作也可作為事項記錄信息存檔;能實時列印事件順序記錄;當越限告警時, 切換至報警窗口, 並可根據需要列印記錄。 (5)事件順序記錄(SOE) 事件順序記錄以ms級時標記錄線路開關或繼電保護的動作情況,它們由廠站設備形成,傳送 至主站,主站將時標事件記錄順序記錄,通過瀏覽工具可用來依時標順序顯示或列印事件記 錄,供運行、檢修及生產管理人員按照設備動作的順序分析系統的事故。 (6)事故追憶(PDR) 事故追憶功能在電力系統發生事故後啟動,事故追憶信息是運行、檢修及生產管理人員分析 事故前後電網狀態的有效方法。系統事故狀態的存儲和記錄,主要是採集數據的快照斷面、 趨勢數據、狀態變化的數據,追憶時間為事故前後共12min。追憶按照實際發生的觸發條件 記錄存儲,追憶對象支持整個監控系統實時狀態。 (7)其他 歷史數據保存,按時標保存模擬量、電度量、歷史事項(故)數據的數據(含曲線和整點數 據),按時段(日、月、季、安全周期、年)保存統計數據(最大值、最小值、均值),並以 窗口列表或曲線畫面兩種方式進行查詢。 3�系統通信 本監控系統的通信主要通過主後台機實現彼此之間的互連,程序使用標準的實時資料庫訪問 介面可獲得實時數據和Scada處理描述參數。雙牌電站RTU信息用電話線接入,系統與站部MI S系統通信通過網橋實現,與永州地調通信是通過Modem上電力載波進行傳輸。 4�系統安全 (1)許可權表:通過用戶名、口令字、操作權及操作範圍設置操作員的系統使用許可權( 改歷史數據、改參數、置YC、置YX、控盤、控RTU、安全級、系統等)和範圍,以便登錄時 身份和許可權認證。 (2)操作記錄表:系統對每一個重要操作均可形成操作時標記錄,以保證對歷史操作過程的 清查。 (3)系統的主操作員操作有:歷史數據;掛牌操作;掛接地線;參數修改;遙控操作;人工置數; 人工變位;系統管理;網路設置;數據修補;圖元製圖;設備參數;修改曲線;發電計劃;數據維護 ;電子報表;上參數;顯示報表;製表系統;召喚列印;畫面列印等。 此外你要知道:「電氣值班員」是電氣運行與檢修專業的一個工種,是面向發電企業的;「變電站值班員」是變電運行與檢修專業的一個工種,是面向供電企業的;雖然二者都是值班員,但對象不同,如果你想去發電廠內從事運行工作,就要考「電氣值班員」,如果你想在供電企業的變電站內發展,就要考「變電站值班員」 補充回答: 變電站(Substation)是把一些設備組裝起來,用以切斷或接通、改變或者調整電壓,在電力系統中,變電站是輸電和配電的集結點,變電站主要分為:升壓變電站,主網變電站,二次變電站,配電站。

變電站是電力系統中變換電壓、接受和分配電能、控制電力的流向和調整電壓的電力設施,它通過其變壓器將各級電壓的電網聯繫起來。

變電站起變換電壓作用的設備是變壓器,除此之外,變電站的設備還有開閉電路的開關設備,彙集電流的母線,計量和控制用互感器、儀錶、繼電保護裝置和防雷保護裝置、調度通信裝置等,有的變電站還有無功補償設備。 變電站的主要設備和連接方式,按其功能不同而有差異。

變壓器是變電站的主要設備,分為雙繞組變壓器、三繞組變壓器和自禍變壓器即高、低壓每相共用一個繞組,從高壓繞組中間抽出一個頭作為低壓繞組的出線的變壓器。電壓高低與繞組匝數成正比電流則與繞組匝數成反比。

變壓器按其作用可分為升壓變壓器和降壓變壓器前者用於電力系統送端變電站,後者用於受端變電站。變壓器的電庄需與電力系統的電壓相適應。為了在不同負荷情況下保持合格的電壓有時需要切換變壓器的分接頭。

按分接頭切換方式變壓器有帶負荷有載)調壓變壓器和無負荷無載)調壓變壓器。有載調壓變壓器主要用於受端變電站。

電壓互感器和電流互感器。它們的工作原理和變壓器相似它們把高電壓設備和母線的運行電壓、大電流即設備和母線的負荷或短路電流)按規定比例變成測量儀錶、繼電保護及控制設備的低電壓和小電流。在額定運行情況下電壓互感器二次電壓為l00V/,電流互感器二次電流為5A或1A。電流互感器的二次繞組經常與負荷相連近於短路,請注意:絕不能讓其開路,否則將因高電壓而危及設備和人身安全或使電流互感器燒毀。

開關設備。它包括斷路器、隔離開關、負荷開關、高壓熔斷器等都是斷開和合上電路的設備。斷路器在電力系統正常運行情況下用來合上和斷開電路故障時在繼電保護裝置控制下自動把故障設備和線路斷開,還可以有自動重合閘功能。在我國,220kV以上變電站使用較多的是空氣斷路器和六氟化硫斷路器。

隔離開關(刀閘)的主要作用是在設備或線路檢修時隔離電壓,以保證安全。它不能斷開負荷電流和短路電流,應與斷路器配合使用。在停電時應先拉斷路器後拉隔離開關送電時應先合隔離開關後合斷路器。如果誤操作將引起設備損壞和人身傷亡。

負荷開關能在正常運行時斷開負荷電流沒有斷開故障電流的能力,一般與高壓熔斷絲配合用於10kV及以上電壓且不經常操作的變壓器或出線上。

為了減少變電站的佔地面積近年來積極發展六氟化硫全封閉組合電器(GIS)。它把斷路器、隔離開關、母線、接地開關、互感器、出線套管或電纜終端頭等分別裝在各自密封間中集中組成一個整體外殼充以六氟化硫氣體作為絕緣介質。這種組合電器具有結構緊湊體積小重量輕不受大氣條件影響,檢修間隔長,無觸電事故和電雜訊干擾等優點,具有發展前765kV已在變電站投人運行。目前,它的缺點是價格貴,製造和檢修工藝要求高。

變電站還裝有防雷設備,主要有避雷針和避雷器避雷針是為了防止變電站遭受直接雷擊將雷電對其自身放電把雷電流引入大地。在變電站附近的線路上落雷時雷電波會沿導線進入變電站,產生過電壓。另外,斷路器操作等也會引起過電壓。避雷器的作用是當過電壓超過一定限值時,自動對地放電降低電壓保護設備放電後又迅速自動滅弧,保證系統正常運行。目前,使用最多的是氧化鋅避雷器。

求助:單片機C語言程序問題

8051 系列 MCU 的基本結構包括:32 個 I/O 口(4 組8 bit 埠);兩個16 位定時計數器;全雙工串列通信;6 個中斷源(2 個外部中斷、2 個定時/計數器中斷、1 個串口輸入/輸出中斷),兩級中斷優先順序;128 位元組內置RAM;獨立的 64K 位元組可定址數據和代碼區。中斷髮生後,MCU 轉到 5 個中斷入口處之一,然後執行相應的中斷服務處理程序。中斷程序的入口地址被編譯器放在中斷向量中,中斷向量位於程序代碼段的最低地址處,注意這裡的串口輸入/輸出中斷共用一個中斷向量。8051的中斷向量表如下:

中斷源 中斷向量

—————————

上電複位 0000H

外部中斷0 0003H

定時器0 溢出 000BH

外部中斷1 0013H

定時器1 溢出 001BH

串列口中斷 0023H

定時器2 溢出 002BH

interrupt 和 using 都是 C51 的關鍵字。C51 中斷過程通過使用 interrupt 關鍵字和中斷號(0 到 31)來實現。中斷號指明編譯器中斷程序的入口地址中斷序號對應著 8051中斷使能寄存器IE 中的使能位,對應關係如下:

IE寄存器 C51中的 8051的

的使能位 中斷號 中斷源

——————————–

IE.0 0 外部中斷0

IE.1 1 定時器0 溢出

IE.2 2 外部中斷1

IE.3 3 定時器1 溢出

IE.4 4 串口中斷

IE.5 5 定時器2 溢出

有 了這一聲明,編譯器不需理會寄存器組參數的使用和對累加器A、狀態寄存器、寄存器B、數據指針和默認的寄存器的保護。只要在中斷程序中用到,編譯器會把它 們壓棧,在中斷程序結束時將他們出棧。C51 支持所有 5 個 8051 標準中斷從 0 到 4 和在 8051 系列(增強型)中多達 27 個中斷源。

using 關鍵字用來指定中斷服務程序使用的寄存器組。用法是:using 後跟一個0 到3 的數,對應著 4 組工作寄存器。一旦指定工作寄存器組,默認的工作寄存器組就不會被壓棧,這將節省 32 個處理周期,因為入棧和出棧都需要 2 個處理周期。這一做法的缺點是所有調用中斷的過程都必須使用指定的同一個寄存器組,否則參數傳遞會發生錯誤。因此對於using,在使用中需靈活取捨。

關於using:

您在文中說明「這一做法的缺點是所有調用中斷的過程都必須使用指定的同一個寄存器組」是不是這個意思?

舉個例子來說:

定義一個函數

void func(unsigned char i) {

if(++i==0x12) {

}

}

有如下一個中斷函數

void int_0(void) interrupt 0 using 1 {

….

}

在默認狀態下,func使用寄存器組0(BANK0),那麼當int_0調用func時是否存在當傳遞參數時會造成參數傳遞錯誤?

謝謝!

如果在中斷服務函數 ISR 中使用寄存器,那麼必須處理好 using 的使用問題:

1、中斷服務函數使用 using 指定與主函數不同的寄存器組(主函數一般使用 Register bank 0)。

2、中斷優先順序相同的ISR 可用 using 指定相同的寄存器組,但優先順序不同的 ISR 必須使用不同的寄存器組,在 ISR 中被調用的函數也要使用 using 指定與中斷函數相同的寄存器組。

3、如果不用 using 指定,在 ISR 的入口,C51 默認選擇寄存器組0,這相當於中斷服務程序的入口首先執行指令:

MOV PSW #0

這點保證了,沒使用 using 指定的高優先順序中斷。可以中斷使用不同的寄存器組的低優先順序中斷。

4、 使用 using 關鍵字給中斷指定寄存器組,這樣直接切換寄存器組而不必進行大量的 PUSH 和 POP 操作,可以節省RAM空間,加速 MCU 執行時間。寄存器組的切換,總的來說比較容易出錯,要對內存的使用情況有比較清晰的認識,其正確性要由你自己來保證。特別在程序中有直接地址訪問的時候, 一定要小心謹慎!至於「什麼時候要用到寄存器組切換」,一種情況是:當你試圖讓兩個(或以上)作業同時運行,而且它們的現場需要一些隔離的時候,就會用上 了。在 ISR 或使用實時操作系統RTOS 中,寄存器非常有用。

寄存器組使用的原則:

1、8051 的最低32 個位元組分成 4 組 8 寄存器。分別為寄存器R0 到R7。寄存器組由PSW 的低兩位選擇。在 ISR 中,MCU 可以切換到一個不同的寄存器組。對寄存器組的訪問不可位定址,C51 編譯器規定使用 using 或 禁止中斷的函數(#pragma disable)均不能返回 bit 類型的值。

2、主程序(main函數)使用一組,如 bank 0;低中斷優先順序的所有中斷均使用第二組,如 bank 1;高中斷優先順序的所有中斷均使用再另外一組,如 bank 2。顯然,同級別的中斷使用同一組寄存器不會有問題,因為不會發生中斷嵌套;而高優先順序的中斷則要使用與低優先順序中斷不同的一組,因為有可能出現在低優先 級中斷中發生高優先順序中斷的情況。編譯器會自動判斷何時可使用絕對寄存器存取。

3、在 ISR 中調用其它函數,必須和中斷使用相同的寄存器組。當沒用 NOAREGS 命令做明確的聲明,編譯器將使用絕對寄存器定址方式訪問函數選定(即用 using 或 REGISTERBANK 指定)的寄存器組,當函數假定的和實際所選的寄存器組不同時,將產生不可預知的結果,從而可能出現參數傳遞錯誤,返回值可能會在錯誤的寄存器組中。

舉一例子:當需要在中斷內和中斷外調用同一個函數,假定按照程序的流程式控制制,不會出現函數的遞歸調用現象,這樣的調用會不會出現問題?若確定不會發生重入情況,則有以下兩種情況:

1、如果 ISR 和主程序使用同一寄存器組(主程序預設使用BANK 0,若 ISR 沒有使用 using 為其指定寄存器區,則預設也使用 BANK 0),則不需其他設置。

2、如果 ISR 和主程序使用不同的寄存器組(主程序預設使用BANK 0,ISR 使用 using 指定了其他 BANK),則被調用函數必須放在:

#pragma NOAREGS

#pragma AREGS

控 制參數對中,指定編譯器不要對該函數使用絕對寄存器定址方式;或者也可在 Options-C51,選中「Don’t use absolute register accesses」,使所有代碼均不使用絕對寄存器定址方式(這樣,執行效率將稍有降低)。不論以上的哪一種情況,編譯器均會給出重入警告,需手工更改 OVERLAY 參數,做重入說明。

3、還有一種辦法:如果被調用函數的代碼不是很長,還是將該函數複製一份,用不同的函數名代替,這種情況適合ROM有足夠多餘的空間。

因此,對using關鍵字的使用,如果沒把握,寧可不用,交給編譯系統自己去處理好了。

interrupt xx using y

跟在interrupt 後面的xx 值得是中斷號,就是說這個函數對應第幾個中斷埠,一般在51中

0 外部中斷0

1 定時器0

2 外部中斷1

3 定時器1

4 串列中斷

其它的根舉相應得單片機有自己的含義,實際上c載編譯的時候就是把你這個函數的入口地址方到這個對應中斷的跳轉地址

using y 這個y是說這個中斷函數使用的那個寄存器組就是51裡面一般有4個 r0 — r7寄存器,如果你的終端函數和別的程序用的不是同一個寄存器組則進入中斷的時候就不會將寄存器組壓入堆棧返回時也不會彈出來節省代碼和時間

一般只有using 0,1,2,3

球一份關於單片機或c語言的論文!2000字左右的?

一·基於MSP430 單片機的電源監控管理系統(單片機論文)

引言

大功率直流開關電源由PFC 和DC-DC 變換器組成,為了提高可靠性,並能夠對其進行離線或遠程監控管理,在開關電源模塊內設置監控管理系統。該系統對電源故障類進行監控,對電源輸出的電壓電流進行自動設定和調節,通過串列通信介面,與遠程中心監控站進行遠程監控和管理,這一功能在通信系統基站供電系統中尤為重要。本文提出了一種基於MSP430單片機的電源監控管理系統的設計和實現。

1 系統結構和硬體電路設計

系統的整體設計結構如圖1所示。本系統採用的核心晶元為TI公司推出16位系列單片機MSP430。MSP430具有集成度高,外圍設備豐富,超低功耗等優點。單片集成了多通道12bit的A/D轉換、片內精密比較器、多個具有PWM功能的定時器、片內USART、看門狗定時器、片內數控振蕩器(DCO)、大量的I/O埠以及大容量的片內存儲器,採用串列在線編程方法,單片可以滿足絕大多數的應用需要。 MSP430的這種高集成度使應用人員不必在介面、外接I/O及存儲器上花太多的精力,而可以方便的設計真正意義上的單片系統,在許多領域得到了廣泛的應用。下面介紹該系統可以實現的功能和基於MSP430F149的電控系統的設計。

1.1 系統功能:

a.開機控制。上電後,單片機開始工作,按下電源鍵,點亮指示燈後,將電網220V接入PFC,開關電源啟動工作,然後接於負載。

b.電壓設定和調節。用單片機A/D口採集開關電源的輸出電壓值,並顯示於液晶屏上,通過單片機控制數字電位計調節輸出電壓值,實現自動調節;或者通過鍵盤的左右鍵選出電壓調節頁面,用上下鍵進行手動調節;也可以通過通信介面實現遠程調節。

c.電流調節。多台開關電源並聯使用時,要求各台電源的負載電壓相等。單片機A/D口採集轉換成電壓值的負載電流值,通過通信口得到各台電流值,取電流平均值,控制數字電位計調節輸出電壓,使輸出負載電流達到平均值;或者通過鍵盤的左右鍵選出電流調節頁面,用上下鍵進行手動調節。

d.故障報警。單片機通過光電耦合器檢測到各項輸入輸出故障時,揚聲器產生蜂鳴,相應的報警燈閃爍,並在液晶屏上顯示故障類型及處理方法。

e.監測。單片機A/D口對電網電壓,輸出電壓,輸出電流進行採集測量,當出現超限時進行報警。

f.通信。包括單片機與各台開關電源間的通信和單片機與中心監控站的通信。

1.2 電壓調節電路

電壓調節電路由單片機、數字電位計X9313和可調分流基準晶元TL431組成,其電路原理圖如圖2所示。Xicor9313是固態非易失性電位器,可用作數字控制的微調電位器。TL431是TI生產的一個有良好的熱穩定性能的三端可調分流基準源,它的輸出電壓用兩個電阻就可以任意地設置到從VREF(2.5V)到36V範圍內的任何值。工作時,單片機的一個IO控制INC計數輸入腳,為其提供計數脈衝,此輸入端為下降沿觸發。另一個IO控制U/D升降輸入端,當U/D為高電平時,X9313內部計數器進行加法計數,VW端的輸出電壓上升,由於VW接地,使VH端電壓降低,而TL431的REF輸出端電壓為恆定的2.5V,從而使Vcc處輸出電壓升高;同理當U/D為低電平時,Vcc處輸出電壓降低,這樣就實現了電壓輸出調節。

1.3 模擬數據採集

MSP430F149內嵌入一個高精度的,具有採樣與保持功能的12位ADC轉換模塊,內部提供各種採樣與保持時鐘源。MSP430有8個外部輸入通道可選, 最高採樣速度可達200KHZ,並且還內置溫度感測器,可以測量晶元內的溫度,如果測量溫度高於或低於預設的溫度是,可以通過外接部件顯示告警信息,同時具有6種可編程選擇的內部參考電壓。該轉換模塊為一些需要模擬量採集的場合提供了便利。我們選擇的參考電壓是0~2.5V,這樣MSP430F149的AD解析度就是2.5/4096 = 0.61V左右。由於輸入的模擬電壓量較高,不能直接與單片機的ADC採樣埠相連,因此用串聯一個滑動變阻器的方法進行了降壓處理,成功解決了上述問題。

1.4 人機對話設計

系統的人機操作界面由液晶顯示屏、指示燈和鍵盤組成。液晶選用的是基於T6963C 的液晶模塊YM12864。鍵盤採用的是3×3 的陣列接法,系統採用了圖形用戶界面,操作簡單易行,顯示實用美觀。工作時,液晶屏可以實時顯示採集到的電網電壓、輸出電壓、輸出電流及各種報警信息,操作相應鍵盤可以進行顯示頁面的切換,對輸出電壓,輸出電流進行自動、手動及遠程控制調節。當有報警信息產生時,相應得指示燈會閃爍警示,同時與單片機連接的揚聲器會產生報警蜂鳴聲,以提醒操作人員做出相應的處理。

2 系統軟體設計

430 支持彙編語言和C 語言兩種語言編程,因此可以在一個工程文件中同時用兩種語言,使用彙編語言,便於在調試時尋找邏輯和指令的聯繫及地址的定位正確與否。使用C 語言進行編程大大減少了工作量,編好後的程序可讀性好,易於修改和維護。開發工具使用IARSystems 公司的IAR Embedded Workbench,它集成了編輯、編譯、鏈接、下載與在線調試(Debug)等多種功能,使用方便,並具備高效的C 語言編譯能力。

考慮到軟體開發效率及可維護性,系統軟體設計遵循模塊化的編程思想,將系統功能劃分為幾個相對獨立的功能模塊。它們包括:液晶顯示模塊、AD 轉換模塊、按鍵監測響應模塊、報警監測響應模塊、電壓電流調節模塊、數據處理模塊、通信模塊。每個模塊都要進行獨立的測試,最後結合到一起。整個系統的軟體流程圖如圖3 所示。

按鍵監測模塊是其中的重要組成部分,它控制著AD轉換的啟動,顯示頁面的切換,及電壓電流的自動調節,手動調節,遠程調節的啟動和切換。報警監測模塊對開關電源的保護起著至關重要的作用,它實時的監測著開關電源是否出現故障,當發生輸入電壓過壓,輸入電壓欠壓,PFC故障時應切斷總電源,當發生輸出電壓過壓,輸出電壓欠壓,模塊過熱,及IPM保護故障時應關斷DC-DC變換器。

在對各模塊進行整合時,要注意各中斷之間的衝突。由於在MSP430 的中斷優先順序中,ADC12 採樣轉換中斷優先順序高於TIMERA 中斷,因此當在響應TIMERA 中斷的過程中會執行ADC12 採樣轉換中斷,或者TIMERA 的中斷響應被迫延遲,這樣就會影響在TIMERA中斷中執行的報警監測響應程序,不能達到對開關電源故障類的實時檢測。在本系統中,利用按鍵控制ADC12 採樣轉換中斷的啟動和關閉,從而解決中斷衝突。

3 結論

本文在基於MSP430F149電源監控管理系統的設計和實現的基礎上對MSP430的系統設計做了討論,提出並解決了在設計中出現的問題。本文作者的創新點:利用MSP430的系統結構簡單,外圍電路少,效率高的特點,設計實現了簡潔直觀、使用方便、操作全程漢字提示、監控能力強、運行穩定、安全可靠的電源監控管理系統,大大降低了成本,取得了相當可觀的經濟效益,滿足實際需求。

二·C語言論文:

嵌入式以門檻高,入門難的方式攔截了無數的學者。然而單片機作為嵌入式的入門課,如何以一種正確的方法學習單片機將關係到是否能學習好嵌入式。

縱所周知,學習嵌入式先玩ptotel,再做單片機。Protel簡單的來說就是一個做PCB板的純英文的軟體。學習ptotel前必需具備一定的電路基礎和英語能力,電路基礎我想大部分同學都是有的,而英語這一塊卻是許多人所頭疼的。這對英語基礎差的同學是一種打擊,再者如果毅力不強,我想你是自學不下去的。毅力是學任何東西所必需的一種能力、素質,是一種遇挫折而不言敗的決心。

不管學的是protel還是單片機,首先要找一個能夠指導你的人。何謂指導,指導並不是說他要一步一步地教你去做,而是一個在關鍵時刻能夠為你指出一條道路的人。

我認為學習嵌入式方法最重要,在學protel和單片機之前應該想辦法了解關於學習它們的方法。比如說protel吧,許多人理科的學生都是以一種純理解的角度去學的,畫一個導線、元件問一下為什麼要這樣畫,生成網路表也追根溯源地問個網路表的由來。其實許多東西只是懂用就行,理論的東西懂得再多不懂用也是枉然的。

所以學習protel有地方不懂你就問你的指導員,有許多的東西是規定死了的,不是你想半天一夜就可以為你而改變的。這不同於軟體設計,軟體設計在你的苦思之下也許可以找到另一種更好的方法。

單片機嘛,不得不承認中國沒一本單片機好書。我學習單片機的時候看過的單片機書有七本,大多數都是不盡人意的。在這裡我冒昧地說:中國人寫書確實缺乏一點「讀者至上」的原則。我所看過的單片機書我想有很多都是以他的角度去寫的,沒有幾個人是站穩在讀者的角度上寫的。書上的章節注釋極不清楚,許多重要的地方都是沒有說明的,說句不好聽的話,作者似乎以為讀者的水平也像他一樣高。而外國人的書呢,同樣的書,同樣的知識點,有同樣的中國人的書的兩三倍那麼厚,這是為什麼。這是因為外國人的書點點滴滴都是面向著讀者的。注釋、說明、總結應有盡有。所以,我在這裡發表一個也許同胞會扔雞蛋到我身上的觀點,那就是:不管學什麼,優先選擇外文翻譯書,或是純英文書。得到一本好書對我們的影響極為巨大。這一部分我用一句話來總結就是:中國人的書適合教學,而外國人的書不僅適合教學還適合自學。

中國人的單片機書往往都是先介紹單片機的內部結構、中斷,定時器,然後再到I/O口。一開始就讓我們學習單片機內部結構,中斷、定時器的內部結構和原理,把我們弄得一塌糊塗的時候再和我們講例子,怎樣去操作實驗板。如果自學的話我想許多同學是學不下去的,幹嘛要把非得把單片機的內部結構像解剖學一樣弄個徹底才實踐去應用它呢?即使你把單片機全解剖清楚了還是不會用你手中的這塊實驗板的。我覺得如果在學單片機之前沒有學過彙編語言就直接用C語言學的話,即使學完了單片機,對單片機的內部結構和單片機的工作原理也是不清楚的。學了彙編之後再學單片機的話效果將會好得多,所以不要心急,有些東西是急不來的。

所以我認為學習單片機要在實踐中學習,先實踐再去了解它的結構和原理,如果你實在不能了解它的結構和原理那也無所謂的,只要你懂得用就可以了!(沒學過彙編的只能這麼說了)

我們可以先從 I/O口學習,看一些例子燒錄些程序,再看一下現象,之後再嘗試了解一下所要用到的單片機的內部結構,最後在這個現象的知識基礎上,編一個自己想要的程序、現象出來。這樣學習的話既不無聊,成就感也有了。為什麼有些人可以把學習當一種快樂,而許多人在唉聲嘆氣,我想有一部分是出自這個原因。

不同的實驗板有不同的PCB圖,所以I/O的操作也是有所不同的。不過操作的原理都是一樣的,有些同學可能會抱怨教程里的實驗板和自己手中的實驗板不同,這是大可不必多慮的。I/O這一步在調試中看現象的理念很重要,比如改變一個語句會產生何種現象,為什麼會產生,這些都是要在調試中掌握的。

中斷的學習方法也是類似的,先實踐發現有陌生的地方就去查看相應的寄存器,等實現了自己想要的現實再慢慢地解剖一下單片機的寄存器,這樣學起來會更有意義,記得更牢。中斷也沒複雜的東西的,只不過學幾個中斷函數,優先順序之類的。有一定C語言基礎的同學在優先順序這一塊可以聯繫C語言中運算符的優先順序,我相信有了C語言基礎定義一兩個中斷函數也不是什麼問題了的。

我學過的單片機的內容在我文檔的實例之中,實例的數量不多,但這些都是直接點擊單片機知識點的。隨著我的學習漸漸地深入後我再把我實現過的東西寫入實例之中吧。

希望對你有所幫助,祝成功!

電氣工程及其自動化專業要不要學C語言

電氣工程及其自動化專業要學C語言。

1、專業學位課程:

高等數學、電路原理、電子技術基礎、微型計算機技術、計算機網路 、電機學、自動控制理論、電力系統分析、電力系統繼電保護、C語言、C++。

2、專業主幹學科:

電氣工程、控制科學與工程、計算機科學與技術

3、專業主要課程:

電路原理、電子技術基礎、工程電磁場、軟體技術基礎、微型計算機技術、計算機網路 、電機學、自動控制理論、信號分析與處理、管理學、工程經濟學、電力系統(暫態、穩態)分析、電力系統繼電保護、發電廠電氣主系統、高電壓技術等。各年級可根據社會需要設置柔性的專業方向模塊課及選修課。

擴展資料

電氣工程及其自動化專業是電氣信息領域的一門新興學科,觸角伸向各行各業,小到一個開關的設計,大到宇航飛機的研究,都有它的身影。由於和人們的日常生活以及工業生產密切相關,發展非常迅速,現在也相對比較成熟。

「自動化」一是屬於信息產業。信息產業被人們譽為「朝陽產業」,發展快、需要人才多、待遇高,是當今科技發展的趨勢所在。因此,作為信息產業中的重要一員,自動化專業同樣有著光輝的前途。二是自動化應用範圍廣。

隨著我國經濟的不斷發展,現代化工業的不斷發展使電氣自動化技術方面的人才市場有著相當大的潛力。尤其是廣東地區,自動化生產技術不斷提高,自動化產品不斷普及,智能樓宇和智能家居的應用,智能交通的不斷發展,為電氣自動化技術專業提供了廣闊的發展前景。

參考資料:百度百科-電氣工程及其自動化

C語言竟是如何調用硬體

大家都知道我們可以使用C語言寫一段程序來控制硬體工作,但你知道其工作原理嗎?以下僅供參考!

c語言在實際運行中,都是以彙編指令的方式運行的,由編譯器把C語言編譯成彙編指令,CPU直接執行彙編指令。

所以這個問題就變成,彙編指令是如何操作硬體的?

如果把硬體平台限制在x86環境下,那麼彙編指令操作硬體基本上只有兩種方式:

方式一:

通過向內存空間寫數據。硬體會把硬體上的各種寄存器(外行可以理解為訪問硬體的介面或者操作硬體的工具)映射到某一塊內存地址空間上,之後只要用彙編指令,甚至C語言去讀寫這一段內存地址空間(並非真正操作物理內存),就可以達到操作硬體的目的了。

如果題主還有WindowsXP環境(虛擬機也可以),就可以用彙編指令直接操作顯存:

MOV AX,B800

MOV ES,AX

XOR DI,DI

MOV CX,0800

MOV AX,5555

REPZ STOSB

硬體的各種寄存器會被映射到某一塊物理內存中,這種方式稱為MMIO,在Windows的設備管理器里,右鍵點設備,看屬性-》資源里,不少硬體設備都有「內存範圍」的參數,這裡的內存範圍就表示這個硬體的資源可以通過訪問這一段內存來控制它。

方式二:

x86彙編中,還有兩個特殊的指令是IN和OUT,這是x86平台上獨有的,上面圖裡的I/O範圍,就是用IN/OUT這兩個指令來訪問和控制的。

以上兩種訪問硬體的方式,第一種是可以用C語言實現的,上面一段彙編,本質上類似於C語言代碼:

char ptr = 0xB8000;

int i;

for (i = 0; i 《0x800; i++)

{ptr + i = 0x55;

}

第二種IN/OUT方式沒有直接的C語言語法對應,需要自己封裝彙編。

那麼為什麼平時很難用C語言操作硬體呢?這是因為平時寫的代碼大多數都在保護模式下,保護模式下,直接訪問物理地址會受到限制,C語言操作的地址都是虛地址。

對於Windows來說,要訪問物理地址,需要工作在內核模式,也就是的寫驅動才行。

而在顯存方面,首先,題主要先明白物理地址和虛擬地址的概念。

原來的8086cpu設計的時候,地址空間有一塊區域(640K-1M)之間,有一塊作為顯存使用

這裡你說的預留的地址,是指物理地址,這一段地址的準確範圍是000A0000-000BFFFF,不管是32位還是64位CPU,這一段物理內存地址一直都保留給顯存使用,不區分32位還是64位,也不區分保護模式還是實模式。

可見這一段內存至今仍然是留給顯卡使用的。

那麼現在為什麼不能直接用這段內存了?

因為現在的軟體都運行在保護模式下,訪問的地址都是虛擬地址,而並非物理地址,包括你使用cmd命令打開的環境,都是虛擬地址,雖然32位XP里能用debug命令向000B8000上寫數據並能顯示在cmd的界面里,但本質上,這都是虛擬出來的。

如果要想用這段顯存怎麼辦?

自己寫一個簡易的操作系統,不啟動顯卡的各種圖形加速功能,CPU進入保護模式後在GDT里映射一個4G的數據段,與物理地址一致,那麼向000B8000上寫數據,就會像過去DOS一樣顯示在屏幕上,所以保護模式下也可以訪問這一段內存。所以,保護模式下,也可以用它。

顯卡那麼多顯存是怎麼映射的?

有很多內存地址被映射給顯存了,就是通過這種映射關係,把一些物理地址留給顯存,使得CPU能像訪問內存一樣訪問顯存資源。

當然,實際情況是,2G顯存未必完全映射,而是只映射一部分地址,顯卡有一些開放的寄存器能夠控制哪部分顯存映射過來,這樣就能使得CPU在使用比較少的物理地址範圍的情況下,訪問全部的顯存。

還有一個很有意思的事情:在虛擬機里,找到映射的高地址部分的第一塊內存區域,寫一個能直接訪問物理地址的程序(比如一個驅動),去讀這一塊內存,然後寫到文件里,再用屏幕截圖,也寫到文件里,會發現截圖的內容和顯存里讀出來的內容基本上是一樣的。

網友awayisblue

要回答你的問題,我們需要要知道:

硬體是一種什麼樣的存在

什麼是驅動。

C語言怎麼操作硬體

我就不嚴格去定義這些概念了,我就以一個例子來通俗地講解一下吧。

首先講硬體:

先介紹一款單片機晶元STM8。

這款晶元裡面有cpu, 內存,寄存器(先不要覺得看到新名詞壓力大,繼續往下看)等等,相當於我們的電腦了,但還要外接其它硬體。

這裡你需要知道的概念是:

晶元的引腳跟寄存器是相對應的,寄存器是8位的內存單元(對,存在於內存上面),當你往這個內存單元裡面寫入數據時,晶元的引腳的電壓會發生變化,比如說我寫入的是01100001,則晶元上與之對應的8個引腳的電壓狀態(分為高電平與低電平兩種)會輸出:低高高低低低低高。

cpu可以執行代碼指令,指令可以操作內存。

結論:所以從上面兩點可以我們可以知道,cpu可以執行指令,使晶元的引腳電平(電壓)發生變化。

關於這款顯示器,我們需要知道的是:

它是有引腳的,這些引腳可以跟到前面介紹的那款單片機晶元的引腳相連。

該顯示器有自帶的內存,用於存儲要顯示的字元,顯示器從該內存裡面讀取字元來來顯示。

單片機晶元與該顯示器相連後,可以通過引腳往該顯示器的內存里寫數據(通過多個引腳電平的高低不同來代表不同的數據,比如說:低高高低低低低高 代表01100001,這個數據寫在顯示器的.內存裡面,被顯示器所顯示,當然,會根據ASCII來顯示數字對應的字元,01100001對應的字元是『a』),除了接收數據的引腳外,還有控制顯示器的引腳(這個我們會在驅動那裡介紹,繼續往下看)。

結論:單片機晶元與顯示器相連,可以通過引腳輸出的電平來控制顯示器的字元顯示。

那麼,綜合上面,也就是說,單片機晶元cpu可以通過執行指令來控制顯示器的字元顯示。

而這裡,題主所說的硬體,指的就是這個顯示器了。

接下來講驅動:

那麼,什麼是驅動呢?驅動無非就是硬體跟軟體的中間層,但我們不糾結這種關係,直接來看一下,對於我們這個例子,驅動指的是什麼。首先我們要知道:

顯示器支持很多種操作,比如說清除顯示,游標移動,讀取數據,寫數據等等。

這些操作數據引腳和控制引腳來實現。

引腳可以通過單片機晶元來控制。

結論:我們可以通過在單片機晶元裡面寫顯示器的「驅動」程序來屏蔽掉硬體(顯示器硬體)層。

於是這裡驅動程序,指的是顯示器所支持操作的程序表示。比如說清除顯示,我們可以編寫一個clear()函數,游標移動,我們編寫一個move_cursor()函數,讀取數據和寫數據分別為read()和write(),然後分別實現就可以了(通過向寄存器里寫數據的形式,進而控制引腳的電平變化,再而控制顯示器,這個過程前面已有介紹)。這些函數就是驅動程序了。為什麼上面說驅動程序可以屏蔽掉硬體呢?因為程序員可以使用前面的驅動程序來直接操作顯示器(硬體),而不用知道太多關於硬體的事情,而一般的驅動程序也可以由廠家來提供。

再說明一點:一般這些驅動程序可以用彙編寫(出於運行效率的考慮),也可以用C語言來編寫的,比如說我上面的例子,就可以直接用C語言來編寫。當然C語言內聯彙編的形式也可以。

最後講C語言怎麼操作硬體:

相信到這裡,C語言是怎麼操作硬體的已經比較明白了。

這裡總結一下:

C語言由CPU運行(實際上是先編譯成機器碼存在晶元裡面然後執行),可以去操作內存。

內存里有一段是跟寄存器相對應的,而寄存器是跟晶元的引腳相對應的,於是操作該段內存就能控制晶元引腳的電壓變化。

硬體(比如說顯示器)有引腳(或者說排線,這些也是一樣的東西),這些引腳跟晶元的引腳相連可以接受晶元的控制。

可以把對某個硬體的操作做成一系列操作函數,這些操作函數就是驅動程序了。

於是我們的C語言只要去調用這個驅動程序就可以直接操作硬體了。(當然驅動程序也可以由C語言來編寫,所以C語言操作硬體並不一定要經過驅動程序)。

原創文章,作者:BNNW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146613.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BNNW的頭像BNNW
上一篇 2024-10-31 15:31
下一篇 2024-10-31 15:31

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Harris角點檢測演算法原理與實現

    本文將從多個方面對Harris角點檢測演算法進行詳細的闡述,包括演算法原理、實現步驟、代碼實現等。 一、Harris角點檢測演算法原理 Harris角點檢測演算法是一種經典的計算機視覺演算法…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 瘦臉演算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉演算法 Python 實現的原理和方法,包括該演算法的意義、流程、代碼實現、優化等內容。 一、演算法意義 隨著科技的發展,瘦臉演算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 神經網路BP演算法原理

    本文將從多個方面對神經網路BP演算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP演算法簡介 BP演算法是一種常用的神經網路訓練演算法,其全稱為反向傳播演算法。BP演算法的基本思想是通過正…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論