版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單機原理及接口技術(shù)</b></p><p><b> 設(shè)計說明書</b></p><p> 起止日期: 2011年8月29日 至 2011年9月2日</p><p><b> 電子與信息工程系</b></p><p> 2011年 9 月
2、2日</p><p> 自行車?yán)锍?速度計的設(shè)計</p><p> 自行車?yán)锍?速度計的設(shè)計</p><p> 摘要:本文介紹了用89C52單片機設(shè)計自行車?yán)锍?速度計,運用單片機的運算和控制功能,并采用數(shù)碼管實時顯示所測速度和里程的速度里程計設(shè)計方案,用分頻器TC4024實現(xiàn)二分頻,用來探討24C01傳感器的用途,通過實用電路的設(shè)計來掌握速度及里程傳感器的使用
3、方法及一些性能參數(shù)。本系統(tǒng)含了電子電路技術(shù),以及常用的AT89C52單片機工作原理,通過本系統(tǒng)的設(shè)計,把它們倆者有機結(jié)合。</p><p> 關(guān)鍵詞:AT89C52 數(shù)碼管 TC4024分頻器 24C01傳感器 </p><p><b> 目 錄</b></p><p> 第一章 緒 論1</p><p&g
4、t; 第二章 芯片介紹2</p><p> 2.1 AT89C52單片機2</p><p> 2.1.1 AT89C52單片機簡介2</p><p> 2.1.2 AT89C52的管腳及其含義2</p><p> 2.2 TC4024分頻器3</p><p> 2.3 24C01芯片3</
5、p><p> 2.3.1 24C01簡介3</p><p> 2.3.2 24C01的特性:4</p><p> 第三章 硬件電路的設(shè)計6</p><p> 3.1系統(tǒng)結(jié)構(gòu)框圖6</p><p> 3.2 系統(tǒng)硬件電路6</p><p> 3.3 系統(tǒng)的工作原理7</p
6、><p> 第四章 軟件設(shè)計8</p><p> 4.1 系統(tǒng)內(nèi)存的規(guī)劃8</p><p> 4.2 系統(tǒng)的主要程序設(shè)計8</p><p> 第五章 系統(tǒng)調(diào)試10</p><p> 5.1 硬件調(diào)試10</p><p> 5.2 軟件調(diào)試10</p><p
7、> 第六章 心得體會12</p><p> 附錄1:元件清單14</p><p> 附錄2: 系統(tǒng)完整源程序15</p><p><b> 第一章 緒 論</b></p><p> 傳感器,英文名字為Sensor或Transducer,亦稱換能器、變換器。在科技迅速發(fā)展的今天,傳感器越來倍受重視。
8、在日常生活、航天、航空,常規(guī)武器、交通運輸,機械制造、化工、生物醫(yī)學(xué)工程、自動化檢測工程及計量等各項領(lǐng)域都被廣泛應(yīng)用[6]。</p><p> 目前,傳感器已向新材料開發(fā),集成化、智能化、數(shù)字化、新工藝,高精度化及高穩(wěn)定、高可靠化等技術(shù)發(fā)展。特別是霍爾傳感器,鑒于它的價廉、易于使用,使它廣泛運用于里程計、速度計等[6]。</p><p> 單片微型計算機簡稱單片機,又稱微控制器,特別適
9、用于控制領(lǐng)域。通常單片機由單塊集成電路構(gòu)成,內(nèi)部包含有計算機的基本部件:CPU(中央處理器),存儲器和I/O接口電路等。因此,單片機只需要與適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可以成為一個單片機控制系統(tǒng)[4]。</p><p> 目前,場上銷售的單片機有4位、8、16位、32位,并且單片機朝著高性能多種方向發(fā)展,尤其是8位單片機以經(jīng)成為當(dāng)前單片機的主流,主要體現(xiàn)在CPU功能增強、內(nèi)部資源增多、引腳的功能化、低電壓和低
10、功好耗化上[4]。</p><p> 單片機因為其體積小、功能強,可靠性高,靈活方便等優(yōu)點,所以可以用于各個領(lǐng)域,對各行各業(yè)的技術(shù)改造和產(chǎn)品更新?lián)Q代起到重要的推動作用。</p><p> 本人經(jīng)過學(xué)習(xí),用AT89C52設(shè)計了一個自行車?yán)锍?速度計。本設(shè)計可輪流顯示自行車行使的里程和速度, 采用TC4024芯片作為計數(shù)器以及2C401存儲數(shù)據(jù),3個單級共陰數(shù)碼管作為顯示系統(tǒng)。本系統(tǒng)具有超
11、速信響提醒功能,里程數(shù)據(jù)自動記憶,也可應(yīng)用于電動自行車、摩托車、汽車等機動車儀表上。</p><p><b> .</b></p><p><b> 第二章 芯片介紹</b></p><p> 2.1 AT89C52單片機</p><p> 2.1.1 AT89C52單片機簡介</p&
12、gt;<p> 本設(shè)計選用AT89C52單片機,AT89C52是一種低功耗、高性能CMOS 8位微控制器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,可與工業(yè)AT89C51 產(chǎn)品指令和引腳完全兼容。</p><p> 2.1.2 AT89C52的管腳及其含義</p><p> AT89C52的管腳及各管腳含義如下:</p><
13、;p> 圖1 89C52管腳圖</p><p><b> 各引腳功能說明:</b></p><p> VCC——電源電壓;GND——接地; P0口——P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用; 在訪問外部數(shù)據(jù)存儲器或程序
14、存儲器時,這組口線分時轉(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)部存在上拉電阻,某個引腳被外部信號拉低時會輸
15、出一個電流; 與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX); FLASH編程和程序校驗期間,P1接收低8位地址; P1.0和P1.1的第二功能:P1.0 T2(定時/計數(shù)器2外部計數(shù)脈沖輸入),時鐘輸出 ;P</p><p> 2.2 TC4024分頻器 </p><p> 本程序采用TC
16、4024芯片,它是一個7位的計數(shù)器,計數(shù)器具有分頻的作用,它包含有14個管腳,其7腳接地,14腳接+5V,1腳接AT89C52的INT0,即12腳,在系統(tǒng)中此芯片起到了二分頻的作用。</p><p> 2.3 24C01芯片</p><p> 2.3.1 24C01簡介</p><p> 24C01是一個1K位串行CMOS EEPROM,內(nèi)部含有128個8位字
17、節(jié),CATALYST的先進(jìn)CMOS技術(shù)實際上減少了器件的功耗,24C01是一個8位字節(jié)頁寫緩沖器,該器件通過I2C總線接口進(jìn)行操作,即此芯片采用I2C協(xié)議進(jìn)行讀寫數(shù)據(jù)。有一個專門的寫保護(hù)功能。</p><p> 24C01是I2C接口的,但標(biāo)準(zhǔn)51是不帶I2C接口的,串口方式0是不行的,需要用IO模擬,所以隨便接兩個IO都可以,而且都要接上拉電阻,大概幾K就行了,因為不是總線方式,所以不能用MOV指令,也不能用
18、SBUF,要判斷是否為滿,可以在程序里設(shè)個變量。</p><p> 在這里要注意E2P芯片的壽命(一般是讀寫100萬次,足夠了)。 存儲數(shù)據(jù)的時候,可以對操作數(shù)和存儲的數(shù)據(jù)進(jìn)行比較,不相等則存儲,這樣可以增加使用壽命,比有些每隔1秒鐘進(jìn)行存儲的會好多了。以下是24C01的管腳圖:</p><p><b> 圖2管腳圖</b></p><p>
19、; 表1 24C01的管腳描述</p><p> 2.3.2 24C01的特性:</p><p> 24C01芯片具有以下特性:</p><p> 與400KHZ的I2C總線兼容;</p><p> +1.8-6.0V工作電壓范圍;</p><p> 低功耗CMOS技術(shù);</p><p
20、> 寫保護(hù)功能:當(dāng)WP為高電平時進(jìn)入寫保護(hù)狀態(tài);</p><p><b> 頁寫緩沖器;</b></p><p><b> 自定時擦寫周期;</b></p><p> 1,000,000編程擦除/周期;</p><p> 可保存數(shù)據(jù)100年;</p><p>
21、 8腳DIP、SOIC、TSSOP封裝;</p><p> 10 溫度范圍:商業(yè)級、工業(yè)級和汽車級。</p><p> 第三章 硬件電路的設(shè)計</p><p><b> 3.1系統(tǒng)結(jié)構(gòu)框圖</b></p><p><b> 圖3</b></p><p> 按鍵控制
22、部分功能:自行車轉(zhuǎn)圈的大小設(shè)置,速度、里程顯示選擇設(shè)置。</p><p> 指示燈部分功能:里程狀態(tài)和速度狀態(tài)顯示。</p><p> 報警部分功能:超速時采用聲音報警提示。</p><p> 里程、速度測量電路部分功能:速度及里程傳感器采用霍爾傳元件,實現(xiàn)對自行車?yán)锍碳八俣鹊挠嬎恪?lt;/p><p> 顯示部分功能:速度、里程用數(shù)碼管
23、動態(tài)掃描顯示,由P0口送出段碼,P2口送出位選信號。</p><p> 3.2 系統(tǒng)硬件電路</p><p> 自行車?yán)锍?速度計能自動顯示自行車行駛的總里程數(shù)及行車速度,具有超速信響提醒功能,里程數(shù)據(jù)自動記憶,也可應(yīng)用于電動自行車、摩托車、汽車等機動車儀表上。其硬件電路原理圖如圖4。</p><p><b> 圖4系統(tǒng)原理圖</b>&l
24、t;/p><p> 3.3 系統(tǒng)的工作原理</p><p> 本設(shè)計能實時地將所測的速度與累計里程數(shù)顯示出來,主要是將24C01傳感器輸入到單片機的脈沖信號,將頻率實時地測量出來,然后通過單片機計算出速度和里程,再將所得的數(shù)據(jù)存儲到TC4024芯片中,通過AT89C52單片機計算出來的速度和里程的數(shù)據(jù),必須通過BCD碼的轉(zhuǎn)換才能輸出給數(shù)碼管。最后由共陰數(shù)碼管顯示所測速度與里程。 </
25、p><p> 自行車?yán)锍?速度計采用AT89C52單片機作控制,速度及里程傳感器采用霍爾元件,其電器原理圖如圖5.1所示。P0口和P2口用于七段LED顯示器的段碼及掃描輸出,在顯示里程時,第三位小數(shù)點用17腳P3.7口控制點亮。P1.0和P1.1口分別用于顯示里程狀態(tài)和速度狀態(tài)。P1.2、 P1.3、 P1.6和 P1.7口分別用于設(shè)置輪圈的大小。接口10口的開關(guān)用于確定顯示的方式,當(dāng)開關(guān)閉合時,顯示速度;打開時顯
26、示里程。第12腳外中斷0用于對輪子圈數(shù)的計數(shù)輸入,輪子每轉(zhuǎn)一圈,霍爾傳感器輸出一個地電平脈沖。第13腳外中斷1用于控制定時器T1的啟停,當(dāng)輸入為0時關(guān)閉定時器。此控制信號是將輪子圈數(shù)的計數(shù)脈沖經(jīng)二分頻后形成(見圖5.1),這樣,每次定時器T1的開啟時間剛好為轉(zhuǎn)一圈的時間。根據(jù)輪子的周長就可以計算出自行車的速度。P1.4和P1.5口用于EEPROM存儲器24C01的存取控制。11腳輸出用于速度超速時的報警。</p><
27、p><b> 第四章 軟件設(shè)計</b></p><p> 4.1 系統(tǒng)內(nèi)存的規(guī)劃</p><p> 由于本系統(tǒng)處理功能較多,因而一部分內(nèi)存單元用于特定的用處。其主</p><p> 要內(nèi)存單元用處如下:</p><p> 50H:EEPROM器件尋址字節(jié)存放單元;</p><p>
28、 51H:EEPROM傳送字節(jié)數(shù)存放單元;</p><p> 30H:EEPROM發(fā)送數(shù)據(jù)緩沖單元;</p><p> 40H:EEPROM讀出數(shù)據(jù)存放單元;</p><p> 0A0H:EEPROM尋址字節(jié)字節(jié)寫;</p><p> 0A1H:EEPROM尋址字節(jié)字節(jié)讀;</p><p> 62 H:DP
29、TR計數(shù)器擴展高8位;</p><p> 6C H:定時器T1計數(shù)器擴展高8位;</p><p> 6D H:定時器T1計數(shù)器擴展高8—16位;</p><p> 60 H、61 H、62 H:里程計數(shù)單元;</p><p> 68 H、69 H、6A H、6B H:存放自行車每圈時間數(shù);</p><p>
30、70 H、71 H、72 H、73 H:顯示BCD碼數(shù)據(jù)存放用;</p><p> 11 H—15 H:存放被除數(shù);</p><p> 16 H—19 H:存放除數(shù)。</p><p> 4.2 系統(tǒng)的主要程序設(shè)計 </p><p><b> 1. 初始化程序</b></p><p> 在
31、本系統(tǒng)初始化程序中,主要完成以下工作:將T1設(shè)為外部控制定時器方式;外中斷0及外中斷1設(shè)為邊沿觸發(fā)方式;將部分內(nèi)存單元清零;設(shè)置輪子 周長值;開中斷及定時器;將EEPROM中的數(shù)據(jù)調(diào)入內(nèi)存等。 </p><p> 2. 輪圈設(shè)置出錯處理程序</p><p> P1.2、 P1.3、 P1.6、P1.7端口的開關(guān)用于設(shè)定輪子的周長,當(dāng)沒有設(shè)定時(至少讓一個開關(guān)閉合),能從P3.1口輸出一
32、個周期為0.5S的方波信號,用作發(fā)光管閃爍及信響器提醒。</p><p><b> 3. 主程序</b></p><p> 主程序根據(jù)P3.0的開關(guān)狀態(tài)選擇里程或速度顯示,其流程圖如圖6.2所示。</p><p> 圖5 主程序流程圖</p><p> 4.里程計數(shù)程序(外中斷0服務(wù)程序)</p>
33、<p> 外中斷0服務(wù)程序用于對12腳輸入的圈脈沖進(jìn)行計數(shù),為十六進(jìn)制計數(shù)器。60H為低位,62H為高位。每計數(shù)一次后,對里程數(shù)據(jù)進(jìn)行一次存儲操作。</p><p> 5.外中斷1服務(wù)程序</p><p> 外中斷1服務(wù)程序用于處理輪子轉(zhuǎn)動一圈后計時數(shù)據(jù)。當(dāng)標(biāo)志位(00H)為1時,說明計數(shù)器溢出,放入最大時間值(為#0FFH);當(dāng)標(biāo)志位為0時,將計數(shù)單元(TL1、TH1、
34、6CH、6DH)的值放入68H—6BH單元。</p><p> 6.EEPROM存取程序</p><p> 本系統(tǒng)使用歸一化I2C串口存取子程序,使用一條數(shù)據(jù)線和時鐘線,采用ATMEL公司的24C01串口存儲器,應(yīng)用簡單方便。</p><p><b> 7.顯示子程序</b></p><p> 當(dāng)顯示里程時,先要
35、將圈數(shù)計數(shù)器中的數(shù)據(jù)進(jìn)行運算,求出總里程。當(dāng)要</p><p> 顯示速度時,要將輪子的這周長和轉(zhuǎn)一圈的時間數(shù)相除,然后換算成Km/h單位。最后放入70H—73H,進(jìn)行數(shù)據(jù)顯示。</p><p><b> 第五章 系統(tǒng)調(diào)試</b></p><p> 要完成一個產(chǎn)品的設(shè)計,有很多紛繁復(fù)雜的步驟和過程,其中最為重要</p>&l
36、t;p> 和最為關(guān)鍵的就是系統(tǒng)調(diào)試。調(diào)試的步驟和方法有很多。本人也看過不少,在這次系統(tǒng)調(diào)試的中調(diào)試的過程我充分的發(fā)揮了仿真器的作用。</p><p><b> 5.1 硬件調(diào)試</b></p><p> 硬件的焊接是一個比較繁瑣的過程,繁瑣的地方在于3個單聯(lián)數(shù)碼管的</p><p> 連接,線路較多,在焊接時要特別的細(xì)心,在焊接完
37、成并燒入程序之后通電發(fā)現(xiàn)數(shù)碼管不亮,檢查了好幾遍,電路無焊沒有錯誤,于是我就懷疑可能是數(shù)碼管的問題,拿去貝爾(學(xué)院的社團)測試沒問題,數(shù)碼管并沒有燒壞。</p><p> 在插入芯片時要特別注意不能把芯片插反,否則就會把芯片燒掉;也要</p><p> 注意極性電容的方向,長的腳為正,短的為負(fù),不能把負(fù)的接+5V,正的接地;在焊接三極管時也要注意其三個管腳的排布,還有為保護(hù)三極管不被燒
38、換,所以3個三極管要各自接一個限流電阻(這里為4.7K)。</p><p><b> 5.2 軟件調(diào)試</b></p><p> 軟件調(diào)試是調(diào)試的重點,同時也是出錯最多的地方;在整個軟件調(diào)試調(diào)試過程中我采取先部分后整體的調(diào)試方法。</p><p> 在整個程序的編寫調(diào)試過程中我首先調(diào)試的是數(shù)碼管顯示系統(tǒng),為此我編寫了以下一段程序用于數(shù)碼管
39、顯示調(diào)試,要求數(shù)碼管顯示0、1、2。</p><p> ORG 0000H</p><p> MAIN: MOV P2, #0FFH</p><p> MOV P0, 0C0H</p><p> MOV P2, #0FEH</p><p> ACALL DELAY1&l
40、t;/p><p> MOV P2, #0FFH</p><p> MOV P0, 0F9H</p><p> MOV P2, #0FDH</p><p> ACALL DELAY1</p><p> MOV P2, #0FFH</p><p> MOV
41、 P0, 0A4H</p><p> MOV P2, #OFBH</p><p> MOV P2, #0FFH</p><p> AJMP MAIN</p><p> DELAY1: MOV R6, #02H</p><p> AGAIN: MOV R7,
42、 #8FH</p><p> DELAY: DJNZ R7, DELAY</p><p> DJNZ R6, AGAIN</p><p><b> RET</b></p><p><b> END</b></p><p> 結(jié)果數(shù)碼管正確顯示了0
43、、1、2這三個數(shù),顯示系統(tǒng)調(diào)試成功。</p><p> 軟件測試要注意一下幾點:</p><p> 1.在編寫I2C串行歸一化存儲子程序時本來出了點錯,后經(jīng)過多次調(diào)試才運行正確。</p><p> 2.里程/速度控制程序是系統(tǒng)程序的重點,所以它當(dāng)然也是軟件調(diào)試的重點。</p><p> 3.顯示系統(tǒng)最好先調(diào)試。</p>
44、<p> 4.用韋幅軟件進(jìn)行仿真時要充分利用其逐步調(diào)試功能。</p><p><b> 第六章 心得體會</b></p><p> 通過這次單片機的課程設(shè)計,我進(jìn)一步熟悉和掌握了單片機的結(jié)構(gòu)及工作原理,單片機的接口技術(shù)及相關(guān)外圍芯片的外特性,控制方法和單片機核心的電路設(shè)計的基本方法和技術(shù),通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。這
45、次的課程設(shè)計是很難得,其中也有很多不懂得地方,但正是這樣,我才能在從中學(xué)到很多的東西!通過完成一個包括電路設(shè)計和程序開發(fā)的完整過程,了解開發(fā)一單片機應(yīng)用系統(tǒng)的全過程,為今后從事相應(yīng)打下基礎(chǔ)。</p><p> 本設(shè)計能自動顯示自行車行駛的總里程數(shù)及行車速度,具有超速信響報警提醒以及里程數(shù)據(jù)自動記憶的功能,也可應(yīng)用于電動自行車、摩托車、汽車等機動車的儀表上。由于本系統(tǒng)采用的是動態(tài)掃描LED顯示且共陰數(shù)碼管的驅(qū)動電
46、流不是很大,所以數(shù)碼管的顯示不是特別亮。但可以通過更換小點的電阻增大其驅(qū)動電流(最大驅(qū)動電流不能超過20毫安)使數(shù)碼管變得更亮。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李玉峰、倪虹霞. MCS-51系列單片機原理與接口技術(shù). 第一版. 北京:</p><p> 人民郵電出版社. 2004</p&
47、gt;<p> [2] 周興華. 手把手教你學(xué)單片機. 第一版.北京:北京航空航天大學(xué)出版社. 2005</p><p> [3] 曾一江. 單片微機原理與接口技術(shù). 第一版.北京:科學(xué)出版社. 2006</p><p> [4] 張俊謨. 單片機中級教程—原理與應(yīng)用. 第二版. 北京:北京航空航天大學(xué)出版社. 2006. P1-11</p&g
48、t;<p> [5] 張友德 、趙志英、涂時亮. 單片機微型機原理、應(yīng)用與實驗.第五版.上海:復(fù)旦大學(xué)出版社. 2006. P24-27</p><p> [6] 呂泉. 現(xiàn)代傳感器原理及應(yīng)用. 第一版. 北京:清華大學(xué)出版社. 2006.</p><p><b> P1-5</b></p><p> [7]
49、張毅剛、彭喜元. 單片機原理與應(yīng)用設(shè)計. 第一版. 哈爾濱:哈爾濱工業(yè)大學(xué). </p><p> [8] 謝自美.電子線路設(shè)計.實驗.測試[M].武漢:華中科技大學(xué)出版社,2000</p><p> [9] 曲家駭,王季秩 ,伺服控制系統(tǒng)中的傳感器</p><p> [10] 鄔寬民.單片機外圍器件實用手冊,數(shù)據(jù)傳輸接口器件分冊.北京.北京航空航天大學(xué)出
50、版社.2001:189-195</p><p> [11] 王貴悅,新編傳感器實用手冊.水利電力出版社.2002:67-89</p><p> [12] 《自行車電子里程表的初步設(shè)計》 刁文興 南京工業(yè)職業(yè)技術(shù)學(xué)院 后勤總公司 江蘇 南京 </p><p> [13] 《數(shù)字式汽車?yán)锍瘫淼脑O(shè)計》 諸德宏, 潘天紅, 朱湘臨 江蘇大學(xué)
51、電氣信息工程學(xué)院 , 江蘇 鎮(zhèn)江 </p><p> [14] 《電子車速里程表的單片機實現(xiàn)方案》王鎖弘, 威海雙豐電子傳感有限公司 山東 威海 </p><p> [15] 張福學(xué)。傳感器使用電路150例.中國技術(shù)出版社[M].1992年</p><p> [16] 《Embedded Microcontrollers and Processor Des
52、ign》,嵌入式微控制器與處理器設(shè)計,Greg Osborn,機械工業(yè)出版社</p><p> [17] Altium Designer (Protel),機械工業(yè)出版社</p><p> [18] Programming 8-bit PIC Microcontrollers in C with Interactive Hardware Simulation, 8位單片機C語言編程:基
53、于PIC16 ,Martin P. Bates,人民郵電出版社</p><p><b> 附錄1:元件清單</b></p><p> 附錄2: 系統(tǒng)完整源程序</p><p> 以下是控制系統(tǒng)完整源程序</p><p><b> ;</b></p><p> ;;;
54、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; SPEED/MILE OR IKE PROGRAM ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55、;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;</b></p><p><b> ;</b></p><p> ; 60H,61H,62H作里程計數(shù)單元,6CH,6DH作T1計數(shù)擴充單元,</p><p> ; 68H,69H,6AH,6BH
56、存放自行車每圈時間數(shù),70H,71H,72H,73H</p><p> ; 作顯示BCD碼存放數(shù)用,11H—15H存放被除數(shù),16H-19H存放除數(shù)</p><p><b> ;</b></p><p><b> ;</b></p><p><b> ; 定義</
57、b></p><p> VSDA EQU P1.5 ; EEPROM數(shù)據(jù)傳送口</p><p> VSCL EQU P1.4 ; EEPROM時鐘傳送口</p><p> SLA EQU 50H ; EEPROM器件尋址字節(jié)存放單元</p><p> NUMB
58、YT EQU 51H ; EEPROM傳送字節(jié)數(shù)存放單元</p><p> MTD EQU 30H ; EEPROM發(fā)送數(shù)據(jù)緩沖單元</p><p> MRD EQU 40H ; EEPROM讀出數(shù)據(jù)存放單元</p><p> SLAW EQU 0A0H ; EEPROM尋址字
59、節(jié)寫</p><p> SLAR EQU 0A1H ; EEPROM尋址字節(jié)讀</p><p> DPHH EQU 62H ; DPTR計數(shù)擴展高8位</p><p> TH1H EQU 6CH ; 定時器T1擴展高8位</p><p> TH1HH EQU
60、6DH ; 定時器T1擴展高8-16位</p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; PRO GRAM INPUT ;;</p><p> ;;;;;;;;;;;;;;
61、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ORG 0000H;程序執(zhí)行開始地址</p><p> LJMP START;跳至START</p><p> ORG 0003H;外中斷0中斷程序入口</p><p> LJMP INTEX0;跳
62、至INTEX0中斷服務(wù)程序</p><p> ORG 000BH;定時器T0中斷程序入口</p><p> RETI ;中斷返回</p><p> ORG 0013H;外中斷1中斷入口</p><p> LJMP INTEX1; 跳至INTEX1中斷服務(wù)程序</p>
63、<p> ORG 001BH; 定時器T1中斷程序入口</p><p> LJMP INTT1; 跳至INTT1中斷服務(wù)程序</p><p> ORG 0023H;串口中斷入口地址</p><p> RETI ;中斷返回</p><p> ORG 002BH
64、;定時器T2中斷入口地址</p><p> RETI ;中斷返回</p><p><b> ;</b></p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>&l
65、t;p> ;; PROGRAM CLEAR ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;上電初始化程序</b></p><p> CLEARMEN: MOV TMOD, #90H ;T1為16位外部控制定時器<
66、;/p><p> MOV SP, #75H ;堆棧在75H開始</p><p> SETB PX0 ;外中斷0優(yōu)先級為1</p><p> SETB IT0 ;外中斷0用邊沿觸發(fā)</p><p> SETB IT1 ;外中
67、斷1用邊沿觸發(fā)</p><p> MOV 20H, A ;清內(nèi)存中特定單元</p><p> MOV 6CH, A ;</p><p> MOV 6DH, A ;</p><p> MOV 70H, A ;</p>
68、;<p> MOV 71H, A ;</p><p> MOV 72H, A ;</p><p> MOV 73H, A ;</p><p> MOV 60H, A ;</p><p> MOV 61
69、H, A ;</p><p> MOV 62H, A ;</p><p> MOV 63H, A ; 清內(nèi)存中特定單元</p><p> DEC A ;A為#0FFH</p><p> MOV 68H, A
70、 ;內(nèi)存置數(shù)據(jù)#0FFH</p><p> MOV 69H, A ;內(nèi)存置數(shù)據(jù)#0FFH</p><p> MOV 6AH, A ;內(nèi)存置數(shù)據(jù)#0FFH</p><p> MOV 6BH, A ;內(nèi)存置數(shù)據(jù)#0FFH</p><p> MO
71、V P1, A ;P1口置1</p><p> CLEAR1: JB P1.2, KEY1 ;根據(jù)P1.2,P1.3,P1.6,P1.7設(shè)置狀態(tài)</p><p> ; 在21地址單元賦自行車周長</p><p><b> 值</b></p><p>
72、; MOV 21H, #0FH ; 22寸自行車周長值</p><p> LJMP CLEAR2 ; 轉(zhuǎn)CLEAR2</p><p> KEY1: JB P1.3, KEY2 ;</p><p> MOV 21H, #12H ; 24寸自行車周長值<
73、/p><p> LJMP CLEAR2 ; CLEAR2</p><p> KEY2: JB P1.6, KEY3 ;</p><p> MOV 21H, #14H ; 26寸自行車周長值</p><p> LJMP CLEAR2
74、 ; 轉(zhuǎn)CLEAR2</p><p> KEY3: JB P1.7, ERR ; 四個開關(guān)都沒合上,轉(zhuǎn)出錯處理</p><p> MOV 21H, #19H ; 28寸自行車周長值</p><p> CLEAR2: SETB TR1 ; 開定時器T1
75、</p><p> SETB EA ; 開中斷允許</p><p> SETB EX0 ; 開外中斷0</p><p> SETB ET1 ; 開定時中斷T1</p><p> SETB P3.1 ; 關(guān)報警
76、器</p><p> LCALL VIICREAD ; 將EEPROM中原里程數(shù)據(jù)調(diào)入</p><p><b> 內(nèi)存</b></p><p> RET ; 子程序返回</p><p> ERR: CPL P3.1
77、 ; 輪周長設(shè)置出錯,LED燈閃</p><p><b> 提醒</b></p><p> ALL DL5S ; 延時</p><p> LJMP CLEAR1 ; 重新初始化,等待輪周長設(shè)置開關(guān)合上 </p><p><b
78、> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; PROGRAM START ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b>
79、 ;</b></p><p> START: LCALL CLEARMEN ; 上電初始化</p><p> START1: JB P3.0, DISPLAYS ; P3.0=1,顯示里程</p><p> LCALL DISPLAYV ; 顯示速度</p&
80、gt;<p> START2: SJMP START1 ; 轉(zhuǎn)START1循環(huán)</p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; INTEX0 PROGRAM
81、;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ; 里程計數(shù)程序,用外中斷0實現(xiàn),計數(shù)用60H-62H內(nèi)存單元。</p><p> INTEX0: PUSH ACC ; 累加器堆棧保護(hù)</p><p> PU
82、SH PSW ; 狀態(tài)字堆棧保護(hù)</p><p> INC 60H ; 圈加1</p><p> CLR A ; 清A</p><p> CJNE A, 60H, INTEX0OUT ; 計數(shù)沒溢出轉(zhuǎn)INTEX0OUT</p>
83、<p> INC 61H ; 溢出進(jìn)位(61H加1)</p><p> CJNE A, 61H, INTEX0OUT ; 計數(shù)沒溢出轉(zhuǎn)INTEX0OUT</p><p> INC 62H ; 溢出進(jìn)位(62H加1)</p><p> INTEX0OUT: L
84、CALL VIICWRITE ; 里程數(shù)據(jù)存入EEPROM</p><p> SETB EX1 ; 開外中斷1</p><p> POP PSW ; 狀態(tài)字恢復(fù)</p><p> POP ACC ; 累加器恢復(fù)</p>
85、<p> RETI ; 中斷返回</p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; INTEX1 PROGRAM ;;</p><p> ;;;
86、;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ; 每轉(zhuǎn)1圈時間計數(shù)處理程序,每圈時間放在68H-6BH單元中。</p><p> INTEX1: PUSH ACC ; 堆棧保護(hù)</p><p> PUSH PSW ;</
87、p><p> CLR EX1 ; 關(guān)外中斷1</p><p> JNB 00H, INTEX11 ; 溢出標(biāo)志為0轉(zhuǎn)INTEX11</p><p> MOV TL1, #0FFH ; 溢出時計時單元賦#0FFH(顯示速度為零)</p><p> MOV T
88、H1, #0FFH ;</p><p> MOV 6CH, #0FFH ;</p><p> MOV 6DH, #0FFH ;</p><p> INTEX11: MOV 68H, TL1 ; 將時間計數(shù)值移入暫存單元68H-6BH</p><p>
89、; MOV 69H, TH1 ;</p><p> MOV 6AH, 6CH ;</p><p> MOV 6BH, 6DH ;</p><p> CLR A ; 清A</p><p> MOV TL1, A
90、 ; 計時單元置0</p><p> MOV TH1, A ;</p><p> MOV 6CH, A ;</p><p> MOV 6DH, A ;</p><p> CLR 00H ; 清
91、溢出標(biāo)志</p><p> POP PSW ; 堆?;謴?fù)</p><p> POP ACC ;</p><p> RETI ; 中斷返回</p><p><b> ;</b></p>&
92、lt;p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; INTT1 PROGRAM ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;</b></p>&
93、lt;p> ; T1計數(shù)器中斷服務(wù)程序。(計數(shù)器T1由外中斷1輸入控制,當(dāng)為高電平時計時開始)</p><p> INTT1: PUSH ACC ; 堆棧保護(hù)</p><p> PUSH PSW ;</p><p> INC 6CH ; 6CH計
94、時單元加1</p><p> MOV A, 6CH ; 移入A</p><p> JNZ INTT11 ; 不等于0轉(zhuǎn)INTT11</p><p> INC 6DH ; 進(jìn)位,6DH單元加1</p><p> MOV A, 6DH
95、; 移入A</p><p> JNZ INTT11 ; 不等于0轉(zhuǎn)INTT11</p><p> SETB 00H ; 計時器溢出,置溢出標(biāo)志</p><p> INTT11: POP PSW ; 恢復(fù)堆棧</p><p> POP
96、 ACC ;</p><p> RETI ; 中斷返回</p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; DISPLAY S ;;</p&g
97、t;<p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;</b></p><p><b> ;里程顯示控制程序</b></p><p> DISPLAYS: SETB P1.0 ; 點亮LED1(顯示里程
98、狀態(tài))</p><p> CLR P1.1 ; 關(guān)閉速度指示燈</p><p> SETB P3.7 ; 顯示小數(shù)點(最小顯示為0.1公里)</p><p> LCALL SSS ; 將圈數(shù)轉(zhuǎn)為公里數(shù)</p><p> LCALL DISPL
99、AY ; 顯示公里數(shù)據(jù)</p><p> LJMP START1 ; 跳回START1</p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; DISPLAY V ;;</
100、p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p><b> ;速度顯示控制程序</b></p><p> DISPLAYV: CLR P1.0 ; 關(guān)閉LED1(里程)燈</p><p> SETB P1.1
101、 ; 點亮LED2(顯示時速狀態(tài))</p><p> CLR P3.7 ; 關(guān)小數(shù)點顯示</p><p> LCALL VVV ; 每圈時間換算為公里/小時程序</p><p> MOV A, 71H ; 將十位數(shù)(BCD碼)值移入A</p><p> SUBB
102、 A, #04H ; 與預(yù)定報警值比較</p><p> JNC WARING ; 時速超過40時報警</p><p> SETB P3.1 ; 關(guān)報警燈</p><p> V1: LCALL DISPLAY ; 顯亮一次(為了改善閃爍)</p>
103、;<p> RET ; 子程序返回</p><p> WARING: CLR P3.1 ; 報警燈LED3點亮(并嗚叫)</p><p> AJMP V1 ; 轉(zhuǎn)V1退出</p><p><b> ;</b></p&
104、gt;<p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; VIIC WRITE ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;歸一化EEPROM存入程序(12M時鐘),存入數(shù)在50H起單元</p>
105、<p> VIICWRITE: ACALL WMOV9</p><p> MOV SLA, #SLAW</p><p> MOV NUMBYT, #09H</p><p> LCALL WRNBYT</p><p><b> RET</b></p>&l
106、t;p> WMOV9: MOV 5FH, #50H</p><p> MOV R0, #MTD</p><p> MOV R1, #5FH</p><p> MOV R2, #09H</p><p> WMOV: MOV A, @R1</p>
107、<p> MOV @R0, A</p><p> INC R0</p><p> INC R1</p><p> DJNZ R2, WMOV</p><p><b> RET</b></p><p><b> ;</b>
108、;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ;; VIICRE AD ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ; 歸一化EEPROM讀出程序(12M時鐘),讀出數(shù)放入60H-67H
109、單元</p><p> VIICREAD: MOV MTD, #50H </p><p> MOV SLA, #SLAW</p><p> MOV NUMBYT, #01H</p><p> LCALL WRNBYT</p><p> MOV SLA, #
110、SLAR</p><p> MOV NUMBYT, #08H</p><p> LCALL RDNBYT</p><p> ACALL RMOV8</p><p><b> RET</b></p><p> RMOV8: MOV R0, #MRD&l
111、t;/p><p> MOV R1, #60H</p><p> MOV R2, #08H</p><p> RMOV: MOV A, @R0</p><p> MOV @R1, A</p><p> INC R0</p><p>
112、 INC R1</p><p> DJNZ R2, RMOV</p><p><b> RET</b></p><p><b> ;</b></p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p>&
113、lt;p> ;; VIIC PROGRAM ;;</p><p> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</p><p> ; I2C串行歸一化存儲子程序</p><p> STA: SETB VSDA</p><p> SETB
114、VSCL</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR VSDA&
115、lt;/p><p><b> NOP</b></p><p> CLR VSDA</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p
116、><p><b> NOP</b></p><p> CLR VSCL</p><p><b> RET</b></p><p> STOP: CLR VSDA</p><p> SETB VSCL</p><
117、;p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> SETB VSDA</p><p>
118、;<b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR VSDA</p><p> CL
119、R VSCL</p><p><b> RET</b></p><p> MACK: CLR VSDA</p><p> SETB VSCL</p><p><b> NOP</b></p><p><b> NOP&
120、lt;/b></p><p><b> NOP</b></p><p><b> NOP</b></p><p> CLR VSCL</p><p> SETB VSDA</p><p><b> RET</b></p
121、><p> MNACK: SETB VSDA</p><p> SETB VSCL</p><p><b> NOP</b></p><p><b> NOP</b></p><p><b> NOP</b></p&
122、gt;<p><b> NOP</b></p><p> CLR VSCL</p><p> CLR VSDA</p><p><b> RET</b></p><p> CACK: SETB VSDA</p><p
123、> SETB VSCL</p><p> CLR F0</p><p> MOV C, VSDA</p><p> JNC CEND</p><p> SETB F0</p><p> CEND: CLR VSCL</p>&l
124、t;p><b> RET</b></p><p> WRBYT: MOV R0, #08H</p><p> WLP: RLC A</p><p> JC WR1</p><p> AJMP WR0</p><p&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自行車?yán)锍趟俣扔嫷脑O(shè)計
- 自行車?yán)锍趟俣扔嫷脑O(shè)計畢業(yè)論文
- 自行車?yán)锍趟俣扔嫷脑O(shè)計 畢業(yè)論文
- 自行車?yán)锍趟俣扔嫷脑O(shè)計畢業(yè)論文
- 畢業(yè)論文自行車?yán)锍蘝速度計的設(shè)計
- 課程設(shè)計---自行車用速度計
- 自行車行程速度畢業(yè)設(shè)計--基于單片機的自行車?yán)锍趟俣扔嬙O(shè)計
- 自行車?yán)锍趟俣扔嬙O(shè)計-單片機自動控制畢業(yè)論文
- 畢業(yè)設(shè)計(論文)-基于單片機的自行車?yán)锍趟俣扔嫷脑O(shè)計
- 畢業(yè)設(shè)計(論文)_基于單片機的自行車?yán)锍趟俣扔嫷脑O(shè)計
- 畢業(yè)設(shè)計(論文)-基于單片機的自行車?yán)锍趟俣扔嫷脑O(shè)計
- 單片機課程設(shè)計--自行車?yán)锍田@示
- 測試課程設(shè)計--自行車?yán)锍虦y量儀
- 課程設(shè)計---自行車測速計
- 自行車?yán)锍瘫淼脑O(shè)計【文獻(xiàn)綜述】
評論
0/150
提交評論