自行車?yán)锍趟俣扔嫷脑O(shè)計_第1頁
自行車?yán)锍趟俣扔嫷脑O(shè)計_第2頁
自行車?yán)锍趟俣扔嫷脑O(shè)計_第3頁
自行車?yán)锍趟俣扔嫷脑O(shè)計_第4頁
自行車?yán)锍趟俣扔嫷脑O(shè)計_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1 、引 言 .32 、AT89C52 單片機.42.1 AT89C52 單片機簡介.42.2 AT89C52 的管腳及其含義.43 、TC4024 .84、 24C01 芯片.94.1 24C01 簡介 .94.2 24C01 的特性: .105 、硬件電路的設(shè)計 .115.1 系統(tǒng)硬件電路.115.2 系統(tǒng)的工作原理. 126、軟件設(shè)計 .136.1 系統(tǒng)內(nèi)存的規(guī)劃.136.2 系統(tǒng)的主要程序設(shè)計.137 、系統(tǒng)調(diào)試 .167.1 硬件調(diào)試.167.2 軟件調(diào)試.16參考文獻.18 1 引 言 傳感器,英文名字為 Sensor 或 Transducer,亦稱換能器、變換器。在科技迅速發(fā)展的

2、今天,傳感器越來倍受重視。在日常生活、航天、航空,常規(guī)武器、交通運輸,機械制造、化工、生物醫(yī)學(xué)工程、自動化檢測工程及計量等各項領(lǐng)域都被廣泛應(yīng)用。 目前,傳感器已向新材料開發(fā),集成化、智能化、數(shù)字化、新工藝,高精度化及高穩(wěn)定、高可靠化等技術(shù)發(fā)展。特別是霍爾傳感器,鑒于它的價廉、易于使用,使它廣泛運用于里程計、速度計等 。 單片微型計算機簡稱單片機,又稱微控制器,特別適用于控制領(lǐng)域。通常單片機由單塊集成電路構(gòu)成,內(nèi)部包含有計算機的基本部件:CPU(中央處理器) ,存儲器和 I/O 接口電路等。因此,單片機只需要與適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可以成為一個單片機控制系統(tǒng)。 目前,場上銷售的單片機有

3、4 位、8、16 位、32 位,并且單片機朝著高性能多種方向發(fā)展,尤其是 8 位單片機以經(jīng)成為當(dāng)前單片機的主流,主要體現(xiàn)在 CPU 功能增強、內(nèi)部資源增多、引腳的功能化、低電壓和低功好耗化上。 單片機因為其體積小、功能強,可靠性高,靈活方便等優(yōu)點,所以可以用于各個領(lǐng)域,對各行各業(yè)的技術(shù)改造和產(chǎn)品更新?lián)Q代起到重要的推動作用。 本人經(jīng)過學(xué)習(xí),用 AT89C52 設(shè)計了一個自行車?yán)锍?速度計。本設(shè)計可輪流顯示自行車行使的里程和速度, 采用 TC4024 芯片作為計數(shù)器以及 2C401 存儲數(shù)據(jù),3 個單級共陰數(shù)碼管作為顯示系統(tǒng)。本系統(tǒng)具有超速信響提醒功能,里程數(shù)據(jù)自動記憶,也可應(yīng)用于電動自行車、摩托

4、車、汽車等機動車儀表上。2 AT89C52 單片機2.12.1 AT89C52 單片機簡介本設(shè)計選用 AT89C52 單片機,AT89C52 是一種低功耗、高性能CMOS 8 位微控制器。使用 Atmel 公司高密度非易失性存儲器技術(shù)制造,可與工業(yè) AT89C51 產(chǎn)品指令和引腳完全兼容。2.22.2 AT89C52 的管腳及其含義AT89C52 的管腳及各管腳含義如下:圖 2.289C52 管腳圖各引腳功能說明:VCC電源電壓;GND接地; P0 口P0 口是一組 8 位漏極開路型雙向 I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動 8 個TTL 邏輯門電路,

5、對端口 P0 寫“1”時,可作為高阻抗輸入端用; 在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低 8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻; 在 FLASH 編程時,P0 口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻; P1 口P1 口是一個帶內(nèi)部上拉電阻的 8 位雙向 I/O 口,P1 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個 TTL 邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸出口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流; 與 AT89C51 不同之處是,P1.0 和 P

6、1.1 還可分別作為定時/計數(shù)器 2的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX); FLASH 編程和程序校驗期間,P1 接收低 8 位地址; P1.0 和 P1.1 的第二功能:P1.0 T2(定時/計數(shù)器 2 外部計數(shù)脈沖輸入),時鐘輸出 ;P1.1 T2EX(定時/計數(shù) 2 捕獲/重裝載觸發(fā)和方向控制); P2 口P2 是一個帶內(nèi)部上拉電阻的 8 位雙向 I/O 口,P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個 TTL 邏輯門電路。對端口 P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會

7、輸出一個電流; 在訪問外部程序存儲器或 16 位地址的外部數(shù)據(jù)存儲器時,P2 口送出高 8 位地址數(shù)據(jù)。在訪問 8 位地址的外部數(shù)據(jù)存儲器時,P2 口輸出 P2 鎖存器的內(nèi)容; FLASH 編程或校驗時,P2 亦接收高位地址和一些控制信號; P3 口P3 口是一組帶有內(nèi)部上拉電阻的 8 位雙向 I/O 口。P3 口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個 TTL 邏輯門電路。對 P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的 P3 口將用上拉電阻輸出電流; P3 口除了作為一般的 I/O 口線外,更重要的用途是它的第二功能:P3.0 RXD(串行輸入口) P3.

8、1 TXD(串行輸出口) P3.2 INTO(外中斷 0) P3.3 INT1(外中斷 1) P3.4 TO(定時/計數(shù)器 0) P3.5 T1(定時/計數(shù)器 1) P3.6 WR(外部數(shù)據(jù)存儲器寫選通) P3.7 RD(外部數(shù)據(jù)存儲器讀選通) 此外,P3 口還接收一些用于 FLASH 閃存編程和程序校驗的控制信號; RST復(fù)位輸入。當(dāng)振蕩器工作時,RST 引腳出現(xiàn)兩個機器周期以上高電平將是單片機復(fù)位; ALE/PROG當(dāng)訪問外部程存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節(jié)。一般情況下,ALE 仍以時鐘振蕩頻率的 1/6 輸出固定的脈沖信號,因此它可對外輸

9、出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個 ALE 脈沖; 對 FLASH 存儲器編程期間,該引腳還用于輸入編程脈沖(PROG); EA 端為高電平(接 Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲器的指令。3 TC4024 本程序采用 TC4024 芯片,它是一個 7 位的計數(shù)器,計數(shù)器具有分頻的作用,它包含有 14 個管腳,其 7 腳接地,14 腳接+5V,1 腳接 AT89C52 的 INT0,即 12 腳,在系統(tǒng)中此芯片起到了二分頻的作用。4 24C01 芯片4.14.1 24C01 簡介 24C01 是一個 1K 位串行 CMOS EEPROM,內(nèi)部含有 128

10、個 8 位字節(jié),CATALYST 的先進 CMOS 技術(shù)實際上減少了器件的功耗,24C01 是一個 8 位字節(jié)頁寫緩沖器,該器件通過 I2C 總線接口進行操作,即此芯片采用 I2C 協(xié)議進行讀寫數(shù)據(jù)。有一個專門的寫保護功能。24C01 是 I2C 接口的,但標(biāo)準(zhǔn) 51 是不帶 I2C 接口的,串口方式0 是不行的,需要用 IO 模擬,所以隨便接兩個 IO 都可以,而且都要接上拉電阻,大概幾 K 就行了,因為不是總線方式,所以不能用MOV 指令,也不能用 SBUF,要判斷是否為滿,可以在程序里設(shè)個變量。在這里要注意 E2P 芯片的壽命(一般是讀寫 100 萬次,足夠了) 。 存儲數(shù)據(jù)的時候,可以

11、對操作數(shù)和存儲的數(shù)據(jù)進行比較,不相等則存儲,這樣可以增加使用壽命,比有些每隔 1 秒鐘進行存儲的會好多了。以下是 24C01 的管腳圖:圖 4.1 管腳圖表 4.1 24C01 的管腳描述管腳名稱A0、A1、A2功能器件地址選擇SDASCLWPVCCVSS串行數(shù)據(jù)/地址串行時鐘寫保護+1.8V6.0V 工作電壓接地4.24.2 24C01 的特性:24C01 芯片具有以下特性:1. 與 400KHZ 的 I2C 總線兼容;2. +1.8-6.0V 工作電壓范圍;3. 低功耗 CMOS 技術(shù);4. 寫保護功能:當(dāng) WP 為高電平時進入寫保護狀態(tài);5. 頁寫緩沖器;6. 自定時擦寫周期;7. 1,

12、000,000 編程擦除/周期;8. 可保存數(shù)據(jù) 100 年;9. 8 腳 DIP、SOIC、TSSOP 封裝;10 溫度范圍:商業(yè)級、工業(yè)級和汽車級。5 硬件電路的設(shè)計5.15.1 系統(tǒng)硬件電路 自行車?yán)锍?速度計能自動顯示自行車行駛的總里程數(shù)及行車速度,具有超速信響提醒功能,里程數(shù)據(jù)自動記憶,也可應(yīng)用于電動自行車、摩托車、汽車等機動車儀表上。其硬件電路原理圖如下圖。圖 5.1 系統(tǒng)原理圖5.25.2 系統(tǒng)的工作原理本設(shè)計能實時地將所測的速度與累計里程數(shù)顯示出來,主要是將24C01 傳感器輸入到單片機的脈沖信號,將頻率實時地測量出來,然后通過單片機計算出速度和里程,再將所得的數(shù)據(jù)存儲到 TC

13、4024芯片中,通過 AT89C52 單片機計算出來的速度和里程的數(shù)據(jù),必須通過 BCD 碼的轉(zhuǎn)換才能輸出給數(shù)碼管。最后由共陰數(shù)碼管顯示所測速度與里程。 自行車?yán)锍?速度計采用 AT89C52 單片機作控制,速度及里程傳感器采用霍爾元件,其電器原理圖如上圖所示。P0 口和 P2 口用于七段LED 顯示器的段碼及掃描輸出,在顯示里程時,第三位小數(shù)點用 17腳 P3.7 口控制點亮。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)閉合時,顯示速度;打開時顯示里程。第 12

14、 腳外中斷 0 用于對輪子圈數(shù)的計數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個地電平脈沖。第 13 腳外中斷 1 用于控制定時器 T1 的啟停,當(dāng)輸入為 0 時關(guān)閉定時器。此控制信號是將輪子圈數(shù)的計數(shù)脈沖經(jīng)二分頻后形成,這樣,每次定時器 T1 的開啟時間剛好為轉(zhuǎn)一圈的時間。根據(jù)輪子的周長就可以計算出自行車的速度。P1.4 和 P1.5 口用于 EEPROM 存儲器 24C01 的存取控制。11 腳輸出用于速度超速時的報警。6 軟件設(shè)計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 計數(shù)器擴展高 8 位;6C H:定時器 T1 計數(shù)器擴展高 8 位;6D H:定時器 T1 計數(shù)器擴展高 816 位;60 H、61 H、62 H:里程計數(shù)單元;68 H、69 H、6A H、6B H:存放自行車每圈時間數(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è)計 1

16、. 初始化程序在本系統(tǒng)初始化程序中,主要完成以下工作:將 T1 設(shè)為外部控制定時器方式;外中斷 0 及外中斷 1 設(shè)為邊沿觸發(fā)方式;將部分內(nèi)存單元清零;設(shè)置輪子 周長值;開中斷及定時器;將EEPROM 中的數(shù)據(jù)調(diào)入內(nèi)存等。 2. 輪圈設(shè)置出錯處理程序 P1.2、 P1.3、 P1.6、P1.7 端口的開關(guān)用于設(shè)定輪子的周長,當(dāng)沒有設(shè)定時(至少讓一個開關(guān)閉合) ,能從 P3.1 口輸出一個周期為 0.5S 的方波信號,用作發(fā)光管閃爍及信響器提醒。3.里程計數(shù)程序(外中斷 0 服務(wù)程序) 外中斷 0 服務(wù)程序用于對 12 腳輸入的圈脈沖進行計數(shù),為十六進制計數(shù)器。60H 為低位,62H 為高位。每

17、計數(shù)一次后,對里程數(shù)據(jù)進行一次存儲操作。4.外中斷 1 服務(wù)程序外中斷 1 服務(wù)程序用于處理輪子轉(zhuǎn)動一圈后計時數(shù)據(jù)。當(dāng)標(biāo)志位(00H)為 1 時,說明計數(shù)器溢出,放入最大時間值(為#0FFH);當(dāng)標(biāo)志位為 0 時,將計數(shù)單元(TL1、TH1、6CH、6DH)的值放入 68H6BH 單元。5.EEPROM 存取程序本系統(tǒng)使用歸一化 I2C 串口存取子程序,使用一條數(shù)據(jù)線和時鐘線,采用 ATMEL 公司的 24C01 串口存儲器,應(yīng)用簡單方便。6.顯示子程序當(dāng)顯示里程時,先要將圈數(shù)計數(shù)器中的數(shù)據(jù)進行運算,求出總里程。當(dāng)要 顯示速度時,要將輪子的這周長和轉(zhuǎn)一圈的時間數(shù)相除,然后換算成 Km/h 單位

18、。最后放入 70H73H,進行數(shù)據(jù)顯示7 調(diào)試7.1 硬件調(diào)試 硬件的焊接是一個比較繁瑣的過程,線路較多,在焊接時要特別的細(xì)心。在插入芯片時要特別注意不能把芯片插反,否則就會把芯片燒掉;也要 注意極性電容的方向,長的腳為正,短的為負(fù),不能把負(fù)的接+5V,正的接地;在焊接三極管時也要注意其三個管腳的排布,還有為保護三極管不被燒換,所以 3 個三極管要各自接一個限流電阻(這里為 4.7K) 。7.2 軟件調(diào)試軟件調(diào)試是調(diào)試的重點,同時也是出錯最多的地方;在整個軟件調(diào)試調(diào)試過程中我采取先部分后整體的調(diào)試方法。在整個程序的編寫調(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參考文獻1 李玉峰、

20、倪虹霞. MCS-51 系列單片機原理與接口技術(shù). 第一版. 北京:人民郵電出版社. 20042 周興華. 手把手教你學(xué)單片機. 第一版.北京:北京航空航天大學(xué)出版社. 20053 曾一江. 單片微機原理與接口技術(shù). 第一版.北京:科學(xué)出版社. 20064 張俊謨. 單片機中級教程原理與應(yīng)用. 第二版. 北京:北京航空航天大學(xué)出版社. 2006. P1-115 張友德 、趙志英、涂時亮. 單片機微型機原理、應(yīng)用與實驗.第五版.上海:復(fù)旦大學(xué)出版社. 2006. P24-276 呂泉. 現(xiàn)代傳感器原理及應(yīng)用. 第一版. 北京:清華大學(xué)出版社. 2006. P1-57 張毅剛、彭喜元. 單片機原理

21、與應(yīng)用設(shè)計. 第一版. 哈爾濱:哈爾濱工業(yè)大學(xué). 8 謝自美.電子線路設(shè)計.實驗.測試M.武漢:華中科技大學(xué)出版社,20009 曲家駭,王季秩 ,伺服控制系統(tǒng)中的傳感器10 鄔寬民.單片機外圍器件實用手冊,數(shù)據(jù)傳輸接口器件分冊.北京.北京航空航天大學(xué)出版社.2001:189-19511 王貴悅,新編傳感器實用手冊.水利電力出版社.2002:67-8912 自行車電子里程表的初步設(shè)計 刁文興 南京工業(yè)職業(yè)技術(shù)學(xué)院 后勤總公司 江蘇 南京 13 數(shù)字式汽車?yán)锍瘫淼脑O(shè)計 諸德宏, 潘天紅, 朱湘臨 江蘇大學(xué)電氣信息工程學(xué)院 , 江蘇 鎮(zhèn)江 14 電子車速里程表的單片機實現(xiàn)方案王鎖弘, 威海雙豐電子傳

22、感有限公司 山東 威海 15 張福學(xué)。傳感器使用電路 150 例.中國技術(shù)出版社M.1992年16 Embedded Microcontrollers and Processor Design ,嵌入式微控制器與處理器設(shè)計,Greg Osborn,機械工業(yè)出版社17 Altium Designer (Protel),機械工業(yè)出版社18 Programming 8-bit PIC Microcontrollers in C with Interactive Hardware Simulation, 8 位單片機 C 語言編程:基于 PIC16 ,Martin P. Bates,人民郵電出版社附錄

23、 源程序:以下是控制系統(tǒng)完整源程序; SPEED/MILE OR IKE PROGRAM ; 60H,61H,62H 作里程計數(shù)單元,6CH,6DH 作 T1 計數(shù)擴充單元,; 68H,69H,6AH,6BH 存放自行車每圈時間數(shù),70H,71H,72H,73H; 作顯示 BCD 碼存放數(shù)用,11H15H 存放被除數(shù),16H-19H 存放除數(shù); 定義 VSDA EQU P1.5 ; EEPROM 數(shù)據(jù)傳送口 VSCL EQU P1.4 ; EEPROM 時鐘傳送口 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 計數(shù)擴展高 8 位 TH1H EQU 6CH ; 定時器 T1 擴展高 8 位 TH1HH EQU 6DH ; 定時器 T1 擴展高 8-16 位; PRO GRAM INPUT ; ORG 0000H;程序執(zhí)行開始地址 LJMP START;跳至 START ORG 0003H;外中斷 0 中斷程序入口 LJMP INTEX0;

25、跳至 INTEX0 中斷服務(wù)程序 ORG 000BH;定時器 T0 中斷程序入口 RETI ;中斷返回 ORG 0013H;外中斷 1 中斷入口 LJMP INTEX1; 跳至 INTEX1 中斷服務(wù)程序 ORG 001BH; 定時器 T1 中斷程序入口 LJMP INTT1; 跳至 INTT1 中斷服務(wù)程序 ORG 0023H;串口中斷入口地址 RETI ;中斷返回 ORG 002BH;定時器 T2 中斷入口地址 RETI ;中斷返回; PROGRAM CLEAR ;上電初始化程序CLEARMEN: MOV TMOD, #90H ;T1 為 16 位外部控制定時器 MOV SP, #75H

26、;堆棧在 75H 開始 SETB PX0 ;外中斷 0 優(yōu)先級為 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 地址單元賦自行車周長值 MOV 21H, #0FH ; 22 寸自行車周長值 LJMP CLEAR2 ; 轉(zhuǎn) CLEAR2KEY1: JB P1.3, KEY2 ; MOV 21H, #12H ; 24 寸自行車周長值 LJMP CLEAR2 ; CLEAR2KEY2: JB P1.6, KEY3 ; MOV 21H, #14H ; 26 寸自行車周長值

28、 LJMP CLEAR2 ; 轉(zhuǎn) CLEAR2KEY3: JB P1.7, ERR ; 四個開關(guān)都沒合上,轉(zhuǎn)出錯處理 MOV 21H, #19H ; 28 寸自行車周長值CLEAR2: SETB TR1 ; 開定時器 T1 SETB EA ; 開中斷允許 SETB EX0 ; 開外中斷 0 SETB ET1 ; 開定時中斷 T1 SETB P3.1 ; 關(guān)報警器 LCALL VIICREAD ; 將 EEPROM 中原里程數(shù)據(jù)調(diào)入內(nèi)存 RET ; 子程序返回ERR: CPL P3.1 ; 輪周長設(shè)置出錯,LED 燈閃提醒 ALL DL5S ; 延時 LJMP CLEAR1 ; 重新初始化,等待

29、輪周長設(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 ; 里程計數(shù)程序,用外中斷 0 實現(xiàn),計數(shù)用 60H-62H 內(nèi)存單元。INTEX0: PUSH ACC ; 累加器堆棧保護 PUSH PSW ; 狀態(tài)字堆棧保護 INC 60H ; 圈加 1 CLR A ; 清 A CJNE A, 60H, INTEX0OUT ;

30、 計數(shù)沒溢出轉(zhuǎn) INTEX0OUT INC 61H ; 溢出進位(61H 加 1) CJNE A, 61H, INTEX0OUT ; 計數(shù)沒溢出轉(zhuǎn) INTEX0OUT INC 62H ; 溢出進位(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ù)處理程序,每圈時間放在 68H-6BH 單元中。INTEX1: PUSH ACC ; 堆棧保護 PUSH PSW ; C

31、LR EX1 ; 關(guān)外中斷 1 JNB 00H, INTEX11 ; 溢出標(biāo)志為 0 轉(zhuǎn) INTEX11 MOV TL1, #0FFH ; 溢出時計時單元賦#0FFH(顯示速度為零) MOV TH1, #0FFH ; MOV 6CH, #0FFH ; MOV 6DH, #0FFH ;INTEX11: MOV 68H, TL1 ; 將時間計數(shù)值移入暫存單元 68H-6BH MOV 69H, TH1 ; MOV 6AH, 6CH ; MOV 6BH, 6DH ; CLR A ; 清 A MOV TL1, A ; 計時單元置 0 MOV TH1, A ; MOV 6CH, A ; MOV 6DH,

32、A ; CLR 00H ; 清溢出標(biāo)志 POP PSW ; 堆?;謴?fù) POP ACC ; RETI ; 中斷返回; INTT1 PROGRAM ; T1 計數(shù)器中斷服務(wù)程序。 (計數(shù)器 T1 由外中斷 1 輸入控制,當(dāng)為高電平時計時開始)INTT1: PUSH ACC ; 堆棧保護 PUSH PSW ; INC 6CH ; 6CH 計時單元加 1 MOV A, 6CH ; 移入 A JNZ INTT11 ; 不等于 0 轉(zhuǎn) INTT11 INC 6DH ; 進位,6DH 單元加 1 MOV A, 6DH ; 移入 A JNZ INTT11 ; 不等于 0 轉(zhuǎn) INTT11 SETB 00H ;

33、 計時器溢出,置溢出標(biāo)志INTT11: POP PSW ; 恢復(fù)堆棧 POP ACC ; RETI ; 中斷返回; DISPLAY S ;里程顯示控制程序DISPLAYS: SETB P1.0 ; 點亮 LED1(顯示里程狀態(tài)) CLR P1.1 ; 關(guān)閉速度指示燈 SETB P3.7 ; 顯示小數(shù)點(最小顯示為 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、點亮 LED2(顯示時速狀態(tài)) CLR P3.7 ; 關(guān)小數(shù)點顯示 LCALL VVV ; 每圈時間換算為公里/小時程序 MOV A, 71H ; 將十位數(shù)(BCD 碼)值移入 A SUBB A, #04H ; 與預(yù)定報警值比較 JNC WARING ; 時速超過 40 時報警 SETB P3.1 ; 關(guān)報警燈V1: LCALL DISPLAY ; 顯亮一次(為了改善閃爍) RET ; 子程序返回WARING: CLR P3.1 ; 報警燈 LED3 點亮(并嗚叫) AJMP V1 ; 轉(zhuǎn) V1 退出; VIIC WRITE ;歸一化 EEPROM 存入程序(12M 時鐘) ,存入數(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ù)放入 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 串行歸一化存儲子程序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 ; 點亮 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)二進制轉(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 ; 時速處理程序,最大顯示速度為 99 公里/小時(用作自行車)VVV: MOV 18H,68H

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論