亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁(yè)| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

地址<b>分配</b>

  • 基于MATLAB的B樣條小波程序的實(shí)現(xiàn)

    · 摘要:  MATLAB是一種建立在向量、數(shù)組、矩陣基礎(chǔ)上,面向科學(xué)和工程計(jì)算的高級(jí)語(yǔ)言,為科學(xué)研究和工程計(jì)算提供了一個(gè)方便有效的工具.該文簡(jiǎn)要介紹了B樣條和B樣條小波的構(gòu)成,并利用MATLAB語(yǔ)言編寫了繪制任意階B樣條和B樣條小波圖形的程序.  

    標(biāo)簽: MATLAB 程序

    上傳時(shí)間: 2013-04-24

    上傳用戶:sqq

  • 蘇泊爾C21S02-B電磁爐電路圖

    蘇泊爾C21S02-B電磁爐電路圖,紅線標(biāo)注,重點(diǎn)模塊說(shuō)明!

    標(biāo)簽: 21 02 蘇泊爾 電磁爐電路圖

    上傳時(shí)間: 2013-06-22

    上傳用戶:huangzr5

  • ADS-B接收機(jī)DIY全套資料

    制作基于PIC Mcu 的ADS-B接收機(jī)的全套資料,包括SCH、PCB、源碼和PC端軟件。

    標(biāo)簽: ADS-B DIY 接收機(jī)

    上傳時(shí)間: 2013-04-24

    上傳用戶:cx111111

  • 2012TI杯陜西賽題B題--頻率補(bǔ)償電路

    2012TI杯陜西賽題H題,2012TI杯陜西賽題B題--頻率補(bǔ)償電路.

    標(biāo)簽: 2012 TI 頻率補(bǔ)償電路

    上傳時(shí)間: 2013-10-07

    上傳用戶:ysystc670

  • PSHLY-B回路電阻測(cè)試儀

    PSHLY-B回路電阻測(cè)試儀介紹

    標(biāo)簽: PSHLY-B 回路 電阻測(cè)試儀

    上傳時(shí)間: 2013-11-05

    上傳用戶:木子葉1

  • 基于單片機(jī)的數(shù)字化B超鍵盤設(shè)計(jì)

    針對(duì)目前使用的RS232接口數(shù)字化B超鍵盤存在PC主機(jī)啟動(dòng)時(shí)不能設(shè)置BIOS,提出一種PS2鍵盤的設(shè)計(jì)方法。基于W78E052D單片機(jī),采用8通道串行A/D轉(zhuǎn)換器設(shè)計(jì)了8個(gè)TGC電位器信息采集電路,電位器位置信息以鍵盤掃描碼序列形式發(fā)送,正交編碼器信號(hào)通過(guò)XC9536XL轉(zhuǎn)換為單片機(jī)可接收的中斷信號(hào),軟件接收到中斷信息后等效處理成按鍵。結(jié)果表明,在滿足開機(jī)可設(shè)置BIOS同時(shí),又可實(shí)現(xiàn)超聲特有功能,不需要專門設(shè)計(jì)驅(qū)動(dòng)程序,接口簡(jiǎn)單,成本低。 Abstract:  Aiming at the problem of the digital ultrasonic diagnostic imaging system keyboard with RS232 interface currently used couldn?蒺t set the BIOS when the PC boot, this paper proposed a design method of PS2 keyboards. Based on W78E052D microcontroller,designed eight TGC potentiometers information acquisition circuit with 8-channel serial A/D converter, potentiometer position information sent out with keyboard scan code sequentially.The control circuit based on XC9536 CPLD is used for converting the mechanical actions of the encoders into the signals that can be identified by the MCU, software received interrupt information and equivalently treatmented as key. The results show that the BIOS can be set to meet the boot, ultrasound specific functionality can be achieved at the same time, it does not require specially designed driver,the interface is simple and low cost.    

    標(biāo)簽: 單片機(jī) B超 數(shù)字化 鍵盤設(shè)計(jì)

    上傳時(shí)間: 2013-10-10

    上傳用戶:asdfasdfd

  • 用51單片機(jī)設(shè)計(jì)的時(shí)鐘電路畢業(yè)論文

    用51單片機(jī)設(shè)計(jì)的時(shí)鐘電路畢業(yè)論文第一章電路原理分析1-1 顯示原理1-2 數(shù)碼管結(jié)構(gòu)及代碼顯示1-3 鍵盤及讀數(shù)原理1-4 連擊功能的實(shí)現(xiàn)第 二 章 程序設(shè)計(jì)思想和相關(guān)指令介紹2-1 數(shù)據(jù)與代碼轉(zhuǎn)換2-2 計(jì)時(shí)功能的實(shí)現(xiàn)與中斷服務(wù)程序2-3 時(shí)間控制功能與比較指令2-4 時(shí)鐘誤差的分析附錄A 電路圖附錄B 存儲(chǔ)單元地址表附錄C 輸入輸出口功能分配表附錄D 定時(shí)中斷程序流程圖附錄F 調(diào)時(shí)功能流程圖附錄G 程序清單

    標(biāo)簽: 51單片機(jī) 時(shí)鐘電路 畢業(yè)論文

    上傳時(shí)間: 2013-10-29

    上傳用戶:hoperingcong

  • MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用

    MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用TI公司的MSP430系列微控制器是一個(gè)近期推出的單片機(jī)品種。它在超低功耗和功能集成上都有一定的特色,尤其適合應(yīng)用在自動(dòng)信號(hào)采集系統(tǒng)、液晶顯示智能化儀器、電池供電便攜式裝置、超長(zhǎng)時(shí)間連續(xù)工作設(shè)備等領(lǐng)域。《MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用》對(duì)這一系列產(chǎn)品的原理、結(jié)構(gòu)及內(nèi)部各功能模塊作了詳細(xì)的說(shuō)明,并以方便工程師及程序員使用的方式提供軟件和硬件資料。由于MSP430系列的各個(gè)不同型號(hào)基本上是這些功能模塊的不同組合,因此,掌握《MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用》的內(nèi)容對(duì)于MSP430系列的原理理解和應(yīng)用開發(fā)都有較大的幫助。《MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用》的內(nèi)容主要根據(jù)TI公司的《MSP430 Family Architecture Guide and Module Library》一書及其他相關(guān)技術(shù)資料編寫。  《MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用》供高等院校自動(dòng)化、計(jì)算機(jī)、電子等專業(yè)的教學(xué)參考及工程技術(shù)人員的實(shí)用參考,亦可做為應(yīng)用技術(shù)的培訓(xùn)教材。MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用 目錄  第1章 MSP430系列1.1 特性與功能1.2 系統(tǒng)關(guān)鍵特性1.3 MSP430系列的各種型號(hào)??第2章 結(jié)構(gòu)概述2.1 CPU2.2 代碼存儲(chǔ)器?2.3 數(shù)據(jù)存儲(chǔ)器2.4 運(yùn)行控制?2.5 外圍模塊2.6 振蕩器、倍頻器和時(shí)鐘發(fā)生器??第3章 系統(tǒng)復(fù)位、中斷和工作模式?3.1 系統(tǒng)復(fù)位和初始化3.2 中斷系統(tǒng)結(jié)構(gòu)3.3 中斷處理3.3.1 SFR中的中斷控制位3.3.2 外部中斷3.4 工作模式3.5 低功耗模式3.5.1 低功耗模式0和模式13.5.2 低功耗模式2和模式33.5.3 低功耗模式43.6 低功耗應(yīng)用要點(diǎn)??第4章 存儲(chǔ)器組織4.1 存儲(chǔ)器中的數(shù)據(jù)4.2 片內(nèi)ROM組織4.2.1 ROM表的處理4.2.2 計(jì)算分支跳轉(zhuǎn)和子程序調(diào)用4.3 RAM與外圍模塊組織4.3.1 RAM4.3.2 外圍模塊--地址定位4.3.3 外圍模塊--SFR??第5章 16位CPU?5.1 CPU寄存器5.1.1 程序計(jì)數(shù)器PC5.1.2 系統(tǒng)堆棧指針SP5.1.3 狀態(tài)寄存器SR5.1.4 常數(shù)發(fā)生寄存器CG1和CG2?5.2 尋址模式5.2.1 寄存器模式5.2.2 變址模式5.2.3 符號(hào)模式5.2.4 絕對(duì)模式5.2.5 間接模式5.2.6 間接增量模式5.2.7 立即模式5.2.8 指令的時(shí)鐘周期與長(zhǎng)度5.3 指令集概述5.3.1 雙操作數(shù)指令5.3.2 單操作數(shù)指令5.3.3 條件跳轉(zhuǎn)5.3.4 模擬指令的簡(jiǎn)短格式5.3.5 其他指令5.4 指令分布??第6章 硬件乘法器?6.1 硬件乘法器的操作6.2 硬件乘法器的寄存器6.3 硬件乘法器的SFR位6.4 硬件乘法器的軟件限制6.4.1 硬件乘法器的軟件限制--尋址模式6.4.2 硬件乘法器的軟件限制--中斷程序??第7章 振蕩器與系統(tǒng)時(shí)鐘發(fā)生器?7.1 晶體振蕩器7.2 處理機(jī)時(shí)鐘發(fā)生器7.3 系統(tǒng)時(shí)鐘工作模式7.4 系統(tǒng)時(shí)鐘控制寄存器7.4.1 模塊寄存器7.4.2 與系統(tǒng)時(shí)鐘發(fā)生器相關(guān)的SFR位7.5 DCO典型特性??第8章 數(shù)字I/O配置?8.1 通用端口P08.1.1 P0的控制寄存器8.1.2 P0的原理圖8.1.3 P0的中斷控制功能8.2 通用端口P1、P28.2.1 P1、P2的控制寄存器8.2.2 P1、P2的原理圖8.2.3 P1、P2的中斷控制功能8.3 通用端口P3、P48.3.1 P3、P4的控制寄存器8.3.2 P3、P4的原理圖8.4 LCD端口8.5 LCD端口--定時(shí)器/端口比較器??第9章 通用定時(shí)器/端口模塊?9.1 定時(shí)器/端口模塊操作9.1.1 定時(shí)器/端口計(jì)數(shù)器TPCNT1--8位操作9.1.2 定時(shí)器/端口計(jì)數(shù)器TPCNT2--8位操作9.1.3 定時(shí)器/端口計(jì)數(shù)器--16位操作9.2 定時(shí)器/端口寄存器9.3 定時(shí)器/端口SFR位9.4 定時(shí)器/端口在A/D中的應(yīng)用9.4.1 R/D轉(zhuǎn)換原理9.4.2 分辨率高于8位的轉(zhuǎn)換??第10章 定時(shí)器?10.1 Basic Timer110.1.1 Basic Timer1寄存器10.1.2 SFR位10.1.3 Basic Timer1的操作10.1.4 Basic Timer1的操作--LCD時(shí)鐘信號(hào)fLCD?10.2 8位間隔定時(shí)器/計(jì)數(shù)器10.2.1 8位定時(shí)器/計(jì)數(shù)器的操作10.2.2 8位定時(shí)器/計(jì)數(shù)器的寄存器10.2.3 與8位定時(shí)器/計(jì)數(shù)器有關(guān)的SFR位10.2.4 8位定時(shí)器/計(jì)數(shù)器在UART中的應(yīng)用10.3 看門狗定時(shí)器11.1.3 比較模式11.1.4 輸出單元11.2 TimerA的寄存器11.2.1 TimerA控制寄存器TACTL11.2.2 捕獲/比較控制寄存器CCTL11.2.3 TimerA中斷向量寄存器11.3 TimerA的應(yīng)用11.3.1 TimerA增計(jì)數(shù)模式應(yīng)用11.3.2 TimerA連續(xù)模式應(yīng)用11.3.3 TimerA增/減計(jì)數(shù)模式應(yīng)用11.3.4 TimerA軟件捕獲應(yīng)用11.3.5 TimerA處理異步串行通信協(xié)議11.4 TimerA的特殊情況11.4.1 CCR0用做周期寄存器11.4.2 定時(shí)器寄存器的啟/停11.4.3 輸出單元Unit0??第12章 USART外圍接口--UART模式?12.1 異步操作12.1.1 異步幀格式12.1.2 異步通信的波特率發(fā)生器12.1.3 異步通信格式12.1.4 線路空閑多處理機(jī)模式12.1.5 地址位格式12.2 中斷與控制功能12.2.1 USART接收允許12.2.2 USART發(fā)送允許12.2.3 USART接收中斷操作12.2.4 USART發(fā)送中斷操作12.3 控制與狀態(tài)寄存器12.3.1 USART控制寄存器UCTL12.3.2 發(fā)送控制寄存器UTCTL12.3.3 接收控制寄存器URCTL12.3.4 波特率選擇和調(diào)制控制寄存器12.3.5 USART接收數(shù)據(jù)緩存URXBUF12.3.6 USART發(fā)送數(shù)據(jù)緩存UTXBUF12.4 UART模式--低功耗模式應(yīng)用特性12.4.1 由UART幀啟動(dòng)接收操作12.4.2 時(shí)鐘頻率的充分利用與UART模式的波特率12.4.3 節(jié)約MSP430資源的多處理機(jī)模式12.5 波特率的計(jì)算??第13章 USART外圍接口--SPI模式?13.1 USART的同步操作13.1.1 SPI模式中的主模式--MM=1、SYNC=113.1.2 SPI模式中的從模式--MM=0、SYNC=113.2 中斷與控制功能13.2.1 USART接收允許13.2.2 USART發(fā)送允許13.2.3 USART接收中斷操作13.2.4 USART發(fā)送中斷操作13.3 控制與狀態(tài)寄存器13.3.1 USART控制寄存器13.3.2 發(fā)送控制寄存器UTCTL13.3.3 接收控制寄存器URCTL13.3.4 波特率選擇和調(diào)制控制寄存器13.3.5 USART接收數(shù)據(jù)緩存URXBUF13.3.6 USART發(fā)送數(shù)據(jù)緩存UTXBUF??第14章 液晶顯示驅(qū)動(dòng)?14.1 LCD驅(qū)動(dòng)基本原理14.2 LCD控制器/驅(qū)動(dòng)器14.2.1 LCD控制器/驅(qū)動(dòng)器功能14.2.2 LCD控制與模式寄存器14.2.3 LCD顯示內(nèi)存14.2.4 LCD操作軟件例程14.3 LCD端口功能14.4 LCD與端口模式混合應(yīng)用實(shí)例??第15章 A/D轉(zhuǎn)換器?15.1 概述15.2 A/D轉(zhuǎn)換操作15.2.1 A/D轉(zhuǎn)換15.2.2 A/D中斷15.2.3 A/D量程15.2.4 A/D電流源15.2.5 A/D輸入端與多路切換15.2.6 A/D接地與降噪15.2.7 A/D輸入與輸出引腳15.3 A/D控制寄存器??第16章 其他模塊16.1 晶體振蕩器16.2 上電電路16.3 晶振緩沖輸出??附錄A 外圍模塊地址分配?附錄B 指令集描述?B1 指令匯總B2 指令格式B3 不增加ROM開銷的指令模擬B4 指令說(shuō)明B5 用幾條指令模擬的宏指令??附錄C EPROM編程?C1 EPROM操作C2 快速編程算法C3 通過(guò)串行數(shù)據(jù)鏈路應(yīng)用\"JTAG\"特性的EPROM模塊編程C4 通過(guò)微控制器軟件實(shí)現(xiàn)對(duì)EPROM模塊編程??附錄D MSP430系列單片機(jī)參數(shù)表?附錄E MSP430系列單片機(jī)產(chǎn)品編碼?附錄F MSP430系列單片機(jī)封裝形式?

    標(biāo)簽: MSP 430 超低功耗 位單片機(jī)

    上傳時(shí)間: 2014-05-07

    上傳用戶:lwq11

  • 波形發(fā)生器,含原理圖+電路圖+源程序

    含原理圖+電路圖+程序的波形發(fā)生器:在工作中,我們常常會(huì)用到波形發(fā)生器,它是使用頻度很高的電子儀器。現(xiàn)在的波形發(fā)生器都采用單片機(jī)來(lái)構(gòu)成。單片機(jī)波形發(fā)生器是以單片機(jī)核心,配相應(yīng)的外圍電路和功能軟件,能實(shí)現(xiàn)各種波形發(fā)生的應(yīng)用系統(tǒng),它由硬件部分和軟件部分組成,硬件是系統(tǒng)的基礎(chǔ),軟件則是在硬件的基礎(chǔ)上,對(duì)其合理的調(diào)配和使用,從而完成波形發(fā)生的任務(wù)。 波形發(fā)生器的技術(shù)指標(biāo):(1) 波形類型:方型、正弦波、三角波、鋸齒波;(2) 幅值電壓:1V、2V、3V、4V、5V;(3) 頻率值:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;(4) 輸出極性:雙極性操作設(shè)計(jì)1、 機(jī)器通電后,系統(tǒng)進(jìn)行初始化,LED在面板上顯示6個(gè)0,表示系統(tǒng)處于初始狀態(tài),等待用戶輸入設(shè)置命令,此時(shí),無(wú)任何波形信號(hào)輸出。2、 用戶按下“F”、“V”、“W”,可以分別進(jìn)入頻率,幅值波形設(shè)置,使系統(tǒng)進(jìn)入設(shè)置狀態(tài),相應(yīng)的數(shù)碼管顯示“一”,此時(shí),按其它鍵,無(wú)效;3、 在進(jìn)入某一設(shè)置狀態(tài)后,輸入0~9等數(shù)字鍵,(數(shù)字鍵僅在設(shè)置狀態(tài)時(shí),有效)為欲輸出的波形設(shè)置相應(yīng)參數(shù),LED將參數(shù)顯示在面板上;4、 如果在設(shè)置中,要改變已設(shè)定的參數(shù),可按下“CL”鍵,清除所有已設(shè)定參數(shù),系統(tǒng)恢復(fù)初始狀態(tài),LED顯示6個(gè)0,等待重新輸入命令;5、 當(dāng)必要的參數(shù)設(shè)定完畢后,所有參數(shù)顯示于LED上,用戶按下“EN”鍵,系統(tǒng)會(huì)將各波形參數(shù)傳遞到波形產(chǎn)生模塊中,以便控制波形發(fā)生,實(shí)現(xiàn)不同頻率,不同電壓幅值,不同類型波形的輸出;6、 用戶按下“EN”鍵后,波形發(fā)生器開始輸出滿足參數(shù)的波形信號(hào),面板上相應(yīng)類型的運(yùn)行指示燈閃爍,表示波形正在輸出,LED顯示波形類型編號(hào),頻率值、電壓幅值等波形參數(shù);7、 波形發(fā)生器在輸出信號(hào)時(shí),按下任意一個(gè)鍵,就停止波形信號(hào)輸出,等待重新設(shè)置參數(shù),設(shè)置過(guò)程如上所述,如果不改變參數(shù),可按下“EN”鍵,繼續(xù)輸出原波形信號(hào);8、 要停止波形發(fā)生器的使用,可按下復(fù)位按鈕,將系統(tǒng)復(fù)位,然后關(guān)閉電源。硬件組成部分通過(guò)綜合比較,決定選用獲得廣泛應(yīng)用,性能價(jià)格高的常用芯片來(lái)構(gòu)成硬件電路。單片機(jī)采用MCS-51系列的89C51(一塊),74LS244和74LS373(各一塊),反相驅(qū)動(dòng)器 ULN2803A(一塊),運(yùn)算放大器 LM324(一塊)  波形發(fā)生器的硬件電路由單片機(jī)、鍵盤顯示器接口電路、波形轉(zhuǎn)換(D/ A)電路和電源線路等四部分構(gòu)成。1.單片機(jī)電路功能:形成掃描碼,鍵值識(shí)別,鍵功能處理,完成參數(shù)設(shè)置;形成顯示段碼,向LED顯示接口電路輸出;產(chǎn)生定時(shí)中斷;形成波形的數(shù)字編碼,并輸出到D/A接口電路;如電路原理圖所示: 89C51的P0口和P2口作為擴(kuò)展I/O口,與8255、0832、74LS373相連接,可尋址片外的寄存器。單片機(jī)尋址外設(shè),采用存儲(chǔ)器映像方式,外部接口芯片與內(nèi)部存儲(chǔ)器統(tǒng)一編址,89C51提供16根地址線P0(分時(shí)復(fù)用)和P2,P2口提供高8位地址線,P0口提供低8位地址線。P0口同時(shí)還要負(fù)責(zé)與8255,0832的數(shù)據(jù)傳遞。P2.7是8255的片選信號(hào),P2.6是0832(1)的片選,P2.5是0832(2)的片選,低電平有效,P0.0、P0.1經(jīng)過(guò)74LS373鎖存后,送到8255的A1、A2作,片內(nèi)A口,B口,C口,控制口等寄存器的字選。89C51的P1口的低4位連接4只發(fā)光三極管,作為波形類型指示燈,表示正在輸出的波形是什么類型。單片機(jī)89C51內(nèi)部有兩個(gè)定時(shí)器/計(jì)數(shù)器,在波形發(fā)生器中使用T0作為中斷源。不同的頻率值對(duì)應(yīng)不同的定時(shí)初值,定時(shí)器的溢出信號(hào)作為中斷請(qǐng)求。控制定時(shí)器中斷的特殊功能寄存器設(shè)置如下:定時(shí)控制寄存器TCON=(00010000)工作方式選擇寄存器(TMOD)=(00000000)中斷允許控制寄存器(IE)=(10000010)2、鍵盤顯示器接口電路功能:驅(qū)動(dòng)6位數(shù)碼管動(dòng)態(tài)顯示;           提供響應(yīng)界面;           掃面鍵盤;           提供輸入按鍵。由并口芯片8255,鎖存器74LS273,74LS244,反向驅(qū)動(dòng)器ULN2803A,6位共陰極數(shù)碼管(LED)和4×4行列式鍵盤組成。8255的C口作為鍵盤的I/O接口,C口的低4位輸出到掃描碼,高4位作為輸入行狀態(tài),按鍵的分布如圖所示。8255的A口作為L(zhǎng)ED段碼輸出口,與74LS244相連接,B口作為L(zhǎng)ED的位選信號(hào)輸出口,與ULN2803A相連接。8255內(nèi)部的4個(gè)寄存器地址分配如下:控制口:7FFFH , A口:7FFFCH , B口:7FFDH ,  C口:7FFEH    3、D/A電路功能:將波形樣值的數(shù)字編碼轉(zhuǎn)換成模擬值;完成單極性向雙極性的波形輸出;構(gòu)成由兩片0832和一塊LM324運(yùn)放組成。0832(1)是參考電壓提供者,單片機(jī)向0832(1)內(nèi)的鎖存器送數(shù)字編碼,不同的編碼會(huì)產(chǎn)生不同的輸出值,在本發(fā)生器中,可輸出1V、2V、3V、4V、5V等五個(gè)模擬值,這些值作為0832(2)的參考電壓,使0832(2)輸出波形信號(hào)時(shí),其幅度是可調(diào)的。0832(2)用于產(chǎn)生各種波形信號(hào),單片機(jī)在波形產(chǎn)生程序的控制下,生成波形樣值編碼,并送到0832(2)中的鎖存器,經(jīng)過(guò)D/A轉(zhuǎn)換,得到波形的模擬樣值點(diǎn),假如N個(gè)點(diǎn)就構(gòu)成波形的一個(gè)周期,那么0832(2)輸出N個(gè)樣值點(diǎn)后,樣值點(diǎn)形成運(yùn)動(dòng)軌跡,就是波形信號(hào)的一個(gè)周期。重復(fù)輸出N個(gè)點(diǎn)后,由此成第二個(gè)周期,第三個(gè)周期……。這樣0832(2)就能連續(xù)的輸出周期變化的波形信號(hào)。運(yùn)放A1是直流放大器,運(yùn)放A2是單極性電壓放大器,運(yùn)放A3是雙極性驅(qū)動(dòng)放大器,使波形信號(hào)能帶得起負(fù)載。地址分配:0832(1):DFFFH ,0832(2):BFFFH4、電源電路:功能:為波形發(fā)生器提供直流能量;構(gòu)成由變壓器、整流硅堆,穩(wěn)壓塊7805組成。220V的交流電,經(jīng)過(guò)開關(guān),保險(xiǎn)管(1.5A/250V),到變壓器降壓,由220V降為10V,通過(guò)硅堆將交流電變成直流電,對(duì)于諧波,用4700μF的電解電容給予濾除。為保證直流電壓穩(wěn)定,使用7805進(jìn)行穩(wěn)壓。最后,+5V電源配送到各用電負(fù)載。

    標(biāo)簽: 波形發(fā)生器 原理圖 電路圖 源程序

    上傳時(shí)間: 2013-11-08

    上傳用戶:685

  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

    有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系:1. 通過(guò)為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈;2. 通過(guò)輸出到一個(gè)接口WDM驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。這個(gè)接口保證PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語(yǔ)言的訪問(wèn)設(shè)備的方法。一個(gè)應(yīng)用程序使用Win32APIs來(lái)調(diào)用設(shè)備。在某個(gè)Win32 APIs和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。獲得對(duì)設(shè)備對(duì)象訪問(wèn)的第一步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān)Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。注意:CreatFile中的第一個(gè)參數(shù)不是Windows 98/2000中驅(qū)動(dòng)程序(.sys文件)的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。如果使用DriverWizard產(chǎn)生驅(qū)動(dòng)程序,它通常使用類KunitizedName來(lái)構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應(yīng)用程序需要被覆蓋的I/O,第六個(gè)參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個(gè)輸出接口打開句柄用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。DriverWorks庫(kù)提供兩個(gè)助手類來(lái)使獲得對(duì)該接口的訪問(wèn)容易一些,這兩個(gè)類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個(gè)設(shè)備信息集,該信息集包含了特殊類中的所有設(shè)備接口信息。應(yīng)用程序能有用CdeviceInterfaceClass類的一個(gè)實(shí)例來(lái)獲得一個(gè)或更多的CdeviceInterface類的實(shí)例。CdeviceInterface類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在CreateFile中使用來(lái)打開設(shè)備。下面用一個(gè)小例子來(lái)顯示這些類最基本的使用方法: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;} 在設(shè)備中執(zhí)行I/O操作一旦應(yīng)用程序獲得一個(gè)有效的設(shè)備句柄,它就能使用Win32 APIs來(lái)產(chǎn)生到設(shè)備對(duì)象的IRPs。下面的表顯示了這種對(duì)應(yīng)關(guān)系。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 需要解釋一下設(shè)備類成員的Close和CleanUp:CreateFile使內(nèi)核為設(shè)備創(chuàng)建一個(gè)新的文件對(duì)象。這使得多個(gè)句柄可以映射同一個(gè)文件對(duì)象。當(dāng)這個(gè)文件對(duì)象的最后一個(gè)用戶級(jí)句柄被撤銷后,I/O管理器調(diào)用CleanUp。當(dāng)沒有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫的VxD的應(yīng)用程序代碼中可能會(huì)在打開設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒有特權(quán)的用戶企圖打開這個(gè)設(shè)備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉(zhuǎn)換成IRP域的方法依賴于設(shè)備對(duì)象的屬性。當(dāng)設(shè)備設(shè)置DO_DIRECT_IO標(biāo)志,I/O管理器將buff鎖住在存儲(chǔ)器中,并且創(chuàng)建了一個(gè)存儲(chǔ)在IRP中的MDL域。一個(gè)設(shè)備可以通過(guò)調(diào)用Kirp::Mdl來(lái)存取MDL。當(dāng)設(shè)備設(shè)置DO_BUFFERED_IO標(biāo)志,設(shè)備對(duì)象分別通過(guò)KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或?qū)懖僮鳙@得buff地址。當(dāng)設(shè)備不設(shè)置DO_BUFFERED_IO標(biāo)志也不設(shè)置DO_DIRECT_IO,內(nèi)核設(shè)置IRP 的UserBuffer域來(lái)對(duì)應(yīng)ReadFile或WriteFile中的buff參數(shù)。然而,存儲(chǔ)區(qū)并沒有被鎖住而且地址只對(duì)調(diào)用進(jìn)程有效。驅(qū)動(dòng)程序可以使用KIrp::UserBuffer來(lái)存取IRP域。對(duì)于DeviceIoControl調(diào)用,buffer參數(shù)的轉(zhuǎn)換依賴于特殊的I/O控制代碼,它不在設(shè)備對(duì)象的特性中。宏CTL_CODE(在winioctl.h中定義)用來(lái)構(gòu)造控制代碼。這個(gè)宏的其中一個(gè)參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對(duì)應(yīng)的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):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,系統(tǒng)分配一個(gè)單一的緩沖來(lái)作為輸入與輸出。驅(qū)動(dòng)程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅(qū)動(dòng)程序通過(guò)調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時(shí),I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級(jí)調(diào)用者使用的緩沖中。驅(qū)動(dòng)程序必須在結(jié)束前存儲(chǔ)拷貝到IRP的Information成員中的數(shù)據(jù)個(gè)數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個(gè)系統(tǒng)緩沖,這個(gè)緩沖驅(qū)動(dòng)程序可以通過(guò)調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對(duì)象,驅(qū)動(dòng)程序?qū)@個(gè)對(duì)象的訪問(wèn)通過(guò)調(diào)用KIrp::Mdl來(lái)實(shí)現(xiàn)。對(duì)于METHOD_OUT_DIRECT,調(diào)用者必須有對(duì)緩沖的寫訪問(wèn)權(quán)限。注意,對(duì)METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會(huì)做映射來(lái)配置緩沖。虛擬地址只對(duì)調(diào)用進(jìn)程有效。這里是一個(gè)用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來(lái)定義一個(gè)IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個(gè)DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅(qū)動(dòng)程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設(shè)備拷貝串到里面并將拷貝的資結(jié)束設(shè)置到FirmwareRevSize中。在驅(qū)動(dòng)程序中,代碼看起來(lái)如下所示: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 . . .   } }

    標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:gai928943

主站蜘蛛池模板: 马龙县| 长海县| 静乐县| 泗阳县| 广西| 红河县| 南城县| 台前县| 东丽区| 普洱| 武山县| 和林格尔县| 张家口市| 陕西省| 古田县| 哈尔滨市| 阳信县| SHOW| 郴州市| 榆中县| 彭阳县| 温州市| 随州市| 阿勒泰市| 潞城市| 山西省| 若羌县| 平山县| 丹寨县| 南华县| 宁乡县| 徐闻县| 图片| 聂拉木县| 岳池县| 新和县| 杨浦区| 高陵县| 航空| 沿河| 沧州市|