出租車計(jì)價(jià)器系統(tǒng)的設(shè)計(jì)_第1頁
出租車計(jì)價(jià)器系統(tǒng)的設(shè)計(jì)_第2頁
出租車計(jì)價(jià)器系統(tǒng)的設(shè)計(jì)_第3頁
出租車計(jì)價(jià)器系統(tǒng)的設(shè)計(jì)_第4頁
出租車計(jì)價(jià)器系統(tǒng)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩54頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、- 47 -出租車計(jì)價(jià)器設(shè)計(jì)摘要: 在交通發(fā)展迅速的今天,出租車是我們交通中不可缺少的工具。同時(shí)出租車中的計(jì)價(jià)器是必不可少的一種設(shè)備。單片機(jī)技術(shù)也得到了飛速發(fā)展,基于單片機(jī)的出租車計(jì)費(fèi)器不僅可以解決電子系統(tǒng)小型化、低功耗、高可靠性等問題,而且其開發(fā)周期短、開發(fā)軟件投入少、芯片價(jià)格不斷降低,特別是對(duì)小批量、多品種的產(chǎn)品需求,單片機(jī)具有體積小、功能強(qiáng)可靠性高、價(jià)格低廉等一系列優(yōu)點(diǎn),。出租車計(jì)價(jià)器系統(tǒng)設(shè)計(jì)的主要內(nèi)容是通過C51單片機(jī)上的數(shù)碼顯示器來模擬出租車計(jì)價(jià)器的路程顯示表,通過單片機(jī)上的鍵盤上的某些鍵來表示開始、暫停、復(fù)位等功能。步驟如下:首先,程序開始做一些必要的初始化工作,等待鍵盤輸入。然后

2、,啟動(dòng)鍵按下(0)后LED數(shù)碼管開始記錄路程并顯示。最后,當(dāng)需要停止是可按相應(yīng)的鍵(F)對(duì)路程計(jì)數(shù)器進(jìn)行暫停。而且還可以復(fù)位(E)。本設(shè)計(jì)主要了解應(yīng)用單片機(jī)的定時(shí)器/計(jì)數(shù)器,以及中斷。這是一個(gè)比較小的系統(tǒng),故采用匯編語言來編輯。匯編語言是一種編譯型程序設(shè)計(jì)語言,它具有編譯速度快,占用系統(tǒng)空間小,具有一定的助記可讀性等特點(diǎn)。關(guān)鍵詞: C51單片機(jī);8255;計(jì)價(jià)器; LED數(shù)碼管1設(shè)計(jì)內(nèi)容及要求1.1設(shè)計(jì)內(nèi)容及要求(1)出租車?yán)锍虦y(cè)量:采用信號(hào)源產(chǎn)生脈沖模擬出租車計(jì)價(jià)傳感器產(chǎn)生脈沖,設(shè)每產(chǎn)生100個(gè)脈沖出租車行駛1公里信號(hào)源脈沖頻率=1KHZ;(2)里程顯示為:*.*公里;(3)采用8255芯片

3、管理鍵盤顯示。1.2框圖根據(jù)設(shè)計(jì)內(nèi)容及要求,設(shè)計(jì)框圖如圖1所示。本次設(shè)計(jì)的出租車計(jì)價(jià)器系統(tǒng)是由三部分組成,包括由光電傳感器為主的計(jì)程脈沖信號(hào)變換模塊、單片機(jī)80c51系統(tǒng)和LED顯示模塊。設(shè)計(jì)中使用的結(jié)構(gòu)框圖如圖1.1所示傳感器變換電路顯示器單片機(jī)按鍵圖1.1設(shè)計(jì)框圖、1.1系統(tǒng)的組成1. 計(jì)程脈沖信號(hào)變換模塊計(jì)程脈沖信號(hào)變換模塊是以光電傳感器為主要功能部件,在出租車行駛過程中產(chǎn)生電脈沖信號(hào),將對(duì)路程的計(jì)量轉(zhuǎn)換為對(duì)電脈沖信號(hào)的計(jì)量。本次的設(shè)計(jì)中,采用了光敏二極管。車輪上安裝的光敏二極管間歇地接收到光信號(hào),輸出電脈沖,再經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)TTL信號(hào)。1.2工作原理出租車計(jì)價(jià)是根據(jù)車所行駛

4、的路程以及乘客乘車的時(shí)間段綜合決定的。出租車行駛總路程可以通過車輪的周長(zhǎng)乘車輪旋轉(zhuǎn)圈數(shù)得到。即可計(jì)算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。因此,使用光電傳感器的目的就是方便地計(jì)量車輪旋轉(zhuǎn)的圈數(shù)??稍谲囕嗈D(zhuǎn)軸涂上白色條紋,其余部分涂成黑色,發(fā)光管照射轉(zhuǎn)軸。當(dāng)轉(zhuǎn)軸轉(zhuǎn)動(dòng)時(shí),反光與不反光交替出現(xiàn),所以光電元件間斷地接收光的反射信號(hào),輸出電脈沖。再經(jīng)過放大整形電路,輸出標(biāo)準(zhǔn)TTL信號(hào)。輸出的脈沖信號(hào)被接入到80C51單片機(jī)系統(tǒng)中,通過計(jì)算接收到的脈沖個(gè)數(shù),計(jì)算出當(dāng)前所行駛的路程。同時(shí),根據(jù)不同的收費(fèi)標(biāo)準(zhǔn),選擇相應(yīng)的起步價(jià)、單價(jià)等收費(fèi)標(biāo)準(zhǔn)進(jìn)行計(jì)算。1、電感式接近開關(guān)電感式接近開關(guān)屬于一種有開關(guān)量輸出的

5、位置傳感器,它由LC高頻振蕩器和放大處理電路組成,利用金屬物體在接近這個(gè)能產(chǎn)生電磁場(chǎng)的振蕩感應(yīng)頭時(shí),使物體內(nèi)部產(chǎn)生渦流。這個(gè)渦流反作用于接近開關(guān),使接近開關(guān)振蕩能力衰減,內(nèi)部電路的參數(shù)發(fā)生變化,由此識(shí)別出有無金屬物體接近,進(jìn)而控制開關(guān)的通或斷。這種接近開關(guān)所能檢測(cè)的物體必須是金屬物體。電感式接近開關(guān)的工作圖如下:圖2.1 接近開關(guān)工作流程圖2.、 光電開關(guān)光電開關(guān)主要采用了光電傳感器的基本特性設(shè)計(jì)而成。(如圖2.2)當(dāng)有光照射時(shí),二極管PN結(jié)附近受光子轟擊,使被束縛在價(jià)帶中的電子獲得能量,遷躍到導(dǎo)帶成為自由電子,同時(shí)價(jià)帶中產(chǎn)生自由空穴,這些電子空穴對(duì),對(duì)多數(shù)載流子影響不大,而對(duì)少數(shù)載流子來說,

6、其數(shù)目大大增加,在反向電壓的作用下,反向飽和漏電流增大,這時(shí)相當(dāng)于光敏二極管導(dǎo)通,并且光照度愈大,光電流也愈大;當(dāng)無光照射時(shí),電路中僅有很小的反向飽和漏電流,二極管截止。圖2.2反射式光電開關(guān)OPTOISO1為光電傳感器使用VCC=5V電源(如圖2.3),可以安裝在出租車車輪處。當(dāng)出租車在行進(jìn)過程中,則車輪就會(huì)不斷對(duì)它遮擋,從而產(chǎn)生一系列脈沖。由于這些脈沖可能會(huì)被干擾,或者電平不穩(wěn)定,因此就需要增加一個(gè)三級(jí)管(Q1)對(duì)信號(hào)進(jìn)行放大。而74LS14是作為反相器的功能來使用,可以使OUT口輸出的脈沖符合TTL電平,直接可輸入到80C51的T0口。設(shè)計(jì)中以光電開關(guān)作為傳感器元件,并且在實(shí)現(xiàn)階段用函數(shù)

7、信號(hào)發(fā)生器模擬光電傳感器實(shí)現(xiàn)計(jì)程脈沖的形成。圖2.3 光電脈沖的轉(zhuǎn)換電路3.霍爾傳感器1里程計(jì)算、計(jì)價(jià)單元的設(shè)計(jì)里程計(jì)算是通過安裝在車輪上的霍爾傳感器A44E檢測(cè)到的信號(hào),送到單片機(jī),經(jīng)處理計(jì)算,送給顯示單元的。其原理如圖21所示。由于A44E 屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.518V),其輸出的信號(hào)符合TTL 電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的IO 端口上,而且其最高檢測(cè)頻率可達(dá)到1MHZ。A44E 集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢(shì)發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D 和OC 門輸出E 五個(gè)基本部分組成。在輸入端輸入電壓CC V ,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍耳電勢(shì)發(fā)生器

8、的兩端,根據(jù)霍耳效應(yīng)原理,當(dāng)霍耳片處在磁場(chǎng)中時(shí),在垂直于磁場(chǎng)的方向通以電流,則與這二者相垂直的方向上將會(huì)產(chǎn)生霍耳電勢(shì)差H V 輸出,該H V 信號(hào)經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC 門輸出。當(dāng)施加的磁場(chǎng)達(dá)到工作點(diǎn)(即OP B )時(shí),觸發(fā)器輸出高電壓(相對(duì)于地電位),使三極管導(dǎo)通,此時(shí)OC 門輸出端輸出低電壓,通常稱這種狀態(tài)為開。當(dāng)施加的磁場(chǎng)達(dá)到釋放點(diǎn)(即rP B )時(shí),觸發(fā)器輸出低電壓,三極管截止,使OC 門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍耳開關(guān)完成了一次開關(guān)動(dòng)作。其集成霍耳開關(guān)外形及接線如圖23 所示。圖23 集成霍耳開關(guān)外形及接線我們選擇了P3.2

9、口作為信號(hào)的輸入端,內(nèi)部采用外部中斷0(這樣可以減少程序設(shè)計(jì)的麻煩),車輪每轉(zhuǎn)一圈(我們?cè)O(shè)車輪的周長(zhǎng)是1 米),霍爾開關(guān)就檢測(cè)并輸出信號(hào),引起單片機(jī)的中斷,對(duì)脈計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到1000 次時(shí),也就是1 公里,單片機(jī)就控制將金額自動(dòng)的加增加,其計(jì)算公式:當(dāng)前單價(jià)× 公里數(shù)=金額。3 單片機(jī)80C51的簡(jiǎn)介3.1 主芯片80C51的硬件資源3.1.1 單片機(jī)的概念單片機(jī)(microcontroller,又稱微控制器)是在一塊硅片上集成了各種部件的微型計(jì)算機(jī)。這些部件包括中央處理器CPU、數(shù)據(jù)存儲(chǔ)器RAM、程序存儲(chǔ)器ROM、定時(shí)器/計(jì)數(shù)器和多種I/O接口電路。圖4-1是80C51單片機(jī)的基

10、本結(jié)構(gòu)圖圖4-1 80C51結(jié)構(gòu)方框圖a. 80C51單片機(jī)的結(jié)構(gòu)特點(diǎn)有以下幾點(diǎn):l 8位CPU;l 片內(nèi)振蕩器及時(shí)鐘電路;l 32根I/O線;l 外部存儲(chǔ)器ROM和RAM,尋址范圍各64KB;l 兩個(gè)16位的定時(shí)器/計(jì)數(shù)器;l 5個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí)l 全雙工串行口l 布爾處理器b. 定時(shí)器/計(jì)數(shù)器80C51內(nèi)部有兩個(gè)16位可編程定時(shí)器/計(jì)數(shù)器,記為T0和T1。16位是指它們都是由16個(gè)觸發(fā)器構(gòu)成,故最大計(jì)數(shù)模值為2-1??删幊淌侵杆麄兊墓ぷ鞣绞接芍噶顏碓O(shè)定,或者當(dāng)計(jì)數(shù)器來用,或者當(dāng)定時(shí)器來用,并且計(jì)數(shù)(定時(shí))的范圍也可以由指令來設(shè)置。這種控制功能是通過定時(shí)器方式控制寄存器TMOD來完成

11、的.如果需要,定時(shí)器在計(jì)到規(guī)定的定時(shí)值時(shí)可以向CPU發(fā)出中斷申請(qǐng),從而完成某種定時(shí)的控制功能。在計(jì)數(shù)狀態(tài)下同樣也可以申請(qǐng)中斷。定時(shí)器控制寄存器TCON用來負(fù)責(zé)定時(shí)器的啟動(dòng)、停止以及中斷管理在定時(shí)工作時(shí),時(shí)鐘由單片機(jī)內(nèi)部提供,即系統(tǒng)時(shí)鐘經(jīng)過12分頻后作為定時(shí)器的時(shí)鐘。技術(shù)工作時(shí),時(shí)鐘脈沖由TO和T1輸入。c. 中斷系統(tǒng)80C51的中斷系統(tǒng)允許接受五個(gè)獨(dú)立的中斷源,即兩個(gè)外部中斷申請(qǐng),兩個(gè)定時(shí)器/計(jì)數(shù)器中斷以及一個(gè)串行口中斷。外部中斷申請(qǐng)通過INTO和INT1(即P3.2和P3.3)輸入,輸入方式可以是電平觸發(fā)(低電平有效),也可以是邊沿觸發(fā)(下降沿有效)。兩個(gè)定時(shí)器中斷請(qǐng)求是當(dāng)定時(shí)器溢出時(shí)向CP

12、U提出的,即當(dāng)定時(shí)器由狀態(tài)1轉(zhuǎn)為全零時(shí)提出的。第五個(gè)中斷請(qǐng)求是由串行口發(fā)出的,串行口每發(fā)送完一個(gè)數(shù)據(jù)或接收完一個(gè)數(shù)據(jù),就可提出一次中斷請(qǐng)求。3.1.2 80C51的芯片引腳圖VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏極開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。圖4-2 80C51引腳圖P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出

13、4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)

14、接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT80C51的一些特殊功能口,如下表所示:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4 T0(定時(shí)器/計(jì)數(shù)器0外部輸入)P3.5 T1(定時(shí)器/計(jì)數(shù)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P

15、3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)

16、ALE禁止,置位無效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3.1.3 使用I/O口的注意事項(xiàng)(1)P1,P2,P3口

17、的輸出緩沖器可驅(qū)動(dòng)4個(gè)LSTTL電路。對(duì)于HCMOS芯片單片機(jī)的I/O口,在正常情況下,可任意由TTL或NMOS電路驅(qū)動(dòng)。HMOS及CMOS性的單片機(jī)I/O口有集電極開路或漏極開路的輸出來驅(qū)動(dòng)時(shí),不必外加上拉電阻(2)對(duì)于74LS系列,CD4000系列以及一些大規(guī)模集成電路芯片(如8155,8253,8279等),都可以和MCS-51系列單片機(jī)直接接口。具體使用時(shí),可以查閱有關(guān)器件手冊(cè)或參考典型電路(3)對(duì)一些線性組件,特別是應(yīng)用鍵盤、碼盤、LED顯示器等輸入/輸出設(shè)備時(shí),應(yīng)當(dāng)盡量增加驅(qū)動(dòng)部分的容量,否則,單片機(jī)將提供不出足夠的驅(qū)動(dòng)電流供給負(fù)載使用3.2 80C51中斷系統(tǒng)所謂中斷,是指當(dāng)計(jì)算

18、機(jī)執(zhí)行正常程序時(shí),系統(tǒng)中出現(xiàn)某些急需處理的異常情況和特殊情求,CPU暫停執(zhí)行現(xiàn)行程序,轉(zhuǎn)去對(duì)隨機(jī)發(fā)生地更緊迫事件進(jìn)行處理;處理完畢后,CPU自動(dòng)返回原來的程序繼續(xù)執(zhí)行。中斷允許軟件設(shè)計(jì)不需要關(guān)心系統(tǒng)其他部分定時(shí)要求,算術(shù)程序不需要考慮隔幾個(gè)指令檢查I/O設(shè)備是否需要服務(wù)。相反,算術(shù)程序編寫時(shí)好像有無限的時(shí)間作算術(shù)運(yùn)算而無其他工作在進(jìn)行。若其它事件需要服務(wù)時(shí),則通過中斷告訴系統(tǒng)。80C51單片機(jī)有5個(gè)中斷源,有兩個(gè)中斷優(yōu)先級(jí),每個(gè)中斷源的優(yōu)先級(jí)可以編程控制。中斷允許受到CPU開中斷和中斷源開中斷的兩級(jí)控制。3.2.1 中斷源中斷源是指任何引起計(jì)算機(jī)中斷的事件,一般一臺(tái)機(jī)器允許有許多個(gè)中斷源。80

19、C51系列單片機(jī)至少有5個(gè)中斷源。增加很少的硬件就可把各種硬件中斷源“線或”成為一個(gè)外部中斷輸入,然后再順序檢索一起中斷的特定源。80C51單片機(jī)的5個(gè)中斷源是:外部中斷請(qǐng)求0,由(P3.2)輸入;外部中斷請(qǐng)求1,由(P3.3)輸入;片內(nèi)定時(shí)器/計(jì)數(shù)器0益處中斷請(qǐng)求;片內(nèi)定時(shí)器/計(jì)數(shù)器1溢出中斷請(qǐng)求; 片內(nèi)串行口發(fā)送/接收中斷請(qǐng)求;為了了解每個(gè)中斷源是否產(chǎn)生了中斷請(qǐng)求,中斷系統(tǒng)應(yīng)設(shè)置許多個(gè)中斷請(qǐng)求觸發(fā)器(標(biāo)志位)實(shí)現(xiàn)記憶。這些中斷源請(qǐng)求標(biāo)志位分別有特殊功能寄存器TCON和SCON的相應(yīng)位鎖存定時(shí)器/計(jì)數(shù)器控制寄存器TCON,它是一個(gè)八位的寄存器,各位如表4.1所示:表4.1 定時(shí)器/計(jì)數(shù)器控制

20、寄存器TCONTF1TF0IE1IT1IE0IT0IT0,IT1:外部中斷0、1觸發(fā)方式選擇位,由軟件設(shè)置。1是下降沿觸發(fā),0是電平觸發(fā)。IE0,IE1:外部終端0、1請(qǐng)求標(biāo)志位。TF0,TF1:定時(shí)器/計(jì)數(shù)器0、1溢出中斷請(qǐng)求標(biāo)志。3.2.2 中斷的控制中斷的控制主要實(shí)現(xiàn)中斷的開關(guān)管理和中斷優(yōu)先級(jí)的管理。這個(gè)管理主要通過對(duì)特殊功能寄存器IE和IP的編程實(shí)現(xiàn)。(1)中斷允許寄存器IE表4.2 中斷允許寄存器IEEA -ET2ESET1EX1ET0EX0EX0,EX1:外部終端0,1的中斷允許位。1是中斷開,0是中斷關(guān)ET0,ET1:定時(shí)器/計(jì)數(shù)器0、1溢出中斷允許位。1是開中斷,0是關(guān)中斷ES

21、:串行口中斷允許位。1是中斷開,0是中斷關(guān)ET2:定時(shí)器/計(jì)數(shù)器2溢出中斷位EA:CPU開/關(guān)中斷控制位。1是開中斷,0是關(guān)中斷(2)中斷優(yōu)先級(jí)寄存器IP表4.3 中斷優(yōu)先級(jí)寄存器IPPSPT1PX1PT0PX0若系統(tǒng)中多個(gè)中斷源同時(shí)請(qǐng)求中斷,則CPU按中斷源的優(yōu)先級(jí)別,由高到低分別響應(yīng)。80C51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí):高優(yōu)先級(jí)和低優(yōu)先級(jí)。每個(gè)中斷源都可以編程為高優(yōu)先級(jí)。這可以實(shí)現(xiàn)兩級(jí)中斷嵌套。嵌套的原則:一個(gè)正在執(zhí)行的中斷服務(wù)程序可以被高級(jí)的中斷請(qǐng)求中斷,而不能被同級(jí)或較低級(jí)的中斷請(qǐng)求中斷。兩級(jí)中斷通過使用IP寄存器設(shè)置,相應(yīng)的位置1,則優(yōu)先級(jí)高,0則優(yōu)先級(jí)低。PX0、PX1:終端0、1中

22、斷優(yōu)先級(jí)控制;PT0、PT1:定時(shí)器/計(jì)數(shù)器0、1中斷優(yōu)先級(jí)控制。PS:串行口中斷優(yōu)先級(jí)控制。80C51復(fù)位時(shí),IP被清零,5個(gè)中斷源都在同一個(gè)優(yōu)先級(jí)。這時(shí)若其中幾個(gè)中斷源同時(shí)產(chǎn)生中斷請(qǐng)求,則CPU按照片內(nèi)硬件優(yōu)先級(jí)鏈路的順序相應(yīng)中斷,硬件優(yōu)先級(jí)由高到低的順序是:外部終端0,定時(shí)器/計(jì)數(shù)器0,外部中斷1,定時(shí)器/計(jì)數(shù)器1串行口中斷。3.2.3 中斷響應(yīng)80C51的CPU在每個(gè)機(jī)器周期采樣中斷源的中斷請(qǐng)求標(biāo)志位,如果沒有上述阻止條件,則將在下一個(gè)機(jī)器周期響應(yīng)被激活的最高級(jí)中斷請(qǐng)求。阻止條件如下: CPU正在處理同級(jí)或更高級(jí)的中斷; 現(xiàn)行機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期; 正在執(zhí)行的是RE

23、TI或者是訪問IE或IP的指令;CPU在中斷響應(yīng)之后完成如下操作: 硬件清除相應(yīng)的中斷標(biāo)志位; 執(zhí)行一條硬件子程序,保護(hù)斷點(diǎn),并轉(zhuǎn)向中斷服務(wù)程序入口。 結(jié)束中斷時(shí)執(zhí)行RETI指令,恢復(fù)斷點(diǎn),返回主程序。80C51的CPU在相應(yīng)中斷請(qǐng)求時(shí),由硬件電路自動(dòng)形成轉(zhuǎn)向與該中斷源對(duì)應(yīng)的中斷的服務(wù)程序入口地址。這種方法為硬件向量中斷法。各中斷源的中斷服務(wù)程序入口地址如下:表4.4 中斷源的中斷服務(wù)程序入口地址編號(hào)中斷源入口地址0外部終端00003H1定時(shí)器/計(jì)數(shù)器0000BH2外部終端10013H3定時(shí)器/計(jì)數(shù)器1001BH4串行口中斷0023H各中斷服務(wù)程序入口地址僅隔8個(gè)字節(jié),編譯器在這些地址放入無條

24、件轉(zhuǎn)移指令,跳到服務(wù)程序的實(shí)際地址。向量中斷包括把先前的程序計(jì)數(shù)指針推入堆棧,中斷服務(wù)程序很像其他子程序。當(dāng)向量中斷發(fā)生時(shí),硬件禁止所有中斷。此時(shí)表明外部中斷或定時(shí)器溢出的標(biāo)志位由硬件清除。中斷服務(wù)程序的不同分支取決于中斷源。在重新允許全局CPU中斷EA之前,必須仔細(xì)清除各種標(biāo)志。標(biāo)志會(huì)引起立即地重復(fù)中斷。80C51對(duì)終端實(shí)際上有特殊的返回指令-RETI。不是RET。RETI重新允許系統(tǒng)識(shí)別其他中斷。因而,沒必要在正常使用中斷時(shí)復(fù)位EA,只要在程序初始化時(shí)開中斷一次就可以了。3.3 單片機(jī)定時(shí)器/計(jì)數(shù)器的使用80C51系列單片機(jī)至少有兩個(gè)16位內(nèi)部定時(shí)器/計(jì)數(shù)器。8952有三個(gè)定時(shí)器/計(jì)數(shù)器,

25、其中連個(gè)基本定時(shí)器/計(jì)數(shù)器是定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1。他們既可以編程為定時(shí)器使用,也可以編程為計(jì)數(shù)器使用。若是計(jì)數(shù)內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘,則它是定時(shí)器;若是計(jì)數(shù)80C51的輸入引腳的脈沖信號(hào),則它是計(jì)數(shù)器。80C51的T/C時(shí)加一計(jì)數(shù)的。定時(shí)器實(shí)際上也是工作在技術(shù)方式下的,只不過對(duì)固定頻率的脈沖計(jì)數(shù);由于脈沖周期固定,由計(jì)數(shù)值可以計(jì)算出時(shí)間,有定時(shí)功能。當(dāng)T/C工作在定時(shí)器時(shí),對(duì)振蕩源12分頻的脈沖計(jì)數(shù),即每個(gè)機(jī)器周期計(jì)數(shù)值加一,頻率加=fosc/12。晶振為6MHz,計(jì)數(shù)頻率=500KHz,每2uS計(jì)數(shù)加一。當(dāng)T/C工作在計(jì)數(shù)器時(shí),計(jì)數(shù)脈沖來自外部脈沖輸入引腳T0或T1。當(dāng)T0或T1腳上

26、負(fù)跳變需2個(gè)機(jī)器周期,即24個(gè)振蕩周期。所以T0或T1腳輸入的計(jì)數(shù)外部脈沖的最高頻率為fosc/12。當(dāng)晶振為12MHz時(shí),最高技術(shù)頻率為500KHz,高于此頻率將計(jì)數(shù)出錯(cuò)。3.3.1 與T/C有關(guān)的特殊功能寄存器(1)計(jì)數(shù)寄存器TH和TLT/C是16位的,計(jì)數(shù)寄存器有TH高8位TL低8位構(gòu)成。在特殊功能寄存器中,對(duì)應(yīng)T/C0為TH0和TL0;對(duì)應(yīng)T/C1為TH1和TL1。定時(shí)器/計(jì)數(shù)器的初始值通過TH1/TL1和TH0/TL0設(shè)置(2)定時(shí)器/計(jì)數(shù)器控制寄存器TCON表4.5 定時(shí)器/計(jì)數(shù)器控制寄存器TCONTR1TR0TR0、TR1:定時(shí)器/計(jì)數(shù)器0、1啟動(dòng)控制位。1是啟動(dòng),0是停止TCO

27、N復(fù)位后清零,T/C需要受到軟件控制才能啟動(dòng)計(jì)數(shù);當(dāng)計(jì)數(shù)計(jì)滿時(shí),產(chǎn)生向高位的進(jìn)位TF,即溢出中斷請(qǐng)求標(biāo)志T/C的方式控制寄存器TMOD表4.6 T/C的方式控制寄存器TMODGATEC/TM1M0GATEC/TM1M0C/T:計(jì)數(shù)器或定時(shí)器選擇位。1位計(jì)數(shù)器,0位定時(shí)器GATE:門控信號(hào)。1時(shí)T/C的啟動(dòng)控制受到雙重控制,即要求TR0/TR1和INT0/INT1同時(shí)為高;0時(shí)T/C的啟動(dòng)僅受TR0/TR1控制。表4.7 M1和M0工作方式選擇位M1 M0方式功能0 00為13位定時(shí)器/計(jì)數(shù)器,TL存低5位,TH存高8位0 11為16定時(shí)器/計(jì)數(shù)器,TL存低8,TH存高8位1 02常數(shù)自動(dòng)裝入的

28、8位定時(shí)器/計(jì)數(shù)器1 13僅適用于T/C0,兩個(gè)8為定時(shí)器/計(jì)數(shù)器3.3.2 定時(shí)器/計(jì)數(shù)器的初始化(1)初始化步驟在使用80C51的定時(shí)器/計(jì)數(shù)器前,應(yīng)對(duì)它進(jìn)行編程初始化,主要是對(duì)TCON和TMOD編程,還需要計(jì)算和裝載T/C的計(jì)數(shù)初值。一般完成以下幾個(gè)步驟:l 確定T/C的工作方式-編程TMOD寄存器。l 計(jì)算T/C中的計(jì)數(shù)初值,并裝載到TH和TL。l T/C在中斷方式工作時(shí),須開CPU中斷和源中斷-編程IE寄存器。l 啟動(dòng)定時(shí)器/計(jì)數(shù)器-編程TCON中TR1和TR0位(2)計(jì)數(shù)初值的計(jì)算在定時(shí)器方式下,T/C是對(duì)機(jī)器周期脈沖計(jì)數(shù)的,如果fosc=6MHz,一個(gè)機(jī)器周期為2us,則方式0

29、13位定時(shí)器最大時(shí)間間隔=(2-1)×2us=16.384ms;方式1 16位定時(shí)器最大時(shí)間間隔=(2-1)×2us=131.072ms;方式2 8 位定時(shí)器最大時(shí)間間隔=(2-1)×2us=512us若使T/C工作在定時(shí)器方式1,要求定時(shí)1ms,求計(jì)數(shù)初值。如設(shè)計(jì)數(shù)初值為x,則有(2-1)×2us=1000usx=2-500因此,TH,TL可置65536-500。2系統(tǒng)組成及工作原理2.1控制單元設(shè)計(jì)按鍵名稱,O鍵表示開始計(jì)算路程;F鍵表示暫停;E鍵表示復(fù)位。 當(dāng)程序開始運(yùn)行后,按下0鍵則表示開始計(jì)算路程,并由數(shù)碼管顯示出來;按下F鍵則路程記數(shù)器暫停,

30、并顯示當(dāng)前路程,當(dāng)按下E鍵則復(fù)位。2.2輸出單元設(shè)計(jì) 通過六個(gè)8段LED數(shù)碼管來顯示路程。前四個(gè)分別表示千位、百位、十位、個(gè)位,而后兩個(gè)表示十分位和百分位。2.3定時(shí)器的功能和使用方法 首先選擇方式1為16位的定時(shí)器,其初始化具體如下: s其中fosc為晶振頻率,定時(shí)時(shí)間。3電路方案設(shè)計(jì)3.1電路設(shè)計(jì)方案使用單片機(jī)來完成設(shè)計(jì)要求。電路包括顯示電路,設(shè)置電路,存儲(chǔ)電路,復(fù)位電路,其工作原理圖如圖2所示,單片機(jī)功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎膶?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過軟件編程來完成更多的附加功能。針對(duì)計(jì)費(fèi)模式的切換,通過軟件編程就可以輕容易的實(shí)現(xiàn)。避免了機(jī)械開關(guān)帶來的

31、不穩(wěn)定因素,單片機(jī)單元框圖如圖3所示。顯示電路 路程顯示設(shè)置電路系統(tǒng)復(fù)位存儲(chǔ)電路系統(tǒng)開始系統(tǒng)暫停 單 片 機(jī)圖2 工作原理框圖 CPU數(shù)碼管顯示功能按鍵時(shí)鐘電路8255并行編程圖3 單片機(jī)單元框圖3.2單元電路設(shè)計(jì)3.2.1復(fù)位電路設(shè)計(jì)在單片機(jī)的應(yīng)用系統(tǒng)中,除單片機(jī)本身需復(fù)位以外,外部擴(kuò)展的I/O接口電路等也需要復(fù)位,因此需要一個(gè)系統(tǒng)的同步復(fù)位信號(hào):即單片機(jī)復(fù)位后,CPU開始工作時(shí),外部的電路一定要復(fù)位好,以保證CPU有效的對(duì)外部電路進(jìn)行初始化編程。51系列單片機(jī)的復(fù)位端RST是一個(gè)施密特觸發(fā)輸入,高電平有效。復(fù)位電路產(chǎn)生的復(fù)位信號(hào)經(jīng)施密特電路整形后作為系統(tǒng)復(fù)位信號(hào),加到51系列單片機(jī)和外部I

32、/O接口電路的復(fù)位端.其電路圖如圖4所示,其中R1=47K,R2=100,C=10uF。圖4 復(fù)位電路3.2.2時(shí)鐘電路設(shè)計(jì)80C51系列單片機(jī)內(nèi)部有一個(gè)可控制的反相放大器,引腳XTAL1、XTAL2為反相放大器的輸入端和輸出端,在XTAL1、XTAL2上外接晶振(或陶瓷諧振器)和電容便組成振蕩器。具體的時(shí)鐘電路如圖5所示。電容1、2的典型值為30pF+10pF(晶振)或40pF+10pF(陶瓷諧振器)。振蕩器頻率主要取決與晶振(或陶瓷諧振器)的頻率,但必須小于器件所允許的最高頻率。振蕩器的工作受控制,復(fù)位后0(1)振蕩器工作,可由軟件置1,使振蕩器停止振蕩,從而使整個(gè)單片機(jī)停止工作,以達(dá)到節(jié)

33、電的目的。圖3.2 時(shí)鐘電路圖5 時(shí)鐘電路3.2.3單片機(jī)最小系統(tǒng)主控機(jī)系統(tǒng)采用了Atmel 公司生產(chǎn)的80C51 單片機(jī),它含有128 字節(jié)數(shù)據(jù)存儲(chǔ)器,內(nèi)置4K 的電可擦除FLASH ROM,可重復(fù)編程,大小滿足主控機(jī)軟件系統(tǒng)設(shè)計(jì),所以不必再擴(kuò)展程序存儲(chǔ)器。復(fù)位電路和晶振電路是80C51 工作所需的最簡(jiǎn)外圍電路。80C51 的復(fù)位端是一個(gè)史密特觸發(fā)輸入,高電平有效,而系統(tǒng)中的時(shí)鐘接口和CAN 總線接口的復(fù)位信號(hào)都是低電平有效。在復(fù)位電路中,按一下復(fù)位開關(guān)就使在RS端出現(xiàn)一段時(shí)間的高電平,經(jīng)過74LS14 的一次反相整形,提供給單片機(jī)復(fù)位端。再經(jīng)過一次反相整形,通過I/ORST 端提供給外部接

34、口電路。外接12M 晶振和兩個(gè)20P 電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路。3.3 8255A鍵盤顯示電路設(shè)計(jì)8255的數(shù)據(jù)線片選信號(hào)線、地址線、讀寫控制線等分別與系統(tǒng)總線相連,其A、B、C三個(gè)端口以排針形式引出,供8255實(shí)驗(yàn)使用,如圖6所示。 圖6 系統(tǒng)中的8255線路采用8255擴(kuò)展I/O口所謂可編程的接口芯片是指其功能可由微處理機(jī)的指令來加以改變的接口芯片,利用編程的方法,可以使一個(gè)接口芯片執(zhí)行不同的接口功能。目前,各生產(chǎn)廠家已提供了很多系列的可編程接口,MCS-51單片機(jī)常用的兩種接口芯片是8255以及8155,本書主要介紹這兩種芯片在51單片機(jī)中的使用。8255和MCS-51相連,可以為外設(shè)

35、提供三個(gè)8位的I/O端口:A口、B口和C口,三個(gè)端口的功能完全由編程來決定。8255的內(nèi)部結(jié)構(gòu)和引腳圖(1)A口、B口和C口。A口、B口和C口均為8位I/O數(shù)據(jù)口,但結(jié)構(gòu)上略有差別。A口由一個(gè)8位的數(shù)據(jù)輸出緩沖/鎖存器和一個(gè)8位的數(shù)據(jù)輸入緩沖/鎖存器組成。B口由一個(gè)8位的數(shù)據(jù)輸出緩沖/鎖存器和一個(gè)8位的數(shù)據(jù)輸入緩沖器組成。三個(gè)端口都可以和外設(shè)相連,分別傳送外設(shè)的輸入/輸出數(shù)據(jù)或控制信息。 (2) A、B組控制電路。這是兩組根據(jù)CPU的命令字控制8255工作方式的電路。A組控制A口及C口的高4位,B組控制B口及C口的低4位。 (3) 數(shù)據(jù)緩沖器。這是一個(gè)雙向三態(tài)8位的驅(qū)動(dòng)口,用于和單片機(jī)的數(shù)據(jù)總

36、線相連,傳送數(shù)據(jù)或控制信息。(4) 讀/寫控制邏輯。這部分電路接收MCS-51送來的讀/寫命令和選口地址,用于控制對(duì)8255的讀/寫。 2) 引腳 (1) 數(shù)據(jù)線(8條):D0D7為數(shù)據(jù)總線,用于傳送CPU和8255之間的數(shù)據(jù)、命令和狀態(tài)字。 (2) 控制線和尋址線(6條)。 RESET:復(fù)位信號(hào),輸入高電平有效。一般和單片機(jī)的復(fù)位相連,復(fù)位后,8255所有內(nèi)部寄存器清0,所有口都為輸入方式。/RE和/WR:讀/寫信號(hào)線,輸入,低電平有效。當(dāng)為0時(shí)(必為1),所選的8255處于讀狀態(tài),8255送出信息到CPU。反之亦然。cs:片選線,輸入,低電平有效。A0、A1:地址輸入線。當(dāng)=0,芯片被選中

37、時(shí),這兩位的4種組合00、01、10、11分別用于選擇A、B、C口和控制寄存器。(3)I/O口線(24條):PA0PA7、PB0PB7、PC0PC7為24條雙向三態(tài)I/O總線,分別與A、B、C口相對(duì)應(yīng),用于8255和外設(shè)之間傳送數(shù)據(jù)。(4) 電源線(2條):VCC為+5 V,GND為地線。 2. 8255的控制字8255的三個(gè)端口具體工作在什么方式下,是通過CPU對(duì)控制口的寫入控制字來決定的。8255有兩個(gè)控制字:方式選擇控制字和C口置/復(fù)位控制字。用戶通過程序把這兩個(gè)控制字送到8255的控制寄存器(A0A1=11),這兩個(gè)控制字以D7來作為標(biāo)志。1) 方式選擇控制字方式選擇控制字的格式和定義

38、如圖6.18(a)所示。例7.5 設(shè)8255控制字寄存器的地址為F3H,試編程使A口為方式0輸出,B口為方式0輸入,PC4PC7為輸出,PC0PC3為輸入。其程序?yàn)镸OV R0,#0F3H MOV A,#83H MOVX R0, A 2) C口置/復(fù)位控制字C口置/復(fù)位控制字的格式和定義如圖6.18(b)所示。C口具有位操作功能,把一個(gè)置/復(fù)位控制字送入8255的控制寄存器,就能將C口的某一位置1或清0而不影響其它位的狀態(tài)。圖7.18 8255控制字的格式和定義 例7.6 仍設(shè)8255控制字寄存器地址為F3H,下述程序可以將PC1置1,PC3清0。MOV R0,#0F3HMOV A,#03HM

39、OVX R0, AMOV A,#06HMOVX R0, A3. 8255的工作方式8255有三種工作方式:方式0、方式1、方式2。方式的選擇是通過上述寫控制字的方法來完成的。(1) 方式0(基本輸入/輸出方式):A口、B口及C口高4位、低4位都可以設(shè)置輸入或輸出,不需要選通信號(hào)。單片機(jī)可以對(duì)8255進(jìn)行I/O數(shù)據(jù)的無條件傳送,外設(shè)的I/O數(shù)據(jù)在8255的各端口能得到鎖存和緩沖。(2) 方式1(選通輸入/輸出方式):A口和B口都可以獨(dú)立的設(shè)置為方式1,在這種方式下,8255的A口和B口通常用于傳送和它們相連外設(shè)的I/O數(shù)據(jù),C口作為A口和B口的握手聯(lián)絡(luò)線,以實(shí)現(xiàn)中斷方式傳送I/O數(shù)據(jù)。C口作為聯(lián)

40、絡(luò)線的各位分配是在設(shè)計(jì)8255時(shí)規(guī)定的,分配表如表7.3所示。表7.3 8255C口聯(lián)絡(luò)信號(hào)分配表C口各位方式1方式2輸入方式輸出方式雙向方式PC0INTRBINTRB由B口方式?jīng)Q定PC1IBFB由B口方式?jīng)Q定PC2SETB由B口方式?jīng)Q定PC3INTRAINTRBINTRAPC4I/OPC5IBFAI/OIBFAPC6I/OPC7I/OI/O口線:可以根據(jù)用戶需要連接外部設(shè)備。圖6.19中,A口作輸出,接8個(gè)發(fā)光二極管LED;B口作輸入,接8個(gè)按鍵開關(guān);C口未用。圖7.19 8051和8255的接口電路 2) 地址確定 8051A15A14A13A12A11A10A9A8A7A6A5A4A3A

41、2A1A0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.08255A1A0A口:××××××××0×××××00B口:××××××××0×××××01C口:××××××××0

42、15;××××10控制口:××××××××0×××××11根據(jù)上述接法,8255的A、B、C以及控制口的地址分別為0000H、0001H、0002H和0003H(假設(shè)無關(guān)位都取0)。3) 編程應(yīng)用例7.7 如果在8255的B口接有8個(gè)按鍵,A口接有8個(gè)發(fā)光二極管,即類似于圖6.16中按鍵和二極管的連接,則下面的程序能夠完成按下某一按鍵,相應(yīng)的發(fā)光二極管發(fā)光的功能。 MOV DPTR,#0003H ;指向8255的控制口 MOV

43、 A,#83H MOVX DPTR, A ;向控制口寫控制字,A口輸出,B口輸入 MOV DPTR,#0001H ;指向8255的B口LOOP: MOVX A, DPTR ;檢測(cè)按鍵,將按鍵狀態(tài)讀入A累加器 MOV DPTR,#0000H ;指向8255的A口 MOVX DPTR, A ;驅(qū)動(dòng)LED發(fā)光 SJMP LOOP4. 8255與MCS-51的接口 8255和單片機(jī)的接口十分簡(jiǎn)單,只需要一個(gè)8位的地址鎖存器即可。鎖存器用來鎖存P0口輸出的低8位地址信息。圖6.19為8255擴(kuò)展實(shí)例。 1) 連線說明 數(shù)據(jù)線:8255的8根數(shù)據(jù)線D0D7直接和P0口一一對(duì)應(yīng)相連就可以了。 LED數(shù)碼管顯

44、示接口一、LED數(shù)碼管圖8-1 LED數(shù)碼管LED數(shù)碼管分類:按其內(nèi)部結(jié)構(gòu)可分為共陰型和共陽型;按其外形尺寸有多種形式,使用較多的是0.5"和0.8";按顯示顏色也有多種形式,主要有紅色和綠色;按亮度強(qiáng)弱可分為超亮、高亮和普亮。正向壓降一般為1.52V,額定電流為10mA,最大電流為40mA。 二、LED數(shù)碼管編碼方式 表8-1 共陰和共陽LED數(shù)碼管幾種八段編碼表 顯示數(shù)字共陰順序小數(shù)點(diǎn)暗 共陰逆序小數(shù)點(diǎn)暗 共陽順序小數(shù)點(diǎn)亮 共陽順序小數(shù)點(diǎn)暗 Dp g f e d c b a16進(jìn)制 a b c d e f g Dp16進(jìn)制00 0 1 1 1 1 1 13FH1 1 1

45、 1 1 1 0 0FCH40HC0H10 0 0 0 0 1 1 006H0 1 1 0 0 0 0 060H79HF9H20 1 0 1 1 0 1 15BH1 1 0 1 1 0 1 0DAH24HA4H30 1 0 0 1 1 1 14FH1 1 1 1 0 0 1 0F2H30HB0H40 1 1 0 0 1 1 066H0 1 1 0 0 1 1 066H19H99H50 1 1 0 1 1 0 16DH1 0 1 1 0 1 1 0B6H12H92H60 1 1 1 1 1 0 17DH1 0 1 1 1 1 1 0BEH02H82H70 0 0 0 0 1 1 107H1 1

46、1 0 0 0 0 0E0H78HF8H80 1 1 1 1 1 1 17FH1 1 1 1 1 1 1 0FEH00H80H90 1 1 0 1 1 1 16FH1 1 1 1 0 1 1 0F6H10H90H顯示數(shù)轉(zhuǎn)換為顯示字段碼的步驟: 從顯示數(shù)中分離出顯示的每一位數(shù)字 方法是將顯示數(shù)除以十進(jìn)制的權(quán) 將分離出的顯示數(shù)字轉(zhuǎn)換為顯示字段碼 方法是查表【例8-1】已知顯示數(shù)存在內(nèi)RAM 30H(高位)、31H中,試將其轉(zhuǎn)換為5位共陰字段碼(順序),存在以30H(高位)為首址的內(nèi)RAM中。解:連續(xù)調(diào)用下列二個(gè)子程序即可。 分離顯示數(shù)字子程序SPRT: MOV R0,#30H ;置萬位BCD碼間址

47、 MOV A,30H ;置被除數(shù) MOV B,31H ; MOV R6,#27H ;置除數(shù)10000 = 2710H MOV R5,#10H ; LCALL SUM ;除以10000,萬位商存30H,余數(shù)存A、B MOV R6,#03H ;置除數(shù)1000 = 03E8H MOV R5,#0E8H ; INC R0 ;指向千位商間址(31H) LCALL SUM ;除以1000,千位商存31H,余數(shù)存A、B MOV R6,#0 ;置除數(shù)100 MOV R5,#100 ; INC R0 ;指向百位商間址(32H) LCALL SUM ;除以100,百位商存32H,余數(shù)存A(B=0) MOV B,#

48、10 ;置除數(shù)10 DIV AB ;除以10 INC R0 ;指向十位商間址(33H) MOV R0,A ;十位商存33H XCH A,B ;讀個(gè)位數(shù) INC R0 ;指向個(gè)位間址(34H) MOV R0,A ;個(gè)位存34H RET ;說明:SUM是16位除以16位子程序:(A、B)÷(R6、R5)=商R0,余數(shù)(A、B)。 轉(zhuǎn)換顯示字段碼子程序CHAG: MOV DPTR,#TAB ;置共陰字段碼表首址 MOV R0,#30H ;置顯示數(shù)據(jù)區(qū)首址CGLP: MOV A,R0 ;取顯示數(shù)字 MOVC A,A+DPTR ;讀相應(yīng)顯示字段碼 MOV R0,A ;存顯示字段碼 INC R0

49、 ;指向下一顯示數(shù)字 CJNE R0,#35H,CGLP ;判5個(gè)顯示數(shù)字轉(zhuǎn)換完否?未完繼續(xù) RET ;轉(zhuǎn)換完畢,結(jié)束TAB: DB 3FH,06H,5BH,4FH,66H ;共陰字段碼表 DB 6DH,7DH,07H,7FH,6FH ;三、靜態(tài)顯示方式及其典型應(yīng)用電路LED數(shù)碼管顯示分類:靜態(tài)顯示方式和動(dòng)態(tài)顯示方式。 靜態(tài)顯示方式,每一位字段碼分別從I/O控制口輸出,保持不變直至CPU刷新。 特點(diǎn):編程較簡(jiǎn)單,但占用I/O口線多,一般適用于顯示位數(shù)較少的場(chǎng)合。 動(dòng)態(tài)顯示方式,在某一瞬時(shí)顯示一位,依次循環(huán)掃描,輪流顯示,由于人的視覺滯留效應(yīng),人們看到的是多位同時(shí)穩(wěn)定顯示。 特點(diǎn):占用I/O端線

50、少,電路較簡(jiǎn)單,編程較復(fù)雜,CPU要定時(shí)掃描刷新顯示。一般適用于顯示位數(shù)較多的場(chǎng)合。1、并行擴(kuò)展靜態(tài)顯示電路 圖8-2 LED靜態(tài)顯示電路【例8-2】按圖8-2編制顯示子程序,顯示數(shù)(255)存在內(nèi)RAM 30H中。解:DIR1: MOV A,30H ;讀顯示數(shù) MOV B,#100 ;置除數(shù) DIV AB ;產(chǎn)生百位顯示數(shù)字 MOVC A,A+DPTR ;讀百位顯示符 MOV DPTR,#0DFFFH ;置74377(百位)地址 MOVX DPTR,A ;輸出百位顯示符 MOV A,B ;讀余數(shù) MOV B,#10 ;置除數(shù) DIV AB ;產(chǎn)生十位顯示數(shù)字 MOV DPTR,#TAB ;置共陽字段碼表首址 MOVC A,A+DPTR ;讀十位顯示符 MOV DPTR,#0BFFFH ;置74377(十位)地址 MOVX DPTR,A ;輸出十位顯示符 MOV A,B ;讀個(gè)位顯示數(shù)字 MOV DPTR,#TAB ;置共陽字段碼

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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)論