51單片機(jī)動(dòng)態(tài)LED顯示電路編程實(shí)例:上一節(jié)我們講述了單只LED與單片機(jī)的接口電路及編程實(shí)例,目的在于讓初學(xué)者了解LED在單片機(jī)中的應(yīng)用原理,單只LED顯示在實(shí)際應(yīng)用中并無(wú)多大用途,一般都是多位的LED顯示。現(xiàn)在我們作進(jìn)一步學(xué)習(xí),我們要講解的是8位LED的顯示原理及實(shí)際的編程方法。這里我們沒(méi)有采用多I/O口的8051系列單片機(jī),而是采用了完全兼容C51指令系統(tǒng)的質(zhì)優(yōu)價(jià)廉的AT89C2051單片機(jī),它的軟件編程與C51完全一致。 在多數(shù)的應(yīng)用場(chǎng)合中,我們并不希望使用多I/O端口的單片機(jī),原則上是使用盡量少引腳的器件。在沒(méi)有富余端口的情況下,怎樣通過(guò)擴(kuò)展電路達(dá)到預(yù)期的目的呢?我們希望通過(guò)此例使設(shè)計(jì)人員在實(shí)際應(yīng)用中了解一點(diǎn)電路擴(kuò)展的原理,對(duì)實(shí)際的應(yīng)用有所幫助。 此電路中,74LS273用于驅(qū)動(dòng)LED的8位段碼,8位LED相應(yīng)的"a"—"g"段連在一起,它們的公共端分別連至由74LS138(點(diǎn)擊芯片型號(hào)可瀏覽其詳細(xì)的技術(shù)手冊(cè))譯碼選通后經(jīng)74LS04反相驅(qū)動(dòng)的輸出端。這樣當(dāng)選通某一位LED時(shí),相應(yīng)的地址線(74LS04輸出端)輸出的是高電平,所以我們的LED選用共陽(yáng)LED數(shù)碼管。 動(dòng)態(tài)掃描的頻率有一定的要求,頻率太低,LED將出現(xiàn)閃爍現(xiàn)象。如頻率太高,由于每個(gè)LED點(diǎn)亮的時(shí)間太短,LED的亮度太低,肉眼無(wú)法看清,所以一般均取幾個(gè)ms左右為宜,這就要求在編寫(xiě)程序時(shí),選通某一位LED使其點(diǎn)亮并保持一定的時(shí)間,程序上常采用的是調(diào)用延時(shí)子程序。在C51指令中,延時(shí)子程序是相當(dāng)簡(jiǎn)單的,并且延時(shí)時(shí)間也很容易更改,可參見(jiàn)程序清單中的DELAY延時(shí)子程序。 為簡(jiǎn)單起見(jiàn),我們只是編寫(xiě)了8位LED同步顯示"00000000"—"11111111"直到"99999999"數(shù)字,并且反復(fù)循環(huán)。程序很簡(jiǎn)單,流程圖略去。
標(biāo)簽: LED 51單片機(jī) 動(dòng)態(tài) 顯示電路
上傳時(shí)間: 2013-11-18
上傳用戶:皇族傳媒
如何使用高級(jí)觸發(fā)測(cè)量程序跑飛:LA系列邏輯分析儀內(nèi)部集成了32位的定時(shí)器、32位的計(jì)數(shù)器和高速比較模塊,高效的使用以上模塊資源可以使您的測(cè)量事半功倍。邏輯分析儀在實(shí)際應(yīng)用中主要作用有:1.觀察波形,看看測(cè)量波形中是否存在毛刺、干擾、頻率是否正確等;2.時(shí)序測(cè)量,對(duì)被測(cè)信號(hào)進(jìn)行時(shí)序校對(duì),看看操作時(shí)序是否符合要求。3.輔助分析,利用邏輯分析儀完善的協(xié)議分析功能來(lái)進(jìn)行輔助分析;4.查錯(cuò)功能,利用邏輯分析儀強(qiáng)大的觸發(fā)功能來(lái)進(jìn)行錯(cuò)誤捕獲。當(dāng)單片機(jī)的PC值(程序計(jì)數(shù)器)對(duì)沒(méi)有程序的地方進(jìn)行取指時(shí),稱為程序跑飛。程序跑飛的原因有多種,主要有以下原因:1) 客觀原因:?jiǎn)纹瑱C(jī)受到外界強(qiáng)干擾造成PC值寄存器改變;2)程序Bug:用戶程序調(diào)用函數(shù)指針,對(duì)非程序空間進(jìn)行對(duì)用。以80C51單片機(jī)為例子,當(dāng)程序跑到非用戶程序區(qū)時(shí),單片機(jī)使用PSEN對(duì)外部程序進(jìn)行取指,使用邏輯分析儀可以設(shè)置觸發(fā)條件,當(dāng)使用PSEN對(duì)外部程序進(jìn)行取指時(shí)進(jìn)行記錄,把出錯(cuò)情況前后的狀態(tài)記錄下來(lái)進(jìn)行分析,查找出錯(cuò)原因。如80C51的取指范圍正確為0x0000~0x3fff,則當(dāng)對(duì)0x3fff以上地址進(jìn)行取指時(shí)為程序跑飛。分析80C51對(duì)外部程序取指的時(shí)序,如圖1所示。
標(biāo)簽: 如何使用 觸發(fā) 測(cè)量程序
上傳時(shí)間: 2013-10-11
上傳用戶:panpanpan
地彈的形成:芯片內(nèi)部的地和芯片外的PCB地平面之間不可避免的會(huì)有一個(gè)小電感。這個(gè)小電感正是地彈產(chǎn)生的根源,同時(shí),地彈又是與芯片的負(fù)載情況密切相關(guān)的。下面結(jié)合圖介紹一下地彈現(xiàn)象的形成。 簡(jiǎn)單的構(gòu)造如上圖的一個(gè)小“場(chǎng)景”,芯片A為輸出芯片,芯片B為接收芯片,輸出端和輸入端很近。輸出芯片內(nèi)部的CMOS等輸入單元簡(jiǎn)單的等效為一個(gè)單刀雙擲開(kāi)關(guān),RH和RL分別為高電平輸出阻抗和低電平輸出阻抗,均設(shè)為20歐。GNDA為芯片A內(nèi)部的地。GNDPCB為芯片外PCB地平面。由于芯片內(nèi)部的地要通過(guò)芯片內(nèi)的引線和管腳才能接到GNDPCB,所以就會(huì)引入一個(gè)小電感LG,假設(shè)這個(gè)值為1nH。CR為接收端管腳電容,這個(gè)值取6pF。這個(gè)信號(hào)的頻率取200MHz。雖然這個(gè)LG和CR都是很小的值,不過(guò),通過(guò)后面的計(jì)算我們可以看到它們對(duì)信號(hào)的影響。先假設(shè)A芯片只有一個(gè)輸出腳,現(xiàn)在Q輸出高電平,接收端的CR上積累電荷。當(dāng)Q輸出變?yōu)榈碗娖降臅r(shí)候。CR、RL、LG形成一個(gè)放電回路。自諧振周期約為490ps,頻率為2GHz,Q值約為0.0065。使用EWB建一個(gè)仿真電路。(很老的一個(gè)軟件,很多人已經(jīng)不懈于使用了。不過(guò)我個(gè)人比較依賴它,關(guān)鍵是建模,模型參數(shù)建立正確的話仿真結(jié)果還是很可靠的,這個(gè)小軟件幫我發(fā)現(xiàn)和解決過(guò)很多實(shí)際模擬電路中遇到的問(wèn)題。這個(gè)軟件比較小,有比較長(zhǎng)的歷史,也比較成熟,很容易上手。建議電子初入門(mén)的同學(xué)還是熟悉一下。)因?yàn)橹魂P(guān)注下降沿,所以簡(jiǎn)單的構(gòu)建下面一個(gè)電路。起初輸出高電平,10納秒后輸出低電平。為方便起見(jiàn),高電平輸出設(shè)為3.3V,低電平是0V。(實(shí)際200M以上芯片IO電壓會(huì)比較低,多采用1.5-2.5V。)
標(biāo)簽: 分
上傳時(shí)間: 2013-10-17
上傳用戶:zhishenglu
Keil C51使用詳解:8051 系列微處理器基于簡(jiǎn)化的嵌入式控制系統(tǒng)結(jié)構(gòu)被廣泛應(yīng)用于從軍事到自動(dòng)控制再到PC 機(jī)上的鍵盤(pán)上的各種應(yīng)用系統(tǒng)上僅次于Motorola 68HC11 在 8 位微控制器市場(chǎng)上的銷量很多制造商都可提供8051 系列單片機(jī)像Intel Philips Siemens 等這些制造商給51 系列單片機(jī)加入了大量的性能和外部功能像I2C 總線接口模擬量到數(shù)字量的轉(zhuǎn)換看門(mén)狗PWM 輸出等不少芯片的工作頻率達(dá)到40M 工作電壓下降到1.5V 基于一個(gè)內(nèi)核的這些功能使得8051 單片機(jī)很適合作為廠家產(chǎn)品的基本構(gòu)架它能夠運(yùn)行各種程序而且開(kāi)發(fā)者只需要學(xué)習(xí)這一個(gè)平臺(tái)8051 系列的基本結(jié)構(gòu)如下1 一個(gè)8 位算術(shù)邏輯單元2 32 個(gè)I/O 口4 組8 位端口可單獨(dú)尋址3 兩個(gè)16 位定時(shí)計(jì)數(shù)器4 全雙工串行通信5 6 個(gè)中斷源兩個(gè)中斷優(yōu)先級(jí)6 128 字節(jié)內(nèi)置RAM7 獨(dú)立的64K 字節(jié)可尋址數(shù)據(jù)和代碼區(qū)每個(gè)8051 處理周期包括12 個(gè)振蕩周期每12 個(gè)振蕩周期用來(lái)完成一項(xiàng)操作如取指令和計(jì)算指令執(zhí)行時(shí)間可把時(shí)鐘頻率除以12 取倒數(shù)然后指令執(zhí)行所須的周期數(shù)因此如果你的系統(tǒng)時(shí)鐘是11.059MHz 除以12 后就得到了每秒執(zhí)行的指令個(gè)數(shù)為921583
上傳時(shí)間: 2014-04-05
上傳用戶:xaijhqx
用單片機(jī)制作多功能莫爾斯碼電路:用單片機(jī)制作多功能莫爾斯碼電路莫爾斯電碼通信有著悠久的歷史,盡管它已被現(xiàn)代通信方式所取代,但在業(yè)余無(wú)線電通信和特殊的專業(yè)場(chǎng)合仍具有重要的地位,這是因?yàn)榈确姶a通信的抗干擾能力是其它任何一種通信方式都無(wú)法相比的。在短波波段用幾瓦的功率即可進(jìn)行國(guó)際間的通信,收發(fā)射設(shè)備簡(jiǎn)單易制成本低廉,所以深受業(yè)余無(wú)線電愛(ài)好者的喜愛(ài),是業(yè)余無(wú)線電高手必備的技能。要想熟練掌握莫爾斯電碼的收發(fā)技術(shù)除了持之以恒的毅力外,還需要相關(guān)的設(shè)備。設(shè)計(jì)本電路的目的就是給愛(ài)好者提供一個(gè)實(shí)用和訓(xùn)練的工具。 一、功能簡(jiǎn)介 本電路可以配合自動(dòng)鍵體和手動(dòng)鍵體,產(chǎn)生莫爾斯碼控制信號(hào),設(shè)有16種速度,從初學(xué)者到操作高手都能適用。監(jiān)聽(tīng)音調(diào)也有16種,均可以通過(guò)功能鍵進(jìn)行選擇。可以按程序中設(shè)定好的呼號(hào)自動(dòng)呼叫,設(shè)有聽(tīng)抄練習(xí)功能,聽(tīng)抄練習(xí)有短碼和混合碼兩種模式,分別對(duì)10個(gè)數(shù)字和常用的38個(gè)混合碼模擬隨機(jī)取樣,產(chǎn)生分組報(bào)碼,供愛(ài)好者提高抄收水平之用,速度低4檔的聽(tīng)抄練習(xí)是專為初學(xué)者所設(shè),內(nèi)容是時(shí)間間隔較長(zhǎng)的單字符。設(shè)有PTT開(kāi)關(guān)鍵,可以決定是否控制發(fā)射機(jī)工作,不需要反復(fù)通斷控制線。無(wú)論當(dāng)前處于呼叫狀態(tài)還是聽(tīng)抄狀態(tài)只要電鍵接點(diǎn)接通則自動(dòng)轉(zhuǎn)到人工發(fā)報(bào)程序。4分鐘內(nèi)不使用電路將自動(dòng)關(guān)閉電源,只有按復(fù)位鍵才能重新開(kāi)始工作。先按住聽(tīng)抄練習(xí)鍵復(fù)位則進(jìn)入短碼練習(xí)狀態(tài),其它功能不變。從開(kāi)機(jī)到自動(dòng)關(guān)機(jī)執(zhí)行每個(gè)功能都有不同的莫爾斯碼提示音。本電路具有較強(qiáng)的抗高低頻干擾的能力和使用方便的大電流開(kāi)關(guān)接口,以適應(yīng)不同的發(fā)射設(shè)備。 二、硬件電路原理硬件電路如圖1所示。設(shè)計(jì)電路的目的在于方便實(shí)用,以免在緊張的操作中失誤,所以除了聽(tīng)抄練習(xí)鍵外其它鍵沒(méi)有定義復(fù)用功能。各鍵的作用在圖中已經(jīng)標(biāo)出。PTT控制在每次復(fù)位時(shí)處于關(guān)閉狀態(tài),每按動(dòng)一次PTT功能鍵則改變一次狀態(tài),這樣可以使用軟件開(kāi)關(guān)控制發(fā)射。 PTT處于控制狀態(tài)時(shí)發(fā)光二極管隨控制信號(hào)閃亮。考慮到自制設(shè)備及淘汰軍用設(shè)備與高檔設(shè)備控制電流的不同,PTT開(kāi)關(guān)管采用了2SC2073,可以承受500mA的電流,同時(shí)還增加了無(wú)極性PTT開(kāi)關(guān)電路,無(wú)論外部被控制的端口直流極性如何加到VT3的極性始終不變,供有興趣的愛(ài)好者實(shí)驗(yàn)。應(yīng)該注意,如果被控制的負(fù)載是感性,則電感兩端必須并聯(lián)續(xù)流二極管,除自制設(shè)備外成品機(jī)在這方面一般沒(méi)有什么問(wèn)題。手動(dòng)鍵只有一個(gè)接點(diǎn),接通后產(chǎn)生連續(xù)的音頻和發(fā)射控制信號(hào)。在本電路中手動(dòng)鍵的輸入端是P1.5 ,程序不斷檢測(cè)P1.5電平,當(dāng)按鍵按下時(shí)P1.5電平為0,程序轉(zhuǎn)入手動(dòng)鍵子程序。 自動(dòng)鍵的接點(diǎn)分別接到P1.3和P1.4 ,同樣當(dāng)程序檢測(cè)到有接點(diǎn)閉合時(shí)便自動(dòng)產(chǎn)生“點(diǎn)”或“劃”。音頻信號(hào)從P輸出,經(jīng)VT1放大后推動(dòng)揚(yáng)聲器發(fā)音。單片機(jī)的I/O口在輸入狀態(tài)下阻抗較高,容易受到高低頻信號(hào)干擾,所以在每個(gè)輸入端口和三極管的be端并聯(lián)電阻和高頻旁路電容,確保在較長(zhǎng)的電鍵連線和大功率發(fā)射時(shí)電路工作穩(wěn)定。圖2是印刷電路版圖,尺寸為110mmX85mm,揚(yáng)聲器用粘合劑直接粘接在電路版有銅箔的面。 三、軟件設(shè)計(jì)方法 “點(diǎn)”時(shí)間長(zhǎng)度是莫爾斯電碼中的基本時(shí)間單位。按規(guī)定“劃”的時(shí)間長(zhǎng)度不小于三個(gè)“點(diǎn)”,同字符中“點(diǎn)”與“劃”的間隔不小于一個(gè)“點(diǎn)”,字符之間不小于一個(gè)“劃”,詞與詞之間不應(yīng)小于五個(gè)“點(diǎn)”。在本程序中用條件轉(zhuǎn)移指令來(lái)產(chǎn)生“點(diǎn)”時(shí)間長(zhǎng)度。通過(guò)速度功能鍵功可以設(shè)置16種延時(shí)參數(shù)。用T0中斷產(chǎn)生監(jiān)聽(tīng)音頻信號(hào),并將中斷設(shè)為優(yōu)先級(jí),保證在聽(tīng)覺(jué)上純正悅耳。T1用于自動(dòng)關(guān)機(jī)計(jì)時(shí),如果不使用任何功能四分鐘后將向PCON 位寫(xiě)1,單片機(jī)進(jìn)入休眠狀態(tài),此時(shí)耗電量?jī)H有幾個(gè)微安。自動(dòng)鍵的“點(diǎn)”或“劃”以及手動(dòng)鍵的連續(xù)發(fā)音都是子程序的反復(fù)調(diào)用。P1.2對(duì)地短接時(shí)自動(dòng)呼叫可設(shè)定為另一內(nèi)容。為了便于熟悉匯編語(yǔ)言的讀者對(duì)發(fā)音內(nèi)容進(jìn)行修改,這里介紹發(fā)音字符的編碼方法。莫爾斯碼的信息與計(jì)算機(jī)中二進(jìn)制恰好相同,我們可以用0表示“點(diǎn)”,用1表示“劃”。提示音、自動(dòng)呼叫、聽(tīng)抄內(nèi)容等字符是預(yù)先按一定編碼方式存儲(chǔ)在程序中的常數(shù)。每個(gè)字符的莫爾斯碼一般是由1至6位“點(diǎn)”、“劃”組成,也就是發(fā)音次數(shù)最多6次。程序中每個(gè)字符占用1個(gè)字節(jié),字符時(shí)間間隔不占用字節(jié),但更長(zhǎng)的延時(shí)或發(fā)音結(jié)束信息占用一個(gè)字節(jié)。我們用字節(jié)的低三位表示字節(jié)的性質(zhì),對(duì)于5次及5次以下發(fā)音的字符我們用存儲(chǔ)器的高5位存儲(chǔ)發(fā)音信息,發(fā)音順序由高位至低位,用低3位存儲(chǔ)發(fā)音次數(shù),發(fā)音時(shí)將數(shù)據(jù)送入累加器A,先得到發(fā)音次數(shù),然后使A左環(huán)移,對(duì)E0進(jìn)行位尋址,判斷是發(fā)“點(diǎn)”還是“劃”,環(huán)移次數(shù)由發(fā)音次數(shù)決定。對(duì)于6次發(fā)音的字符不能完全按照上述編碼規(guī)則,否則會(huì)出現(xiàn)信息重疊,如果是6次發(fā)音且最后一次是“劃”我們把發(fā)音次數(shù)定義為111B,因?yàn)檫@時(shí)第6次位尋址得到的是1。如果第6次發(fā)音是“點(diǎn)”,那么這個(gè)字符的低三位定義為000B。字符間隔時(shí)間由程序自動(dòng)產(chǎn)生,更長(zhǎng)的時(shí)間隔或結(jié)束標(biāo)志由字節(jié)低三位110B來(lái)定義,高半字節(jié)表示字符間隔的倍數(shù),例如26H表示再加兩倍時(shí)間間隔。如果字節(jié)為06H則表示讀字符程序結(jié)束,返回主程序。更詳細(xì)的內(nèi)容不再贅述,讀者可閱讀源程序。四、使用注意事項(xiàng)手動(dòng)鍵的操作難度相對(duì)大一些,時(shí)間節(jié)拍全由人掌握,其特點(diǎn)是發(fā)出的電碼帶有“人情味”。自動(dòng)鍵的“點(diǎn)”、“劃”靠電路產(chǎn)生,發(fā)音標(biāo)準(zhǔn),容易操作,而且可以達(dá)到相當(dāng)快的速度,長(zhǎng)時(shí)間工作也不易疲勞。在干擾較大、信號(hào)微弱的條件下自動(dòng)鍵碼的辨別程度好于手動(dòng)鍵碼。初學(xué)者初次使用手動(dòng)鍵練習(xí)發(fā)報(bào)要有老師指導(dǎo),且不可我行我素,一旦養(yǎng)成不正確的手法則很難糾正。在電臺(tái)上時(shí)常聽(tīng)到一些讓對(duì)方難以抄收的電碼,這可能會(huì)使對(duì)方反感而拒絕回答。使用自動(dòng)鍵也應(yīng)在一定的聽(tīng)抄基礎(chǔ)上再去練習(xí)。在暫時(shí)找不老師的情況下可多練習(xí)聽(tīng)力,這對(duì)于今后能夠發(fā)出標(biāo)準(zhǔn)正確的電碼非常有益。
上傳時(shí)間: 2013-10-31
上傳用戶:sdq_123
家電制造業(yè)的競(jìng)爭(zhēng)日益激烈,市場(chǎng)調(diào)整壓力越來(lái)越大,原始設(shè)備制造商們(OEM)為了面對(duì)這一挑戰(zhàn),必須在滿足電磁兼容性的條件下,不斷降低產(chǎn)品的成本。由于強(qiáng)調(diào)成本控制,為防止由電源和信號(hào)線的瞬變所產(chǎn)生的電器故障而實(shí)施必要的瞬態(tài)免疫保護(hù),對(duì)于家電設(shè)計(jì)者來(lái)說(shuō)變得更具挑戰(zhàn)性。由于傳統(tǒng)的電源設(shè)計(jì)和電磁干擾(EMI)控制措施為節(jié)約成本讓路,家電設(shè)計(jì)者必須開(kāi)發(fā)出新的技術(shù)來(lái)滿足不斷調(diào)整的電磁兼容(EMC)需求。本應(yīng)用筆記探討了瞬態(tài)電氣干擾對(duì)嵌入式微控制器(MCU)的影響,并提供了切實(shí)可行的硬件和軟件設(shè)計(jì)技術(shù),這些技術(shù)可以為電快速瞬變(EFT)、靜電放電(ESD)以及其它電源線或信號(hào)線的短時(shí)瞬變提供低成本的保護(hù)措施。雖然這種探討是主要針對(duì)家電制造商,但是也適用于消費(fèi)電子、工業(yè)以及汽車電子方面的應(yīng)用。 低成本的基于MCU 的嵌入式應(yīng)用特別容易受到ESD 和EFT 影響降低性能。即使是運(yùn)行在較低時(shí)鐘頻率下的微控制器,通常對(duì)快速上升時(shí)間瞬變也很敏感。這種敏感性歸咎于所使用的工藝技術(shù)。如今針對(duì)低成本8/16位的MCU的半導(dǎo)體工藝技術(shù)所實(shí)現(xiàn)的晶體管柵極長(zhǎng)度在0.65 μm~0.25 μm范圍內(nèi)。此范圍內(nèi)的柵極長(zhǎng)度能產(chǎn)生和響應(yīng)上升時(shí)間在次納秒范圍內(nèi)(或超過(guò)300 MHz 的等同帶寬)的信號(hào)。因此, MCU 能夠響應(yīng)進(jìn)入其引腳的ESD 或EFT 信號(hào)。除上述工藝技術(shù)之外, MCU 在ESD 或EFT 事件中的性能還會(huì)受到IC 設(shè)計(jì)及其封裝、印刷電路板(PCB)的設(shè)計(jì)、MCU 上運(yùn)行的軟件、系統(tǒng)設(shè)計(jì)以及ESD 或EFT 波形特征的影響。各因素的相對(duì)影響(強(qiáng)調(diào)對(duì)最大影響的貢獻(xiàn))如圖1 所示。
上傳時(shí)間: 2013-11-09
上傳用戶:Jerry_Chow
P C B 可測(cè)性設(shè)計(jì)布線規(guī)則之建議― ― 從源頭改善可測(cè)率PCB 設(shè)計(jì)除需考慮功能性與安全性等要求外,亦需考慮可生產(chǎn)與可測(cè)試。這里提供可測(cè)性設(shè)計(jì)建議供設(shè)計(jì)布線工程師參考。1. 每一個(gè)銅箔電路支點(diǎn),至少需要一個(gè)可測(cè)試點(diǎn)。如無(wú)對(duì)應(yīng)的測(cè)試點(diǎn),將可導(dǎo)致與之相關(guān)的開(kāi)短路不可檢出,并且與之相連的零件會(huì)因無(wú)測(cè)試點(diǎn)而不可測(cè)。2. 雙面治具會(huì)增加制作成本,且上針板的測(cè)試針定位準(zhǔn)確度差。所以Layout 時(shí)應(yīng)通過(guò)Via Hole 盡可能將測(cè)試點(diǎn)放置于同一面。這樣就只要做單面治具即可。3. 測(cè)試選點(diǎn)優(yōu)先級(jí):A.測(cè)墊(Test Pad) B.通孔(Through Hole) C.零件腳(Component Lead) D.貫穿孔(Via Hole)(未Mask)。而對(duì)于零件腳,應(yīng)以AI 零件腳及其它較細(xì)較短腳為優(yōu)先,較粗或較長(zhǎng)的引腳接觸性誤判多。4. PCB 厚度至少要62mil(1.35mm),厚度少于此值之PCB 容易板彎變形,影響測(cè)點(diǎn)精準(zhǔn)度,制作治具需特殊處理。5. 避免將測(cè)點(diǎn)置于SMT 之PAD 上,因SMT 零件會(huì)偏移,故不可靠,且易傷及零件。6. 避免使用過(guò)長(zhǎng)零件腳(>170mil(4.3mm))或過(guò)大的孔(直徑>1.5mm)為測(cè)點(diǎn)。7. 對(duì)于電池(Battery)最好預(yù)留Jumper,在ICT 測(cè)試時(shí)能有效隔離電池的影響。8. 定位孔要求:(a) 定位孔(Tooling Hole)直徑最好為125mil(3.175mm)及其以上。(b) 每一片PCB 須有2 個(gè)定位孔和一個(gè)防呆孔(也可說(shuō)成定位孔,用以預(yù)防將PCB反放而導(dǎo)致機(jī)器壓破板),且孔內(nèi)不能沾錫。(c) 選擇以對(duì)角線,距離最遠(yuǎn)之2 孔為定位孔。(d) 各定位孔(含防呆孔)不應(yīng)設(shè)計(jì)成中心對(duì)稱,即PCB 旋轉(zhuǎn)180 度角后仍能放入PCB,這樣,作業(yè)員易于反放而致機(jī)器壓破板)9. 測(cè)試點(diǎn)要求:(e) 兩測(cè)點(diǎn)或測(cè)點(diǎn)與預(yù)鉆孔之中心距不得小于50mil(1.27mm),否則有一測(cè)點(diǎn)無(wú)法植針。以大于100mil(2.54mm)為佳,其次是75mil(1.905mm)。(f) 測(cè)點(diǎn)應(yīng)離其附近零件(位于同一面者)至少100mil,如為高于3mm 零件,則應(yīng)至少間距120mil,方便治具制作。(g) 測(cè)點(diǎn)應(yīng)平均分布于PCB 表面,避免局部密度過(guò)高,影響治具測(cè)試時(shí)測(cè)試針壓力平衡。(h) 測(cè)點(diǎn)直徑最好能不小于35mil(0.9mm),如在上針板,則最好不小于40mil(1.00mm),圓形、正方形均可。小于0.030”(30mil)之測(cè)點(diǎn)需額外加工,以導(dǎo)正目標(biāo)。(i) 測(cè)點(diǎn)的Pad 及Via 不應(yīng)有防焊漆(Solder Mask)。(j) 測(cè)點(diǎn)應(yīng)離板邊或折邊至少100mil。(k) 錫點(diǎn)被實(shí)踐證實(shí)是最好的測(cè)試探針接觸點(diǎn)。因?yàn)殄a的氧化物較輕且容易刺穿。以錫點(diǎn)作測(cè)試點(diǎn),因接觸不良導(dǎo)致誤判的機(jī)會(huì)極少且可延長(zhǎng)探針使用壽命。錫點(diǎn)尤其以PCB 光板制作時(shí)的噴錫點(diǎn)最佳。PCB 裸銅測(cè)點(diǎn),高溫后已氧化,且其硬度高,所以探針接觸電阻變化而致測(cè)試誤判率很高。如果裸銅測(cè)點(diǎn)在SMT 時(shí)加上錫膏再經(jīng)回流焊固化為錫點(diǎn),雖可大幅改善,但因助焊劑或吃錫不完全的緣故,仍會(huì)出現(xiàn)較多的接觸誤判。
標(biāo)簽: PCB 可測(cè)性設(shè)計(jì) 布線規(guī)則
上傳時(shí)間: 2014-01-14
上傳用戶:cylnpy
有兩種方式可以讓設(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)的第一步就是打開(kāi)一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開(kāi)一個(gè)設(shè)備的句柄為了打開(kāi)一個(gè)設(shè)備,應(yīng)用程序需要使用CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開(kāi)句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開(kāi)一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開(kāi)它。有關(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è)輸出接口打開(kāi)句柄用這種方式打開(kāi)一個(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)打開(kā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)沒(méi)有任何用戶級(jí)和核心級(jí)的對(duì)文件對(duì)象的訪問(wèn)的時(shí)候,I/O管理器調(diào)用Close。如果被打開(kāi)的設(shè)備不支持指定的功能,則調(diào)用相應(yīng)的Win32將引起錯(cuò)誤(無(wú)效功能)。以前為Windows95編寫(xiě)的VxD的應(yīng)用程序代碼中可能會(huì)在打開(kāi)設(shè)備的時(shí)候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個(gè)屬性,因?yàn)樗鼘?dǎo)致沒(méi)有特權(quán)的用戶企圖打開(kāi)這個(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ū)并沒(méi)有被鎖住而且地址只對(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ì)緩沖的寫(xiě)訪問(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
自制一臺(tái)ATMEL 89系列FLASH單片機(jī)編程器學(xué)習(xí)單片機(jī)最有用的恐怕是編程器和仿真機(jī),一臺(tái)商品化的編程器至少要幾百元,仿真機(jī)價(jià)格更高,往往讓初學(xué)者難以選擇。這里介紹的一款國(guó)外電子網(wǎng)站推出的廉價(jià)51編程器,能夠讀寫(xiě)最常用的12種51單片機(jī),自己動(dòng)手裝配一臺(tái),既能鍛煉自己的動(dòng)手能力,又能廉價(jià)地裝備一臺(tái)多用編程器,無(wú)論是學(xué)習(xí)單片機(jī)或業(yè)余時(shí)間搞開(kāi)發(fā),都是一個(gè)非常好的選擇。筆者按照資料自制了一臺(tái),十分好用,不敢獨(dú)享。特編譯了全部制作資料介紹給大家。這個(gè)編程器硬件使用標(biāo)準(zhǔn)的TTL系列器件而沒(méi)有使用特殊元件。它連接在計(jì)算機(jī)的并行端口,對(duì)PC的并口沒(méi)有特殊要求,所以配置很低的計(jì)算機(jī)也能用這個(gè)編程器。Atmel Flash 系列單片機(jī)是當(dāng)前最流行的單片機(jī),易于擦寫(xiě),不象OTP芯片容易造成浪費(fèi)。特別是89系列單片機(jī)與大家熟悉的INTEL51系列單片機(jī)完全兼容,這個(gè)編程器支持的單片機(jī)主要是Atmel flash系列。支持的器件: 這個(gè)編程器支持以下ATMEL單片機(jī)AT89C51,AT89C52,AT89C55,AT89S51,AT89S52,AT89S53,AT89C51RC,AT89C55WD,AT89S8252,AT89C1051U,AT89C2051,AT89C4051注意:20腳的單片機(jī)需要一個(gè)簡(jiǎn)單的適配器。(圖 2 ) 硬件: 圖1顯示了這個(gè)FLASH 編程器的電路圖,編程器和標(biāo)準(zhǔn)的計(jì)算機(jī)并口連接。電路圖中的U2是用于控制計(jì)算機(jī)和控制器之間的數(shù)據(jù)流,U4 鎖存低位地址字節(jié) ,U5 鎖存高位地址字節(jié) ,U3用于產(chǎn)生控制信號(hào)給被編程的單片機(jī)。IC U1用于產(chǎn)生編程脈沖給單片機(jī).當(dāng)U7提供編程電壓給控制器時(shí),電源部分用U8產(chǎn)生邏輯5v供給。IC U6用于產(chǎn)生5V或6.5V VDD 電源電壓給單片機(jī)。
標(biāo)簽: ATMEL FLASH 單片機(jī)編程器
上傳時(shí)間: 2013-10-18
上傳用戶:bakdesec
學(xué)習(xí)單片機(jī)最有用的恐怕是編程器和仿真機(jī),一臺(tái)商品化的編程器至少要幾百元,仿真機(jī)價(jià)格更高,往往讓初學(xué)者難以選擇。這里介紹的一款國(guó)外電子網(wǎng)站推出的廉價(jià)51編程器,能夠讀寫(xiě)最常用的12種51單片機(jī),自己動(dòng)手裝配一臺(tái),既能鍛煉自己的動(dòng)手能力,又能廉價(jià)地裝備一臺(tái)多用編程器,無(wú)論是學(xué)習(xí)單片機(jī)或業(yè)余時(shí)間搞開(kāi)發(fā),都是一個(gè)非常好的選擇。筆者按照資料自制了一臺(tái),十分好用,不敢獨(dú)享。特編譯了全部制作資料介紹給大家。這個(gè)編程器硬件使用標(biāo)準(zhǔn)的TTL系列器件而沒(méi)有使用特殊元件。它連接在計(jì)算機(jī)的并行端口,對(duì)PC的并口沒(méi)有特殊要求,所以配置很低的計(jì)算機(jī)也能用這個(gè)編程器。Atmel Flash 系列單片機(jī)是當(dāng)前最流行的單片機(jī),易于擦寫(xiě),不象OTP芯片容易造成浪費(fèi)。特別是89系列單片機(jī)與大家熟悉的INTEL51系列單片機(jī)完全兼容,這個(gè)編程器支持的單片機(jī)主要是Atmel flash系列。
上傳時(shí)間: 2013-12-18
上傳用戶:xyipie
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1