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

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

票據(jù)(jù)<b>ocr</b>在銀行事后后督系統(tǒng)(tǒng)的應(yīng)(yīng)用

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

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

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

    上傳時間: 2013-11-08

    上傳用戶:685

  • PIC單片機設(shè)計電子密碼鎖

    介紹用PIC16F84單片機制作的電子密碼鎖。PIC16F84單片機共18個引腳,13個可用I/O接口。芯片內(nèi)有1K×14的FLASHROM程序存儲器,36×8的靜態(tài)RAM的通用寄存器,64×8的EEPROM的數(shù)據(jù)存儲器,8級深度的硬堆棧。 用PIC單片機設(shè)計的電子密碼鎖微芯公司生產(chǎn)的PIC8位COMS單片機,采用類RISC指令集和哈弗總線結(jié)構(gòu),以及先進的流水線時序,與傳統(tǒng)51單片機相比其在速度和性能方面更具優(yōu)越性和先進性。PIC單片機的另一個優(yōu)點是片上硬件資源豐富,集成常見的EPROM、DAC、PWM以及看門狗電路。這使得硬件電路的設(shè)計更加簡單,節(jié)約設(shè)計成本,提高整機性能。因此PIC單片機已成為產(chǎn)品開發(fā),尤其是產(chǎn)品設(shè)計和研制階段的首選控制器。本文介紹用PIC16F84單片機制作的電子密碼鎖。PIC16F84單片機共18個引腳,13個可用I/O接口。芯片內(nèi)有1K×14的FLASHROM程序存儲器,36×8的靜態(tài)RAM的通用寄存器,64×8的EEPROM的數(shù)據(jù)存儲器,8級深度的硬堆棧。硬件設(shè)計  電路原理見圖1。Xx8位數(shù)據(jù)線接4x4鍵盤矩陣電路,面板布局見表1,A、B、C、D為備用功能鍵。RA0、RA7輸出4組編碼二進制數(shù)據(jù),經(jīng)74LS139譯碼后輸出逐行掃描信號,送RB4-RB7列信號輸入端。余下半個139譯碼器動揚聲器。RB2接中功率三極管基極,驅(qū)動繼電器動作。有效密碼長度為4位,根據(jù)實際情況,可通過修改源程序增加密碼位數(shù)。產(chǎn)品初始密碼為3345,這是一隨機數(shù),無特殊意義,目的是為防止被套解。用戶可按*號鍵修改密碼,按#號鍵結(jié)束。輸入密碼并按#號確認之后,腳輸出RB2腳輸出高電平,繼電器閉合,執(zhí)行一次開鎖動作。  若用戶輸入的密碼正確,揚聲器發(fā)出一聲稍長的“滴”提示聲,若輸入的密碼與上次修改的不符,則發(fā)出短促的“滴”聲。連續(xù)3次輸入密碼錯誤之后,程序鎖死,揚聲器報警。直到CPU被復(fù)位或從新上電。軟件設(shè)計  軟件流程圖見圖3。CPU上電或復(fù)位之后將最近一次修改并保存到EEPROM的密碼讀出,最為參照密匙。然后等待用戶輸入開鎖密碼。若5分鐘以內(nèi)沒有接受到用戶的任何輸入,CPU自動轉(zhuǎn)入掉電模式,用戶輸入任意值可喚醒CPU。每次修改密碼之后,CPU將新的密碼存入內(nèi)部4個連續(xù)的EEPROM單元,掉電后該數(shù)據(jù)任有效。每執(zhí)行一次開鎖指令,CPU將當前輸入密碼與該值比較,看是否真確,并給出相應(yīng)的提示和控制。布     局  所有元件均使用SMD表貼封裝,縮小體積,便于產(chǎn)品安裝,60X60雙面PCB板,頂層是一體化輸入鍵盤,底層是元件層。成型后的產(chǎn)品體積小巧,能很方便的嵌入防盜鐵門、保險箱柜。

    標簽: PIC 單片機設(shè)計 電子密碼鎖

    上傳時間: 2013-10-31

    上傳用戶:uuuuuuu

  • 單片機音樂中音調(diào)和節(jié)拍的確定方法

    單片機音樂中音調(diào)和節(jié)拍的確定方法:調(diào)號-音樂上指用以確定樂曲主音高度的符號。很明顯一個八度就有12個半音。A、B、C、D、E、F、G。經(jīng)過聲學家的研究,全世界都用這些字母來表示固定的音高。比如,A這個音,標準的音高為每秒鐘振動440周。 升C調(diào):1=#C,也就是降D調(diào):1=BD;277(頻率)升D調(diào):1=#D,也就是降E調(diào):1=BE;311升F調(diào):1=#F,也就是降G調(diào):1=BG;369升G調(diào):1=#G,也就是降A(chǔ)調(diào):1=BA;415升A調(diào):1=#A,也就是降B調(diào):1=BB。466,C 262   #C277   D 294   #D(bE)311  E 330   F 349   #F369   G 392  #G415A 440.    #A466    B 494 所謂1=A,就是說,這首歌曲的“導(dǎo)”要唱得同A一樣高,人們也把這首歌曲叫做A調(diào)歌曲,或叫“唱A調(diào)”。1=C,就是說,這首歌曲的“導(dǎo)”要唱得同C一樣高,或者說“這歌曲唱C調(diào)”。同樣是“導(dǎo)”,不同的調(diào)唱起來的高低是不一樣的。各調(diào)的對應(yīng)的標準頻率為: 單片機演奏音樂時音調(diào)和節(jié)拍的確定方法 經(jīng)??吹揭恍﹦倢W單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。 一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個音符唱多高的頻率,節(jié)拍表示一個音符唱多長的時間。 在音樂中所謂“音調(diào)”,其實就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標準音高,其頻率f=440Hz。當兩個聲音信號的頻率相差一倍時,也即f2=2f1時,則稱f2比f1高一個倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個倍頻程,在音樂學中稱它相差一個八度音。在一個八度音內(nèi),有12個半音。以1—i八音區(qū)為例, 12個半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個音階的分度基本上是以對數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。 知道了一個音符的頻率后,怎樣讓單片機發(fā)出相應(yīng)頻率的聲音呢?一般說來,常采用的方法就是通過單片機的定時器定時中斷,將單片機上對應(yīng)蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機發(fā)出不同頻率的聲音,我們只需將定時器予置不同的定時值就可實現(xiàn)。那么怎樣確定一個頻率所對應(yīng)的定時器的定時值呢?以標準音高A為例:   A的頻率f = 440 Hz,其對應(yīng)的周期為:T = 1/ f = 1/440 =2272μs 由上圖可知,單片機上對應(yīng)蜂鳴器的I/O口來回取反的時間應(yīng)為:t = T/2 = 2272/2 = 1136μs這個時間t也就是單片機上定時器應(yīng)有的中斷觸發(fā)時間。一般情況下,單片機奏樂時,其定時器為工作方式1,它以振蕩器的十二分頻信號為計數(shù)脈沖。設(shè)振蕩器頻率為f0,則定時器的予置初值由下式來確定:    t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時器待確定的計數(shù)初值。因此定時器的高低計數(shù)器的初值為:     TH = THL / 256 = ( TALL – t* f0/12) / 256    TL = THL % 256 = ( TALL – t* f0/12) %256  將t=1136μs代入上面兩式(注意:計算時應(yīng)將時間和頻率的單位換算一致),即可求出標準音高A在單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數(shù)器的予置初值為 :    TH440Hz = (65536 – 1136 * 12/12) /256 = FBH    TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據(jù)上面的求解方法,我們就可求出其他音調(diào)相應(yīng)的計數(shù)器的予置初值。 音符的節(jié)拍我們可以舉例來說明。在一張樂譜中,我們經(jīng)常會看到這樣的表達式,如1=C  、1=G …… 等等,這里1=C,1=G表示樂譜的曲調(diào),和我們前面所談的音調(diào)有很大的關(guān)聯(lián), 、 就是用來表示節(jié)拍的。以 為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如:      其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時長為四分音符的一半,即為八分音符長,3、4的時長為八分音符的一半,即為十六分音符長,5的時長為四分音符的一半,即為八分音符長,6的時長為四分音符長。那么一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400—500ms 。我們以一拍的時長為400ms為例,則當以四分音符為節(jié)拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms??梢姡趩纹瑱C上控制一個音符唱多長可采用循環(huán)延時的方法來實現(xiàn)。首先,我們確定一個基本時長的延時程序,比如說以十六分音符的時長為基本延時時間,那么,對于一個音符,如果它為十六分音符,則只需調(diào)用一次延時程序,如果它為八分音符,則只需調(diào)用二次延時程序,如果它為四分音符,則只需調(diào)用四次延時程序,依次類推。通過上面關(guān)于一個音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機上實現(xiàn)演奏音樂了。具體的實現(xiàn)方法為:將樂譜中的每個音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲器中,通過程序取出一個音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個音符的相關(guān)參數(shù)……,如此直到播放完畢最后一個音符,根據(jù)需要也可循環(huán)不停地播放整個樂曲。另外,對于樂曲中的休止符,一般將其音調(diào)參數(shù)設(shè)為FFH,F(xiàn)FH,其節(jié)拍參數(shù)與其他音符的節(jié)拍參數(shù)確定方法一致,樂曲結(jié)束用節(jié)拍參數(shù)為00H來表示。下面給出部分音符(三個八度音)的頻率以及以單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數(shù)器的予置初值 : C調(diào)音符  頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC調(diào)音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C調(diào)音符  頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02

    標簽: 單片機 音調(diào)

    上傳時間: 2013-10-20

    上傳用戶:哈哈haha

  • 并行接口

    7.1 并行接口概述并行接口和串行接口的結(jié)構(gòu)示意圖并行接口傳輸速率高,一般不要求固定格式,但不適合長距離數(shù)據(jù)傳輸7.2 可編程并行接口芯片82C55     7.2.1  8255的基本功能 8255具有2個獨立的8位I/O口(A口和B口)和2個獨立的4位I/O(C口上半部和C口下半部),提供TTL兼容的并行接口。作為輸入時提供三態(tài)緩沖器功能,作為輸出時提供數(shù)據(jù)鎖存功能。其中,A口具有雙向傳輸功能。8255有3種工作方式,方式0、方式1和方式2,能使用無條件、查詢和中斷等多種數(shù)據(jù)傳送方式完成CPU與I/O設(shè)備之間的數(shù)據(jù)交換。B口和C口的引腳具有達林頓復(fù)合晶體管驅(qū)動能力,在1.5V時輸出1mA電流,適于作輸出端口。C口除用做數(shù)據(jù)口外,當8255工作在方式1和方式2時,C口的部分引腳作為固定的聯(lián)絡(luò)信號線。

    標簽: 并行接口

    上傳時間: 2013-10-25

    上傳用戶:oooool

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

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

    標簽: 驅(qū)動程序 應(yīng)用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • 8255A可編程并行接口

    并行接口電路:微處理器與I/O設(shè)備進行數(shù)據(jù)傳輸時均需經(jīng)過接口電路實現(xiàn)系統(tǒng)與設(shè)備互連的匹配。并行接口電路中每個信息位有自己的傳輸線,一個數(shù)據(jù)字節(jié)各位可并行傳送,速度快,控制簡單。由于電氣特性的限制,傳輸距離不能太長。8255A是通用的可編程并行接口芯片,功能強,使用靈活。適合一些并行輸入/輸出設(shè)備的使用。8255A并行接口邏輯框圖三個獨立的8位I/O端口,口A、口B、口C??贏有輸入、輸出鎖存器及輸出緩沖器??贐與口C有輸入、輸出緩沖器及輸出鎖存器。在實現(xiàn)高級的傳輸協(xié)議時,口C的8條線分為兩組,每組4條線,分別作為口A與口B在傳輸時的控制信號線。口C的8條線可獨立進行置1/置0的操作。口A、口B、口C及控制字口共占4個設(shè)備號。8255A并行接口的控制字工作模式選擇控制字:口A有三種工作模式,口B有二種工作模式??贑獨立使用時只有一個工作模式,與口A、口B配合使用時,作為控制信號線。三種工作模式命名為:模式0、模式1及模式2。模式 0 為基本I/O端口,模式1為帶選通的I/O端口,模式 2 為帶選通的雙向I/O端口??贏可工作在三種模式下,口B可工作在模式 0與模式 1下,口C可工作在模式0下或作為控制線配合口A、口B工作。

    標簽: 8255A 可編程 并行接口

    上傳時間: 2013-11-07

    上傳用戶:xitai

  • ICCAVR軟件中文使用說明書

    ICCAVR軟件中文使用說明書:一ImageCraft 的ICC AVR 編譯器安裝1 運行光盤上的SETUP.EXE 程序進行安裝方法一a 打開我的電腦b 打開光盤驅(qū)動器所對應(yīng)的盤符c 雙擊光盤中文件SETUP.EXE 的圖標d 按照屏幕提示選定一個安裝路徑后進行安裝方法二a 在開始菜單中選擇運行項目b 在運行對話框中填入drive:\setup.exe注意drive 對應(yīng)你的機器中的光盤驅(qū)動器盤符c 按確定鍵開始安裝d 其余同方法一注意按上述方法進行安裝后得到的是一個只可以使用30 天的未注冊版對正式版用戶還要進行第二步的注冊才可得到一個無時間限制的正式版ICC AVR 正式版分標準版和專業(yè)版在標準版中有一些功能限制如代碼的壓縮工程和文件的配置檢查在標準版中不可以使用

    標簽: ICCAVR 軟件 使用說明書

    上傳時間: 2013-10-23

    上傳用戶:hwl453472107

  • ICCAVR教程

    ICCAVR教程,ICCAVR軟件中文件使用說明書,雙龍公司翻譯整理。建議大家認真學習一下這個資料,內(nèi)容不是很長,看了之后會對ICCAVR有更深的了解。 ImageCraft ICCAVR 的中文使用說明翻譯 詹衛(wèi)前一ImageCraft 的ICC AVR 編譯器安裝1 運行光盤上的SETUP.EXE 程序進行安裝方法一a 打開我的電腦b 打開光盤驅(qū)動器所對應(yīng)的盤符c 雙擊光盤中文件SETUP.EXE 的圖標d 按照屏幕提示選定一個安裝路徑后進行安裝方法二a 在開始菜單中選擇運行項目b 在運行對話框中填入drive:\setup.exe注意drive 對應(yīng)你的機器中的光盤驅(qū)動器盤符c 按確定鍵開始安裝d 其余同方法一注意按上述方法進行安裝后得到的是一個只可以使用30 天的未注冊版對正式版用戶還要進行第二步的注冊才可得到一個無時間限制的正式版ICC AVR 正式版分標準版和專業(yè)版在標準版中有一些功能限制如代碼的壓縮工程和文件的配置檢查在標準版中不可以使用

    標簽: ICCAVR 教程

    上傳時間: 2013-11-05

    上傳用戶:zhyfjj

  • 基于USB接口的數(shù)據(jù)采集模塊的設(shè)計與實現(xiàn)

    基于USB接口的數(shù)據(jù)采集模塊的設(shè)計與實現(xiàn)Design and Implementation of USB-Based Data Acquisition Module路 永 伸(天津科技大學電子信息與自動化學院,天津300222)摘要文中給出基于USB接口的數(shù)據(jù)采集模塊的設(shè)計與實現(xiàn)。硬件設(shè)計采用以Adpc831與PDIUSBDI2為主的器件進行硬件設(shè)計,采用Windriver開發(fā)USB驅(qū)動,并用Visual C十十6.0對主機軟件中硬件接口操作部分進行動態(tài)鏈接庫封裝。關(guān)鍵詞USB 數(shù)據(jù)采集Adpc831 PDNSBDI2 Windriver動態(tài)鏈接庫Abstract T hed esigna ndim plementaitono fU SB-BasedD ataA cquisiitonM oduleis g iven.Th ec hips oluitonm ainlyw ithA dpc831a ndP DTUSBD12i sused for hardware design. The USB drive is developed場Wmdriver, and the operation on the hardware interface is packaged into Dynamic Link Libraries場Visual C++6.0.  Keywords USB DataA cquisition Adttc831 PDfUSBD12 Windriver0 引言US B總 線 是新一代接口總線,最初推出的目的是為了統(tǒng)一取代PC機的各類外設(shè)接口,迄今經(jīng)歷了1.0,1.1與2.0版本3個標準。在國內(nèi)基于USB總線的相關(guān)設(shè)計與開發(fā)也得到了快速的發(fā)展,很多設(shè)計者從各自的應(yīng)用領(lǐng)域,用不同方案設(shè)計出了相應(yīng)的裝置[1,2]。數(shù)據(jù)采集是工業(yè)控制中一個普遍而重要的環(huán)節(jié),因此開發(fā)基于USB接口的數(shù)據(jù)采集模塊具有很強的現(xiàn)實應(yīng)用意義。雖然 US B總線標準已經(jīng)發(fā)展到2.0版本,但由于工業(yè)控制現(xiàn)場干擾信號的情況比較復(fù)雜,高速數(shù)據(jù)傳輸?shù)目煽啃圆蝗菀妆槐WC,并且很多場合對數(shù)據(jù)采集的實時性要求并不高,開發(fā)2.0標準產(chǎn)品的成本又較1.1標準產(chǎn)品高,所以筆者認為,在工業(yè)控制領(lǐng)域,目前開發(fā)基于USB總線1.1標準實現(xiàn)的數(shù)據(jù)采集模塊的實用意義大于相應(yīng)2.0標準模塊。

    標簽: USB 接口 數(shù)據(jù)采集模塊

    上傳時間: 2013-10-23

    上傳用戶:q3290766

  • 微機原理與接口課件

    微處理器及微型計算機的發(fā)展概況  第一代微處理器是以Intel公司1971年推出的4004,4040為代表的四位微處理機。      第二代微處理機(1973年~1977年),典型代表有:Intel 公司的8080、8085;Motorola公司的M6800以及Zlog公司的Z80。     第三代微處理機 第三代微機是以16位機為代表,基本上是在第二代微機的基礎(chǔ)上發(fā)展起來的。其中Intel公司的8088。8086是在8085的基礎(chǔ)發(fā)展起來的;M68000是Motorola公司在M6800 的基礎(chǔ)發(fā)展起來的;     第四代微處理機 以Intel公司1984年10月推出的80386CPU和1989年4月推出的80486CPU為代表,     第五代微處理機的發(fā)展更加迅猛,1993年3月被命名為PENTIUM的微處理機面世,98年P(guān)ENTIUM 2又被推向市場。 INTEL CPU 發(fā)展歷史Intel第一塊CPU 4004,4位主理器,主頻108kHz,運算速度0.06MIPs(Million Instructions Per Second, 每秒百萬條指令),集成晶體管2,300個,10微米制造工藝,最大尋址內(nèi)存640 bytes,生產(chǎn)曰期1971年11月. 8085,8位主理器,主頻5M,運算速度0.37MIPs,集成晶體管6,500個,3微米制造工藝,最大尋址內(nèi)存64KB,生產(chǎn)曰期1976年 8086,16位主理器,主頻4.77/8/10MHZ,運算速度0.75MIPs,集成晶體管29,000個,3微米制造工藝,最大尋址內(nèi)存1MB,生產(chǎn)曰期1978年6月. 80486DX,DX2,DX4,32位主理器,主頻25/33/50/66/75/100MHZ,總線頻率33/50/66MHZ,運算速度20~60MIPs,集成晶體管1.2M個,1微米制造工藝,168針PGA,最大尋址內(nèi)存4GB,緩存8/16/32/64KB,生產(chǎn)曰期1989年4月 Celeron一代, 主頻266/300MHZ(266/300MHz w/o L2 cache, Covington芯心 (Klamath based),300A/333/366/400/433/466/500/533MHz w/128kB L2 cache, Mendocino核心 (Deschutes-based), 總線頻率66MHz,0.25微米制造工藝,生產(chǎn)曰期1998年4月) Pentium 4 (478針),至今分為三種核心:Willamette核心(主頻1.5G起,FSB400MHZ,0.18微米制造工藝),Northwood核心(主頻1.6G~3.0G,FSB533MHZ,0.13微米制造工藝, 二級緩存512K),Prescott核心(主頻2.8G起,FSB800MHZ,0.09微米制造工藝,1M二級緩存,13條全新指令集SSE3),生產(chǎn)曰期2001年7月. 更大的緩存、更高的頻率、 超級流水線、分支預(yù)測、亂序執(zhí)行超線程技術(shù) 微型計算機組成結(jié)構(gòu)單片機簡介單片機即單片機微型計算機,是將計算機主機(CPU、    內(nèi)存和I/O接口)集成在一小塊硅片上的微型機。 三、計算機編程語言的發(fā)展概況 機器語言  機器語言就是0,1碼語言,是計算機唯一能理解并直接執(zhí)行的語言。匯編語言  用一些助記符號代替用0,1碼描述的某種機器的指令系統(tǒng),匯編語言就是在此基礎(chǔ)上完善起來的。高級語言  BASIC,PASCAL,C語言等等。用高級語言編寫的程序稱源程序,它們必須通過編譯或解釋,連接等步驟才能被計算機處理。 面向?qū)ο笳Z言  C++,Java等編程語言是面向?qū)ο蟮恼Z言。 1.3 微型計算機中信息的表示及運算基礎(chǔ)(一) 十進制ND有十個數(shù)碼:0~9,逢十進一。 例 1234.5=1×103 +2×102 +3×101 +4×100 +5×10-1加權(quán)展開式以10稱為基數(shù),各位系數(shù)為0~9,10i為權(quán)。 一般表達式:ND= dn-1×10n-1+dn-2×10n-2 +…+d0×100 +d-1×10-1+… (二) 二進制NB兩個數(shù)碼:0、1, 逢二進一。 例 1101.101=1×23+1×22+0×21+1×20+1×2-1+1×2-3 加權(quán)展開式以2為基數(shù),各位系數(shù)為0、1, 2i為權(quán)。 一般表達式:  NB = bn-1×2n-1 + bn-2×2n-2 +…+b0×20 +b-1×2-1+… (三)十六進制NH十六個數(shù)碼0~9、A~F,逢十六進一。 例:DFC.8=13×162 +15×161 +12×160 +8×16-1 展開式以十六為基數(shù),各位系數(shù)為0~9,A~F,16i為權(quán)。 一般表達式: NH= hn-1×16n-1+ hn-2×16n-2+…+ h0×160+ h-1×16-1+… 二、不同進位計數(shù)制之間的轉(zhuǎn)換 (二)二進制與十六進制數(shù)之間的轉(zhuǎn)換  24=16 ,四位二進制數(shù)對應(yīng)一位十六進制數(shù)。舉例:(三)十進制數(shù)轉(zhuǎn)換成二、十六進制數(shù)整數(shù)、小數(shù)分別轉(zhuǎn)換   1.整數(shù)轉(zhuǎn)換法“除基取余”:十進制整數(shù)不斷除以轉(zhuǎn)換進制基數(shù),直至商為0。每除一次取一個余數(shù),從低位排向高位。舉例: 2. 小數(shù)轉(zhuǎn)換法“乘基取整”:用轉(zhuǎn)換進制的基數(shù)乘以小數(shù)部分,直至小數(shù)為0或達到轉(zhuǎn)換精度要求的位數(shù)。每乘一次取一次整數(shù),從最高位排到最低位。舉例:  三、帶符號數(shù)的表示方法 機器數(shù):機器中數(shù)的表示形式。真值: 機器數(shù)所代表的實際數(shù)值。舉例:一個8位機器數(shù)與它的真值對應(yīng)關(guān)系如下:  真值: X1=+84=+1010100B     X2=-84= -1010100B   機器數(shù):[X1]機= 01010100    [X2]機= 11010100(二)原碼、反碼、補碼最高位為符號位,0表示 “+”,1表示“-”。 數(shù)值位與真值數(shù)值位相同。 例  8位原碼機器數(shù):  真值:   x1  = +1010100B     x2    =- 1010100B      機器數(shù): [x1]原  = 01010100  [x2]原 = 11010100原碼表示簡單直觀,但0的表示不唯一,加減運算復(fù)雜。 正數(shù)的反碼與原碼表示相同。       負數(shù)反碼符號位為 1,數(shù)值位為原碼數(shù)值各位取反。 例 8位反碼機器數(shù):          x= +4: [x]原= 00000100 [x]反= 00000100     x= -4: [x]原= 10000100  [x]反= 111110113、補碼(Two’s Complement)正數(shù)的補碼表示與原碼相同。       負數(shù)補碼等于2n-abs(x)8位機器數(shù)表示的真值四、 二進制編碼例:求十進制數(shù)876的BCD碼 876= 1000 0111 0110 BCD  876= 36CH = 1101101100B 2、字符編碼    美國標準信息交換碼ASCII碼,用于計算      機與計算機、計算機與外設(shè)之間傳遞信息。 3、漢字編碼 “國家標準信息交換用漢字編碼”(GB2312-80標準),簡稱國標碼。 用兩個七位二進制數(shù)編碼表示一個漢字 例如“巧”字的代碼是39H、41H漢字內(nèi)碼例如“巧”字的代碼是0B9H、0C1H1·4  運算基礎(chǔ) 一、二進制數(shù)的運算加法規(guī)則:“逢2進1”       減法規(guī)則:“借1當2”       乘法規(guī)則:“逢0出0,全1出1”二、二—十進制數(shù)的加、減運算        BCD數(shù)的運算規(guī)則 循十進制數(shù)的運算規(guī)則“逢10進1”。但計算機在進行這種運算時會出現(xiàn)潛在的錯誤。為了解決BCD數(shù)的運算問題,采取調(diào)整運算結(jié)果的措施:即“加六修正”和“減六修正”例:10001000(BCD)+01101001(BCD)        =000101010111(BCD)                1 0 0 0 1 0 0 0       +  0 1 1 0 1 0 0 1           1 1 1 1 0 0 0 1        +  0 1 1 0 0 1 1 0     ……調(diào)整          1 0 1 0 1 0 1 1 1                                        進位  例:  10001000(BCD)- 01101001(BCD)= 00011001(BCD)                   1 0 0 0 1 0 0 0            -   0 1 1 0 1 0 0 1             0 0 0 1 1 1 1 1         -                    0 1 1 0   ……調(diào)整             0 0 0 1 1 0 0 1  三、 帶符號二進制數(shù)的運算 1.5 幾個重要的數(shù)字邏輯電路編碼器譯碼器計數(shù)器微機自動工作的條件程序指令順序存放自動跟蹤指令執(zhí)行1.6 微機基本結(jié)構(gòu)微機結(jié)構(gòu)各部分組成連接方式1、以CPU為中心的雙總線結(jié)構(gòu);2、以內(nèi)存為中心的雙總線結(jié)構(gòu);3、單總線結(jié)構(gòu)CPU結(jié)構(gòu)管腳特點  1、多功能;2、分時復(fù)用內(nèi)部結(jié)構(gòu)  1、控制; 2、運算; 3、寄存器; 4、地址程序計數(shù)器堆棧定義 1、定義;2、管理;3、堆棧形式

    標簽: 微機原理 接口

    上傳時間: 2013-10-17

    上傳用戶:erkuizhang

主站蜘蛛池模板: 张家港市| 铁力市| 西乡县| 乐至县| 崇阳县| 西盟| 祁阳县| 宜兰市| 宜川县| 宁强县| 巴里| 大田县| 巩留县| 名山县| 宁城县| 博兴县| 个旧市| 南丰县| 巨野县| 平塘县| 尚义县| 平原县| 长武县| 阜新市| 钟祥市| 扶沟县| 丰台区| 平定县| 吉林市| 衡山县| 湟源县| 琼中| 兴业县| 突泉县| 缙云县| 句容市| 巨鹿县| 舞阳县| 吉木萨尔县| 彭水| 平和县|