|
智能測(cè)控系統(tǒng)原理課程大作業(yè) 作業(yè)題目:具有實(shí)時(shí)時(shí)鐘顯示的自行車?yán)锍瘫淼脑O(shè)計(jì) 學(xué)院名稱:電氣工程學(xué)院 專業(yè)班級(jí):測(cè)控1303班 學(xué)生姓名: 劉*濤 學(xué)號(hào):230*319 完成時(shí)間: 2016-6 任課教師: | 智能測(cè)控系統(tǒng)大作業(yè)任務(wù)書 | | | | | | | | 具有實(shí)時(shí)時(shí)鐘顯示的自行車?yán)锍瘫淼脑O(shè)計(jì) | | | | 實(shí)現(xiàn)以下功能: - 自行車的速度、里程的計(jì)算顯示
- 當(dāng)前環(huán)境溫度測(cè)量與顯示
- 按鍵調(diào)整自行車的半徑
- 具有實(shí)時(shí)時(shí)間顯示
| | - 能夠?qū)崿F(xiàn)速度的測(cè)量,里程的計(jì)算與顯示,并且能夠修改自行車的半徑
- 能夠顯示溫度,當(dāng)前時(shí)間
- 設(shè)計(jì)總體的硬件連接
- 設(shè)計(jì)MCU測(cè)控源程序并完成調(diào)試。
- 畫出相關(guān)的子程序流程圖及其實(shí)現(xiàn)的C語言代碼;
|
目 錄
摘要 1 設(shè)計(jì)需求分析 1.1 設(shè)計(jì)目的 1.2 市場(chǎng)需求分析 1.3 主要功能 2 特色與創(chuàng)新 2.1 超低功耗微控制器 2.2 彩屏顯示 3 功能規(guī)劃 3.1 溫度測(cè)量 3.2 時(shí)間顯示 3.3 自行車半徑的調(diào)整 3.4 速度里程的計(jì)算 4 硬件組成 4.1 硬件組成框圖 4.2 整體原理圖 4.3 ds18b20溫度傳感器 4.4 DS3231時(shí)鐘模塊 4.5 霍爾傳感器 4.6 TFT彩屏 5 軟件架構(gòu)和開發(fā)環(huán)境 5.1 程序流程圖 5.2 速度測(cè)量的原理 5.3 程序調(diào)試 總結(jié) 參考文獻(xiàn) 附錄一 元件清單 附錄二 源程序 附錄三 實(shí)物展示
摘要隨著居民生活水平的不斷提高、低碳生活的提出,自行車不再僅僅是普通的運(yùn)輸、代步的工具,而是成為人們娛樂、休閑、鍛煉的首選,騎自行車出行越來成為人們出行的首要選擇,自行車?yán)锍瘫砟軌驖M足人們最基本的需求,讓人們能清楚地知道當(dāng)前的速度、里程等物理量。但是目前我們買的自行車好多都沒有速度里程表,我們無法知道騎行的速度和已經(jīng)騎行的里程數(shù);因此就有了這樣的想法:能不能自己設(shè)計(jì)一個(gè)自行車?yán)锍瘫�,既�?jīng)濟(jì)又實(shí)用。剛好我們這學(xué)期開設(shè)了智能測(cè)控系統(tǒng)這門課程,學(xué)了MSP430g2553這款微控制器,于是就想利用這款單片機(jī)來設(shè)計(jì)一個(gè)自行車?yán)锍瘫�。其�?shí)原理也是比較簡(jiǎn)單,通過傳感器采集自行車輪在規(guī)定時(shí)間內(nèi)轉(zhuǎn)的圈數(shù),然后通過單片機(jī)進(jìn)行處理,最后用LCD顯示屏將想要得到的數(shù)據(jù)顯示出來,就可以實(shí)現(xiàn)自行車的測(cè)速,因此需要我們選擇合適的傳感器,編寫相應(yīng)的程序來處理數(shù)據(jù)。本設(shè)計(jì)所選的是霍爾傳感器和1.44寸TFT彩屏模塊來實(shí)現(xiàn)自行車的測(cè)速和顯示的。 1 設(shè)計(jì)需求分析1.1 設(shè)計(jì)目的隨著低碳環(huán)保理念的提出,自行車越來越受人們的歡迎,雖然市面上也有好多自行車?yán)锍瘫�,但是自己剛好學(xué)了430微處理器,因此就像能不能用430做一款自行車?yán)锍瘫�,不僅可以更好的學(xué)習(xí)這門課程,而且還可以吧學(xué)到的理論知識(shí)用到實(shí)踐中去,是一次很好的機(jī)會(huì),并且,如果自己做的好的話這也是一個(gè)很大的市場(chǎng)。 自世界上第一輛自行車問世至今已有200多年的歷史了。18世紀(jì)末,法國(guó)人西夫拉克發(fā)明了最早的自行車。這輛最早的自行車是木制的,其結(jié)構(gòu)比較簡(jiǎn)單。世界上第一批真正實(shí)用型的自行車出現(xiàn)于19世紀(jì)初。在20世紀(jì),自行車在中國(guó)獲得了前所未有的普及和發(fā)展。從某種意義上來說,中國(guó)是一個(gè)自行車的王國(guó)。每天清晨和落日時(shí)分,滾滾車流在中國(guó)的城市中碾動(dòng),這是最為壯觀的一道風(fēng)景,這是一條現(xiàn)代中國(guó)流動(dòng)的長(zhǎng)城。 隨著居民生活水平的不斷提高,自行車不再僅僅是普通的運(yùn)輸、代步的工具,而是成為人們娛樂、休閑、鍛煉的首選。因此,人們希望自行車的功用更強(qiáng)大,能給人們帶來更多的方便。自行車?yán)锍瘫碜鳛樽孕熊嚨囊淮筝o助工具也正是隨著這個(gè)要求而迅速發(fā)展的,其功能也逐漸從單一的里程顯示發(fā)展到速度、時(shí)間顯示,甚至有的還具有測(cè)量騎車人的心跳、顯示騎車人熱量消耗等功能。本設(shè)計(jì)采用了MSP430系列單片機(jī)設(shè)計(jì)一種體積小、操作簡(jiǎn)單的便攜式自行車?yán)锍瘫�,它能自�?dòng)地顯示當(dāng)前自行車行走的距離、運(yùn)行的速度、當(dāng)前的時(shí)間、實(shí)時(shí)的溫度等。
1.2 市場(chǎng)需求分析隨著自行車越來越多的被人們使用,自己如果能設(shè)計(jì)一款功耗低、成本低,既經(jīng)濟(jì)又實(shí)用的自行的自行車?yán)锍瘫�,也是非常有市�?chǎng)前景的,只是后期的話再對(duì)自己的作品加以改進(jìn),更加的完善就行。目前好多城市都有刷卡租自行車的裝置,我們學(xué)校在今年也開始實(shí)施,這說明自行車在未來一段時(shí)間應(yīng)該還是非常流行的,人們之所以現(xiàn)在又開始這么喜歡使用自行車,我感覺主要有以下幾方面的原因: - 現(xiàn)在私家車越來越多,我們會(huì)經(jīng)常聽說,上班早高峰、下班晚高峰,開車的還沒有走路的快,交通擁堵人們也許早已習(xí)以為常了,因此人們就又開始重視自行車的使用。
- 人們現(xiàn)在缺少鍛煉,職業(yè)病越來越多,騎自行車不僅可以給人們的上班提供方便,還可以鍛煉身體,一舉兩得。
- 低碳生活的提出,人們越來越重視環(huán)境保護(hù)。
1.3 主要功能本設(shè)計(jì)主要實(shí)現(xiàn)的是自行車的測(cè)速、里程的計(jì)算,另外還加入了實(shí)時(shí)時(shí)間的顯示,還可以通過按鍵調(diào)整自行車的半徑,可以滿足各種規(guī)格的自行車,又多增加了溫度顯示,當(dāng)我們外出時(shí)可以給我們提提供實(shí)時(shí)的環(huán)境溫度信息。通過里程表,可以給我們騎車出行實(shí)時(shí)提供騎行的一些速度里程溫度等信息。供電采用的5V供電,供電電源比較常見。
2 特色與創(chuàng)新2.1 超低功耗微控制器本款自行車?yán)锍瘫聿捎玫氖荰I公司的MSP430g2553微控制器,MSP430 單片機(jī)之所以有超低的功耗,是因?yàn)槠湓诮档托酒碾娫措妷汉挽`活而可控的運(yùn)行時(shí)鐘方面都有其獨(dú)到之處。 首先,MSP430 系列單片機(jī)的電源電壓采用的是1.8-3.6V 電壓。因而可使其在1MHz 的時(shí)鐘條件下運(yùn)行時(shí),芯片的電流最低會(huì)在165μA左右,RAM保持模式下的最低功耗只有0.1μA。 其次,獨(dú)特的時(shí)鐘系統(tǒng)設(shè)計(jì)。在 MSP430 系列中有兩個(gè)不同的時(shí)鐘系統(tǒng):基本時(shí)鐘系統(tǒng)、鎖頻環(huán)(FLL 和FLL+)時(shí)鐘系統(tǒng)和DCO數(shù)字振蕩器時(shí)鐘系統(tǒng)�?梢灾皇褂靡粋€(gè)晶體振蕩器(32.768kHz)DT-26 OR DT-38,也可以使用兩個(gè)晶體振蕩器。由系統(tǒng)時(shí)鐘系統(tǒng)產(chǎn)生 CPU 和各功能所需的時(shí)鐘。并且這些時(shí)鐘可以在指令的控制下,打開和關(guān)閉,從而實(shí)現(xiàn)對(duì)總體功耗的控制。 由于系統(tǒng)運(yùn)行時(shí)開啟的功能模塊不同,即采用不同的工作模式,芯片的功耗有著顯著的不同。在系統(tǒng)中共有一種活動(dòng)模式(AM)和五種低功耗模式(LPM0~LPM4)。在實(shí)時(shí)時(shí)鐘模式下,可達(dá)2.5μA ,在RAM 保持模式下,最低可達(dá)0.1μA 。 2.2 彩屏顯示這款自行車?yán)锍瘫聿捎玫氖?.44寸的128*128分辨率的TFT彩屏顯示,可以顯示16*16的漢字8行8列,足夠顯示各種想要的信息,并且是24位真彩屏,不僅實(shí)用,而且好看,價(jià)格也比較便宜。 3 功能規(guī)劃3.1 溫度測(cè)量溫度采用DS18B20數(shù)字溫度傳感器,不用再進(jìn)行模數(shù)裝換,使用方便,溫度測(cè)量誤差小,連接簡(jiǎn)單,價(jià)格便宜,多種特點(diǎn)綜合分析后決定采用該數(shù)字溫度傳感器。 3.2 時(shí)間顯示時(shí)鐘模塊采用DS3231,DS3231內(nèi)部集成了TCXO、RTC和32.768kHz晶體,并采用低成本、標(biāo)準(zhǔn)型、16引腳SOIC封裝。在-40℃至+85℃溫度范圍內(nèi),計(jì)時(shí)精度為±2分鐘/年。這一出色性能使DS3231成為當(dāng)前要求高計(jì)時(shí)精度應(yīng)用的最佳解決方案。因此本設(shè)計(jì)采用了該時(shí)鐘模塊,價(jià)格便宜,、精度高。 3.3 自行車半徑的調(diào)整由于每種自行車的半徑不一樣,在進(jìn)行速度和里程的計(jì)算的時(shí)候需要用到自行車的半斤,從而計(jì)算出速度和里程,因此,為了使里程變能夠適應(yīng)各種規(guī)格的自行車,在安裝的調(diào)試的時(shí)候需要對(duì)半徑進(jìn)行修改,而如果不加按鍵調(diào)整的話,每次修改半徑都要在程序中輸入對(duì)應(yīng)規(guī)格型號(hào)的自行車半斤,這樣可移植性就差了,不能量化生產(chǎn), 3.4 速度里程的計(jì)算速度計(jì)算原理是用的微處理器的計(jì)數(shù)器,大概原理:首先計(jì)數(shù)器清零,開始計(jì)數(shù),延時(shí)一秒,停止計(jì)數(shù),讀取計(jì)數(shù)器中的數(shù)值,計(jì)數(shù)值即是測(cè)得的頻率,通過機(jī)械結(jié)構(gòu)來得到轉(zhuǎn)速,通過半徑計(jì)算出速度和里程。
4 硬件組成4.1 硬件組成框圖本設(shè)計(jì)設(shè)計(jì)的自行車?yán)锍瘫淼挠布M成框圖如圖4.1-1所示:
1.001.jpg (25.36 KB, 下載次數(shù): 145)
下載附件
2017-7-28 02:57 上傳
圖4.1-1 硬件組成框圖 4.2 整體原理圖
1.002.jpg (51.17 KB, 下載次數(shù): 152)
下載附件
2017-7-28 02:57 上傳
4.3 ds18b20溫度傳感器4.3.1 DS18B20功能特點(diǎn) ①采用單總線技術(shù),與單片機(jī)通信只需要一根I/O線,在一根線上可以掛接多個(gè)DS18B20。 ②每只DS18B20具有一個(gè)獨(dú)有的,不可修改的64位序列號(hào),根據(jù)序號(hào)訪問對(duì)應(yīng)的器件。 ③低壓供電,電源范圍從3.0~5.5V,可以本地供電,也可以直接從數(shù)據(jù)線竊取電源(寄生電源方式)。 ④測(cè)溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi)誤差為±0.5℃。 ⑤可編輯分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃,0.25℃,0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測(cè)溫。 ⑥用戶可自設(shè)定報(bào)警上下限溫度。 ⑦報(bào)警搜索命令可識(shí)別和尋址超過程序限定溫度(溫度報(bào)警條件)的器件。 ⑧DS18B20的分辨率由用戶通過EEPROM設(shè)置為9~12位。 ⑨DS18B20可將檢測(cè)到溫度值直接轉(zhuǎn)化為數(shù)字量,并通過串行通信的方式與主控制器進(jìn)行數(shù)據(jù)通信。 ⑩負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因?yàn)榘l(fā)熱而燒毀,只是不能正常工作。 在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。 4.3.2 工作原理DS18B20在出廠時(shí)默認(rèn)配置為12位,其中最高位為符號(hào)位,即溫度值共11位,單片機(jī)在讀取數(shù)據(jù)時(shí),一次會(huì)讀2字節(jié)共16位,讀完后將低11位的二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)后再乘以0.0625便為所測(cè)的實(shí)際溫度值。另外,還需要判斷溫度的正負(fù)。前5個(gè)數(shù)字為符號(hào)位,這5位同時(shí)變化,我們只需要判斷11位就可以了。前5位為1時(shí),讀取的溫度為負(fù)值,且測(cè)到的數(shù)值需要取反加1再乘以0.0625才可以得到世紀(jì)的溫度值。前5位為0時(shí),讀取的溫度為正值,且溫度為正值時(shí),只需要將測(cè)得的數(shù)值乘以0.0625即可得到實(shí)際的溫度值。 DS18B20部分溫度值對(duì)應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)
1.003.jpg (35.34 KB, 下載次數(shù): 155)
下載附件
2017-7-28 02:57 上傳
4.4 DS3231時(shí)鐘模塊DS3231內(nèi)部集成了TCXO、RTC和32.768kHz晶體,并采用低成本、標(biāo)準(zhǔn)型、16引腳SOIC封裝。在-40℃至+85℃溫度范圍內(nèi),計(jì)時(shí)精度為±2分鐘/年。這一出色性能使DS3231成為當(dāng)前要求高計(jì)時(shí)精度應(yīng)用的最佳解決方案。而RTC的其它集成功能也擴(kuò)展了系統(tǒng)應(yīng)用領(lǐng)域,適合那些對(duì)計(jì)時(shí)精度要求極高的應(yīng)用。應(yīng)用包括:服務(wù)器、電表、安防及門禁控制系統(tǒng)、車隊(duì)管理、遠(yuǎn)程信息處理系統(tǒng)、GPS導(dǎo)航裝置、POS終端以及ATM。DS3231是低成本、高精度I2C實(shí)時(shí)時(shí)鐘(RTC),具有集成的溫補(bǔ)晶振(TCXO)和晶體。該器件包含電池輸入端,斷開主電源時(shí)仍可保持精確的計(jì)時(shí)。集成晶振提高器件的長(zhǎng)期精確度,并減少了生產(chǎn)線的元件數(shù)量。 DS3231的引腳功能說明如下:32kHz是32kHz頻率輸出;VCC用于主電源的DC引腳;INT/SQW為低電平有效中斷或方波輸出;RST是低電平有效復(fù)位引腳;NC表示無連接,外部必須接地;GND為地;VBAT為備用電源輸入;SDA為串行數(shù)據(jù)輸入、輸出;SCL為串行時(shí)鐘輸入。 RTC保存秒、分、時(shí)、星期、日期、月和年信息。少于31天的月份,將自動(dòng)調(diào)整月末的日期,包括閏年的修正。時(shí)鐘的工作格式可以是24小時(shí)或帶AM/PM指示的12小時(shí)格式。提供兩個(gè)可設(shè)置的日歷鬧鐘和一個(gè)可設(shè)置的方波輸出。DS3231采用I2C總線與系統(tǒng)微控制器進(jìn)行通信,I2C總線是由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備,由于接口直接在組件之上,因此I2C總線占用空間少,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本。它支持多主控,任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線。一個(gè)主控能夠控制信號(hào)的傳輸和時(shí)鐘頻率。I2C總線通過兩根連線(串行時(shí)鐘線SCL和雙向傳送SDA)實(shí)現(xiàn)半雙工同步數(shù)據(jù)傳輸,確保兩器件之間地址和數(shù)據(jù)信息的雙向傳輸。它采用器件地址的硬件設(shè)置方法(即每個(gè)器件具有一個(gè)確定的ID),通過軟件尋址,從而避免器件的片選信號(hào)線尋址,使硬件系統(tǒng)擴(kuò)展靈活簡(jiǎn)便。為保證通信正常,必須保證I2C總線上的數(shù)據(jù)能夠順利傳送。在數(shù)據(jù)開始傳送前,首先讓I2C接口進(jìn)行初始化。DS3231的I2C接口的初始化操作可通過微控制器在總線上發(fā)送一個(gè)有效START條件來實(shí)現(xiàn),因?yàn)槲⒖刂破鳟a(chǎn)生的START信號(hào)能夠終止DS3231的I2C接口當(dāng)前的數(shù)據(jù)收、發(fā)過程,并將該接口置于START條件后的待命狀態(tài)。但要發(fā)送一個(gè)有效的START條件,必須在DS3231釋放SDA數(shù)據(jù)線時(shí)才能實(shí)現(xiàn)。如果SDA數(shù)據(jù)線處于低電平狀態(tài),這時(shí),可以讓系統(tǒng)微控制器產(chǎn)生一個(gè)附加的SCL脈沖來迫使DS3231接口送出下一位數(shù)據(jù)。假設(shè)下一位數(shù)據(jù)仍然為邏輯“0”,就繼續(xù)產(chǎn)生附加的SCL脈沖,經(jīng)過多個(gè)SCL脈沖后,DS3231就會(huì)釋放SDA數(shù)據(jù)總線。完成I2C總線的初始化后,接著進(jìn)行控制和狀態(tài)寄存器的初始化設(shè)置,確定正確的數(shù)據(jù)范圍,就可以運(yùn)行相應(yīng)的測(cè)控程序。 除計(jì)時(shí)精度高之外,DS3231還其有一些其它功能,這些功能擴(kuò)展了系統(tǒng)主機(jī)的附加功能和選擇范圍。該器件內(nèi)部集成了一個(gè)非常精確的數(shù)字溫度傳感器,可通過I2C接口對(duì)其進(jìn)行訪問(如同時(shí)間一樣)。這個(gè)溫度傳感器的精度為±3℃。片上控制電路可實(shí)現(xiàn)自動(dòng)電源檢測(cè),并管理主電源和備用電源(即低壓電池)之間的電源切換。如果主電源掉電,該器件仍可繼續(xù)提供精確的計(jì)時(shí)和溫度,性能不受影響。 4.5 霍爾傳感器霍爾傳感器是對(duì)磁敏感的傳感元件,由磁鋼、霍耳元件等組成。測(cè)量系統(tǒng)的轉(zhuǎn)速傳感器選用CS3144的霍爾傳感器,其響應(yīng)頻率為250KHz,額定電壓為4.5-24(V)、檢測(cè)距離為10(mm)。其在大電流磁場(chǎng)或磁鋼磁場(chǎng)的作用下,能測(cè)量高頻、工頻、等各種波形電流。該傳感器具有測(cè)量精度高、電壓范圍寬、功耗小、輸出功率大等優(yōu)點(diǎn),廣泛應(yīng)用在高速計(jì)數(shù)、測(cè)頻率、測(cè)轉(zhuǎn)速等領(lǐng)域。輸出電壓4.5~24V,直流電源要有足夠的濾波電容,測(cè)量極性為S極。安裝時(shí)將一非磁性圓盤固定在電動(dòng)機(jī)的轉(zhuǎn)軸上,將磁鋼粘貼在圓盤邊緣,磁鋼采用永久磁鐵,其磁力較強(qiáng),霍爾元件固定在距圓盤1-10mm處。當(dāng)磁鋼與霍爾元件相對(duì)位置發(fā)生變化時(shí),通過霍爾元件周圍磁場(chǎng)強(qiáng)度就會(huì)發(fā)生變化。圓盤轉(zhuǎn)動(dòng),磁鋼靠近霍爾元件,穿過霍爾元件的磁場(chǎng)較強(qiáng),霍爾傳感器輸出低電平;當(dāng)磁場(chǎng)減弱時(shí),輸出高電平,從而使得在圓盤轉(zhuǎn)動(dòng)過程中,霍爾元件輸出連續(xù)脈沖信號(hào)�;魻栯妷弘S磁場(chǎng)強(qiáng)度的變化而變化,磁場(chǎng)越強(qiáng),電壓越高,磁場(chǎng)越弱,電壓越低,霍爾電壓值很小,通常只有幾個(gè)毫伏,但經(jīng)集成電路中的放大器放大,就能使該電壓放大到足以輸出較強(qiáng)的信號(hào)。若使霍爾集成電路起傳感作用,需要用機(jī)械的方法來改變磁感應(yīng)強(qiáng)度。下圖所示的方法是用一個(gè)轉(zhuǎn)動(dòng)的葉輪作為控制磁通量的開關(guān),當(dāng)葉輪葉片處于磁鐵和霍爾集成電路之間的氣隙中時(shí),磁場(chǎng)偏離集成片,霍爾電壓消失�;魻栃�(yīng)傳感器屬于被動(dòng)型傳感器,它要有外加電源才能工作,這一特點(diǎn)使它能檢測(cè)轉(zhuǎn)速低的運(yùn)轉(zhuǎn)情況。模塊的原理圖如圖4.4-1所示:
1.004.jpg (9.37 KB, 下載次數(shù): 121)
下載附件
2017-7-28 02:57 上傳
圖4.4-1 霍爾傳感器模塊原理圖 4.6 TFT彩屏TFT(Thin Film Transistor)即薄膜場(chǎng)效應(yīng)晶體管。所謂薄膜晶體管,是指液晶顯示器上的每一液晶象素點(diǎn)都是由集成在其后的薄膜晶體管來驅(qū)動(dòng)。TFT液晶為每個(gè)像素都設(shè)有一個(gè)半導(dǎo)體開關(guān),每個(gè)像素都可以通過點(diǎn)脈沖直接控制,因而每個(gè)節(jié)點(diǎn)都相對(duì)獨(dú)立,并可以連續(xù)控制,不僅提高了顯示屏的反應(yīng)速度,同時(shí)可以精確控制顯示色階,所以TFT液晶的色彩更真。基本原理很簡(jiǎn)單:顯示屏由許多可以發(fā)出任意顏色的光線的象素組成,只要控制各個(gè)象素顯示相應(yīng)的顏色就能達(dá)到目的了。在TFT LCD中一般采用背光技術(shù),為了能精確地控制每一個(gè)象素的顏色和亮度就需要在每一個(gè)象素之后安裝一個(gè)類似百葉窗的開關(guān),當(dāng)“百葉窗”打開時(shí)光線可以透過來,而“百葉窗”關(guān)上后光線就無法透過來。 本設(shè)計(jì)采用的是最基本的TFT彩屏,平時(shí)我們做實(shí)驗(yàn)的時(shí)候可以學(xué)習(xí)學(xué)習(xí)用一用,分辨率是128*128像素的,顏色是24位真彩色,響應(yīng)速度快,可以顯示16*16的漢字64個(gè),用在本設(shè)計(jì)中剛好可以顯示各種想要的功能。
5 軟件架構(gòu)和開發(fā)環(huán)境5.1 程序流程圖所有硬件搭建完成后就是軟件的編程與調(diào)試,現(xiàn)在的硬件電路基本上都要通過軟件編程來控制,基本的程序流程圖如圖5.1-1所示:
1.005.jpg (44.3 KB, 下載次數(shù): 124)
下載附件
2017-7-28 02:57 上傳
5.1-1 程序流程圖
5.2 速度測(cè)量的原理要得到自行車的速度,首先我們應(yīng)該知道自行車在一秒內(nèi)轉(zhuǎn)了多少圈,比如一秒內(nèi)轉(zhuǎn)了10圈,周長(zhǎng)為1m,那么自行車的速度就是10m/s;這樣就得到了自行車的速度了,為了得到較為準(zhǔn)確的結(jié)果,我們可以在自行車的輪子上面安裝盡可能多的磁鐵,加入安裝了12個(gè)磁鐵,那么自行車轉(zhuǎn)一圈我們就可以檢測(cè)到12個(gè)脈沖信號(hào),轉(zhuǎn)速n和頻率f的關(guān)系為
1.006.jpg (1011 Bytes, 下載次數(shù): 130)
下載附件
2017-7-28 02:57 上傳
,只要得到轉(zhuǎn)速我們就可以通過半徑計(jì)算出自行車的速度了。 對(duì)于里程的計(jì)算:速度的計(jì)算是每隔一秒計(jì)算一次,里程是一個(gè)累加的過程,將每秒走的路程累加起來,就可以得到里程。 5.3 程序調(diào)試程序調(diào)試主要有精確延時(shí)1s的函數(shù)編寫;用標(biāo)準(zhǔn)的方波信號(hào)測(cè)試看看顯示的頻率與示波器實(shí)際讀到的數(shù)值誤差有多大;測(cè)量電機(jī)的轉(zhuǎn)速,模擬自行車。 1s延時(shí)函數(shù)主要是通過控制一個(gè)燈的亮或滅來測(cè)量,用示波器觀察燈亮滅的周期,從而改變循環(huán)的值,得到精確延時(shí)1s的函數(shù);然后用函數(shù)信號(hào)發(fā)生器產(chǎn)生一個(gè)100Hz的方波,通過實(shí)驗(yàn)發(fā)現(xiàn),在100Hz以內(nèi)誤差為1左右,在200Hz左右誤差為4左右,頻率越高誤差越大,但是考慮到實(shí)際情況,自行車在走的時(shí)候不會(huì)太快,因此測(cè)量的還是比較準(zhǔn)確的;最后用測(cè)量電機(jī)的轉(zhuǎn)速。
總結(jié)通過這門課程的學(xué)習(xí),感覺自己學(xué)到了很多的知識(shí),我很慶幸自己能當(dāng)上組長(zhǎng),每一次老師布置的作業(yè)自己在下面都是花費(fèi)了大量的時(shí)間去研究它,因?yàn)橐o組員講,所以自己學(xué)的是非常的努力,并且每個(gè)程序都會(huì)遇到各種各樣的問題,我覺得學(xué)習(xí)就是不斷遇到問題和解決問題的過程,如果學(xué)習(xí)中什么問題都沒遇到,那么我們是不可能學(xué)好的。自己也是在下面看各種資料、例程,問別的同學(xué),一起進(jìn)步,共同學(xué)習(xí),再加上給他們講自己的印象更是深刻。我感覺這種教學(xué)方法真的是挺好的,從實(shí)際的操作出發(fā),不再只是老師一個(gè)人的教,而是同學(xué)們自主的學(xué),只有這樣同學(xué)們才能學(xué)到知識(shí)。如果只是讓老師講的話,我們很容易養(yǎng)成惰性,因?yàn)檫@種課程本來就枯燥無味,聽著聽著就不想聽了,或者上課也聽懂了,但是自己不練習(xí)的話還是跟沒學(xué)一樣。最后 ,通過這個(gè)課程設(shè)計(jì)大作業(yè),感覺真是學(xué)到了不少,在制作的過程中,通過自己給別人的講解,也是一種學(xué)習(xí)的最佳方法,因?yàn)槊總€(gè)人的都不太一樣,所以要想給他們講清楚,首先自己得搞明白,這個(gè)過程中,正是學(xué)習(xí)的最佳時(shí)機(jī),感覺收獲還是挺多的,不僅我們組的人問,別的組的有的也問我,這樣一來自己學(xué)習(xí)的知識(shí)就更多了�?傊�,我感覺學(xué)習(xí)就應(yīng)該這樣,要敢于去給別人講,要喜歡去給別人講,這樣別人不僅感激你,更重要的是自己能學(xué)到很多課本上和課堂上你學(xué)不到的知識(shí),這才叫學(xué)習(xí)。
參考文獻(xiàn)[1] 王智, 潘強(qiáng), 邢濤. MSP430系列超低功耗16位單片機(jī)原理與應(yīng)用[D].電子工業(yè)出版社. 2009. [2] 閻石.數(shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,2009. [3] 楊家成.單片機(jī)原理與應(yīng)用及C51程序設(shè)計(jì).北京:清華大學(xué)出版社,2007 [4] 賽爾吉?dú)W.佛朗格著,劉樹棠等譯�;谶\(yùn)算放大器和模擬集成電路的電路設(shè)計(jì)(第三版).西安交通大學(xué)出版,2009.2
附錄一 元件清單
附錄二 源程序- #include
- #include
- #include "font.h"
- #include "sys.h"
- #include "lcd.h"
- #include "ds18b20.h"
- #include"ds3231.h"
- extern uchar nian,yue,ri,shi,fen,miao;
- float d = 40.0, per;
- void CLK_Init(void) //時(shí)鐘配置
- {
- if (CALBC1_16MHZ ==0xFF || CALDCO_16MHZ == 0xFF)
- {
- while(1); // If calibration constants erased
- // do not load, trap CPU!!
- }
- DCOCTL=0;
- BCSCTL1 = CALBC1_16MHZ; // Set range
- DCOCTL = CALDCO_16MHZ; // Set DCO step + modulation
- BCSCTL2 |= 0X06; //SMCLK為DCO的8分頻,2M
- }
- void showjiemian() //界面顯示
- {
- LCD_Fill(0,0,128,20,GBLUE); //在指定區(qū)域填充顏色
- showhanzi1(13,2,0,RED,GBLUE);
- showhanzi1(30,2,1,RED,GBLUE);
- showhanzi1(47,2,2,RED,GBLUE);
- showhanzi1(64,2,3,RED,GBLUE);
- showhanzi1(81,2,4,RED,GBLUE);
- showhanzi1(98,2,5,RED,GBLUE); //自行車?yán)锍瘫?br />
- showhanzi1(2,24,16,BLUE,YELLOW); //溫
- showhanzi1(18,24,17,BLUE,YELLOW); //度
- LCD_ShowChar(34,24,':',1);
- LCD_Fill(42,23,86,40,WHITE); //在指定區(qū)域填充顏色
- showhanzi1(89,24,18,BLUE,YELLOW); //℃
- showhanzi1(2,48,8,BLUE,YELLOW);
- showhanzi1(18,48,9,BLUE,YELLOW);
- LCD_ShowChar(34,48,':',1);
- LCD_Fill(42,47,86,65,WHITE); //在指定區(qū)域填充顏色
- LCD_ShowString(88,48,"km/h"); //速度km/h
- showhanzi1(2,72,10,BLUE,YELLOW);
- showhanzi1(18,72,11,BLUE,YELLOW);
- LCD_ShowChar(34,72,':',1);
- LCD_Fill(42,71,86,89,WHITE); //在指定區(qū)域填充顏色
- LCD_ShowString(88,72,"km"); //里程km:
- LCD_Fill(0,96,128,128,WHITE); //在指定區(qū)域填充顏色
- showhanzi1(24,104,25,BLUE,WHITE);//月
- showhanzi1(56,104,26,BLUE,WHITE);//日
- LCD_ShowChar(96,104,':',1);
- }
- int main(void)
- {
- u16 tem, a, b, c;
- u16 f;
- float v, l = 0.0;
- WDTCTL = WDTPW + WDTHOLD; //停止看門狗
- P1DIR |= BIT1;
- P1OUT |= BIT1;
- P2DIR |= 0x1f; //設(shè)置P2為輸出方式輸出方式
- P2OUT |= 0X1f;
- /************************配置P1.5,P1.6引腳為輸入***************************
- *****按下與P1.5連接的按鍵半徑增加,按下與P1.6連接的按鍵半徑減小***********/
- P1DIR &= ~(BIT5+BIT6);
- P1REN |= BIT5+BIT6;
- /************************頻率測(cè)量信號(hào)輸入引腳TACLK配置**********************/
- P1SEL |= BIT0; //設(shè)置P1.0引腳為外圍功能模塊引腳
- P1DIR &= ~BIT0; //設(shè)置P1.0引腳為輸入引腳
- /***************實(shí)現(xiàn)頻率測(cè)量的定時(shí)/計(jì)數(shù)器A(Timer_A)配置*********************/
- TACTL |=TASSEL_0; //計(jì)數(shù)信號(hào)選擇TACLK
- TACTL |= ID_0; //計(jì)數(shù)信號(hào)分頻選擇1
- LCD_ShowNum(48,48,0,3);
- //BACK_COLOR=WHITE; //背景色,
- //POINT_COLOR=BLUE; //畫筆色
- CLK_Init();
- Lcd_Init();
- LCD_Clear(YELLOW);
- /**************時(shí)間初始化**************/
- #if 0
- ModifyTime(16,5,6,17,34,00);
- LCD_Show2Num(8,104,5,2);//月
- LCD_Show2Num(40,104,6,2);//日
- LCD_Show2Num(80,104,16,2);//時(shí)
- LCD_Show2Num(104,104,12,2);//分
- #endif
- /**************中斷按鍵P1.4的配置**************/
- P1OUT|=BIT4;//選擇上拉方式
- P1REN=BIT4;//使能上拉電阻
- P1IE|=BIT4;//使能按鍵S2管腳中斷
- P1IES=0x00;//中斷觸發(fā)方式為上升沿
- P1IFG=0x00;//清除中斷標(biāo)志
- _EINT();//使能總中斷
- showjiemian();
- BACK_COLOR=WHITE; //背景色
- POINT_COLOR=BLUE; //畫筆色
- P1OUT ^=BIT6;
- while(1)
- {
- /**************得到時(shí)間數(shù)值并顯示**************/
- GetAllTime();
- LCD_Show2Num(8,104,yue,2);//月
- LCD_Show2Num(40,104,ri,2);//日
- LCD_Show2Num(80,104,shi,2);//時(shí)
- LCD_Show2Num(104,104,fen,2);//分
- //LCD_Show2Num(72,104,miao,2);//秒
- /**************得到溫度值值并顯示**************/
- tem = Read_Temp();
- a = tem/1000;
- b = tem%1000/100;
- c = tem%100/10;
- //d = tem%10;
- LCD_ShowNum(51,24,a,1); //顯示溫度十位
- LCD_ShowNum(59,24,b,1); //顯示溫度個(gè)位
- LCD_ShowChar(67,24,'.',0); //顯示"."
- LCD_ShowNum(75,24,c,1); //顯示溫度十分位
- //LCD_ShowNum(83,24,d,1); //顯示溫度百分位
- /**************測(cè)量信號(hào)的頻率**************/
- TAR = 0x0000; //計(jì)數(shù)寄存器內(nèi)部清零
- TACTL |= MC_2; //啟動(dòng)計(jì)數(shù),計(jì)數(shù)終值0xffff
- delay_s(1); //產(chǎn)生1s計(jì)數(shù)閘門
- TACTL |= MC_0; //停止計(jì)數(shù)
- f = TAR; //讀頻率測(cè)量值
- per = 3.14*(d/100.0);
- v = per*(f/16.0)*3.6+0.5;
- l += (1.5*(f/16.0))/1000.0;
- LCD_ShowNum(48,48,(u16)v,3); //顯示速度
- LCD_ShowNum(48,72,(u16)f,3); //顯示里程
- }
- }
- #pragma vector=PORT1_VECTOR
- __interrupt void PORT1_key3(void)
- {
- if(P1IFG & BIT4)
- {
- P1DIR &= ~BIT4;
- P1REN |= BIT4;
- LCD_Fill(0,96,128,128,MAGENTA);//在指定區(qū)域填充顏色
- showhanzi1(4,104,30,WHITE,MAGENTA);
- showhanzi1(20,104,31,WHITE,MAGENTA);
- showhanzi1(36,104,32,WHITE,MAGENTA);
- showhanzi1(52,104,33,WHITE,MAGENTA);
- LCD_ShowChar(68,104,':',1);
- LCD_ShowChar(104,104,'c',1);
- LCD_ShowChar(112,104,'m',1);
- LCD_Fill(78,102,102,120,WHITE);//在指定區(qū)域填充顏色
- while(1)
- {
- BACK_COLOR=WHITE; //背景色
- POINT_COLOR=BLUE; //畫筆色
- if(!(P1IN & BIT5))
- {
- delay_ms(50);
- if(!(P1IN & BIT5))
- {
- //while(!(P1IN & BIT5));
- delay_ms(150);
- d++;
- if(d>90)
- {
- d = 40;
- }
- }
- }
- else if(!(P1IN & BIT6))
- {
- delay_ms(50);
- if(!(P1IN & BIT6))
- {
- delay_ms(150);
- d--;
- if(d<40)
- {
- d = 90;
- }
- }
- }
- if(!(P1IN & BIT4))
- {
- while(!(P1IN & BIT4));
- LCD_Fill(0,96,128,128,WHITE); //在指定區(qū)域填充顏色
- showhanzi1(24,104,25,BLUE,WHITE);//月
- showhanzi1(56,104,26,BLUE,WHITE);//日
- LCD_ShowChar(96,104,':',1);
- P1OUT|=BIT4;//LED配置為高電平,S2選擇上拉方式
- P1REN=BIT4;//使能上拉電阻0000 1000
- P1IE|=BIT4;//使能按鍵S2所在P1.3管腳中斷
- P1IES=0x00;//中斷觸發(fā)方式為上升沿
- break;
- }
- LCD_ShowNum(82,104,d,2);
- }
- P1IFG = 0x00;
- }
- }
復(fù)制代碼
附錄三 實(shí)物展示
1.007.jpg (70.99 KB, 下載次數(shù): 145)
下載附件
2017-7-28 02:57 上傳
完整論文下載(word格式 可編輯):
http://www.torrancerestoration.com/bbs/dpj-82279-1.html
|
|