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

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

鍵盤(pán)顯示

  • 電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)

    電子密碼鎖的設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?nbsp;1.進(jìn)一步掌握鍵盤掃描和LED顯示的程序設(shè)計(jì)。 2.了解按鍵消抖的方法。 3.綜合運(yùn)用微機(jī)原理的軟硬件知識。 二、實(shí)驗(yàn)內(nèi)容與要求 1.基本要求 (1)具有密碼輸入功能,密碼最多為6位;(2)設(shè)置退格鍵,以便刪除輸入錯(cuò)誤的密碼;(3)在輸入的密碼時(shí)數(shù)碼管上只顯示8,并根據(jù)輸入位數(shù)依次橫移;(4)設(shè)置確認(rèn)鍵,當(dāng)確認(rèn)鍵按下后,判斷輸入密碼是否正確;(5)當(dāng)輸入密碼正確時(shí),點(diǎn)亮發(fā)光二極管;當(dāng)輸入密碼不正確時(shí),發(fā)光二極管不亮并且蜂鳴器報(bào)警,重新輸入,當(dāng)三次密碼輸入不正確時(shí),系統(tǒng)應(yīng)鎖定鍵盤10s。2.提高要求 將用戶分為管理者和使用者,管理者擁有超級密碼,可以修改其他人的密碼。使用者不能修改密碼。 三、實(shí)驗(yàn)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡要說明 4.軟件設(shè)計(jì)框圖及程序清單5.設(shè)計(jì)結(jié)果和體會(包括遇到的問題及解決的方法) 四、總體設(shè)計(jì) 電子密碼鎖的原理是:從鍵盤輸入一組密碼,CPU把該密碼和設(shè)置密碼比較,對則將鎖打開(不同鎖的控制方式不一樣,比如加電控制電磁鐵抽回,從而打開),錯(cuò)則要求重新輸入,并記錄錯(cuò)誤次數(shù),如果三次錯(cuò)誤,則被強(qiáng)制鎖定并報(bào)警,除非超級密碼或者其他的手段打開,比如延時(shí)一段時(shí)間。 初步設(shè)計(jì)思路如下: 1.輸入密碼用矩形鍵盤,包括數(shù)字鍵和功能鍵,功能鍵包括退格鍵和確認(rèn)鍵。 2.LED數(shù)碼管顯示輸入密碼,但是只是輸出顯示符號8 。采用動態(tài)掃描輸出。 3.用發(fā)光二極管模擬鎖的情況,鎖關(guān)時(shí)發(fā)光二極管滅,打開時(shí)發(fā)光二極管亮。 4.輸入密碼錯(cuò)誤時(shí)報(bào)警,3次輸入錯(cuò)誤時(shí)鍵盤鎖定10s,鍵盤無法接收數(shù)據(jù)。 軟件的設(shè)計(jì)主要包括矩形鍵盤鍵值的讀取、LED動態(tài)掃描輸出程序、密碼判斷程序和報(bào)警程序。   五、硬件設(shè)計(jì) 根據(jù)設(shè)計(jì)思路,硬件電路可通過實(shí)驗(yàn)平臺上的一些功能模塊電路組成,由于實(shí)驗(yàn)平臺上的各個(gè)功能模塊已經(jīng)設(shè)計(jì)好,用戶在使用時(shí)只要設(shè)計(jì)模塊間電路的連接,因此,硬件電路的設(shè)計(jì)及實(shí)現(xiàn)相對簡單。完整系統(tǒng)的硬件連接如圖1所示。硬件電路由LED數(shù)碼管顯示模塊、按鍵模塊、發(fā)光二極管電路和蜂鳴器模塊組成。各個(gè)模塊的詳細(xì)說明:1.LED數(shù)碼管模塊實(shí)驗(yàn)平臺上提供一組六個(gè)LED數(shù)碼管。插孔CS1用于數(shù)碼管段選的輸出選通,插孔CS2用于數(shù)碼管位選信號的輸出選通。本設(shè)計(jì)用6個(gè)數(shù)碼管來動態(tài)顯示時(shí)分秒,動態(tài)顯示的定時(shí)時(shí)間由8253定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)。8253主要是實(shí)現(xiàn)每位顯示時(shí)間1ms,由8253的計(jì)數(shù)器0來實(shí)現(xiàn)。Clk0接實(shí)驗(yàn)平臺分頻電路輸出Q6,f=46875hz。GATE0接8255的PA0,由8255的PA0輸出來控制計(jì)數(shù)器的起停。OUT0接8259的IRQ2,定時(shí)完成請求中斷,進(jìn)入中斷服務(wù)程序。軟件在中斷服務(wù)程序中LED數(shù)碼管顯示。

    標(biāo)簽: 電子密碼鎖

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

    上傳用戶:15070202241

  • PC機(jī)之間串口通信的實(shí)現(xiàn)

    PC機(jī)之間串口通信的實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?nbsp;1.熟悉微機(jī)接口實(shí)驗(yàn)裝置的結(jié)構(gòu)和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.學(xué)會串行通信程序的編制方法。 二、實(shí)驗(yàn)內(nèi)容與要求 1.基本要求主機(jī)接收開關(guān)量輸入的數(shù)據(jù)(二進(jìn)制或十六進(jìn)制),從鍵盤上按“傳輸”鍵(可自行定義),就將該數(shù)據(jù)通過8251A傳輸出去。終端接收后在顯示器上顯示數(shù)據(jù)。具體操作說明如下:(1)出現(xiàn)提示信息“start with R in the board!”,通過調(diào)整乒乓開關(guān)的狀態(tài),設(shè)置8位數(shù)據(jù);(2)在小鍵盤上按“R”鍵,系統(tǒng)將此時(shí)乒乓開關(guān)的狀態(tài)讀入計(jì)算機(jī)I中,并顯示出來,同時(shí)顯示經(jīng)串行通訊后,計(jì)算機(jī)II接收到的數(shù)據(jù);(3)完成后,系統(tǒng)提示“do you want to send another data? Y/N”,根據(jù)用戶需要,在鍵盤按下“Y”鍵,則重復(fù)步驟(1),進(jìn)行另一數(shù)據(jù)的通訊;在鍵盤按除“Y”鍵外的任意鍵,將退出本程序。2.提高要求 能夠進(jìn)行出錯(cuò)處理,例如采用奇偶校驗(yàn),出錯(cuò)重傳或者采用接收方回傳和發(fā)送方確認(rèn)來保證發(fā)送和接收正確。 三、設(shè)計(jì)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡要說明 4.軟件設(shè)計(jì)框圖及程序清單5.設(shè)計(jì)結(jié)果和體會(包括遇到的問題及解決的方法) 四、8251A通用串行輸入/輸出接口芯片由于CPU與接口之間按并行方式傳輸,接口與外設(shè)之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發(fā)送移位寄存器”(并→串)。能夠完成上述“串←→并”轉(zhuǎn)換功能的電路,通常稱為“通用異步收發(fā)器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A異步工作方式:如果8251A編程為異步方式,在需要發(fā)送字符時(shí),必須首先設(shè)置TXEN和CTS#為有效狀態(tài),TXEN(Transmitter Enable)是允許發(fā)送信號,是命令寄存器中的一位;CTS#(Clear To Send)是由外設(shè)發(fā)來的對CPU請求發(fā)送信號的響應(yīng)信號。然后就開始發(fā)送過程。在發(fā)送時(shí),每當(dāng)CPU送往發(fā)送緩沖器一個(gè)字符,發(fā)送器自動為這個(gè)字符加上1個(gè)起始位,并且按照編程要求加上奇/偶校驗(yàn)位以及1個(gè)、1.5個(gè)或者2個(gè)停止位。串行數(shù)據(jù)以起始位開始,接著是最低有效數(shù)據(jù)位,最高有效位的后面是奇/偶校驗(yàn)位,然后是停止位。按位發(fā)送的數(shù)據(jù)是以發(fā)送時(shí)鐘TXC的下降沿同步的,也就是說這些數(shù)據(jù)總是在發(fā)送時(shí)鐘TXC的下降沿從8251A發(fā)出。數(shù)據(jù)傳輸?shù)牟ㄌ芈嗜Q于編程時(shí)指定的波特率因子,為發(fā)送器時(shí)鐘頻率的1、1/16或1/64。當(dāng)波特率指定為16時(shí),數(shù)據(jù)傳輸?shù)牟ㄌ芈示褪前l(fā)送器時(shí)鐘頻率的1/16。CPU通過數(shù)據(jù)總線將數(shù)據(jù)送到8251A的數(shù)據(jù)輸出緩沖寄存器以后,再傳輸?shù)桨l(fā)送緩沖器,經(jīng)移位寄存器移位,將并行數(shù)據(jù)變?yōu)榇袛?shù)據(jù),從TxD端送往外部設(shè)備。在8251A接收字符時(shí),命令寄存器的接收允許位RxE(Receiver Enable)必須為1。8251A通過檢測RxD引腳上的低電平來準(zhǔn)備接收字符,在沒有字符傳送時(shí)RxD端為高電平。8251A不斷地檢測RxD引腳,從RxD端上檢測到低電平以后,便認(rèn)為是串行數(shù)據(jù)的起始位,并且啟動接收控制電路中的一個(gè)計(jì)數(shù)器來進(jìn)行計(jì)數(shù),計(jì)數(shù)器的頻率等于接收器時(shí)鐘頻率。計(jì)數(shù)器是作為接收器采樣定時(shí),當(dāng)計(jì)數(shù)到相當(dāng)于半個(gè)數(shù)位的傳輸時(shí)間時(shí)再次對RxD端進(jìn)行采樣,如果仍為低電平,則確認(rèn)該數(shù)位是一個(gè)有效的起始位。若傳輸一個(gè)字符需要16個(gè)時(shí)鐘,那么就是要在計(jì)數(shù)8個(gè)時(shí)鐘后采樣到低電平。之后,8251A每隔一個(gè)數(shù)位的傳輸時(shí)間對RxD端采樣一次,依次確定串行數(shù)據(jù)位的值。串行數(shù)據(jù)位順序進(jìn)入接收移位寄存器,通過校驗(yàn)并除去停止位,變成并行數(shù)據(jù)以后通過內(nèi)部數(shù)據(jù)總線送入接收緩沖器,此時(shí)發(fā)出有效狀態(tài)的RxRDY信號通知CPU,通知CPU8251A已經(jīng)收到一個(gè)有效的數(shù)據(jù)。一個(gè)字符對應(yīng)的數(shù)據(jù)可以是5~8位。如果一個(gè)字符對應(yīng)的數(shù)據(jù)不到8位,8251A會在移位轉(zhuǎn)換成并行數(shù)據(jù)的時(shí)候,自動把他們的高位補(bǔ)成0。 五、系統(tǒng)總體設(shè)計(jì)方案根據(jù)系統(tǒng)設(shè)計(jì)的要求,對系統(tǒng)設(shè)計(jì)的總體方案進(jìn)行論證分析如下:1.獲取8位開關(guān)量可使用實(shí)驗(yàn)臺上的8255A可編程并行接口芯片,因?yàn)橹灰@取8位數(shù)據(jù)量,只需使用基本輸入和8位數(shù)據(jù)線,所以將8255A工作在方式0,PA0-PA7接實(shí)驗(yàn)臺上的8位開關(guān)量。2.當(dāng)使用串口進(jìn)行數(shù)據(jù)傳送時(shí),雖然同步通信速度遠(yuǎn)遠(yuǎn)高于異步通信,可達(dá)500kbit/s,但由于其需要有一個(gè)時(shí)鐘來實(shí)現(xiàn)發(fā)送端和接收端之間的同步,硬件電路復(fù)雜,通常計(jì)算機(jī)之間的通信只采用異步通信。3.由于8251A本身沒有時(shí)鐘,需要外部提供,所以本設(shè)計(jì)中使用實(shí)驗(yàn)臺上的8253芯片的計(jì)數(shù)器2來實(shí)現(xiàn)。4:顯示和鍵盤輸入均使用DOS功能調(diào)用來實(shí)現(xiàn)。設(shè)計(jì)思路框圖,如下圖所示: 六、硬件設(shè)計(jì)硬件電路主要分為8位開關(guān)量數(shù)據(jù)獲取電路,串行通信數(shù)據(jù)發(fā)送電路,串行通信數(shù)據(jù)接收電路三個(gè)部分。1.8位開關(guān)量數(shù)據(jù)獲取電路該電路主要是利用8255并行接口讀取8位乒乓開關(guān)的數(shù)據(jù)。此次設(shè)計(jì)在獲取8位開關(guān)數(shù)據(jù)量時(shí)采用8255令其工作在方式0,A口輸入8位數(shù)據(jù),CS#接實(shí)驗(yàn)臺上CS1口,對應(yīng)端口為280H-283H,PA0-PA7接8個(gè)開關(guān)。2.串行通信電路串行通信電路本設(shè)計(jì)中8253主要為8251充當(dāng)頻率發(fā)生器,接線如下圖所示。

    標(biāo)簽: PC機(jī) 串口通信

    上傳時(shí)間: 2013-12-19

    上傳用戶:小火車?yán)怖怖?/p>

  • 多路電壓采集系統(tǒng)

    多路電壓采集系統(tǒng)一、實(shí)驗(yàn)?zāi)康模保煜た删幊绦酒珹DC0809,8253的工作過程,掌握它們的編程方法。2.加深對所學(xué)知識的理解并學(xué)會應(yīng)用所學(xué)的知識,達(dá)到在應(yīng)用中掌握知識的目的。 二、實(shí)驗(yàn)內(nèi)容與要求1.基本要求通過一個(gè)A/D轉(zhuǎn)換器循環(huán)采樣4路模擬電壓,每隔一定時(shí)間去采樣一次,一次按順序采樣4路信號。A/D轉(zhuǎn)換器芯片AD0809將采樣到的模擬信號轉(zhuǎn)換為數(shù)字信號,轉(zhuǎn)換完成后,CPU讀取數(shù)據(jù)轉(zhuǎn)換結(jié)果,并將結(jié)果送入外設(shè)即CRT/LED顯示,顯示包括電壓路數(shù)和數(shù)據(jù)值。2. 提高要求 (1) 可以實(shí)現(xiàn)循環(huán)采集和選擇采集2種方式。(2)在CRT上繪制電壓變化曲線。 三、實(shí)驗(yàn)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡要說明 4.軟件設(shè)計(jì)框圖及程序清單5.設(shè)計(jì)結(jié)果和體會(包括遇到的問題及解決的方法) 四、總體設(shè)計(jì)設(shè)計(jì)思路如下:1) 4路模擬電壓信號通過4個(gè)電位器提供0-5V的電壓信號。2) 選擇ADC0809芯片作為A/D轉(zhuǎn)換器,4路輸入信號分別接到ADC0809的IN0—IN4通道,每隔一定的時(shí)間采樣一次,采完一路采集下一路,4路電壓循環(huán)采集。3) 利用3個(gè)LED數(shù)碼管顯示數(shù)據(jù),1個(gè)數(shù)碼管用來顯示輸入電壓路數(shù),3個(gè)數(shù)碼管用來顯示電壓采樣值。4) 延時(shí)由8253定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)。 五、硬件電路設(shè)計(jì)根據(jù)設(shè)計(jì)思路,硬件主要利用了微機(jī)實(shí)驗(yàn)平臺上的ADC0809模數(shù)轉(zhuǎn)換器、8253定時(shí)/計(jì)數(shù)器以及LED顯示輸出等模塊。電路原理圖如下:1.基本接口實(shí)驗(yàn)板部分1) 電位計(jì)模塊,4個(gè)電位計(jì)輸出4路1-5V的電壓信號。2) ADC0809模數(shù)轉(zhuǎn)換器,將4路電壓信號接到IN0-IN3,ADD_A、ADD_B、ADD_C分別接A0、A1、A2,CS_AD接CS0時(shí),4個(gè)采樣通道對應(yīng)的地址分別為280H—283H。3) 延時(shí)模塊,8253和8255組成延時(shí)電路。8255的PA0接到8253的OUT0,程序中查詢計(jì)數(shù)是否結(jié)束。硬件電路圖如圖1所示。 圖1 基本實(shí)驗(yàn)板上的電路圖實(shí)驗(yàn)板上的LED顯示部分實(shí)驗(yàn)板上主要用到了LED數(shù)碼管顯示電路,插孔CS1用于數(shù)碼管段碼的輸出選通,插孔CS2用于數(shù)碼管位選信號的輸出選通。電路圖如圖2所示。

    標(biāo)簽: 多路 電壓采集

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

    上傳用戶:sunchao524

  • 新穎實(shí)用的單片機(jī)雙積分A/D轉(zhuǎn)換電路和軟件

    新穎實(shí)用的單片機(jī)雙積分A/D轉(zhuǎn)換電路和軟件:摘 要: 通過對雙積分A/ D 轉(zhuǎn)換過程及其原理的分析,結(jié)合8031 單片機(jī)定時(shí)計(jì)數(shù)器的特點(diǎn),設(shè)計(jì)出一種新的A/ D 轉(zhuǎn)換電路. 詳細(xì)介紹了這種轉(zhuǎn)換電路的硬件原理及工作過程,給出了實(shí)用的硬件電路與軟件設(shè)計(jì)框圖. 通過比較分析,可以看出這種A/ D 轉(zhuǎn)換電路性能價(jià)格比較高,軟件編程簡單,并且轉(zhuǎn)換速度和精度優(yōu)于一般的A/ D 轉(zhuǎn)換電路. 這種設(shè)計(jì)思路為數(shù)模轉(zhuǎn)換器(A/ D) 的升級提高指出一個(gè)明確的方向.關(guān)鍵詞:單片機(jī); 定時(shí)/ 計(jì)數(shù)器; A/ D 轉(zhuǎn)換; 雙積分  雙積分A/ D 及定時(shí)計(jì)數(shù)器原理:我們先分析雙積分A/ D 轉(zhuǎn)換的工作原理. 如圖1 所示,積分器先以固定時(shí)間T 對待測的輸入模擬電壓Vi 進(jìn)行正向積分,積分電容C 積累的電荷為

    標(biāo)簽: 單片機(jī) 雙積分 轉(zhuǎn)換電路 軟件

    上傳時(shí)間: 2014-01-18

    上傳用戶:hewenzhi

  • 單片機(jī)復(fù)位標(biāo)志位的設(shè)置與應(yīng)用研究

    設(shè)置復(fù)位標(biāo)志位便于區(qū)分不同原因引發(fā)的復(fù)位,作為一種新技術(shù)被越來越多的新型單片機(jī)所采納。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半導(dǎo)體部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,內(nèi)部都設(shè)計(jì)了專門用于記錄各種復(fù)位標(biāo)志的狀態(tài)寄存器。MC68HC08系列有一個(gè)復(fù)位狀態(tài)寄存器,負(fù)責(zé)記錄6種復(fù)位標(biāo)志位:上電復(fù)位、引腳復(fù)位、看門狗復(fù)位、非法指令復(fù)位、非法地址復(fù)位和欠壓復(fù)位。SPMC65系列有一個(gè)系統(tǒng)控制寄存器,負(fù)責(zé)記錄5種復(fù)位標(biāo)志位:上電復(fù)位、外部復(fù)位、看門狗復(fù)位、非法地址復(fù)位和欠壓復(fù)位。51兼容的P89LPC900系列有一個(gè)復(fù)位源寄存器,負(fù)責(zé)記錄6種復(fù)位標(biāo)志位:欠壓復(fù)位、上電復(fù)位、外部復(fù)位、看門狗復(fù)位、軟件復(fù)位和UART收到間隔字符復(fù)位(主要作為進(jìn)入ISP監(jiān)控程序的途徑之一)。就連初學(xué)者很常用的 AT89S51/52和P89C52X2,也在其電源控制寄存器PCON中增設(shè)了一個(gè)上電標(biāo)志位POF。1、 復(fù)位標(biāo)志位的設(shè)置方法傳統(tǒng)的80C51單片機(jī)沒有設(shè)計(jì)復(fù)位標(biāo)志位的記錄功能,這應(yīng)該說是一種遺憾,那么能否通過一定的技術(shù)手段來彌補(bǔ)這個(gè)缺憾呢?這里給廣大80C51單片機(jī)用戶提供一種啟示和引導(dǎo)。實(shí)現(xiàn)復(fù)位標(biāo)志位的記錄肯定需要一定的硬件電路支持,而這種電路的設(shè)計(jì)不存在固定模式。筆者利用一片MAX813L設(shè)計(jì)了一種支撐電路,如圖1所示,僅供讀者參考。

    標(biāo)簽: 單片機(jī)復(fù)位 標(biāo)志位 應(yīng)用研究

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

    上傳用戶:lhw888

  • 交通燈控制器的設(shè)計(jì)與實(shí)現(xiàn)

    交通燈控制器的設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康?. 了解交通燈管理的基本工作原理。2. 熟悉8253計(jì)數(shù)器/定時(shí)器、8259A中斷控制器和8255A并行接口的工作方式及應(yīng)用編程。3. 掌握多位LED顯示的方法。 二、 實(shí)驗(yàn)內(nèi)容與要求設(shè)計(jì)一個(gè)用于十字路口的交通燈控制器。1.基本要求: 1) 東西和南北方向各有一組紅,黃,綠燈用于指揮交通,紅,黃,綠的持續(xù)時(shí)間分別為25s,5s,20s。2) 當(dāng)有緊急情況(如消防車)時(shí),兩個(gè)方向均為紅燈亮,計(jì)時(shí)停止,當(dāng)特殊情況結(jié)束后,控制器恢復(fù)原來狀態(tài),正常工作。3) 一組數(shù)碼管,以倒計(jì)時(shí)方式顯示兩個(gè)方向允許通行或禁止通行的時(shí)間。2.提高部分:1) 實(shí)時(shí)修改交通燈的持續(xù)時(shí)間。2) 根據(jù)不同時(shí)段對主要交通方向的信號進(jìn)行調(diào)整。3) 可以使用LCD顯示提示信息。 三、實(shí)驗(yàn)報(bào)告要求 1.設(shè)計(jì)目的和內(nèi)容 2.總體設(shè)計(jì) 3.硬件設(shè)計(jì):原理圖(接線圖)及簡要說明 4.軟件設(shè)計(jì)框圖及程序清單 5.設(shè)計(jì)結(jié)果和體會(包括遇到的問題及解決的方法) 四、總體設(shè)計(jì)交通燈的工作過程如下:設(shè)十字路口的1、3為南,北方向,2、4為東西方向,初始態(tài)為4個(gè)路口的紅燈全亮。之后,1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車,2個(gè)路口的LED數(shù)碼管開始倒計(jì)時(shí)25秒。延遲20秒后,1、3路口的綠燈熄滅,而1,3路口的黃燈開始閃爍(1HZ)。閃爍5次后,1、3路口的紅燈亮,同時(shí)2、4路口的綠燈亮,2、4路口方向開始通車,2個(gè)路口的LED數(shù)碼管重新開始倒計(jì)時(shí)25秒。延遲20秒時(shí)間后,2、4路口的綠燈熄滅,而黃燈開始閃爍。閃爍5次后,再切換到1、3路口方向。之后,重復(fù)上述過程。當(dāng)有緊急情況時(shí),2個(gè)方向都紅燈亮,倒計(jì)時(shí)停止,車輛禁止通行,當(dāng)緊急情況結(jié)束后,控制器恢復(fù)以前的狀態(tài)繼續(xù)工作。 在設(shè)計(jì)中采用6個(gè)發(fā)光二極管來模擬2個(gè)路口的黃紅綠燈,每個(gè)路口用2個(gè)數(shù)碼管來顯示通行或禁止剩余的時(shí)間。緊急情況用一個(gè)單脈沖發(fā)生單元申請中斷來模擬,緊急情況結(jié)束后,再發(fā)一個(gè)中斷來恢復(fù)以前的狀態(tài)。 根據(jù)前面的介紹,本設(shè)計(jì)硬件由定時(shí)模塊、發(fā)光二極管模塊、數(shù)碼管顯示模塊和緊急中斷模塊組成。定時(shí)模塊采用硬件定時(shí)和軟件定時(shí)相結(jié)合的方法,用8253定時(shí)/計(jì)數(shù)器定時(shí)100ms,再用軟件計(jì)時(shí)實(shí)現(xiàn)所需的定時(shí)。發(fā)光二極管模塊由8255控制發(fā)光二極管來實(shí)現(xiàn)。數(shù)碼管顯示模塊由實(shí)驗(yàn)平臺上的LED顯示模塊實(shí)現(xiàn)。緊急中斷模塊是由單脈沖發(fā)生單元和8279中斷控制器組成。 程序主要是由定時(shí)子程序、發(fā)光二極管顯示子程序、數(shù)碼管顯示子程序和中斷服務(wù)程序組成。包括對8253、8255以及8259等可編程器件的編程。 五、硬件設(shè)計(jì) 本課題的設(shè)計(jì)可通過實(shí)驗(yàn)平臺上的一些功能模塊電路組成,由于各模塊電路內(nèi)部已經(jīng)連接,用戶在使用時(shí)只要設(shè)計(jì)模塊間電路的連接,因此,硬件電路的設(shè)計(jì)及實(shí)現(xiàn)相對簡單。完整系統(tǒng)的硬件連接如圖1所示。硬件電路由定時(shí)模塊、發(fā)光二極管模塊、數(shù)碼管顯示模塊和緊急中斷模塊組成。 定時(shí)模塊是由8253的計(jì)數(shù)器0來實(shí)現(xiàn)定時(shí)100ms。Clk0接實(shí)驗(yàn)平臺分頻電路輸出Q6,f=46875hz。GATE0接8255的PA0,由8255輸出來控制計(jì)數(shù)器的起停。OUT0接8259的IRQ2,定時(shí)完成申請中斷,進(jìn)入中斷服務(wù)程序。 發(fā)光二極管顯示模塊由8255輸出來控制發(fā)光二極管的亮滅。8255輸出為低電平時(shí),對應(yīng)的發(fā)光二極管就點(diǎn)亮,否則就熄滅。8255的接口電路如圖2所示。交通燈的對應(yīng)關(guān)系如下:L7 L6 L5 L2 L1 L0PC7 PC6 PC5 PC2 PC1 PC013紅燈 13黃燈 13綠燈 24紅燈 24黃燈 24綠燈  實(shí)驗(yàn)平臺上提供一組六個(gè)LED數(shù)碼管。插孔CS1用于數(shù)碼管段選的輸出選通,插孔CS2用于數(shù)碼管位選信號的輸出選通。本設(shè)計(jì)用4個(gè)數(shù)碼管來倒計(jì)時(shí)。 緊急中斷模塊是由單脈沖發(fā)生單元和8259中斷控制器,單脈沖發(fā)生單元主要用來請求中斷,然后做出緊急情況處理。

    標(biāo)簽: 交通燈控制器

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

    上傳用戶:小小小熊

  • 給初學(xué)單片機(jī)的40個(gè)實(shí)驗(yàn)(含電路圖和源程序)

    給初學(xué)單片機(jī)的40個(gè)實(shí)驗(yàn)(含電路圖和源程序) 1. 閃爍燈 1.  實(shí)驗(yàn)任務(wù) 如圖4.1.1所示:在P1.0端口上接一個(gè)發(fā)光二極管L1,使L1在不停地一亮一滅,一亮一滅的時(shí)間間隔為0.2秒。 2.  電路原理圖 . 模擬開關(guān)燈 1. 實(shí)驗(yàn)任務(wù) 如圖4.2.1所示,監(jiān)視開關(guān)K1(接在P3.0端口上),用發(fā)光二極管L1(接在單片機(jī)P1.0端口上)顯示開關(guān)狀態(tài),如果開關(guān)合上,L1亮,開關(guān)打開,L1熄滅。 2. 電路原理圖 5. 廣告燈(利用取表方式) 1. 實(shí)驗(yàn)任務(wù) 利用取表的方法,使端口P1做單一燈的變化:左移2次,右移2次,閃爍2次(延時(shí)的時(shí)間0.2秒)。 2. 電路原理圖

    標(biāo)簽: 單片機(jī) 實(shí)驗(yàn) 電路圖 源程序

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

    上傳用戶:frank1234

  • 改善基于微控制器的應(yīng)用的瞬態(tài)免疫性能

    家電制造業(yè)的競爭日益激烈,市場調(diào)整壓力越來越大,原始設(shè)備制造商們(OEM)為了面對這一挑戰(zhàn),必須在滿足電磁兼容性的條件下,不斷降低產(chǎn)品的成本。由于強(qiáng)調(diào)成本控制,為防止由電源和信號線的瞬變所產(chǎn)生的電器故障而實(shí)施必要的瞬態(tài)免疫保護(hù),對于家電設(shè)計(jì)者來說變得更具挑戰(zhàn)性。由于傳統(tǒng)的電源設(shè)計(jì)和電磁干擾(EMI)控制措施為節(jié)約成本讓路,家電設(shè)計(jì)者必須開發(fā)出新的技術(shù)來滿足不斷調(diào)整的電磁兼容(EMC)需求。本應(yīng)用筆記探討了瞬態(tài)電氣干擾對嵌入式微控制器(MCU)的影響,并提供了切實(shí)可行的硬件和軟件設(shè)計(jì)技術(shù),這些技術(shù)可以為電快速瞬變(EFT)、靜電放電(ESD)以及其它電源線或信號線的短時(shí)瞬變提供低成本的保護(hù)措施。雖然這種探討是主要針對家電制造商,但是也適用于消費(fèi)電子、工業(yè)以及汽車電子方面的應(yīng)用。 低成本的基于MCU 的嵌入式應(yīng)用特別容易受到ESD 和EFT 影響降低性能。即使是運(yùn)行在較低時(shí)鐘頻率下的微控制器,通常對快速上升時(shí)間瞬變也很敏感。這種敏感性歸咎于所使用的工藝技術(shù)。如今針對低成本8/16位的MCU的半導(dǎo)體工藝技術(shù)所實(shí)現(xiàn)的晶體管柵極長度在0.65 μm~0.25 μm范圍內(nèi)。此范圍內(nèi)的柵極長度能產(chǎn)生和響應(yīng)上升時(shí)間在次納秒范圍內(nèi)(或超過300 MHz 的等同帶寬)的信號。因此, MCU 能夠響應(yīng)進(jìn)入其引腳的ESD 或EFT 信號。除上述工藝技術(shù)之外, MCU 在ESD 或EFT 事件中的性能還會受到IC 設(shè)計(jì)及其封裝、印刷電路板(PCB)的設(shè)計(jì)、MCU 上運(yùn)行的軟件、系統(tǒng)設(shè)計(jì)以及ESD 或EFT 波形特征的影響。各因素的相對影響(強(qiáng)調(diào)對最大影響的貢獻(xiàn))如圖1 所示。

    標(biāo)簽: 微控制器 瞬態(tài)免疫 性能

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

    上傳用戶:Jerry_Chow

  • 結(jié)構(gòu)緊湊的Li+電池充電器

    鋰離子電池Li+ 是適合電子產(chǎn)品輕薄小需求的高能量密度高性能電池,被廣泛應(yīng)用于手機(jī),PDA ,筆記本電腦等高端產(chǎn)品中.圖一所示電路提供了一種結(jié)構(gòu)簡單緊湊的單節(jié)Li+電池充電方案圖中墻上適配器為9VDC 800mA 限流型電壓源Anam Friwo 等公司均有相應(yīng)產(chǎn)品MAX1679內(nèi)置充電終止檢測電路和充電過程控制.器插入電池或充電器上電都將啟動一次充電過程一次完整的充電過程包括初始化充電以較小的充電電流為電池充電使電池電壓大于2.5V溫度范圍如果超出2.5 到47.5 則處于等待狀態(tài).快充過程快充開始后MAX1679打開外接的P 溝道場效應(yīng)管快充電流由外部限流型充電電源決定.一旦檢測到電池電壓達(dá)到Li+電池充電終止門限電壓時(shí)快充結(jié)束.充電終止門限電壓由電阻RADJ確定,可參考以下公式:

    標(biāo)簽: Li 電池充電器

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

    上傳用戶:yuanwenjiao

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

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

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

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

    上傳用戶:gai928943

主站蜘蛛池模板: 广德县| 岳池县| 临邑县| 宁海县| 军事| 新安县| 汕尾市| 新化县| 光山县| 灵宝市| 汝阳县| 陕西省| 玛曲县| 宜川县| 浦江县| 荥阳市| 宜川县| 清徐县| 丰县| 万源市| 延吉市| 双江| 邳州市| 东安县| 南宫市| 梁河县| 宁化县| 平度市| 嘉鱼县| 米易县| 台北市| 开江县| 永顺县| 无为县| 彩票| 澜沧| 高碑店市| 缙云县| 启东市| 闵行区| 嵊泗县|