版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本 科 課 程 設(shè) 計 (論 文)</p><p> 題 目 __________________________________</p><p> __________________________________</p><p> 指導(dǎo)教師__________________________</p><p>
2、 輔導(dǎo)教師__________________________</p><p> 學(xué)生姓名__________________________</p><p> 學(xué)生學(xué)號__________________________</p><p> _______________________________院(部)________________________
3、____專業(yè)________________班</p><p> ______年 ___月 ___日</p><p><b> 自行車?yán)锍瘫?lt;/b></p><p> 摘 要:本文介紹的速度與里程表設(shè)計以單片機(jī)最小系統(tǒng)和霍爾傳感器為核心。傳感器將不同車速轉(zhuǎn)變成的不同頻率的脈沖信號輸入到單片機(jī)進(jìn)行控制與計算,再采用LED模塊進(jìn)行顯示,使得
4、電動自行車的速度與里程數(shù)據(jù)能直觀的顯示給使用者。</p><p> 本系統(tǒng)由霍爾傳感器、RC濾波電路、單片機(jī)AT89S51、系統(tǒng)化LED顯示模塊、數(shù)據(jù)存儲電路和鍵盤控制組成。其中霍爾傳感器包含信號放大和波形整形。對待測信號進(jìn)行放大的目的是降低對待測信號的幅度要求;波形變換和波形整形電路則用來將放大的信號轉(zhuǎn)換成可與單片機(jī)相連的TTL信號;通過單片機(jī)的設(shè)置可使內(nèi)部定時器T1對脈沖輸入引腳T0進(jìn)行控制,這樣能精確地算
5、出加到T0引腳的單位時間內(nèi)檢測到的脈沖數(shù);設(shè)計中速度顯示采用LED模塊,通過速度換算得來的里程數(shù)采用I2C總線并通過E2PROM來存儲,既節(jié)省了所需單片機(jī)的口線和外圍器件,同時也簡化了顯示部分的軟件編程</p><p> 本文先對里程表設(shè)計當(dāng)中所需設(shè)備作了詳細(xì)介紹,對設(shè)計中存在的問題進(jìn)行了說明;而后對硬件和軟件部分的設(shè)計和實現(xiàn)作了認(rèn)真的分析;然后給出了系統(tǒng)的建模過程及相應(yīng)的系統(tǒng)模型,在此基礎(chǔ)上進(jìn)行了控制仿真,并
6、對仿真效果進(jìn)行了比較。</p><p> 本里程表的設(shè)計具有結(jié)構(gòu)簡單,成本低廉,顯示清晰,穩(wěn)定可靠等優(yōu)點。并且可進(jìn)行擴(kuò)充,加入時速表的功能,更加方便的了解你現(xiàn)在所處的情況。</p><p> 關(guān)鍵詞:單片機(jī)最小系統(tǒng),LED數(shù)碼管,霍爾傳感器,RC濾波器,EEPROM存儲器</p><p><b> 目 錄</b></p&g
7、t;<p> 第一章 概 述4</p><p> 第二章 硬件設(shè)計4</p><p> 2.1系統(tǒng)組成結(jié)構(gòu)框圖5</p><p> 2.2具體硬件電路及工作原理5</p><p> 2.3 AT89C2051單片機(jī)簡介6</p><p> 2.3.1芯片概述6</p>
8、<p> 2.4其他外圍硬件電路7</p><p> 2.4.1電源電路7</p><p> 2.4.2霍爾傳感器8</p><p> 2.4.3 4位串行靜態(tài)顯示電路8</p><p> 第三章 軟件設(shè)計9</p><p> 3.1主程序設(shè)計9</p><p&
9、gt; 3.2 外中斷0和 T1定時溢出中斷服務(wù)子程序設(shè)計10</p><p> 3.3 速度/里程顯示控制子程序設(shè)計10</p><p> 3.4系統(tǒng)完整源程序11</p><p><b> 參考文獻(xiàn)11</b></p><p><b> 附錄 12</b></p>
10、;<p> 附錄1 整體電路圖12</p><p> 附錄2 源程序13</p><p><b> 致謝 19</b></p><p><b> 總結(jié) 19</b></p><p> 第一章 概述 </p><p> 本設(shè)
11、計介紹的速度與里程表設(shè)計以單片機(jī)和光電傳感器為核心。傳感器將不同車速轉(zhuǎn)變成的不同頻率的脈沖信號輸入到單片機(jī)進(jìn)行控制與計算,再采用LED模塊進(jìn)行顯示,使得電動自行車的速度與里程數(shù)據(jù)能直接的顯示給使用者。該設(shè)計能實時地將所測的速度與累計里程數(shù)顯示出來,主要是將傳感器輸入到單片機(jī)的脈沖信號的頻率(傳感器將不同車速轉(zhuǎn)變成不同頻率的脈沖信號)實時地測量出來,考慮到信號的衰減、干擾等影響,在信號送入單片機(jī)前應(yīng)對其進(jìn)行放大整形,然后通過單片機(jī)計算出速
12、度和里程,再將所得的數(shù)據(jù)存儲到串口數(shù)據(jù)存儲器,并由LED顯示模塊交替顯示所測速度與里程。本設(shè)計的里程數(shù)的算法是一種大概的算法(假設(shè)在一定時間內(nèi)自行車是勻速行進(jìn),平均速度與時間的乘積即為里程數(shù))。</p><p> 本系統(tǒng)由信號預(yù)處理電路、單片機(jī)AT89C2051、系統(tǒng)化LED顯示模塊、串口數(shù)據(jù)存儲電路和系統(tǒng)軟件組成。其中信號預(yù)處理電路包含信號放大、波形變換和波形整形。對待測信號進(jìn)行放大的目的是降低對待測信號的幅
13、度要求;波形變換和波形整形電路則用來將放大的信號轉(zhuǎn)換成可與單片機(jī)相連的TTL信號;通過單片機(jī)的設(shè)置可使內(nèi)部定時器T1對脈沖輸入引腳T0進(jìn)行控制,這樣能精確地算出加到T0引腳的單位時間內(nèi)檢測到的脈沖數(shù);設(shè)計中速度顯示采用LED模塊,通過速度換算得來的里程數(shù)采用I2C總線并通過E2PROM來存儲,既節(jié)省了所需單片機(jī)的口線和外圍器件,同時也簡化了顯示部分的軟件編程。</p><p> 設(shè)計時,應(yīng)綜合考慮測速精度和系統(tǒng)
14、反應(yīng)時間。本設(shè)計用測量脈沖頻率來計算速度,因而具有較高的測速精度。在計算里程時取了自行車的理想狀態(tài)。實際中,誤差控制在幾米之內(nèi),相對于整個里程來說不是很大。為了保證系統(tǒng)的實時性,系統(tǒng)的速度轉(zhuǎn)換模塊和顯示數(shù)據(jù)轉(zhuǎn)BCD碼模塊都采用快速算法。另外,還應(yīng)盡量保證其他子模塊在編程時的通用性和高效性。本設(shè)計的速度和里程值采用6位顯示,并包含兩個小數(shù)位。 </p><p> 第二章 硬件設(shè)計
15、</p><p> 2.1系統(tǒng)組成結(jié)構(gòu)框圖</p><p> 根據(jù)功能要求,首先要進(jìn)行的是總體方案的設(shè)計于論證,構(gòu)思一個符合實際要求的系統(tǒng),如圖2.1所示。</p><p> 系統(tǒng)由測量模塊、功能選擇模塊、顯示模塊、供電模塊和單片機(jī)小系統(tǒng)構(gòu)成。功能選擇后啟動測量,大片及實時采集、處理后顯示。</p><p> 圖2.1 系統(tǒng)組成結(jié)構(gòu)框
16、圖</p><p> 2.2具體硬件電路及工作原理</p><p> 具體硬件電路如圖2.2所示。</p><p> 圖2.2 系統(tǒng)硬件電路原理圖</p><p> 速度和里程由開關(guān)型霍爾傳感器測量,已知自行車輪子的周長(本系統(tǒng)采用的是1.8m,設(shè)為L),輪子每轉(zhuǎn)動一圈,傳感器采樣一個下降沿信號并送到單片機(jī)的外中斷0產(chǎn)生一次中斷,
17、全書加1,兩個相鄰下降沿信號的時間由單片機(jī)定時器1計時(設(shè)為T),哪么計算當(dāng)前速度(設(shè)為V)和行駛里程(設(shè)為S)的公式為:</p><p> V=1.8/T, S=1.8m*所行駛的圈數(shù)</p><p> S1是單片機(jī)的復(fù)位開關(guān),系統(tǒng)采用按鍵電平復(fù)位開關(guān);S2是電源開關(guān),并由燈D1指示;S3為速度和里程切換開關(guān);S4為限速切換開關(guān),可以根據(jù)自身需要選擇不同的最大超速速度;S5為里程單位
18、切換開關(guān)。P1.4輸出低電平時,控制D2亮,表示此時顯示的里程值為km/h,P1.5輸出低電平時,控制燈D3亮,提示速度太慢;P1.6輸出低電平時,控制燈D4亮,表示此時的顯示值時里程(否則為速度);P1.7控制超速報警電路,其為高電平表示行駛速度正常,為低電平時,三極管9012導(dǎo)通,驅(qū)動蜂鳴器報警。</p><p> 2.3 AT89C2051單片機(jī)簡介</p><p><b&g
19、t; 2.3.1芯片概述</b></p><p> AT89C2051是一個低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含2k bytes的可反復(fù)擦寫的只讀Flash程序存儲器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強(qiáng)大AT89C2051單片機(jī)可為您提供許多
20、高性價比的應(yīng)用場合。 AT89C2051是一個功能強(qiáng)大的單片機(jī),但它只有20個引腳,15個雙向輸入/輸出(I/O)端口,其中P1是一個完整的8位雙向I/O口,兩個外中斷口,兩個16位可編程定時計數(shù)器,兩個全雙向串行通信口,一個模擬比較放大器。同時AT89C2051的時鐘頻率可以為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時/計數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進(jìn)入繼續(xù)工作狀態(tài)。
21、省電模式中,片內(nèi)RAM將被凍結(jié),時鐘停止振蕩,所有功能停止工作,直至系統(tǒng)被硬件復(fù)位方可繼續(xù)運(yùn)行。管角配置圖2.3所示。</p><p> 圖2.3 2051引腳圖</p><p><b> 主要功能介紹</b></p><p> 兼容MCS51指令系統(tǒng)</p><p><b> 15個雙向I/O口&
22、lt;/b></p><p> 兩個16位可編程定時/計數(shù)器</p><p> 時鐘頻率0-24MHz</p><p><b> 兩個外部中斷源</b></p><p><b> 可直接驅(qū)動LED</b></p><p><b> 低功耗睡眠功能&l
23、t;/b></p><p><b> 可編程UARL通道</b></p><p> 2k可反復(fù)擦寫(>1000次)Flash ROM</p><p><b> 6個中斷源</b></p><p> 2.7-6.V的寬工作電壓范圍</p><p> 128
24、x8bit內(nèi)部RAM</p><p><b> 兩個串行中斷</b></p><p><b> 兩級加密位</b></p><p> 內(nèi)置一個模擬比較放大器</p><p> 軟件設(shè)置睡眠和喚醒功能</p><p> 可見。2051可以為很多的嵌入式控制應(yīng)用提供高度
25、靈活而且價格低廉的方案,特別適合小系統(tǒng)。本系統(tǒng)僅用到單片機(jī)的10個I/O口,所以選用2051單片機(jī)做主系統(tǒng)。</p><p> 2.4其他外圍硬件電路 </p><p> 2.4.1電源電路 </p><p> 如圖2.4所示。發(fā)電機(jī)發(fā)出+15V的交流電,經(jīng)整流濾波后,再給鎳氫電池組充電,充電采用恒流方式。已充電的電池組經(jīng)7805穩(wěn)壓,給霍爾傳感器和單片機(jī)系統(tǒng)
26、供電。由</p><p> 圖2.4 電源電路原理圖</p><p> 于充電電流可達(dá)400~500mA,且充電時間較長,所以三極管選用功率高的C8050。5KΩ的電位器用于調(diào)節(jié)充電電流,避免電流過大燒壞元件。</p><p> 當(dāng)然,實驗設(shè)計過程中為了簡便,我們可以不用電機(jī)。直接用4個1.5V的電池組經(jīng)7805穩(wěn)壓后得到+5V電壓給單片機(jī)系統(tǒng)和霍爾傳感器
27、供電。</p><p> 2.4.2霍爾傳感器 </p><p> 霍爾傳感器是利用霍爾效應(yīng)把磁輸入信號轉(zhuǎn)換成電信號的器件。本系統(tǒng)采用JK8002D霍爾接近開關(guān),他是一種非接觸型無觸點開關(guān),系統(tǒng)通過它探測外部的磁場的強(qiáng)弱變化,繼而控制開關(guān)輸出。磁場由外部的磁鋼產(chǎn)生。</p><p> JK8002D霍爾接近開關(guān)的內(nèi)部原理圖和輸入/輸出特性如圖(5)和圖(6)所
28、示。JK8002D霍爾接近開關(guān)的輸入量是磁感應(yīng)強(qiáng)度B,當(dāng)B值達(dá)到一定的程度(如Bl)時,霍爾開關(guān)內(nèi)部的觸發(fā)器翻轉(zhuǎn),其輸出電平狀態(tài)也隨之翻轉(zhuǎn)。</p><p> 當(dāng)探頭與磁鋼距離由遠(yuǎn)而近為8mm時,霍爾元件輸出端輸出一個無抖動的低電平(約為0.2V),當(dāng)兩者距離足夠遠(yuǎn)時,霍爾元件輸出端輸出一個無抖動的高電平(約為3.7V),所以輸出信號可直接到單片機(jī)的外中斷0的引腳。</p><p>
29、2.4.3 4位串行靜態(tài)顯示電路</p><p> 當(dāng)單片機(jī)的UART口部進(jìn)行串行通信時,可設(shè)置其工作于同步移位寄存器方式0,以輸出顯示信息,實現(xiàn)n位LED的靜態(tài)顯示,這樣做只占用了很少的I/O口線。系統(tǒng)中,4各共陽極得LED數(shù)碼管和4片 74LS164構(gòu)成4位數(shù)字顯示電路,74LS164將串行輸入的顯示信息轉(zhuǎn)換成并行輸出,驅(qū)動數(shù)碼管顯示。74LS164在低電平輸出時允許通過的電流為8mA,故不必添加驅(qū)動電路即
30、可獲取理想亮度。與動態(tài)掃描方式相比較,該方式無須CPU做不停的掃描,頻繁地為顯示服務(wù),節(jié)省了CPU的時間,軟件世界也比較簡單。顯示電路如圖2.5所示。</p><p> 圖2.5 4位串行靜態(tài)顯示電路原理圖</p><p><b> 第三章 軟件設(shè)計</b></p><p><b> 3.1主程序設(shè)計</b>&l
31、t;/p><p> 主程序流程圖見圖3.1。</p><p> 開機(jī)后系統(tǒng)自檢,正常時LED顯示“——”,同時等待自行車行駛。輪子開始轉(zhuǎn)圈后,系統(tǒng)進(jìn)行記錄和計算,并根據(jù)速度/里程開關(guān)的選擇顯示數(shù)值。</p><p> 圖3.1 主程序流程圖</p><p> 3.2 外中斷0和 T1定時溢出中斷服務(wù)子程序設(shè)計</p>&l
32、t;p> 外中斷0服務(wù)子程序用于對輸入脈沖的個數(shù)即輪子轉(zhuǎn)圈的次數(shù)計數(shù)。每計數(shù)一次,系統(tǒng)保存圈數(shù)值的同時保存定時器的計時值,并根據(jù)功能開關(guān)鍵實時顯示相應(yīng)的值。</p><p> T1定時溢出中斷服務(wù)子程序用于實時統(tǒng)計記一次數(shù)的經(jīng)歷時間。T1定時的基準(zhǔn)時間設(shè)為20ms,假設(shè)記一次數(shù)中T1中斷的次數(shù)為C,1.8/(20C)ms即當(dāng)前自行車行駛的速度。</p><p> 用內(nèi)部定時加外
33、中斷的方法實現(xiàn)了對輸入脈沖信號的測量,這是本系統(tǒng)最關(guān)鍵的程序部分。</p><p> 3.3 速度/里程顯示控制子程序設(shè)計</p><p> 最大允許速度由限速切換開關(guān)S4控制,超速(>20千米/小時)使單片機(jī)的P1.7輸出低電平報警。若行駛速度太慢(<0.5m/s),燈D3不斷閃爍,LED交替顯示“Erro”、“Sudu”和當(dāng)前速度值,以引起騎車者的注意。</p&g
34、t;<p> 速度顯示值的單位有km/h和每m/s,由功能鍵S5切換。對于里程值,為了較精確地顯示,程序設(shè)置了不同里程范圍時所顯示的小數(shù)點后數(shù)字的位數(shù):里程為10m~99m,顯示2位小數(shù);里程為100m~999m,顯示1位小數(shù)。</p><p> 3.4系統(tǒng)完整源程序</p><p><b> 如附錄2</b></p><p&g
35、t; 參考文獻(xiàn):[1] 張毅坤,陳善久.單片微型計算機(jī)原理及應(yīng)用.西安:西安電子科技大學(xué)出版社,2002.</p><p> [2] 張友德,趙志英,徐時亮.單片微機(jī)原理應(yīng)用與實驗.上海:復(fù)旦大學(xué)出版社,2000.</p><p> [3] 偉福Lab2000P系列單片機(jī)仿真實驗系統(tǒng)說明書.</p><p> [4] 鄭學(xué)堅 周斌 微型計算機(jī)原理和應(yīng)用
36、 北京:清華大學(xué)出版社</p><p> [5] 陳為 單片機(jī)原理 </p><p><b> 附錄</b></p><p><b> 附錄1 整體電路圖</b></p><p><b> 附錄2 源程序</b></p><p>&
37、lt;b> 自行車?yán)锍瘫?lt;/b></p><p> /* 各引腳用途及系統(tǒng)功能說明</p><p> P1.0 速度和里程切換:1顯示速度,0顯示里程</p><p> P1.1 限速度切換:1 10m/s;0 8m/s</p><p> P1.2 km/h和 m/s的切換:<
38、/p><p> P1.4 指示顯示器單位為km/h</p><p> P1.5 速度太慢燈閃爍警告</p><p> P1.6 0時燈亮,指示里程;為以燈不亮,顯示速度</p><p> P1.7 超速度報警</p><p> 距離最大值為9999m</p>
39、<p> 6H圈、 38H圈、 22C圈、 15B6圈</p><p> 0m=<S<10m 10m=<S<100m 100m=<S<1000m 1000m=<S<10000m</p><p> 周長0707H 00B4H 0012H 0012H/0AH</p>
40、<p><b> //變量定義//</b></p><p> XIAOSHU EDU 57H ; 小數(shù)點位數(shù)單元 </p><p> GEWEI EDU 40H ; 顯示單元</p><p> SHIWEI EDU
41、 41H ; </p><p> BAIWEI EDU 42H ;</p><p> QIANWEI EDU 43H ; </p><p> QSHU1 EDU 43H ; </p>
42、<p> QSHU0 EDU 61H ; 自行車圈數(shù)存儲單元高位</p><p> QSHU0 EDU 62H ; 自行車圈數(shù)存儲單元低位</p><p> SJIAN0 EDU 6CH ; T1定時溢出存儲單元
43、高位</p><p> SJIAN1 EDU 6DH ; T1定時溢出存儲單元低位</p><p><b> //主程序//</b></p><p> ORG 000H </p><p> AJMP START</p><p>
44、; ORG 0003H</p><p> AJMP INTEX0</p><p> ORG 001BH</p><p> AJMP IT11</p><p> ORG 0030H</p><p> START: MOV SP,#75H ; 設(shè)置堆棧
45、指針</p><p> MOV SCON,#00H ; 串行口工作方式</p><p> MOV GEWEI,#0AH ; 開機(jī)顯示</p><p> MOV SHIWEI,#0AH</p><p> MOV BAIWEI,#0AH</p><
46、;p> MOV QIANWEI,#0AH</p><p> ACALL DIS11</p><p> SETB P3.2 ; 外中斷0為輸入查詢方式</p><p> JB P3.2 ; 等待第一個有效脈沖(下降沿)到來</p><p>
47、 ACALL CLEARRAM ; 調(diào)用系統(tǒng)準(zhǔn)備顯示初始化子程序</p><p> STLOOP: JNB P1.0,ST1 ; p1.0=0,顯示速度</p><p> ACALL DISPLAYS ; P1.0=1, 顯示里程</p><p> SJM
48、P STLOOP ; 循環(huán)顯示</p><p> ST1: ACALL DISPLAYV ; 第一個下降沿來后顯示速度</p><p> AJMP STLOOP ; 循環(huán)顯示</p><p> //系統(tǒng)準(zhǔn)備顯示初始化子程序//</p>
49、;<p> CLEARRAM: MOV TMOD,#10H ; T1用于定時,工作于模式1</p><p> MOV TH1,#0B1H ; 定時20ms初始值</p><p> SETB P1.2 ; P1.2-P1.0為輸入</p><p
50、> SETB P1.1</p><p> SERB P1.0</p><p> CLR A ; 相應(yīng)內(nèi)RAM空間清零</p><p> MOV 21H,A ; 速度/里程的BCD碼高位清0</p><p> MOV 22H,A
51、 ; 速度/里程的BCD碼低位清0</p><p> MOV QSHU1,A ; 圈數(shù)空間清0</p><p> MOV QSHU0,A</p><p> MOV 6AH,A ; T1溢出次數(shù)暫存單元高位清0 </p><
52、p> MOV 6BH,A ; T1溢出次數(shù)暫存單元低位清0</p><p> MOV SJIAN0,A ; 計數(shù)器空間清零</p><p> MOV SJIAN1,A </p><p> MOV XIAOSHU,#01H ; 默認(rèn)
53、顯示3位小數(shù)</p><p> SETB IT0 ; 設(shè)置外中斷為邊沿觸發(fā)方式</p><p> SETB PT1 ; T1優(yōu)先級最高</p><p> SETB EA ; 開總中斷</p><p>
54、SETB ET1 ; 開T1中斷</p><p> SETB EX0 ; 開外0中斷</p><p> //外中斷0服務(wù)子程序//</p><p> INTEX0: PUSH ACC ; 累加器堆棧保護(hù)</p>&
55、lt;p> PUSH PSW ; 狀態(tài)字堆棧保護(hù)</p><p> INC QSHU0 ; 圈加1</p><p> SETB P1.7 ; 置1不報警</p><p> CLR A ;
56、 清A</p><p> CJNE A,QSHU0,SUBX0 ; 計數(shù)沒溢出轉(zhuǎn)SUBX0</p><p> INC QSHU1 ; 溢出進(jìn)位(61H加1)</p><p> SUBX0: CLR TR1 ; 關(guān)計時,讀輪子轉(zhuǎn)一圈的時間
57、</p><p> MOV 6AH,SJIAN0 ; 時間暫存</p><p> MOV 6BH,SJIAN1 </p><p> MOV TH1,#0B1H ; 定時器T1重付初值</p><p> MOV TL1,#0DFH
58、 </p><p><b> CLR A</b></p><p> MOV SJIAN0,A ; 清計時空間</p><p> MOV SJIAN1,A</p><p> SETB TR1 ; 重新計時</p>
59、;<p> POP PSW ; 狀態(tài)字恢復(fù)</p><p> POP ACC ; 累加器恢復(fù)</p><p> RETI ; 中斷返回</p><p> //T1定時器溢出時中斷服務(wù)子程序//</
60、p><p> IT11: PUSH ACC ; 堆棧保護(hù)</p><p> PUSH PSW </p><p> INC SJIAN1 ; 定時20毫秒溢出次數(shù)</p><p> MOV A,SJIAN1
61、; 讀一圈定時的次數(shù)</p><p> CJNE A,#0BBH,SUBT1 ; 速度太慢(<0.5),處理</p><p> AJMP SUBT2 </p><p> SUBT1: JC SUBT2 </p><p> INC 69H ;
62、 (69H)為奇數(shù),LED顯示“Erro”</p><p> MOV A,69H ; 再顯示具體速度的值</p><p> JB ACC.0 ERRO ; (69H)為偶數(shù),LED顯示“Sudu” </p><p> MOV GEWEI,#05H ;
63、 再顯示具體速度的值</p><p> MOV SHIWEI,#0BH</p><p> MOV BAIWEI,#0DH</p><p> MOV QIANWEI,#0BH</p><p> MOV XIAOSHU,#0BH</p><p> ACALL DIS11</p
64、><p> SJMP FS12</p><p> ERRO: MOV GEWEI,#0CH</p><p> MOV SHIWEI,#OBH</p><p> MOV BAIWEI,#0BH</p><p> MOV QIANWEI,#0DH</p><p> A
65、CALL DIS21</p><p> ??;“Erro”或“sudu”和具體速度大值交替閃爍顯示</p><p> FS12: MOV R2,#01H ; </p><p> CLR P1.5</p><p> ACALL DELAY2</p><p> SETB
66、P1.5</p><p> ACALL DELAY2</p><p> DJNZ R2,FLASH</p><p> SUBT2: MOV TH1,#0B1H</p><p> MOV TL1,#0DFH</p><p><b> SETB TR1</b></p&g
67、t;<p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> RETI</b></p><p> //里程顯示控制子程序//</p><p> DISPLAYS:CLR P1.6&l
68、t;/p><p> ACALL JULI</p><p> MOV A,QSHU1</p><p> CJNE A,#02H,DIAOYONG</p><p> AJMP PANDY</p><p> DIAOYONG:JNC PANDY1</p><p> AJMP BU
69、DY</p><p> PANDY: MOV A,QSHU0</p><p> CJNE A,#2CH,PANDY2</p><p> AJMP PANDY1</p><p> PANDY2: JC BUDY</p><p> PANDY1: MOV R6,#00h</p>
70、;<p> MOV R7,#0AH </p><p> ACALL JULI2</p><p> ACALL BCDC</p><p> ACALL FENKAI</p><p> ACALL DIS21</p><p> ACALL DELAY1</p><p>
71、<b> RET</b></p><p> BUDY: MOV R6,#00h</p><p> MOV R7,#01h</p><p> ACALL JULI2 </p><p> ACALL BCDC</p><p> ACALL FENKAI</p>
72、<p> ACALL DIS11</p><p> ACALL DELAY1</p><p> ACALL DELAY1</p><p><b> RET</b></p><p> //速度顯示控制子程序//</p><p> DISPLAYV:SETB P1.6</
73、p><p> ACALL SUDU</p><p> ACALL BCDC</p><p> ACALL FENKAI</p><p> MOV XIAOSHU,#01H</p><p><b> RET</b></p><p> //處理子程序1//</
74、p><p> JULI: PUSH PSW</p><p><b> PUSH ACC</b></p><p> MOV R2,QSHU1</p><p> MOV R3,QSHU0</p><p><b> JNZ GAO</b></p&g
75、t;<p> MOV A,QSHU0</p><p> CJNE A,#06H,PAN1</p><p> AJMP PAN2</p><p> PAN1: JNC PAN2</p><p> AJMP CZ707</p><p> PAN2: MOV A,QSH
76、U0</p><p> CJNE A,#38H,PAN3</p><p><b> AJMP GAO</b></p><p> PAN3: JC CZB4</p><p> GAO: AJMP CZ12</p><p> CZ707: MOV R6,#0
77、7H</p><p> MOV R7,#07H</p><p> MOV XIAOSHU,#01H</p><p> AJMP KAISHI</p><p> CZB4: MOV R6,#00H</p><p> MOV R7,#0B4H</p><p> M
78、OV XIAOSHU,#02H</p><p> AJMP KAISHI</p><p> CZ12: MOV R6,#00H</p><p> MOV R7,#00H</p><p> MOV XIAOSHU,#03H </p><p> KAISHI為兩字節(jié)乘兩字節(jié)程序段</
79、p><p> KAISHI: MOV A,R3</p><p> MOV B,R7</p><p><b> MUL AB</b></p><p> MOV R4,B</p><p> MOV R5,B</p><p> MOV A,R3&
80、lt;/p><p> MOV B,R6</p><p><b> MUL AAB</b></p><p> ADD A,R4 </p><p> MOV R4,A</p><p><b> CLR A</b></p><p
81、><b> ADDC A,B</b></p><p> MOV B,R7</p><p><b> MUL AB </b></p><p> ADD A,R4</p><p> MOV R4,A</p><p> MOV A,R3<
82、;/p><p><b> ADDC A,B</b></p><p> MOV R3,A</p><p><b> CLR A</b></p><p><b> RLC A</b></p><p> XCH A,R2</p&g
83、t;<p> MOV B,R6</p><p><b> MUL AB</b></p><p> ADD A,R3</p><p> MOV R3,A</p><p> MOV A,R2</p><p><b> ADDC A,B</
84、b></p><p> MOV 50H,R2</p><p> MOV 51H,R3</p><p> MOV 52H,R4</p><p> MOV 53H,R5</p><p><b> POP PSW</b></p><p><
85、;b> POP ACC</b></p><p><b> RET</b></p><p> //處理里程子程序2//</p><p> Juli2: PUSH PSW</p><p><b> PUSH ACC</b></p><p>
86、 MOV R2,50H</p><p> MOV R3,51H</p><p> MOV R4,52H</p><p> MOV R5,53H</p><p> DIVD11: CLR C</p><p> MOV A,R3</p><p> SUBB
87、A,R7</p><p> MOV A,R2</p><p> SUBB A,R6</p><p> JC DVD11</p><p><b> SETB OV </b></p><p><b> RET</b></p><p>
88、; DVD111: MOV B,#10H</p><p> DVD211: CLR C</p><p> MOV A,R5</p><p> MOV R5,A</p><p> MOV A,R4</p><p><b> RLC A</b></p>
89、;<p> MOV R4,A</p><p> MOV A,R3</p><p><b> RLC A</b></p><p> MOV R3,A</p><p> XCH A,R2</p><p> XCH A,R2</p><
90、;p> MOV F0,C</p><p><b> CLR C</b></p><p> SUBB A,R7</p><p> MOV R1,A</p><p> MOV A,R2</p><p> SUBB A,R6</p><p>
91、 ANL C,/F0</p><p> JC DVD311</p><p> MOV R2,A</p><p> MOV A,R1</p><p> MOV R3,A</p><p><b> INC R5</b></p><p>
92、DVD311: DJNZ B,DVD211</p><p> MOV A,R4</p><p> MOV R2,A</p><p> MOV A,R5</p><p> MOV R3,A</p><p><b> CLR OV</b></p><
93、;p> MOV 30H,R2</p><p> MOV 31H,R3</p><p><b> POP ACC</b></p><p><b> POP PSW</b></p><p><b> NOP</b></p><p&
94、gt;<b> RET</b></p><p> //十六進(jìn)制轉(zhuǎn)換乘BCD子程序//</p><p> BCDC: PUSH ACC</p><p><b> PUSH PSW</b></p><p> MOV R6,30H</p><p> MOV
95、 R7,31H</p><p><b> CLR A</b></p><p> MOV R3,A</p><p> MOV R4,A</p><p> MOV R5,A</p><p> MOV R2,#10H</p><p> HB32
96、2: MOV A,R7</p><p><b> RLC A</b></p><p> MOV R7,A</p><p> MOV A,R6</p><p><b> RLC A</b></p><p> MOV R6,A</p&g
97、t;<p> MOV A,R5</p><p><b> DA A</b></p><p> MOV R5,A</p><p> MOV A,R4</p><p> ADDC A,R4</p><p><b> DA A</b&g
98、t;</p><p> MOV R4,A</p><p> MOV A,R3</p><p> ADDC A,R3</p><p> DJNZ R2,HB322</p><p> MOV 20H,R3</p><p> MOV 21H,R4</p>
99、<p> MOV 22H,R5</p><p><b> POP PSW</b></p><p><b> POP ACC</b></p><p><b> NOP </b></p><p><b> RET</b><
100、;/p><p> //算速度十六進(jìn)制值子程序//</p><p> SUDU: PUSH PSW</p><p><b> PUSH ACC</b></p><p> JB P1.2,KM</p><p> SJMP JUBU</p><p> K
101、M: MOV R2,#00H</p><p> MOV R3,#04H</p><p> MOV R4,#0F1H</p><p> MOV R5,#0A0H</p><p> CLR P1.4</p><p> SJMP QUANJU</p><p>
102、 JUBU: MOV R2,#00H</p><p> MOV R3,#001H</p><p> MOV R4,#05FH</p><p> MOV R5,#090H</p><p> CLR P1.4</p><p> QUANJU: MOV A,6BH</p>
103、;<p> JB P1.1,XIAN10</p><p> CJNE A,#0BH,BUXIANG</p><p><b> SJMP JC0</b></p><p> XIAN10: CJNE A,#09H,BUXIANG</p><p><b> SJMP JC0&l
104、t;/b></p><p> BUXIANG: JC JC0</p><p> SJMP BUJG</p><p> JC0: MOV A,6AH </p><p> CJNE A,#00H,BUJG</p><p> AJMP JIANGGAO</p>&
105、lt;p> JIANGGAO: CLR P1.7</p><p> MOV GEWEI,#0CH</p><p> MOV SHIWEI,#0BH</p><p> MOV BAIWEI,#0BH</p><p> MOV QIANWEI,#0DH</p><p> ACALL DI
106、S21</p><p> ACALL DELAY1</p><p> MOV GEWEI,#0EH</p><p> MOV SHIIWEI, #0EH</p><p> MOV BAIWEI,#0EH</p><p> MOV QIANWEI,#0EH</p><p>
107、; ACALL DIS21</p><p> ACALL DELAY1</p><p> SJMP QUANJU</p><p> BUJU: MOV A,6BH</p><p> CJNE A,#0AFH,LING0</p><p> AJMP LING1</p><p
108、> LING0: JC LING1</p><p> AJMP BUJING</p><p> LING1: MOV A,6AH</p><p> CJNE A,#00J,BULING0</p><p> AJMP BULING1</p><p> BULING0: JC
109、 BULING1</p><p> BULING: MOV SJIAN0,#00H</p><p> MOV SJIAN1,#00H</p><p><b> RET</b></p><p> //4字節(jié)除2字節(jié)除法子程序//</p><p> BULING1: MOV R
110、6,6AH</p><p> MOV R7,6BH</p><p> DIVD: CLR C</p><p> MOV A,R3</p><p> SUBB A,R7</p><p> MOV A,R2</p><p> SUBB A,R6</p>
111、;<p> JC DVD1</p><p><b> SETB OV </b></p><p><b> RET</b></p><p> DVD1: MOV B,#10H</p><p> DVD2: CLR C</p><p
112、> MOV A,R5</p><p><b> RLC A</b></p><p> MOV R5,A</p><p> MOV A,A4</p><p><b> RLC A</b></p><p> MOV R4,A</p&
113、gt;<p> MOV A,R3</p><p><b> RLC A</b></p><p> MOV R3,A</p><p> XCH A,R2</p><p> XCH A,R2</p><p> MOV F0,C</p>&
114、lt;p><b> CLR C</b></p><p> SUBB A,R7</p><p> MOV R1,A</p><p> MOV A,R2</p><p> SUBB A,R6</p><p> ANL C,/F0</p><p&
115、gt; JC DVD3</p><p> MOV R2,A</p><p> MOV A,R1</p><p> MOV R3,A</p><p><b> INC R5</b></p><p> DVD3: DJNZ B,DVD2</p>
116、<p> MOV A,R4</p><p> MOV R2,A</p><p> MOV A,R5</p><p> MOV R3,A</p><p><b> CLR OV</b></p><p> MOV 30H,R2</p><
117、;p> MOV 31H,R3</p><p><b> POP ACC</b></p><p><b> POP PSW</b></p><p> SETB P1.7</p><p><b> NOP</b></p><p>
118、;<b> RET</b></p><p> //壓縮BCD碼轉(zhuǎn)乘非壓縮BCD碼子程序//</p><p> FENKAI: MOV R7,#02H</p><p> MOV R0,#GEWEI</p><p> MOV R1,#21H</p><p> FENKAI1:
119、 MOV A,@R1</p><p> ANL A,#0F0H</p><p><b> SWAP A</b></p><p> MOV @R0,A</p><p><b> INC R0</b></p><p> MOV A,@R1</
120、p><p> ANL A,#0FH</p><p> MOV @R0,A</p><p><b> INC R0</b></p><p><b> INC R1</b></p><p> DJNZ R7,FENKAI1</p>
121、<p><b> RET</b></p><p><b> //延時子程序//</b></p><p> DELAY1: MOV R6,#0FFH</p><p> DEL: MOV R7,#0FFH</p><p> DJNZ R7,$</p>
122、<p> DJNZ R6,DE;</p><p><b> RET</b></p><p> DELAY2: MOV R6,#02FH</p><p> MOV R7,#0FFH</p><p> DJNZ R7,$</p><p> DJNZ R
123、6,DEL2</p><p><b> RET</b></p><p> //4位串行靜態(tài)顯示子程序//</p><p> DIS21: MOV R7,#04H</p><p> MOV R0,#GEWEI</p><p> LED1_21: MOV A,@R0<
124、/p><p> MOV DPTR,#DATA_7SEG22</p><p> LED1_221: MOVC A,@A+DPTR</p><p> MOV SBUF,A</p><p> JNB TI,$</p><p><b> CLR TI</b></p>
125、;<p><b> INC R0</b></p><p> DJNZ R7,LED1_21</p><p><b> RET</b></p><p> DATA_7SEG22</p><p><b> DB</b></p><
126、;p> 081H,0EDH,043H,049H,02DH,019H,011H,0CDH,001H,009H,07FH,077H,013H,071,0FFH</p><p> ?。? 1 2 3 4 5 6 7 8 9 - r o E 空</p><p><b> 顯</b></p><p> ?。? = =
127、 = = = = = = = = = = = = = = = = = = = = = =</p><p> DIS11: MOV R7,#04H</p><p> MOV R6,XIAOSHU</p><p> MOV R0,#GEWEI</p><p> LED1_11:MOV A,@R0</p>&
128、lt;p> DJNZ R6,LED6</p><p> MOV DPTR,#DATA_7SEG3</p><p> SJMP LED1_31</p><p> LED6: MOV DPTR,#DATA_7SEG2</p><p> LED1_31: MOVC A,@A+DPTR</p><p
129、> MOV SBUF,A</p><p> JNB TI,$</p><p><b> CLR TI</b></p><p><b> INC R0</b></p><p> DJNZ R7,LED1_11</p><p><b&
130、gt; RET</b></p><p> DATA_7SEG2</p><p> DB 081H,0EDH,043H,049H,02DH,019,011H,0CDH,001H,009H,07FH,0A1H,0R9H,061H</p><p> ?。?0 1 2 3 4 5 6 7 8 9 - U
溫馨提示
- 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è)論文】
- 自行車?yán)锍瘫淼脑O(shè)計【文獻(xiàn)綜述】
- 自行車?yán)锍瘫淼脑O(shè)計【開題報告】
- 畢業(yè)論文--自行車?yán)锍瘫淼脑O(shè)計
- 自行車數(shù)字里程表.docx
- 單片機(jī)課程設(shè)計--自行車?yán)锍田@示
- 測試課程設(shè)計--自行車?yán)锍虦y量儀
- 自行車?yán)锍碳八俣扔嬚n程設(shè)計
- 自行車?yán)锍瘫碓O(shè)計【畢業(yè)論文+文獻(xiàn)綜述+開題報告】
- 自行車?yán)锍趟俣扔嫷脑O(shè)計
- 基于單片機(jī)的自行車?yán)锍瘫砑八俣葍x的畢業(yè)設(shè)計
- 基于單片機(jī)的多功能自行車?yán)锍瘫淼脑O(shè)計_畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計----光電式自行車速度里程表設(shè)計
- 基于單片機(jī)的自行車速度及里程表設(shè)計
- 光電式自行車速度里程表設(shè)計(the design of photoelectric bicycle odometer)
評論
0/150
提交評論