汽車速度里程表的設(shè)計(jì)._第1頁
汽車速度里程表的設(shè)計(jì)._第2頁
汽車速度里程表的設(shè)計(jì)._第3頁
汽車速度里程表的設(shè)計(jì)._第4頁
汽車速度里程表的設(shè)計(jì)._第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、汽車速度里程表的設(shè)計(jì)摘要:在車輛高速行駛的過程中,車速里程表是為駕駛員及時(shí)提供動(dòng)態(tài)駕駛信息的重要儀表,它的好壞直接影響到車輛行駛安全。而傳統(tǒng)的車速里程表存在兩大缺陷:一是用軟軸驅(qū)動(dòng)的傳統(tǒng)車速里程表在車輛高速行駛狀態(tài)下,軟軸高速旋轉(zhuǎn),由于軟軸鋼絲應(yīng)力極限的限制,常常造成鋼絲軟軸的疲勞斷裂,從而使車速里程表失效;二是由于軟軸布線過長(zhǎng),出現(xiàn)形變過大和運(yùn)動(dòng)遲滯現(xiàn)象,導(dǎo)致動(dòng)態(tài)指示遲鈍或指示錯(cuò)誤。為了更加及時(shí)可靠的為駕駛員提供動(dòng)態(tài)駕駛信息,保證車輛行駛安全,客服傳統(tǒng)軟軸驅(qū)動(dòng)車速里程表故障率高、動(dòng)態(tài)指示遲鈍等問題,運(yùn)用先進(jìn)的電子技術(shù)、傳感器測(cè)量技術(shù)和計(jì)算機(jī)智能技術(shù),改進(jìn)傳統(tǒng)的里程表是非常必要的。關(guān)鍵字:?jiǎn)纹?/p>

2、機(jī),霍爾傳感器,車速里程表Abstract: In the process of high-speed vehicles, vehicle speed odometer is important instrument driver to provide dynamic driving information, which directly affects the running safety of vehicles. The speedometer tradition has two defects: one is the traditional speedometer flexible sh

3、aft driving the vehicle high speed running condition, the shaft rotating speed, the flexible shaft steel wire stress limit, often resulting in fatigue fracture of the wire flexible shaft, so that the speedometer failure; two is a flexible wiring is too long due to deformation, appear too large and t

4、he motion lag, lead to dynamic indicating slow or indication error. In order to be more reliable and timely to the driver's driving dynamic information, guarantee the driving safety, the problem of high failure rate, the speedometer dynamic indicating slow service traditional flexible shaft driv

5、ing, the use of electronic technology, sensor technology and computer intelligence technology advanced, the improvement of the traditional odometer is very necessary. Key words:The microcontroller, hall sensors, memory,The speedometer目 錄前 言11 系統(tǒng)概述22 基本原理與設(shè)計(jì)方案22.1 霍爾傳感器簡(jiǎn)介32.2 AT89C2051芯片簡(jiǎn)介42.3 液晶顯示模塊

6、SED1520芯片介紹52.3.1 SED1520芯片介紹52.3.2 SED1520的特性62.3.3 SED1520指令與顯示RAM結(jié)構(gòu)62.4 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)72.5 定時(shí)計(jì)數(shù)器的原理72.6 頻率測(cè)量83 系統(tǒng)硬件設(shè)計(jì)83.1 信號(hào)預(yù)處理電路83.2 施密特觸發(fā)器93.3 液晶顯示電路和數(shù)據(jù)存儲(chǔ)電路104 系統(tǒng)軟件設(shè)計(jì)114.1 電機(jī)轉(zhuǎn)速控制模塊程序設(shè)計(jì)124.2 頻率測(cè)量模塊程序設(shè)計(jì)124.3 液晶顯示程序的設(shè)計(jì)154.4 速度、里程顯示程序的設(shè)計(jì)154.5 模塊程序設(shè)計(jì)185 軟件調(diào)試205.1 程序的查錯(cuò)手段205.2 源程序的檢測(cè)215.3 源程序的調(diào)試216 設(shè)計(jì)總結(jié)2

7、2參考文獻(xiàn)23前 言 汽車是現(xiàn)代生活中不可或缺的一種重要交通工具,傳統(tǒng)的指針式里程表伴隨著汽車的誕生就一直為人們喜愛,不過,新生事物不會(huì)因傳統(tǒng)的存在而停止它前進(jìn)的步伐。數(shù)碼科技在今天已滲透到工業(yè),農(nóng)業(yè),民用等產(chǎn)品的點(diǎn)點(diǎn)滴滴。新概念的車速里程表最直觀的變化就是用大屏幕的液晶取代指針式表盤,直接用數(shù)字顯示速度和里程,以及其他一些諸如油耗、時(shí)鐘、環(huán)境溫度等參數(shù),直觀的呈現(xiàn)給使用者。同時(shí),它還具有成本低廉,顯示清晰,穩(wěn)定可靠等優(yōu)點(diǎn)。由于單片機(jī)體積小,可以把它做到產(chǎn)品的內(nèi)部,取代老式機(jī)械零件,縮小產(chǎn)品體積,增強(qiáng)功能,實(shí)現(xiàn)智能化。因此被廣泛地用在智能產(chǎn)品中。Intel公司的MCS-51系列單片機(jī)近年來得到

8、了廣泛流行。本文即介紹一種基于AT89C2051單片機(jī)的汽車速度與里程表的設(shè)計(jì)和實(shí)現(xiàn)。本設(shè)計(jì)以AT89C2051為核心,利用單片機(jī)的運(yùn)算和控制功能,采用串口液晶顯示模塊實(shí)時(shí)顯示所測(cè)汽車的速度和里程設(shè)計(jì)方案。由于使用了串口液晶顯示模塊和E2PROM,以及高效快速算法,因而可在節(jié)約系統(tǒng)資源和簡(jiǎn)化程序設(shè)計(jì)的基礎(chǔ)上保證測(cè)量精度和系統(tǒng)實(shí)時(shí)性。本文先對(duì)里程表設(shè)計(jì)中所需設(shè)備作詳細(xì)介紹,再對(duì)設(shè)計(jì)中存在的問題進(jìn)行了說明,對(duì)硬件部分和軟件部分的設(shè)計(jì)和實(shí)現(xiàn)作認(rèn)真的分析。1 系統(tǒng)概述本系統(tǒng)由信號(hào)采集處理模塊、單片機(jī)AT89C2051、系統(tǒng)化LCD顯示模塊、系統(tǒng)軟件組成。系統(tǒng)軟件包括單片機(jī)和液晶模塊的初始化模塊、液晶模

9、塊的寫數(shù)據(jù)命令子模塊、周期測(cè)量模塊、速度里程計(jì)算模塊、數(shù)據(jù)存儲(chǔ)模塊、速度和里程顯示數(shù)據(jù)轉(zhuǎn)BCD碼模塊、顯示數(shù)據(jù)消多余零模塊、數(shù)據(jù)顯示模塊以及實(shí)時(shí)中斷服務(wù)模塊等。其中,信號(hào)采集處理模塊以霍爾傳感器為核心器件,將不同的轉(zhuǎn)速信號(hào)轉(zhuǎn)換成相應(yīng)的脈沖信號(hào),并送到單片機(jī)的T1引腳;對(duì)單片機(jī)進(jìn)行設(shè)置,使內(nèi)部的定時(shí)器/計(jì)數(shù)器timer0工作在定時(shí)狀態(tài),timer1工作在計(jì)數(shù)狀態(tài),利用內(nèi)部定時(shí)器T0對(duì)脈沖輸入引腳T1進(jìn)行控制,這樣就能精確地檢測(cè)到設(shè)定時(shí)間內(nèi)加到T1引腳的脈沖數(shù),一個(gè)脈沖即代表著車子前進(jìn)一個(gè)輪長(zhǎng),對(duì)脈沖數(shù)進(jìn)行處理就可得到里程和速度的數(shù)據(jù);將數(shù)據(jù)送到LCD顯示模塊進(jìn)行顯示。速度顯示部分采用串口液晶顯示

10、模塊,所得的數(shù)據(jù)采用I2C總線并通過E2PROM來存儲(chǔ),因而節(jié)省了所需單片機(jī)的口線和外圍器件,同時(shí)也簡(jiǎn)化了顯示部分的軟件編程。汽車速度與里程表系統(tǒng)原理框圖如圖1-1所示。脈沖信號(hào)單片機(jī)LCD圖1-1 汽車速度與里程表系統(tǒng)原理框圖2 基本原理與設(shè)計(jì)方案該設(shè)計(jì)能實(shí)時(shí)地將所測(cè)的速度顯示出來,同時(shí)也能夠累計(jì)顯示總里程數(shù)。該速度里程表能將傳感器輸入到單片機(jī)的脈沖信號(hào)的寬度(傳感器將車速轉(zhuǎn)變成相應(yīng)寬度的脈沖信號(hào))實(shí)時(shí)地測(cè)量出來,然后通過單片機(jī)計(jì)算出速度和里程,再將所得的數(shù)據(jù)存儲(chǔ)到串口數(shù)據(jù)存儲(chǔ)器,并由串口液晶顯示模塊實(shí)時(shí)顯示出所測(cè)速度。本設(shè)計(jì)用兩個(gè)按鍵來控制顯示速度或里程??紤]到信號(hào)的衰減、干擾等影響,在信

11、號(hào)送入單片機(jī)前應(yīng)對(duì)其進(jìn)行放大整形,然后再輸入到單片機(jī)進(jìn)行測(cè)速。單片機(jī)利用定時(shí)器T0的控制功能測(cè)出輸入信號(hào)的周期后,再利用單片機(jī)的算術(shù)運(yùn)算功能將周期轉(zhuǎn)換成速度,同時(shí)每秒鐘進(jìn)行一次里程累計(jì),從而計(jì)算出總里程。最后將得出的速度、里程值存儲(chǔ)在E2PROM中,并根據(jù)兩個(gè)按鍵的選擇情況來顯示速度或里程。為了方便計(jì)算要顯示數(shù)據(jù)值的段碼,可再將其轉(zhuǎn)換成壓縮的BCD碼,然后通過查表將要顯示的數(shù)據(jù)值中每一位的壓縮BCD碼轉(zhuǎn)換成8段碼送到顯示緩沖區(qū),最后經(jīng)串口送至液晶顯示模塊以顯示所測(cè)的速度或里程。2.1 霍爾傳感器簡(jiǎn)介 霍耳效應(yīng):1879年E.H. 霍爾發(fā)現(xiàn),如果對(duì)位于磁場(chǎng)(B)中的導(dǎo)體(d)施加一個(gè)電壓(v),

12、該磁場(chǎng)的方向垂直于所施加電壓的方向,那么則在既與磁場(chǎng)垂直又和所施加電流方向垂直的方向上會(huì)產(chǎn)生另一個(gè)電壓(UH),人們將這個(gè)電壓叫做霍爾電壓,產(chǎn)生這種現(xiàn)象被稱為霍爾效應(yīng)。霍爾效應(yīng)從本質(zhì)上講是運(yùn)動(dòng)的帶電粒子在磁場(chǎng)中受洛侖茲力作用而引起的偏轉(zhuǎn)。當(dāng)帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉(zhuǎn)就導(dǎo)致在垂直電流和磁場(chǎng)的方向上產(chǎn)生正負(fù)電荷的積累,從而形成附加的橫向電場(chǎng)。通有電流I 的金屬或半導(dǎo)體板置于磁感強(qiáng)度為B 的均勻磁場(chǎng)中,磁場(chǎng)的方向和電流方向垂直,在金屬板的第三對(duì)表面間就顯示出橫向電勢(shì)差 U H 的現(xiàn)象稱為霍耳效應(yīng)。U H 就稱為霍耳電勢(shì)差。實(shí)驗(yàn)測(cè)定,霍耳電勢(shì)差的大小和電流I 及磁感強(qiáng)度B成正比

13、,而與板的厚度d 成反比?;魻栟D(zhuǎn)速傳感器: 霍爾轉(zhuǎn)速傳感器的外形圖和與磁場(chǎng)的作用關(guān)系如圖2.1-1所示。磁場(chǎng)由磁鋼提供,所以霍爾傳感器和磁鋼需要配對(duì)使用?;魻杺鞲衅鳈z測(cè)轉(zhuǎn)速示意圖如圖2.1-2所示。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉(zhuǎn)動(dòng)一圈,霍爾傳感器便輸出一個(gè)脈沖。通過單片機(jī)測(cè)量產(chǎn)生脈沖的頻率就可以得出圓盤的轉(zhuǎn)速。霍爾電流傳感器本身已經(jīng)存在濾波電路,輸出無須再加裝濾波,可直接供單片機(jī)的05V的 AD采集或直接送到單片機(jī)的中斷輸入引腳,信號(hào)非常穩(wěn)定,而且抗干擾能力很強(qiáng)?;魻栯娏鱾鞲衅鞣磻?yīng)速度一般在7微妙,所以不用考慮單片機(jī)循環(huán)判斷的時(shí)間。若在圓盤上

14、貼上多塊磁鋼,則圓盤每轉(zhuǎn)一圈,輸出的脈沖信號(hào)將相應(yīng)增加,單位時(shí)間內(nèi)測(cè)到的脈沖數(shù)將增多,測(cè)出的轉(zhuǎn)速也將更加精細(xì)。圖2.1-1 霍爾轉(zhuǎn)速傳感器的外形圖圖2.1-2 霍爾傳感器檢測(cè)轉(zhuǎn)速示意圖2.2 AT89C2051芯片簡(jiǎn)介AT89C2051是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,內(nèi)置功能強(qiáng)大的微型計(jì)算機(jī)的AT89C2051提供了高性價(jià)比的解決方案。 

15、;   AT89C2051是一個(gè)低功耗高性能單片機(jī),40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,AT89C2051可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。AT89C2051具有如下功能特性: 兼容MCS51指令系統(tǒng); 32個(gè)雙向I/O口; 兩個(gè)16位可編程定時(shí)/計(jì)數(shù)器; 1個(gè)串行中斷; 兩個(gè)外部中斷源; 4k可反復(fù)擦寫(>1000次)Flash ROM; 128x8bit內(nèi)部

16、RAM; 6個(gè)中斷源; 低功耗空閑和掉電模式; 軟件設(shè)置睡眠和喚醒功能。2.3 液晶顯示模塊SED1520芯片介紹SED1520液晶顯示驅(qū)動(dòng)器是一種點(diǎn)陣圖形式液晶顯示驅(qū)動(dòng)器,它可直接與8位微處理器相連,集行、列驅(qū)動(dòng)器于一體,因此使用起來十分方便,作為內(nèi)藏式控制器被廣泛應(yīng)用于點(diǎn)陣數(shù)較少的液晶顯示模塊。2.3.1 SED1520芯片介紹本設(shè)計(jì)仿真實(shí)驗(yàn)系統(tǒng)采用的液晶顯示屏內(nèi)置控制器為SED1520,點(diǎn)陣為122x32,需要兩片SED1520組成,由E1、E2分別選通,以控制顯示屏的左右兩半屏。圖形液晶顯示模塊有兩種連接方式。一種為直接訪問方式,一種為間接控制方式。本設(shè)計(jì)采用直接控制方式。直接控制方式

17、就是將液晶顯示模塊的接口作為存儲(chǔ)器或IO 設(shè)備直接掛在計(jì)算機(jī)總線上。計(jì)算機(jī)通過地址譯碼控制 E1和 E2的選通;讀寫操作信號(hào) RW由地址線 A1控制;命令/數(shù)據(jù)寄存器選擇信號(hào) AO 由地址線 A0控制。實(shí)際電路如圖2.3.1-1所示。地址映射如表2.3.1-1所示(地址中的X由LCD CS決定,可參見地址譯碼部分說明)。表2.3.1-1 地址映射0X000H0X001H0X002H0X003H0X004H0X005H0X006H0X007H寫E1指令寫E1數(shù)據(jù)讀E1狀態(tài)讀E1數(shù)據(jù)寫E2指令寫E2數(shù)據(jù)讀E2狀態(tài)讀E2數(shù)據(jù)圖2.3.1-1 液晶屏顯示控制電路2.3.2 SED1520的特性內(nèi)置顯示

18、RAM區(qū)RAM容量為2560(32行80列)位。RAM中的1位數(shù)據(jù)控制液晶屏上一個(gè)點(diǎn)的亮滅狀態(tài):“1”表示亮,“0”表示暗。它具有16個(gè)行驅(qū)動(dòng)口和16個(gè)列驅(qū)動(dòng)口,并可級(jí)聯(lián)兩個(gè)SED1520實(shí)現(xiàn)32行驅(qū)動(dòng)。還可直接與80系列微處理器相連,亦可直接與68系列微處理器相連。其驅(qū)動(dòng)占空比為116或132。并可以與SED1520配合使用,以便擴(kuò)展列驅(qū)動(dòng)口數(shù)目。2.3.3 SED1520指令與顯示RAM結(jié)構(gòu)SED1520指令系統(tǒng)比較簡(jiǎn)單,共13條,除讀狀態(tài)指令、讀顯示RAM數(shù)據(jù)指令外,其他指令均為寫操作,并且讀寫指令均為單字節(jié)指令。在送出每條指令時(shí),必須進(jìn)行控制器狀態(tài)檢測(cè),狀態(tài)字節(jié)的含義如下: D7:1/

19、0,模塊忙/準(zhǔn)備就緒; D5:1/0,模塊顯示關(guān)/開; D4:1/0,模塊復(fù)位/正常; D3-D0:未用。 在指令使用中,關(guān)鍵要分清顯示行、列設(shè)置和顯示頁面設(shè)置的關(guān)系。單片SED1520可驅(qū)動(dòng)61×16液晶屏,其內(nèi)部顯示RAM相對(duì)于COM0每8行為一個(gè)顯示頁面。本設(shè)計(jì)所用的字符液晶模塊由兩塊SED1520級(jí)聯(lián)驅(qū)動(dòng),其中一個(gè)工作在主工作方式下,另一個(gè)工作在從方式下,主工作方式SED1520負(fù)責(zé)上半屏16行的驅(qū)動(dòng)和左半屏的61列驅(qū)動(dòng),從工作方式的SED1520則負(fù)責(zé)下半屏16行的驅(qū)動(dòng)和右半屏的61列驅(qū)動(dòng),使能信號(hào)E1、E2用來區(qū)分具體控制的是那一片SED1520。這樣兩片SED1520級(jí)

20、聯(lián)可驅(qū)動(dòng)122×32圖形點(diǎn)陣液晶顯示屏,可完成圖形顯示,也可顯示七個(gè)半(16×16點(diǎn)陣)漢字。2.4 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)16位的定時(shí)/計(jì)數(shù)器分別由兩個(gè)8位專用寄存器組成,即:T0由TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。其訪問地址依次為8AH-8DH。這些寄存器是用于存放定時(shí)或計(jì)數(shù)初值的。此外,其內(nèi)部還有一個(gè)8位的定時(shí)器方式寄存器TMOD和一個(gè)8位的定時(shí)控制寄存器TCON。這些寄存器之間是通過內(nèi)部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時(shí)器的工作方式;TCON主要是用于控制定時(shí)器的啟動(dòng)停止,此外TCON還可以保存T0、T1的溢出和中斷標(biāo)志。當(dāng)定時(shí)器工作

21、在計(jì)數(shù)方式時(shí),外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)原理圖如圖2.4-1所示。圖2.4-1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)原理圖2.5 定時(shí)計(jì)數(shù)器的原理16位的定時(shí)器/計(jì)數(shù)器實(shí)質(zhì)上就是一個(gè)加1計(jì)數(shù)器,其控制電路受軟件控制、切換。當(dāng)定時(shí)器/計(jì)數(shù)器為定時(shí)工作方式時(shí),計(jì)數(shù)器的加1信號(hào)由振蕩器的12分頻信號(hào)產(chǎn)生,即每過一個(gè)機(jī)器周期,計(jì)數(shù)器加1,直至計(jì)滿溢出為止。顯然,定時(shí)器的定時(shí)時(shí)間與系統(tǒng)的振蕩頻率有關(guān)。因一個(gè)機(jī)器周期等于12個(gè)振蕩周期,所以計(jì)數(shù)頻率 fcount=1/12osc。如果晶振為12MHz,則計(jì)數(shù)周期為: T=1/(12×106)Hz×1/1

22、2=1s 。這是最短的定時(shí)周期。若要延長(zhǎng)定時(shí)時(shí)間,則需要改變定時(shí)器的初值,并要適當(dāng)選擇定時(shí)器的長(zhǎng)度(如8位、13位、16位等)。當(dāng)定時(shí)器/計(jì)數(shù)器為計(jì)數(shù)工作方式時(shí),通過引腳T0和T1對(duì)外部信號(hào)計(jì)數(shù),外部脈沖的下降沿將觸發(fā)計(jì)數(shù)。計(jì)數(shù)器在每個(gè)機(jī)器周期的S5P2期間采樣引腳輸入電平。若一個(gè)機(jī)器周期采樣值為1,下一個(gè)機(jī)器周期采樣值為0,則計(jì)數(shù)器加1。此后的機(jī)器周期S3P1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。所以檢測(cè)一個(gè)由1至0的跳變需要兩個(gè)機(jī)器周期,故外部事件的最高計(jì)數(shù)頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計(jì)數(shù)頻率為0.5MHz。雖然對(duì)外部輸入信號(hào)的占空比無特殊要求,但為了確保某給定電平

23、在變化前至少被采樣一次,外部計(jì)數(shù)脈沖的高電平與低電平保持時(shí)間均需在一個(gè)機(jī)器周期以上。 當(dāng)CPU用軟件給定時(shí)器設(shè)置了某種工作方式之后,定時(shí)器就會(huì)按設(shè)定的工作方式獨(dú)立運(yùn)行,不再占用CPU的操作時(shí)間,除非定時(shí)器計(jì)滿溢出,才可能中斷CPU 當(dāng)前操作。CPU也可以重新設(shè)置定時(shí)器工作方式,以改變定時(shí)器的操作。由此可見,定時(shí)器是單片機(jī)中效率高而且工作靈活的部件。2.6 頻率測(cè)量本設(shè)計(jì)所采用的霍爾傳感器是由一個(gè)磁鋼和一個(gè)霍爾器件組成的。磁鋼被貼在非磁性圓盤上,跟著圓盤一起旋轉(zhuǎn)。此霍爾器件就固定在圓盤的附近,工作時(shí),圓盤每轉(zhuǎn)動(dòng)一圈,霍爾器件就會(huì)產(chǎn)生一個(gè)脈沖。這里的一個(gè)脈沖就代表了一個(gè)圓盤的周長(zhǎng)。在本設(shè)計(jì)中,霍爾

24、傳感器產(chǎn)生的脈沖將被送到單片機(jī)的內(nèi)部定時(shí)計(jì)數(shù)器timer1的T1口。內(nèi)部的定時(shí)計(jì)數(shù)器Timer0工作在定時(shí)狀態(tài),Timer1工作在計(jì)數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設(shè)計(jì)中,Timer0所產(chǎn)生的是0.5秒的定時(shí)。Timer1將對(duì)0.5秒內(nèi)對(duì)加到T1腳的脈沖進(jìn)行計(jì)數(shù)。假設(shè)0.5秒內(nèi)timer1計(jì)數(shù)到N個(gè)脈沖,則圓盤的轉(zhuǎn)動(dòng)頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個(gè)脈沖。對(duì)脈沖頻率進(jìn)行處理,即可轉(zhuǎn)化為車速。對(duì)脈沖數(shù)進(jìn)行累加再乘以輪子的長(zhǎng)度,即可得到里程數(shù)據(jù)。本設(shè)計(jì)中開辟了兩個(gè)字節(jié)的數(shù)據(jù)區(qū)存儲(chǔ)累加脈沖數(shù)據(jù),最多能計(jì)數(shù)65536個(gè)脈

25、沖,也即131072 米(假設(shè)車輪周長(zhǎng)2m)。3 系統(tǒng)硬件設(shè)計(jì)3.1 信號(hào)預(yù)處理電路它由二級(jí)電路構(gòu)成,第一級(jí)是由開關(guān)三極管組成的零偏置放大器,采用開關(guān)三極管可以保證放大器具有良好的高頻響應(yīng)。當(dāng)輸入信號(hào)為零或負(fù)電壓時(shí),三極管截止,電路輸出高電平;而當(dāng)輸入信號(hào)為正電壓時(shí),三極管導(dǎo)通,此時(shí)輸出電壓隨著輸入電壓的上升而下降,這使得速度里程表既可以測(cè)量任意方波信號(hào)的頻率,也可以測(cè)量正弦波信號(hào)的頻率。由于放大器的放大功能降低了對(duì)待測(cè)信號(hào)的幅度要求,因此,系統(tǒng)能對(duì)任意大于0.5V的正弦波和脈沖信號(hào)進(jìn)行測(cè)量。預(yù)處理電路的第二級(jí)采用帶施密特觸發(fā)器的反相器CT74LS14來把放大器生成的單相脈沖轉(zhuǎn)換成與COMS電

26、平相兼容的方波信號(hào)同時(shí)將輸出信號(hào)加到單片機(jī)的P3.2口上。系統(tǒng)信號(hào)預(yù)處理電路如圖3.1-1所示。圖3.1-1 系統(tǒng)信號(hào)預(yù)處理電路3.2 施密特觸發(fā)器利用施密特觸發(fā)器狀態(tài)轉(zhuǎn)換過程中的正反饋,可以把邊沿變化緩慢的周期性信號(hào)變換為邊沿很陡的矩形脈沖信號(hào)。輸入的信號(hào)只要幅度大于VT+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號(hào)。從傳感器得到的矩形脈沖經(jīng)傳輸后往往發(fā)生波形畸變。當(dāng)傳輸線上的電容較大時(shí),波形的上升沿將明顯變壞;當(dāng)傳輸線較長(zhǎng),而且接收端的阻抗與傳輸線的阻抗不匹配時(shí),在波形的上升沿和下降沿將產(chǎn)生振蕩現(xiàn)象;當(dāng)其他脈沖信號(hào)通過導(dǎo)線間的分布電容或公共電源線疊加到矩形脈沖信號(hào)時(shí),信號(hào)上將出現(xiàn)

27、附加的噪聲。無論出現(xiàn)上述的那一種情況,都可以通過用施密特反相觸發(fā)器整形而得到比較理想的矩形脈沖波形。只要施密特觸發(fā)器的VT+和VT-設(shè)置得合適,均能受到滿意的整形效果。施密特觸發(fā)器對(duì)脈沖整形圖如圖3.2-1所示。圖3.2-1 施密特觸發(fā)器對(duì)脈沖整形圖3.3 液晶顯示電路和數(shù)據(jù)存儲(chǔ)電路本設(shè)計(jì)的顯示部分采用液晶顯示模塊LCM0825,液晶顯示模塊與單片機(jī)接口電路圖如圖3.3-1所示。LCM0825是8位段碼式液晶顯示模塊,它內(nèi)部集成有LCD控制器、LCD驅(qū)動(dòng)器和RAM,因而可方便顯示數(shù)據(jù)的編程。液晶顯示模塊采用3-4線串行數(shù)據(jù)輸入,可直接與單片機(jī)接口。由于串行接口方式節(jié)省了所需的口線和系統(tǒng)資源,因

28、而使系統(tǒng)具有較高的資源利用率。該模塊可在2.7V-5.2V電壓下工作,其低功耗及背光可調(diào)特性使得設(shè)計(jì)更具有經(jīng)濟(jì)性和通用性。LCM0825能夠顯示8位數(shù)據(jù),每一個(gè)數(shù)據(jù)均以8段碼的形式放在其內(nèi)部顯示RAM區(qū),并用模塊內(nèi)RAM的兩個(gè)存儲(chǔ)地址來放置一個(gè)數(shù)據(jù)的8段碼。8位數(shù)據(jù)共占用內(nèi)部16個(gè)地址。每一個(gè)數(shù)據(jù)位的8段碼存放形式及高低地址存放段碼的順序都和表1所列的第8位數(shù)據(jù)的8段碼存放格式一樣,只是段碼的存放地址不同。所以,編程時(shí)一定要考慮數(shù)據(jù)的存放地址和形式。在使用該液晶顯示模塊時(shí),VCC與VLCD之間可用一個(gè)50K的電位器來調(diào)整背光。圖3.3-1 液晶顯示模塊與單片機(jī)接口電路圖4 系統(tǒng)軟件設(shè)計(jì)整個(gè)程序

29、的設(shè)計(jì)以GX-ARM-S3C2410試驗(yàn)箱為平臺(tái),其中速度和里程的計(jì)算都采取了近似處理。本系統(tǒng)軟件采用模塊化設(shè)計(jì)方法。整個(gè)系統(tǒng)由初始化模塊、電機(jī)轉(zhuǎn)速控制模塊、電機(jī)轉(zhuǎn)向顯示模塊、頻率測(cè)量模塊、速度,里程顯示模塊、漢字顯示模塊以及其他功能模塊組成。系統(tǒng)程序流程總框圖如圖3-1所示。程序設(shè)計(jì)中,以60H、61H、62H三個(gè)地址為數(shù)據(jù)緩沖區(qū),60H(DATA1)用于存儲(chǔ)每0.5s 計(jì)數(shù)到的脈沖數(shù),用于計(jì)算速度;61H(DATA2)、62H(DATA3)兩個(gè)地址用于存儲(chǔ)計(jì)數(shù)到的脈沖的累加數(shù)據(jù),用于計(jì)算里程。 開始初始化顯示漢字 延時(shí)清屏顯示漢字 電機(jī)控制 方向顯示計(jì)數(shù)脈沖速度 里程顯示3-1 系統(tǒng)程序流

30、程總框圖4.1 電機(jī)轉(zhuǎn)速控制模塊程序設(shè)計(jì)電機(jī)轉(zhuǎn)速的控制模塊由指撥開關(guān)、單片機(jī)、DAC0832數(shù)模變換芯片組成。指撥開關(guān)K0-K7接單片機(jī)的P10-P17(P1口),通過指撥開關(guān)可輸入數(shù)據(jù)0-255,單片機(jī)將指撥開關(guān)輸入的數(shù)據(jù)輸出到DAC0832數(shù)模變換芯片,通過數(shù)模變換,轉(zhuǎn)換成-8V+8V的電壓驅(qū)動(dòng)直流電機(jī)。從而達(dá)到對(duì)電機(jī)轉(zhuǎn)速的控制。輸入數(shù)據(jù)等于128時(shí),輸出電壓為0V;數(shù)據(jù)大于128時(shí),輸出電壓大于0V;輸入數(shù)據(jù)小于128時(shí),輸出電壓小于0V。電機(jī)轉(zhuǎn)速控制模塊程序設(shè)計(jì)如下:mov p1,#0ffh ;設(shè)置P1口為輸入口mov dptr,#cs0832mov A, p1movx dptr,A4

31、.2 頻率測(cè)量模塊程序設(shè)計(jì)霍爾傳感器產(chǎn)生的脈沖被送到單片機(jī)的內(nèi)部定時(shí)/計(jì)數(shù)器timer1的T1口。內(nèi)部定時(shí)/計(jì)數(shù)器Timer0工作在定時(shí)狀態(tài),Timer1工作在計(jì)數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設(shè)計(jì)中Timer0產(chǎn)生0.5秒的定時(shí)。Timer1將對(duì)0.5秒內(nèi)對(duì)加到T1腳的脈沖進(jìn)行計(jì)數(shù)。我們假設(shè)0.5秒內(nèi)timer1計(jì)數(shù)到了第N個(gè)脈沖。這時(shí),圓盤的轉(zhuǎn)動(dòng)頻率就為為 N / 0.5=2N。頻率測(cè)量模塊程序設(shè)計(jì)如下:JISHU: MOV IE,#10001010B ;打開中斷開關(guān) MOV TMOD,#MODE ;設(shè)定內(nèi)部定時(shí)器/計(jì)數(shù)器的工作模式 MOV SP,#70H MOV 40

32、H,#00H MOV TH1,#00H ;將timer1的計(jì)數(shù)寄存器賦初值0 MOV TL1,#00H ;將timer1的計(jì)數(shù)寄存器賦初值0 SETB TR1 ;啟動(dòng)timer1AA: CLR F1 ;標(biāo)志位賦0 MOV TH0,#03CH ;定時(shí)器寫入初值 MOV TL0,#0B0H SETB TR0 ;打開定時(shí)器timer0 JNB F1 , $ ;等待50ms INC 40H MOV A, 40H CJNE A, #09H,AA ;定時(shí)中斷重復(fù)10次 CLR TR1 ;關(guān)閉計(jì)數(shù)器timer1 MOV DATA1,TL1 ;取出timer1計(jì)數(shù)值給DATA1 MOV A,DATA1 ADD

33、 A,DATA2 MOV DATA2,A ;將計(jì)數(shù)值累加到DATA2 JNC BB ;檢查計(jì)數(shù)是否溢出 INC DATA3 ;有溢出則DATA3加1BB: RET;-定時(shí)中斷子程序TIMER : CLR TR0 SETB F1 RETI當(dāng)Timer0工作在模式1時(shí),TLO、THO計(jì)數(shù)寄存器各使用8位,從計(jì)算式 28 = 256,可以得出在設(shè)置計(jì)數(shù)初值時(shí),把計(jì)數(shù)起點(diǎn)的值除以256,再將其余數(shù)放入TLO計(jì)數(shù)寄存器,將商數(shù)放入THO計(jì)數(shù)寄存器。這個(gè)實(shí)驗(yàn)系統(tǒng)所采用的是12MHz的晶振,定時(shí)器所計(jì)數(shù)的脈沖的周期為1us。由此,我們將這樣設(shè)計(jì):每50ms產(chǎn)生一次定時(shí)中斷,就需要計(jì)數(shù)50000個(gè)脈沖,則裝入

34、計(jì)數(shù)寄存器的計(jì)數(shù)初值就為6553650000 = 15536,這時(shí),裝入THO計(jì)數(shù)寄存器的初值就為15536/256 = 60(03CH), 裝入TLO計(jì)數(shù)寄存器的初值為176(0B0H)。Timer0中斷子程序流程圖如圖3.2-1所示。Timer關(guān)閉定時(shí)器F1=1返回 圖3.2-1 Timer0中斷子程序流程圖主程序流程圖如圖3.2-2所示。圖3.2-2 主程序流程圖開始初始化設(shè)定計(jì)數(shù)器初值,并啟動(dòng)F1=0定時(shí)器賦初值,并啟動(dòng)F1=0?yesno40H加140H=9 ?NoYes停止計(jì)數(shù),取出計(jì)數(shù)值將計(jì)數(shù)值累加到DATA2CY=0 ?YESNoDATA3加1返回主程序4.3 液晶顯示程序的設(shè)

35、計(jì)本設(shè)計(jì)中速度和里程的數(shù)據(jù)由液晶顯示模塊顯示,所用的液晶顯示模塊由SED1520芯片驅(qū)動(dòng),首先必須對(duì)液晶顯示模塊進(jìn)行初始化,編寫相應(yīng)的字庫,編寫讀寫程序等。液晶顯示程序的設(shè)計(jì)包括了初始化程序、清屏程序、寫指令代碼子程序、寫顯示數(shù)據(jù)子程序、讀顯示數(shù)據(jù)子程序、中文顯示子程序、數(shù)字顯示程序以及中文字庫和數(shù)字字庫的編寫。4.4 速度、里程顯示程序的設(shè)計(jì)本設(shè)計(jì)中霍爾傳感器產(chǎn)生的脈沖被送到單片機(jī)的內(nèi)部定時(shí)計(jì)數(shù)器timer1的T1口。內(nèi)部定時(shí)計(jì)數(shù)器Timer0工作在定時(shí)狀態(tài),Timer1工作在計(jì)數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設(shè)計(jì)中Timer0產(chǎn)生0.5秒的定時(shí)。Timer1將對(duì)0.5秒

36、內(nèi)對(duì)加到T1腳的脈沖進(jìn)行計(jì)數(shù)。假設(shè)0.5秒內(nèi)timer1計(jì)數(shù)到N個(gè)脈沖。則圓盤的轉(zhuǎn)動(dòng)頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個(gè)脈沖。對(duì)脈沖頻率進(jìn)行處理,即可轉(zhuǎn)化為車速。對(duì)脈沖數(shù)進(jìn)行累加再乘以輪子的長(zhǎng)度,即可得到里程數(shù)據(jù)。本程序?qū)ζ囘\(yùn)行的實(shí)際情況進(jìn)行模擬。設(shè)計(jì)程序時(shí)假設(shè)汽車輪子的周長(zhǎng)約為2m,最后在顯示屏顯示的速度單位是km/h,里程單位是km。速度的計(jì)算如下:若0.5秒計(jì)數(shù)到N個(gè)脈沖,則輪子的轉(zhuǎn)動(dòng)頻率為2N,車速為2N×2 m/s,也即2N×2×3.6 km/h 。設(shè)計(jì)中作近似處理,處理為14N km/h 。

37、顯示時(shí)先顯示百位,再依次顯示十位、個(gè)位。程序如下:;-速度處理顯示子程序SPEED: PUSH A MOV A,DATA1 MOV B,#0EH ;計(jì)數(shù)值乘以14 MUL AB MOV B, #64H ;除數(shù)賦值100 DIV AB ;得到百位顯示數(shù)據(jù)代碼 MOV CODE_ , A ;百位顯示字庫代碼 MOV A,B LCALL BB1 ;調(diào)用速度寫顯示數(shù)據(jù)程序 MOV B,#0AH ;除數(shù)賦值10 DIV AB ;得到十位顯示數(shù)據(jù)代碼 MOV CODE_ , A ;十位顯示字庫代碼 MOV CTEMP, #08H ;顯示后移8列 MOV A,B LCALL BB1 ;調(diào)用速度寫顯示數(shù)據(jù)程序

38、 MOV CODE_ , A ;個(gè)位顯示字庫代碼 MOV CTEMP, #10H LCALL BB1 MOV DATA1,#00H ;數(shù)據(jù)緩沖區(qū)清零 POP A RETDATA2,DATA3存儲(chǔ)計(jì)數(shù)到的脈沖總數(shù),DATA2能存儲(chǔ)255個(gè)脈沖,每次計(jì)數(shù)溢出,則DATA3加1,DATA3里的數(shù)據(jù)權(quán)重為256.這樣兩個(gè)字節(jié)的數(shù)據(jù)能計(jì)數(shù)最多65536個(gè)脈沖,也即131072 米 。130多公里。實(shí)際制作里程表時(shí)只要適當(dāng)增加數(shù)據(jù)緩沖區(qū)的數(shù)量,即可對(duì)最大顯示里程進(jìn)行擴(kuò)充。程序設(shè)計(jì)過程中,對(duì)里程數(shù)據(jù)的顯示作了近似處理。程序如下:;-里程處理顯示子程序MILAGE: PUSH A MOV A,DATA3 MO

39、V B,#0C8H ;除以200 顯示百位里程數(shù)據(jù) DIV AB MOV CODE_, A MOV CTEMP,#00H MOV A,B LCALL BB2 MOV B,#014H ; 顯示十位里程數(shù)據(jù) DIV AB MOV CODE_,A MOV CTEMP, #08H MOV A,B LCALL BB2 MOV B, #02H ; 顯示個(gè)位里程數(shù)據(jù) DIV AB MOV CODE_ ,A MOV CTEMP, #10H MOV A,B LCALL BB2 MOV CODE_ ,#0AH MOV CTEMP, #17H ;顯示小數(shù)點(diǎn) LCALL BB2 CJNE A,#00H, M1 MOV

40、 A,DATA2 ;DATA2除以50得到小數(shù)點(diǎn)MOV B,#032H 后第一位 DIV AB MOV CODE_ , A MOV CTEMP, #1EH MOV A,B LCALL BB2 MOV B,#05H ;余數(shù)再除以5得到小數(shù)點(diǎn)后第二位 DIV AB MOV CODE_ ,A MOV CTEMP, #26H LCALL BB2 POP A RETM1 : MOV A,DATA2 MOV B,#032H DIV AB ADD A,#05H ;顯示大于0.50公里時(shí)代碼加5 MOV CODE_, A MOV CTEMP, #1EH MOV A,B LCALL BB2 MOV B,#05H

41、 DIV AB MOV CODE_ ,A MOV CTEMP, #26H LCALL BB2 POP A RET;-第二行速度數(shù)據(jù)顯示調(diào)用子程序BB1: PUSH A MOV PAGE_,#00H MOV A,CTEMP ADD A,#3CH MOV COLUMN,A LCALL DIW_PR POP A RET;-第一行里程數(shù)據(jù)顯示調(diào)用子程序BB2: PUSH A MOV PAGE_,#02H MOV A,CTEMP ADD A,#3CH MOV COLUMN,A LCALL DIW_PR POP A RET4.5 模塊程序設(shè)計(jì)該程序?qū)闹笓荛_關(guān)輸入的數(shù)據(jù)作出反應(yīng),若輸入的數(shù)據(jù)為128,則在

42、LCD顯示屏上顯示“停止”的標(biāo)志,若輸入的數(shù)據(jù)大于128,則顯示“正轉(zhuǎn)”的標(biāo)志,若輸入的數(shù)據(jù)小于128,則顯示“反轉(zhuǎn)”的標(biāo)志。模塊程序如下:fxb: MOV CTEMP ,#00H CJNE A,#80h,fx MOV PAGE_,#00H ;停止 MOV A,CTEMP ADD A,#2AH MOV COLUMN,A MOV CODE_,#09H LCALL CCW_PR MOV PAGE_,#00H ;顯示“0” MOV A,CTEMP ADD A,#3CH MOV COLUMN,A MOV CODE_,#00H LCALL DIW_PR MOV PAGE_,#00H ;顯示“0” MOV

43、 A,CTEMP ADD A,#44H MOV COLUMN,A MOV CODE_,#00H LCALL DIW_PR MOV PAGE_,#00H ;顯示“0” MOV A,CTEMP ADD A,#4CH MOV COLUMN,A MOV CODE_,#00H LCALL DIW_PR RETfx: ANL a,#80h CJNE a,#80h,fx1 MOV PAGE_,#00H ;正轉(zhuǎn) MOV A,CTEMP ADD A,#2aH MOV COLUMN,A MOV CODE_,#07H LCALL CCW_PR RETfx1: MOV PAGE_,#00H ;反轉(zhuǎn) MOV A,CTE

44、MP ADD A,#2aH MOV COLUMN,A MOV CODE_,#08H LCALL CCW_PR RET5 軟件調(diào)試程序的調(diào)試過程是一個(gè)比較復(fù)雜的過程,有些需要高度的技巧和一定的方法。一般的編程軟件都提供單步、單步越過、斷點(diǎn)、運(yùn)行到光標(biāo)處等基本方法,一般掌握這幾種基本方法就可以解決絕大部分問題。經(jīng)過長(zhǎng)時(shí)間的調(diào)試實(shí)踐之后自然就可以掌握一定的調(diào)試技巧,即熟能生巧。 5.1 程序的查錯(cuò)手段單片機(jī)的應(yīng)用系統(tǒng)均需借助對(duì)應(yīng)的開發(fā)系統(tǒng)(或裝置)進(jìn)行在線仿真,對(duì)應(yīng)用系統(tǒng)的軟、硬件進(jìn)行全面地檢測(cè)與調(diào)試。各種開發(fā)系統(tǒng)或裝置均提供以下查錯(cuò)手段。首先有單步執(zhí)行。采用單步執(zhí)行操作可對(duì)應(yīng)用程序每步執(zhí)行一條指令,可逐條檢查這一段程序的執(zhí)行過程是否符合原設(shè)計(jì)要求??芍苯硬槌鲥e(cuò)誤所在。宏單步可執(zhí)行一段程序,如一步就可執(zhí)行完整個(gè)循環(huán)程序段。再次,有斷點(diǎn)設(shè)置全速運(yùn)行可在程序有疑慮的地方設(shè)置斷點(diǎn),從設(shè)置的起始地址開始,以全速或非全速方式向設(shè)定的斷點(diǎn)處運(yùn)行。如果這段程序無語法或邏輯上的錯(cuò)誤,則連續(xù)運(yùn)行到設(shè)置的斷點(diǎn)處停止運(yùn)行,返回監(jiān)控狀態(tài)。如果有錯(cuò)誤,則在錯(cuò)誤處停止運(yùn)行,如果進(jìn)入死循環(huán)或者程序跑飛,就永遠(yuǎn)不會(huì)停止運(yùn)行。全速斷點(diǎn)運(yùn)行為檢查實(shí)時(shí)性及中斷響應(yīng)處理等提供了方便。另外,還有顯示器窗口檢查和實(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論