久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4960|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)自行車?yán)锍?速度計(jì)的設(shè)計(jì)論文

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:316967 發(fā)表于 2018-4-26 16:50 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式

自行車?yán)锍?速度計(jì)的設(shè)計(jì)

摘要:本文介紹了用89C52單片機(jī)設(shè)計(jì)自行車?yán)锍?速度計(jì),運(yùn)用單片機(jī)的運(yùn)算和控制功能,并采用數(shù)碼管實(shí)時顯示所測速度和里程的速度里程計(jì)設(shè)計(jì)方案,用分頻器TC4024實(shí)現(xiàn)二分頻,用來探討24C01傳感器的用途,通過實(shí)用電路的設(shè)計(jì)來掌握速度及里程傳感器的使用方法及一些性能參數(shù)。本系統(tǒng)含了電子電路技術(shù),以及常用的AT89C52單片機(jī)工作原理,通過本系統(tǒng)的設(shè)計(jì),把它們倆者有機(jī)結(jié)合。

The Odometer/Speedometer’s Design Of  The Bike

Abstract: This article introduced used the Micro Computer Unit of the AT89C52 design The Odometer/Speedometer’s Of The Bike, it utilizes Micro Computer Unit's operation and control function, and it uses the nixietube real time display to measure the speed and the course speed hodometer design proposal, it realizes two frequency divisions with the frequency divider of TC4024,it uses for to discuss the 24C01 sensor's use, through the practical electric circuit's design it grasps the odometer/speedometer’s application method and some performance parameter。This system contains the electronic circuit technology, as well as the commonly used AT89C52 Micro Computer Unit's work principle, through this system's design, which pairs them organic union。


目 錄
1  緒  論
2 AT89C52單片機(jī)
2.1  at89C52單片機(jī)簡介
2.2  at89C52的管腳及其含義
3 TC4024
4 24C01芯片
4.1 24C01簡介
4.2  24C01的特性:
5  硬件電路的設(shè)計(jì)
5.1  系統(tǒng)硬件電路
5.2 系統(tǒng)的工作原理
6 軟件設(shè)計(jì)
6.1 系統(tǒng)內(nèi)存的規(guī)劃
6.2 系統(tǒng)的主要程序設(shè)計(jì)              9
7 系統(tǒng)調(diào)試
7.1  硬件調(diào)試
7.2 軟件調(diào)試
8  結(jié) 論
致謝
附錄: 系統(tǒng)完整源程序

1  緒  論

傳感器,英文名字為Sensor或Transducer,亦稱換能器、變換器。在科技迅速發(fā)展的今天,傳感器越來倍受重視。在日常生活、航天、航空,常規(guī)武器、交通運(yùn)輸,機(jī)械制造、化工、生物醫(yī)學(xué)工程、自動化檢測工程及計(jì)量等各項(xiàng)領(lǐng)域都被廣泛應(yīng)用[6]。

目前,傳感器已向新材料開發(fā),集成化、智能化、數(shù)字化、新工藝,高精度化及高穩(wěn)定、高可靠化等技術(shù)發(fā)展。特別是霍爾傳感器,鑒于它的價廉、易于使用,使它廣泛運(yùn)用于里程計(jì)、速度計(jì)等[6]。

單片微型計(jì)算機(jī)簡稱單片機(jī),又稱微控制器,特別適用于控制領(lǐng)域。通常單片機(jī)由單塊集成電路構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本部件:CPU(中央處理器),存儲器和I/O接口電路等。因此,單片機(jī)只需要與適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可以成為一個單片機(jī)控制系統(tǒng)[4]。

目前,場上銷售的單片機(jī)有4位、8、16位、32位,并且單片機(jī)朝著高性能多種方向發(fā)展,尤其是8位單片機(jī)以經(jīng)成為當(dāng)前單片機(jī)的主流,主要體現(xiàn)在CPU功能增強(qiáng)、內(nèi)部資源增多、引腳的功能化、低電壓和低功好耗化上[4]。

單片機(jī)因?yàn)槠潴w積小、功能強(qiáng),可靠性高,靈活方便等優(yōu)點(diǎn),所以可以用于各個領(lǐng)域,對各行各業(yè)的技術(shù)改造和產(chǎn)品更新?lián)Q代起到重要的推動作用。

本人經(jīng)過學(xué)習(xí),用AT89C52設(shè)計(jì)了一個自行車?yán)锍?速度計(jì)。本設(shè)計(jì)可輪流顯示自行車行使的里程和速度, 采用TC4024芯片作為計(jì)數(shù)器以及2C401存儲數(shù)據(jù),3個單級共陰數(shù)碼管作為顯示系統(tǒng)。本系統(tǒng)具有超速信響提醒功能,里程數(shù)據(jù)自動記憶,也可應(yīng)用于電動自行車、摩托車、汽車等機(jī)動車儀表上。


.


2 AT89C52單片機(jī)2.1 AT89C52單片機(jī)簡介

本設(shè)計(jì)選用AT89C52單片機(jī),AT89C52是一種低功耗、高性能CMOS 8位微控制器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,可與工業(yè)AT89C51 產(chǎn)品指令和引腳完全兼容。

2.2 AT89C52的管腳及其含義[5]

AT89C52的管腳及各管腳含義如下:

  

圖2.2  89C52管腳圖

各引腳功能說明

VCC——電源電壓;
GND——接地;
P0口——P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用;
在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻;
在FLASH編程時,P0口接收指令字節(jié),而在程序校驗(yàn)時,輸出指令字節(jié),校驗(yàn)時,要求外接上拉電阻;
P1口——P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸出口。作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流;
與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX);
FLASH編程和程序校驗(yàn)期間,P1接收低8位地址;
P1.0和P1.1的第二功能
P1.0 T2(定時/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入),時鐘輸出 ;
P1.1 T2EX(定時/計(jì)數(shù)2捕獲/重裝載觸發(fā)和方向控制);
P2口——P2是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因?yàn)閮?nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流;
在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容;
FLASH編程或校驗(yàn)時,P2亦接收高位地址和一些控制信號;
P3口——P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流;
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 INTO(外中斷0)
P3.3 INT1(外中斷1)
P3.4 TO(定時/計(jì)數(shù)器0)
P3.5 T1(定時/計(jì)數(shù)器1)
P3.6 WR(外部數(shù)據(jù)存儲器寫選通)
P3.7 RD(外部數(shù)據(jù)存儲器讀選通)
此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號;
RST——復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將是單片機(jī)復(fù)位;
ALE/PROG——當(dāng)訪問外部程存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖;
對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG);
EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。

3 TC4024

本程序采用TC4024芯片,它是一個7位的計(jì)數(shù)器,計(jì)數(shù)器具有分頻的作用,它包含有14個管腳,其7腳接地,14腳接+5V,1腳接AT89C52的INT0,即12腳,在系統(tǒng)中此芯片起到了二分頻的作用。

4 24C01芯片4.1 24C01簡介

24C01是一個1K位串行CMOS EEPROM,內(nèi)部含有128個8位字節(jié),CATALYST的先進(jìn)CMOS技術(shù)實(shí)際上減少了器件的功耗,24C01是一個8位字節(jié)頁寫緩沖器,該器件通過I2C總線接口進(jìn)行操作,即此芯片采用I2C協(xié)議進(jìn)行讀寫數(shù)據(jù)。有一個專門的寫保護(hù)功能。

24C01是I2C接口的,但標(biāo)準(zhǔn)51是不帶I2C接口的,串口方式0是不行的,需要用IO模擬,所以隨便接兩個IO都可以,而且都要接上拉電阻,大概幾K就行了,因?yàn)椴皇强偩方式,所以不能用MOV指令,也不能用SBUF,要判斷是否為滿,可以在程序里設(shè)個變量。

在這里要注意E2P芯片的壽命(一般是讀寫100萬次,足夠了)。 存儲數(shù)據(jù)的時候,可以對操作數(shù)和存儲的數(shù)據(jù)進(jìn)行比較,不相等則存儲,這樣可以增加使用壽命,比有些每隔1秒鐘進(jìn)行存儲的會好多了。以下是24C01的管腳圖:

圖4.1管腳圖

表3.1 24C01的管腳描述

管腳名稱

功能

A0、A1、A2

器件地址選擇

SDA

串行數(shù)據(jù)/地址

SCL

串行時鐘

WP

寫保護(hù)

VCC

+1.8V—6.0V工作電壓

VSS

接地

4.2  24C01的特性:

24C01芯片具有以下特性:

  • 400KHZI2C總線兼容;
  • +1.8-6.0V工作電壓范圍;
  • 低功耗CMOS技術(shù);
  • 寫保護(hù)功能:當(dāng)WP為高電平時進(jìn)入寫保護(hù)狀態(tài);
  • 頁寫緩沖器;
  • 自定時擦寫周期;
  • 1,000,000編程擦除/周期;
  • 可保存數(shù)據(jù)100年;
  • 8DIPSOICTSSOP封裝;

10 溫度范圍:商業(yè)級、工業(yè)級和汽車級。

5  硬件電路的設(shè)計(jì)5.1  系統(tǒng)硬件電路

自行車?yán)锍?速度計(jì)能自動顯示自行車行駛的總里程數(shù)及行車速度,具有超速信響提醒功能,里程數(shù)據(jù)自動記憶,也可應(yīng)用于電動自行車、摩托車、汽車等機(jī)動車儀表上。其硬件電路原理圖如圖5.1。

圖  5.1系統(tǒng)原理圖

5.2 系統(tǒng)的工作原理

本設(shè)計(jì)能實(shí)時地將所測的速度與累計(jì)里程數(shù)顯示出來,主要是將24C01傳感器輸入到單片機(jī)的脈沖信號,將頻率實(shí)時地測量出來,然后通過單片機(jī)計(jì)算出速度和里程,再將所得的數(shù)據(jù)存儲到TC4024芯片中,通過AT89C52單片機(jī)計(jì)算出來的速度和里程的數(shù)據(jù),必須通過BCD碼的轉(zhuǎn)換才能輸出給數(shù)碼管。最后由共陰數(shù)碼管顯示所測速度與里程。

自行車?yán)锍?速度計(jì)采用AT89C52單片機(jī)作控制,速度及里程傳感器采用霍爾元件,其電器原理圖如圖5.1所示。P0口和P2口用于七段LED顯示器的段碼及掃描輸出,在顯示里程時,第三位小數(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)閉合時,顯示速度;打開時顯示里程。第12腳外中斷0用于對輪子圈數(shù)的計(jì)數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個地電平脈沖。第13腳外中斷1用于控制定時器T1的啟停,當(dāng)輸入為0時關(guān)閉定時器。此控制信號是將輪子圈數(shù)的計(jì)數(shù)脈沖經(jīng)二分頻后形成(見圖5.1),這樣,每次定時器T1的開啟時間剛好為轉(zhuǎn)一圈的時間。根據(jù)輪子的周長就可以計(jì)算出自行車的速度。P1.4和P1.5口用于EEPROM存儲器24C01的存取控制。11腳輸出用于速度超速時的報(bào)警。

6 軟件設(shè)計(jì)6.1 系統(tǒng)內(nèi)存的規(guī)劃

由于本系統(tǒng)處理功能較多,因而一部分內(nèi)存單元用于特定的用處。其主

要內(nèi)存單元用處如下:

50H:EEPROM器件尋址字節(jié)存放單元;

51H:EEPROM傳送字節(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:定時器T1計(jì)數(shù)器擴(kuò)展高8位;

6D H:定時器T1計(jì)數(shù)器擴(kuò)展高8—16位;

60 H、61 H、62 H:里程計(jì)數(shù)單元;

68 H、69 H、6A H、6B H:存放自行車每圈時間數(shù);

70 H、71 H、72 H、73 H:顯示BCD碼數(shù)據(jù)存放用;

11 H—15 H:存放被除數(shù);

16 H—19 H:存放除數(shù)。

6.2 系統(tǒng)的主要程序設(shè)計(jì)

1. 初始化程序

在本系統(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. 主程序

主程序根據(jù)P3.0的開關(guān)狀態(tài)選擇里程或速度顯示,其流程圖如圖6.2所示。

圖6.2 主程序流程圖

4.里程計(jì)數(shù)程序(外中斷0服務(wù)程序)

    外中斷0服務(wù)程序用于對12腳輸入的圈脈沖進(jìn)行計(jì)數(shù),為十六進(jìn)制計(jì)數(shù)器。60H為低位,62H為高位。每計(jì)數(shù)一次后,對里程數(shù)據(jù)進(jìn)行一次存儲操作。

5.外中斷1服務(wù)程序

外中斷1服務(wù)程序用于處理輪子轉(zhuǎn)動一圈后計(jì)時數(shù)據(jù)。當(dāng)標(biāo)志位(00H)為1時,說明計(jì)數(shù)器溢出,放入最大時間值(為#0FFH);當(dāng)標(biāo)志位為0時,將計(jì)數(shù)單元(TL1、TH1、6CH、6DH)的值放入68H—6BH單元。

6.EEPROM存取程序

本系統(tǒng)使用歸一化I2C串口存取子程序,使用一條數(shù)據(jù)線和時鐘線,采用ATMEL公司的24C01串口存儲器,應(yīng)用簡單方便。

7.顯示子程序

當(dāng)顯示里程時,先要將圈數(shù)計(jì)數(shù)器中的數(shù)據(jù)進(jìn)行運(yùn)算,求出總里程。當(dāng)要

   顯示速度時,要將輪子的這周長和轉(zhuǎn)一圈的時間數(shù)相除,然后換算成Km/h單位。最后放入70H—73H,進(jìn)行數(shù)據(jù)顯示。

7 系統(tǒng)調(diào)試

要完成一個產(chǎn)品的設(shè)計(jì),有很多紛繁復(fù)雜的步驟和過程,其中最為重要

和最為關(guān)鍵的就是系統(tǒng)調(diào)試。調(diào)試的步驟和方法有很多。本人也看過不少,在這次系統(tǒng)調(diào)試的中調(diào)試的過程我充分的發(fā)揮了仿真器的作用。


7.1  硬件調(diào)試

硬件的焊接是一個比較繁瑣的過程,繁瑣的地方在于3個單聯(lián)數(shù)碼管的

連接,線路較多,在焊接時要特別的細(xì)心,在焊接完成并燒入程序之后通電發(fā)現(xiàn)數(shù)碼管不亮,檢查了好幾遍,電路無焊沒有錯誤,于是我就懷疑可能是數(shù)碼管的問題,拿去貝爾(學(xué)院的社團(tuán))測試沒問題,數(shù)碼管并沒有燒壞。

在插入芯片時要特別注意不能把芯片插反,否則就會把芯片燒掉;也要

  注意極性電容的方向,長的腳為正,短的為負(fù),不能把負(fù)的接+5V,正的接地;在焊接三極管時也要注意其三個管腳的排布,還有為保護(hù)三極管不被燒換,所以3個三極管要各自接一個限流電阻(這里為4.7K)。

7.2 軟件調(diào)試

軟件調(diào)試是調(diào)試的重點(diǎn),同時也是出錯最多的地方;在整個軟件調(diào)試調(diào)試過程中我采取先部分后整體的調(diào)試方法。

在整個程序的編寫調(diào)試過程中我首先調(diào)試的是數(shù)碼管顯示系統(tǒng),為此我編寫了以下一段程序用于數(shù)碼管顯示調(diào)試,要求數(shù)碼管顯示0、1、2。

            ORG    0000H

   MAIN:   MOV     P2, #0FFH

            MOV     P0, 0C0H

            MOV     P2, #0FEH

      ACALL   DELAY1

      MOV     P2, #0FFH

      MOV     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, #8FH

DELAY:  DJNZ     R7, DELAY

          DJNZ     R6, AGAIN

          RET

          END

結(jié)果數(shù)碼管正確顯示了0、1、2這三個數(shù),顯示系統(tǒng)調(diào)試成功。

軟件測試要注意一下幾點(diǎn):

1.在編寫I2C串行歸一化存儲子程序時本來出了點(diǎn)錯,后經(jīng)過多次調(diào)試才運(yùn)行正確。

2.里程/速度控制程序是系統(tǒng)程序的重點(diǎn),所以它當(dāng)然也是軟件調(diào)試的重點(diǎn)。

3.顯示系統(tǒng)最好先調(diào)試。

4.用韋幅軟件進(jìn)行仿真時要充分利用其逐步調(diào)試功能。

8  結(jié) 論

本設(shè)計(jì)能自動顯示自行車行駛的總里程數(shù)及行車速度,具有超速信響報(bào)警提醒以及里程數(shù)據(jù)自動記憶的功能,也可應(yīng)用于電動自行車、摩托車、汽車等機(jī)動車的儀表上。由于本系統(tǒng)采用的是動態(tài)掃描LED顯示且共陰數(shù)碼管的驅(qū)動電流不是很大,所以數(shù)碼管的顯示不是特別亮。但可以通過更換小點(diǎn)的電阻增大其驅(qū)動電流(最大驅(qū)動電流不能超過20毫安)使數(shù)碼管變得更亮。













致謝

首先,我要感謝宋復(fù)成老師在本次畢業(yè)設(shè)計(jì)中,宋老師不厭其煩的指導(dǎo)我,在整個畢業(yè)設(shè)計(jì)制作過程中,使得我在單片機(jī)方面的技能得到了進(jìn)一步提高。宋老師給予了全程的幫作、鼓勵與指導(dǎo),在此我表示衷心的感謝!同時感謝王玉芝老師在各方面給予的幫助,使我能夠有一個良好的環(huán)境,在做此課程設(shè)計(jì)時王老師還為我免費(fèi)提供仿真器等器材,為我更好的完成本系統(tǒng)的設(shè)計(jì)提供了先決條件。

    另外,我還要感謝我的父母,沒有他們的支持,我是無法完成這個系統(tǒng)設(shè)計(jì)的,他們給予我的,我將來一定會努力回報(bào)他們的。

最后,我還要感謝我身邊的同學(xué)、朋友,他們也給了我很大的幫助。


附錄: 系統(tǒng)完整源程序
以下是控制系統(tǒng)完整源程序

  1. <font color="rgb(0, 0, 0)"><font color="rgb(0, 0, 0)">;
  2. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  3. ;; SPEED/MILE OR IKE   PROGRAM   ;;
  4. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  5. ;
  6. ;
  7. ;       60H,61H,62H作里程計(jì)數(shù)單元,6CH,6DH作T1計(jì)數(shù)擴(kuò)充單元,
  8. ;       68H,69H,6AH,6BH存放自行車每圈時間數(shù),70H,71H,72H,73H
  9. ;       作顯示BCD碼存放數(shù)用,11H—15H存放被除數(shù),16H-19H存放除數(shù)
  10. ;
  11. ;
  12. ; 定義
  13.         VSDA    EQU    P1.5   ; EEPROM數(shù)據(jù)傳送口
  14.         VSCL    EQU      P1.4    ; EEPROM時鐘傳送口
  15.         SLA     EQU     50H     ; EEPROM器件尋址字節(jié)存放單元
  16.         NUMBYT  EQU    51H    ; EEPROM傳送字節(jié)數(shù)存放單元
  17.         MTD     EQU     30H     ; EEPROM發(fā)送數(shù)據(jù)緩沖單元
  18.         MRD     EQU     40H     ; EEPROM讀出數(shù)據(jù)存放單元
  19.         SLAW    EQU     0A0H    ; EEPROM尋址字節(jié)寫
  20.         SLAR    EQU    0A1H    ; EEPROM尋址字節(jié)讀
  21.         DPHH    EQU     62H     ; DPTR計(jì)數(shù)擴(kuò)展高8位
  22.         TH1H    EQU     6CH     ; 定時器T1擴(kuò)展高8位
  23.         TH1HH   EQU    6DH   ; 定時器T1擴(kuò)展高8-16位
  24. ;
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26. ;; PRO  GRAM INPUT  ;;
  27. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  28.         ORG    0000H                                          ;程序執(zhí)行開始地址
  29.         LJMP    START                                          ;跳至START
  30.         ORG     0003H                                          ;外中斷0中斷程序入口
  31.         LJMP    INTEX0                                          ;跳至INTEX0中斷服務(wù)程序
  32.         ORG    000BH                                          ;定時器T0中斷程序入口
  33.         RETI                                                                          ;中斷返回
  34.         ORG     0013H                                          ;外中斷1中斷入口
  35.         LJMP    INTEX1                                          ; 跳至INTEX1中斷服務(wù)程序
  36.         ORG     001BH                                          ; 定時器T1中斷程序入口
  37.         LJMP    INTT1                                          ; 跳至INTT1中斷服務(wù)程序
  38.         ORG     0023H                                          ;串口中斷入口地址
  39.         RETI                                                                          ;中斷返回
  40. ORG     002BH                                          ;定時器T2中斷入口地址
  41.         RETI                                                                          ;中斷返回
  42. ;
  43. ;
  44. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  45. ;; PROGRAM CLEAR  ;;
  46. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  47. ;上電初始化程序
  48. CLEARMEN:    MOV     TMOD, #90H    ;T1為16位外部控制定時器
  49.                 MOV     SP, #75H         ;堆棧在75H開始
  50.                SETB     PX0           ;外中斷0優(yōu)先級為1
  51.                 SETB     IT0            ;外中斷0用邊沿觸發(fā)
  52.                 SETB     IT1             ;外中斷1用邊沿觸發(fā)
  53.                 MOV     20H, A           ;清內(nèi)存中特定單元
  54.                 MOV     6CH, A           ;
  55.                 MOV     6DH, A           ;
  56.                 MOV    70H, A           ;
  57.                 MOV     71H, A           ;
  58.                 MOV     72H, A           ;
  59.                 MOV    73H, A           ;
  60.                 MOV     60H, A           ;
  61.                 MOV     61H, A           ;
  62.                 MOV     62H, A           ;
  63.                 MOV     63H, A          ; 清內(nèi)存中特定單元
  64.                 DEC     A               ;A為#0FFH
  65.                 MOV     68H, A          ;內(nèi)存置數(shù)據(jù)#0FFH
  66. MOV     69H, A           ;內(nèi)存置數(shù)據(jù)#0FFH
  67. MOV     6AH, A           ;內(nèi)存置數(shù)據(jù)#0FFH
  68.                 MOV     6BH, A           ;內(nèi)存置數(shù)據(jù)#0FFH
  69.                 MOV     P1, A                         ;P1口置1
  70. CLEAR1:        JB      P1.2, KEY1      ;根據(jù)P1.2,P1.3,P1.6,P1.7設(shè)置狀態(tài)
  71.                                                                                               ; 在21地址單元賦自行車周長
  72.                                            值
  73.                 MOV    21H, #0FH       ; 22寸自行車周長值
  74.                 LJMP    CLEAR2        ; 轉(zhuǎn)CLEAR2
  75. KEY1:          JB     P1.3, KEY2     ;
  76.                 MOV    21H, #12H       ; 24寸自行車周長值
  77.                 LJMP    CLEAR2        ; CLEAR2
  78. KEY2:          JB     P1.6, KEY3     ;
  79.                 MOV    21H, #14H        ; 26寸自行車周長值
  80.                 LJMP    CLEAR2         ; 轉(zhuǎn)CLEAR2
  81. KEY3:          JB     P1.7, ERR        ; 四個開關(guān)都沒合上,轉(zhuǎn)出錯處理
  82.                 MOV    21H, #19H       ; 28寸自行車周長值
  83. CLEAR2:        SETB    TR1            ; 開定時器T1
  84.                 SETB    EA              ; 開中斷允許
  85.                 SETB    EX0             ; 開外中斷0
  86.                 SETB    ET1             ; 開定時中斷T1
  87.                 SETB    P3.1             ; 關(guān)報(bào)警器
  88.   LCALL  VIICREAD       ; 將EEPROM中原里程數(shù)據(jù)調(diào)入
  89. 內(nèi)存
  90.                 RET                                                       ; 子程序返回
  91. ERR:           CPL    P3.1             ; 輪周長設(shè)置出錯,LED燈閃
  92. 提醒
  93.                 ALL     DL5S             ; 延時
  94.                 LJMP   CLEAR1         ; 重新初始化,等待輪周長設(shè)置開關(guān)合上              
  95. ;
  96. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  97. ;; PROGRAM START  ;;
  98. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  99. ;
  100. START:          LCALL   CLEARMEN      ; 上電初始化
  101. START1:         JB       P3.0, DISPLAYS  ; P3.0=1,顯示里程
  102.                  LCALL   DISPLAYV       ; 顯示速度
  103. START2:         SJMP    START1         ; 轉(zhuǎn)START1循環(huán)
  104. ;
  105. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  106. ;; INTEX0 PROGRAM  ;;
  107. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  108. ; 里程計(jì)數(shù)程序,用外中斷0實(shí)現(xiàn),計(jì)數(shù)用60H-62H內(nèi)存單元。
  109. INTEX0:       PUSH    ACC             ; 累加器堆棧保護(hù)
  110.                PUSH    PSW                          ; 狀態(tài)字堆棧保護(hù)
  111.                INC      60H                          ; 圈加1
  112.                CLR      A                           ; 清A
  113.                CJNE     A, 60H, INTEX0OUT  ; 計(jì)數(shù)沒溢出轉(zhuǎn)INTEX0OUT
  114.                INC      61H            ; 溢出進(jìn)位(61H加1)
  115.                CJNE     A, 61H, INTEX0OUT ; 計(jì)數(shù)沒溢出轉(zhuǎn)INTEX0OUT
  116.                INC      62H                         ; 溢出進(jìn)位(62H加1)
  117. INTEX0OUT:   LCALL   VIICWRITE        ; 里程數(shù)據(jù)存入EEPROM
  118.                SETB     EX1                          ; 開外中斷1
  119.                POP      PSW                          ; 狀態(tài)字恢復(fù)
  120.                POP      ACC             ; 累加器恢復(fù)
  121.                RETI                                                         ; 中斷返回
  122. ;
  123. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  124. ;; INTEX1 PROGRAM ;;
  125. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  126. ; 每轉(zhuǎn)1圈時間計(jì)數(shù)處理程序,每圈時間放在68H-6BH單元中。
  127. INTEX1:        PUSH     ACC             ; 堆棧保護(hù)
  128.                 PUSH    PSW           ;
  129.                 CLR      EX1            ; 關(guān)外中斷1
  130.                 JNB      00H, INTEX11      ; 溢出標(biāo)志為0轉(zhuǎn)INTEX11
  131.                 MOV     TL1, #0FFH       ; 溢出時計(jì)時單元賦#0FFH(顯示速度為零)
  132.                 MOV     TH1, #0FFH       ;
  133.                 MOV     6CH, #0FFH      ;
  134.                 MOV     6DH, #0FFH       ;
  135. INTEX11:       MOV  68H, TL1        ; 將時間計(jì)數(shù)值移入暫存單元68H-6BH
  136.                 MOV     69H, TH1        ;
  137.                 MOV     6AH, 6CH      ;
  138.                 MOV     6BH, 6DH      ;
  139.                 CLR      A               ; 清A
  140.                 MOV     TL1, A            ; 計(jì)時單元置0
  141.                 MOV     TH1, A           ;
  142.                 MOV    6CH, A           ;
  143.                 MOV    6DH, A         ;
  144.                 CLR      00H             ; 清溢出標(biāo)志
  145.                 POP      PSW                          ; 堆棧恢復(fù)
  146.                 POP    ACC             ;
  147.                 RETI                      ; 中斷返回
  148. ;
  149. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  150. ;; INTT1 PROGRAM  ;;
  151. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  152. ;
  153. ; T1計(jì)數(shù)器中斷服務(wù)程序。(計(jì)數(shù)器T1由外中斷1輸入控制,當(dāng)為高電平時計(jì)時開始)
  154. INTT1:          PUSH    ACC             ; 堆棧保護(hù)
  155.                 PUSH    PSW                          ;
  156.                 INC     6CH                       ; 6CH計(jì)時單元加1
  157.                 MOV    A, 6CH                      ; 移入A
  158.                 JNZ     INTT11          ; 不等于0轉(zhuǎn)INTT11
  159.                 INC     6DH                        ; 進(jìn)位,6DH單元加1
  160.                 MOV    A, 6DH                       ; 移入A
  161.                 JNZ     INTT11          ; 不等于0轉(zhuǎn)INTT11
  162.                 SETB   00H                       ; 計(jì)時器溢出,置溢出標(biāo)志
  163. INTT11:         POP     PSW                        ; 恢復(fù)堆棧
  164.                 POP     ACC                        ;
  165.                 RETI                                                        ; 中斷返回
  166. ;
  167. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  168. ;; DISPLAY S    ;;
  169. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  170. ;
  171. ;里程顯示控制程序
  172. DISPLAYS:      SETB    P1.0           ; 點(diǎn)亮LED1(顯示里程狀態(tài))
  173.                 CLR     P1.1             ; 關(guān)閉速度指示燈
  174.                 SETB    P3.7           ; 顯示小數(shù)點(diǎn)(最小顯示為0.1公里)
  175.                 LCALL   SSS             ; 將圈數(shù)轉(zhuǎn)為公里數(shù)
  176.                 LCALL   DISPLAY       ; 顯示公里數(shù)據(jù)
  177.                 LJMP    START1         ; 跳回START1
  178. ;
  179. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  180. ;; DISPLAY V ;;
  181. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  182. ;速度顯示控制程序
  183. DISPLAYV:      CLR     P1.0           ; 關(guān)閉LED1(里程)燈
  184.                 SETB    P1.1          ; 點(diǎn)亮LED2(顯示時速狀態(tài))
  185.                 CLR     P3.7          ; 關(guān)小數(shù)點(diǎn)顯示
  186.                 LCALL   VVV         ; 每圈時間換算為公里/小時程序
  187.                 MOV   A, 71H       ; 將十位數(shù)(BCD碼)值移入A
  188.                 SUBB   A, #04H       ; 與預(yù)定報(bào)警值比較
  189.                 JNC     WARING       ; 時速超過40時報(bào)警
  190.                 SETB    P3.1          ; 關(guān)報(bào)警燈
  191. V1:             LCALL   DISPLAY       ; 顯亮一次(為了改善閃爍)
  192.                 RET                                          ; 子程序返回
  193. WARING:       CLR     P3.1           ; 報(bào)警燈LED3點(diǎn)亮(并嗚叫)
  194.                 AJMP    V1             ; 轉(zhuǎn)V1退出
  195. ;
  196. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  197. ;; VIIC WRITE    ;;
  198. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  199. ;歸一化EEPROM存入程序(12M時鐘),存入數(shù)在50H起單元
  200. VIICWRITE:     ACALL   WMOV9
  201.                 MOV     SLA, #SLAW
  202.                 MOV     NUMBYT, #09H
  203.                 LCALL   WRNBYT
  204.                 RET
  205. WMOV9:       MOV     5FH, #50H
  206.                 MOV     R0, #MTD
  207.                 MOV     R1, #5FH
  208.                 MOV     R2, #09H
  209. WMOV:         MOV     A, @R1
  210.                 MOV     @R0, A
  211.                 INC    R0
  212.                 INC    R1
  213.                 DJNZ     R2, WMOV
  214.                 RET
  215. ;
  216. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  217. ;;  VIICRE AD      ;;
  218. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  219. ; 歸一化EEPROM讀出程序(12M時鐘),讀出數(shù)放入60H-67H單元
  220. VIICREAD:      MOV     MTD, #50H   
  221.                 MOV     SLA, #SLAW
  222.                 MOV     NUMBYT, #01H
  223.                 LCALL   WRNBYT
  224.                 MOV     SLA, #SLAR
  225.                 MOV     NUMBYT, #08H
  226.                 LCALL   RDNBYT
  227.                 ACALL   RMOV8
  228.                 RET
  229. RMOV8:       MOV     R0, #MRD
  230.                 MOV     R1, #60H
  231.                 MOV     R2, #08H
  232. RMOV:       MOV     A, @R0
  233.               MOV     @R1, A
  234.                 INC    R0
  235.                 INC    R1
  236.                 DJNZ    R2, RMOV
  237.                 RET
  238. ;
  239. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  240. ;; VIIC   PROGRAM  ;;
  241. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  242. ; I2C串行歸一化存儲子程序
  243. STA:            SETB    VSDA
  244.                 SETB    VSCL
  245.                 NOP
  246.                 NOP
  247.                 NOP
  248.                 NOP
  249.                 CLR     VSDA
  250.                 NOP
  251.                 CLR     VSDA
  252.                 NOP
  253.                 NOP
  254.                 NOP
  255.                 NOP
  256.                 CLR     VSCL
  257.                 RET
  258. STOP:           CLR     VSDA
  259.                 SETB    VSCL
  260.                 NOP
  261.                 NOP
  262.                 NOP
  263.                 NOP
  264.                 SETB    VSDA
  265.                 NOP
  266.                 NOP
  267.                 NOP
  268.                 NOP
  269.                 CLR     VSDA
  270.                 CLR     VSCL
  271.                 RET
  272. MACK:         CLR     VSDA
  273.                 SETB    VSCL
  274.                 NOP
  275.                 NOP
  276.                 NOP
  277.                 NOP
  278.                 CLR     VSCL
  279.                 SETB    VSDA
  280.                 RET
  281. MNACK:        SETB    VSDA
  282.                 SETB    VSCL
  283.                 NOP
  284.                 NOP
  285.                 NOP
  286.                 NOP
  287.                 CLR     VSCL
  288.                 CLR     VSDA
  289.                 RET
  290. CACK:        SETB    VSDA
  291.                 SETB    VSCL
  292.                 CLR   F0
  293.                 MOV   C, VSDA
  294.                 JNC     CEND
  295.                 SETB    F0
  296. CEND:          CLR     VSCL
  297.                 RET
  298. WRBYT:        MOV     R0, #08H
  299. WLP:           RLC     A
  300.                 JC      WR1
  301.                 AJMP    WR0
  302. WLP1:          DJNZ    R0, WLP
  303.                 RET
  304. WR1:           SETB    VSDA
  305.                 SETB    VSCL
  306.                 NOP
  307.                 NOP
  308.                 NOP
  309.                 NOP
  310.                 CLR     VSCL
  311.                 CLR     VSDA
  312.                 AJMP    WLP1
  313. WR0:           CLR     VSDA
  314.                 SETB    VSCL
  315.                 NOP
  316.                 NOP
  317.                 NOP
  318.                 NOP
  319.                 CLR     VSCL
  320.                 AJMP    WLP1
  321. RDBYT:         MOV     R0, #08H
  322. RLP:            SETB    VSDA
  323.                 SETB    VSCL
  324.                 MOV     C, VSDA
  325.                 MOV     A, R2
  326.                 RLC    A
  327.                 MOV     R2, A
  328.                 CLR     VSCL
  329.                 DJNZ    R0, RLP
  330.                 RET
  331. WRNBYT:       MOV     R3, NUMBYT
  332.                LCALL   STA
  333.                 MOV    A, SLA
  334.                 LCALL  WRBYT
  335.                 LCALL  CACK
  336.                 JB       F0, WRNBYT
  337.               MOV    R1, #MTD
  338. WRDA:         MOV    A, @R1
  339.                 LCALL   WRBYT
  340.                 LCALL   CACK
  341.                 JB     F0, WRNBYT
  342.                 INC      R1
  343.                 DJNZ      R3, WRDA
  344.                 LCALL   STOP
  345.                 RET
  346. RDNBYT:       MOV    R3, NUMBYT
  347.                 LCALL  STA
  348.                 MOV    A, SLA
  349.                 LCALL   WRBYT
  350.                 LCALL   CACK
  351.                 JB     F0, RDNBYT
  352. RDN:          MOV     R1, #MRD
  353. RDN1:         LCALL   RDBYT
  354.                 MOV   @R1, A
  355.                 DJNZ   R3, ACK
  356.                 LCALL   MNACK
  357.                 LCALL   STOP
  358.                 RET
  359. ACK:          LCALL   MACK
  360.                 INC     R1
  361.                SJMP   RDN1
  362. ;
  363. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  364. ;; DISPLAY PROGRAM ;;
  365. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  366. ; 顯示程序。顯示BCD碼在70H-73H單元內(nèi),采用共陰LED數(shù)碼管
  367. DISPLAY:      MOV    R1, #70H                               ; 顯示單元首址
  368.                 MOV     R2, #0FEH                               ; 掃描字
  369. PLAY:           MOV     A, R2                                             ; 掃描字入A
  370.                 MOV     P2, A                                             ; 放到端口
  371.                 MOV     A, @R1                               ; 取顯示數(shù)據(jù)
  372.                 ANL    A, #0FH                               ; 去掉高四位(為0)
  373.                 MOV     DPTR, #TAB                 ; 取段碼表首址
  374.                 MOVC    A, @A+DPTR                 ; 查顯示數(shù)據(jù)對應(yīng)段碼
  375.                 MOV     P0,A                                             ; 段碼輸出
  376.                 LCALL   DL1MS                                   ; 點(diǎn)亮1毫秒
  377.                 INC    R1                                                 ; 指向下一顯示數(shù)據(jù)地址
  378.                 MOV     A, R2                                             ; 取掃描字
  379.                 JNB     ACC.3, ENDOUT  ; 已掃描到第四位,轉(zhuǎn)ENDOUT退出
  380.                 RL      A                                                  ; 循環(huán)左移
  381.                 MOV     R2, A                                             ; 放回R2
  382.                 AJMP    PLAY                                             ; 轉(zhuǎn)PLAY循環(huán)
  383. ENDOUT:       SETB    P2.0                                   ; 關(guān)掃描
  384.                 SETB    P2.1                                             ; 關(guān)掃描
  385.                 SETB    P2.2                                             ; 關(guān)掃描
  386.                 SETB    P2.3                                             ; 關(guān)掃描
  387.                 RET                                                                             ; 掃描結(jié)束
  388. ;共陰段碼表(可顯示0-F)
  389. TAB:          DB     3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
  390.                 DB     7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
  391.               DB      00H
  392. ;
  393. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  394. ;; SSS PROGRAM  ;;
  395. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  396. ; 里程處理程序,將自行車圈數(shù)據(jù)換算成公里數(shù)
  397. SSS:            MOV     19H, #64H                               ; 除數(shù)最高位賦值
  398.                 MOV     18H, #00H                               ; 除數(shù)賦值
  399.                 MOV     17H, #00H                               ; 除數(shù)賦值
  400.                 MOV     16H, #00H                               ; 除數(shù)賦值
  401.                 MOV     11H, #00H                               ; 被除數(shù)賦值
  402.                 MOV     12H, #00H                               ; 被除數(shù)賦值
  403.                 MOV    13H, 62H                               ; 被除數(shù)賦值
  404.                 MOV     14H, 61H                               ; 被除數(shù)賦值
  405.                 MOV    15H, 60H                               ; 被除數(shù)賦值
  406.                 LCALL    DIVST       ; 調(diào)除法程序
  407. LCALL    BCDST       ; 調(diào)二進(jìn)制轉(zhuǎn)BCD碼程序
  408.                 MOV                   A, 25H                                  ; 結(jié)果處理,將25H數(shù)移入A
  409. ANL                   A, #0FH                               ; 將高四位置為0
  410.                 MOV               70H, A                                   ; 放入70H單元
  411.                 MOV                   A, 25H                               ; 25H數(shù)移入A
  412.                 SWAP                A                                             ; 高低四位交換
  413.                 ANL                   A, #0FH                               ; 將高四位置為0
  414.                 MOV                  71H, A                               ; 放入71H單元
  415.                 MOV                   A, 24H                               ; 24H數(shù)移入A
  416.                 ANL                   A, #0FH                               ; 將高四位置為0
  417.                 MOV                 72H, A                               ; 放入72H單元
  418.                 MOV                 A, 24H                               ; 24H數(shù)移入A
  419.                 SWAP              A                                                 ; 高低四位交換
  420.                 ANL                 A, #0FH                               ; 將高四位置為0
  421.                 MOV               73H, A                               ; 放入73H單元
  422.                 RET                                                                             ; 子程序返回
  423. ;
  424. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  425. ;; VVV PROGRAM    ;;
  426. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  427. ; 時速處理程序,最大顯示速度為99公里/小時(用作自行車)
  428. VVV:          MOV     18H,68H                               ; 除數(shù)賦值
  429.                 MOV     17H,69H                               ; 除數(shù)賦值
  430.                 MOV     16H,6AH                               ; 除數(shù)賦值
  431.                 MOV     11H,#00H                               ; 被除數(shù)賦值
  432.                 MOV     12H,#00H                               ; 被除數(shù)賦值
  433.                 MOV     13H, #36H                               ; 被除數(shù)賦值
  434.                 MOV     14H, #0EEH                              ; 被除數(shù)賦值
  435.                 MOV     15H, #80H                               ; 被除數(shù)賦值
  436.                 LCALL    DIVST           ; 調(diào)除法程序
  437.                 MOV     14H, #00H                               ; 舍去一位
  438.                 LCALL   BCDST         ;二進(jìn)制轉(zhuǎn)BCD碼程序
  439.                 MOV                 A, 25H                      ;以下將速度值放入顯示單元
  440.                 ANL                 A, #0FH                      ;高四位為0
  441.                 MOV                 70H, A                     ;放入70H內(nèi)
  442.                 MOV                  A, 25H                                    ;再取數(shù)
  443.                 SWAP              A                                                  ;高低四交換
  444.                 ANL               A, #0FH                                 ;高四位為0
  445.                 MOV                  71H, A                                 ;放入71H內(nèi)
  446.                 MOV      72H, #00H                     ;72H為0(高二位LED顯示0)
  447.                 MOV                   73H, #00H                     ;73H為0
  448.                 RET                                                                              ;子程序返回
  449. ;
  450. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  451. ;     DL1MS    ;;
  452. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  453. ;1毫秒延時程序,LED點(diǎn)亮用
  454. DL1MS:         MOV   R6, #14H
  455. DL1:            MOV   R7, #19H
  456. DL2:            DJNZ    R7, DL2
  457.                 DJNZ    R6, DL1
  458.                 RET
  459. ;
  460. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  461. ;     DL0.5S    ;;
  462. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  463. ;出錯閃爍用延時(255毫秒)
  464. DL5S:           MOV     R5, #0FFH
  465. DL3:            LCALL     DL1MS
  466.                 DJNZ     R5, DL3
  467.                 RET


  468. ;
  469. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  470. ; 除法子程序   ;;
  471. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  472. ;除法子程序,用作四位除法,除數(shù)在16H-19H,被除數(shù)在11H-15H。
  473. DIVST:           CLR                 C                   ;運(yùn)算開始
  474.                  MOV                A, 13H
  475.                  SUBB                A, 18H
  476.                  MOV                 A, 12H
  477.                 SUBB                A, 17H
  478.                  MOV                 A, 11H
  479.                  SUBB                A, 16H
  480.                  JNC                    LOOP4
  481.                  MOV      B, #10H
  482.       NDIV1:  CLR                  C
  483.                  MOV                  A, 15H
  484.                  RLC                  A
  485.                  MOV      15H, A
  486.                  MOV                  A, 14H
  487.                  RLC                  A
  488.                  MOV                  14H, A
  489.                  MOV                  A, 13H
  490.                  RLC                  A
  491.                  MOV                  13H, A
  492.                  MOV                  A, 12H
  493.                RLC                  A
  494.                 MOV                  12H, A
  495.                 MOV                  A, 11H
  496.               RLC     A
  497.                  MOV                  11H, A
  498.                  MOV                  F0, C
  499.                  CLR                  C
  500.                  MOV               A, 13H
  501.                  SUBB                 A, 18H
  502.                 MOV               1AH, A
  503.                 MOV                   A, 12H
  504.                 SUBB                 A, 17H
  505.                   MOV               19H, A
  506.                  MOV                 A, 11H
  507.                  SUBB               A, 16H
  508.                 JB                  F0, NDIV2
  509. JC                  NDIV3
  510.       NDIV2:    MOV                  11H, A
  511.                 MOV                  A, 19H
  512.                  MOV                  12H, A
  513.                  MOV                  A, 1AH
  514.                 MOV                  13H, A
  515.                INC                  15H
  516.        NDIV3:    DJNZ                 B, NDIV1
  517.                CLR                  F0
  518. DIVEND:   RET
  519.         LOOP4:  SETB                  F0
  520.                 SJMP                  DIVEND
  521. ;
  522. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  523. ;;  BCD碼轉(zhuǎn)換程序  ;;
  524. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  525. ;將14H、15H單元內(nèi)數(shù)據(jù)轉(zhuǎn)換成十進(jìn)制BCD碼放在24H、25H單元內(nèi)。
  526.                    BCDST:   MOV                   R7, #10H
  527.                             CLR                  C
  528.                            MOV                 25H, #00H
  529.                  MOV                 24H, #00H
  530.                     KKK:    MOV                 A, 15H
  531.                  RLC                  A
  532.                  MOV                  15H, A
  533.                               MOV                  A, 14H
  534.                  RLC     A
  535.                  MOV    14H, A
  536.                  MOV                  A, 25H
  537.                  ADDC    A, 25H
  538.                             DA                               A
  539.                             MOV                  25H, A
  540.                             MOV                  A, 24H
  541.                             ADDC                  A, 24H
  542.               DA                  A
  543.                             MOV                  24H, A
  544.                             DJNZ                 R7, KKK
  545. RET
  546. END                                                        ;程序結(jié)束</font></font>
復(fù)制代碼


完整的Word格式文檔51黑下載地址:

自行車?yán)锍趟俣扔?jì)的設(shè)計(jì)畢業(yè)論文.doc (316.5 KB, 下載次數(shù): 22)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 男女爱爱福利视频 | 18av在线播放 | 亚洲精品免费视频 | 亚洲一区二区三区在线播放 | 亚洲大片在线观看 | 日韩精品一区二区三区在线观看 | 日韩在线成人 | 成人精品视频在线观看 | 美女艹b | 日韩成人在线免费视频 | 一区二区在线视频 | 断背山在线观看 | 自拍偷拍第一页 | 亚洲成人免费 | 国产福利网站 | 在线国产一区 | 欧美日韩视频 | 亚洲 欧美 另类 日韩 | 精品91久久久 | 中文字幕在线看第二 | www精品美女久久久tv | 国产福利视频网站 | 午夜免费小视频 | 天天干天天玩天天操 | 欧美在线一区二区三区 | 国产成人精品视频在线观看 | 俺去俺来也www色官网cms | 91极品视频 | 成人在线中文字幕 | 久久免费香蕉视频 | 午夜网站视频 | 国产一级影片 | 欧美日韩在线一区 | 亚洲精品一区二区网址 | 精品videossex高潮汇编 | 精品国产综合 | 夜夜爽99久久国产综合精品女不卡 | 四虎影视免费在线 | www.啪啪.com| 久久精品亚洲精品国产欧美 | 精品欧美乱码久久久久久1区2区 |