課程設(shè)計(jì)論文自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)_第1頁
課程設(shè)計(jì)論文自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)_第2頁
課程設(shè)計(jì)論文自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)_第3頁
課程設(shè)計(jì)論文自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)_第4頁
課程設(shè)計(jì)論文自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)_第5頁
已閱讀5頁,還剩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、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é)頁寫緩沖器,該器件通過 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. 頁寫緩沖器;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ù)輪子的周長就可以計(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è)置輪子 周長值;開中斷及定時(shí)器;將eeprom 中的數(shù)據(jù)調(diào)入內(nèi)存等。 2. 輪圈設(shè)置出錯(cuò)處理程序 p1.2、 p1.3、 p1.6、p1.7 端口的開關(guān)用于設(shè)定輪子的周長,當(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í),要將輪子的這周長和轉(zhuǎn)一圈的時(shí)間數(shù)相除,然后換算成 km/h 單位

18、。最后放入 70h73h,進(jìn)行數(shù)據(jù)顯示7 調(diào)試7.1 硬件調(diào)試 硬件的焊接是一個(gè)比較繁瑣的過程,線路較多,在焊接時(shí)要特別的細(xì)心。在插入芯片時(shí)要特別注意不能把芯片插反,否則就會(huì)把芯片燒掉;也要 注意極性電容的方向,長的腳為正,短的為負(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 例.中國技術(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 地址單元賦自行車周長值 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 ; 四個(gè)開關(guān)都沒合上,轉(zhuǎn)出錯(cuò)處理 mov 21h, #19h ; 28 寸自行車周長值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 ; 輪周長設(shè)置出錯(cuò),led 燈閃提醒 all dl5s ; 延時(shí) 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 ; 里程計(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)頁內(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)論