版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘 要</b></p><p> 本設計主要采用元器件有8253計數(shù)器、8088CPU、8255A接口芯片、74LS138譯碼器、6位七段LED數(shù)碼管以及8*2鍵盤,此可調計時器用6位七段LED數(shù)碼管可顯示時、分、秒,并按正常時間顯示方式工作。如果顯示有誤差可以通過鍵盤上的按鍵分別對數(shù)顯時、分、秒這行調節(jié)校準,并且可以根據(jù)實際情況進行清零復位。</p&g
2、t;<p> 關鍵詞:硬件電路,軟件電路,計時器</p><p><b> 目 錄</b></p><p> 一、概述……………………………………………………………………………………… 3</p><p> 二、硬件電路設計…………………………………………………………………………… 4</p><p&g
3、t; 2.1構建簡單微機系統(tǒng)的思路……………………………………………………… 4</p><p> 2.2確定組成各部件的芯片…………………………………………………………… 5</p><p> 2.3.存儲器芯片,接口芯片與系統(tǒng)總線的連接……………………………………… 5</p><p> 2.4接口芯片與外圍設備的連接…………………………………………
4、…………… 5</p><p> 2.5 8255A芯片基本資料……………………………………………………………… 7</p><p> 2.6 8253計數(shù)器工作原理…………………………………………………………… 10</p><p> 2.7 8088 CPU 的引腳功能…………………………………………………………… 13</p><p&
5、gt; 2.8 74LS138工作方式…………………………………………………………………15</p><p> 2.9顯示電路的連接……………………………………………………………………16</p><p> 2.10 LED顯示器的工作方式………………………………………………………… 17</p><p> 2.11硬件接線圖…………………………………………
6、…………………………… 19</p><p> 三、軟件設計框圖……………………………………………………………………………20</p><p> 四、源程序……………………………………………………………………………………21</p><p> 課程設計體會……………………………………………………………………………… 33</p><p>
7、; 附錄1 ……………………………………………………………………………………… 34</p><p> 附錄2 ……………………………………………………………………………………… 35</p><p> 參考文獻…………………………………………………………………………………… 36</p><p><b> 可調計時器設計</b><
8、;/p><p><b> 一、概述</b></p><p> 課程設計是培養(yǎng)和鍛煉學生在學習完本門課后綜合應用所學理論知識,解決實際工程設計和應用問題的能力的重要教學環(huán)節(jié)。它具有動手、動腦和理論聯(lián)系實際的特點,是培養(yǎng)在校工科大學生理論聯(lián)系實際、敢于動手、善于動手和獨立自主解決設計實踐中遇到的各種問題能力的一個重要環(huán)節(jié)。</p><p><
9、b> 設計的目</b></p><p> 1)進一步建立微機系統(tǒng)概念、加深對系統(tǒng)程序理解和認識,提高微機系統(tǒng)的應用水平。</p><p> 2)進一步學習和掌握匯編語言程序的編寫和應用的方法,通過較大規(guī)模程序的編寫,提高編寫匯編語言的水平和學習程序調試方法。</p><p> 3)進一步熟悉接口、熟悉鍵盤控制和七段數(shù)碼管及其他芯片的使用。&
10、lt;/p><p><b> 設計要求</b></p><p> 畫出8255A與鍵盤顯示器的鏈接圖;</p><p> 2)畫出程序框圖并編寫程序完成如下功能:</p><p> 6位七段LED數(shù)碼管可顯示時、分、秒,并按正常時間顯示方法工作</p><p> 通過定義鍵盤的字母鍵,可對計
11、時器進行調整。使A鍵進入修改時鐘的狀態(tài);按B鍵可修改“秒”,秒位閃動,按數(shù)字鍵輸入;按C鍵可修改“分”,分位閃動,按數(shù)字鍵輸入;按D鍵可修改“時”,時位閃動,按數(shù)字鍵輸入;按E鍵退出修改時鐘狀態(tài);按F鍵清零復位。</p><p><b> 二、硬件電路設計</b></p><p> 2.1 構建簡單微機系統(tǒng)的思路</p><p> 微型
12、計算機由微處理器,存儲器,接口電路以及連接在這些部件上的總線組成。微處理器,存儲器和所有I\O設備之間的信息交換都通過總線進行。總線包括地址總線,數(shù)據(jù)總線和控制總線,他們始于CPU或終于CPU,現(xiàn)代微機大部分都是這種以總線為中心的結構。8088CPU的地址\數(shù)據(jù)總線AD15-AD0和地址\狀態(tài)總線A16/S3-A19/S6是復用的,必須通過地址鎖存器把地址總線和數(shù)據(jù)總線分離??刂瓶偩€直接和8088CPU相連,這樣8088CPU就工作在最
13、小工作方式。</p><p> 微型計算機及外圍設備組成微型計算機系統(tǒng)的硬件,外圍設備必須通過接口電路才能與系統(tǒng)總線相連,因此構建一個基于8088CPU的簡單微型計算機系統(tǒng)就是工作于最小工作方式的8088CPU系統(tǒng)總線上掛上一定規(guī)模的存儲器和接口電路,然后在把合適的外圍設備連接到接口電路上。一個基于8088CPU的簡單微型計算機系統(tǒng)框圖如圖所示。圖中鍵盤與顯示器作為外圍設備通過接口芯片與系統(tǒng)總線相連。</
14、p><p> 2.2確定組成各部件的芯片</p><p> 選擇芯片的原則是:要求芯片性能/性價比較高,市場可以買到。</p><p> 對于小型的微型計算機系統(tǒng),程序存儲器一般用EPROM,隨機存儲器一般采用SRAM。接口有簡單接口(例如74LS244,74LS273)和可編程接口(例如8255A),根據(jù)需要選擇。</p><p> 2
15、.3.存儲器芯片,接口芯片與系統(tǒng)總線的連接</p><p> 存儲器芯片,接口芯片與系統(tǒng)總線的連接就是如何把存儲器芯片和接口芯片掛到系統(tǒng)的三類總線上。</p><p> 存儲器芯片和接口芯片與數(shù)據(jù)總線的連接比較簡單,因為是簡單系統(tǒng),對數(shù)據(jù)總線的負載能力沒有特別的要求,所以只要把存儲器芯片和接口芯片的數(shù)據(jù)引腳與數(shù)據(jù)總線相應各位作并聯(lián)就可以。</p><p> 連
16、接到芯片上的控制總線不多,常用的有IO/M.RD.WR.RESET等信號,這些信號線也都是與各芯片的有關引腳做并聯(lián)連接。</p><p> 存儲器芯片,接口芯片與地址總線的連接原則上是一樣的:低地址線與存儲器芯片或接口芯片的地址引腳直接并聯(lián)連接,用來作為芯片內部單元的選擇,高位地址線經(jīng)譯碼器譯碼后一般連接到芯片的片選端,作為芯片的選擇。一般高位地址線的低位部分作為譯碼器的譯碼輸入,高位部分則作為譯碼器譯碼的許可
17、條件。由于8088CPU的端口地址采用獨立編址方式,為了區(qū)分是存儲器芯片地址還是接口芯片地址,一定要把IO/M信號參與到芯片的片選端控制。</p><p> 2.4接口芯片與外圍設備的連接</p><p> 采用8255接口芯片作為8*2鍵盤與6位七段數(shù)碼管顯示器的接口。</p><p> ?。?)8255接口芯片與8*2鍵盤的連接 8*2鍵盤是一種行列式鍵盤
18、,如圖2.4.1所示。</p><p> 圖中有8行2列,8根行線與PA口相連,2根列線與PC口的PC7、PC6相連。按鍵設置在行、列交點處,行、列線分別連接到按鍵開關的兩端。當列線通過上拉電阻接+5V時,就被鉗位在高電平狀態(tài)。鍵盤中有無按鍵按下是由行線送入全掃描字、列線讀入行線狀態(tài)來判斷的。這就是:給行線所有I/O線均置成低電平,然后讀入列線電平狀態(tài)。如果有按鍵按下,總會有一根列線電平被拉置底電平,從而使列線
19、輸入不全為1。</p><p> 鍵盤中哪一個鍵按下是由行線逐行置低電平后,檢查列線輸入狀態(tài)予以確定的。其方法是:依次給行線送低電平,然后查所有列線狀態(tài),如果全為l,則所按下之鍵不在此行。如果不全為1,則所按下之鍵必在此行。而且是在與0電平行線相交的交點上的那個鍵。</p><p> 鍵盤的工作方式采用編程掃描工作方式,即通過調用鍵盤子程序來響應鍵輸入的要求,在鍵盤掃描子程序中完成下述
20、功能:</p><p> 1)判斷鍵盤上有無鍵按下。其方法是先使PA7~PA0=O,然后讀PC7、PC6的狀態(tài),若為全l,則鍵盤中無鍵按下;若不全為1,則說明鍵盤中有鍵按下。</p><p> 2)去除按鍵的機械抖動影響。對于由機械觸點構成的按鍵,由于機械觸點的彈性作用,觸點在閉合及斷開瞬間有一個抖動過程,一般為5~10ms時間。為了消除抖動影響可作這樣處理:當判斷有鍵按下后,軟件延時
21、一段時間再判斷鍵盤狀態(tài),如果仍為有鍵按下狀態(tài),則認為有一個確定的鍵按下,否則按鍵抖動處理。</p><p> 3)求按下鍵的鍵值及鍵號。鍵盤上的縛個鍵都對應一個鍵值。鍵值的組成:低8位為掃描該鍵時的行線輸出值(PA7~PA0),高8位為該鍵按下時的列線輸入值(PC7、PC6為有效位,其余位令其為1),因而圖示中各鍵值依次為7FFEH、7FFDH、7FFBH、7FF7H、7FEFH、7FDFH、7FBFH、7F7
22、FH、BFFEH、BFFDH、BFFBH、BFF7H、BFEFH、BFDFH、BFBFH、BF7FH。本例中鍵盤中鍵號排列沒有規(guī)律(見圖2.4.1),不能通過對鍵值直接運算得到鍵號。因此必須先判斷按下鍵是使PC7=0還是PC6=0,然后再查為零的列線上鍵按下時其8位鍵值中是否有一位為零,若為零則可得到鍵值。求按下鍵鍵值及鍵號的目的是使程序轉到相應的地址去完成該鍵的操作。一般,對數(shù)字鍵就是直接將該號送到顯示緩沖區(qū)進行顯示,對功能鍵則必須先
23、找到該功能鍵處理程序入口地址,并轉去執(zhí)行該鍵的命令。因此當鍵號求到后,還必須找到功能鍵處理程序入口。</p><p> 4)為保證鍵閉合一次CPU僅進行一次鍵功能操作。程序中需要等待鍵釋放以后再將鍵號送累加器AH。</p><p> 鍵盤的工作方式還有定時掃描及中斷工作方式,前者是一種定時中斷,CPU響應中斷后對鍵盤進行掃描,并在有鍵按下時轉入鍵功能處理程序。中斷工作方式只有在鍵盤按下
24、時,才執(zhí)行鍵盤掃描,并執(zhí)行該鍵的功能程序。</p><p> (2)LED顯示器的工作方式LED顯示器有靜態(tài)和動態(tài)兩種工作方式。</p><p> LED顯示器工作在靜態(tài)顯示方式下,共陰極或共陽極連接在一起,然后接地或十5V;每位的段選線(A,B,…,G,H)與一個8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應的顯示字符。</p><p
25、> 在多位LED顯示時,為了簡化電路,降低成本,將所有位的段選線并聯(lián)在一起,由一個8位的I/O口控制,即控制段選碼而共陰極點或共陽極點分別由相應的I/O線控制即控制位選碼,這就是動態(tài)顯示。</p><p> 2.5 8255A芯片基本資料</p><p> 2.5.1 8255A內部結構如圖2.5.1所示</p><p> 圖2.5.1 8255A內部
26、結構</p><p> ?、?8255A3個8位數(shù)據(jù)接口,即接口A、接口B和接口C。使用者可以用軟件使它們分別作為輸入端口或輸出端口。</p><p> ?。?) 端口A:一個8位數(shù)據(jù)輸入鎖存器和一個8位數(shù)據(jù)輸出鎖存器/緩沖器,用來傳送數(shù)據(jù)。數(shù)據(jù)輸入均被鎖存。</p><p> (2) 端口B:一個8位數(shù)據(jù)輸入緩沖器和一個8位數(shù)據(jù)輸出鎖存器/緩沖器,用來傳送數(shù)據(jù)。
27、數(shù)據(jù)輸入時不被鎖存,數(shù)據(jù)輸出時被鎖存。</p><p> ?。?) 端口C:一個8位數(shù)據(jù)輸入緩沖器和一個8位數(shù)據(jù)輸出鎖存器/緩沖器。用作輸入端口時,數(shù)據(jù)不被鎖存;而作為輸出端口是,數(shù)據(jù)被鎖存。</p><p> ?、?A組控制和B組控制</p><p> 這兩組控制電路一方面接收芯片內部總線上的控制字,一方面接收來自讀/寫控制邏輯電路的讀/寫命令,從而解決端口的工
28、作方式和讀/寫操作。其中,A組控制電路控制端口A和端口C高4位(PC7-PC4)的工作方式和讀/寫操作:而B組控制電路控制端口B和端口C低4位(PC3-PC0)工作方式和讀寫操作。</p><p> ③ 讀/寫控制邏輯電路</p><p> 讀/寫控制邏輯電路負責管理8255A的數(shù)據(jù)傳輸過程。它接收來自系統(tǒng)總線的信號A1,A0和控制總線信號RESET、WR、RD,將這些信號組合后,得到
29、A組控制部件和B組控制部件的控制命令,并將命令發(fā)給這兩個部件,完成對數(shù)據(jù)、狀態(tài)信息的傳輸。</p><p><b> ?、?數(shù)據(jù)總線緩沖器</b></p><p> 這是個雙向三態(tài)8位數(shù)據(jù)緩沖器,8255A通過它與系統(tǒng)數(shù)據(jù)總線相連。輸入數(shù)據(jù)、輸出數(shù)據(jù)、CPU發(fā)給8255A的控制字都是通過這個緩沖器傳遞的。</p><p> 2.5.2 82
30、55的引腳信號</p><p> 圖2.5.2 8255的引腳信號如圖所示</p><p> 與外部設備端相連的引腳</p><p> ?。?) PA7-PA0:A端口的輸入/輸出引腳。</p><p> ?。?) PB7-PB0:B端口的輸入/輸出引腳。</p><p> ?。?) PC7-PC0:C端口的輸入/
31、輸出引腳。</p><p> ② 與CPU相連的引腳</p><p> ?。?) RESET:復位信號,低電平有效。當RESET信號來到時,所有內部寄 存器都被清0,同時3個端口被自動設為輸入端口。</p><p> ?。?) D7-D0:8255A的數(shù)據(jù)線,和系統(tǒng)數(shù)據(jù)總線相連。</p><p> ?。?) CS:芯片選擇信號。只有當
32、CS有效時,讀出信號RD和寫入信號WR才對8255A有效。</p><p> ?。?) RD:讀出信號。CPU通過IN指令使RD有效,將數(shù)據(jù)或狀態(tài)信息從8255A中讀到CPU。</p><p> ?。?) WR:寫入信號。CPU通過OUT指令使WR有效,將數(shù)據(jù)或狀態(tài)信息從CPU中寫道8255A.</p><p> (6) A1,A0:端口選擇信號。8255A內
33、部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定A1,A0為00、01、10和11時,分別選中端口A、端口B、端口C和控制端口。</p><p> 2.5.3 8255的控制字</p><p><b> ?、?方式選擇控制字</b></p><p> (1) 方式選擇控制字把A、B、C三個端口分為A、B兩組來設定工作方式。A組包括端口A和端
34、口C的上半部,B組包括端口B和端口C的下半部。</p><p> ?。?) 端口A可工作于3種方式中的任何一種:端口B只能工作于方式0和方式1;而端口C除用作輸入、輸出口(方式0)外,通常用來配合端口A和端口B提供聯(lián)絡控制信號和狀態(tài)信號。</p><p> (3) 歸在同一組的兩個端口可分別作為輸入端口或輸出端口,不要求同為輸入或輸出。</p><p> ?、?端
35、口C按位置位/復位控制字</p><p> ?。?) 端口C按位置位/復位控制字盡管是對端口C進行操作的,但此控制字必須寫入控制口,而不寫入端口C。</p><p> ?。?) 一個控制字只能完成端口C中某一位置的置1或置0,要對多位置1或置0,必須使用多個控制字。</p><p> 2.6 8253計數(shù)器工作原理</p><p> 82
36、53可編程計數(shù)器/定時器的工作頻率為0~2MHz,它有3個獨立編程的計數(shù)器,每個計數(shù)器有三個引腳,分別為時鐘CLK、門控GATE、計數(shù)器和計時結束輸出OUT;每個計數(shù)器分別有6種工作方式。下面針對使用到的兩種工作方式——方式1和方式2的工作原理[1]進行簡述?! ?lt;/p><p> 方式1:可編程單穩(wěn),即由外部硬件產生的門控信號GATE觸發(fā)8253而輸出單穩(wěn)脈沖。計數(shù)器裝入計數(shù)初值后,在門控信號GATE由低電平
37、變高電平并保持時,計數(shù)器開始計數(shù),此時輸出端變成低電平并開始單穩(wěn)過程。當計數(shù)結束時,輸出端OUT轉變成高電平,單穩(wěn)過程結束,在OUT端輸出一個單穩(wěn)脈沖。硬件再次觸發(fā),OUT端可再次輸出一個同樣的單穩(wěn)脈沖。單穩(wěn)脈沖的寬度由裝入計數(shù)器的計數(shù)初值決定。在WR信號的上升沿(CPU寫控制字之后),輸出端OUT保持高電平(若OUT原為低電平則變?yōu)楦唠娖?。CPU寫入計數(shù)值后,計數(shù)器并不馬上開始計數(shù),而要等到門控信號GATE啟動之后的下一個CLK的下
38、降沿才開始。在整個計數(shù)過程中,輸出端OUT保持低電平,直至計數(shù)值至0,OUT變?yōu)楦唠娖綖橹?。 ?lt;/p><p> 方式2:速率發(fā)生器,其功能如同一個N分頻計數(shù)器。其輸出是將輸入時鐘按照N計數(shù)值分頻后得到的一個連續(xù)脈沖。在該方式下,當計數(shù)器裝入初始值開始工作后,輸出端OUT將不斷地輸出負脈沖,其寬度為一個時鐘周期的時間,而兩個負脈沖間的時間脈沖個數(shù)等于計數(shù)器裝入的計數(shù)初值。若計數(shù)初值為N,則每N個輸入脈沖輸出一
39、個脈沖。當CPU寫完控制字后,輸出端OUT轉變成高電平,計數(shù)器將立即自動開始對輸入CLK時鐘計數(shù)。在計數(shù)過程中,OUT端始終保持高電平,直至計數(shù)器的計數(shù)值減到1時,OUT端才變?yōu)榈碗娖?,其保持的寬度為一個輸入CLK時鐘周期的時間,然后輸出端OUT恢復高電平,計數(shù)器重新開始計數(shù)。</p><p> 8253控制字格式為:</p><p> 其中:SC1 SC0為計數(shù)器選擇位;RL1 RL
40、0為計數(shù)器讀寫操作選擇位,以確定計數(shù)器進行裝入或讀出是單字節(jié)還是雙字節(jié);M2 M1 M0為計數(shù)器工作方式選擇位;BCD表示計數(shù)器計數(shù)方式選擇位。</p><p> 8253的內部結構框圖如圖2.6.1所示;引腳如圖2.6.2所示。</p><p> 圖2.6.1 圖2.6.2</p><p> 82
41、53內部可分為6個模塊,每個模塊的功能如下:</p><p> 1. 數(shù)據(jù)總線緩沖器及數(shù)據(jù)總線D0~D7</p><p> 這是8253與CPU數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,是8253內部總線與CPU系統(tǒng)的8位數(shù)據(jù)總線之間的接口。CPU通過它寫方式控制字到控制字寄存器,寫計數(shù)初值到計數(shù)通道,讀取計數(shù)通道的當前計數(shù)值。即數(shù)據(jù)總線緩沖器有三個基本功能:通過編程向8253寫入確定8253
42、工作方式的命令;向計數(shù)寄存器裝入計數(shù)初值;讀出當前計數(shù)值。</p><p> 2. 讀/寫控制邏輯及控制引腳</p><p> 這是8253內部操作的控制部分,按照CPU發(fā)來的讀寫信號及地址信號來控制對各個計數(shù)器的讀寫,以及對控制寄存器的寫入。當片選信號為高電平時,數(shù)據(jù)總線緩沖器處于高阻狀態(tài)。當片選信號有效時(低電平),CPU可以對8253某端口進行讀/寫操作。8253內部有3個獨立的
43、計數(shù)通道和1個控制字寄存器共4個端口,由A1和A0加以選擇,但對控制字寄存器僅能進行寫操作。各個端口的讀/寫操作的選擇見表10. 1。 注意點是控制寄存器只能寫入不能讀出。 </p><p><b> 3. 控制字寄存器</b></p><p> 在初始化編程時,CPU寫入方式控制字到控制字寄存器中,用以選擇計數(shù)通道及其相應的工作方式。</p>&l
44、t;p> 4. 計數(shù)通道0、計數(shù)通道1、計數(shù)通道2</p><p> 3個計數(shù)通道內部結構完全相同。每個計數(shù)通道都由一個16位計數(shù)初值寄存器、一個16位減法計數(shù)器和一個16位計數(shù)值鎖存器組成。</p><p> 3個計數(shù)通道操作完全獨立。初始化編程時,雖然3個計數(shù)通道共用一個控制字寄存器端口地址,但CPU可以分別寫3個方式控制字到控制字寄存器,分別選擇各計數(shù)通道的工作方式。在寫
45、計數(shù)初值到計數(shù)通道或CPU讀取計數(shù)通道到當前計數(shù)值時,各計數(shù)通道都有各自的端口地址。3個計數(shù)通道功能完全相同。在設定了計數(shù)通道的工作方式后,接著可向該計數(shù)通道裝入計數(shù)初值,該計數(shù)初值先送到計數(shù)初值寄存器保存,在GATE引腳為高電平時(方式0、2、3、4)或在GATE上升沿觸發(fā)下(方式1、2、3、5),計數(shù)初值寄存器中的值自動裝入到減法計數(shù)器中。并啟動計數(shù)器計數(shù),減法計數(shù)器對CLK時鐘脈沖的下降沿進行減1計數(shù)(方式3不是減1計數(shù)),并把結
46、果送入計數(shù)值鎖存器中。當減1計數(shù)器減到0時,輸出OUT信號,一次計數(shù)結束。計數(shù)初值寄存器的內容,在計數(shù)過程中保持不變。CPU讀取計數(shù)通道當前計數(shù)值,實際上讀取的是16位計數(shù)值鎖存器的內容。在計數(shù)通道用作定時器時,可在該通道CLK端輸入一個頻率精確已知的時鐘脈沖,根據(jù)定時時間和公式:計數(shù)初值=定時時間÷時鐘周期,計算出計數(shù)初值(也稱時間常數(shù))。在計數(shù)通道用作計數(shù)器時,被計數(shù)的事件應以脈沖方式</p><p&g
47、t; 2.7 8088 CPU 的引腳功能</p><p> 8088 微處理器是一種準16 位機,其內部結構基本上與8086 相同,其引腳信號也與8086 基本相同,只有如下引腳的功能有所不同。</p><p> (1) 8088 有8 根外部數(shù)據(jù)引腳而不是8086 的16 根,即AD7~AD0,A15~A8 為單一的地址線。這就導致對一個16 位數(shù)的存儲器讀寫,總是需要二個總線周
48、期才能完成。 </p><p> (2) 8088 的第28 引腳存儲器/IO 控制信號為M/IO ,即該信號為高電平時,是IO 端口訪問;為低電平時,是存儲器訪問。而8086 為M/IO 剛好相反。 </p><p> (3) 8088 與8086 的第34 引腳不同,8088 中只能進行8 位傳輸,所以BHE 信號就用不著了,改為SS0,SS0等效于S0,與M/IO 、DT/R 組
49、合決定最小模式下的總線操作,具體如表2.7.1所示,在最大模式下,該腳總為高電平。8088 CPU 的引腳如圖2.7.1 所示。 </p><p> 表2.7.1 SS0、M/IO 與DT/ R的組合及其含義</p><p> 圖2.7.1 8088CPU 的引腳圖</p><p> 當把8088的MN/MX引腳接到+5V時,8088CPU工作于最小工作方式。
50、所謂最小工作方式,就是系統(tǒng)中只有一個微處理器8088。在這種系統(tǒng)中所有的總線控制信號都直接由8088產生,系統(tǒng)中總線控制邏輯電路被</p><p> 減小到最小,這種方式適合于較小規(guī)模的應用。最小方式下,24-31引腳功能:</p><p> ?。?)INTA中斷響應信號(輸出,低電平有效)INTA是CPU對外設的中斷請求的回答信號。對于8088來說,INTA信號實際是位于連續(xù)周期中的兩
51、個負脈沖,在每個中斷響應周期的T2、T3和TW狀態(tài),INTA為低電平。第一個負脈沖通知外圍設備的接口,它發(fā)出的中斷請求已經(jīng)得到允許;外設接口收到第二個負脈沖后,將中斷類型碼送往數(shù)據(jù)總線。</p><p> ?。?)ALE地址鎖存允許信號(輸出,高電平有效)ALE是CPU在每個總線周期的T1狀態(tài)發(fā)出的,其有效電平表示當前在地址/數(shù)據(jù)復用線上輸出的是地址信息,利用它的下降沿把地址信號和BHE信號鎖存在74LS373地
52、址鎖存器中。ALE不能被浮置。</p><p> ?。?)DEN數(shù)據(jù)允許信號(輸出,低電平有效,三態(tài))DEN有效表示CPU準備好接受和發(fā)送數(shù)據(jù),是CPU提供雙向數(shù)據(jù)收發(fā)器74LS245的選通信號,在每個訪問存儲器或訪問I/O周期,或中斷相應周期均有效。在DMA下,被浮置為高阻態(tài)。</p><p> ?。?)DT/R數(shù)據(jù)收發(fā)信號(輸出,三態(tài))在系統(tǒng)使用雙向收發(fā)器74LS245時,用其控制數(shù)據(jù)
53、的傳送方向。如果DT/R為高電平,則進行數(shù)據(jù)發(fā)送,如果DT/R為低電平,則進行數(shù)據(jù)接收.在DMA下,被浮置為高阻態(tài)。</p><p> ?。?)M/IO存儲器/IO控制信號(輸出,三態(tài))用于區(qū)分是訪問存儲器(低電平),還是訪問I/O(高電平),通常M/IO被接至存儲器或接口芯片的片選CS端。當DMA時,被浮置為高阻態(tài)。</p><p> ?。?)WR寫信號(輸出,低電平有效,三態(tài))WR有效
54、時,表示CPU正在執(zhí)行存儲器或訪問存儲器。在任何寫周期,WR只在T2、T3、TW有效,在DMA時,WR被浮置為高阻態(tài)。</p><p> ?。?)HOLD總線保持請求信號(輸入,高電平有效)它是系統(tǒng)中的其他總線主控部件向CPU發(fā)出的請求占用總線的申請信號。</p><p> (8)HLDA總線保持響應信號(輸出,高電平有效)它是CPU對系統(tǒng)中其他總線主控部件向其請求總線使用權的響應信號。
55、</p><p> 2.8 74LS138工作方式</p><p> 74HC138:74LS138 為3 線8 位譯碼器,共有 54/74S138和 54/74LS138 兩種線路結構型式,其74LS138工作原理如下: </p><p> 當一個選通端(G1)為高電平,另兩個選通端(/(G2A)和/(G2B))為低電平時,可將地址端(A、B、C)的二進制編
56、碼在一個對應的輸出端以低電平譯出。 </p><p> 74LS138的作用:</p><p> 利用 G1、/(G2A)和/(G2B)可級聯(lián)擴展成 24 線譯碼器;若外接一個反相器還可級聯(lián)擴展成 32 線譯碼器。 若將選通端中的一個作為數(shù)據(jù)輸入端時,74LS138還可作數(shù)據(jù)分配器</p><p><b> 圖2.8.1</b>
57、</p><p> 用與非門組成的3線8位譯碼器74LS138</p><p> 圖2.8.2 74ls138譯碼器內部電路</p><p> 71LS138有三個附加的控制端、和。當、時,輸出為高電平(S=1),譯碼器處于工作狀態(tài)。否則,譯碼器被禁止,所有的輸出端被封鎖在高電平,如表3.3.5所示。這三個控制端也叫做“片選”輸入端,利用片選的作用可以將多篇連
58、接起來以擴展譯碼器的功能。</p><p> 2.9顯示電路的連接</p><p> 顯示電路的連接如下圖:</p><p> 在程序內設置8255的控制字D2-D1位分別為00,使B端口工作在方式0作為輸出端,PB0-PB7分別對應連接數(shù)碼管的A-DP。</p><p> 七段發(fā)光二極管為陽極LED器件。要讓A段點亮,要求PB0輸出
59、高電平“1”;要使B段熄滅,要求從PB1輸出低電平“0”。其余各段以此類推。要使LED上顯示0-9十個數(shù)字,需要按照如下段碼表來驅動數(shù)碼管的七段LED。</p><p> 2.10 LED顯示器的工作方式</p><p> LED數(shù)碼管是目前最常用的數(shù)字顯示器,圖A、B為共陰管和共陽管的電路,圖C為兩種不同出線形式的引出腳功能圖。</p><p> 一個LED
60、數(shù)碼管可用來顯示一位0~9十進制數(shù)和一個小數(shù)點。小型數(shù)碼管(0.5寸和0.36寸)每段發(fā)光二極管的正向壓降,隨顯示光(通常為紅、綠、黃、橙色)的顏色不同略有差別,通常約為2~2.5V,每個發(fā)光二極管的點亮電流在5~10mA。LED數(shù)碼管要顯示BCD碼所表示的十進制數(shù)字就需要有一個專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當?shù)尿寗幽芰Α?lt;/p><p> 圖A 共陰連接(“1”電平驅動)
61、 圖B 共陽連接(“0”電平驅動)</p><p> 圖C LED數(shù)碼管符號及引腳功能圖</p><p> LED顯示器有靜態(tài)和動態(tài)兩種工作方式</p><p> LED顯示器工作在靜態(tài)顯示方式下,共陰極或共陽極連接在一起,然后接地或+5V;每位的段選線(A,B,…,G,H)與一個8位并行口相連。這樣,只要在每一位的段選線上保持段選碼電平,該位就能保持相應
62、的顯示字符。</p><p> 在多位LED顯示時,為了化簡電路,降低成本,將所有位的斷選線并聯(lián)在一起,由一個8位的I/O口控制,即控制段選碼而共陰極或共陽極點分別由相應的I/O線控制即控制位選碼,這就是動態(tài)顯示。</p><p> 4位LED動態(tài)顯示電路只需一個8位I/O口及一個4位I/O口,其中8個I/O控制段選碼,4位I/O控制位選。進行4位字符顯示時,采用掃描顯示方式,即在每一
63、瞬間只使某一位顯示相應字符,在此瞬間,段選控制I/O口輸出相應字符段選碼,位選控制I/O口在該顯示位送入選通電平(共陰極送低電平,共陽極送高電平),以保證該位顯示相應字符。如此輪流,使每位顯示該位應顯示字符,并保持延遲一段時間(1~5ms),以造成視覺暫留效果。不斷循環(huán)送出相應的段選碼、位選碼,就可以獲得視覺穩(wěn)定的顯示狀態(tài)。</p><p> 2.11硬件接線連接圖</p><p>&l
64、t;b> 見附錄1附錄2</b></p><p><b> 三、軟件設計框圖</b></p><p> 當按下啟動按鈕,程序開始運行,8255A進行初始化,并送入1秒的時間常數(shù)。程序運行時首先會判斷是否有壓鍵操作,如果沒有壓鍵操作,則重復顯示掃描和判斷操作。若有壓鍵操作,程序會繼續(xù)判斷次壓鍵是否是功能鍵,如果不是再繼續(xù)判斷是否是A鍵標志;如果是
65、這執(zhí)行“根據(jù)A,B,C,D,E,F鍵設標志”操作,執(zhí)行完后,會執(zhí)行詢問是否放鍵的操作,放鍵則繼續(xù)執(zhí)行有無壓鍵判斷,如果不放鍵,則跳轉至顯示掃描操作。</p><p> 在上述判斷過程中如果壓鍵不是功能鍵,則會判斷該壓鍵是否是A鍵標志。如果不是則跳轉至判斷有無壓鍵的操作中,如果是A鍵標志,程序會繼續(xù)判斷是否是B鍵標志。如果是B鍵標志則修改秒位時間,如果不是則判斷它是否是C鍵標志。如果是C鍵標志,則修改分位時間,如
66、果不是就會就緒判斷是否是D交標志。如果是D鍵標志,則修改時位時間,如果不是則繼續(xù)執(zhí)行判斷是否是E鍵標志。如果是E鍵標志,則執(zhí)行“去掉鍵狀態(tài)標志”操作,如果不是則繼續(xù)判斷是否是F鍵標志。如果是F鍵標志,則執(zhí)行清零操作,若果不是,則說明此壓鍵是無效壓鍵,則程序會跳轉到是否有壓鍵操作的判斷中。在該程序段中,執(zhí)行完修改秒、分、時的時間后均要執(zhí)行是否需要執(zhí)行放鍵的操作中去。</p><p><b> 四、源程序
67、</b></p><p> STACK SEGMENT STACK</p><p> DW 64 DUP(?)</p><p> STACK ENDS</p><p> DATA SEGMENT </p><p><b> ORG 3500H</b></p>&
68、lt;p> TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,,7CH,</p><p> 39H,5EH,79H,71H BUFFER DB 6 DUP(0)</p><p> FUNCTION DB 00H ;A鍵功能標志,若為FFH表示進入功能狀態(tài)</p><p>
69、 HAVEKEY DB 00H</p><p> SECOND DB 59H ;初始時間</p><p> MINUTE DB 20H</p><p> HOUR DB 23H</p><p> B SET DB 00H ;B鍵功能標志,若為FFH表示進入功能狀態(tài)&
70、lt;/p><p> C SET DB 00H ;C鍵功能標志,若為FFH表示進入功能狀態(tài)</p><p> D SET DB 00H ;D鍵功能標志,若為FFH表示進入功能狀態(tài)</p><p> BBCOT DB 00H ;B鍵閃動計數(shù)標志</p>&l
71、t;p> CCCOT DB 00H ;C鍵閃動計數(shù)標志</p><p> DDCOT DB 00H ;D鍵閃動計數(shù)標志</p><p> SHU_ZI DB 00H ;數(shù)字鍵緩沖區(qū)</p><p><b> DATA ENDS</b>&l
72、t;/p><p> CODE SEGMENT </p><p> ASSUME CS:CODE,DS:DATA,SS:STACK</p><p> START: MOV AX,DATA</p><p> MOV DS,AX</p><p> MOV BX,OFFSET TABLE
73、 ;BX指向TABLE七段代碼表首址 </p><p> MOV DI,OFFSET BUFFER ;DI指向顯示緩沖區(qū)首址BUFFER</p><p> MOV SI,OFFSET SECOND ;SI指向時間區(qū)</p><p> MOV AL,88H</p><
74、p> OUT 63H,AL ;8255A初始化</p><p> A3: MOV CX,00CFH ;設定的時間常數(shù)(約1s)</p><p> A4: CALL KEYTEST ;監(jiān)測鍵盤</p><p>
75、CMP HAVEKEY,0FFH</p><p> JNZ A6</p><p> CALL KEYSCAN ;鍵盤掃描</p><p> A6: CALL DISPLAY ;顯示數(shù)據(jù)</p><p> CMP F
76、UNCTION,0FFH</p><p> JZ A4</p><p> LOOP A4</p><p> MOV AL,SECOND ;設定時間到,處理時間顯示</p><p> ADD AL,01H</p><p><b>
77、; DAA</b></p><p> MOV SECOND,AL</p><p> MOV SECOND,60H</p><p> JNZ ND_HOU</p><p> MOV SECODE,00H ;60s進分</p><p
78、> MOV AL,MINUTE</p><p> ADD AL,01H</p><p><b> DAA</b></p><p> MOV MINUTE,AL</p><p> CMP MINUTE,60H</p><p> JNZ
79、 ND_HOU</p><p> MOV MINUTE,00H ;60min進時</p><p> MOV AL,HOUR</p><p> ADD AL,01H</p><p><b> DAA</b></p><p&
80、gt; MOV HOUR,AL</p><p> CMP HOUR,24H</p><p> JNZ ND_HOU</p><p> MOV HOUR,00H ;24h清零</p><p> ND_HOU: CALL DEAL</p>
81、<p> JMP A3</p><p> KEYSCAN:MOV HAVEKEY,00H ;HAVEKEY=00H置為無鍵</p><p> CALL DISPLAY ;去抖動</p><p> CALL DISPLAY</p>&
82、lt;p> CALL KEYTEST ;再測是否有壓鍵</p><p> CMP HAVEKEY,0FFH</p><p> JZ BEGIN1</p><p> JMP EX1T1</p><p> BEGIN1: MOV AH,0F
83、EH ;行掃描開始 </p><p> NEXTKEY:MOV AL,AH</p><p> OUT 60H,AL</p><p> IN AL,62H</p><p> AND AL,0C0H</p><p> CMP
84、 AL,80H ;判斷是否a1線的鍵</p><p> JZ FIND1</p><p> CMP AL,40H ;判斷是否a2線的鍵</p><p> JZ BRIGE</p><p> ROL AH,1<
85、;/p><p> JMP NEXTKEY</p><p> BRIGE: JMP FIND2</p><p> FIND1: PUSH AX</p><p> A1: MOV HAVEKEY,00H ;等待釋放鍵</p><p>
86、CALL DISPLAY</p><p> CALL KEYTEST</p><p> CMP HAVEKEY,0FFH</p><p> JZ A1</p><p> POP AX</p><p> NOT AH</p>&
87、lt;p> CMP AH,01H</p><p> JZ KEY1</p><p> CMP AH,01H</p><p> JZ KEY15</p><p> CMP AH,04H</p><p> JZ KEY0<
88、/p><p> CMP AH,08H</p><p> JZ KEY14</p><p> CMP AH,10H</p><p> JZ KEY10</p><p> CMP AH,20H</p><p> JZ
89、 KEY13 </p><p> CMP AH,40H</p><p> JZ KEY11</p><p> CMP AH,80H</p><p> JZ KEY12</p><p> JMP EXIT1</p><p&
90、gt; KEY1: MOV SHU_ZI,01H ;數(shù)字1鍵</p><p> JMP EXIT</p><p> KEY12: CMP FUNCTION,0FFH ;功能鍵C,設置分</p><p> JNZ C_OUT</p><p>
91、 MOV C_SET,0FFH</p><p> MOV B_SET,00H</p><p> MOV D_SET,00H</p><p> C_OUT: JMP EXIT1</p><p> KEY0: MOV SHU_ZI,00H ;數(shù)字0
92、鍵</p><p> JMP EXIT</p><p> KEY15: CALL CLEAN ;功能鍵F,清零</p><p> MOV SECOND,00H</p><p> MOV MINUTE,00H</p><p>
93、MOV HOUR,00H</p><p> JMP EXIT1</p><p> KEY11: CMP FUNCTION,0FFH ;功能鍵B,設置秒</p><p> JNZ B_OUT</p><p> MOV C_SET,00H</p>
94、<p> MOV D_SET,00H</p><p> B_OUT: JMP EXIT1</p><p> KEY13: CMP FUNCTION,0FFH ;功能鍵D,設置時</p><p> JNZ D_OUT</p><p> MOV
95、 C_SET,00H</p><p> MOV B_SET,00H</p><p> MOV D_SET,0FFH</p><p> D_OUT: JMP EXIT1</p><p> FIND2: PUSH AX</p><p> A2: MOV
96、 HAVEKEY,00H ;等待釋放鍵</p><p> CALL DISPLAY</p><p> CALL KEYTEST</p><p> CMP HAVEKEY,0FFH</p><p> JZ A2</p><p>
97、POP AX</p><p> NOT AH</p><p> CMP AH,01H</p><p> JZ KEY9</p><p> CMP AH,02H</p><p> JZ KEY5</p><p>
98、 CMP AH,04H</p><p> JZ KEY8</p><p> CMP AH,08H</p><p> JZ KEY4</p><p> CMP AH,10H</p><p> JZ KEY7</p>&
99、lt;p> CMP AH,20H</p><p> JZ KEY3</p><p> CMP AH,40H</p><p> JZ KEY6</p><p> CMP AH,80H</p><p> JZ KEY2</
100、p><p> JMP EXIT1</p><p> KEY9: MOV SHU_ZI,09H ;數(shù)字9鍵</p><p> JMP EXIT</p><p> KEY5: MOV SHU_ZI,05H ;數(shù)字5鍵</p>
101、;<p> JMP EXIT</p><p> KEY8: MOV SHU_ZI,08H ;數(shù)字8鍵</p><p> JMP EXIT</p><p> KEY4: MOV SHU_ZI,04H ;數(shù)字4鍵</p>&
102、lt;p> JMP EXIT</p><p> KEY7: MOV SHU_ZI,07H ;數(shù)字7鍵</p><p> JMP EXIT</p><p> KEY3: MOV SHU_ZI,03H ;數(shù)字3鍵</p><p
103、> JMP EXIT</p><p> KEY6: MOV SHU_ZI,06H ;數(shù)字6鍵</p><p> JMP EXIT</p><p> KEY2: MOV SHU_ZI,02H ;數(shù)字2鍵</p><p>
104、 EXIT: CALL JUDGE</p><p> EXIT1: RET</p><p> DISPLAY:PUSH AX ;顯示和閃動子程序</p><p> CMP B_SET,0FFH ;判斷是否還要閃動</p><p&g
105、t; JNZ FFB3</p><p> CMP BBCOT,50H ;前50H次亮</p><p> JA FFB1</p><p> FFB3: MOV AL,00H</p><p> OUT 62H,AL</p>&l
106、t;p> MOV AL,[DI]</p><p> OUT 61H,AL</p><p> CALL DELAY</p><p> MOV AL,01H</p><p> OUT 62H,AL</p><p> MOV AL,[DI
107、+01H]</p><p> OUT 61H,AL</p><p> CMP B_SET,0FFH</p><p> JNZ FFB2</p><p> FFB1: INC BBCOT</p><p> CMP BBCOT,0A0H
108、 ;后50H次暗</p><p> JNZ FFB2</p><p> MOV BBCOT,00H</p><p> FFB2: CALL DELAY</p><p> CMP C_SET,0FFH ;判斷是否要閃動</p><
109、p> JNZ FFC3</p><p> CMP CCCOT,50H ;前50H次亮</p><p> JA FFC1</p><p> FFC3: MOV AL,02H</p><p> OUT 62H,AL</p>
110、<p> MOV AL,[DI+02H]</p><p> OUT 61H,AL</p><p> CALL DELAY</p><p> MOV AL,03H</p><p> OUT 62H,AL</p><p> MOV
111、AL,[DI+03H]</p><p> OUT 61H,AL</p><p> CMP C_SET,0FFH</p><p> JNZ FFC2</p><p> FFC1: INC CCCOT</p><p> CMP CCCOT,0A0H
112、 ;后50H次暗</p><p> JNZ FFCC2</p><p> MOV CCCOT,00H</p><p> FFC2: CALL DELAY</p><p> CMP D_SET,OFFH ;判斷是否要閃動</p>
113、;<p> JNZ FFD3</p><p> CMP DDCOT,50H ;前50H次亮</p><p> JA FFD1</p><p> FFD3: MOV AL,04H</p><p> OUT 62H,AL</
114、p><p> MOV AL,[DI+04H]</p><p> OUT 61H,AL</p><p> CALL DELAY</p><p> MOV AL,05H</p><p> OUT 62H,AL</p><p> MOV
115、 AL,[DI+05H]</p><p> OUT 61H,AL</p><p> CMP D_SET,0FFH</p><p> JNZ FFD2</p><p> FFD1: INC DDCOT</p><p> CMP DDCO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論