版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、四川師范大學(xué)成都學(xué)院電子工程學(xué)院課程設(shè)計報告汽車速度里程表的設(shè)計摘要:在車輛高速行駛的過程中,車速里程表是為駕駛員及時提供動態(tài)駕駛信息的重要儀表,它的好壞直接影響到車輛行駛安全。而傳統(tǒng)的車速里程表存在兩大缺陷:一是用軟軸驅(qū)動的傳統(tǒng)車速里程表在車輛高速行駛狀態(tài)下,軟軸高速旋轉(zhuǎn),由于軟軸鋼絲應(yīng)力極限的限制,常常造成鋼絲軟軸的疲勞斷裂,從而使車速里程表失效;二是由于軟軸布線過長,出現(xiàn)形變過大和運動遲滯現(xiàn)象,導(dǎo)致動態(tài)指示遲鈍或指示錯誤。為了更加及時可靠的為駕駛員提供動態(tài)駕駛信息,保證車輛行駛安全,客服傳統(tǒng)軟軸驅(qū)動車速里程表故障率高、動態(tài)指示遲鈍等問題,運用先進的電子技術(shù)、傳感器測量技術(shù)和計算機智能技術(shù)
2、,改進傳統(tǒng)的里程表是非常必要的。關(guān)鍵字:單片機,霍爾傳感器,車速里程表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 s
3、peedometer flexible shaft 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,
4、appear too large and the 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 tradition
5、al flexible shaft driving, 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 speedometerI目 錄前 言11 系統(tǒng)概述22 基本原理與設(shè)計方案22.1 霍爾傳感器簡介32.2 A
6、T89C2051芯片簡介42.3 液晶顯示模塊SED1520芯片介紹52.3.1 SED1520芯片介紹52.3.2 SED1520的特性62.3.3 SED1520指令與顯示RAM結(jié)構(gòu)62.4 定時器/計數(shù)器的結(jié)構(gòu)72.5 定時計數(shù)器的原理72.6 頻率測量83 系統(tǒng)硬件設(shè)計83.1 信號預(yù)處理電路83.2 施密特觸發(fā)器93.3 液晶顯示電路和數(shù)據(jù)存儲電路104 系統(tǒng)軟件設(shè)計114.1 電機轉(zhuǎn)速控制模塊程序設(shè)計124.2 頻率測量模塊程序設(shè)計124.3 液晶顯示程序的設(shè)計154.4 速度、里程顯示程序的設(shè)計154.5 模塊程序設(shè)計185 軟件調(diào)試205.1 程序的查錯手段205.2 源程序的
7、檢測215.3 源程序的調(diào)試216 設(shè)計總結(jié)22參考文獻23前 言 汽車是現(xiàn)代生活中不可或缺的一種重要交通工具,傳統(tǒng)的指針式里程表伴隨著汽車的誕生就一直為人們喜愛,不過,新生事物不會因傳統(tǒng)的存在而停止它前進的步伐。數(shù)碼科技在今天已滲透到工業(yè),農(nóng)業(yè),民用等產(chǎn)品的點點滴滴。新概念的車速里程表最直觀的變化就是用大屏幕的液晶取代指針式表盤,直接用數(shù)字顯示速度和里程,以及其他一些諸如油耗、時鐘、環(huán)境溫度等參數(shù),直觀的呈現(xiàn)給使用者。同時,它還具有成本低廉,顯示清晰,穩(wěn)定可靠等優(yōu)點。由于單片機體積小,可以把它做到產(chǎn)品的內(nèi)部,取代老式機械零件,縮小產(chǎn)品體積,增強功能,實現(xiàn)智能化。因此被廣泛地用在智能產(chǎn)品中。I
8、ntel公司的MCS-51系列單片機近年來得到了廣泛流行。本文即介紹一種基于AT89C2051單片機的汽車速度與里程表的設(shè)計和實現(xiàn)。本設(shè)計以AT89C2051為核心,利用單片機的運算和控制功能,采用串口液晶顯示模塊實時顯示所測汽車的速度和里程設(shè)計方案。由于使用了串口液晶顯示模塊和E2PROM,以及高效快速算法,因而可在節(jié)約系統(tǒng)資源和簡化程序設(shè)計的基礎(chǔ)上保證測量精度和系統(tǒng)實時性。本文先對里程表設(shè)計中所需設(shè)備作詳細(xì)介紹,再對設(shè)計中存在的問題進行了說明,對硬件部分和軟件部分的設(shè)計和實現(xiàn)作認(rèn)真的分析。1 系統(tǒng)概述本系統(tǒng)由信號采集處理模塊、單片機AT89C2051、系統(tǒng)化LCD顯示模塊、系統(tǒng)軟件組成。系
9、統(tǒng)軟件包括單片機和液晶模塊的初始化模塊、液晶模塊的寫數(shù)據(jù)命令子模塊、周期測量模塊、速度里程計算模塊、數(shù)據(jù)存儲模塊、速度和里程顯示數(shù)據(jù)轉(zhuǎn)BCD碼模塊、顯示數(shù)據(jù)消多余零模塊、數(shù)據(jù)顯示模塊以及實時中斷服務(wù)模塊等。其中,信號采集處理模塊以霍爾傳感器為核心器件,將不同的轉(zhuǎn)速信號轉(zhuǎn)換成相應(yīng)的脈沖信號,并送到單片機的T1引腳;對單片機進行設(shè)置,使內(nèi)部的定時器/計數(shù)器timer0工作在定時狀態(tài),timer1工作在計數(shù)狀態(tài),利用內(nèi)部定時器T0對脈沖輸入引腳T1進行控制,這樣就能精確地檢測到設(shè)定時間內(nèi)加到T1引腳的脈沖數(shù),一個脈沖即代表著車子前進一個輪長,對脈沖數(shù)進行處理就可得到里程和速度的數(shù)據(jù);將數(shù)據(jù)送到LCD
10、顯示模塊進行顯示。速度顯示部分采用串口液晶顯示模塊,所得的數(shù)據(jù)采用I2C總線并通過E2PROM來存儲,因而節(jié)省了所需單片機的口線和外圍器件,同時也簡化了顯示部分的軟件編程。汽車速度與里程表系統(tǒng)原理框圖如圖1-1所示。脈沖信號單片機LCD圖1-1 汽車速度與里程表系統(tǒng)原理框圖2 基本原理與設(shè)計方案該設(shè)計能實時地將所測的速度顯示出來,同時也能夠累計顯示總里程數(shù)。該速度里程表能將傳感器輸入到單片機的脈沖信號的寬度(傳感器將車速轉(zhuǎn)變成相應(yīng)寬度的脈沖信號)實時地測量出來,然后通過單片機計算出速度和里程,再將所得的數(shù)據(jù)存儲到串口數(shù)據(jù)存儲器,并由串口液晶顯示模塊實時顯示出所測速度。本設(shè)計用兩個按鍵來控制顯示
11、速度或里程??紤]到信號的衰減、干擾等影響,在信號送入單片機前應(yīng)對其進行放大整形,然后再輸入到單片機進行測速。單片機利用定時器T0的控制功能測出輸入信號的周期后,再利用單片機的算術(shù)運算功能將周期轉(zhuǎn)換成速度,同時每秒鐘進行一次里程累計,從而計算出總里程。最后將得出的速度、里程值存儲在E2PROM中,并根據(jù)兩個按鍵的選擇情況來顯示速度或里程。為了方便計算要顯示數(shù)據(jù)值的段碼,可再將其轉(zhuǎn)換成壓縮的BCD碼,然后通過查表將要顯示的數(shù)據(jù)值中每一位的壓縮BCD碼轉(zhuǎn)換成8段碼送到顯示緩沖區(qū),最后經(jīng)串口送至液晶顯示模塊以顯示所測的速度或里程。2.1 霍爾傳感器簡介 霍耳效應(yīng):1879年E.H. 霍爾發(fā)現(xiàn),如果對位
12、于磁場(B)中的導(dǎo)體(d)施加一個電壓(v),該磁場的方向垂直于所施加電壓的方向,那么則在既與磁場垂直又和所施加電流方向垂直的方向上會產(chǎn)生另一個電壓(UH),人們將這個電壓叫做霍爾電壓,產(chǎn)生這種現(xiàn)象被稱為霍爾效應(yīng)。霍爾效應(yīng)從本質(zhì)上講是運動的帶電粒子在磁場中受洛侖茲力作用而引起的偏轉(zhuǎn)。當(dāng)帶電粒子(電子或空穴)被約束在固體材料中,這種偏轉(zhuǎn)就導(dǎo)致在垂直電流和磁場的方向上產(chǎn)生正負(fù)電荷的積累,從而形成附加的橫向電場。通有電流I 的金屬或半導(dǎo)體板置于磁感強度為B 的均勻磁場中,磁場的方向和電流方向垂直,在金屬板的第三對表面間就顯示出橫向電勢差 U H 的現(xiàn)象稱為霍耳效應(yīng)。U H 就稱為霍耳電勢差。實驗測定
13、,霍耳電勢差的大小和電流I 及磁感強度B成正比,而與板的厚度d 成反比?;魻栟D(zhuǎn)速傳感器: 霍爾轉(zhuǎn)速傳感器的外形圖和與磁場的作用關(guān)系如圖2.1-1所示。磁場由磁鋼提供,所以霍爾傳感器和磁鋼需要配對使用?;魻杺鞲衅鳈z測轉(zhuǎn)速示意圖如圖2.1-2所示。在非磁材料的圓盤邊上粘貼一塊磁鋼,霍爾傳感器固定在圓盤外緣附近。圓盤每轉(zhuǎn)動一圈,霍爾傳感器便輸出一個脈沖。通過單片機測量產(chǎn)生脈沖的頻率就可以得出圓盤的轉(zhuǎn)速?;魻栯娏鱾鞲衅鞅旧硪呀?jīng)存在濾波電路,輸出無須再加裝濾波,可直接供單片機的05V的 AD采集或直接送到單片機的中斷輸入引腳,信號非常穩(wěn)定,而且抗干擾能力很強。霍爾電流傳感器反應(yīng)速度一般在7微妙
14、,所以不用考慮單片機循環(huán)判斷的時間。若在圓盤上貼上多塊磁鋼,則圓盤每轉(zhuǎn)一圈,輸出的脈沖信號將相應(yīng)增加,單位時間內(nèi)測到的脈沖數(shù)將增多,測出的轉(zhuǎn)速也將更加精細(xì)。圖2.1-1 霍爾轉(zhuǎn)速傳感器的外形圖圖2.1-2 霍爾傳感器檢測轉(zhuǎn)速示意圖2.2 AT89C2051芯片簡介AT89C2051是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含4k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,內(nèi)置功能強大的微型計算機的AT89
15、C2051提供了高性價比的解決方案。 AT89C2051是一個低功耗高性能單片機,40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89C2051可以按照常規(guī)方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。AT89C2051具有如下功能特性: 兼容MCS51指令系統(tǒng); 32個雙向I/O口; 兩個16位可編程定時/計數(shù)器; 1個串行中斷; 兩個外部中斷源; 4k可反復(fù)擦寫(>1000
16、次)Flash ROM; 128x8bit內(nèi)部RAM; 6個中斷源; 低功耗空閑和掉電模式; 軟件設(shè)置睡眠和喚醒功能。2.3 液晶顯示模塊SED1520芯片介紹SED1520液晶顯示驅(qū)動器是一種點陣圖形式液晶顯示驅(qū)動器,它可直接與8位微處理器相連,集行、列驅(qū)動器于一體,因此使用起來十分方便,作為內(nèi)藏式控制器被廣泛應(yīng)用于點陣數(shù)較少的液晶顯示模塊。2.3.1 SED1520芯片介紹本設(shè)計仿真實驗系統(tǒng)采用的液晶顯示屏內(nèi)置控制器為SED1520,點陣為122x32,需要兩片SED1520組成,由E1、E2分別選通,以控制顯示屏的左右兩半屏。圖形液晶顯示模塊有兩種連接方式。一種為直接訪問方式,一種為間接
17、控制方式。本設(shè)計采用直接控制方式。直接控制方式就是將液晶顯示模塊的接口作為存儲器或IO 設(shè)備直接掛在計算機總線上。計算機通過地址譯碼控制 E1和 E2的選通;讀寫操作信號 RW由地址線 A1控制;命令/數(shù)據(jù)寄存器選擇信號 AO 由地址線 A0控制。實際電路如圖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 液晶屏顯示控
18、制電路2.3.2 SED1520的特性內(nèi)置顯示RAM區(qū)RAM容量為2560(32行80列)位。RAM中的1位數(shù)據(jù)控制液晶屏上一個點的亮滅狀態(tài):“1”表示亮,“0”表示暗。它具有16個行驅(qū)動口和16個列驅(qū)動口,并可級聯(lián)兩個SED1520實現(xiàn)32行驅(qū)動。還可直接與80系列微處理器相連,亦可直接與68系列微處理器相連。其驅(qū)動占空比為116或132。并可以與SED1520配合使用,以便擴展列驅(qū)動口數(shù)目。2.3.3 SED1520指令與顯示RAM結(jié)構(gòu)SED1520指令系統(tǒng)比較簡單,共13條,除讀狀態(tài)指令、讀顯示RAM數(shù)據(jù)指令外,其他指令均為寫操作,并且讀寫指令均為單字節(jié)指令。在送出每條指令時,必須進行控
19、制器狀態(tài)檢測,狀態(tài)字節(jié)的含義如下: D7:1/0,模塊忙/準(zhǔn)備就緒; D5:1/0,模塊顯示關(guān)/開; D4:1/0,模塊復(fù)位/正常; D3-D0:未用。 在指令使用中,關(guān)鍵要分清顯示行、列設(shè)置和顯示頁面設(shè)置的關(guān)系。單片SED1520可驅(qū)動61×16液晶屏,其內(nèi)部顯示RAM相對于COM0每8行為一個顯示頁面。本設(shè)計所用的字符液晶模塊由兩塊SED1520級聯(lián)驅(qū)動,其中一個工作在主工作方式下,另一個工作在從方式下,主工作方式SED1520負(fù)責(zé)上半屏16行的驅(qū)動和左半屏的61列驅(qū)動,從工作方式的SED1520則負(fù)責(zé)下半屏16行的驅(qū)動和右半屏的61列驅(qū)動,使能信號E1、E2用來區(qū)分具體控制的是
20、那一片SED1520。這樣兩片SED1520級聯(lián)可驅(qū)動122×32圖形點陣液晶顯示屏,可完成圖形顯示,也可顯示七個半(16×16點陣)漢字。2.4 定時器/計數(shù)器的結(jié)構(gòu)16位的定時/計數(shù)器分別由兩個8位專用寄存器組成,即:T0由TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。其訪問地址依次為8AH-8DH。這些寄存器是用于存放定時或計數(shù)初值的。此外,其內(nèi)部還有一個8位的定時器方式寄存器TMOD和一個8位的定時控制寄存器TCON。這些寄存器之間是通過內(nèi)部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式;TCON主要是用于控制定時器的啟動停止,此外TCON還可
21、以保存T0、T1的溢出和中斷標(biāo)志。當(dāng)定時器工作在計數(shù)方式時,外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。定時器/計數(shù)器的結(jié)構(gòu)原理圖如圖2.4-1所示。圖2.4-1 定時器/計數(shù)器的結(jié)構(gòu)原理圖2.5 定時計數(shù)器的原理16位的定時器/計數(shù)器實質(zhì)上就是一個加1計數(shù)器,其控制電路受軟件控制、切換。當(dāng)定時器/計數(shù)器為定時工作方式時,計數(shù)器的加1信號由振蕩器的12分頻信號產(chǎn)生,即每過一個機器周期,計數(shù)器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統(tǒng)的振蕩頻率有關(guān)。因一個機器周期等于12個振蕩周期,所以計數(shù)頻率 fcount=1/12osc。如果晶振為12MHz,則計數(shù)周期為: T=1/(
22、12×106)Hz×1/12=1s 。這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當(dāng)選擇定時器的長度(如8位、13位、16位等)。當(dāng)定時器/計數(shù)器為計數(shù)工作方式時,通過引腳T0和T1對外部信號計數(shù),外部脈沖的下降沿將觸發(fā)計數(shù)。計數(shù)器在每個機器周期的S5P2期間采樣引腳輸入電平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數(shù)器加1。此后的機器周期S3P1期間,新的計數(shù)值裝入計數(shù)器。所以檢測一個由1至0的跳變需要兩個機器周期,故外部事件的最高計數(shù)頻率為振蕩頻率的1/24。例如,如果選用12MHz晶振,則最高計數(shù)頻率為0.5MHz。雖然對外部輸
23、入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數(shù)脈沖的高電平與低電平保持時間均需在一個機器周期以上。 當(dāng)CPU用軟件給定時器設(shè)置了某種工作方式之后,定時器就會按設(shè)定的工作方式獨立運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU 當(dāng)前操作。CPU也可以重新設(shè)置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。2.6 頻率測量本設(shè)計所采用的霍爾傳感器是由一個磁鋼和一個霍爾器件組成的。磁鋼被貼在非磁性圓盤上,跟著圓盤一起旋轉(zhuǎn)。此霍爾器件就固定在圓盤的附近,工作時,圓盤每轉(zhuǎn)動一圈,霍爾器件就會產(chǎn)生一個脈沖。這里的一
24、個脈沖就代表了一個圓盤的周長。在本設(shè)計中,霍爾傳感器產(chǎn)生的脈沖將被送到單片機的內(nèi)部定時計數(shù)器timer1的T1口。內(nèi)部的定時計數(shù)器Timer0工作在定時狀態(tài),Timer1工作在計數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設(shè)計中,Timer0所產(chǎn)生的是0.5秒的定時。Timer1將對0.5秒內(nèi)對加到T1腳的脈沖進行計數(shù)。假設(shè)0.5秒內(nèi)timer1計數(shù)到N個脈沖,則圓盤的轉(zhuǎn)動頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進行處理,即可轉(zhuǎn)化為車速。對脈沖數(shù)進行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。本設(shè)計中開辟了兩個字節(jié)的數(shù)
25、據(jù)區(qū)存儲累加脈沖數(shù)據(jù),最多能計數(shù)65536個脈沖,也即131072 米(假設(shè)車輪周長2m)。3 系統(tǒng)硬件設(shè)計3.1 信號預(yù)處理電路它由二級電路構(gòu)成,第一級是由開關(guān)三極管組成的零偏置放大器,采用開關(guān)三極管可以保證放大器具有良好的高頻響應(yīng)。當(dāng)輸入信號為零或負(fù)電壓時,三極管截止,電路輸出高電平;而當(dāng)輸入信號為正電壓時,三極管導(dǎo)通,此時輸出電壓隨著輸入電壓的上升而下降,這使得速度里程表既可以測量任意方波信號的頻率,也可以測量正弦波信號的頻率。由于放大器的放大功能降低了對待測信號的幅度要求,因此,系統(tǒng)能對任意大于0.5V的正弦波和脈沖信號進行測量。預(yù)處理電路的第二級采用帶施密特觸發(fā)器的反相器CT74LS
26、14來把放大器生成的單相脈沖轉(zhuǎn)換成與COMS電平相兼容的方波信號同時將輸出信號加到單片機的P3.2口上。系統(tǒng)信號預(yù)處理電路如圖3.1-1所示。圖3.1-1 系統(tǒng)信號預(yù)處理電路3.2 施密特觸發(fā)器利用施密特觸發(fā)器狀態(tài)轉(zhuǎn)換過程中的正反饋,可以把邊沿變化緩慢的周期性信號變換為邊沿很陡的矩形脈沖信號。輸入的信號只要幅度大于VT+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號。從傳感器得到的矩形脈沖經(jīng)傳輸后往往發(fā)生波形畸變。當(dāng)傳輸線上的電容較大時,波形的上升沿將明顯變壞;當(dāng)傳輸線較長,而且接收端的阻抗與傳輸線的阻抗不匹配時,在波形的上升沿和下降沿將產(chǎn)生振蕩現(xiàn)象;當(dāng)其他脈沖信號通過導(dǎo)線間的分布電容
27、或公共電源線疊加到矩形脈沖信號時,信號上將出現(xiàn)附加的噪聲。無論出現(xiàn)上述的那一種情況,都可以通過用施密特反相觸發(fā)器整形而得到比較理想的矩形脈沖波形。只要施密特觸發(fā)器的VT+和VT-設(shè)置得合適,均能受到滿意的整形效果。施密特觸發(fā)器對脈沖整形圖如圖3.2-1所示。圖3.2-1 施密特觸發(fā)器對脈沖整形圖3.3 液晶顯示電路和數(shù)據(jù)存儲電路本設(shè)計的顯示部分采用液晶顯示模塊LCM0825,液晶顯示模塊與單片機接口電路圖如圖3.3-1所示。LCM0825是8位段碼式液晶顯示模塊,它內(nèi)部集成有LCD控制器、LCD驅(qū)動器和RAM,因而可方便顯示數(shù)據(jù)的編程。液晶顯示模塊采用3-4線串行數(shù)據(jù)輸入,可直接與單片機接口。
28、由于串行接口方式節(jié)省了所需的口線和系統(tǒng)資源,因而使系統(tǒng)具有較高的資源利用率。該模塊可在2.7V-5.2V電壓下工作,其低功耗及背光可調(diào)特性使得設(shè)計更具有經(jīng)濟性和通用性。LCM0825能夠顯示8位數(shù)據(jù),每一個數(shù)據(jù)均以8段碼的形式放在其內(nèi)部顯示RAM區(qū),并用模塊內(nèi)RAM的兩個存儲地址來放置一個數(shù)據(jù)的8段碼。8位數(shù)據(jù)共占用內(nèi)部16個地址。每一個數(shù)據(jù)位的8段碼存放形式及高低地址存放段碼的順序都和表1所列的第8位數(shù)據(jù)的8段碼存放格式一樣,只是段碼的存放地址不同。所以,編程時一定要考慮數(shù)據(jù)的存放地址和形式。在使用該液晶顯示模塊時,VCC與VLCD之間可用一個50K的電位器來調(diào)整背光。圖3.3-1 液晶顯示
29、模塊與單片機接口電路圖4 系統(tǒng)軟件設(shè)計整個程序的設(shè)計以GX-ARM-S3C2410試驗箱為平臺,其中速度和里程的計算都采取了近似處理。本系統(tǒng)軟件采用模塊化設(shè)計方法。整個系統(tǒng)由初始化模塊、電機轉(zhuǎn)速控制模塊、電機轉(zhuǎn)向顯示模塊、頻率測量模塊、速度,里程顯示模塊、漢字顯示模塊以及其他功能模塊組成。系統(tǒng)程序流程總框圖如圖3-1所示。程序設(shè)計中,以60H、61H、62H三個地址為數(shù)據(jù)緩沖區(qū),60H(DATA1)用于存儲每0.5s 計數(shù)到的脈沖數(shù),用于計算速度;61H(DATA2)、62H(DATA3)兩個地址用于存儲計數(shù)到的脈沖的累加數(shù)據(jù),用于計算里程。 開始初始化顯示漢字 延時清屏顯示漢字 電機控制 方
30、向顯示計數(shù)脈沖速度 里程顯示3-1 系統(tǒng)程序流程總框圖4.1 電機轉(zhuǎn)速控制模塊程序設(shè)計電機轉(zhuǎn)速的控制模塊由指撥開關(guān)、單片機、DAC0832數(shù)模變換芯片組成。指撥開關(guān)K0-K7接單片機的P10-P17(P1口),通過指撥開關(guān)可輸入數(shù)據(jù)0-255,單片機將指撥開關(guān)輸入的數(shù)據(jù)輸出到DAC0832數(shù)模變換芯片,通過數(shù)模變換,轉(zhuǎn)換成-8V+8V的電壓驅(qū)動直流電機。從而達到對電機轉(zhuǎn)速的控制。輸入數(shù)據(jù)等于128時,輸出電壓為0V;數(shù)據(jù)大于128時,輸出電壓大于0V;輸入數(shù)據(jù)小于128時,輸出電壓小于0V。電機轉(zhuǎn)速控制模塊程序設(shè)計如下:mov p1,#0ffh ;設(shè)置P1口為輸入口mov dptr,#cs08
31、32mov A, p1movx dptr,A4.2 頻率測量模塊程序設(shè)計霍爾傳感器產(chǎn)生的脈沖被送到單片機的內(nèi)部定時/計數(shù)器timer1的T1口。內(nèi)部定時/計數(shù)器Timer0工作在定時狀態(tài),Timer1工作在計數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設(shè)計中Timer0產(chǎn)生0.5秒的定時。Timer1將對0.5秒內(nèi)對加到T1腳的脈沖進行計數(shù)。我們假設(shè)0.5秒內(nèi)timer1計數(shù)到了第N個脈沖。這時,圓盤的轉(zhuǎn)動頻率就為為 N / 0.5=2N。頻率測量模塊程序設(shè)計如下:JISHU: MOV IE,#10001010B ;打開中斷開關(guān) MOV TMOD,#MODE ;設(shè)定內(nèi)部定時器/計數(shù)器的
32、工作模式 MOV SP,#70H MOV 40H,#00H MOV TH1,#00H ;將timer1的計數(shù)寄存器賦初值0 MOV TL1,#00H ;將timer1的計數(shù)寄存器賦初值0 SETB TR1 ;啟動timer1AA: CLR F1 ;標(biāo)志位賦0 MOV TH0,#03CH ;定時器寫入初值 MOV TL0,#0B0H SETB TR0 ;打開定時器timer0 JNB F1 , $ ;等待50ms INC 40H MOV A, 40H CJNE A, #09H,AA ;定時中斷重復(fù)10次 CLR TR1 ;關(guān)閉計數(shù)器timer1 MOV DATA1,TL1 ;取出timer1計數(shù)
33、值給DATA1 MOV A,DATA1 ADD A,DATA2 MOV DATA2,A ;將計數(shù)值累加到DATA2 JNC BB ;檢查計數(shù)是否溢出 INC DATA3 ;有溢出則DATA3加1BB: RET;-定時中斷子程序TIMER : CLR TR0 SETB F1 RETI當(dāng)Timer0工作在模式1時,TLO、THO計數(shù)寄存器各使用8位,從計算式 28 = 256,可以得出在設(shè)置計數(shù)初值時,把計數(shù)起點的值除以256,再將其余數(shù)放入TLO計數(shù)寄存器,將商數(shù)放入THO計數(shù)寄存器。這個實驗系統(tǒng)所采用的是12MHz的晶振,定時器所計數(shù)的脈沖的周期為1us。由此,我們將這樣設(shè)計:每50ms產(chǎn)生一
34、次定時中斷,就需要計數(shù)50000個脈沖,則裝入計數(shù)寄存器的計數(shù)初值就為6553650000 = 15536,這時,裝入THO計數(shù)寄存器的初值就為15536/256 = 60(03CH), 裝入TLO計數(shù)寄存器的初值為176(0B0H)。Timer0中斷子程序流程圖如圖3.2-1所示。Timer關(guān)閉定時器F1=1返回 圖3.2-1 Timer0中斷子程序流程圖主程序流程圖如圖3.2-2所示。圖3.2-2 主程序流程圖開始初始化設(shè)定計數(shù)器初值,并啟動F1=0定時器賦初值,并啟動F1=0?yesno40H加140H=9 ?NoYes停止計數(shù),取出計數(shù)值將計數(shù)值累加到DATA2CY=0 ?YESNoD
35、ATA3加1返回主程序4.3 液晶顯示程序的設(shè)計本設(shè)計中速度和里程的數(shù)據(jù)由液晶顯示模塊顯示,所用的液晶顯示模塊由SED1520芯片驅(qū)動,首先必須對液晶顯示模塊進行初始化,編寫相應(yīng)的字庫,編寫讀寫程序等。液晶顯示程序的設(shè)計包括了初始化程序、清屏程序、寫指令代碼子程序、寫顯示數(shù)據(jù)子程序、讀顯示數(shù)據(jù)子程序、中文顯示子程序、數(shù)字顯示程序以及中文字庫和數(shù)字字庫的編寫。4.4 速度、里程顯示程序的設(shè)計本設(shè)計中霍爾傳感器產(chǎn)生的脈沖被送到單片機的內(nèi)部定時計數(shù)器timer1的T1口。內(nèi)部定時計數(shù)器Timer0工作在定時狀態(tài),Timer1工作在計數(shù)狀態(tài)。Timer0和Timer1均工作在模式1。本設(shè)計中Timer
36、0產(chǎn)生0.5秒的定時。Timer1將對0.5秒內(nèi)對加到T1腳的脈沖進行計數(shù)。假設(shè)0.5秒內(nèi)timer1計數(shù)到N個脈沖。則圓盤的轉(zhuǎn)動頻率為 N / 0.5=2N 。若是將磁鋼貼于汽車的輪軸上,則汽車輪子每轉(zhuǎn)一圈,霍爾器件產(chǎn)生一個脈沖。對脈沖頻率進行處理,即可轉(zhuǎn)化為車速。對脈沖數(shù)進行累加再乘以輪子的長度,即可得到里程數(shù)據(jù)。本程序?qū)ζ囘\行的實際情況進行模擬。設(shè)計程序時假設(shè)汽車輪子的周長約為2m,最后在顯示屏顯示的速度單位是km/h,里程單位是km。速度的計算如下:若0.5秒計數(shù)到N個脈沖,則輪子的轉(zhuǎn)動頻率為2N,車速為2N×2 m/s,也即2N×2×3.6 km/h
37、。設(shè)計中作近似處理,處理為14N km/h 。顯示時先顯示百位,再依次顯示十位、個位。程序如下:;-速度處理顯示子程序SPEED: PUSH A MOV A,DATA1 MOV B,#0EH ;計數(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
38、 LCALL BB1 ;調(diào)用速度寫顯示數(shù)據(jù)程序 MOV CODE_ , A ;個位顯示字庫代碼 MOV CTEMP, #10H LCALL BB1 MOV DATA1,#00H ;數(shù)據(jù)緩沖區(qū)清零 POP A RETDATA2,DATA3存儲計數(shù)到的脈沖總數(shù),DATA2能存儲255個脈沖,每次計數(shù)溢出,則DATA3加1,DATA3里的數(shù)據(jù)權(quán)重為256.這樣兩個字節(jié)的數(shù)據(jù)能計數(shù)最多65536個脈沖,也即131072 米 。130多公里。實際制作里程表時只要適當(dāng)增加數(shù)據(jù)緩沖區(qū)的數(shù)量,即可對最大顯示里程進行擴充。程序設(shè)計過程中,對里程數(shù)據(jù)的顯示作了近似處理。程序如下:;-里程處理顯示子程序MILAGE
39、: PUSH A MOV A,DATA3 MOV 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 ; 顯示個位里程數(shù)據(jù) DIV AB MOV CODE_ ,A MOV CTEMP, #10H MOV A,B LCALL BB2 MOV CODE_ ,#0AH MOV CTEMP, #17H ;顯示小數(shù)點 LCALL
40、BB2 CJNE A,#00H, M1 MOV A,DATA2 ;DATA2除以50得到小數(shù)點MOV B,#032H 后第一位 DIV AB MOV CODE_ , A MOV CTEMP, #1EH MOV A,B LCALL BB2 MOV B,#05H ;余數(shù)再除以5得到小數(shù)點后第二位 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公里時代碼加5 MOV CODE_, A MOV CTEMP, #1EH MOV A
41、,B LCALL BB2 MOV B,#05H 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è)計該程序?qū)闹笓荛_關(guān)
42、輸入的數(shù)據(jù)作出反應(yīng),若輸入的數(shù)據(jù)為128,則在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 MO
43、V PAGE_,#00H ;顯示“0” MOV 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 P
44、AGE_,#00H ;反轉(zhuǎn) MOV A,CTEMP ADD A,#2aH MOV COLUMN,A MOV CODE_,#08H LCALL CCW_PR RET5 軟件調(diào)試程序的調(diào)試過程是一個比較復(fù)雜的過程,有些需要高度的技巧和一定的方法。一般的編程軟件都提供單步、單步越過、斷點、運行到光標(biāo)處等基本方法,一般掌握這幾種基本方法就可以解決絕大部分問題。經(jīng)過長時間的調(diào)試實踐之后自然就可以掌握一定的調(diào)試技巧,即熟能生巧。 5.1 程序的查錯手段單片機的應(yīng)用系統(tǒng)均需借助對應(yīng)的開發(fā)系統(tǒng)(或裝置)進行在線仿真,對應(yīng)用系統(tǒng)的軟、硬件進行全面地檢測與調(diào)試。各種開發(fā)系統(tǒng)或裝置均提供以下查錯手段。首先有單步執(zhí)行。采用單步執(zhí)行操作可對應(yīng)用程序每步執(zhí)行一條指令,可逐條檢查這一段程序的執(zhí)行過程是否符合原設(shè)計要求??芍苯硬槌鲥e誤所在。宏單步可執(zhí)行一段程序,如一步就可執(zhí)行完整個循環(huán)程序段。再次,有斷點設(shè)置全速運行可在程序有疑慮的地方設(shè)置斷點,從設(shè)置的起始地址開始,以全速或非全速方式向設(shè)定的斷點處運行。如果這段程序無語法或邏輯上的錯誤,則連續(xù)運行到設(shè)置的斷點處停止運行,返回監(jiān)控狀態(tài)。如果有錯誤,則在錯誤處停止運行,如果進入死循環(huán)或者程序跑飛,就永遠(yuǎn)不會停止運行。全速斷點運行為檢查實時性及中斷響應(yīng)處理等提供了方便。另外,還有顯示器窗口檢查和實
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度電商直播平臺運營合作協(xié)議4篇
- 二零二五年度船舶貨運合同船舶融資租賃范本4篇
- 二零二五年度家電產(chǎn)品綠色認(rèn)證與2025年度環(huán)保標(biāo)準(zhǔn)執(zhí)行合同4篇
- 2025年度出租房屋用電安全設(shè)施更新改造合同范本4篇
- 二零二五年度數(shù)據(jù)中心運維人員勞務(wù)派遣服務(wù)協(xié)議
- 2025年度畜牧養(yǎng)殖行業(yè)國際市場拓展合作合同3篇
- 二零二五年度水電工程合同糾紛調(diào)解與仲裁服務(wù)合同樣本4篇
- 二零二四年度藝術(shù)衍生品生產(chǎn)與銷售合作協(xié)議3篇
- 2025年度電梯IC卡管理系統(tǒng)智能化改造合同3篇
- 二零二五年度影視特效合成拍攝合同
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 中醫(yī)護理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報告
- 中國2型糖尿病運動治療指南 (2024版)
- 貨物運輸安全培訓(xùn)課件
- 統(tǒng)編版高中政治選擇性必修2《法律與生活》知識點復(fù)習(xí)提綱詳細(xì)版
- 前端年終述職報告
- 2024小說推文行業(yè)白皮書
- 特殊感染手術(shù)管理考試試題及答案
- 市人民醫(yī)院關(guān)于開展“改善就醫(yī)感受提升患者體驗主題活動”2023-2025年實施方案及資料匯編
- 政績觀存在的問題及整改措施范文(7篇)
評論
0/150
提交評論