摘要:本文闡明了單片機在電力系統安全統計上的應用與設計方法。幾年來,通過一些單位的實際應用,已證實了使用單片機進行自動控制的優越性。 關鍵詞:單片機;自動控制;軟件
上傳時間: 2013-11-07
上傳用戶:wenyuoo
摘要:介紹了一種使用新型單片機作為控制單元的焊接防觸電裝置的硬件系統和控制軟件。硬件部分包括Microchip公司的PIC系列單片機控制部分和由晶閘管組成的強電部分,控制軟件采用PID(Pm-portional Integral Differentia1)控制算法,使得該裝置不僅能夠實現焊接的防觸電功能,而且還可以控制焊接電流,使焊接電流滿足焊接工藝要求的恒流特性,獲得較好的焊接效果。關鍵詞:單片機應用;焊接電源;防觸電
上傳時間: 2013-10-09
上傳用戶:YUANQINHUI
摘要: 本文在研究了網絡安全的國內外有關情況后對網絡安全技術進行了探討,介紹了一種簡單而實用的網絡安全產品,添補了這方面的空白,而且本文介紹的產品已經應用到了許多部門,為網絡安全做出了貢獻.關鍵詞: 網絡;安全;Internet;黑客;物理隔離;MT8870
上傳時間: 2013-11-20
上傳用戶:1318695663
摘要:本文較為詳細地介紹基于多CPU的單片機系統設計思想,并給出它在社區安全防范系統中的應用。關鍵詞:多CPU安全防范系統設計
上傳時間: 2013-11-20
上傳用戶:taa123456
單片機的選擇和使用 目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫療器械了。因此,單片機的學習、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。 單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇: 1.在智能儀器儀表上的應用 單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起采用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,各種分析儀)?! ?.在工業控制中的應用 用單片機可以構成形式多樣的控制系統、數據采集系統。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統,與計算機聯網構成二級控制系統等?! ?.在家用電器中的應用 可以這樣說,現在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在?! ?.在計算機網絡和通信領域中的應用 現代的單片機普遍具備通信接口,可以很方便地與計算機進行數據通信,為在計算機網絡和通信設備間的應用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫系統、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。 5.單片機在醫用設備領域中的應用 單片機在醫用設備中的用途亦相當廣泛,例如醫用呼吸機,各種分析儀,監護儀,超聲診斷設備及病床呼叫系統等等?! ?.在各種大型電器中的模塊化應用 某些專用單片機設計用于實現特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。如音樂集成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復雜的類似于計算機的原理。如:音樂信號以數字的形式存于存儲器中(類似于ROM),由微控制器讀出,轉化為模擬音樂電信號(類似于聲卡)?! ≡诖笮碗娐分校@種模塊化應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換?! ?.單片機在汽車設備領域中的應用 單片機在汽車電子中的應用非常廣泛,例如汽車中的發動機控制器,基于CAN總線的汽車發動機智能電子控制器,GPS導航系統,abs防抱死系統,制動系統等等?! 〈送?,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。
標簽: 單片機
上傳時間: 2013-11-25
上傳用戶:zjf3110
PICmicro中檔單片機系列參考手冊:請注意以下有關Microchip 器件代碼保護功能的要點:• Microchip的產品均達到Microchip 數據手冊中所述的技術指標。• Microchip確信:在正常使用的情況下, Microchip 系列產品是當今市場上同類產品中最安全的產品之一。• 目前,仍存在著惡意、甚至是非法破壞代碼保護功能的行為。就我們所知,所有這些行為都不是以Microchip 數據手冊中規定的操作規范來使用Microchip 產品的。這樣做的人極可能侵犯了知識產權。• Microchip愿與那些注重代碼完整性的客戶合作。• Microchip或任何其它半導體廠商均無法保證其代碼的安全性。代碼保護并不意味著我們保證產品是“牢不可破”的。代碼保護功能處于持續發展中。Microchip 承諾將不斷改進產品的代碼保護功能。任何試圖破壞Microchip 代碼保護功能的行為均可視為違反了《數字器件千年版權法案(Digital Millennium Copyright Act)》。如果這種行為導致他人在未經授權的情況下,能訪問您的軟件或其它受版權保護的成果,您有權依據該法案提起訴訟,從而制止這種行為的。 Microchip 公司是The Embedded Control Solutions Company® (嵌入式控制系統解決方案公司),其產品主要滿足嵌入式控制市場的需求。我們是以下產品的領先供應商:• 8 位通用單片機(PICmicro® 單片機)• 專用和標準的非易失性存儲器件• 安防器件 (KEELOQ®)• 專用標準產品欲獲得您所感興趣的產品列表,請申請一份Microchip 產品線目錄。以往,8 位單片機的用戶只選擇傳統的MCU 類型,即ROM 器件,用于生產。Microchip 率先改變了這種傳統觀念,向人們展示了OTP (一次性編程)器件比ROM 器件在其壽命周期內具有更低的產品成本。Microchip 具備EPROM技術優勢,從而使EPROM成為PICmicro 單片機程序存儲器的不二選擇。Microchip 盡可能地縮小了EPROM 和ROM 存儲器技術之間的成本差距,并使顧客從中受益。其他MCU 供應商無法作到這一點,這從他們的 EPROM 和 ROM 版本之間的價格差異便可以看出。Microchip 的8 位單片機市場份額的增長證明了PICmicro® 單片機能夠滿足大多數人的需要。這也使PICmicro 單片機架構成為了當今通用市場上應用最廣泛的三大體系之一。Microchip 的低成本OTP 解決方案所帶來的效益是這一增長的助推劑。用戶能夠從以下各方面受益:• 快速的產品上市時間• 允許生產過程中對產品進行代碼修改• 無需掩膜產品所需的一次性工程費用(NRE)• 能夠輕松為產品進行連續編號• 無需額外增加硬件即可存儲校準數據• 可最大限度地增加PICmicro® 單片機的庫存• 由于在開發和生產中使用同一器件,從而降低了風險Microchip 的8 位 PICmicro 單片機具備很好的性價比,可成為任何傳統的8 位應用和某些4 位應用( 低檔系列)、專用邏輯的替代品以及低端DSP 應用( 高檔系列) 的選擇。這些特點及其良好的性價比使PICmicro 單片機在大多數應用場合極具吸引力。
上傳時間: 2014-03-03
上傳用戶:ainimao
Microchip ZigBee協議棧:ZigBee™ 是專為低速率傳感器和控制網絡設計的無線網絡協議。有許多應用可從ZigBee 協議受益,其中可能的一些應用有:建筑自動化網絡、住宅安防系統、工業控制網絡、遠程抄表以及PC 外設。與其他無線協議相比, ZigBee 無線協議提供了低復雜性、縮減的資源要求,最重要的是它提供了一組標準的規范。它還提供了三個工作頻帶,以及一些網絡配置和可選的安全功能。如果您正在尋求現有的控制網絡技術(例如RS-422、RS-485)或專有無線協議的替代方案, ZigBee 協議可能是您所需的解決方案。此應用筆記旨在幫助您在應用中采用ZigBee 協議。 可以使用在應用筆記中提供的Microchip ZigBee 協議棧快速地構建應用。為了說明該協議棧的用法,本文包含了兩個有效的演示應用程序??蓪⑦@兩個演示程序作為參考或者根據您的需求經過簡單修改來采用它們。此應用筆記中提供的協議棧函數庫實現了一個與物理層無關的應用程序接口。 因此,無需做重大修改就可以輕松地在射頻(Radio Frequency,RF)收發器之間移植應用程序。在此文檔末尾的“常見問題解答”中提供了有關Microchip 協議棧和用法的一些常見問題及其答案。
上傳時間: 2013-10-08
上傳用戶:u789u789u789
為了提高望遠鏡影像穩定系統的防抖性能,設計了一種小型望遠鏡防抖系統。采用負反饋閉環控制進行鏡片的位置伺服控制,以MSP430F169 單片機為核心控制電路,闡述了防抖系統的原理并給出了硬件和軟件設計方案,通過實物調試證明采用該設計方法的望遠鏡防抖系統具有結構簡單,穩定性好、控制精度高的優點。防抖系統正日益廣泛地應用于照相機和望遠鏡等光學設備中。防抖主要分為光學防抖和電子防抖,光學防抖通過光學器件進行影響穩定;電子防抖采用軟件的方法,針對數字圖像設計基于圖像處理的影像穩定算法[1]。對于望遠鏡來說,在放大視角的同時,也會將手的抖動造成的影像晃動放大,在高倍望遠鏡中尤其明顯。天文望遠鏡、軍用望遠鏡等高倍望遠鏡在使用時通常需要配合三腳架,而大多數的手持望遠鏡在沒有影像穩定措施的情況下觀察效果受到擾動。如果觀察者站在車、船、飛機上時,晃動的影響更加嚴重,即使把望遠鏡裝到三角架上,也不能消除晃動的影響。因此,開發適合望遠鏡使用的影像穩定系統已經成為一項迫切的任務,防抖動望遠鏡將會具有很大的市場前景。影像穩定屬于跟蹤控制問題。文獻[2]設計了一種采用形狀可變的流體棱鏡進行抖動補償的方法。本文設計了以MSP430 單片機為核心的防抖控制系統,給出了系統硬件設計電路,使用C430 語言進行軟件調試,以實現對望遠鏡防抖系統的有效控制。
上傳時間: 2013-12-02
上傳用戶:blacklee
P C B 可測性設計布線規則之建議― ― 從源頭改善可測率PCB 設計除需考慮功能性與安全性等要求外,亦需考慮可生產與可測試。這里提供可測性設計建議供設計布線工程師參考。1. 每一個銅箔電路支點,至少需要一個可測試點。如無對應的測試點,將可導致與之相關的開短路不可檢出,并且與之相連的零件會因無測試點而不可測。2. 雙面治具會增加制作成本,且上針板的測試針定位準確度差。所以Layout 時應通過Via Hole 盡可能將測試點放置于同一面。這樣就只要做單面治具即可。3. 測試選點優先級:A.測墊(Test Pad) B.通孔(Through Hole) C.零件腳(Component Lead) D.貫穿孔(Via Hole)(未Mask)。而對于零件腳,應以AI 零件腳及其它較細較短腳為優先,較粗或較長的引腳接觸性誤判多。4. PCB 厚度至少要62mil(1.35mm),厚度少于此值之PCB 容易板彎變形,影響測點精準度,制作治具需特殊處理。5. 避免將測點置于SMT 之PAD 上,因SMT 零件會偏移,故不可靠,且易傷及零件。6. 避免使用過長零件腳(>170mil(4.3mm))或過大的孔(直徑>1.5mm)為測點。7. 對于電池(Battery)最好預留Jumper,在ICT 測試時能有效隔離電池的影響。8. 定位孔要求:(a) 定位孔(Tooling Hole)直徑最好為125mil(3.175mm)及其以上。(b) 每一片PCB 須有2 個定位孔和一個防呆孔(也可說成定位孔,用以預防將PCB反放而導致機器壓破板),且孔內不能沾錫。(c) 選擇以對角線,距離最遠之2 孔為定位孔。(d) 各定位孔(含防呆孔)不應設計成中心對稱,即PCB 旋轉180 度角后仍能放入PCB,這樣,作業員易于反放而致機器壓破板)9. 測試點要求:(e) 兩測點或測點與預鉆孔之中心距不得小于50mil(1.27mm),否則有一測點無法植針。以大于100mil(2.54mm)為佳,其次是75mil(1.905mm)。(f) 測點應離其附近零件(位于同一面者)至少100mil,如為高于3mm 零件,則應至少間距120mil,方便治具制作。(g) 測點應平均分布于PCB 表面,避免局部密度過高,影響治具測試時測試針壓力平衡。(h) 測點直徑最好能不小于35mil(0.9mm),如在上針板,則最好不小于40mil(1.00mm),圓形、正方形均可。小于0.030”(30mil)之測點需額外加工,以導正目標。(i) 測點的Pad 及Via 不應有防焊漆(Solder Mask)。(j) 測點應離板邊或折邊至少100mil。(k) 錫點被實踐證實是最好的測試探針接觸點。因為錫的氧化物較輕且容易刺穿。以錫點作測試點,因接觸不良導致誤判的機會極少且可延長探針使用壽命。錫點尤其以PCB 光板制作時的噴錫點最佳。PCB 裸銅測點,高溫后已氧化,且其硬度高,所以探針接觸電阻變化而致測試誤判率很高。如果裸銅測點在SMT 時加上錫膏再經回流焊固化為錫點,雖可大幅改善,但因助焊劑或吃錫不完全的緣故,仍會出現較多的接觸誤判。
上傳時間: 2014-01-14
上傳用戶:cylnpy
有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING, NULL, // no input 注意,這里放的是包含有執行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
上傳時間: 2013-10-17
上傳用戶:gai928943