版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 、引 言 .32 、AT89C52 單片機(jī).42.1 AT89C52 單片機(jī)簡(jiǎn)介.42.2 AT89C52 的管腳及其含義.43 、TC4024 .84、 24C01 芯片.94.1 24C01 簡(jiǎn)介 .94.2 24C01 的特性: .105 、硬件電路的設(shè)計(jì) .115.1 系統(tǒng)硬件電路.115.2 系統(tǒng)的工作原理. 126、軟件設(shè)計(jì) .136.1 系統(tǒng)內(nèi)存的規(guī)劃.136.2 系統(tǒng)的主要程序設(shè)計(jì).137 、系統(tǒng)調(diào)試 .167.1 硬件調(diào)試.167.2 軟件調(diào)試.16參考文獻(xiàn).18 1 引 言 傳感器,英文名字為 Sensor 或 Transducer,亦稱換能器、變換器。在科技迅速發(fā)展的
2、今天,傳感器越來倍受重視。在日常生活、航天、航空,常規(guī)武器、交通運(yùn)輸,機(jī)械制造、化工、生物醫(yī)學(xué)工程、自動(dòng)化檢測(cè)工程及計(jì)量等各項(xiàng)領(lǐng)域都被廣泛應(yīng)用。 目前,傳感器已向新材料開發(fā),集成化、智能化、數(shù)字化、新工藝,高精度化及高穩(wěn)定、高可靠化等技術(shù)發(fā)展。特別是霍爾傳感器,鑒于它的價(jià)廉、易于使用,使它廣泛運(yùn)用于里程計(jì)、速度計(jì)等 。 單片微型計(jì)算機(jī)簡(jiǎn)稱單片機(jī),又稱微控制器,特別適用于控制領(lǐng)域。通常單片機(jī)由單塊集成電路構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本部件:CPU(中央處理器) ,存儲(chǔ)器和 I/O 接口電路等。因此,單片機(jī)只需要與適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可以成為一個(gè)單片機(jī)控制系統(tǒng)。 目前,場(chǎng)上銷售的單片機(jī)有
3、4 位、8、16 位、32 位,并且單片機(jī)朝著高性能多種方向發(fā)展,尤其是 8 位單片機(jī)以經(jīng)成為當(dāng)前單片機(jī)的主流,主要體現(xiàn)在 CPU 功能增強(qiáng)、內(nèi)部資源增多、引腳的功能化、低電壓和低功好耗化上。 單片機(jī)因?yàn)槠潴w積小、功能強(qiáng),可靠性高,靈活方便等優(yōu)點(diǎn),所以可以用于各個(gè)領(lǐng)域,對(duì)各行各業(yè)的技術(shù)改造和產(chǎn)品更新?lián)Q代起到重要的推動(dòng)作用。 本人經(jīng)過學(xué)習(xí),用 AT89C52 設(shè)計(jì)了一個(gè)自行車?yán)锍?速度計(jì)。本設(shè)計(jì)可輪流顯示自行車行使的里程和速度, 采用 TC4024 芯片作為計(jì)數(shù)器以及 2C401 存儲(chǔ)數(shù)據(jù),3 個(gè)單級(jí)共陰數(shù)碼管作為顯示系統(tǒng)。本系統(tǒng)具有超速信響提醒功能,里程數(shù)據(jù)自動(dòng)記憶,也可應(yīng)用于電動(dòng)自行車、摩托
4、車、汽車等機(jī)動(dòng)車儀表上。2 AT89C52 單片機(jī)2.12.1 AT89C52 單片機(jī)簡(jiǎn)介本設(shè)計(jì)選用 AT89C52 單片機(jī),AT89C52 是一種低功耗、高性能CMOS 8 位微控制器。使用 Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,可與工業(yè) AT89C51 產(chǎn)品指令和引腳完全兼容。2.22.2 AT89C52 的管腳及其含義AT89C52 的管腳及各管腳含義如下:圖 2.289C52 管腳圖各引腳功能說明:VCC電源電壓;GND接地; P0 口P0 口是一組 8 位漏極開路型雙向 I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng) 8 個(gè)TTL 邏輯門電路,
5、對(duì)端口 P0 寫“1”時(shí),可作為高阻抗輸入端用; 在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低 8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻; 在 FLASH 編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻; P1 口P1 口是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 口,P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸出口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流; 與 AT89C51 不同之處是,P1.0 和 P
6、1.1 還可分別作為定時(shí)/計(jì)數(shù)器 2的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX); FLASH 編程和程序校驗(yàn)期間,P1 接收低 8 位地址; P1.0 和 P1.1 的第二功能:P1.0 T2(定時(shí)/計(jì)數(shù)器 2 外部計(jì)數(shù)脈沖輸入),時(shí)鐘輸出 ;P1.1 T2EX(定時(shí)/計(jì)數(shù) 2 捕獲/重裝載觸發(fā)和方向控制); P2 口P2 是一個(gè)帶內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯門電路。對(duì)端口 P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)
7、輸出一個(gè)電流; 在訪問外部程序存儲(chǔ)器或 16 位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2 口送出高 8 位地址數(shù)據(jù)。在訪問 8 位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2 口輸出 P2 鎖存器的內(nèi)容; FLASH 編程或校驗(yàn)時(shí),P2 亦接收高位地址和一些控制信號(hào); P3 口P3 口是一組帶有內(nèi)部上拉電阻的 8 位雙向 I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè) TTL 邏輯門電路。對(duì) P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的 P3 口將用上拉電阻輸出電流; P3 口除了作為一般的 I/O 口線外,更重要的用途是它的第二功能:P3.0 RXD(串行輸入口) P3.
8、1 TXD(串行輸出口) P3.2 INTO(外中斷 0) P3.3 INT1(外中斷 1) P3.4 TO(定時(shí)/計(jì)數(shù)器 0) P3.5 T1(定時(shí)/計(jì)數(shù)器 1) P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) 此外,P3 口還接收一些用于 FLASH 閃存編程和程序校驗(yàn)的控制信號(hào); RST復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST 引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位; ALE/PROG當(dāng)訪問外部程存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的 1/6 輸出固定的脈沖信號(hào),因此它可對(duì)外輸
9、出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè) ALE 脈沖; 對(duì) FLASH 存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG); EA 端為高電平(接 Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。3 TC4024 本程序采用 TC4024 芯片,它是一個(gè) 7 位的計(jì)數(shù)器,計(jì)數(shù)器具有分頻的作用,它包含有 14 個(gè)管腳,其 7 腳接地,14 腳接+5V,1 腳接 AT89C52 的 INT0,即 12 腳,在系統(tǒng)中此芯片起到了二分頻的作用。4 24C01 芯片4.14.1 24C01 簡(jiǎn)介 24C01 是一個(gè) 1K 位串行 CMOS EEPROM,內(nèi)部含有 128
10、個(gè) 8 位字節(jié),CATALYST 的先進(jìn) CMOS 技術(shù)實(shí)際上減少了器件的功耗,24C01 是一個(gè) 8 位字節(jié)頁(yè)寫緩沖器,該器件通過 I2C 總線接口進(jìn)行操作,即此芯片采用 I2C 協(xié)議進(jìn)行讀寫數(shù)據(jù)。有一個(gè)專門的寫保護(hù)功能。24C01 是 I2C 接口的,但標(biāo)準(zhǔn) 51 是不帶 I2C 接口的,串口方式0 是不行的,需要用 IO 模擬,所以隨便接兩個(gè) IO 都可以,而且都要接上拉電阻,大概幾 K 就行了,因?yàn)椴皇强偩€方式,所以不能用MOV 指令,也不能用 SBUF,要判斷是否為滿,可以在程序里設(shè)個(gè)變量。在這里要注意 E2P 芯片的壽命(一般是讀寫 100 萬次,足夠了) 。 存儲(chǔ)數(shù)據(jù)的時(shí)候,可以
11、對(duì)操作數(shù)和存儲(chǔ)的數(shù)據(jù)進(jìn)行比較,不相等則存儲(chǔ),這樣可以增加使用壽命,比有些每隔 1 秒鐘進(jìn)行存儲(chǔ)的會(huì)好多了。以下是 24C01 的管腳圖:圖 4.1 管腳圖表 4.1 24C01 的管腳描述管腳名稱A0、A1、A2功能器件地址選擇SDASCLWPVCCVSS串行數(shù)據(jù)/地址串行時(shí)鐘寫保護(hù)+1.8V6.0V 工作電壓接地4.24.2 24C01 的特性:24C01 芯片具有以下特性:1. 與 400KHZ 的 I2C 總線兼容;2. +1.8-6.0V 工作電壓范圍;3. 低功耗 CMOS 技術(shù);4. 寫保護(hù)功能:當(dāng) WP 為高電平時(shí)進(jìn)入寫保護(hù)狀態(tài);5. 頁(yè)寫緩沖器;6. 自定時(shí)擦寫周期;7. 1,
12、000,000 編程擦除/周期;8. 可保存數(shù)據(jù) 100 年;9. 8 腳 DIP、SOIC、TSSOP 封裝;10 溫度范圍:商業(yè)級(jí)、工業(yè)級(jí)和汽車級(jí)。5 硬件電路的設(shè)計(jì)5.15.1 系統(tǒng)硬件電路 自行車?yán)锍?速度計(jì)能自動(dòng)顯示自行車行駛的總里程數(shù)及行車速度,具有超速信響提醒功能,里程數(shù)據(jù)自動(dòng)記憶,也可應(yīng)用于電動(dòng)自行車、摩托車、汽車等機(jī)動(dòng)車儀表上。其硬件電路原理圖如下圖。圖 5.1 系統(tǒng)原理圖5.25.2 系統(tǒng)的工作原理本設(shè)計(jì)能實(shí)時(shí)地將所測(cè)的速度與累計(jì)里程數(shù)顯示出來,主要是將24C01 傳感器輸入到單片機(jī)的脈沖信號(hào),將頻率實(shí)時(shí)地測(cè)量出來,然后通過單片機(jī)計(jì)算出速度和里程,再將所得的數(shù)據(jù)存儲(chǔ)到 TC
13、4024芯片中,通過 AT89C52 單片機(jī)計(jì)算出來的速度和里程的數(shù)據(jù),必須通過 BCD 碼的轉(zhuǎn)換才能輸出給數(shù)碼管。最后由共陰數(shù)碼管顯示所測(cè)速度與里程。 自行車?yán)锍?速度計(jì)采用 AT89C52 單片機(jī)作控制,速度及里程傳感器采用霍爾元件,其電器原理圖如上圖所示。P0 口和 P2 口用于七段LED 顯示器的段碼及掃描輸出,在顯示里程時(shí),第三位小數(shù)點(diǎn)用 17腳 P3.7 口控制點(diǎn)亮。P1.0 和 P1.1 口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2、 P1.3、 P1.6 和 P1.7 口分別用于設(shè)置輪圈的大小。P3.0 口的開關(guān)用于確定顯示的方式,當(dāng)開關(guān)閉合時(shí),顯示速度;打開時(shí)顯示里程。第 12
14、 腳外中斷 0 用于對(duì)輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個(gè)地電平脈沖。第 13 腳外中斷 1 用于控制定時(shí)器 T1 的啟停,當(dāng)輸入為 0 時(shí)關(guān)閉定時(shí)器。此控制信號(hào)是將輪子圈數(shù)的計(jì)數(shù)脈沖經(jīng)二分頻后形成,這樣,每次定時(shí)器 T1 的開啟時(shí)間剛好為轉(zhuǎn)一圈的時(shí)間。根據(jù)輪子的周長(zhǎng)就可以計(jì)算出自行車的速度。P1.4 和 P1.5 口用于 EEPROM 存儲(chǔ)器 24C01 的存取控制。11 腳輸出用于速度超速時(shí)的報(bào)警。6 軟件設(shè)計(jì)6.16.1 系統(tǒng)內(nèi)存的規(guī)劃 由于本系統(tǒng)處理功能較多,因而一部分內(nèi)存單元用于特定的用處。其主要內(nèi)存單元用處如下:50H:EEPROM 器件尋址字節(jié)存放單元;51H:E
15、EPROM 傳送字節(jié)數(shù)存放單元;30H:EEPROM 發(fā)送數(shù)據(jù)緩沖單元;40H:EEPROM 讀出數(shù)據(jù)存放單元;0A0H:EEPROM 尋址字節(jié)字節(jié)寫;0A1H:EEPROM 尋址字節(jié)字節(jié)讀;62 H:DPTR 計(jì)數(shù)器擴(kuò)展高 8 位;6C H:定時(shí)器 T1 計(jì)數(shù)器擴(kuò)展高 8 位;6D H:定時(shí)器 T1 計(jì)數(shù)器擴(kuò)展高 816 位;60 H、61 H、62 H:里程計(jì)數(shù)單元;68 H、69 H、6A H、6B H:存放自行車每圈時(shí)間數(shù);70 H、71 H、72 H、73 H:顯示 BCD 碼數(shù)據(jù)存放用;11 H15 H:存放被除數(shù);16 H19 H:存放除數(shù)。 6.26.2 系統(tǒng)的主要程序設(shè)計(jì) 1
16、. 初始化程序在本系統(tǒng)初始化程序中,主要完成以下工作:將 T1 設(shè)為外部控制定時(shí)器方式;外中斷 0 及外中斷 1 設(shè)為邊沿觸發(fā)方式;將部分內(nèi)存單元清零;設(shè)置輪子 周長(zhǎng)值;開中斷及定時(shí)器;將EEPROM 中的數(shù)據(jù)調(diào)入內(nèi)存等。 2. 輪圈設(shè)置出錯(cuò)處理程序 P1.2、 P1.3、 P1.6、P1.7 端口的開關(guān)用于設(shè)定輪子的周長(zhǎng),當(dāng)沒有設(shè)定時(shí)(至少讓一個(gè)開關(guān)閉合) ,能從 P3.1 口輸出一個(gè)周期為 0.5S 的方波信號(hào),用作發(fā)光管閃爍及信響器提醒。3.里程計(jì)數(shù)程序(外中斷 0 服務(wù)程序) 外中斷 0 服務(wù)程序用于對(duì) 12 腳輸入的圈脈沖進(jìn)行計(jì)數(shù),為十六進(jìn)制計(jì)數(shù)器。60H 為低位,62H 為高位。每
17、計(jì)數(shù)一次后,對(duì)里程數(shù)據(jù)進(jìn)行一次存儲(chǔ)操作。4.外中斷 1 服務(wù)程序外中斷 1 服務(wù)程序用于處理輪子轉(zhuǎn)動(dòng)一圈后計(jì)時(shí)數(shù)據(jù)。當(dāng)標(biāo)志位(00H)為 1 時(shí),說明計(jì)數(shù)器溢出,放入最大時(shí)間值(為#0FFH);當(dāng)標(biāo)志位為 0 時(shí),將計(jì)數(shù)單元(TL1、TH1、6CH、6DH)的值放入 68H6BH 單元。5.EEPROM 存取程序本系統(tǒng)使用歸一化 I2C 串口存取子程序,使用一條數(shù)據(jù)線和時(shí)鐘線,采用 ATMEL 公司的 24C01 串口存儲(chǔ)器,應(yīng)用簡(jiǎn)單方便。6.顯示子程序當(dāng)顯示里程時(shí),先要將圈數(shù)計(jì)數(shù)器中的數(shù)據(jù)進(jìn)行運(yùn)算,求出總里程。當(dāng)要 顯示速度時(shí),要將輪子的這周長(zhǎng)和轉(zhuǎn)一圈的時(shí)間數(shù)相除,然后換算成 Km/h 單位
18、。最后放入 70H73H,進(jìn)行數(shù)據(jù)顯示7 調(diào)試7.1 硬件調(diào)試 硬件的焊接是一個(gè)比較繁瑣的過程,線路較多,在焊接時(shí)要特別的細(xì)心。在插入芯片時(shí)要特別注意不能把芯片插反,否則就會(huì)把芯片燒掉;也要 注意極性電容的方向,長(zhǎng)的腳為正,短的為負(fù),不能把負(fù)的接+5V,正的接地;在焊接三極管時(shí)也要注意其三個(gè)管腳的排布,還有為保護(hù)三極管不被燒換,所以 3 個(gè)三極管要各自接一個(gè)限流電阻(這里為 4.7K) 。7.2 軟件調(diào)試軟件調(diào)試是調(diào)試的重點(diǎn),同時(shí)也是出錯(cuò)最多的地方;在整個(gè)軟件調(diào)試調(diào)試過程中我采取先部分后整體的調(diào)試方法。在整個(gè)程序的編寫調(diào)試過程中我首先調(diào)試的是數(shù)碼管顯示系統(tǒng),為此我編寫了以下一段程序用于數(shù)碼管顯
19、示調(diào)試,要求數(shù)碼管顯示0、1、2。 ORG 0000H MAIN: MOV P2, #0FFH MOV P0, 0C0H MOV P2, #0FEH ACALL DELAY1 MOV P2, #0FFHMOV P0, 0F9H MOV P2, #0FDH ACALL DELAY1 MOV P2, #0FFH MOV P0, 0A4H MOV P2, #OFBH MOV P2, #0FFH AJMP MAIN DELAY1: MOV R6, #02H AGAIN: MOV R7, #8FHDELAY: DJNZ R7, DELAY DJNZ R6, AGAIN RET END參考文獻(xiàn)1 李玉峰、
20、倪虹霞. MCS-51 系列單片機(jī)原理與接口技術(shù). 第一版. 北京:人民郵電出版社. 20042 周興華. 手把手教你學(xué)單片機(jī). 第一版.北京:北京航空航天大學(xué)出版社. 20053 曾一江. 單片微機(jī)原理與接口技術(shù). 第一版.北京:科學(xué)出版社. 20064 張俊謨. 單片機(jī)中級(jí)教程原理與應(yīng)用. 第二版. 北京:北京航空航天大學(xué)出版社. 2006. P1-115 張友德 、趙志英、涂時(shí)亮. 單片機(jī)微型機(jī)原理、應(yīng)用與實(shí)驗(yàn).第五版.上海:復(fù)旦大學(xué)出版社. 2006. P24-276 呂泉. 現(xiàn)代傳感器原理及應(yīng)用. 第一版. 北京:清華大學(xué)出版社. 2006. P1-57 張毅剛、彭喜元. 單片機(jī)原理
21、與應(yīng)用設(shè)計(jì). 第一版. 哈爾濱:哈爾濱工業(yè)大學(xué). 8 謝自美.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試M.武漢:華中科技大學(xué)出版社,20009 曲家駭,王季秩 ,伺服控制系統(tǒng)中的傳感器10 鄔寬民.單片機(jī)外圍器件實(shí)用手冊(cè),數(shù)據(jù)傳輸接口器件分冊(cè).北京.北京航空航天大學(xué)出版社.2001:189-19511 王貴悅,新編傳感器實(shí)用手冊(cè).水利電力出版社.2002:67-8912 自行車電子里程表的初步設(shè)計(jì) 刁文興 南京工業(yè)職業(yè)技術(shù)學(xué)院 后勤總公司 江蘇 南京 13 數(shù)字式汽車?yán)锍瘫淼脑O(shè)計(jì) 諸德宏, 潘天紅, 朱湘臨 江蘇大學(xué)電氣信息工程學(xué)院 , 江蘇 鎮(zhèn)江 14 電子車速里程表的單片機(jī)實(shí)現(xiàn)方案王鎖弘, 威海雙豐電子傳
22、感有限公司 山東 威海 15 張福學(xué)。傳感器使用電路 150 例.中國(guó)技術(shù)出版社M.1992年16 Embedded Microcontrollers and Processor Design ,嵌入式微控制器與處理器設(shè)計(jì),Greg Osborn,機(jī)械工業(yè)出版社17 Altium Designer (Protel),機(jī)械工業(yè)出版社18 Programming 8-bit PIC Microcontrollers in C with Interactive Hardware Simulation, 8 位單片機(jī) C 語言編程:基于 PIC16 ,Martin P. Bates,人民郵電出版社附錄
23、 源程序:以下是控制系統(tǒng)完整源程序; SPEED/MILE OR IKE PROGRAM ; 60H,61H,62H 作里程計(jì)數(shù)單元,6CH,6DH 作 T1 計(jì)數(shù)擴(kuò)充單元,; 68H,69H,6AH,6BH 存放自行車每圈時(shí)間數(shù),70H,71H,72H,73H; 作顯示 BCD 碼存放數(shù)用,11H15H 存放被除數(shù),16H-19H 存放除數(shù); 定義 VSDA EQU P1.5 ; EEPROM 數(shù)據(jù)傳送口 VSCL EQU P1.4 ; EEPROM 時(shí)鐘傳送口 SLA EQU 50H ; EEPROM 器件尋址字節(jié)元 NUMBYT EQU 51H ; EEPROM 傳送字節(jié)數(shù)單元 MTD
24、EQU 30H ; EEPROM 發(fā)送數(shù)據(jù)緩沖單元 MRD EQU 40H ; EEPROM 讀出數(shù)據(jù)存放單元 SLAW EQU 0A0H ; EEPROM 尋址字節(jié)寫 SLAR EQU 0A1H ; EEPROM 尋址字節(jié)讀 DPHH EQU 62H ; DPTR 計(jì)數(shù)擴(kuò)展高 8 位 TH1H EQU 6CH ; 定時(shí)器 T1 擴(kuò)展高 8 位 TH1HH EQU 6DH ; 定時(shí)器 T1 擴(kuò)展高 8-16 位; PRO GRAM INPUT ; ORG 0000H;程序執(zhí)行開始地址 LJMP START;跳至 START ORG 0003H;外中斷 0 中斷程序入口 LJMP INTEX0;
25、跳至 INTEX0 中斷服務(wù)程序 ORG 000BH;定時(shí)器 T0 中斷程序入口 RETI ;中斷返回 ORG 0013H;外中斷 1 中斷入口 LJMP INTEX1; 跳至 INTEX1 中斷服務(wù)程序 ORG 001BH; 定時(shí)器 T1 中斷程序入口 LJMP INTT1; 跳至 INTT1 中斷服務(wù)程序 ORG 0023H;串口中斷入口地址 RETI ;中斷返回 ORG 002BH;定時(shí)器 T2 中斷入口地址 RETI ;中斷返回; PROGRAM CLEAR ;上電初始化程序CLEARMEN: MOV TMOD, #90H ;T1 為 16 位外部控制定時(shí)器 MOV SP, #75H
26、;堆棧在 75H 開始 SETB PX0 ;外中斷 0 優(yōu)先級(jí)為 1 SETB IT0 ;外中斷 0 用邊沿觸發(fā) SETB IT1 ;外中斷 1 用邊沿觸發(fā) MOV 20H, A ;清內(nèi)存中特定單元 MOV 6CH, A ; MOV 6DH, A ; MOV 70H, A ; MOV 71H, A ; MOV 72H, A ; MOV 73H, A ; MOV 60H, A ; MOV 61H, A ; MOV 62H, A ; MOV 63H, A ; 清內(nèi)存中特定單元 DEC A ;A 為#0FFH MOV 68H, A ;內(nèi)存置數(shù)據(jù)#0FFHMOV 69H, A ;內(nèi)存置數(shù)據(jù)#0FFH
27、MOV 6AH, A ;內(nèi)存置數(shù)據(jù)#0FFH MOV 6BH, A ;內(nèi)存置數(shù)據(jù)#0FFH MOV P1, A ;P1 口置 1CLEAR1: JB P1.2, KEY1 ;根據(jù) P1.2,P1.3,P1.6,P1.7 設(shè)置狀態(tài) ; 在 21 地址單元賦自行車周長(zhǎng)值 MOV 21H, #0FH ; 22 寸自行車周長(zhǎng)值 LJMP CLEAR2 ; 轉(zhuǎn) CLEAR2KEY1: JB P1.3, KEY2 ; MOV 21H, #12H ; 24 寸自行車周長(zhǎng)值 LJMP CLEAR2 ; CLEAR2KEY2: JB P1.6, KEY3 ; MOV 21H, #14H ; 26 寸自行車周長(zhǎng)值
28、 LJMP CLEAR2 ; 轉(zhuǎn) CLEAR2KEY3: JB P1.7, ERR ; 四個(gè)開關(guān)都沒合上,轉(zhuǎn)出錯(cuò)處理 MOV 21H, #19H ; 28 寸自行車周長(zhǎng)值CLEAR2: SETB TR1 ; 開定時(shí)器 T1 SETB EA ; 開中斷允許 SETB EX0 ; 開外中斷 0 SETB ET1 ; 開定時(shí)中斷 T1 SETB P3.1 ; 關(guān)報(bào)警器 LCALL VIICREAD ; 將 EEPROM 中原里程數(shù)據(jù)調(diào)入內(nèi)存 RET ; 子程序返回ERR: CPL P3.1 ; 輪周長(zhǎng)設(shè)置出錯(cuò),LED 燈閃提醒 ALL DL5S ; 延時(shí) LJMP CLEAR1 ; 重新初始化,等待
29、輪周長(zhǎng)設(shè)置開關(guān)合上 ; PROGRAM START ;START: LCALL CLEARMEN ; 上電初始化START1: JB P3.0, DISPLAYS ; P3.0=1,顯示里程 LCALL DISPLAYV ; 顯示速度START2: SJMP START1 ; 轉(zhuǎn) START1 循環(huán); INTEX0 PROGRAM ; 里程計(jì)數(shù)程序,用外中斷 0 實(shí)現(xiàn),計(jì)數(shù)用 60H-62H 內(nèi)存單元。INTEX0: PUSH ACC ; 累加器堆棧保護(hù) PUSH PSW ; 狀態(tài)字堆棧保護(hù) INC 60H ; 圈加 1 CLR A ; 清 A CJNE A, 60H, INTEX0OUT ;
30、 計(jì)數(shù)沒溢出轉(zhuǎn) INTEX0OUT INC 61H ; 溢出進(jìn)位(61H 加 1) CJNE A, 61H, INTEX0OUT ; 計(jì)數(shù)沒溢出轉(zhuǎn) INTEX0OUT INC 62H ; 溢出進(jìn)位(62H 加 1)INTEX0OUT: LCALL VIICWRITE ; 里程數(shù)據(jù)存入 EEPROM SETB EX1 ; 開外中斷 1 POP PSW ; 狀態(tài)字恢復(fù) POP ACC ; 累加器恢復(fù) RETI ; 中斷返回; INTEX1 PROGRAM ; 每轉(zhuǎn) 1 圈時(shí)間計(jì)數(shù)處理程序,每圈時(shí)間放在 68H-6BH 單元中。INTEX1: PUSH ACC ; 堆棧保護(hù) PUSH PSW ; C
31、LR EX1 ; 關(guān)外中斷 1 JNB 00H, INTEX11 ; 溢出標(biāo)志為 0 轉(zhuǎn) INTEX11 MOV TL1, #0FFH ; 溢出時(shí)計(jì)時(shí)單元賦#0FFH(顯示速度為零) MOV TH1, #0FFH ; MOV 6CH, #0FFH ; MOV 6DH, #0FFH ;INTEX11: MOV 68H, TL1 ; 將時(shí)間計(jì)數(shù)值移入暫存單元 68H-6BH MOV 69H, TH1 ; MOV 6AH, 6CH ; MOV 6BH, 6DH ; CLR A ; 清 A MOV TL1, A ; 計(jì)時(shí)單元置 0 MOV TH1, A ; MOV 6CH, A ; MOV 6DH,
32、A ; CLR 00H ; 清溢出標(biāo)志 POP PSW ; 堆棧恢復(fù) POP ACC ; RETI ; 中斷返回; INTT1 PROGRAM ; T1 計(jì)數(shù)器中斷服務(wù)程序。 (計(jì)數(shù)器 T1 由外中斷 1 輸入控制,當(dāng)為高電平時(shí)計(jì)時(shí)開始)INTT1: PUSH ACC ; 堆棧保護(hù) PUSH PSW ; INC 6CH ; 6CH 計(jì)時(shí)單元加 1 MOV A, 6CH ; 移入 A JNZ INTT11 ; 不等于 0 轉(zhuǎn) INTT11 INC 6DH ; 進(jìn)位,6DH 單元加 1 MOV A, 6DH ; 移入 A JNZ INTT11 ; 不等于 0 轉(zhuǎn) INTT11 SETB 00H ;
33、 計(jì)時(shí)器溢出,置溢出標(biāo)志INTT11: POP PSW ; 恢復(fù)堆棧 POP ACC ; RETI ; 中斷返回; DISPLAY S ;里程顯示控制程序DISPLAYS: SETB P1.0 ; 點(diǎn)亮 LED1(顯示里程狀態(tài)) CLR P1.1 ; 關(guān)閉速度指示燈 SETB P3.7 ; 顯示小數(shù)點(diǎn)(最小顯示為 0.1 公里) LCALL SSS ; 將圈數(shù)轉(zhuǎn)為公里數(shù) LCALL DISPLAY ; 顯示公里數(shù)據(jù) LJMP START1 ; 跳回 START1; DISPLAY V ;速度顯示控制程序DISPLAYV: CLR P1.0 ; 關(guān)閉 LED1(里程)燈 SETB P1.1 ;
34、點(diǎn)亮 LED2(顯示時(shí)速狀態(tài)) CLR P3.7 ; 關(guān)小數(shù)點(diǎn)顯示 LCALL VVV ; 每圈時(shí)間換算為公里/小時(shí)程序 MOV A, 71H ; 將十位數(shù)(BCD 碼)值移入 A SUBB A, #04H ; 與預(yù)定報(bào)警值比較 JNC WARING ; 時(shí)速超過 40 時(shí)報(bào)警 SETB P3.1 ; 關(guān)報(bào)警燈V1: LCALL DISPLAY ; 顯亮一次(為了改善閃爍) RET ; 子程序返回WARING: CLR P3.1 ; 報(bào)警燈 LED3 點(diǎn)亮(并嗚叫) AJMP V1 ; 轉(zhuǎn) V1 退出; VIIC WRITE ;歸一化 EEPROM 存入程序(12M 時(shí)鐘) ,存入數(shù)在 50H
35、 起單元VIICWRITE: ACALL WMOV9 MOV SLA, #SLAW MOV NUMBYT, #09H LCALL WRNBYT RETWMOV9: MOV 5FH, #50H MOV R0, #MTD MOV R1, #5FH MOV R2, #09HWMOV: MOV A, R1 MOV R0, A INC R0 INC R1 DJNZ R2, WMOV RET; VIICRE AD ; 歸一化 EEPROM 讀出程序(12M 時(shí)鐘) ,讀出數(shù)放入 60H-67H 單元VIICREAD: MOV MTD, #50H MOV SLA, #SLAW MOV NUMBYT, #01
36、H LCALL WRNBYT MOV SLA, #SLAR MOV NUMBYT, #08H LCALL RDNBYT ACALL RMOV8 RETRMOV8: MOV R0, #MRD MOV R1, #60H MOV R2, #08HRMOV: MOV A, R0 MOV R1, A INC R0 INC R1 DJNZ R2, RMOV RET; VIIC PROGRAM ; I2C 串行歸一化存儲(chǔ)子程序STA: SETB VSDA SETB VSCL NOP NOP NOP NOP CLR VSDA NOP CLR VSDA NOP NOP NOP NOP CLR VSCL RETS
37、TOP: CLR VSDA SETB VSCL NOP NOP NOP NOP SETB VSDA NOP NOP NOP NOP CLR VSDA CLR VSCL RETMACK: CLR VSDA SETB VSCL NOP NOP NOP NOP CLR VSCL SETB VSDA RETMNACK: SETB VSDA SETB VSCL NOP NOP NOP NOP CLR VSCL CLR VSDA RETCACK: SETB VSDA SETB VSCL CLR F0 MOV C, VSDA JNC CEND SETB F0CEND: CLR VSCL RETWRBYT:
38、MOV R0, #08HWLP: RLC A JC WR1 AJMP WR0WLP1: DJNZ R0, WLP RETWR1: SETB VSDA SETB VSCL NOP NOP NOP NOP CLR VSCL CLR VSDA AJMP WLP1WR0: CLR VSDA SETB VSCL NOP NOP NOP NOP CLR VSCL AJMP WLP1RDBYT: MOV R0, #08HRLP: SETB VSDA SETB VSCL MOV C, VSDA MOV A, R2 RLC A MOV R2, A CLR VSCL DJNZ R0, RLP RETWRNBYT:
39、 MOV R3, NUMBYT LCALL STA MOV A, SLA LCALL WRBYT LCALL CACK JB F0, WRNBYT MOV R1, #MTDWRDA: MOV A, R1 LCALL WRBYT LCALL CACK JB F0, WRNBYT INC R1 DJNZ R3, WRDA LCALL STOP RETRDNBYT: MOV R3, NUMBYT LCALL STA MOV A, SLA LCALL WRBYT LCALL CACK JB F0, RDNBYTRDN: MOV R1, #MRDRDN1: LCALL RDBYT MOV R1, A D
40、JNZ R3, ACK LCALL MNACK LCALL STOP RETACK: LCALL MACK INC R1 SJMP RDN1; DISPLAY PROGRAM ; 顯示程序。顯示 BCD 碼在 70H-73H 單元內(nèi),采用共陰 LED 數(shù)碼管DISPLAY: MOV R1, #70H ; 顯示單元首址 MOV R2, #0FEH ; 掃描字PLAY: MOV A, R2 ; 掃描字入 A MOV P2, A ; 放到端口 MOV A, R1 ; 取顯示數(shù)據(jù) ANL A, #0FH ; 去掉高四位(為 0) MOV DPTR, #TAB ; 取段碼表首址 MOVC A, A+DP
41、TR ; MOV P0,A ; 段碼輸出 LCALL DL1MS ; 點(diǎn)亮 1 毫秒 INC R1 ; 指向下一顯示數(shù)據(jù)地址 MOV A, R2 ; 取掃描字 JNB ACC.3, ENDOUT ; 已掃描到第四位,轉(zhuǎn) ENDOUT 退出 RL A ; 循環(huán)左移 MOV R2, A ; 放回 R2 AJMP PLAY ; 轉(zhuǎn) PLAY 循環(huán)ENDOUT: SETB P2.0 ; 關(guān)掃描 SETB P2.1 ; 關(guān)掃描 SETB P2.2 ; 關(guān)掃描 SETB P2.3 ; 關(guān)掃描 RET ; 掃描結(jié)束;共陰段碼表(可顯示 0-F)TAB: DB 3FH, 06H, 5BH, 4FH, 66H,
42、 6DH, 7DH, 07H DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H DB 00H; SSS PROGRAM ; 里程處理程序,將自行車圈數(shù)據(jù)換算成公里數(shù)SSS: MOV 19H, #64H ; 除數(shù)最高位賦值 MOV 18H, #00H ; 除數(shù)賦值 MOV 17H, #00H ; 除數(shù)賦值 MOV 16H, #00H ; 除數(shù)賦值 MOV 11H, #00H ; 被除數(shù)賦值 MOV 12H, #00H ; 被除數(shù)賦值 MOV 13H, 62H ; 被除數(shù)賦值 MOV 14H, 61H ; 被除數(shù)賦值 MOV 15H, 60H ; 被除數(shù)賦值 LC
43、ALL DIVST ; 調(diào)除法程序 LCALL BCDST ; 調(diào)二進(jìn)制轉(zhuǎn) BCD 碼程序 MOV A, 25H ; 結(jié)果處理,將 25H 數(shù)移入 A ANL A, #0FH ; 將高四位置為 0 MOV 70H, A ; 放入 70H 單元 MOV A, 25H ; 25H 數(shù)移入 A SWAP A ; 高低四位交換 ANL A, #0FH ; 將高四位置為 0 MOV 71H, A ; 放入 71H 單元 MOV A, 24H ; 24H 數(shù)移入 A ANL A, #0FH ; 將高四位置為 0 MOV 72H, A ; 放入 72H 單元 MOV A, 24H ; 24H 數(shù)移入 A SWAP A ; 高低四位交換 ANL A, #0FH ; 將高四位置為 0 MOV 73H, A ; 放入 73H 單元 RET ; 子程序返回; VVV PROGRAM ; 時(shí)速處理程序,最大顯示速度為 99 公里/小時(shí)(用作自行車)VVV: MOV 18H,68H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)議室管理制度培訓(xùn)
- 油氣管道保護(hù)培訓(xùn)交流
- 陜西省榆林市第十四中學(xué)2024-2025學(xué)年高一上學(xué)期期中考試數(shù)學(xué)試題(無答案)
- 江西省宜春市上高二中2024-2025學(xué)年高二上學(xué)期11月月考數(shù)學(xué)試卷(含解析)
- 河北省衡水市武強(qiáng)中學(xué)2025屆高三上學(xué)期期中考試數(shù)學(xué)試題 含解析
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)課件 易月娥 項(xiàng)目1、2 部署虛擬環(huán)境和安裝Windows Server 2022操作系統(tǒng)、活動(dòng)目錄的配置與管理
- 編程語言概述-介紹編程語言特點(diǎn)
- 醉翁亭記課件
- 甘肅省蘭州市2017年中考語文真題試卷(含答案)
- 2024-2025學(xué)年八年級(jí)上學(xué)期道德與法治期中模擬試卷(統(tǒng)編版+含答案解析)
- 必修三 Unit 5 The Value of Money 單元培優(yōu)綜合測(cè)試卷(原卷版)
- 2024-2030年中國(guó)心血管外科設(shè)備和技術(shù)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 2024年甘肅慶陽市林業(yè)和草原局招聘專職聘用制護(hù)林員57人歷年(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 2024年【全國(guó)】少先隊(duì)知識(shí)競(jìng)賽考試題庫(kù)及答案
- 2024年宜賓市中考英語試題(附答案)
- DL∕T 5776-2018 水平定向鉆敷設(shè)電力管線技術(shù)規(guī)定
- 國(guó)際飛機(jī)租賃合同范本
- 人教版八年級(jí)歷史上冊(cè) 第一、二單元 單元測(cè)試卷( 2024年秋)
- 二次抵押貸款合同
- 高血壓公休座談會(huì)健康宣教內(nèi)容
- JT-T-617.1-2018危險(xiǎn)貨物道路運(yùn)輸規(guī)則第1部分:通則
評(píng)論
0/150
提交評(píng)論