版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計交通燈
- 課程設(shè)計—交通燈
- 交通燈課程設(shè)計
- 交通燈課程設(shè)計
- 交通燈課程設(shè)計
- 交通燈課程設(shè)計
- 交通燈設(shè)計數(shù)電交通燈課程設(shè)計數(shù)電交通燈設(shè)計
- 交通燈課程設(shè)計--基于fpga的交通燈設(shè)計
- 交通燈課程設(shè)計--plc實(shí)現(xiàn)交通燈控制設(shè)計
- 模擬交通燈課程設(shè)計--模擬交通燈的設(shè)計
- 交通燈課程設(shè)計--交通燈控制系統(tǒng)設(shè)計
- 交通燈課程設(shè)計--交通燈控制器
- 交通燈課程設(shè)計 (2)
- 交通燈微機(jī)課程設(shè)計
- eda交通燈課程設(shè)計
- plc交通燈課程設(shè)計
- 信號交通燈課程設(shè)計
- 課程設(shè)計--智能交通燈
- plc課程設(shè)計交通燈
- 模擬交通燈課程設(shè)計
評論
0/150
提交評論