自行車?yán)锍瘫碓O(shè)計(jì)與總結(jié)報(bào)告Word_第1頁(yè)
自行車?yán)锍瘫碓O(shè)計(jì)與總結(jié)報(bào)告Word_第2頁(yè)
自行車?yán)锍瘫碓O(shè)計(jì)與總結(jié)報(bào)告Word_第3頁(yè)
自行車?yán)锍瘫碓O(shè)計(jì)與總結(jié)報(bào)告Word_第4頁(yè)
自行車?yán)锍瘫碓O(shè)計(jì)與總結(jié)報(bào)告Word_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、自行車?yán)锍瘫碓O(shè)計(jì)論文作者:梁健星20042303005物理與電信工程學(xué)院04級(jí)8班電子信息科學(xué)與技術(shù)(非師范)指導(dǎo)老師:鄭永駒【摘要】以at89s52型單片機(jī)為核心,實(shí)時(shí)測(cè)量并顯示自行車行駛過(guò)程中的各項(xiàng)參數(shù)。【關(guān)鍵詞】單片機(jī)lcd干簧管累計(jì)里程速度【目錄】一、作品要求2二、方案設(shè)計(jì)與討論2三、功能描述3四、操作說(shuō)明4五、結(jié)構(gòu)框圖4六、具體硬件電路及工作原理5七、相關(guān)元器件及其參數(shù)6八、系統(tǒng)調(diào)試過(guò)程簡(jiǎn)述6九、制作總結(jié)及體會(huì)7附錄、程序流程圖及程序代碼8【作品要求】設(shè)計(jì)一個(gè)可以適用自行車的輕便、省電、全天候野外使用的自行車?yán)锍瘫?。?) 基計(jì)要求總里程999.99km;可以輪流顯示或選擇顯示(用十

2、進(jìn)制數(shù)):里程當(dāng)前行駛里程;速度當(dāng)前平均速度 km/h;最大速度本次行駛中的最大速度;時(shí)間當(dāng)前行駛累計(jì)時(shí)間,時(shí)、分、秒;電源不高于5v,體積小、結(jié)構(gòu)可靠,便于安裝及使用。(2) 發(fā)揮部分可以顯示最大加速度;用可編程器件實(shí)現(xiàn);用單片機(jī)實(shí)現(xiàn)【方案設(shè)計(jì)與討論】1. 速度測(cè)量原理測(cè)量自行車的速度的原理有兩種:1) 測(cè)量一定時(shí)間間隔t1里自行車車輪轉(zhuǎn)過(guò)的圈數(shù)qs。假設(shè)車輪周長(zhǎng)為tc,則速度v=tc*qs/t12) 測(cè)量自行車車輪轉(zhuǎn)過(guò)一圈的時(shí)間t2,則速度v=tc/t2本里程表是根據(jù)原理2計(jì)算速度的。2. 傳感器的選擇1) 紅外對(duì)管。把紅外對(duì)管分別安裝在自行車車輪的兩側(cè),當(dāng)車輪轉(zhuǎn)動(dòng)時(shí),輻條會(huì)阻擋紅外對(duì)管的

3、光路,接收管輸出低電平,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等。紅外對(duì)管的優(yōu)點(diǎn)是測(cè)量精度高,缺點(diǎn)是安裝比較復(fù)雜和容易受外來(lái)光線、灰塵等的影響。2) 開(kāi)關(guān)型霍爾傳感器?;魻杺鞲衅魇抢没魻栃?yīng)把磁輸入信號(hào)轉(zhuǎn)換成電信號(hào)的器件。把開(kāi)關(guān)型霍爾傳感器安裝在自行車貼近車輪的支架上,磁鋼安裝在輻條上,當(dāng)磁鋼靠近霍爾傳感器的時(shí)候,傳感器輸出一個(gè)無(wú)抖動(dòng)的低電平,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等。霍爾傳感器的優(yōu)點(diǎn)是穩(wěn)定和安裝簡(jiǎn)易,缺點(diǎn)是成本較高。3) 干簧管。干簧管是一種磁敏的有觸點(diǎn)無(wú)源電子開(kāi)關(guān)元件,應(yīng)用在里程表上的原理與開(kāi)關(guān)型霍爾傳感器類似,把干簧管安裝在自行車貼近車輪的支架上,磁鋼安裝在輻條上,當(dāng)磁鋼靠近霍爾傳

4、感器的時(shí)候,干簧管閉合,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等。干簧管的優(yōu)點(diǎn)是成本低廉和安裝簡(jiǎn)易,缺點(diǎn)是比較脆弱和不夠穩(wěn)定。本里程表選用干簧管作為傳感器。給干簧管套上廢棄筆桿,可克服其脆弱的缺點(diǎn);軟件防抖可克服其不夠穩(wěn)定的缺點(diǎn)。3. 顯示模塊的選擇1) 動(dòng)態(tài)掃描led數(shù)碼管顯示。里程表的顯示內(nèi)容以數(shù)字為主,利用led數(shù)碼管可基本滿足使用要求,且成本較低。但是用動(dòng)態(tài)掃描的方式驅(qū)動(dòng)數(shù)碼管,亮度太低,在陽(yáng)光下幾乎看不見(jiàn)顯示內(nèi)容,失去使用價(jià)值。2) 串行靜態(tài)led數(shù)碼管顯示。把單片機(jī)的串行口設(shè)置為方式0(同步移位寄存器),輸出顯示信息,可實(shí)現(xiàn)led數(shù)碼管的靜態(tài)顯示,其亮度令人滿意。但由于要使用74hc16

5、4/74ls164串并轉(zhuǎn)換芯片驅(qū)動(dòng)led數(shù)碼管,因此會(huì)帶來(lái)體積大、成本高、功耗高等的缺點(diǎn)。3) lcd液晶顯示模塊。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。本里程表使用1602 lcd作為顯示模塊。【功能描述】以at89s52型單片機(jī)為核心,實(shí)時(shí)測(cè)量并顯示自行車行駛過(guò)程中的各項(xiàng)參數(shù),包括當(dāng)前行駛累計(jì)時(shí)間、當(dāng)前行駛累計(jì)里程(m/km自動(dòng)調(diào)整)、當(dāng)前速度(km/h)、最大速度(km/h)、平均速度(km/h)、加速度(m/s2)、當(dāng)前時(shí)間等,各參數(shù)分屏顯示??筛淖孕熊囕喬ブ睆?,適應(yīng)不同的自行車,通用性好。本里程表具有

6、時(shí)鐘功能,不安裝在自行車上時(shí)也可作為時(shí)鐘使用,實(shí)用性高。【操作說(shuō)明】里程表板面如上圖所示,包括電源2pin排針、干簧管3pin排針、液晶顯示器、液晶背光開(kāi)關(guān)、電源開(kāi)關(guān)、電源led指示燈、功能按鈕sw1-sw5、reset按鈕。接通電源或按reset后,顯示歡迎畫(huà)面:digitalbikemeterwelcome.2秒后進(jìn)入時(shí)鐘設(shè)置畫(huà)面: set time00:00:00按sw1-sw3調(diào)整時(shí)鐘后,按sw4確認(rèn)。接著進(jìn)入自行車輪胎半徑設(shè)置畫(huà)面:set bike tire l= 55cm默認(rèn)設(shè)置為55cm,對(duì)應(yīng)22英寸自行車輪胎半徑。附:輪胎直徑大小英寸與厘米對(duì)照表英寸16”18”20”22”24

7、”26”28”28.5”厘米40cm45cm50cm55cm61cm66cm71cm72cm按sw1、sw2調(diào)整輪胎直徑后,按sw4確認(rèn),里程表開(kāi)始工作。各項(xiàng)參數(shù)分成四屏選擇顯示,按動(dòng)sw5(disp)按以下次序進(jìn)行切換:s 000.0mtime 00:00:00v 00.00km/hvm 000.00km/hva 00.00km/ha 0.00m/s2time now00:00:00s::當(dāng)前行駛累計(jì)里程(單位自動(dòng)調(diào)整)s<1000m,格式xxx.x m,s>1000m,格式xxx.xx km)time:當(dāng)前行駛累計(jì)時(shí)間v: 當(dāng)前速度(km/h)vm: 最大速度(km/h)va:

8、 平均速度(km/h)a: 加速度(m/s2)time now當(dāng)前時(shí)間【結(jié)構(gòu)框圖】lcd顯示蜂鳴器4*aa電池組開(kāi)關(guān)功能選擇干簧管89s52單片機(jī)系統(tǒng)由干簧管、設(shè)置選擇模塊、顯示模塊、蜂鳴器模塊、供電模塊和單片機(jī)小系統(tǒng)構(gòu)成。由設(shè)置選擇模塊選擇顯示模式后,單片機(jī)實(shí)時(shí)采集、處理后顯示?!揪唧w硬件電路及工作原理】里程、速度、加速度等都是由干簧管測(cè)量。已知自行車輪胎的直徑tl,輪子每轉(zhuǎn)動(dòng)一圈,安裝在車輪輻條上的磁鋼接近干簧管一次,干簧管閉合,送一個(gè)下降沿信號(hào)給單片機(jī)的外部中斷0,產(chǎn)生一次中斷,圈數(shù)qs加1。兩個(gè)相鄰的下降沿信號(hào)的時(shí)間由單片機(jī)定時(shí)器1計(jì)時(shí)(設(shè)為ssj),那么計(jì)算累計(jì)里程s和當(dāng)前速度v的公

9、式為:s=tl*3.14*qs v=tl*3.14/ssj若速度大于28.8km/h(8m/s)則p2.4輸出低電平,蜂鳴器報(bào)警,提示速度過(guò)大。處理速度數(shù)據(jù)時(shí)同時(shí)刷新最大速度及計(jì)算vm、平均速度va、加速度a。單片機(jī)定時(shí)器0定時(shí)時(shí)間為50ms,每20次刷新系統(tǒng)時(shí)鐘及計(jì)算累計(jì)行駛時(shí)間。【相關(guān)元器件及其簡(jiǎn)介】(1)at89s52單片機(jī)簡(jiǎn)介at89s52是一種低功耗、高性能cmos 8位微控制器,具有8k 在系統(tǒng)可編程flash 存儲(chǔ)器。使用atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80c51 產(chǎn)品指令和引腳完全兼容。片上flash允許程序存儲(chǔ)器在系

10、統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位cpu 和在系統(tǒng)可編程flash,使得at89s52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。at89s52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)flash,256字節(jié)ram,32 位i/o 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,at89s52 可降至0hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,cpu停止工作,允許ram、定時(shí)器/計(jì)數(shù)器、串口

11、、中斷繼續(xù)工作。掉電保護(hù)方式下,ram內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。(2)1602lcd液晶顯示模塊液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。本里程表使用常見(jiàn)的1602字符型lcd模塊。1602可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線d0-d7,和rs、r/w、e三個(gè)控制端口,工作電壓為5v,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光。(3)干簧管干式舌簧管簡(jiǎn)稱干簧管,是利用磁場(chǎng)信號(hào)來(lái)控制的一種線路開(kāi)關(guān)元件。干式舌簧管以其結(jié)構(gòu)固有的特點(diǎn),目前已被廣泛應(yīng)用到各種自動(dòng)化和微型化的自動(dòng)控制零件

12、及通訊檢測(cè)設(shè)備中,作為靈敏而快速的開(kāi)閉及轉(zhuǎn)換電路的執(zhí)行工件。在本里程表中,干簧管安裝在自行車貼近輻條的支架上,磁鋼安裝在輻條上。當(dāng)磁鋼遠(yuǎn)離干簧管時(shí),干簧管斷開(kāi),單片機(jī)外部中斷0(p3.2)保持高電平。當(dāng)磁鋼靠近干簧管時(shí),干簧管閉合,送一個(gè)下降沿信號(hào)給單片機(jī)的外部中斷0,產(chǎn)生一次中斷?!鞠到y(tǒng)調(diào)試過(guò)程簡(jiǎn)述】自行車?yán)锍瘫淼脑肀容^簡(jiǎn)單,我編好一個(gè)比較簡(jiǎn)單但是核心的程序(只計(jì)算里程和速度)在keil c上仿真,經(jīng)過(guò)短暫的調(diào)試就成功了,這證明我關(guān)于里程表的最核心的想法是正確的,這給了我后面的制作和調(diào)試很大的信心。緊接著是在單片機(jī)上搭建硬件,重點(diǎn)是按鍵防抖動(dòng)。我的模式選擇按鈕是接到單片機(jī)的外部中斷的,一開(kāi)

13、始我按照普通按鈕的防抖動(dòng)的方法測(cè)試,沒(méi)有成功。于是在中斷服務(wù)程序的開(kāi)始關(guān)閉中斷,末尾再開(kāi)中斷,還是不行。后來(lái)在中斷服務(wù)程序的末尾加了這樣一句:ie1=0;其作用就是清除中斷標(biāo)志。因?yàn)榧词箚纹瑱C(jī)的外部中斷是關(guān)閉的,但只要在中斷服務(wù)程序執(zhí)行期間按鍵抖動(dòng),中斷標(biāo)志又會(huì)置1,若沒(méi)有清除中斷標(biāo)志,退出中斷服務(wù)程序后又會(huì)執(zhí)行一次服務(wù)程序,這樣按一次按鍵就會(huì)執(zhí)行兩次中斷服務(wù)程序。我的里程表的最初版本是利用串行l(wèi)ed數(shù)碼管顯示作為顯示模塊的(簡(jiǎn)介請(qǐng)參閱附錄二)。但制成后發(fā)現(xiàn)體積太大,而且功耗比較高,不適合用于要求小巧、堅(jiān)固、耐用的自行車?yán)锍瘫砩稀:髞?lái)改用1602lcd,里程表體積大幅度減小,經(jīng)測(cè)試,背光開(kāi)啟時(shí)

14、電流為45ma左右,背光關(guān)閉時(shí)為25ma左右,2500mah aa×4的電池組供電最多可達(dá)100小時(shí),可以滿足使用要求?!局谱骺偨Y(jié)及體會(huì)】這次制作的自行車?yán)锍瘫硎俏易约旱谝患嬲饬x上成功的電子制作作品。雖然以前有空也會(huì)制作一些小制作,但是大多都不能令自己滿意。這個(gè)里程表不能說(shuō)完全具有“自主知識(shí)產(chǎn)權(quán)”,但它絕對(duì)是獨(dú)一無(wú)二的。初始設(shè)計(jì)時(shí)比較多地模仿一個(gè)現(xiàn)成的方案,但是在制作過(guò)程中不斷修改和完善。現(xiàn)在的成品與那個(gè)方案相比,已是面目全非,又或者說(shuō),相比它改進(jìn)了很多。正如前面也提及了,我的里程表的第一個(gè)版本是用串行靜態(tài)led數(shù)碼管顯示的。雖然現(xiàn)在看來(lái),這一版本比較粗陋,但是它也傾注了我大量的

15、心血,在制作過(guò)程中也解決了一些重大的問(wèn)題。譬如核心的計(jì)算公式、按鍵防抖等。制作這一版本的作品累計(jì)到的經(jīng)驗(yàn)令我更有信心、效率更高地設(shè)計(jì)制作現(xiàn)在的版本。這次科技制作中我的最深體會(huì)是:不能忽視小問(wèn)題。耗時(shí)最長(zhǎng)的不是編寫(xiě)核心計(jì)算公式,而是如何消除“模式選擇按鍵”抖動(dòng)的問(wèn)題。這一問(wèn)題困擾了我兩天,是在某一天晚上剛?cè)胨?、半睡半醒間忽然想起我好像忽略了中斷標(biāo)志。第二天修改程序后終于成功了,完滿解決了這個(gè)“大問(wèn)題”。另外初期也忽略了體積、功耗等的問(wèn)題,選用串行靜態(tài)led顯示,制成后調(diào)試時(shí)發(fā)現(xiàn)功耗太大了,失去了使用價(jià)值。這次科技制作可以評(píng)為優(yōu)秀,要衷心感謝我的指導(dǎo)老師鄭永駒老師的悉心指導(dǎo)。附錄程序流程圖及程序代

16、碼開(kāi)始顯示歡迎信息檢測(cè)按鈕處理時(shí)鐘設(shè)置刷新累計(jì)行駛時(shí)間及時(shí)鐘初始化設(shè)置特殊寄存器、置定時(shí)常數(shù)、開(kāi)中斷、清屏等等待中斷檢測(cè)按鈕處理直徑設(shè)置刷新里程、速度等改變屏幕顯示內(nèi)容int0int1t0程序代碼#include<reg52.h>#define uchar unsigned char/*引腳定義:p20=sw1時(shí)鐘設(shè)置時(shí)更改“時(shí)”,直徑設(shè)置時(shí)更改十位p21=sw2 時(shí)鐘設(shè)置時(shí)更改“分”的十位,直徑設(shè)置時(shí)更改個(gè)位p22=sw3 時(shí)鐘設(shè)置時(shí)更改“分”的個(gè)位p23=enter確認(rèn)更改設(shè)置p32=disp 正常工作時(shí)更改顯示模式*/sbit p20=p20;sbit p21=p21;sbi

17、t p22=p22;sbit p23=p23;sbit p32=p32;sbit rs=p37;sbit rw=p36;sbit e=p35;sbit busy=p17;/*變量定義:i 延時(shí)變量qsls 圈數(shù)臨時(shí)變量,用于判斷里程顯示選用m還是km作為單位qs 圈數(shù)sj 累計(jì)行駛時(shí)間,單位為秒totallc累計(jì)里程pjsd 平均速度ssji 定時(shí)器t120ms中斷次數(shù),用于計(jì)算速度等sji 本次速度對(duì)應(yīng)的20ms中斷次數(shù)sjiold 上次速度對(duì)應(yīng)的20ms中斷次數(shù)aa 加速度sd2 當(dāng)前速度mxsd 用于更新最大速度mxsd2 最大速度對(duì)應(yīng)的20ms次數(shù)tc 輪胎周長(zhǎng)*s 字符串顯示子程序字

18、符指針line 字符串顯示子程序列數(shù)row 字符串顯示子程序行數(shù)com 寫(xiě)控制字dat 顯示碼字gw 累計(jì)里程、當(dāng)前速度、累計(jì)時(shí)間、最大速度、平均速度、加速度的個(gè)位sw 累計(jì)里程、當(dāng)前速度、累計(jì)時(shí)間、最大速度、平均速度、加速度的十位bw 累計(jì)里程、當(dāng)前速度、累計(jì)時(shí)間、最大速度、平均速度、加速度的百位qw 累計(jì)里程、當(dāng)前速度、累計(jì)時(shí)間、最大速度、平均速度、加速度的千位ww 累計(jì)里程、累計(jì)時(shí)間的萬(wàn)位sww 累計(jì)里程、累計(jì)時(shí)間的十萬(wàn)位ssj 定時(shí)器t0 50ms中斷次數(shù),每20次sj加1cgw 當(dāng)前時(shí)間(時(shí)鐘)的個(gè)位csw 當(dāng)前時(shí)間(時(shí)鐘)的十位cbw 當(dāng)前時(shí)間(時(shí)鐘)的百位cqw 當(dāng)前時(shí)間(時(shí)鐘)

19、的千位cww 當(dāng)前時(shí)間(時(shí)鐘)的萬(wàn)位csww 當(dāng)前時(shí)間(時(shí)鐘)的十萬(wàn)位cww2 當(dāng)前時(shí)間(時(shí)鐘)的輔助萬(wàn)位mode 顯示模式tr1 輪胎設(shè)置變量1(十位)tr2 輪胎設(shè)置變量2(個(gè)位)*/unsigned int i,qsls;unsigned long qs,sj,totallc,pjsd,ssji,sji,sjiold,aa,sd2,mxsd,mxsd2,tc;uchar *s,line,row,com,dat,gw,sw,bw,qw,ww,sww,ssj,cgw,csw,cbw,cqw,cww,csww,cww2,mode,tr1,tr2;/*void wait()* 該函數(shù)的作用是對(duì)l

20、cd進(jìn)行檢測(cè),看lcd是否處于忙的狀態(tài).當(dāng)bflag=1時(shí)表示忙,此時(shí)不可以向lcd進(jìn)行讀寫(xiě)操作.而當(dāng)busy=0時(shí),表示可以向它讀寫(xiě)數(shù)據(jù).*/void wait()p1=0xff;rw=1; rs=0; doe=0;e=1;while(busy=1);/*void dispone()* 該函數(shù)的作用是向lcd寫(xiě)入數(shù)據(jù)并顯示出來(lái).*/void dispone(dat)p1=dat;rw=0; rs=1; e=0; e=1; wait();/*void wrcom()* 該函數(shù)的作用是向lcd寫(xiě)入控制字.*/void wrcom(com)p1=com;rw=0; rs=0; e=0; e=1;

21、wait();/*void init_lcd()* 該函數(shù)的作用是初始化lcd.*/void init_lcd()wrcom(0x01); wrcom(0x06); wrcom(0x38); wrcom(0x0c); /*void dispmore()* 該函數(shù)的作用是向lcd寫(xiě)入一串?dāng)?shù)據(jù),并把數(shù)據(jù)串顯示出來(lái).*/void dispmore(line,row,uchar dat,i) /格式為dispmore(第幾行,第幾列,開(kāi)始要顯示的字符地址,顯示幾個(gè)字符);uchar com;s=dat;if(line=1) com=0x80+row-1; wrcom(com);while(i-)!=0

22、&&com<=0x8f) dispone(*s); com+;s+;else com=0xc0+row-1; wrcom(com);while(i-)!=0&&com<=0xcf) dispone(*s);com+;s+;/*void ttimep()*累計(jì)行駛時(shí)間數(shù)據(jù)處理及顯示子程序*/void ttimep()sww=sj/36000;ww=sj%36000/3600;qw=sj%3600/600;bw=sj%600/60;sw=sj%60/10;gw=sj%10;wrcom(0xc1); dispone('t'); dispon

23、e('i'); dispone('m'); dispone('e');dispone(' ');dispone(' '); dispone(sww+0x30);dispone(ww+0x30);dispone(':'); dispone(qw+0x30);dispone(bw+0x30);dispone(':'); dispone(sw+0x30);dispone(gw+0x30);/*void timer1()*t1中斷服務(wù)子程序,每20ms中斷一次,ssji加1,根據(jù)公式s=tc

24、*qs和v=tc/ssj計(jì)算累計(jì)里程和*/void timer1() interrupt 3ssji+;th1=0xb1;tl1=0xdf;/*void lcp()*累計(jì)里程數(shù)據(jù)處理和顯示子程序,若<999m則單位為m,若>999m則單位為km*/ void lcp() qsls=100000/tc;if(qs>qsls)sww=qs*tc/10000000;ww=qs*tc%10000000/1000000;qw=qs*tc%1000000/100000;bw=qs*tc%10000000/10000;sw=qs*tc%10000/1000;wrcom(0x81);disp

25、one('s');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(sww+0x30);dispone(ww+0x30);dispone(qw+0x30);dispone('.');dispone(bw+0x30);dispone(sw+0x30);dispone(' ');dispone('k');dispone('m');elseqw=qs*tc%100000/10000;bw=

26、qs*tc%10000/1000;sw=qs*tc%1000/100;gw=qs*tc%100/10;wrcom(0x81); dispone('s'); dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone(sw+0x30);dispone('.');dispone(gw+0x30)

27、;dispone(' ');dispone('m');/*void pjsdp()*平均速度數(shù)據(jù)處理及顯示子程序*/void pjsdp() pjsd=qs*tc*36/sj;qw=pjsd%100000/10000;bw=pjsd%10000/1000;sw=pjsd%1000/100;gw=pjsd%100/10;wrcom(0x82);dispone('v');dispone('a');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+

28、0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('k');dispone('m');dispone('/');dispone('h');/*void sdp()*當(dāng)前速度數(shù)據(jù)處理及顯示子程序*/void sdp()if(sji!=0)sd2=tc*1800/sji;else sd2=0;qw=sd2%100000/10000;bw=sd2%10000/1000;sw=sd2%1000/100;gw=s

29、d2%100/10;wrcom(0x82);dispone('v');dispone(' ');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('k');dispone('m');dispone('/');dispone('h');

30、/*void mxsdp()*最大速度數(shù)據(jù)處理及顯示子程序*/void mxsdp() if(mxsd!=0)mxsd2=tc*1800/mxsd;else mxsd2=0;qw=mxsd2%100000/10000;bw=mxsd2%10000/1000;sw=mxsd2%1000/100;gw=mxsd2%100/10;wrcom(0xc2);dispone('v');dispone('m');dispone(' ');dispone(' ');dispone(qw+0x30);dispone(bw+0x30);dispone

31、('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('k');dispone('m');dispone('/');dispone('h');/*void clkp()*當(dāng)前時(shí)間(時(shí)鐘)數(shù)據(jù)處理及顯示子程序*/void clkp()wrcom(0xc4);dispone(csww+0x30);dispone(cww+0x30);dispone(':');dispone(cqw+0x30);dispone(cbw+0x

32、30);dispone(':');dispone(csw+0x30);dispone(cgw+0x30);/*void apfz()*加速度數(shù)據(jù)處理及顯示子程序輔助程序*/void apfz()wrcom(0xc2);dispone('a');wrcom(0xc6);dispone(qw+0x30);dispone(bw+0x30);dispone('.');dispone(sw+0x30);dispone(gw+0x30);dispone(' ');dispone('m');dispone('/'

33、);dispone('s');dispone('2');/*void ap()*加速度數(shù)據(jù)處理及顯示子程序*/void ap()if (sjiold=sji) gw=sw=bw=qw=0; apfz();else if(sjiold<sji) aa=360*tc*(sji-sjiold)/sji/sjiold/(sji+sjiold);qw=aa/1000;bw=aa%1000/100;sw=aa%100/10;gw=aa%10;wrcom(0xc5);dispone('-');apfz();else if(sjiold>sji) a

34、a=360*tc*(sjiold-sji)/sji/sjiold/(sji+sjiold);qw=aa/1000;bw=aa%1000/100;sw=aa%100/10;gw=aa%10;wrcom(0xc5);dispone(' ');apfz();/*void int0()*外部中斷0(干簧管)中斷服務(wù)程序*/void int0() interrupt 0ex0=0;qs+;/圈數(shù)+1tr1=0;sjiold=sji;/停止t1計(jì)時(shí)sji=ssji;if (mxsd!=0)/更新最大速度 if (sji<mxsd) mxsd=sji; else mxsd=sji;th

35、1=0xb1;/重置t1定時(shí)常數(shù)tl1=0xdf;ssji=0;tr1=1; /t1重新開(kāi)始計(jì)時(shí)switch(mode) case 0:wrcom(0x01);lcp();ttimep();break; case 1:wrcom(0x01);sdp();mxsdp();break; case 2:wrcom(0x01);pjsdp();ap();break; case 3:wrcom(0x01);dispmore(1,5,"time now",8);clkp();break; default:break;for(i=0;i<32000;i+);ie0=0;ex0=1;

36、/*void int1()*顯示模式選擇按鈕(disp)中斷服務(wù)子程序*/void int1() interrupt 2ex1=0;if(+mode>3) mode=0;switch(mode) case 0:wrcom(0x01);lcp();ttimep();break; case 1:wrcom(0x01);sdp();mxsdp();break; case 2:wrcom(0x01);pjsdp();ap();break; case 3:wrcom(0x01);dispmore(1,5,"time now",8);clkp();break; default:b

37、reak;for(i=0;i<32000;i+);ie1=0;ex1=1;/*vvoid timer0()*t0中斷服務(wù)子程序,主要用于計(jì)算累計(jì)行駛時(shí)間,50ms一次中斷,每20次sj+,更新累計(jì)行駛時(shí)間(單位秒)*/void timer0() interrupt 1th0=0x3c;tl0=0xb0;if(+ssj>19)sj+;ssj=0;cgw+;if(cgw>9)cgw=0;csw+; if(csw>5)csw=0;+cbw; if(cbw>9)cbw=0;+cqw; if(cqw>5)cqw=0; cww2+;if(cww2>23)cww2=

38、0;csww=cww2/10;cww=cww2%10;if (mode=0) lcp();ttimep();if (mode=3) clkp();/*void main()*主程序,初始化lcd,顯示歡迎信息,更改時(shí)鐘、直徑設(shè)置,開(kāi)中斷、計(jì)時(shí)器等*/void main()init_lcd();dispmore(1,1,"-digital meter-",16);for(i=0;i<25000;i+);dispmore(2,1," welcome ",16);for(i=0;i<25000;i+);dispmore(2,1," welcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," welcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," welcome. ",16);for(i=0;i<25000;i+);dispmore(2,1," welcome. ",16);for(i=0;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論