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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  目錄1</b></p><p><b>  摘要1</b></p><p><b>  關(guān)鍵詞1</b></p><p><b>  第一章引言2</b>

2、;</p><p>  第二章 硬件系統(tǒng)設(shè)置3</p><p>  2.1 硬件系統(tǒng)原理圖3</p><p>  2.2 芯片資料介紹4</p><p>  2.2.1 8253芯片4</p><p>  2.2.1.1 8253內(nèi)部計(jì)數(shù)器的3個(gè)引腳4</p><p>  2.2.

3、1.2 8253的工作方式4</p><p>  2.2.1.3 8253的編程4</p><p>  2.2.2 8255芯片5</p><p>  2.2.2.1 連接外設(shè)的數(shù)據(jù)端口5</p><p>  2.2.2.2 8255工作方式5</p><p>  2.2.2.3 8255的編程

4、5</p><p>  2.2.3 8259芯片6</p><p>  2.2.3.1 8259的編程及操作方式6</p><p>  2.2.4 74ls240芯片7</p><p>  2.2.4.1 74ls240內(nèi)部結(jié)構(gòu)7</p><p>  2.2.4.2 芯片介紹7</p>

5、<p>  2.2.5 75452芯片7</p><p>  2.2.5.1 75452內(nèi)部結(jié)構(gòu)7</p><p>  2.2.5.2 芯片介紹8</p><p>  2.3 線路連線8</p><p>  2.3.1 實(shí)驗(yàn)連線8</p><p>  2.3.2 時(shí)鐘脈沖的產(chǎn)生8<

6、;/p><p>  2.3.3 鍵盤的設(shè)置9</p><p>  2.3.4 LED顯示器的設(shè)置10</p><p>  第三章 軟件系統(tǒng)設(shè)置12</p><p>  3.1程序流程圖12</p><p>  3.1.1 主程序流程圖12</p><p>  3.1.2 ‘0’ 處

7、理流程圖(開始計(jì)時(shí))13</p><p>  3.1.3 ‘1’處理流程圖(名次存儲(chǔ))13</p><p>  3.1.4 ‘2’ 處理流程圖(顯示成績(jī))14</p><p>  3.1.5‘3’處理流程圖(比賽結(jié)束1)15</p><p>  3.1.6 ‘4’處理流程圖(比賽結(jié)束2)15</p><p

8、>  3.1.7 中斷處理流程圖16</p><p>  3.2 參數(shù)信息17</p><p>  第四章 課程設(shè)計(jì)總結(jié)18</p><p>  4.1 心得體會(huì)18</p><p>  4.2 源程序清單19</p><p>  4.3 參考文獻(xiàn)25</p><p>&l

9、t;b>  摘要</b></p><p>  數(shù)字式秒表是一種用于體育中田徑比賽的一種計(jì)時(shí)裝置。</p><p>  本次課程設(shè)計(jì)是做一個(gè)數(shù)字式秒表,主要是利用8253作為定時(shí)器,為秒表提供定時(shí)脈沖,使用7段碼顯示器作為秒表時(shí)間顯示,用鍵盤控制秒表。 </p><p>  數(shù)字式秒表擁有以下幾點(diǎn)功能:</p><p>  1

10、:可控制比賽的開始和結(jié)束和繼續(xù)比賽;</p><p>  2:可記錄成績(jī),依次排名,給予顯示在第一位;</p><p>  3:可通過按鍵關(guān)閉設(shè)備</p><p><b>  關(guān)鍵詞</b></p><p>  80X86,8259中斷,8255,8253,鍵盤,LED動(dòng)態(tài)顯示 </p><p>

11、;<b>  引言</b></p><p>  微型計(jì)算機(jī)的新技術(shù)、新機(jī)型,新應(yīng)用層出不窮,日新月異。使得微機(jī)硬件得到飛速發(fā)展!人們對(duì)計(jì)算機(jī)計(jì)算的精度和軟件的逐步更新提出更高的要求。</p><p>  秒表在我們的生活總運(yùn)用比較廣泛,從各項(xiàng)體育賽事,到個(gè)人手機(jī)上的倒計(jì)時(shí)器,無處不在,怎樣提高其計(jì)算精度,提高運(yùn)算效率成為首要因素,基于此,此次課設(shè)我們用匯編語言,利用8

12、086CPU和PCI試驗(yàn)箱進(jìn)行數(shù)字式秒表的制作,我們將從硬件系統(tǒng)設(shè)置、軟件系統(tǒng)設(shè)置、課設(shè)總結(jié)(包括匯編源代碼、硬件系統(tǒng)設(shè)置原理圖,參考文獻(xiàn))幾方面介紹本次課設(shè)的主要成果。</p><p>  此課設(shè)主要利用8253的定時(shí)器輸出為秒表提供定時(shí)脈沖,7段碼顯示器作為秒表時(shí)間顯示,用鍵盤控制秒表的工作過程。鍵盤控制秒表計(jì)時(shí)的開始,記錄,結(jié)束,計(jì)時(shí)結(jié)束后按相應(yīng)按鍵顯示所記錄的時(shí)間。計(jì)時(shí)范圍為1分鐘,滿1分鐘自動(dòng)退出比賽,

13、計(jì)時(shí)精度為0.1秒。</p><p>  第一章為引言,粗略地介紹此次課設(shè)的主要內(nèi)容。</p><p>  第二章為硬件系統(tǒng)設(shè)置,在此章中從基本芯片入手,介紹8253、8255、8259的內(nèi)部結(jié)構(gòu)功能、工作方式以及初始化編程和74LS240P,75425N的真值狀態(tài),工作環(huán)境,以便讀者更容易了解此課設(shè)的基本部件,對(duì)硬件原理有逐步深入的了解。另外,從鍵盤和LED顯示器的設(shè)定的原理、編程進(jìn)行詳

14、細(xì)的描述。</p><p>  第三章為軟件系統(tǒng)設(shè)置,在此章中我們從秒表的五大功能機(jī)制入手,軟件設(shè)置中,我們給出了主程序,中斷程序以及各功能模塊的程序流程圖,使之實(shí)現(xiàn)一目了然。此外,還給出了參數(shù)信息,增加了匯編源代碼的可讀性。</p><p>  第四章為課程設(shè)計(jì)總結(jié)。此部分包括心得體會(huì),附錄1(匯編源代碼,)和附錄2(參考文獻(xiàn))。</p><p>  在此課設(shè)中,

15、韓雁老師在硬件的檢測(cè),軟件的設(shè)置方面都給出了精心的指點(diǎn),在此表示衷心的感謝!</p><p>  第二章 硬件系統(tǒng)設(shè)置</p><p>  2.1 硬件系統(tǒng)原理圖</p><p>  此章節(jié)主要介紹硬件系統(tǒng)原理圖,其中鍵盤和顯示器在后面詳細(xì)介紹.</p><p>  數(shù)字式秒表系統(tǒng)構(gòu)成圖</p><p>  2.2 芯

16、片資料介紹</p><p>  此部分從芯片的工作方式以及初始化編程方面介紹8253、8255、8259芯片。</p><p>  2.2.1 8253芯片</p><p>  2.2.1.1 8253內(nèi)部計(jì)數(shù)器的3個(gè)引腳</p><p>  CLK(時(shí)鐘)——輸入,在計(jì)數(shù)過程中,此引腳上每輸入1個(gè)時(shí)鐘信號(hào)(下降沿),減1計(jì)數(shù)器的計(jì)數(shù)值將

17、減1</p><p>  GATE(門控)——輸入,控制計(jì)數(shù)器工作:</p><p>  軟件觸發(fā)時(shí),作用開啟/關(guān)閉計(jì)數(shù):高電平允許,低電平禁止。</p><p>  硬件觸發(fā)/重觸發(fā):上升沿將初值送入減1計(jì)數(shù)器</p><p>  OUT(計(jì)數(shù)器輸出)——輸出,根據(jù)設(shè)置工作方式的不同, OUT引腳可輸出單個(gè)或連續(xù)的波形信號(hào)。一般是在計(jì)數(shù)過程

18、結(jié)束時(shí)(計(jì)數(shù)值歸0),OUT引腳信號(hào)發(fā)生變化。</p><p>  2.2.1.2 8253的工作方式</p><p>  方式0 —— 計(jì)數(shù)結(jié)束中斷</p><p>  方式1 —— 可編程單穩(wěn)</p><p>  方式2 —— 連續(xù)負(fù)脈沖發(fā)生器</p><p>  方式3 —— 連續(xù)方波發(fā)生器</p>

19、<p>  方式4 —— 軟件觸發(fā)選通</p><p>  方式5 —— 硬件觸發(fā)選通</p><p>  本次課設(shè)中8253工作在方式3,此方式為可軟、硬件觸發(fā)的方波發(fā)生器,N=Fclk/Tclk,在本次設(shè)計(jì)中,F(xiàn)clK信號(hào)為1.193MHZ,輸出信號(hào)為100HZ,N為11930。其端口地址為40~43H,40H口用于計(jì)數(shù)器0,41H口用于計(jì)數(shù)器1,42H口用于計(jì)數(shù)器2,4

20、3H口用于狀態(tài)和控制口。</p><p>  2.2.1.3 8253的編程</p><p>  8253加電后的工作方式不確定,必須經(jīng)初始化編程后,才能正常工作</p><p><b>  初始化編程:</b></p><p><b>  先寫入控制字</b></p><p&

21、gt;<b>  再寫入計(jì)數(shù)初值</b></p><p>  工作后,可隨時(shí)讀取計(jì)數(shù)值</p><p>  一般先將計(jì)數(shù)值鎖存在通道內(nèi)的鎖存器中</p><p>  然后可分兩次讀取16位的計(jì)數(shù)值</p><p><b>  初始化程序片段:</b></p><p>  Mo

22、v al,計(jì)數(shù)器控制字</p><p>  Mov dx,控制寄存器端口</p><p>  Out dx,al</p><p>  Mov ax,計(jì)數(shù)器初值</p><p>  Mov dx,計(jì)數(shù)器端口</p><p>  Out dx,al ;寫計(jì)數(shù)器的初值低字節(jié)</p>

23、;<p>  Mov al,ah </p><p>  Out dx,al ;寫計(jì)數(shù)器計(jì)數(shù)初值高字節(jié)</p><p>  2.2.2 8255芯片</p><p>  2.2.2.1 連接外設(shè)的數(shù)據(jù)端口</p><p>  端口A:PA0-PA7 (A組控制)</p><p>

24、;  常作數(shù)據(jù)端口使用,功能最強(qiáng)大</p><p>  端口B:PB0-PB7 (B組控制)</p><p><b>  常作數(shù)據(jù)端口使用</b></p><p>  端口C:PC4-PC7 (A組控制), PC0-PC3 (B組控制)</p><p>  可作數(shù)據(jù)、狀態(tài)或控制端口使用可拆分成兩個(gè)4位端口分別輸入或輸出每

25、位可獨(dú)立進(jìn)行輸出控制(位控制)</p><p>  2.2.2.2 8255工作方式</p><p>  方式0:基本輸入輸出方式(不帶聯(lián)絡(luò))</p><p>  適用于無條件傳送和查詢方式的接口電路</p><p>  方式1:選通輸入輸出方式(帶輸入聯(lián)絡(luò)或輸出聯(lián)絡(luò))</p><p>  適用于查詢和中斷方式的接口

26、電路</p><p>  方式2:雙向選通方式(同時(shí)帶輸入聯(lián)絡(luò)和輸出聯(lián)絡(luò))</p><p>  適用于可雙向傳送數(shù)據(jù)的外設(shè),適用于查詢和中斷方式的接口電路</p><p>  2.2.2.3 8255的編程</p><p>  編程:只寫 1 個(gè)方式控制字到控制口。</p><p>  D7:方式字/復(fù)位字選擇位,‘

27、1’時(shí)為8255A方式控制字,‘0’時(shí)為PC口的置/復(fù)位控制字,當(dāng)D7為‘1’時(shí),其余各位的含義為:</p><p>  D6~D5:A組選擇方式選擇位?!?0’為方式0,‘01’為方式1,‘10’為方式2。</p><p>  D2:B組方式選擇位?!?’為方式0,‘1’為方式1.</p><p>  D4、D3、D1、D0:分別為PA口、PC7~PC4口、PB口

28、、PC3~PC0口輸入/輸出方式選擇位?!?’為輸出,‘1’為輸入。</p><p>  工作過程中:通過數(shù)據(jù)端口對(duì)外設(shè)數(shù)據(jù)進(jìn)行讀寫</p><p>  本次課設(shè)8255均工作在方式0,其把PA口、PB口和PC口的高4位、低4位都作為基本輸入/輸出口,可以獨(dú)立地設(shè)置為輸入或輸出方式。</p><p><b>  初始化程序片段:</b><

29、/p><p>  Mov al,方式選擇控制字</p><p>  Mov dx,端口號(hào) ;如果端口號(hào)>256,所以用dx間接尋址</p><p>  Out dx,al ;寫入控制寄存器</p><p>  2.2.3 8259芯片</p><p>  2.2.3

30、.1 8259的編程及操作方式</p><p><b>  初始化編程</b></p><p>  在8259開始工作前:</p><p>  用戶必須對(duì)8259A進(jìn)行初始化編程。通過寫入初始化命令字ICW對(duì)8259A進(jìn)行初始化</p><p><b>  中斷操作編程</b></p>

31、<p>  在8259A工作期間:</p><p>  可以隨時(shí)向8259A寫入操作命令字OCW,使之按用戶設(shè)置的新的工作方式進(jìn)行工作</p><p>  ,用戶還可以通過寫操作命令字OCW通知8259A</p><p><b>  操作方式編程</b></p><p>  OCW1,其格式為:</p

32、><p>  OCW1也可稱為屏蔽操作字,其被寫入8259內(nèi)部的中斷屏蔽寄存器IMR。OCW1的8位與IR0~I(xiàn)R7相對(duì)應(yīng),當(dāng)其某一位為1時(shí),即相應(yīng)IR上的輸入信號(hào)被屏蔽。IMR中的內(nèi)容在任何時(shí)候都可讀出或?qū)懭?,只要訪問奇口地址。</p><p>  OCW2,其用于設(shè)置中斷結(jié)束方式和優(yōu)先級(jí)循環(huán)方式。其格式為:</p><p>  OCW3,其用于設(shè)置特殊中斷屏蔽方式和

33、程序查詢方式、讀狀態(tài)方式。其格式為:</p><p><b>  初始化程序片段:</b></p><p>  Mov al,00010101B ;ICW1,邊沿觸發(fā),要ICW4,級(jí)聯(lián)要ICW3</p><p>  Out 20h,al ;寫入ICW1</p><p>  Mov

34、 al,00001000B ;ICW2:設(shè)置ir0中斷類型號(hào)</p><p>  Out 21h,al ;寫入ICW2</p><p>  Mov al,00000101B ;ICW3:主片8259A的IR2接從片INT</p><p>  Mov al,00000101B ;ICW4:不用緩沖,

35、正常中斷結(jié)束,非特殊全嵌套方式</p><p>  Out 21h,al ;寫入ICW4</p><p>  2.2.4 74ls240芯片</p><p>  2.2.4.1 74ls240內(nèi)部結(jié)構(gòu)</p><p>  74ls240內(nèi)部結(jié)構(gòu)</p><p>  2.2.4.2 芯片

36、介紹 </p><p><b>  真值表</b></p><p>  正常工作溫度及其壓值:25℃,5V,工作電流-15MA,24MA</p><p> 

37、 溫度范圍:-25-75℃,在此課設(shè)中用作反向驅(qū)動(dòng)器,增大輸出電流。</p><p>  2.2.5 75452芯片</p><p>  2.2.5.1 75452內(nèi)部結(jié)構(gòu)</p><p>  2.2.5.2 芯片介紹</p><p><b>  真值表</b></p><p>  正常工作

38、壓值范圍:4.75-5.25V.工作電流400MA,500MA</p><p>  正常工作溫度范圍:0-70℃,在此課設(shè)中用作反向驅(qū)動(dòng)器。</p><p><b>  2.3 線路連線</b></p><p>  此部分從實(shí)驗(yàn)連線,時(shí)鐘脈沖,鍵盤和LED顯示詳細(xì)介紹硬件部分的工作原理。</p><p>  2.3.1

39、 實(shí)驗(yàn)連線</p><p>  8255模塊的SWR、SRD分別連到ISA總線接口模塊的IOWR、IORD。</p><p>  8255模塊的數(shù)據(jù)(AD0~AD7)、地址線(A0~A7)分別連到ISA總線接口模塊的數(shù)據(jù)(LAD0~QD7)、地址線(LA0~LA7)。</p><p>  8255模塊選通線CE連到ISA總線接口模塊的IOY0。</p>

40、<p>  8255的PA0~PA7連到鍵盤顯示模塊的KD0~KD7;8255的PB0~PB3連到鍵盤顯示模塊的KL1~KL4;8255的PC0~PC3連到鍵盤顯示模塊KH1~KH4。</p><p>  2.3.2 時(shí)鐘脈沖的產(chǎn)生</p><p>  8253的D7到D0接總線上,gate端接高電平,out0接8259的IR0,通過次部分可以產(chǎn)生100hz的信號(hào),具體連線如

41、下圖:</p><p><b>  時(shí)鐘脈沖產(chǎn)生示意圖</b></p><p>  2.3.3 鍵盤的設(shè)置</p><p>  鍵盤的接口一般分為獨(dú)立式和矩陣式。</p><p>  獨(dú)立式按鍵就是各按鍵相互獨(dú)立、每個(gè)按鍵各接一根輸入線,一根輸入線上的按鍵是否按下不會(huì)影響其他輸入線上的工作狀態(tài)。因此,通過檢測(cè)輸入線的電

42、平狀態(tài)可以很容易判斷哪個(gè)按鍵被按下了。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。但每個(gè)按鍵需占用一根輸入線,在按鍵數(shù)量較多時(shí),輸入口浪費(fèi)大,電路結(jié)構(gòu)顯得很繁雜。故此種鍵盤適用于按鍵較少或操作速度較高的場(chǎng)合。若采用此方式,,各按鍵開關(guān)均采用上拉電阻,這是為了保證在按鍵斷開時(shí),各IO口線有確定的高電平。當(dāng)然如輸入口線內(nèi)部已有上拉電阻,則外電路的上拉電阻可省去。</p><p>  矩陣式鍵盤適用于按鍵數(shù)量較多的場(chǎng)合,它由

43、行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,一個(gè)4*4的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)含有16個(gè)按鍵的鍵盤。很明顯,在按鍵數(shù)量較多的場(chǎng)合,矩陣鍵盤與獨(dú)立式按鍵鍵盤相比,要節(jié)省很多的I/O口。行、列線分別接到按鍵的兩端。行線通過上拉電阻接到+5V上。平時(shí)無按鍵時(shí),行、列線處于高電平狀態(tài),而當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,因此行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定。按鍵的識(shí)別在此課設(shè)中采用掃描法。讓所有的列線處于低電平,當(dāng)有鍵按下時(shí),按鍵所在的行電

44、平將被拉成低電平,根據(jù)此行電平的變化,便能判定此行有鍵被按下。為了進(jìn)一步判定到底哪一列的鍵被按下,可在某一時(shí)刻只讓一條列線處于低電平,而其余所有列線處于高電平。</p><p><b>  鍵盤接線圖</b></p><p><b>  鍵盤掃描程序:</b></p><p>  prog: mov bl,0

45、 ;鍵號(hào)的初值為0 </p><p>  mov cl,0efh ;送掃描初值</p><p>  mov dl,4 ;計(jì)數(shù)值為行數(shù)</p><p>  frow: mov al,cl ;掃描一行</p><p>  mov dx,protc </p>&l

46、t;p>  rcl al,1 ;修改行掃描</p><p>  mov cl,al ;讀列線無效,判別是否有列線為低</p><p>  in al,dx</p><p>  and al,0fh</p><p>  cmp al,0fh</p><p>

47、  jnz fcol ;有列線為低電平,則轉(zhuǎn)fcol</p><p>  mov al,bl ;沒有則使鍵號(hào)寄存器的值=鍵號(hào)值+列數(shù)/行數(shù)</p><p>  add al,4 </p><p>  mov bl,al</p><p>  dec dl ;行

48、未掃描完,則轉(zhuǎn)frow</p><p>  jnz frow </p><p>  jmp down ;已掃描完,則轉(zhuǎn)down</p><p>  fcol: or al,0f0h ;此列為低電平,則轉(zhuǎn)proce</p><p>  rcr al,1 </p&g

49、t;<p>  jnc proce</p><p>  inc bl ;如果未找到低電平的列線,則使鍵號(hào)=鍵號(hào)+1,轉(zhuǎn)fcol繼續(xù)</p><p>  proce: …… ;鍵命令處理程序</p><p><b>  ……</b></p><p>  D

50、own:……. ;后續(xù)處理程序 </p><p>  2.3.4 LED顯示器的設(shè)置</p><p>  LED是7段碼顯示,并且是共陰的,將8255的PA0-PA7接到鍵盤顯示單元的KD0-KD7,PC0-PC3接到KH1-KH4,通過次部分可讓LED動(dòng)態(tài)顯示相應(yīng)的信息。</p><p><b>

51、  LED顯示器原理圖</b></p><p>  八位LED顯示程序:</p><p>  Led: mov di,offset buffdata ;指向緩沖區(qū)首地址</p><p>  Mov cl,80h ;使最左邊LED亮</p><p>  Disi: mov bl,

52、[di+1] ;bl中為要顯示的數(shù)</p><p><b>  Push bx</b></p><p><b>  Pop ax</b></p><p>  Mov bx,offset table ;段表首址送bx</p><p>  Xlat

53、 ;段碼送al</p><p>  Mov dx,porta ;段碼送段控端口porta</p><p>  Out dx,al </p><p>  Mov al,cl ;位掃描碼送為控端口portb</p>

54、;<p>  Mov dx,portb </p><p>  Out dx,al ;保存位掃描碼</p><p>  Push cx ;延時(shí)</p><p>  Mov cx,30h</p><p>  Delay: loop

55、delay</p><p><b>  Pop cx</b></p><p>  Cmp cl,01 ;顯示掃描到最右邊LED碼?</p><p>  Jz quit ;是,則已顯示一遍,退出</p><p>  Inc di

56、 ;否,則指向下一位LED</p><p>  Shr cl,1 ;位碼指向下一位</p><p>  Jmp disi ;顯示下一位LED</p><p>  Quit : ret</p><p>  Table: db c0

57、h,…,8eh ;0~F的段碼</p><p>  Buffdata: db 8dup(?) ;8個(gè)字節(jié)的緩沖區(qū)</p><p>  此課設(shè)使用共陰結(jié)構(gòu),陰極控制端為低電平,數(shù)碼顯示短輸入高電平時(shí)發(fā)亮。</p><p>  顯示器的工作方式有靜態(tài)顯示和動(dòng)態(tài)顯示。所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一個(gè)字符時(shí)

58、,相應(yīng)的二極管恒定地導(dǎo)通或截止。優(yōu)點(diǎn)是顯示穩(wěn)定,在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器的亮度大,在系統(tǒng)運(yùn)行過程中,僅在需要更新顯示內(nèi)容時(shí)CPU才執(zhí)行一次顯示更新子程序,大大節(jié)省了CPU的時(shí)間,提高CPU的利用率。</p><p>  所謂動(dòng)態(tài)顯示,就是一位一位地輪流點(diǎn)亮各位顯示器,對(duì)于每一位顯示器來說,每隔一段時(shí)間點(diǎn)亮一次。顯示器的亮度與導(dǎo)通電流有關(guān),也與點(diǎn)亮?xí)r間和間隔時(shí)間的比例有關(guān)。調(diào)整電流和時(shí)間參數(shù),可實(shí)現(xiàn)亮

59、度較高比較穩(wěn)定的顯示。此課設(shè)中使用的是動(dòng)態(tài)顯示,8255的A口作為掃描口,經(jīng)反向驅(qū)動(dòng)器75452接顯示器公共極,B口作為數(shù)據(jù)口,接到顯示器的各個(gè)段。</p><p>  第三章 軟件系統(tǒng)設(shè)置</p><p><b>  3.1程序流程圖</b></p><p>  此部分包括主程序,0處理流程圖,1處理流程圖,2處理流程圖,3處理流程圖,4處理

60、流程圖,中斷處理流程圖以及軟件設(shè)置各模塊能實(shí)現(xiàn)的功能。</p><p>  3.1.1 主程序流程圖</p><p>  該功能塊的主要作用:清顯示緩沖區(qū),使LED顯示燈開始顯示時(shí)值全為“0”,設(shè)置標(biāo)志單元的值。</p><p>  3.1.2 ‘0’ 處理流程圖(開始計(jì)時(shí)) </p><p>  3.1.3 ‘1’處理流程圖(名次存儲(chǔ)

61、) </p><p>  N </p><p><b>  Y</b>

62、</p><p><b>  N</b></p><p>  Y </p><p>  1功能塊:是記錄成績(jī),當(dāng)將按下2鍵時(shí)將LED燈顯示的時(shí)間存儲(chǔ)起來,并將該成績(jī)的名次存儲(chǔ)起來。首

63、先讀標(biāo)志單元,根據(jù)相應(yīng)單元的值來判斷是否繼續(xù)執(zhí)行。若可繼續(xù)執(zhí)行則將當(dāng)前的成績(jī)和名次存儲(chǔ),然后將名次變量加1。為了判斷是否記錄滿8個(gè)成績(jī),還需設(shè)置了一個(gè)記錄標(biāo)志,用于記錄當(dāng)前已記錄了幾個(gè)成績(jī),若記錄滿8個(gè),則清除可存儲(chǔ)標(biāo)志位,再按1</p><p>  鍵就不能再記錄數(shù)據(jù)了。</p><p>  3.1.4 ‘2’ 處理流程圖(顯示成績(jī)) </p><p><

64、b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p>  2功能塊:首先讀取標(biāo)志單元的信息,檢查其是否符合條件,若符合條件則取記錄數(shù),再將對(duì)應(yīng)數(shù)據(jù)輸出顯示,這

65、里要建立了一個(gè)標(biāo)志單元用來記錄當(dāng)前以經(jīng)顯示過的記錄數(shù),每輸出一個(gè)記錄,該標(biāo)志單元就加一,然后與總記錄數(shù)比較,若超過總記錄數(shù)則將該標(biāo)志單元清零。</p><p>  ‘3’處理流程圖(比賽結(jié)束1)</p><p>  3功能塊:退出返回DOS需要復(fù)原中斷矢量,若不復(fù)原中斷矢量,可能會(huì)發(fā)生不可預(yù)料的錯(cuò)誤,8259關(guān)中斷,cpu關(guān)中斷,關(guān)閉程序。</p><p>  3.

66、1.6 ‘4’處理流程圖(比賽結(jié)束2)</p><p>  4功能塊: 1.比賽結(jié)束將標(biāo)志單元的D0位(比賽開始/結(jié)束位)和D2位(可否存儲(chǔ)成績(jī)位)均置“0”,清空所有標(biāo)志,代表比賽結(jié)束</p><p>  2.顯示停止,并顯示最后一次顯示的內(nèi)容。</p><p>  3.1.7 中斷處理流程圖</p><p><b>  N

67、</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</

68、b></p><p><b>  N</b></p><p><b>  Y</b></p><p>  中斷處理程序在該設(shè)計(jì)中是很的重要的,數(shù)字式秒表時(shí)間的走動(dòng)、鍵盤掃描過程中對(duì)按鍵功能的執(zhí)行都要通過中斷程序來實(shí)現(xiàn)。</p><p>  首先進(jìn)入中斷程序就要保護(hù)現(xiàn)場(chǎng), 這一點(diǎn)是至關(guān)重要的。若

69、不保護(hù)CPU當(dāng)前的執(zhí)行狀態(tài),當(dāng)中斷程序返回時(shí),CPU有可能處在錯(cuò)誤的狀態(tài)。應(yīng)通過一系列推入堆棧指令來保護(hù)中斷時(shí)的現(xiàn)場(chǎng)。</p><p>  主程序的初始化中設(shè)置了中斷的頻率為每隔0.01秒發(fā)生一次,而我們要的精度是0.1秒。用count單元來記錄是否到0.1秒,將count單元的值和10比較,到10則為0.1秒,否則count值加1。秒單元值的變化與此類似,當(dāng)0.1秒單元值為10時(shí),秒低位單元的值才加1;當(dāng)秒低位

70、單元的值為10時(shí),秒高位單元值才加1,當(dāng)秒高位單元值為6時(shí)應(yīng)清零。計(jì)時(shí)滿1分鐘時(shí)自動(dòng)結(jié)束,在秒高位單元清零時(shí)還應(yīng)將D0(比賽開始/結(jié)束位)和D2(是否可存儲(chǔ)位)清零。</p><p><b>  3.2 參數(shù)信息</b></p><p>  inttype 定義8號(hào)中斷</p><p>  p8253ctr1 定義8253控制

71、口</p><p>  p8253ctr0 定義8253計(jì)數(shù)器1的端口</p><p>  p8255ct1 定義8255控制端口</p><p>  cnt1定義8253的初值(用于產(chǎn)生100HZ的信號(hào))</p><p>  display 定義顯示提示信息</p><p>  

72、asctab 定義一張表,用于顯示鍵盤輸入的顯示</p><p>  count定義計(jì)數(shù),用于0.1秒計(jì)一個(gè)數(shù)</p><p>  buff定義顯示緩沖期,并給顯示緩沖器定義初值為0</p><p>  mc 定義一個(gè)存儲(chǔ)空間,用于記錄8個(gè)選手的成績(jī)和名次</p><p>  bit

73、定義位選信號(hào)</p><p>  desg 定義一張共陽的LED表</p><p>  flag 定義標(biāo)識(shí)符flag</p><p>  point dw str 將地址傳給指針point</p><p>  mess 顯示桌面</p><

74、p>  第四章 課程設(shè)計(jì)總結(jié)</p><p><b>  4.1 心得體會(huì)</b></p><p>  本次課程設(shè)計(jì)從總體上來說是對(duì)芯片8253、8255,8259的應(yīng)用。8253用來產(chǎn)生產(chǎn)生時(shí)鐘脈沖;8255是一個(gè)并口,連接控制LED顯示器和鍵盤,8259是用來產(chǎn)生中斷。</p><p>  8253產(chǎn)生產(chǎn)生時(shí)鐘脈沖,并每0.1s給82

75、59產(chǎn)生一次中斷,通過CPU產(chǎn)生中斷響應(yīng),并掃描鍵盤,如果有鍵按下,則按照響應(yīng)的情況來判斷是否在中斷中進(jìn)行計(jì)數(shù),如果是0鍵按下,則開始計(jì)數(shù),計(jì)數(shù)的時(shí)候?qū)㈨憫?yīng)的字符輸?shù)斤@示緩沖器,并同過8255并口,動(dòng)態(tài)的顯示在LED上;如果是M鍵盤按下,仍舊計(jì)數(shù),并通過一個(gè)指針將當(dāng)前的數(shù)值傳到mc相應(yīng)的單元中,并進(jìn)行count計(jì)數(shù),判斷其是否超出限制,如果超出限制則停止計(jì)數(shù),如果沒有超出限制則進(jìn)行計(jì)數(shù);如果是P鍵按下,中斷中跳過計(jì)數(shù)部分,并將相應(yīng)要顯示

76、的內(nèi)容從mc中輸出到顯示緩沖區(qū),按照一個(gè)指針來循環(huán)顯示要顯示的內(nèi)容;如果按下的是4鍵,則表示比賽結(jié)束,將所有的標(biāo)志單元都清空,中斷中也跳過計(jì)數(shù)部分,輸出停留在最后顯示的內(nèi)容上;如果按下的是3鍵,則表示整個(gè)程序的運(yùn)行結(jié)束,8259關(guān)中斷,CPU關(guān)中斷。</p><p>  在程序中多次用到壓棧,彈出操作,目的是在中斷程序執(zhí)行前將所有中斷程序中用到的寄存器都入棧,在中斷結(jié)束之前都要將剛才入棧的寄存器出棧,在程序中多次

77、用到延時(shí)程序,在沒個(gè)高速設(shè)備相低速設(shè)備輸出的時(shí)候都要進(jìn)行延時(shí),在掃描鍵盤中,我們?cè)诎存I按下的時(shí)候和按鍵釋放的時(shí)候都進(jìn)行了延時(shí),確保按鍵的有效性和按鍵抖動(dòng)的濾去。在顯示單元我們用到動(dòng)態(tài)顯示的方法,既可以減少線路上的成本也可以提高資源的有效利用,我們將8255的A口用于顯示字符,8255的C口用于位選,選擇哪個(gè)LED將顯示數(shù)據(jù)。鍵盤單元中,我們也是使用8255來作為控制的接口,共用了8255的C口來輸出,8255的B口用來讀取,兩個(gè)口一起工

78、作來定位鍵盤上哪個(gè)鍵被按下。最終的課程設(shè)計(jì)能達(dá)到最初設(shè)定的目標(biāo)。</p><p>  在課程設(shè)計(jì)前幾天,我們組先用LED顯示、鍵盤控制8259A中斷三個(gè)程序?qū)ξ覀兊膬x器箱進(jìn)行了初步檢測(cè)。在確認(rèn)無誤后,對(duì)三條程序進(jìn)行累加,然后對(duì)五個(gè)功能鍵進(jìn)行分別設(shè)定,反復(fù)調(diào)試、編譯、鏈接,在老師的精心指導(dǎo)下完成了此次課程設(shè)計(jì),在此再次表示衷心的感謝!</p><p>  4.2 源程序清單</p&g

79、t;<p>  inttype equ 08h ;定義8號(hào)中斷</p><p>  p8253ctrl equ 43h ;定義8253控制口</p><p>  p8253cto equ 40h ;定義8253計(jì)數(shù)器

80、1的端口 </p><p>  p8255ctl equ 0c803h ;定義8255控制端口</p><p>  cnto equ 11930 ;用來計(jì)算頻率</p><p>  .model small

81、 ;定義為小模式</p><p>  .data ;數(shù)據(jù)段</p><p>  str db 36 dup (?) ;定義一個(gè)數(shù)組存放前八個(gè)成績(jī)</p><p>  flag db 0

82、 ;定義標(biāo)志位</p><p>  mc db 1 ;定義存放名次</p><p>  num db 1 ;定義名次</p><p>  count db 0

83、 ;定義計(jì)數(shù),用于0.1秒計(jì)一個(gè)數(shù)</p><p>  point dw str ;定義指針</p><p>  point2 dw str ;定義指針</p><p>  buff db 0,0,0,0

84、 ;定義顯示緩沖區(qū),用于顯示鍵盤輸入的顯示</p><p>  buff2 db 0,0,0,0 ;定義顯示緩沖區(qū),用于顯示鍵盤輸入的顯示</p><p>  bit db 1 ;定義位選信號(hào)</p><p>  

85、mess db '0-開始比賽 1-記錄成績(jī) 2-顯示成績(jī) 3-退出返回DOS 4-結(jié)束比賽 :',0dh,0ah,'$'</p><p>  dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h </p><p>  asctab db "0123456789ABCDEF" <

86、;/p><p>  .code ;代碼段</p><p>  mov ax,@data ;段地址初始化</p><p>  mov ds,ax </p><p>  mov ah,9

87、 ;9號(hào)調(diào)用,用于顯示提示信息</p><p>  lea dx,mess ;將mess的偏移量送給dx</p><p>  int 21h ;顯示提示信息</p><p>  mov al,36h

88、 ;寫8253方式字</p><p>  mov dx,p8253ctrl</p><p><b>  out dx,al</b></p><p>  mov ax,cnto </p><p>  mov dx,p8253cto ;寫初值</p><p&g

89、t;  out dx,al ;先寫低位</p><p><b>  mov al,ah</b></p><p>  out dx,al ;再寫高位</p><p>  mov al,81h

90、 ;8255初始化</p><p>  mov dx,p8255ctl ;將方式字輸出到8255控制口</p><p><b>  out dx,al</b></p><p>  mov al,inttype ;DOS調(diào)用,讀取中斷向量</p>

91、<p>  mov ah,35h ;es:bx=中斷向量 </p><p><b>  int 21h</b></p><p><b>  push es</b></p><p>  push bx ;

92、將cpu自己的8號(hào)中斷向量保護(hù) </p><p><b>  push ds</b></p><p>  mov ax,@data ;初始化</p><p><b>  mov es,ax</b></p><p>  mov dx,offset int

93、p ;取intp的偏移量 </p><p>  mov ax,seg intp ;取intp的段地址</p><p><b>  mov ds,ax</b></p><p>  mov al,inttype ;設(shè)置inttp

94、ye的新中斷向量</p><p>  mov ah,25h ; ES:BX=中斷向量</p><p><b>  int 21h</b></p><p>  pop ds ;ds出棧</p><p>  in

95、al,21h ;CPU開中斷(開IR0)</p><p>  and al,0feh</p><p>  out 21h,al</p><p><b>  sti</b></p><p>  ab: call button

96、 ;鍵盤調(diào)用</p><p>  cmp al,'3' ;判斷是否按下3號(hào)鍵</p><p>  jz rp ;如果是則轉(zhuǎn)向rp</p><p>  cmp al,'1'

97、 ;判斷是否按下3號(hào)鍵</p><p>  jz mp ;如果是則轉(zhuǎn)向mp</p><p>  cmp al,'4' ;判斷是否按下4號(hào)鍵</p><p>  jz ap

98、 ;如果是則轉(zhuǎn)向ap</p><p>  cmp al,'2' ;判斷是否按下2號(hào)鍵</p><p>  jz pp ;如果是則轉(zhuǎn)向pp</p><p>  cmp al,2 ;

99、判斷是否按下3號(hào)鍵</p><p>  jnz ab ;如果是則轉(zhuǎn)向ab</p><p>  OR flag,05h ;如果按鍵為2,則標(biāo)志位最后一位為1</p><p><b>  jmp ab</b></p><

100、p>  mp: test flag,04h ;存儲(chǔ)代碼 </p><p><b>  jz ab</b></p><p><b>  mov al,mc</b></p><p>  mov buff,al ;將第一位

101、的名次先放到buff,然后放到數(shù)組</p><p>  lea si,buff</p><p>  mov di,point</p><p><b>  mov cx,4</b></p><p><b>  cld</b></p><p><b>  rep mov

102、sw</b></p><p>  cmp mc,8 ;名次到了8,標(biāo)志位清0</p><p>  jz go ;轉(zhuǎn)向go段程序</p><p>  inc mc ;inc自加&l

103、t;/p><p>  add point,4</p><p><b>  jmp ab</b></p><p>  go: and flag,0fah</p><p>  lea bx,str</p><p>  mov point,bx</p><p><b>

104、;  jmp ab</b></p><p>  pp: and flag,0feh</p><p>  cmp num,9 ;判斷是否按過8次,如果不是則退出</p><p><b>  jz ab</b></p><p><b>  in

105、c num</b></p><p>  lea di,buff</p><p>  mov si,point2</p><p><b>  mov cx,4</b></p><p><b>  cld</b></p><p><b>  rep movs

106、w</b></p><p>  add point2,4</p><p><b>  jmp ab</b></p><p>  ap: push bx</p><p>  and flag,0 ;對(duì)標(biāo)志位和名次及num進(jìn)行初始化</p>

107、<p>  mov mc,1 ;名次置1</p><p>  mov num,1 ;計(jì)數(shù)置1</p><p>  lea bx,str </p><p>  mov point,bx</p><p>  mov point2

108、,bx</p><p>  mov buff,0 ;將1位顯示器緩沖器置0</p><p>  mov buff+1,0 ;將2位顯示器緩沖器置0</p><p>  mov buff+2,0 ;將3位顯示器緩沖器置0&

109、lt;/p><p>  mov buff+3,0 ;將4位顯示器緩沖器置0</p><p><b>  pop bx</b></p><p><b>  jmp ab</b></p><p>  rp: cli</p><p>

110、;<b>  pop dx </b></p><p><b>  pop ds</b></p><p>  mov al,inttype </p><p>  mov ah,25h</p><p>  int 21h ;dos調(diào)用</p

111、><p>  mov ah,4ch ;帶返回碼終結(jié)程序</p><p>  int 21h ;主程序結(jié)束</p><p>  intp: push si ;將ax、bx、dx、si、cx入棧,保護(hù)cpu

112、現(xiàn)場(chǎng)</p><p><b>  push di</b></p><p><b>  push ax</b></p><p><b>  push bx</b></p><p><b>  push cx</b></p><p>&

113、lt;b>  push dx</b></p><p>  test flag,01h ;判斷標(biāo)志位D0是否為1,為1則開始,否則不計(jì)數(shù)</p><p><b>  jz iexit</b></p><p>  inc count

114、 ;次數(shù)加1</p><p>  cmp count,10 ;將count與10比較</p><p>  jnz iexit ;若count不等于10,則轉(zhuǎn)iexit</p><p>  mov count,0 ;否

115、則count置0</p><p>  inc buff+3 ;秒的那位加1</p><p>  cmp buff+3,10 ;將秒的那位與10比較</p><p>  jnz iexit ;若秒的那位不等于10,則轉(zhuǎn)

116、iexit</p><p>  inc buff+2 ;否則向秒的高位進(jìn)1</p><p>  mov buff+3,0 ;秒位置0</p><p>  cmp buff+2,10 ;秒的高位與10比較</p>

117、<p>  jnz iexit ;不為10則轉(zhuǎn)iexit</p><p>  inc buff+1 ;否則分位加1</p><p>  mov buff+2,0 ;秒的高位置0</p><p>  c

118、mp buff+1,6 ;秒位與6比較</p><p>  jnz iexit ;若不等則轉(zhuǎn)iexit</p><p>  mov buff+1,0 ;分位置1</p><p>  and flag,0feh

119、 </p><p>  iexit: lea bx,dseg ;去數(shù)據(jù)表的首地址</p><p>  lea si,buff ;取緩沖區(qū)的首地址</p><p>  agi: mov al,[si]

120、 ;將si的內(nèi)容送給al</p><p>  xlat ;將ASCⅡ碼轉(zhuǎn)換成數(shù)據(jù)</p><p><b>  mov ah,al</b></p><p>  mov dx,0c801h</p><p>  mov al,bit&

121、lt;/p><p>  out dx ,al</p><p>  cmp al,04h ;判斷是否為第二位,是則加點(diǎn),否則繼續(xù)</p><p><b>  jnz q1</b></p><p>  and ah,7fh</p><p>  q1:

122、 mov dx,0c800h ;取相應(yīng)的段和位</p><p><b>  mov al,ah</b></p><p><b>  out dx,al</b></p><p><b>  mov di,30</b></p><p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論