2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論