2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  計算機(jī)科學(xué)與技術(shù)系</b></p><p><b>  微機(jī)原理與接口技術(shù)</b></p><p><b>  課程設(shè)計</b></p><p>  2013 01 14</p><p>  1、題意分析與解決方案</p><

2、;p>  1.1 題意需求分析</p><p>  根據(jù)以上題目所給的提示,我們對其進(jìn)行解析:首先假設(shè)有一個十字路口,1、3為南北方向,2、4為東西方向,初始為四個路口的紅燈全亮,之后,1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車; 延時一段時間后,1、3路口的綠燈熄滅,而1、3路口的黃燈開始閃爍,閃爍若干次以后,1、3 路口紅燈亮, 而同時2、4路口的綠燈亮,2、4路口方向通車;延時一段時間

3、后,2、4 路口的綠燈熄滅,而黃燈開始閃爍,閃爍若干次以后,再切換到1、3路口方向,之后重復(fù)上述過程。</p><p>  從題意需求分析本課程設(shè)計需要解決的問題如下:</p><p>  怎樣定時?是采用硬件定時還是軟件定時?</p><p>  怎么控制交通燈的紅、綠、黃切換?</p><p>  怎樣模擬出東西、南北向信號燈倒計時的的效

4、果?</p><p>  怎樣更加具有使用價值,具有使用的靈活性?</p><p>  1.2解決方法及思路</p><p><b>  1.2.1硬件部分</b></p><p>  本課程設(shè)計的具體要求如下:</p><p>  通過8255A控制信號燈的輸出顯示</p><

5、;p>  通過8279A實(shí)現(xiàn)數(shù)碼管的倒計時顯示</p><p>  通過軟件延時實(shí)現(xiàn)交通燈的1S定時效果</p><p>  通過8279的鍵盤控制實(shí)現(xiàn)交通燈的初始時間設(shè)置</p><p>  本實(shí)驗(yàn)需要人為操作,故需要按鍵,主要用到的硬件是8279、8255以及矩陣鍵盤、數(shù)碼管、LED顯示燈。</p><p>  我們將LED指示燈接

6、在8255A的PA口,設(shè)置8255A的端口全為輸出。利用軟件進(jìn)行定時,通過星研提供的軟件延時DELAY500MS,進(jìn)行0.5S的定時。由于本實(shí)驗(yàn)需要設(shè)置初始時間值,也就是需要設(shè)定紅綠燈的30S延時和黃燈的5S延時或其它時間。故在上電后需要通過鍵盤設(shè)置時間值。矩陣鍵盤第一行對應(yīng)0 1 2 3第二行對應(yīng)4 5 6 7 第三行對應(yīng)8 9 A B 第四行對應(yīng)C D E F一般設(shè)置時只需要前十個鍵即可。設(shè)定時規(guī)定最大值是兩位數(shù),需要依次設(shè)定兩次

7、,第一次是紅綠燈顯示時間,第二次是黃燈顯示時間。在本實(shí)驗(yàn)中控制鍵盤及數(shù)碼管的芯片為8279。8279有三種工作方式。鍵盤工作方式、顯示工作方式和傳感器工作方式,本實(shí)驗(yàn)采用第一、二種工作方式。8279需要連接2M的頻率輸入。通過其內(nèi)部控制字設(shè)定其分頻系數(shù)為20。定時對鍵盤進(jìn)行掃描以確定按下的鍵值。8279中的C連接端接數(shù)碼管的片選端,用于選擇數(shù)碼管的點(diǎn)亮位置。B連接端用于連接數(shù)碼管的段選,用于顯示數(shù)碼管的顯示數(shù)值。片內(nèi)總線與CPU連接,用

8、于接收命令字以及數(shù)據(jù)。8255在此次設(shè)計中的作用是,并行輸出CPU傳來的數(shù)據(jù),用于點(diǎn)亮LED指示燈。</p><p><b>  1.2.2軟件部分</b></p><p>  8255A是一個可編程芯片,我們可以通過程序?qū)?255A芯片進(jìn)行編程來實(shí)現(xiàn)本次課程設(shè)計所要求實(shí)現(xiàn)的所有功能。在本次實(shí)驗(yàn)中我們需要在程序中實(shí)現(xiàn)對LED指示燈的亮滅控制。初始時將8255A口設(shè)置工

9、作在方式0作為輸出口,通過對端口A的按位置1/復(fù)0來控制PA口對應(yīng)腳的輸出電平的高低。8279的初始化需要對可編程時鐘設(shè)置命令字、數(shù)碼管顯示及鍵盤掃描方式設(shè)置命令字。由于8279內(nèi)部所需的頻率為100KHZ,而當(dāng)外部輸入的固定頻率為2MHZ時,需將命令字設(shè)為20,才可分頻出100KHZ的內(nèi)部頻率。故設(shè)置的命令字為34H。對于數(shù)碼管顯示的命令字設(shè)置,將其設(shè)定為8*8字符顯示,左邊輸入,外部譯碼鍵掃描方式。則所需的命令字為00H。另外在向8

10、279內(nèi)部RAM寫入數(shù)據(jù)之前,需要先將其清空,即向8279寫入0DEH將其內(nèi)部RAM全部置為0FFH。接著還需要有一個測試指令,測試其內(nèi)部RAM是否初始化完畢。若以上初始化都完成了,則8279的初始化則全部完成。8255及8279芯片初始化之后,即可以對其寫入數(shù)據(jù)操作。對于8255只需要把8位數(shù)據(jù)送到8255中即可。1對應(yīng)LED燈的熄滅,0對應(yīng)其點(diǎn)亮。8279的數(shù)據(jù)</p><p><b>  2、硬件

11、設(shè)計</b></p><p><b>  2.1硬件電路設(shè)計</b></p><p>  各芯片主要管腳的功能如下:</p><p><b>  8255A</b></p><p>  PC0:和8253的OUT0端相與后得到黃燈信號,其中1表示亮,0表示暗</p><

12、;p>  PC1:表示綠燈信號,其中1表示亮,0表示暗</p><p>  PC2:表示紅燈信號,其中1表示亮,0表示暗</p><p>  PC3:和8253GATE1端相連,為時器1的門控型號</p><p>  PC4: 和8253GATE2端相連,為時器2的門控型號</p><p>  PA0~PA7,PB0~PB7:可接兩個8

13、段LED顯示器,用于顯示當(dāng)前等亮?xí)r間</p><p><b>  8253:</b></p><p>  定時器0:輸入信號設(shè)為10KHZ,工作在方式3,輸出為1HZ方波OUT0和PC0相與得到黃燈信號。</p><p>  定時器1:輸入信號為OUT0,工作站方式2,計數(shù)初值為30,實(shí)現(xiàn)延遲30S后產(chǎn)生中斷??刂谱譃椋?1010100<

14、/p><p>  定時器2:輸入信號為OUT0,工作站方式2,計數(shù)初值為3,實(shí)現(xiàn)延遲3S后產(chǎn)生中斷??刂谱譃椋?0010100</p><p><b>  8259:</b></p><p>  采用邊沿觸發(fā),沒有級聯(lián),需要設(shè)ICW1,ICW2,ICW4,不用ICW3。</p><p><b>  硬件說明:<

15、;/b></p><p>  8279是該程序?qū)崿F(xiàn)的重要的芯片,通過數(shù)碼管模擬倒計時,鍵盤模擬倒計時的時間設(shè)置,8255PA口接Led指示燈指示交通燈的變換過程。依據(jù)8279的倒計時變化,8255控制的led指示燈進(jìn)行相應(yīng)的變化。</p><p>  2.2 硬件的選擇與介紹</p><p>  2.2.1介紹本系統(tǒng)所選用的各種芯片的引腳、功能、相應(yīng)的命令字控

16、制格式。</p><p>  圖2-2 8255芯片引角圖 圖2-3 8279芯片引角圖</p><p>  通過本次課程設(shè)計,加強(qiáng)了自己的動手實(shí)踐能力,操作能力及解決問題的能力。并且通過查閱相關(guān)資料,學(xué)習(xí)書本及課堂中老師不曾介紹過的知識.同時也學(xué)會了在動手實(shí)踐的過程中,發(fā)現(xiàn)問題,分析問題,在最短的時間內(nèi)尋找問題的解決方案。更重要的是通過本次的課程設(shè)計,我學(xué)到了

17、關(guān)于微機(jī)原理課程的更多相關(guān)內(nèi)容,了解了DS18B20芯片的作用、內(nèi)部結(jié)構(gòu)、引腳的功能、工作方式、技術(shù)參數(shù)、如何實(shí)現(xiàn)從模擬量到數(shù)字量的轉(zhuǎn)換。更加深入認(rèn)識了8255A和8279的內(nèi)部構(gòu)造、控制字、方式字的設(shè)置以及通過8255A和8279控制輸出量。</p><p>  在這個過程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)驗(yàn)的缺乏失落過。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。雖然這只是一次的簡單的課程設(shè)計,可是平心而論,也耗費(fèi)了我們不

18、少的心血!通過這次課程設(shè)計,我想說:為完成這次課程設(shè)計我們確實(shí)很辛苦,但苦中仍有樂,和同學(xué)門這十幾天的一起工作的日子,讓我們有說有笑,相互幫助,配合默契,多少人間歡樂在這里灑下,大學(xué)里一年的相處還趕不上這十來天的實(shí)習(xí),我感覺我和同學(xué)們之間的距離更加近了。這個工程確實(shí)很累,但當(dāng)我們設(shè)計成功的時候,當(dāng)我們連好線,按下按鈕,LED亮了起來,喇叭響起來了,那是我一生以來聽到的最好聽的聲音,我們的心中就不免興奮,不免激動。以前種種艱辛這時就變成了

19、最甜美的回憶!</p><p>  總的來說,雖然課程設(shè)計的時間有限,但在這有限的時間里,不僅完成了作業(yè),提交了結(jié)果,也豐富了這門硬件課程的更多知識,更深入地了解了這門專業(yè)課的精髓,充分認(rèn)識理論知識對應(yīng)用技術(shù)的指導(dǎo)性作用,進(jìn)一步加強(qiáng)理論知識與應(yīng)用相結(jié)合的實(shí)踐和鍛煉。通過這次設(shè)計實(shí)踐能夠進(jìn)一步加深對專業(yè)知識和理論知識學(xué)習(xí)的認(rèn)識和理解,使自己的設(shè)計水平和對所學(xué)的知識的應(yīng)用能力以及分析問題解決問題的能力得到全面提高。&

20、lt;/p><p>  對我而言,知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無止境的道理。我們每一個人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經(jīng)歷是一份擁有。這次課程設(shè)計必將成為我人生旅途上一個非常美好的回憶!</p><p>  2.2.2可編程并行接口芯片8255A</p><p>  1)8255A

21、的作用</p><p>  利用8255A將界限值和溫度值通過LED顯示出來,同時8255A的PC0與DS18B20相連,向其發(fā)出溫度檢測命令及接受溫度數(shù)據(jù),PC5和蜂鳴器及發(fā)光二極管相連,用于聲光報警。 </p><p>  2)8255A的功能分析</p><p>  8255A是可編程并行接口,內(nèi)部有3個相互獨(dú)立的8位數(shù)據(jù)端口,即A口、B口和C口。三個端口都可

22、以作為輸入端口或輸出端口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號使用。8255A的工作只有當(dāng)片選CS效時才能進(jìn)行。而控制邏輯端口實(shí)現(xiàn)對其他端口的控制。</p><p>  3)8255A的方式控制字</p><p>  圖2-2a 8255A的方式控制字表</p><p>  圖2-2b 8255A

23、的方式控制字表</p><p><b>  方式0的工作特點(diǎn):</b></p><p>  是這種方式通常不用聯(lián)絡(luò)信號,不使用中斷,三個通道中的每一個都有可以由程序選定作為輸入或輸出。</p><p><b>  通道的功能為:</b></p><p>  兩個8位通道:通道A和B。兩個四位通道:通

24、道C高4位和低四位,任何一個通道可以作輸入/輸出,輸入是不鎖存的,輸出是鎖存的,在方式0時各個通道的輸入/輸出可有16種不同的組合。8255A的置位/控制字表:</p><p>  D7 D6 D5 D4 D3 D2 D1 D0</p><p>  寫入位 編碼 0寫入0</p

25、><p>  D0-D7 000-111 1寫入1</p><p>  2.2.3可編程并行接口芯片8279</p><p><b>  1)8279的作用</b></p><p>  在本設(shè)計中用8279芯片控制鍵盤輸入和LED顯示。</p><p>  2)8279的功能

26、分析</p><p>  8279A芯片是一種通用的可編程序的鍵盤/顯示接口器件,單個芯片就能完成鍵盤輸入和LED顯示控制兩種功能。可與任何8位機(jī)接口。8279A芯片包括鍵盤輸入和顯示輸出兩個部分。若采用8279作為鍵盤/顯示器接口,則可以實(shí)現(xiàn)對鍵盤、顯示器自動掃描,8279主要是管理鍵盤輸入和顯示器輸出的。8279可編程鍵盤顯示器接口芯片具有動態(tài)顯示驅(qū)動電路簡單、不占用CPU 的時間、可自動進(jìn)行鍵盤掃描、與計算

27、機(jī)接口方便、編程容易、系統(tǒng)靈活等特點(diǎn).當(dāng)今已成為設(shè)計計算機(jī)應(yīng)用系統(tǒng),特別是實(shí)時性較高的測控系統(tǒng)的首選器件之一。</p><p>  圖2-2c 8279的內(nèi)部框圖</p><p>  圖中,IRQ:中斷請求輸出線,DB0~DB7:雙向數(shù)據(jù)總路線(傳送命令、數(shù)據(jù)、狀態(tài)),、:讀寫控制輸入端,RESET:復(fù)位輸入端,CLK:時鐘輸入端,:片選,C和/D(A0):片內(nèi)寄存器選址,OUTA0~A1

28、、OUTB0~B3:8位顯示輸出端,:熄滅顯示輸出端,SL0~SL3:公用掃描輸出線,RL0~RL7:鍵盤回饋輸入線,SHIFT:抵擋鍵輸入線,CNTL/STB:控制/選通輸入線。另外,8279的鍵盤接口部分內(nèi)部有一個8×8位先進(jìn)先出的堆棧(FIFO),用來存放鍵盤輸入代碼,顯示器接口部分內(nèi)部有一個16×8位顯示RAM,用來顯示段數(shù)據(jù),能為16位LED顯示器(或其它顯示器)提供多路掃描接口。</p>&

29、lt;p>  3)8279的引腳信號和功能</p><p>  8279可編程鍵盤顯示器接口芯片具有動態(tài)顯示驅(qū)動電路,不占用CPU 的時間、可自動進(jìn)行鍵盤掃描、與計算機(jī)接口方便、編程容易、系統(tǒng)靈活等特點(diǎn)。 8279A是可編程的鍵盤/顯示接口芯片。它既具有按鍵處理功能,又具有自動顯示功能,在單片機(jī)系統(tǒng)中應(yīng)用很廣泛。8279A內(nèi)部有鍵盤 FIFO (先進(jìn)先出堆棧)/傳感器,雙重功能的 8×8=64B

30、RAM,鍵盤控制部分可控制 8×8=64 個按鍵或 8×8 陣列方式的傳感器。該芯片能自動消抖并具有雙鍵鎖定保護(hù)功能。顯示 RAM容量為 16×8,即顯示器最大配置可達(dá) 16 位 LED數(shù)碼顯示。</p><p>  4)8279的命令字及其格式</p><p>  8279三種工作方式:鍵盤工作方式、顯示工作方式和傳感器工作方式。</p>&l

31、t;p>  鍵盤工作方式:雙鍵互鎖和N鍵輪回。雙鍵互鎖是指當(dāng)有兩個以上按鍵同時按下時,只能識別最后一個被釋放的按鍵,并把其鍵值送入內(nèi)部FIFO RAM中。N鍵輪回是指當(dāng)有多個按鍵同時按下時,所有按鍵的鍵值均可按掃描順序依次存入FIFO RAM中。</p><p>  顯示工作方式:是指CPU輸入至8279內(nèi)部FIFO RAM的數(shù)據(jù)的輸出格式,有8個字符左端入口顯示、16個字符左端入口顯示、8個字符右端入口顯

32、示、16個字符右端入口顯示四種方式。</p><p>  傳感器方式:是指掃描傳感器陣列時,一旦發(fā)現(xiàn)傳感器的狀態(tài)發(fā)生變化就置位INT向CPU申請中斷。</p><p>  選擇不同的工作方式均是通過CPU對8279送入命令來進(jìn)行控制。8279共有8種命令,命令寄存器為8位,其中D7~D5為命令特征位,D4~D0為命令的控制位。CPU對8279寫入的命令數(shù)據(jù)為命令字,讀出的數(shù)據(jù)為狀態(tài)字。&l

33、t;/p><p>  8279共有八條命令,其功能及命令字格式分述如下。</p><p>  (1)鍵盤/顯示方式設(shè)置命令字</p><p>  命令格式: D7 D6 D5 D4 D3 D2 D1 D0</p><p>  其中:D7、D6、D5=000為方式設(shè)置命令特征位。DD(D4、D3)

34、:用來設(shè)定顯示方式,如表1-2所示。</p><p>  表2-1 顯示方式選擇</p><p>  所謂左入口 ,即顯示位置從最左一位(最高位)開始,以后逐次輸入的顯示字符逐個向右順序排列;所謂右入口,則是顯示位置從最右一位(最低位)開始,以后逐次輸入顯示字符時,已有的顯示字符依次向左移動。KKK(D2、D1、D0):用來設(shè)定七種鍵盤/顯示掃描方式,如表2-2所示。</p>

35、<p>  表2-2 鍵盤/顯示掃描方式</p><p><b>  (2)時鐘編程命令</b></p><p>  命令格式 : D7 D6 D5 D4 D3 D2 D1 D0</p><p>  其中:D7、D6、D5=001為時鐘命令特征位。PPPPP(D4、D3、D2、D1、D0)用

36、來設(shè)定外部輸入CLK時鐘脈沖的分頻系數(shù)N。N取值范圍為2~31。如CLK輸入時鐘頻率為2MHZ,PPPPP應(yīng)被置為10100(N=20),才可獲得8279內(nèi)部要求的100KHZ的時鐘頻率。</p><p> ?。?)讀FIFO/傳感器RAM命令</p><p>  命令格式: D7 D6 D5 D4 D3 D2 D1 D0</p>

37、<p>  其中:D7、D6、D5=010為讀FIFO/傳感器RAM命令特征位。該命令字只在傳感器方式時使用。在CPU讀傳感器RAM之前,必須用這條命令來設(shè)定所讀傳感器RAM中的地址。AAA(D2、D1、D0)為傳感器RAM中的八個字節(jié)地址。AI(D4)為自動增量特征位。當(dāng)AI=1時,每次讀出傳感器RAM后地址自動加1使地址指向下一個存儲單元。這樣,下一個數(shù)據(jù)便從下一個地址讀出,而不必重新設(shè)置讀FIFO/傳感器RAM命令。

38、</p><p>  在鍵盤工作方式中,由于讀出操作嚴(yán)格按照先入先出順序,因此,不需使用這條命令。</p><p> ?。?)讀顯示RAM命令</p><p>  命令格式: D7 D6 D5 D4 D3 D2 D1 D0 </p><p>  其中:D7、D6、D5=011為

39、讀顯示RAM命令字的特征位。該命令字用來設(shè)定將要讀出的顯示RAM地址。AAAA(D3、D2、D1、D0)用來尋址顯示RAM中的存儲單元。由于位顯示RAM中有16個字節(jié)單元,故需要4位尋址。AI(D4)為自動增量特征位。AI=1時,每次讀出后地址自動加1,指向下一地址。</p><p> ?。?)寫顯示RAM命令</p><p>  命令格式: D7 D6 D5 D4

40、 D3 D2 D1 D0 </p><p>  其中:D7、D6、D5=100為寫顯示RAM命令字的特征位。在寫顯示RAM之前用這個命令字來設(shè)定將要寫入的顯示RAM地址。AAAA(D3、D2、D1、D0)為將要寫入的顯示RAM中的存儲單元地址。AI(D4)為自動增量特征位。AI=1時,每次寫入后地址自動加1,指向下一次寫入地址。</p><p>  

41、(6)顯示禁止寫入/消隱命令</p><p>  命令格式: D7 D6 D5 D4 D3 D2 D1 D0 </p><p>  其中:D7、D6、D5=101為顯示禁止寫入/消隱命令特征位。</p><p>  IW/A、IW/ B(D3、D2)為A、B組顯示RAM寫入屏蔽位。當(dāng)A組的屏蔽位D3=1

42、時,A組的顯示RAM禁止寫入。因此,從CPU寫入顯示器RAM數(shù)據(jù)時,不會影響A的顯示。這種情況通常在采用雙4位顯示器時使用。因?yàn)閮蓚€四位顯示器是相互獨(dú)立的。為了給其中一個四位顯示器輸入數(shù)據(jù)而又不影響另一個四位顯示器,因此必須對另一組的輸入實(shí)行屏蔽。BL/A、BL/ B(D1、D0)為消隱設(shè)置位。用于對兩組顯示輸出消隱。若BL=1,對應(yīng)組的顯示輸出被消隱。當(dāng)BL=0,則恢復(fù)顯示。</p><p><b>

43、 ?。?)清除命令</b></p><p>  命令格式: D7 D6 D5 D4 D3 D2 D1 D0 </p><p>  其中:D7、D6、D5=110為清除命令特征位。</p><p>  表2-3 顯示RAM清除方式</p><p>  CF(D1)用來置空FIF

44、O存儲器,當(dāng)CF=1時,執(zhí)行清除命令后,F(xiàn)IFO RAM被置空,使INT輸出線復(fù)位。同時,傳感器RAM的讀出地址也被置為0。CA (D0)為總清的特征位。它兼有CD和CF的聯(lián)合效能。在CF =1時,對顯示的清除方式由D3、D2的編碼決定。顯示RAM清除時間約需160us。在此期間狀態(tài)字的最高位Du=1,表示顯示無效。CPU不能向顯示RAM寫入數(shù)據(jù)。</p><p> ?。?)結(jié)束中斷/錯誤方式設(shè)置命令</

45、p><p>  命令格式: D7 D6 D5 D4 D3 D2 D1 D0 </p><p>  其中:D7、D6、D5=111為該命令的特征位。此命令有兩種不同的作用。</p><p> ?、僮鳛榻Y(jié)束中斷命令。在傳感器工作方式中使用。每當(dāng)傳感器狀態(tài)出現(xiàn)變化時,掃描檢測電路就將其狀態(tài)寫入傳感器R

46、AM,并啟動中斷邏輯,使INT變高,向CPU 請求中斷,并且禁止寫入傳感器RAM。此時,若傳感器RAM 讀出地址的自動遞增特性沒有置位(AI=0),則中斷請求INT在CPU第一次從傳感器RAM讀出數(shù)據(jù)時就被清除。若自動遞增特征已置位(AI=1),則CPU對傳感器RAM 的讀出并不能清除INT,而必須通過給8279寫入結(jié)束中斷/錯誤方式設(shè)置命令才能使INT變低。因此,在傳感器工作方式中,此命令用來結(jié)束傳感器RAM的中斷請求。</p&

47、gt;<p> ?、谧鳛樘囟ㄥe誤方式設(shè)置命令。在8279已被設(shè)定為鍵盤掃描N鍵輪回方式以后,如果CPU給8279又寫入結(jié)束中斷/錯誤方式設(shè)置命令(E=1),則8279將以一種特定的錯誤方式工作。這種方式的特點(diǎn)是:在8279的消抖周期內(nèi),如果發(fā)現(xiàn)多個按鍵同時按下,則FIFO狀態(tài)字中的錯誤特征位S/E將置1,并產(chǎn)生中斷請求信號和禁止寫入FIFO RAM。</p><p>  上述八種用于確定8279操作

48、方式的命令字皆由D7D6D5特征位確定,輸入8279后能自動尋址相應(yīng)的命令寄存器。因此,寫入命令字時唯一的要求是使數(shù)據(jù)選擇信號A0 =1。</p><p>  5)8279的狀態(tài)字及其格式 </p><p>  8279的FIFO狀態(tài)字,主要用于鍵盤和選通工作方式,以指示FIFO RAM中的字符數(shù)和有無錯誤發(fā)生。</p><p>  其格式為: D7

49、 D6 D5 D4 D3 D2 D1 D0 </p><p>  其中:Du(D7)為顯示無效特征位。當(dāng) Du=1表示顯示無效。當(dāng)顯示RAM由于清除顯示或全清命令尚未完成時,Du=1,此時不能對顯示RAM寫入。</p><p>  S/E(D6)為傳感器信號結(jié)束/錯誤特征位。該特征位在讀出FIFO 狀態(tài)字時被讀出。而在執(zhí)行CF =1的清

50、除命令時被復(fù)位。當(dāng)8279工作在傳感器工作方式時,若S/E=1,表示傳感器的最后一個傳感器信號已進(jìn)入傳感器RAM;而當(dāng)8279工作在特殊錯誤方式時,若S/E=1則表示出現(xiàn)了多鍵同時按下錯誤。</p><p>  O、U(D5、D4)為超出、不足錯誤特征位。對FIFO RAM 的操作可能出現(xiàn)兩種錯誤:超出或不足。當(dāng)FIFO RAM 已經(jīng)充滿時,其它的鍵盤數(shù)據(jù)還企圖寫入FIFO RAM ,則出現(xiàn)超出錯誤,超出錯

51、誤特征位O(D5)置1;當(dāng)FIFO RAM已經(jīng)置空時,CPU還企圖讀出,則出現(xiàn)不足錯誤,不足錯誤特征位U(D4)置1。</p><p>  F(D3)表示FIFO RAM中是否已滿標(biāo)志,若F=1表示已滿。</p><p>  NNN(D2、D1、D0)表示FIFO RAM中的字符數(shù)據(jù)個數(shù)。</p><p>  6)數(shù)據(jù)輸入/輸出格式</p>&l

52、t;p>  對8279輸入/輸出數(shù)據(jù)不僅要先確定數(shù)據(jù)地址口,而且數(shù)據(jù)存放也要按一定格式,其格式在鍵盤和傳感器方式有所不同。</p><p> ?。?) 鍵盤掃描方式數(shù)據(jù)輸入格式</p><p>  鍵盤的行號、列號及控制鍵格式如下:</p><p>  圖2-3 鍵盤控制鍵格式</p><p>  控制鍵CNTL、SHIFT為單獨(dú)的開關(guān)

53、鍵。CNTL與其它鍵連用作特殊命令鍵,SHIFT可作上、下?lián)蹩刂奇I。</p><p> ?。?)傳感器方式數(shù)據(jù)輸入格式</p><p>  此種方式8位輸入數(shù)據(jù)為RL0~RL7的狀態(tài)。</p><p><b>  格式如下:</b></p><p>  D7 D6 D5 D4 D3

54、D2 D1 D0</p><p>  2.2.4七段LED顯示器</p><p>  1)七段LED顯示器的作用</p><p>  本次設(shè)計需要用到LED顯示器顯示預(yù)設(shè)紅綠燈的定時及綠燈閃爍的定時值。</p><p>  2)七段LED顯示器功能分析</p><p>  LED顯示器有共陽極和共陰極

55、兩類。其中共陰極原理圖如下:</p><p>  圖2-4 LED顯示器原理圖</p><p>  七段LED顯示器可以控制在哪幾個數(shù)位上,哪幾個發(fā)光二極管亮,從而顯示數(shù)字。其工作原理:如果發(fā)光二極管共陽極,則輸入為0時亮,為1時不亮,反之如果發(fā)光共陰極,則輸入1時亮,0時不亮。發(fā)光二極管時一種外加電壓超過額定電壓時發(fā)生擊穿,并因此能產(chǎn)生可發(fā)光的器件,數(shù)碼顯示器通常由多個發(fā)光二極管來組成七

56、段或八段筆畫顯示器,當(dāng)段組合發(fā)光時,便會顯示某一個數(shù)碼管或字符,七段代碼的各位用作a—g和DP的輸入</p><p>  3)七段LED顯示器技術(shù)參數(shù)</p><p>  表2-4 LED顯示的技術(shù)參數(shù)</p><p>  主要參數(shù):此時的驅(qū)動電流為25 mA。</p><p>  4)七段LED顯示器內(nèi)部結(jié)構(gòu) </p>

57、<p>  圖2-5a LED顯示器內(nèi)部結(jié)構(gòu)</p><p>  5)七段LED顯示器真值表</p><p>  表2-5 LED字型顯示原理</p><p>  2.2.5選擇器件小鍵盤</p><p>  1)小鍵盤在本設(shè)計中的作用</p><p>  本設(shè)計中,小鍵盤用于輸入十進(jìn)制數(shù)字。</p&

58、gt;<p>  2)小鍵盤的功能分析</p><p>  通常使用的鍵盤是矩陣結(jié)構(gòu)的。對于4×4=16個鍵的鍵盤,采用矩陣方式只要用8條引線和2個8位端口便完成鍵盤的連接。如圖,這個矩陣分為4行4列,如果鍵5按下,則第1行和第1列線接通而形成通路。如果第1行線接低電平,則鍵5的閉合,會使第1列線也輸出低電平。矩陣式鍵盤工作時,就是按行線和列線的電平來識別閉合鍵的。 </p>

59、<p>  圖2-5b 4×4鍵盤矩陣圖</p><p>  行掃描法識別按鍵的原理如下:先使第0行接低電平,其余行為高電平,然后看第行是否有鍵閉合。這是通過檢查列線電位來實(shí)現(xiàn)的,即在第0行接低電平時,看是否有哪條列線變成低電平。如果有某列線變?yōu)榈碗娖?,則表示第0行和此列線相交位置上的鍵被按下;如果沒有任何一條列線為低電平,則說明第0行沒有任何鍵被按下。此后,再將第1行接低電平,檢測是否有變

60、為低電平的列線。如此重復(fù)地掃描,直到最后一行。在掃描過程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時,也就是列線輸入中有一位為0時,便退出掃描,通過組合行線和列線即可識別此刻按下的是哪一鍵。</p><p>  實(shí)際應(yīng)用中,一般先快速檢查鍵盤中是否有鍵按下,然后再確定按鍵的具體位置。為此,先使所有行線為低,然后檢查列線。這時如果列線有一位為0,則說明必有鍵被按下, 采用掃描法可進(jìn)一步確定按鍵的具體位置。</p>&l

61、t;p>  2.3原理連接圖及說明</p><p><b>  圖 2-1</b></p><p><b>  表2-1 連線說明</b></p><p><b>  3、軟件設(shè)計</b></p><p>  3.1系統(tǒng)流程圖如下圖所示:</p><p

62、><b>  3.2源程序清單:</b></p><p><b>  源程序(帶注釋):</b></p><p>  ;*****************************************************************************</p><p>  ; 8279

63、 鍵盤顯示器接口芯片</p><p>  ;1.查詢控制方式 2.輸入時鐘2MHZ 3.8279內(nèi)部20分頻(100KHZ) </p><p>  ;4.掃描計數(shù)器采用編碼工作方式(通過外部138譯碼)</p><p>  ;5.顯示按鍵值,第九次按鍵,清除顯示</p><p>  ;8279 查詢工作方式</p>

64、<p>  .MODELTINY</p><p>  PCIBAR3EQU1CH;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址,也為DMA & 32 BIT RAM板卡上的8237提供基地址)</p><p>  Vendor_IDEQU10EBH;廠商ID號</p><p>  Device_IDEQU8376;設(shè)備ID號&

65、lt;/p><p>  .STACK100</p><p><b>  .DATA</b></p><p>  IO_Bit8_BaseAddress DW?</p><p>  msg0DB'BIOS不支持訪問PCI $'</p><p>  msg1DB&

66、#39;找不到Star PCI9052板卡 $'</p><p>  msg2DB'讀8位I/O空間基地址時出錯$'</p><p>  msg3DB'請設(shè)置紅綠燈時間'</p><p>  KEYCOUNT DB ?</p><p>  LED_TABDB

67、 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H</p><p>  DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH</p><p>  CMD_8279 DW 00B1H;8279命令字、狀態(tài)字地址</p><p>  DATA_8279 DW 00B

68、0H;8279讀寫數(shù)據(jù)口的地址</p><p>  COM_ADDDW00F3H;控制口偏移量</p><p>  PA_ADDDW00F0H;PA口偏移量</p><p>  PB_ADDDW00F1H;PB口偏移量</p><p>  PC_ADDDW00F2H;PC口偏移量</p>

69、<p>  LED_DataDB01111101B;東西綠燈,南北紅燈</p><p>  DB11111101B;東西綠燈閃爍,南北紅燈</p><p>  DB10111101B;東西黃燈亮,南北紅燈</p><p>  DB11010111B;東西紅燈,南北綠燈</p><p>  DB11011111B

70、;東西紅燈,南北綠燈閃爍</p><p>  DB11011011B;東西紅燈,南北黃燈亮</p><p>  COUNTDB0;用于記錄設(shè)置時間的位數(shù),最多兩位</p><p>  TIMEDB2 DUP (0);用于記錄設(shè)置的時間值</p><p>  TENDB10;除數(shù)</p><

71、p>  TEMPDB0;暫存鍵值</p><p>  SELECTDB0;用于選擇數(shù)碼管</p><p><b>  .CODE</b></p><p>  START:MOVAX,@DATA</p><p>  MOVDS,AX</p><p><

72、b>  NOP</b></p><p>  CALLInitPCI</p><p>  CALLModifyAddress;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址</p><p>  CALLINIT8279;初始化8279子程序</p><p>  CALLINIT8255</p>

73、<p>  CALLInitTime</p><p>  LEABX,LED_Data</p><p>  START1:MOVDX,PA_ADD</p><p><b>  MOVAL,0</b></p><p>  XLAT ;從存儲單元[bx+al]中取一個字節(jié)送到al

74、寄存器</p><p>  OUTDX,AL;東西綠燈,南北紅燈</p><p><b>  MOVAH, 0</b></p><p>  MOV AL,[TIME];延時5S</p><p>  CALLDISPLAY1;調(diào)用數(shù)碼管顯示子程序</p><p>  MOVC

75、H,0</p><p>  MOVCL,[TIME+1] </p><p>  START2:CALLDISPLAY2;調(diào)用數(shù)碼管顯示子程序</p><p><b>  MOVAL,1</b></p><p><b>  XLAT<

76、;/b></p><p>  OUTDX,AL;東西綠燈閃爍,南北紅燈</p><p>  CALLDL500ms ;延遲500ms</p><p><b>  MOVAL,0</b></p><p>  XLAT </p><

77、p>  OUTDX,AL ;東西綠燈,南北紅燈</p><p>  CALLDL500ms ;延遲500ms</p><p>  LOOPSTART2</p><p>  MOVAL,2;東西黃燈亮,南北紅燈</p><p><b>  XLAT</b&

78、gt;</p><p>  OUTDX,AL</p><p>  CALLDL3S ;延遲3S </p><p>  MOVAL,3;東西紅燈,南北綠燈</p><p><b>  XLAT</b></p><p><b>  OUTD

79、X,AL</b></p><p><b>  MOVAH,0</b></p><p>  MOV AL,[TIME];延時5S</p><p>  CALLDISPLAY1;調(diào)用數(shù)碼管顯示子程序</p><p>  MOVCH,0</p><p>  MOV

80、CL,[TIME+1]</p><p>  START3:CALLDISPLAY2;調(diào)用數(shù)碼管顯示子程序</p><p>  MOVAL,4;東西紅燈,南北綠燈閃爍</p><p><b>  XLAT</b></p><p>  OUTDX,AL</p><p>

81、;  CALLDL500ms ;延遲500ms</p><p><b>  MOVAL,3</b></p><p><b>  XLAT</b></p><p>  OUTDX,AL ;東西紅燈,南北綠燈</p><p>  CALLDL500ms

82、;延遲500ms</p><p>  LOOPSTART3</p><p>  MOVAL,5;東西紅燈,南北黃燈亮</p><p><b>  XLAT</b></p><p>  OUTDX,AL</p><p>  CALLDL3S ;延遲3

83、S </p><p>  MOVAH,06H</p><p>  MOVDL,0FFH</p><p>  INT21H ;字符輸出,如果之前有鍵按下,零標(biāo)志=0清除,al=鍵值;如果之前沒有鍵按下,零標(biāo)志=1</p><p><b>  JZSTART1</b>&l

84、t;/p><p>  JMPSTART1</p><p><b>  JMPExit</b></p><p>  DISPLAY1PROCNEAR</p><p><b>  PUSHDX</b></p><p><b>  PUSHBX</b>

85、;</p><p>  CALLCLEAR</p><p><b>  DIVTEN</b></p><p>  LOOP1:MOVDI,AX;AH中存儲的是余數(shù),AL中存儲的是結(jié)果,先保留AX值</p><p>  MOVDX,CMD_8279;設(shè)置點(diǎn)亮的數(shù)碼管位置</p><p

86、>  MOVAL,92H</p><p><b>  OUTDX,AL</b></p><p>  MOVDX,DATA_8279;數(shù)碼管顯示倒計時值</p><p>  LEABX,LED_TAB</p><p><b>  MOVAX,DI</b></p><

87、;p>  XLAT ;從存儲單元[bx+al]中取一個字節(jié)送到al寄存器</p><p><b>  OUTDX,AL</b></p><p>  MOVAX,DI;寫一次計時值</p><p>  XCHGAL,AH</p><p><b>  XLAT&

88、lt;/b></p><p><b>  OUTDX,AL</b></p><p><b>  MOVAX,DI</b></p><p><b>  CMPAH,0</b></p><p>  JNZNEXT0;AH未計時完成跳轉(zhuǎn)至NEXT0處繼續(xù)倒計時<

89、;/p><p><b>  CMPAL,0</b></p><p>  JZEXIT0;AL計時完成跳轉(zhuǎn)至EXIT0倒計時結(jié)束</p><p>  MOVAH,10;AH是余數(shù),余數(shù)減到0之后需要重新將其置為10,原因是余數(shù)與商的是10倍的關(guān)系。</p><p>  ;如12/10=1余2AH中的余數(shù)2減到0

90、后需要向AL中的商借位,一位即為AH中的=10</p><p><b>  DECAL</b></p><p>  NEXT0:DECAH</p><p><b>  CALLDL1S</b></p><p>  LOOPLOOP1</p><p>  EXIT0

91、:POPBX</p><p><b>  POPDX</b></p><p><b>  RET</b></p><p>  DISPLAY1ENDP</p><p>  DISPLAY2PROCNEAR</p><p><b>  PUSHDX&

92、lt;/b></p><p><b>  PUSHBX</b></p><p>  CALLCLEAR</p><p>  MOVAX, CX</p><p><b>  DIVTEN</b></p><p>  MOVDI, AX</p>

93、<p>  MOVDX, CMD_8279;顯示數(shù)碼管點(diǎn)亮位置</p><p>  MOVAL, 92H</p><p>  OUTDX, AL</p><p>  MOVDX, DATA_8279</p><p>  LEABX, LED_TAB</p><p>  MOVAX, DI&l

94、t;/p><p><b>  XLAT</b></p><p>  OUTDX, AL;向數(shù)碼管寫AH中內(nèi)容</p><p>  XCHGAL, AH</p><p><b>  XLAT</b></p><p>  OUTDX, AL;向數(shù)碼管寫AL中內(nèi)容<

95、/p><p>  EXIT1:POPBX</p><p><b>  POPDX</b></p><p><b>  RET</b></p><p>  DISPLAY2ENDP</p><p><b>  ;8255初始化</b></p&

96、gt;<p>  INIT8255PROC NEAR</p><p>  MOVDX,COM_ADD</p><p>  MOVAL,80H;PA、PB、PC為基本輸出模式1=方式字標(biāo)志位,00=A口0方式,0=A口輸出,0=C口輸出,0=B口0方式,00=B口和C口輸出</p><p>  OUTDX,AL</p>&l

97、t;p>  MOVDX,PA_ADD;燈全熄滅</p><p>  MOVAL,0FFH</p><p>  OUTDX,AL</p><p>  INIT8255ENDP</p><p><b>  ;8279初始化</b></p><p>  INIT8279 PR

98、OC NEAR</p><p>  MOV DX,CMD_8279;CMD_8279為寫命令地址、讀狀地址</p><p>  MOV AL,34H ;可編程時鐘設(shè)置,設(shè)置分頻系數(shù)(20分頻)</p><p>  OUT DX,AL</p><p>  MOV AL,0;8*

99、8字符顯示,左邊輸入,外部譯碼鍵掃描方式</p><p>  OUT DX,AL</p><p>  CALL INIT8279_1</p><p><b>  RET</b></p><p>  INIT8279 ENDP</p><p>  INIT8279_1

100、 PROC NEAR </p><p>  CALL CLEAR;清顯示</p><p>  MOV AL,90H;從第一個數(shù)碼管開始移位顯示</p><p>  OUT DX,AL </p><p><b>  RET</b></p><p&

101、gt;  INIT8279_1 ENDP</p><p>  CLEAR PROC NEAR</p><p><b>  PUSHDX</b></p><p><b>  PUSHAX</b></p><p>  MOV DX,CMD_8279</p>

102、<p>  MOV AL,0DEH ; 清除命令</p><p>  OUT DX,AL</p><p>  WAIT1: IN AL,DX</p><p>  TEST AL,80H</p><p>  JNZ WAIT1; 顯示RAM清除完畢嗎?</p&

103、gt;<p><b>  POPAX</b></p><p><b>  POPDX</b></p><p><b>  RET</b></p><p>  CLEAR ENDP</p><p>  DL500msPROCNEAR</p&g

104、t;<p><b>  PUSHAX</b></p><p><b>  PUSHDX</b></p><p>  MOVDX,500;延時500ms</p><p>  MOVAH,0FFH;星研公司提供的軟中斷</p><p><b>  INT21H

105、</b></p><p><b>  POPDX</b></p><p><b>  POPAX</b></p><p><b>  RET</b></p><p>  DL500msENDP</p><p>  DL1S

106、PROCNEAR</p><p><b>  PUSHAX</b></p><p><b>  PUSHDX</b></p><p>  MOVDX,950;延時500ms</p><p>  MOVAH,0FFH;星研公司提供的軟中斷</p><p>

107、;<b>  INT21H</b></p><p><b>  POPDX</b></p><p><b>  POPAX</b></p><p><b>  RET</b></p><p>  DL1SENDP</p>

108、<p>  DL3SPROCNEAR</p><p><b>  PUSHCX</b></p><p><b>  MOVCX,6</b></p><p>  DL3S1:CALLDL500ms</p><p>  LOOPDL3S1</p>&

109、lt;p><b>  POPCX</b></p><p><b>  RET</b></p><p><b>  ENDP</b></p><p>  DL5SPROCNEAR</p><p><b>  PUSHCX</b>&l

110、t;/p><p>  MOVCX,10</p><p>  DL5S1:CALLDL500ms</p><p>  LOOPDL5S1</p><p><b>  POPCX</b></p><p><b>  RET</b></p><

111、;p><b>  ENDP</b></p><p>  InitTimePROCNEAR</p><p>  LEADX, msg3;輸出提示信息</p><p>  MOVAH, 09H</p><p><b>  INT21H</b></p><p

112、>  MOVCOUNT, 0;COUNT對應(yīng)的是按鍵的值比如按下16則COUNT值為2,此處限定時間設(shè)定最多為兩位數(shù)</p><p>  MOVDI, 0;DI值對應(yīng)需要設(shè)定的時間初值的次數(shù),如只設(shè)置紅綠燈時間和黃燈時間則DI為2</p><p>  LOOP0:CALLSCAN_KEY</p><p><b>  JNCNEXT&

113、lt;/b></p><p><b>  INCCOUNT</b></p><p>  CALL KEY_NUM ;鍵值轉(zhuǎn)換為鍵號</p><p>  MOVTEMP, AL;TEMP中存儲的是當(dāng)前鍵值</p><p>  MOVAL, [TIME+DI];將上一次的鍵值

114、乘10再加上本次鍵值即得到所設(shè)定的實(shí)際數(shù)值16=1*10+6</p><p><b>  MULTEN</b></p><p>  ADDAL, TEMP</p><p>  MOVBYTE PTR [TIME+DI], AL</p><p>  MOVAL, TEMP;數(shù)碼管顯示當(dāng)前鍵值</p>

115、;<p>  LEA BX,LED_TAB;字型碼表</p><p><b>  XLAT</b></p><p>  CALL WRITE_DATA ;向8279寫顯示的數(shù)值</p><p>  NEXT:CMPCOUNT, 2</p><p><b> 

116、 JNZLOOP0</b></p><p>  MOVCOUNT, 0</p><p><b>  INCDI</b></p><p><b>  CMPDI, 2</b></p><p>  JNZLOOP0</p><p>  EX:RET

117、</p><p>  InitTimeENDP</p><p>  ;4*4矩陣鍵盤對應(yīng)8279上為2列*8行,前兩行鍵(0—7)為1列,后兩行鍵</p><p> ?。?—15)為另一列。</p><p>  ;其中在同一行的行號為:0與8、1與9、2與A、3與B、4與C、5與D、6與E、7與F</p><p&g

118、t;  SCAN_KEY PROC NEAR</p><p>  MOVDX,CMD_8279</p><p>  INAL,DX;讀狀態(tài)</p><p>  READ_FIFO:ANDAL,7;0000 0111</p><p>  JZ NO_KEY ;是否有鍵按下</

119、p><p>  READ:MOV AL,40H</p><p>  OUT DX,AL;讀FIFO RAM </p><p>  MOVDX,DATA_8279</p><p><b>  INAL,DX</b></p><p><b>  STC;有

120、鍵</b></p><p>  SCAN_KEY1:RET</p><p>  NO_KEY: CLC;無鍵按下,清CY</p><p>  JMP SCAN_KEY1</p><p>  SCAN_KEY ENDP</p><p>  KEY_NUM PROC N

121、EAR</p><p>  AND AL,3FH;AND 00111111中間3位確定列號 末尾3位確定行號</p><p><b>  RET </b></p><p>  KEY_NUM ENDP</p><p>  WRITE_DATA PROC NEAR</p>

122、<p>  MOV DX,DATA_8279</p><p>  OUT DX,AL</p><p><b>  RET</b></p><p>  WRITE_DATA ENDP</p><p><b>  ;初始化</b></p><p&

123、gt;  IfExitPROCNEAR</p><p><b>  PUSHAX</b></p><p><b>  PUSHDX</b></p><p>  MOVAH,06H</p><p>  MOVDL,0FFH</p><p><b>  I

124、NT21H</b></p><p><b>  POPDX</b></p><p><b>  POPAX</b></p><p><b>  RET</b></p><p>  IfExitENDP</p><p>  InitP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論