版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 計(jì)算機(jī)科學(xué)與技術(shù)系</b></p><p><b> 微機(jī)原理與接口技術(shù)</b></p><p><b> 課程設(shè)計(jì)</b></p><p> 2013 01 14</p><p> 1、題意分析與解決方案</p><
2、;p> 1.1 題意需求分析</p><p> 根據(jù)以上題目所給的提示,我們對(duì)其進(jìn)行解析:首先假設(shè)有一個(gè)十字路口,1、3為南北方向,2、4為東西方向,初始為四個(gè)路口的紅燈全亮,之后,1、3路口的綠燈亮,2、4路口的紅燈亮,1、3路口方向通車; 延時(shí)一段時(shí)間后,1、3路口的綠燈熄滅,而1、3路口的黃燈開(kāi)始閃爍,閃爍若干次以后,1、3 路口紅燈亮, 而同時(shí)2、4路口的綠燈亮,2、4路口方向通車;延時(shí)一段時(shí)間
3、后,2、4 路口的綠燈熄滅,而黃燈開(kāi)始閃爍,閃爍若干次以后,再切換到1、3路口方向,之后重復(fù)上述過(guò)程。</p><p> 從題意需求分析本課程設(shè)計(jì)需要解決的問(wèn)題如下:</p><p> 怎樣定時(shí)?是采用硬件定時(shí)還是軟件定時(shí)?</p><p> 怎么控制交通燈的紅、綠、黃切換?</p><p> 怎樣模擬出東西、南北向信號(hào)燈倒計(jì)時(shí)的的效
4、果?</p><p> 怎樣更加具有使用價(jià)值,具有使用的靈活性?</p><p> 1.2解決方法及思路</p><p><b> 1.2.1硬件部分</b></p><p> 本課程設(shè)計(jì)的具體要求如下:</p><p> 通過(guò)8255A控制信號(hào)燈的輸出顯示</p><
5、;p> 通過(guò)8279A實(shí)現(xiàn)數(shù)碼管的倒計(jì)時(shí)顯示</p><p> 通過(guò)軟件延時(shí)實(shí)現(xiàn)交通燈的1S定時(shí)效果</p><p> 通過(guò)8279的鍵盤控制實(shí)現(xiàn)交通燈的初始時(shí)間設(shè)置</p><p> 本實(shí)驗(yàn)需要人為操作,故需要按鍵,主要用到的硬件是8279、8255以及矩陣鍵盤、數(shù)碼管、LED顯示燈。</p><p> 我們將LED指示燈接
6、在8255A的PA口,設(shè)置8255A的端口全為輸出。利用軟件進(jìn)行定時(shí),通過(guò)星研提供的軟件延時(shí)DELAY500MS,進(jìn)行0.5S的定時(shí)。由于本實(shí)驗(yàn)需要設(shè)置初始時(shí)間值,也就是需要設(shè)定紅綠燈的30S延時(shí)和黃燈的5S延時(shí)或其它時(shí)間。故在上電后需要通過(guò)鍵盤設(shè)置時(shí)間值。矩陣鍵盤第一行對(duì)應(yīng)0 1 2 3第二行對(duì)應(yīng)4 5 6 7 第三行對(duì)應(yīng)8 9 A B 第四行對(duì)應(yīng)C D E F一般設(shè)置時(shí)只需要前十個(gè)鍵即可。設(shè)定時(shí)規(guī)定最大值是兩位數(shù),需要依次設(shè)定兩次
7、,第一次是紅綠燈顯示時(shí)間,第二次是黃燈顯示時(shí)間。在本實(shí)驗(yàn)中控制鍵盤及數(shù)碼管的芯片為8279。8279有三種工作方式。鍵盤工作方式、顯示工作方式和傳感器工作方式,本實(shí)驗(yàn)采用第一、二種工作方式。8279需要連接2M的頻率輸入。通過(guò)其內(nèi)部控制字設(shè)定其分頻系數(shù)為20。定時(shí)對(duì)鍵盤進(jìn)行掃描以確定按下的鍵值。8279中的C連接端接數(shù)碼管的片選端,用于選擇數(shù)碼管的點(diǎn)亮位置。B連接端用于連接數(shù)碼管的段選,用于顯示數(shù)碼管的顯示數(shù)值。片內(nèi)總線與CPU連接,用
8、于接收命令字以及數(shù)據(jù)。8255在此次設(shè)計(jì)中的作用是,并行輸出CPU傳來(lái)的數(shù)據(jù),用于點(diǎn)亮LED指示燈。</p><p><b> 1.2.2軟件部分</b></p><p> 8255A是一個(gè)可編程芯片,我們可以通過(guò)程序?qū)?255A芯片進(jìn)行編程來(lái)實(shí)現(xiàn)本次課程設(shè)計(jì)所要求實(shí)現(xiàn)的所有功能。在本次實(shí)驗(yàn)中我們需要在程序中實(shí)現(xiàn)對(duì)LED指示燈的亮滅控制。初始時(shí)將8255A口設(shè)置工
9、作在方式0作為輸出口,通過(guò)對(duì)端口A的按位置1/復(fù)0來(lái)控制PA口對(duì)應(yīng)腳的輸出電平的高低。8279的初始化需要對(duì)可編程時(shí)鐘設(shè)置命令字、數(shù)碼管顯示及鍵盤掃描方式設(shè)置命令字。由于8279內(nèi)部所需的頻率為100KHZ,而當(dāng)外部輸入的固定頻率為2MHZ時(shí),需將命令字設(shè)為20,才可分頻出100KHZ的內(nèi)部頻率。故設(shè)置的命令字為34H。對(duì)于數(shù)碼管顯示的命令字設(shè)置,將其設(shè)定為8*8字符顯示,左邊輸入,外部譯碼鍵掃描方式。則所需的命令字為00H。另外在向8
10、279內(nèi)部RAM寫(xiě)入數(shù)據(jù)之前,需要先將其清空,即向8279寫(xiě)入0DEH將其內(nèi)部RAM全部置為0FFH。接著還需要有一個(gè)測(cè)試指令,測(cè)試其內(nèi)部RAM是否初始化完畢。若以上初始化都完成了,則8279的初始化則全部完成。8255及8279芯片初始化之后,即可以對(duì)其寫(xiě)入數(shù)據(jù)操作。對(duì)于8255只需要把8位數(shù)據(jù)送到8255中即可。1對(duì)應(yīng)LED燈的熄滅,0對(duì)應(yīng)其點(diǎn)亮。8279的數(shù)據(jù)</p><p><b> 2、硬件
11、設(shè)計(jì)</b></p><p><b> 2.1硬件電路設(shè)計(jì)</b></p><p> 各芯片主要管腳的功能如下:</p><p><b> 8255A</b></p><p> PC0:和8253的OUT0端相與后得到黃燈信號(hào),其中1表示亮,0表示暗</p><
12、;p> PC1:表示綠燈信號(hào),其中1表示亮,0表示暗</p><p> PC2:表示紅燈信號(hào),其中1表示亮,0表示暗</p><p> PC3:和8253GATE1端相連,為時(shí)器1的門控型號(hào)</p><p> PC4: 和8253GATE2端相連,為時(shí)器2的門控型號(hào)</p><p> PA0~PA7,PB0~PB7:可接兩個(gè)8
13、段LED顯示器,用于顯示當(dāng)前等亮?xí)r間</p><p><b> 8253:</b></p><p> 定時(shí)器0:輸入信號(hào)設(shè)為10KHZ,工作在方式3,輸出為1HZ方波OUT0和PC0相與得到黃燈信號(hào)。</p><p> 定時(shí)器1:輸入信號(hào)為OUT0,工作站方式2,計(jì)數(shù)初值為30,實(shí)現(xiàn)延遲30S后產(chǎn)生中斷??刂谱譃椋?1010100<
14、/p><p> 定時(shí)器2:輸入信號(hào)為OUT0,工作站方式2,計(jì)數(shù)初值為3,實(shí)現(xiàn)延遲3S后產(chǎn)生中斷。控制字為:10010100</p><p><b> 8259:</b></p><p> 采用邊沿觸發(fā),沒(méi)有級(jí)聯(lián),需要設(shè)ICW1,ICW2,ICW4,不用ICW3。</p><p><b> 硬件說(shuō)明:<
15、;/b></p><p> 8279是該程序?qū)崿F(xiàn)的重要的芯片,通過(guò)數(shù)碼管模擬倒計(jì)時(shí),鍵盤模擬倒計(jì)時(shí)的時(shí)間設(shè)置,8255PA口接Led指示燈指示交通燈的變換過(guò)程。依據(jù)8279的倒計(jì)時(shí)變化,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> 通過(guò)本次課程設(shè)計(jì),加強(qiáng)了自己的動(dòng)手實(shí)踐能力,操作能力及解決問(wèn)題的能力。并且通過(guò)查閱相關(guān)資料,學(xué)習(xí)書(shū)本及課堂中老師不曾介紹過(guò)的知識(shí).同時(shí)也學(xué)會(huì)了在動(dòng)手實(shí)踐的過(guò)程中,發(fā)現(xiàn)問(wèn)題,分析問(wèn)題,在最短的時(shí)間內(nèi)尋找問(wèn)題的解決方案。更重要的是通過(guò)本次的課程設(shè)計(jì),我學(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)識(shí)了8255A和8279的內(nèi)部構(gòu)造、控制字、方式字的設(shè)置以及通過(guò)8255A和8279控制輸出量。</p><p> 在這個(gè)過(guò)程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)驗(yàn)的缺乏失落過(guò)。生活就是這樣,汗水預(yù)示著結(jié)果也見(jiàn)證著收獲。雖然這只是一次的簡(jiǎn)單的課程設(shè)計(jì),可是平心而論,也耗費(fèi)了我們不
18、少的心血!通過(guò)這次課程設(shè)計(jì),我想說(shuō):為完成這次課程設(shè)計(jì)我們確實(shí)很辛苦,但苦中仍有樂(lè),和同學(xué)門這十幾天的一起工作的日子,讓我們有說(shuō)有笑,相互幫助,配合默契,多少人間歡樂(lè)在這里灑下,大學(xué)里一年的相處還趕不上這十來(lái)天的實(shí)習(xí),我感覺(jué)我和同學(xué)們之間的距離更加近了。這個(gè)工程確實(shí)很累,但當(dāng)我們?cè)O(shè)計(jì)成功的時(shí)候,當(dāng)我們連好線,按下按鈕,LED亮了起來(lái),喇叭響起來(lái)了,那是我一生以來(lái)聽(tīng)到的最好聽(tīng)的聲音,我們的心中就不免興奮,不免激動(dòng)。以前種種艱辛這時(shí)就變成了
19、最甜美的回憶!</p><p> 總的來(lái)說(shuō),雖然課程設(shè)計(jì)的時(shí)間有限,但在這有限的時(shí)間里,不僅完成了作業(yè),提交了結(jié)果,也豐富了這門硬件課程的更多知識(shí),更深入地了解了這門專業(yè)課的精髓,充分認(rèn)識(shí)理論知識(shí)對(duì)應(yīng)用技術(shù)的指導(dǎo)性作用,進(jìn)一步加強(qiáng)理論知識(shí)與應(yīng)用相結(jié)合的實(shí)踐和鍛煉。通過(guò)這次設(shè)計(jì)實(shí)踐能夠進(jìn)一步加深對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解,使自己的設(shè)計(jì)水平和對(duì)所學(xué)的知識(shí)的應(yīng)用能力以及分析問(wèn)題解決問(wèn)題的能力得到全面提高。&
20、lt;/p><p> 對(duì)我而言,知識(shí)上的收獲重要,精神上的豐收更加可喜。讓我知道了學(xué)無(wú)止境的道理。我們每一個(gè)人永遠(yuǎn)不能滿足于現(xiàn)有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財(cái)富,經(jīng)歷是一份擁有。這次課程設(shè)計(jì)必將成為我人生旅途上一個(gè)非常美好的回憶!</p><p> 2.2.2可編程并行接口芯片8255A</p><p> 1)8255A
21、的作用</p><p> 利用8255A將界限值和溫度值通過(guò)LED顯示出來(lái),同時(shí)8255A的PC0與DS18B20相連,向其發(fā)出溫度檢測(cè)命令及接受溫度數(shù)據(jù),PC5和蜂鳴器及發(fā)光二極管相連,用于聲光報(bào)警。 </p><p> 2)8255A的功能分析</p><p> 8255A是可編程并行接口,內(nèi)部有3個(gè)相互獨(dú)立的8位數(shù)據(jù)端口,即A口、B口和C口。三個(gè)端口都可
22、以作為輸入端口或輸出端口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號(hào)使用。8255A的工作只有當(dāng)片選CS效時(shí)才能進(jìn)行。而控制邏輯端口實(shí)現(xiàn)對(duì)其他端口的控制。</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ò)信號(hào),不使用中斷,三個(gè)通道中的每一個(gè)都有可以由程序選定作為輸入或輸出。</p><p><b> 通道的功能為:</b></p><p> 兩個(gè)8位通道:通道A和B。兩個(gè)四位通道:通
24、道C高4位和低四位,任何一個(gè)通道可以作輸入/輸出,輸入是不鎖存的,輸出是鎖存的,在方式0時(shí)各個(gè)通道的輸入/輸出可有16種不同的組合。8255A的置位/控制字表:</p><p> D7 D6 D5 D4 D3 D2 D1 D0</p><p> 寫(xiě)入位 編碼 0寫(xiě)入0</p
25、><p> D0-D7 000-111 1寫(xiě)入1</p><p> 2.2.3可編程并行接口芯片8279</p><p><b> 1)8279的作用</b></p><p> 在本設(shè)計(jì)中用8279芯片控制鍵盤輸入和LED顯示。</p><p> 2)8279的功能
26、分析</p><p> 8279A芯片是一種通用的可編程序的鍵盤/顯示接口器件,單個(gè)芯片就能完成鍵盤輸入和LED顯示控制兩種功能。可與任何8位機(jī)接口。8279A芯片包括鍵盤輸入和顯示輸出兩個(gè)部分。若采用8279作為鍵盤/顯示器接口,則可以實(shí)現(xiàn)對(duì)鍵盤、顯示器自動(dòng)掃描,8279主要是管理鍵盤輸入和顯示器輸出的。8279可編程鍵盤顯示器接口芯片具有動(dòng)態(tài)顯示驅(qū)動(dòng)電路簡(jiǎn)單、不占用CPU 的時(shí)間、可自動(dòng)進(jìn)行鍵盤掃描、與計(jì)算
27、機(jī)接口方便、編程容易、系統(tǒng)靈活等特點(diǎn).當(dāng)今已成為設(shè)計(jì)計(jì)算機(jī)應(yīng)用系統(tǒng),特別是實(shí)時(shí)性較高的測(cè)控系統(tǒng)的首選器件之一。</p><p> 圖2-2c 8279的內(nèi)部框圖</p><p> 圖中,IRQ:中斷請(qǐng)求輸出線,DB0~DB7:雙向數(shù)據(jù)總路線(傳送命令、數(shù)據(jù)、狀態(tài)),、:讀寫(xiě)控制輸入端,RESET:復(fù)位輸入端,CLK:時(shí)鐘輸入端,:片選,C和/D(A0):片內(nèi)寄存器選址,OUTA0~A1
28、、OUTB0~B3:8位顯示輸出端,:熄滅顯示輸出端,SL0~SL3:公用掃描輸出線,RL0~RL7:鍵盤回饋輸入線,SHIFT:抵擋鍵輸入線,CNTL/STB:控制/選通輸入線。另外,8279的鍵盤接口部分內(nèi)部有一個(gè)8×8位先進(jìn)先出的堆棧(FIFO),用來(lái)存放鍵盤輸入代碼,顯示器接口部分內(nèi)部有一個(gè)16×8位顯示RAM,用來(lái)顯示段數(shù)據(jù),能為16位LED顯示器(或其它顯示器)提供多路掃描接口。</p>&
29、lt;p> 3)8279的引腳信號(hào)和功能</p><p> 8279可編程鍵盤顯示器接口芯片具有動(dòng)態(tài)顯示驅(qū)動(dòng)電路,不占用CPU 的時(shí)間、可自動(dòng)進(jìn)行鍵盤掃描、與計(jì)算機(jī)接口方便、編程容易、系統(tǒng)靈活等特點(diǎn)。 8279A是可編程的鍵盤/顯示接口芯片。它既具有按鍵處理功能,又具有自動(dòng)顯示功能,在單片機(jī)系統(tǒng)中應(yīng)用很廣泛。8279A內(nèi)部有鍵盤 FIFO (先進(jìn)先出堆棧)/傳感器,雙重功能的 8×8=64B
30、RAM,鍵盤控制部分可控制 8×8=64 個(gè)按鍵或 8×8 陣列方式的傳感器。該芯片能自動(dòng)消抖并具有雙鍵鎖定保護(hù)功能。顯示 RAM容量為 16×8,即顯示器最大配置可達(dá) 16 位 LED數(shù)碼顯示。</p><p> 4)8279的命令字及其格式</p><p> 8279三種工作方式:鍵盤工作方式、顯示工作方式和傳感器工作方式。</p>&l
31、t;p> 鍵盤工作方式:雙鍵互鎖和N鍵輪回。雙鍵互鎖是指當(dāng)有兩個(gè)以上按鍵同時(shí)按下時(shí),只能識(shí)別最后一個(gè)被釋放的按鍵,并把其鍵值送入內(nèi)部FIFO RAM中。N鍵輪回是指當(dāng)有多個(gè)按鍵同時(shí)按下時(shí),所有按鍵的鍵值均可按掃描順序依次存入FIFO RAM中。</p><p> 顯示工作方式:是指CPU輸入至8279內(nèi)部FIFO RAM的數(shù)據(jù)的輸出格式,有8個(gè)字符左端入口顯示、16個(gè)字符左端入口顯示、8個(gè)字符右端入口顯
32、示、16個(gè)字符右端入口顯示四種方式。</p><p> 傳感器方式:是指掃描傳感器陣列時(shí),一旦發(fā)現(xiàn)傳感器的狀態(tài)發(fā)生變化就置位INT向CPU申請(qǐng)中斷。</p><p> 選擇不同的工作方式均是通過(guò)CPU對(duì)8279送入命令來(lái)進(jìn)行控制。8279共有8種命令,命令寄存器為8位,其中D7~D5為命令特征位,D4~D0為命令的控制位。CPU對(duì)8279寫(xiě)入的命令數(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、:用來(lái)設(shè)定顯示方式,如表1-2所示。</p><p> 表2-1 顯示方式選擇</p><p> 所謂左入口 ,即顯示位置從最左一位(最高位)開(kāi)始,以后逐次輸入的顯示字符逐個(gè)向右順序排列;所謂右入口,則是顯示位置從最右一位(最低位)開(kāi)始,以后逐次輸入顯示字符時(shí),已有的顯示字符依次向左移動(dòng)。KKK(D2、D1、D0):用來(lái)設(shè)定七種鍵盤/顯示掃描方式,如表2-2所示。</p>
35、<p> 表2-2 鍵盤/顯示掃描方式</p><p><b> (2)時(shí)鐘編程命令</b></p><p> 命令格式 : D7 D6 D5 D4 D3 D2 D1 D0</p><p> 其中:D7、D6、D5=001為時(shí)鐘命令特征位。PPPPP(D4、D3、D2、D1、D0)用
36、來(lái)設(shè)定外部輸入CLK時(shí)鐘脈沖的分頻系數(shù)N。N取值范圍為2~31。如CLK輸入時(shí)鐘頻率為2MHZ,PPPPP應(yīng)被置為10100(N=20),才可獲得8279內(nèi)部要求的100KHZ的時(shí)鐘頻率。</p><p> (3)讀FIFO/傳感器RAM命令</p><p> 命令格式: D7 D6 D5 D4 D3 D2 D1 D0</p>
37、<p> 其中:D7、D6、D5=010為讀FIFO/傳感器RAM命令特征位。該命令字只在傳感器方式時(shí)使用。在CPU讀傳感器RAM之前,必須用這條命令來(lái)設(shè)定所讀傳感器RAM中的地址。AAA(D2、D1、D0)為傳感器RAM中的八個(gè)字節(jié)地址。AI(D4)為自動(dòng)增量特征位。當(dāng)AI=1時(shí),每次讀出傳感器RAM后地址自動(dòng)加1使地址指向下一個(gè)存儲(chǔ)單元。這樣,下一個(gè)數(shù)據(jù)便從下一個(gè)地址讀出,而不必重新設(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命令字的特征位。該命令字用來(lái)設(shè)定將要讀出的顯示RAM地址。AAAA(D3、D2、D1、D0)用來(lái)尋址顯示RAM中的存儲(chǔ)單元。由于位顯示RAM中有16個(gè)字節(jié)單元,故需要4位尋址。AI(D4)為自動(dòng)增量特征位。AI=1時(shí),每次讀出后地址自動(dòng)加1,指向下一地址。</p><p> ?。?)寫(xiě)顯示RAM命令</p><p> 命令格式: D7 D6 D5 D4
40、 D3 D2 D1 D0 </p><p> 其中:D7、D6、D5=100為寫(xiě)顯示RAM命令字的特征位。在寫(xiě)顯示RAM之前用這個(gè)命令字來(lái)設(shè)定將要寫(xiě)入的顯示RAM地址。AAAA(D3、D2、D1、D0)為將要寫(xiě)入的顯示RAM中的存儲(chǔ)單元地址。AI(D4)為自動(dòng)增量特征位。AI=1時(shí),每次寫(xiě)入后地址自動(dòng)加1,指向下一次寫(xiě)入地址。</p><p>
41、(6)顯示禁止寫(xiě)入/消隱命令</p><p> 命令格式: D7 D6 D5 D4 D3 D2 D1 D0 </p><p> 其中:D7、D6、D5=101為顯示禁止寫(xiě)入/消隱命令特征位。</p><p> IW/A、IW/ B(D3、D2)為A、B組顯示RAM寫(xiě)入屏蔽位。當(dāng)A組的屏蔽位D3=1
42、時(shí),A組的顯示RAM禁止寫(xiě)入。因此,從CPU寫(xiě)入顯示器RAM數(shù)據(jù)時(shí),不會(huì)影響A的顯示。這種情況通常在采用雙4位顯示器時(shí)使用。因?yàn)閮蓚€(gè)四位顯示器是相互獨(dú)立的。為了給其中一個(gè)四位顯示器輸入數(shù)據(jù)而又不影響另一個(gè)四位顯示器,因此必須對(duì)另一組的輸入實(shí)行屏蔽。BL/A、BL/ B(D1、D0)為消隱設(shè)置位。用于對(duì)兩組顯示輸出消隱。若BL=1,對(duì)應(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)用來(lái)置空FIF
44、O存儲(chǔ)器,當(dāng)CF=1時(shí),執(zhí)行清除命令后,F(xiàn)IFO RAM被置空,使INT輸出線復(fù)位。同時(shí),傳感器RAM的讀出地址也被置為0。CA (D0)為總清的特征位。它兼有CD和CF的聯(lián)合效能。在CF =1時(shí),對(duì)顯示的清除方式由D3、D2的編碼決定。顯示RAM清除時(shí)間約需160us。在此期間狀態(tài)字的最高位Du=1,表示顯示無(wú)效。CPU不能向顯示RAM寫(xiě)入數(shù)據(jù)。</p><p> ?。?)結(jié)束中斷/錯(cuò)誤方式設(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)變化時(shí),掃描檢測(cè)電路就將其狀態(tài)寫(xiě)入傳感器R
46、AM,并啟動(dòng)中斷邏輯,使INT變高,向CPU 請(qǐng)求中斷,并且禁止寫(xiě)入傳感器RAM。此時(shí),若傳感器RAM 讀出地址的自動(dòng)遞增特性沒(méi)有置位(AI=0),則中斷請(qǐng)求INT在CPU第一次從傳感器RAM讀出數(shù)據(jù)時(shí)就被清除。若自動(dòng)遞增特征已置位(AI=1),則CPU對(duì)傳感器RAM 的讀出并不能清除INT,而必須通過(guò)給8279寫(xiě)入結(jié)束中斷/錯(cuò)誤方式設(shè)置命令才能使INT變低。因此,在傳感器工作方式中,此命令用來(lái)結(jié)束傳感器RAM的中斷請(qǐng)求。</p&
47、gt;<p> ?、谧鳛樘囟ㄥe(cuò)誤方式設(shè)置命令。在8279已被設(shè)定為鍵盤掃描N鍵輪回方式以后,如果CPU給8279又寫(xiě)入結(jié)束中斷/錯(cuò)誤方式設(shè)置命令(E=1),則8279將以一種特定的錯(cuò)誤方式工作。這種方式的特點(diǎn)是:在8279的消抖周期內(nèi),如果發(fā)現(xiàn)多個(gè)按鍵同時(shí)按下,則FIFO狀態(tài)字中的錯(cuò)誤特征位S/E將置1,并產(chǎn)生中斷請(qǐng)求信號(hào)和禁止寫(xiě)入FIFO RAM。</p><p> 上述八種用于確定8279操作
48、方式的命令字皆由D7D6D5特征位確定,輸入8279后能自動(dòng)尋址相應(yīng)的命令寄存器。因此,寫(xiě)入命令字時(shí)唯一的要求是使數(shù)據(jù)選擇信號(hào)A0 =1。</p><p> 5)8279的狀態(tài)字及其格式 </p><p> 8279的FIFO狀態(tài)字,主要用于鍵盤和選通工作方式,以指示FIFO RAM中的字符數(shù)和有無(wú)錯(cuò)誤發(fā)生。</p><p> 其格式為: D7
49、 D6 D5 D4 D3 D2 D1 D0 </p><p> 其中:Du(D7)為顯示無(wú)效特征位。當(dāng) Du=1表示顯示無(wú)效。當(dāng)顯示RAM由于清除顯示或全清命令尚未完成時(shí),Du=1,此時(shí)不能對(duì)顯示RAM寫(xiě)入。</p><p> S/E(D6)為傳感器信號(hào)結(jié)束/錯(cuò)誤特征位。該特征位在讀出FIFO 狀態(tài)字時(shí)被讀出。而在執(zhí)行CF =1的清
50、除命令時(shí)被復(fù)位。當(dāng)8279工作在傳感器工作方式時(shí),若S/E=1,表示傳感器的最后一個(gè)傳感器信號(hào)已進(jìn)入傳感器RAM;而當(dāng)8279工作在特殊錯(cuò)誤方式時(shí),若S/E=1則表示出現(xiàn)了多鍵同時(shí)按下錯(cuò)誤。</p><p> O、U(D5、D4)為超出、不足錯(cuò)誤特征位。對(duì)FIFO RAM 的操作可能出現(xiàn)兩種錯(cuò)誤:超出或不足。當(dāng)FIFO RAM 已經(jīng)充滿時(shí),其它的鍵盤數(shù)據(jù)還企圖寫(xiě)入FIFO RAM ,則出現(xiàn)超出錯(cuò)誤,超出錯(cuò)
51、誤特征位O(D5)置1;當(dāng)FIFO RAM已經(jīng)置空時(shí),CPU還企圖讀出,則出現(xiàn)不足錯(cuò)誤,不足錯(cuò)誤特征位U(D4)置1。</p><p> F(D3)表示FIFO RAM中是否已滿標(biāo)志,若F=1表示已滿。</p><p> NNN(D2、D1、D0)表示FIFO RAM中的字符數(shù)據(jù)個(gè)數(shù)。</p><p> 6)數(shù)據(jù)輸入/輸出格式</p>&l
52、t;p> 對(duì)8279輸入/輸出數(shù)據(jù)不僅要先確定數(shù)據(jù)地址口,而且數(shù)據(jù)存放也要按一定格式,其格式在鍵盤和傳感器方式有所不同。</p><p> ?。?) 鍵盤掃描方式數(shù)據(jù)輸入格式</p><p> 鍵盤的行號(hào)、列號(hào)及控制鍵格式如下:</p><p> 圖2-3 鍵盤控制鍵格式</p><p> 控制鍵CNTL、SHIFT為單獨(dú)的開(kāi)關(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è)計(jì)需要用到LED顯示器顯示預(yù)設(shè)紅綠燈的定時(shí)及綠燈閃爍的定時(shí)值。</p><p> 2)七段LED顯示器功能分析</p><p> LED顯示器有共陽(yáng)極和共陰極
55、兩類。其中共陰極原理圖如下:</p><p> 圖2-4 LED顯示器原理圖</p><p> 七段LED顯示器可以控制在哪幾個(gè)數(shù)位上,哪幾個(gè)發(fā)光二極管亮,從而顯示數(shù)字。其工作原理:如果發(fā)光二極管共陽(yáng)極,則輸入為0時(shí)亮,為1時(shí)不亮,反之如果發(fā)光共陰極,則輸入1時(shí)亮,0時(shí)不亮。發(fā)光二極管時(shí)一種外加電壓超過(guò)額定電壓時(shí)發(fā)生擊穿,并因此能產(chǎn)生可發(fā)光的器件,數(shù)碼顯示器通常由多個(gè)發(fā)光二極管來(lái)組成七
56、段或八段筆畫(huà)顯示器,當(dāng)段組合發(fā)光時(shí),便會(huì)顯示某一個(gè)數(shù)碼管或字符,七段代碼的各位用作a—g和DP的輸入</p><p> 3)七段LED顯示器技術(shù)參數(shù)</p><p> 表2-4 LED顯示的技術(shù)參數(shù)</p><p> 主要參數(shù):此時(shí)的驅(qū)動(dòng)電流為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è)計(jì)中的作用</p><p> 本設(shè)計(jì)中,小鍵盤用于輸入十進(jìn)制數(shù)字。</p&
58、gt;<p> 2)小鍵盤的功能分析</p><p> 通常使用的鍵盤是矩陣結(jié)構(gòu)的。對(duì)于4×4=16個(gè)鍵的鍵盤,采用矩陣方式只要用8條引線和2個(gè)8位端口便完成鍵盤的連接。如圖,這個(gè)矩陣分為4行4列,如果鍵5按下,則第1行和第1列線接通而形成通路。如果第1行線接低電平,則鍵5的閉合,會(huì)使第1列線也輸出低電平。矩陣式鍵盤工作時(shí),就是按行線和列線的電平來(lái)識(shí)別閉合鍵的。 </p>
59、<p> 圖2-5b 4×4鍵盤矩陣圖</p><p> 行掃描法識(shí)別按鍵的原理如下:先使第0行接低電平,其余行為高電平,然后看第行是否有鍵閉合。這是通過(guò)檢查列線電位來(lái)實(shí)現(xiàn)的,即在第0行接低電平時(shí),看是否有哪條列線變成低電平。如果有某列線變?yōu)榈碗娖剑瑒t表示第0行和此列線相交位置上的鍵被按下;如果沒(méi)有任何一條列線為低電平,則說(shuō)明第0行沒(méi)有任何鍵被按下。此后,再將第1行接低電平,檢測(cè)是否有變
60、為低電平的列線。如此重復(fù)地掃描,直到最后一行。在掃描過(guò)程中,當(dāng)發(fā)現(xiàn)某一行有鍵閉合時(shí),也就是列線輸入中有一位為0時(shí),便退出掃描,通過(guò)組合行線和列線即可識(shí)別此刻按下的是哪一鍵。</p><p> 實(shí)際應(yīng)用中,一般先快速檢查鍵盤中是否有鍵按下,然后再確定按鍵的具體位置。為此,先使所有行線為低,然后檢查列線。這時(shí)如果列線有一位為0,則說(shuō)明必有鍵被按下, 采用掃描法可進(jìn)一步確定按鍵的具體位置。</p>&l
61、t;p> 2.3原理連接圖及說(shuō)明</p><p><b> 圖 2-1</b></p><p><b> 表2-1 連線說(shuō)明</b></p><p><b> 3、軟件設(shè)計(jì)</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.輸入時(shí)鐘2MHZ 3.8279內(nèi)部20分頻(100KHZ) </p><p> ;4.掃描計(jì)數(shù)器采用編碼工作方式(通過(guò)外部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號(hào)</p><p> Device_IDEQU8376;設(shè)備ID號(hào)&
65、lt;/p><p> .STACK100</p><p><b> .DATA</b></p><p> IO_Bit8_BaseAddress DW?</p><p> msg0DB'BIOS不支持訪問(wèn)PCI $'</p><p> msg1DB&
66、#39;找不到Star PCI9052板卡 $'</p><p> msg2DB'讀8位I/O空間基地址時(shí)出錯(cuò)$'</p><p> msg3DB'請(qǐng)?jiān)O(shè)置紅綠燈時(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讀寫(xiě)數(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í)間的位數(shù),最多兩位</p><p> TIMEDB2 DUP (0);用于記錄設(shè)置的時(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 ;從存儲(chǔ)單元[bx+al]中取一個(gè)字節(jié)送到al
74、寄存器</p><p> OUTDX,AL;東西綠燈,南北紅燈</p><p><b> MOVAH, 0</b></p><p> MOV AL,[TIME];延時(shí)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];延時(shí)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=鍵值;如果之前沒(méi)有鍵按下,零標(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中存儲(chǔ)的是余數(shù),AL中存儲(chǔ)的是結(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ù)碼管顯示倒計(jì)時(shí)值</p><p> LEABX,LED_TAB</p><p><b> MOVAX,DI</b></p><
87、;p> XLAT ;從存儲(chǔ)單元[bx+al]中取一個(gè)字節(jié)送到al寄存器</p><p><b> OUTDX,AL</b></p><p> MOVAX,DI;寫(xiě)一次計(jì)時(shí)值</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未計(jì)時(shí)完成跳轉(zhuǎn)至NEXT0處繼續(xù)倒計(jì)時(shí)<
89、;/p><p><b> CMPAL,0</b></p><p> JZEXIT0;AL計(jì)時(shí)完成跳轉(zhuǎn)至EXIT0倒計(jì)時(shí)結(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ù)碼管寫(xiě)AH中內(nèi)容</p><p> XCHGAL, AH</p><p><b> XLAT</b></p><p> OUTDX, AL;向數(shù)碼管寫(xiě)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為寫(xiě)命令地址、讀狀地址</p><p> MOV AL,34H ;可編程時(shí)鐘設(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;從第一個(gè)數(shù)碼管開(kāi)始移位顯示</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;延時(shí)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;延時(shí)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對(duì)應(yīng)的是按鍵的值比如按下16則COUNT值為2,此處限定時(shí)間設(shè)定最多為兩位數(shù)</p><p> MOVDI, 0;DI值對(duì)應(yīng)需要設(shè)定的時(shí)間初值的次數(shù),如只設(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)換為鍵號(hào)</p><p> MOVTEMP, AL;TEMP中存儲(chǔ)的是當(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寫(xiě)顯示的數(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矩陣鍵盤對(duì)應(yīng)8279上為2列*8行,前兩行鍵(0—7)為1列,后兩行鍵</p><p> ?。?—15)為另一列。</p><p> ;其中在同一行的行號(hào)為: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;無(wú)鍵按下,清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位確定列號(hào) 末尾3位確定行號(hào)</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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)交通燈
- 課程設(shè)計(jì)—交通燈
- 交通燈課程設(shè)計(jì)
- 交通燈課程設(shè)計(jì)
- 交通燈課程設(shè)計(jì)
- 交通燈課程設(shè)計(jì)
- 交通燈設(shè)計(jì)數(shù)電交通燈課程設(shè)計(jì)數(shù)電交通燈設(shè)計(jì)
- 交通燈課程設(shè)計(jì)--基于fpga的交通燈設(shè)計(jì)
- 交通燈課程設(shè)計(jì)--plc實(shí)現(xiàn)交通燈控制設(shè)計(jì)
- 模擬交通燈課程設(shè)計(jì)--模擬交通燈的設(shè)計(jì)
- 交通燈課程設(shè)計(jì)--交通燈控制系統(tǒng)設(shè)計(jì)
- 交通燈課程設(shè)計(jì)--交通燈控制器
- 交通燈課程設(shè)計(jì) (2)
- 交通燈微機(jī)課程設(shè)計(jì)
- eda交通燈課程設(shè)計(jì)
- plc交通燈課程設(shè)計(jì)
- 信號(hào)交通燈課程設(shè)計(jì)
- 課程設(shè)計(jì)--智能交通燈
- plc課程設(shè)計(jì)交通燈
- 模擬交通燈課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論