基于單片機(jī)自行車(chē)的里程測(cè)速儀課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  《基于單片機(jī)的</b></p><p>  自行車(chē)?yán)锍瘫怼y(cè)速儀》</p><p><b>  單片機(jī)大作業(yè)</b></p><p><b>  目 錄</b></p><p><b>  摘要</b></p>

2、<p><b>  第一章 系統(tǒng)設(shè)計(jì)</b></p><p>  1.1 設(shè)計(jì)任務(wù)和要求</p><p><b>  1.1.1設(shè)計(jì)任務(wù)</b></p><p>  1.1.2 基本要求</p><p>  1.2 總體設(shè)計(jì)方案</p><p>  1.2.1系統(tǒng)總

3、體設(shè)計(jì)思路</p><p>  1.2.2方案設(shè)計(jì)與討論</p><p><b>  1.3功能描述</b></p><p><b>  1.4操作說(shuō)明</b></p><p><b>  1.5結(jié)構(gòu)框圖</b></p><p><b>  1

4、.6原理說(shuō)明</b></p><p><b>  第二章 硬件設(shè)計(jì)</b></p><p><b>  2.1 硬件電路</b></p><p>  2.2 主要元件介紹</p><p><b>  第三章 軟件設(shè)計(jì)</b></p><p>

5、;  3.1 系統(tǒng)主程序流程圖</p><p><b>  3.2 仿真截圖</b></p><p><b>  3.3 源程序代碼</b></p><p>  基于80C51單片機(jī)的</p><p>  自行車(chē)?yán)锍瘫怼y(cè)速儀</p><p>  摘 要:本文介紹了一種基于

6、單片機(jī)控制的簡(jiǎn)易自動(dòng)自行車(chē)速度以及里程計(jì)算系統(tǒng),包括自行車(chē)?yán)锍瘫淼挠布?gòu)成,軟件邏輯以及程序代碼。該里程測(cè)速系統(tǒng)以AT89C51作為系統(tǒng)控制核心,采用光電傳感器來(lái)檢測(cè)信號(hào),通過(guò)一定時(shí)間間隔內(nèi)對(duì)信號(hào)的采集,結(jié)合自行車(chē)本身車(chē)輪參數(shù),經(jīng)過(guò)單片機(jī)對(duì)采集信號(hào)進(jìn)行分析計(jì)算,最終在LCD以及LED上顯示車(chē)輛行駛里程、平均速度和瞬時(shí)速度,并且具有超速報(bào)警功能。</p><p>  關(guān)鍵詞:自行車(chē)測(cè)速;單片機(jī);光電傳感器,LCD/

7、LED顯示 </p><p><b>  一、系統(tǒng)設(shè)計(jì)</b></p><p>  1.1 設(shè)計(jì)任務(wù)和要求1.1.1設(shè)計(jì)任務(wù)</p><p>  設(shè)計(jì)一個(gè)自行車(chē)?yán)锍瘫?、測(cè)速儀,可以將自行車(chē)一段時(shí)間內(nèi)的行駛里程,瞬時(shí)速度,平均速度在LCD上顯示出來(lái),有一個(gè)能用LCD顯示的腕式自行車(chē)?yán)锍田@示器,傳感器采用霍爾元器件,安裝在自行車(chē)的車(chē)輪上;<

8、/p><p>  1.1.2 基本要求</p><p>  能實(shí)時(shí)顯示當(dāng)前的車(chē)速和行駛里程;</p><p>  能去除或保留原先的里程數(shù);</p><p><b>  電池供電。</b></p><p>  1.2 總體設(shè)計(jì)方案</p><p>  1.2.1系統(tǒng)總體設(shè)計(jì)思路

9、</p><p>  本系統(tǒng)實(shí)現(xiàn)自行車(chē)運(yùn)行過(guò)程中對(duì)行駛里程、當(dāng)前瞬時(shí)速度、平均速度進(jìn)行測(cè)量和顯示。總體設(shè)計(jì)思路如圖1所示。系統(tǒng)包括控制器模塊、信號(hào)檢測(cè)采集模塊、顯示模塊、電源模塊四部分。</p><p>  系統(tǒng)工作時(shí),傳感器采集到信號(hào)(用按鍵代表脈沖、或者用頻率輸入代表信號(hào)輸入)傳輸給單片機(jī),單片機(jī)計(jì)數(shù)器統(tǒng)計(jì)脈沖個(gè)數(shù),定時(shí)器記錄相應(yīng)時(shí)間長(zhǎng)度,經(jīng)過(guò)運(yùn)算,將行駛里程、平均速度送給LCD顯示,

10、當(dāng)前(瞬時(shí))速度送給7段數(shù)碼管顯示。</p><p>  1.2.2方案設(shè)計(jì)與討論</p><p><b>  速度測(cè)量原理</b></p><p>  測(cè)量自行車(chē)的速度的原理有兩種:</p><p>  測(cè)量一定時(shí)間間隔t里自行車(chē)車(chē)輪轉(zhuǎn)過(guò)的圈數(shù)q。假設(shè)車(chē)輪周長(zhǎng)為c,則速度V=c*q/t測(cè)量自行車(chē)車(chē)輪轉(zhuǎn)過(guò)一圈的時(shí)間t,則

11、速度V=c/t本里程表是根據(jù)第一個(gè)原理計(jì)算速度的。</p><p><b>  傳感器的選擇</b></p><p>  紅外光電傳感器。把紅外對(duì)管分別安裝在自行車(chē)車(chē)輪的兩側(cè),當(dāng)車(chē)輪轉(zhuǎn)動(dòng)時(shí),輻條會(huì)阻擋紅外對(duì)管的光路,接收管輸出低電平,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等。紅外對(duì)管的優(yōu)點(diǎn)是測(cè)量精度高,缺點(diǎn)是安裝比較復(fù)雜和容易受外來(lái)光線、灰塵等的影響。</p>

12、<p>  開(kāi)關(guān)型霍爾傳感器。霍爾傳感器是利用霍爾效應(yīng)把磁輸入信號(hào)轉(zhuǎn)換成電信號(hào)的器件。把開(kāi)關(guān)型霍爾傳感器安裝在自行車(chē)貼近車(chē)輪的支架上,磁鋼安裝在輻條上,當(dāng)磁鋼靠近霍爾傳感器的時(shí)候,傳感器輸出一個(gè)無(wú)抖動(dòng)的低電平,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等?;魻杺鞲衅鞯膬?yōu)點(diǎn)是穩(wěn)定和安裝簡(jiǎn)易,缺點(diǎn)是成本較高。</p><p>  干簧管。干簧管是一種磁敏的有觸點(diǎn)無(wú)源電子開(kāi)關(guān)元件,應(yīng)用在里程表上的原理與開(kāi)關(guān)型霍爾傳感

13、器類(lèi)似,把干簧管安裝在自行車(chē)貼近車(chē)輪的支架上,磁鋼安裝在輻條上,當(dāng)磁鋼靠近霍爾傳感器的時(shí)候,干簧管閉合,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等。干簧管的優(yōu)點(diǎn)是成本低廉和安裝簡(jiǎn)易,缺點(diǎn)是比較脆弱和不夠穩(wěn)定。</p><p>  本里程表選用開(kāi)關(guān)型霍爾傳感器,穩(wěn)定、安裝簡(jiǎn)易。</p><p><b>  顯示模塊的選擇</b></p><p>  動(dòng)態(tài)

14、掃描LED數(shù)碼管顯示。里程表的顯示內(nèi)容以數(shù)字為主,利用LED數(shù)碼管可基本滿(mǎn)足使用要求,且成本較低。但是用動(dòng)態(tài)掃描的方式驅(qū)動(dòng)數(shù)碼管,亮度太低,在陽(yáng)光下幾乎看不見(jiàn)顯示內(nèi)容,失去使用價(jià)值。</p><p>  串行靜態(tài)LED數(shù)碼管顯示。把單片機(jī)的串行口設(shè)置為方式0(同步移位寄存器),輸出顯示信息,可實(shí)現(xiàn)LED數(shù)碼管的靜態(tài)顯示,其亮度令人滿(mǎn)意。但由于要使用74HC164/74LS164串并轉(zhuǎn)換芯片驅(qū)動(dòng)LED數(shù)碼管,因此會(huì)

15、帶來(lái)體積大、成本高、功耗高等的缺點(diǎn)。</p><p>  LCD液晶顯示模塊。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。</p><p>  本里程表使用1602 LCD作為顯示模塊。外加四個(gè)七段管LED用來(lái)顯示5秒內(nèi)的當(dāng)前速度(近似瞬時(shí)速度)</p><p><b>  【功能

16、描述】</b></p><p>  以AT89C51型單片機(jī)為核心,實(shí)時(shí)測(cè)量并顯示自行車(chē)行駛過(guò)程中的各項(xiàng)參數(shù),包括當(dāng)前行駛累計(jì)時(shí)間、當(dāng)前行駛累計(jì)里程(m)、當(dāng)前速度(m/s)、平均速度(m/s)、當(dāng)前行駛時(shí)間等,各參數(shù)分屏顯示。本里程表具有時(shí)鐘功能,不安裝在自行車(chē)上時(shí)也可作為時(shí)鐘使用,實(shí)用性高。</p><p><b>  【操作說(shuō)明】</b></p

17、><p>  本例子所采用的是27#比賽公路自行車(chē),換算成公制,外徑700mm,半徑為350mm,探測(cè)器安裝在距離軸心200mm處,探測(cè)到一次,車(chē)輪轉(zhuǎn)動(dòng)2.15m,輪胎具體規(guī)格700*28C,28是指車(chē)胎的橫斷面的寬度為28mm,則周長(zhǎng)2150mm。</p><p>  附:輪胎直徑大小英寸與厘米對(duì)照表</p><p><b>  【結(jié)構(gòu)框圖】</b&g

18、t;</p><p>  系統(tǒng)由霍爾元件傳感器、顯示模塊、LED報(bào)警模塊、供電模塊和單片機(jī)小系統(tǒng)構(gòu)。</p><p><b>  【工作原理】</b></p><p>  里程、速度等都是由霍爾元器件測(cè)量。通過(guò)頻率計(jì)或者按鈕輸出脈沖,代表車(chē)輪轉(zhuǎn)動(dòng)圈數(shù),已知自行車(chē)輪胎的周長(zhǎng)為2.15m,輪子每轉(zhuǎn)動(dòng)一圈,安裝在車(chē)輪輻條上的磁鋼接近霍爾傳感器一次,傳

19、感器送一個(gè)脈沖信號(hào)給單片機(jī)的外部中斷計(jì)數(shù)器T1,產(chǎn)生一次中斷,圈數(shù)加一。圈數(shù)*2.15即為車(chē)前進(jìn)距離,而通過(guò)單片機(jī)T0定時(shí)器記錄時(shí)間,間隔5秒,5秒內(nèi)的前進(jìn)距離除以時(shí)間5秒,得到5秒內(nèi)的當(dāng)前速度。而總里程L除以總時(shí)間t得到平均速度。</p><p>  處理速度數(shù)據(jù)時(shí)同時(shí)刷新平均速度、當(dāng)前速度、運(yùn)行里程。</p><p>  若速度大于25km/h(6.95m/s)則P3.7輸出低電平,L

20、ED警示燈亮,提示速度過(guò)大。</p><p>  單片機(jī)定時(shí)器0定時(shí)時(shí)間為50ms,每20次刷新系統(tǒng)時(shí)鐘及計(jì)算累計(jì)行駛時(shí)間。</p><p><b>  【具體電路圖】</b></p><p>  【相關(guān)元器件及其簡(jiǎn)介】</p><p> ?。?)AT89C51單片機(jī)簡(jiǎn)介</p><p>  AT

21、89C51是一種低功耗、高性能CMOS 8位微控制器,具有2K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89C51為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案

22、。</p><p>  AT89C51具有以下標(biāo)準(zhǔn)功能:4k字節(jié)Flash,128字節(jié)RAM,32 位I/O 口線,看門(mén)狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,2個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89C51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器

23、/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p>  (2)1602LCD液晶顯示模塊</p><p>  液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件了。</p><p>  本里程表使用常見(jiàn)的16

24、02字符型LCD模塊。1602可以顯示2行16個(gè)字符,有8位數(shù)據(jù)總線D0-D7,和RS、R/W、E三個(gè)控制端口,工作電壓為5V,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光。</p><p><b> ?。?)霍爾元件</b></p><p>  霍爾傳感器是利用霍爾效應(yīng)把磁輸入信號(hào)轉(zhuǎn)換成電信號(hào)的器件。把開(kāi)關(guān)型霍爾傳感器安裝在自行車(chē)貼近車(chē)輪的支架上,磁鋼安裝在輻條上,當(dāng)磁鋼靠近霍爾傳

25、感器的時(shí)候,傳感器輸出一個(gè)無(wú)抖動(dòng)的低電平,單片機(jī)根據(jù)此信號(hào)可計(jì)算里程、速度等?;魻杺鞲衅鞯膬?yōu)點(diǎn)是穩(wěn)定和安裝簡(jiǎn)易,缺點(diǎn)是成本較高。</p><p>  附錄 程序流程圖及程序代碼</p><p><b>  主程序流程圖:</b></p><p>  中斷服務(wù)子程序流程圖:</p><p><b>  仿真截圖:

26、</b></p><p>  用頻率計(jì)輸入頻率為5HZ的信號(hào),得到速度10.75m/s</p><p>  手動(dòng)按鈕,得到當(dāng)前速度7.74m/s</p><p>  全部運(yùn)行結(jié)果(含超速報(bào)警)</p><p>  全部運(yùn)行結(jié)果(未超速,報(bào)警燈未亮)</p><p><b>  程序代碼:</

27、b></p><p>  #include<reg52.h></p><p>  #include<intrins.h> //包含_nop_();函數(shù)定義的頭文件</p><p>  void timer0_int();</p><p>  sbit LED=P3^7;</p><p>

28、  sbit E=P3^2;//1602使能引腳</p><p>  sbit RW=P3^1;//1602讀寫(xiě)引腳</p><p>  sbit RS=P3^0;//1602數(shù)據(jù)/命令選擇引腳</p><p>  unsigned char hour,minute,second;</p><p>  unsigned char

29、 n,count;</p><p>  unsigned long lengthbuf,lengthvalue;</p><p>  unsigned char code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9的共陰極七段管代碼</p><p>  unsigned

30、char code Table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //0~9的共陰極七段管代碼,帶小數(shù)點(diǎn)</p><p>  void Delay0(int Times);</p><p>  void Display();</p><p>  void delay() //延時(shí)5U

31、S</p><p><b>  {</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b

32、>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  }</b></p><p>  bit Busy(void)//讀狀態(tài)函數(shù),判斷液晶模塊的忙碌狀態(tài)</p><p><b>  {</b>

33、;</p><p>  bit busy_flag = 0;</p><p><b>  RS = 0;</b></p><p><b>  RW = 1;</b></p><p><b>  E = 1;</b></p><p><b>  

34、delay();</b></p><p>  busy_flag = (bit)(P0 & 0x80);</p><p><b>  E = 0;</b></p><p>  return busy_flag;</p><p><b>  }</b></p><

35、;p>  void wcmd(unsigned char del) //將模式設(shè)置指令或顯示地址寫(xiě)入液晶模塊</p><p><b>  {</b></p><p>  while(Busy());</p><p><b>  RS = 0;</b></p><p><b>  R

36、W = 0;</b></p><p><b>  E = 0;</b></p><p><b>  delay();</b></p><p><b>  P0 = del;</b></p><p><b>  delay();</b></

37、p><p><b>  E = 1;</b></p><p><b>  delay();</b></p><p><b>  E = 0;</b></p><p><b>  }</b></p><p>  void wdata(un

38、signed char del) ///將數(shù)據(jù)(字符ASCII碼)寫(xiě)入液晶模塊</p><p><b>  {</b></p><p>  while(Busy());</p><p><b>  RS = 1;</b></p><p><b>  RW = 0;</b>&

39、lt;/p><p><b>  E = 0;</b></p><p><b>  delay();</b></p><p><b>  P0 = del;</b></p><p><b>  delay();</b></p><p>&

40、lt;b>  E = 1;</b></p><p><b>  delay();</b></p><p><b>  E = 0;</b></p><p><b>  }</b></p><p>  void L1602_init(void) //初始化液

41、晶模塊</p><p><b>  {</b></p><p>  wcmd(0x38); //功能設(shè)置,8位字長(zhǎng),2行,5*7點(diǎn)陣</p><p>  wcmd(0x0c); //顯示設(shè)置,顯示屏右移</p><p>  wcmd(0x06); //顯示設(shè)置,光標(biāo)右移,字符不移</p><p&

42、gt;  wcmd(0x01); //清屏命令</p><p><b>  }</b></p><p>  void L1602_string(unsigned char hang,unsigned char lie,unsigned char p) //將數(shù)據(jù)寫(xiě)入液晶模塊</p><p><b>  {</b>

43、;</p><p>  unsigned char a;</p><p>  if(hang == 1) a = 0x80; //顯示在第一行</p><p>  if(hang == 2) a = 0xc0; //顯示在第一行</p><p>  a = a + lie -1;</p><p>&

44、lt;b>  wcmd(a);</b></p><p><b>  wdata(p);</b></p><p><b>  }</b></p><p>  void timer0_int() interrupt 1 using 3 //中斷,用于構(gòu)成時(shí)鐘</p><p>&

45、lt;b>  {</b></p><p><b>  n++;</b></p><p>  if(n==100)</p><p><b>  {</b></p><p><b>  n=0;</b></p><p><b> 

46、 count++;</b></p><p><b>  second++;</b></p><p>  if(second>=60)</p><p><b>  { </b></p><p><b>  second=0;</b></p><

47、;p><b>  minute++;</b></p><p>  if(minute>=60)</p><p><b>  {</b></p><p><b>  minute=0;</b></p><p><b>  hour++;</b>&

48、lt;/p><p>  if(hour>=24) hour=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(count==5)</p>

49、<p><b>  { </b></p><p><b>  count=0;</b></p><p>  lengthvalue=(TL1+TH1*256)*215-lengthbuf;</p><p>  lengthbuf=(TL1+TH1*256)*215;</p><p>&

50、lt;b>  }</b></p><p><b>  TH0=0xd8;</b></p><p><b>  TL0=0xf0;</b></p><p><b>  } </b></p><p>  int timer() //以秒為單

51、位計(jì)算運(yùn)行總時(shí)間</p><p><b>  {</b></p><p>  unsigned char a=100;</p><p>  unsigned char b;</p><p>  b=second+minute*60+hour*60*60;</p><p><b>  re

52、turn b;</b></p><p><b>  }</b></p><p>  void Delay0(int Time) //延時(shí)子程序</p><p><b>  {</b></p><p><b>  int i;</b

53、></p><p>  unsigned char j;</p><p>  for(i=0;i<Time;i++)</p><p><b>  {</b></p><p>  for(j=0;j<150;j++) </p><p><b>  {</b>&

54、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Display(unsigned int x) //在LED七段管中顯示最高速度</p><p&

55、gt;<b>  {</b></p><p>  unsigned char slc;</p><p>  unsigned char a,b,c,d;</p><p>  slc=0xef; //LED七段管選通</p><p>  a= x/1000;</p><p> 

56、 b=( x-a*1000)/100;</p><p>  c=( x-a*1000-b*100)/10;</p><p><b>  d= x%10;</b></p><p><b>  {</b></p><p>  P2=slc; //分別將最大速度的各個(gè)位掃描顯示<

57、;/p><p>  slc=slc<<1;</p><p>  P1=Table[a];</p><p>  Delay0(10);</p><p><b>  P2=slc;</b></p><p>  slc=slc<<1;</p><p>  P1

58、=Table1[b];</p><p>  Delay0(10);</p><p><b>  P2=slc;</b></p><p>  slc=slc<<1;</p><p>  P1=Table[c];</p><p>  Delay0(10);</p><p

59、><b>  P2=slc;</b></p><p>  slc=slc<<1;</p><p>  P1=Table[d];</p><p>  Delay0(10);</p><p><b>  }</b></p><p><b>  retu

60、rn;</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  unsigned char i=0 ;</p><p>  unsigned int v=0;

61、 //運(yùn)行速度</p><p>  unsigned int vnow; //當(dāng)前速度</p><p>  unsigned int a,b,c,d; //分別顯示速度的十位,個(gè)位,十分位,百分位</p><p>  unsigned long quanshu; //定義車(chē)輪轉(zhuǎn)動(dòng)圈數(shù)</p><p>  unsign

62、ed long length,length1,length2,length3,length4,length5,length6; //定義運(yùn)行長(zhǎng)度以及長(zhǎng)度的各個(gè)進(jìn)位,</p><p>  unsigned int second1,second2,minute1,minute2,hour1,hour2;</p><p>  L1602_init();</p><p>

63、  TMOD=0x51; //定時(shí)器T0,計(jì)數(shù)器T1,允許外部中斷,T1工作方式01,T0工作方式01</p><p>  TH1=0x00; //計(jì)數(shù)器T1高位裝初值</p><p>  TL1=0x00; //計(jì)數(shù)器T1低位裝初值</p><p>  ET1=1; //計(jì)數(shù)器0開(kāi)中斷</p><p>  TR1=

64、1; //計(jì)數(shù)器0開(kāi)始工作</p><p>  TH0=0XD8; //T0設(shè)置時(shí)間常數(shù)</p><p><b>  TL0=0XF0;</b></p><p><b>  ET0=1;</b></p><p><b>  EA=1;</b></p>

65、<p><b>  TR0=1;</b></p><p>  IT1=1; //外部中斷1請(qǐng)求觸發(fā)方式</p><p><b>  EX1=1;</b></p><p>  P1=0X00; //P1、P2口裝初值,用于LED七段管顯示用</p><p><b>

66、;  P2=0xff;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  quanshu=TL1+TH1*256; //計(jì)算車(chē)輪旋轉(zhuǎn)圈數(shù)</p><p>  length=quanshu*215; //騎行距離

67、</p><p>  //計(jì)算里程各個(gè)進(jìn)位</p><p>  length1=length/100000;</p><p>  length2=(length-length1*100000)/10000;</p><p>  length3=(length-length1*100000-length2*10000)/1000;</p&

68、gt;<p>  length4=(length-length1*100000-length2*10000-length3*1000)/100;</p><p>  length5=(length-length1*100000-length2*10000-length3*1000-length4*100)/10;</p><p>  length6=length%10;<

69、;/p><p>  if(timer()>0)</p><p>  v=length/timer(); //計(jì)算速度</p><p>  vnow=lengthvalue/5; //計(jì)算當(dāng)前速度(5秒內(nèi))</p><p>  if(vnow>=695) LED=0;else LED=1; //速度超過(guò)6.

70、95m/s(即25km/h),則報(bào)警燈亮</p><p>  Display(vnow); //在LED七段管上顯示當(dāng)前速度(5秒內(nèi))速度</p><p>  Delay0(20);</p><p>  a=(v/1000); //計(jì)算速度的各個(gè)進(jìn)位</p><p>  b=(v-a*1000)/10

71、0;</p><p>  c=(v-a*1000-b*100)/10;</p><p><b>  d=v%10;</b></p><p>  second1=second/10; //計(jì)算分秒時(shí)的十位與個(gè)位</p><p>  second2=second%10;</p><p> 

72、 minute1=minute/10;</p><p>  minute2=minute%10;</p><p>  hour1=hour/10;</p><p>  hour2=hour%10;</p><p>  L1602_string(1,1,'s'); //在LCD相應(yīng)位置顯示變量或者常量</p

73、><p>  L1602_string(1,2,'p');</p><p>  L1602_string(1,3,'e');</p><p>  L1602_string(1,4,'e');</p><p>  L1602_string(1,5,'d');</p>&l

74、t;p>  L1602_string(1,6,' ');</p><p>  L1602_string(1,7,'L');</p><p>  L1602_string(1,8,'=');</p><p>  L1602_string(1,9,length1+48);</p><p>  

75、L1602_string(1,10,length2+48);</p><p>  L1602_string(1,11,length3+48);</p><p>  L1602_string(1,12,length4+48);</p><p>  L1602_string(1,13,'.');</p><p>  L1602_s

76、tring(1,14,length5+48);</p><p>  L1602_string(1,15,length6+48);</p><p>  L1602_string(1,16,'m');</p><p>  L1602_string(2,1,a+48); </p><p>  L1602_string(2,2

77、,b+48);</p><p>  L1602_string(2,3,'.');</p><p>  L1602_string(2,4,c+48);</p><p>  L1602_string(2,5,d+48);</p><p>  L1602_string(2,6,'m');</p><

78、;p>  L1602_string(2,7,'/');</p><p>  L1602_string(2,8,'s');</p><p>  L1602_string(2,9,hour1+48);</p><p>  L1602_string(2,10,hour2+48);</p><p>  L1602

79、_string(2,11,':');</p><p>  L1602_string(2,12,minute1+48);</p><p>  L1602_string(2,13,minute2+48);</p><p>  L1602_string(2,14,':');</p><p>  L1602_strin

80、g(2,15,second1+48);</p><p>  L1602_string(2,16,second2+48);</p><p>  while(i<2) //LCD顯示延遲</p><p><b>  {delay();</b></p><p><b>  i++; }<

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論