基于單片機的多功能自行車防丟系統(tǒng)設計
《基于單片機的多功能自行車防丟系統(tǒng)設計》由會員分享,可在線閱讀,更多相關《基于單片機的多功能自行車防丟系統(tǒng)設計(41頁珍藏版)》請在裝配圖網上搜索。
1、龍巖學院畢業(yè)設計 題目: 基于單片機的多功能自行車防丟系統(tǒng)設計 專業(yè): 電子信息工程 學號: 2014041817 作者: 柯慶烽 指導教師(職稱): 曾瑋 副教授 2016年5 月20 日基于單片機的多功能自行車防丟系統(tǒng)設計【摘要】在社會不斷進步的同時,人們的生活水平也隨之提高。越來越多的人開始喜歡上了自行車,它不僅成為一種交通工具或者代步工具。隨著社會的進步,自行車上的輔助功能也變得越來越多,于此同時,人們也非常希望自行車上能夠有休閑、鍛煉等功能,這樣能夠在騎自行車的同時給人帶來更多舒適和健康。雖然自行車騎行是一個老少皆宜的運動,但是在騎行的過程時,人們對自身的安全非常重視。同時在沒有騎行
2、時,對自行車停放的位置也是有點顧慮和擔憂的。本設計是利用STC12C5A60S2單片機來實現(xiàn)自行車的多功能自行車防丟系統(tǒng),主要分為主機和副機兩個部分來實現(xiàn)自行車的轉向燈的功能,運動時心率檢測功能,和自行車防丟功能?!娟P鍵字】STC12C5A60S2 轉向燈 防丟功能 心率檢測Multifunctional bicycle lost prevention system based on single chip microcomputerAbstract in the continuous progress of society, peoples living standards will be
3、improved. More and more people began to love on the bike, it not only as a means of transport or transport. With the progress of the society, bicycle auxiliary function has become more and more, at the same time, people also very much hope that bike to leisure, exercise, and other functions, this ca
4、n in riding a bicycle also brings more comfort and health. Although the cycling is an ages of movement, but in the process of riding, people for their own safety very seriously. At the same time in the absence of riding, the location of the bicycle parking is also a bit of concern and worry. This de
5、sign is uses STC12C5A60S2 to achieve a bike multifunctional bicycle anti lost system, mainly divided into two parts: the host machine and the auxiliary machine to achieve a bike of steering lamp function, movement heart rate detection function, and the bicycle anti lost functions.keyword STC12C5A60S
6、2 Steering light Anti drop function Heart rate detection目錄第1章 緒論11.1研究的背景及意義11.1.1課題研究背景11.1.2課題研究意義1第2章 課題的目標任務22.1 課題的主要內容22.1.1 課題總體介紹體22.1.2 工作內容22.1.3 課題具體任務2第3章 硬件設計33.1 硬件系統(tǒng)選型33.1.1 控制芯片的選擇33.1.2 無線通信模塊選擇33.1.3 心率檢測傳感器的選擇43.2 系統(tǒng)硬件設計43.2.1 單片機控制電路設計43.2.2 無線通信模塊電路設計43.2.3 按鍵模塊電路63.2.4 心率檢測模塊設計
7、63.2.5 報警電路設計7第4章 軟件設計84.1 系統(tǒng)功能介紹84.2 程序總體框圖84.2.1 主機的程序框圖84.2.2 副機的程序框圖84.3 程序設計的總體思路94.3.1 NRF24L01無線通信模塊的設計思路94.3.2 自行車轉向燈模塊的設計思路94.3.3 心率檢測模塊的設計思路94.4 部分程序流程圖104.4.1 NRF24L01無線收發(fā)模塊的程序流程圖設計104.4.2 主機流程圖設計104.4.2 副機流程圖設計11第5章 系統(tǒng)調試125.1 硬件系統(tǒng)調試125.1.1 基本電路檢測125.1.2 基本連線檢查125.2 軟件系統(tǒng)調試135.2.1 基本輸入輸出調試
8、135.2. 基本功能的調試13第6章 結論146.1 基本成果146.2 改進展望146.3 經驗總結14致謝15參考文獻16附錄17附錄一:基于單片機的多功能自行車防丟系統(tǒng)設計的電路原理圖17附錄二:基于單片機的多功能自行車防丟系統(tǒng)設計的PCB圖18附錄三:基于單片機的多功能自行車防丟系統(tǒng)設計的部分程序.194第1章 緒論1.1研究的背景及意義1.1.1課題研究背景 在科技不斷的發(fā)展和社會不斷的進步條件下,人們的生活也隨著不斷的改善,從而人們越來越注重自身的身體健康,越來越多的人會選擇不同的運動方式。自行車現(xiàn)在不僅僅是人們的代步工具,從而也成為人們的運動工具。但是人們將自行車騎在馬路上的時
9、候,馬路上總是有汽車等機動車,由于當自行車在轉向的時候,讓后方的機動車無法及時的判斷出自行車的轉向,從而容易導致事故的發(fā)生;同時,總是會聽說自行車放在露天或者停下自行車去買個東西的時候,發(fā)生了自行車丟失的事件,這讓那些丟車的車主頭痛,也讓那些原本想買自行車的人望而祛步。作為一些專業(yè)的運動者而言,總是希望有一個良好是數(shù)據能夠體現(xiàn)出自己當前的運動心率,用來提醒自己的身體能否承受更大的運動。所以,在這樣的背景條件下,自行車的輔助功能就顯得尤為重要,同時能夠讓自行車賦予更多的運用功能。1.1.2課題研究意義本課題的設計是將自行車的轉向燈、自行車的無線防丟以及心率檢測三個功能結合起來,這樣能夠讓使用自行
10、車的人在馬路上騎行的時候,不要擔心身后的機動車無法判別出自己的轉向而會發(fā)生車禍;同時也讓那些車主在停放自行車的時候,不用擔心自己的自行車發(fā)生丟失,從而使自己的心情變差。于此同時,也可以讓那些以自行車為運動工具的人在運動是檢測到自己的心率,從而來體現(xiàn)自己當前的運動量是否超過了自己身體是承受能力。第2章 課題的目標任務2.1 課題的主要內容2.1.1 課題總體介紹體本課題是基于單片機的多功能自行車防丟系統(tǒng)的設計和制作,同時對相應的硬件和軟件進行設計與制作。2.1.2 工作內容(1)完成多功能自行車防丟系統(tǒng)的總體系統(tǒng)方案的設計與電路設計。(2)制作與連接好完整的硬件電路,同時能調試出正確的結果。2.
11、1.3 課題具體任務多功能自行車防丟系統(tǒng)是基于單片機控制的,系統(tǒng)電路分為主機和副機兩個部分。主機的系統(tǒng)電路設計主要由單片機的最小系統(tǒng)電路、按鍵輸入電路、LCD1602顯示電路、無線收發(fā)電路、 LED顯示電路和報警電路;副機主要由單片機的最小系統(tǒng)電路、無線收發(fā)電路、LED顯示電路和報警電路。軟件的設計由程序輸入檢測、軟件的處理和輸出的刷新三個部分組成?;救蝿眨耗軌驅崿F(xiàn)無線防丟的功能;實現(xiàn)轉向燈的按鍵控制;實現(xiàn)心率檢測,同時通過按鍵改變心率預設值的加減。第3章 硬件設計3.1 硬件系統(tǒng)選型3.1.1 控制芯片的選擇 本次的芯片使用STC12C5A60S22單片機。STC12C5A60S2有256
12、字節(jié)的RAM和64 K單周期的Flash可以為一個周期的工作。STC12C5A60S2單片機的引腳和編程與傳統(tǒng)的8051單片機是兼容的,同時擁有豐富的應用程序編程基礎和經驗,當P0口作為輸出時,不要像傳統(tǒng)的單片機一樣外接上拉電阻,使系統(tǒng)的設計會更加的簡單、輕松。同時在單個周期模式的條件下運行時,它的運行速度比傳統(tǒng)的51單片機快8至12倍左右的速度。STC12C5A60S2單片機即可滿足本次設計需求,同時價格低,外圍電路簡單,系統(tǒng)整體制作性價比較高。具體的管腳圖如圖3-1所示。圖3-1 STC12C5A60S2引腳圖3.1.2 無線通信模塊選擇本次的無線通信采用的是2.4G技術進行的短距離傳輸?shù)?/p>
13、NRF24L01無線接收與發(fā)送模塊。NRF24L01無線發(fā)送和接收模塊具有成本低、體積較小、功耗低、穩(wěn)定性好、運行的速度較快、抗干擾能力強等優(yōu)點。同時該模塊結構簡單,功能強大,能夠實現(xiàn)雙向的報警。3.1.3 心率檢測傳感器的選擇 本次的心率檢測采用的是pulse sensor心率傳感器,此傳感器采用的是觀點容積法對人體中的血管波動是造成的透光率的變化來檢測脈搏的值。此傳感器容易開發(fā),能夠快速的完成心率脈搏的檢測。同時,該傳跟其體積小,便于攜帶,功耗低等特點。3.2 系統(tǒng)硬件設計3.2.1 單片機控制電路設計本次設計中的單片機選用的是STC12C5A60S2單片機,該單片機運行的最基本的條件分別
14、是振蕩電路和電源。在本次的設計中采用的是外部石英晶振作為單片機系統(tǒng)的時鐘源,在晶振兩側分別連接這一個22pF的獨石電容來幫助晶振起到起振的作用。單片機的外部電路連接圖如圖3-2所示。圖3-2 單片機外部電路接線圖單片機有共有4組的I/O口,分別是P0口、P1口、P2口和P3口。其中主機中的按鍵分別連接單片機的P3.3-P3.6口,同時無線通信模塊NRF24L01的6個引腳分別連接單片機的P2.0-P2.5口。3.2.2 無線通信模塊電路設計本設計采用NRF24L01無線通信模塊實現(xiàn)主機和副機之間的通信,它是利用nRF24L01芯片制作而成的,nRF24L01無線收發(fā)器是一個工作在2.4GHz2
15、.5GHz,同時能夠對近距離的信號進行發(fā)送和接收。同時NRF24L01芯片體積較小,功率損耗低,性能穩(wěn)定,實用能力強等特點。NRF24L01芯片可實現(xiàn)自動應答、循環(huán)冗余校驗碼檢測、自動重發(fā)等功能。NRF24L01芯片可以設置的幾個主要模式分別為接收模式、發(fā)送模式、待機模式、待機模式和斷電模式。NRF24L01模塊外接有8個管腳,如表3-1所示。表3-1 NRF24L01模塊引腳說明引腳功能說明CSN芯片的片選線,CSN為低電平芯片工作SCK芯片控制的時鐘線(SPI時鐘)MISOSPI輸出MISISPI輸入IRQ中斷輸出CE工作模式選擇VCC電源GND接地 將NRF24L01模塊的8個引腳與單片
16、機的P2.0-P2.5口相連接,VCC接電源,GND接地,接線圖有圖3-3所示圖3-3 NRF24L01模塊接線圖在NRF24L01模塊的無線發(fā)送和接收過程中,對數(shù)據包的處理方式有兩種模式,分別是ShockBurstTM模式和增強型ShockBurstTM模式。這兩種模式都是將單片機與NRF24L01無線發(fā)送和接收模塊通過串行外圍接收SPI進行連接起來。增強型ShockBurstTM模式在保持與單片機工作的同時,還能夠實現(xiàn)自動應答和自動重發(fā)的功能,這樣在一定程度上比ShockBurstTM模式更為方便,收發(fā)功能更為自動。本次的設計中采用了的是增強型ShockBurstTM模式。增強型Shock
17、BurstTM模式的主要工作流程如下:首先是由發(fā)送端發(fā)出信號,然后當接收端接收到發(fā)出的信號,則會通過自動應答功能對發(fā)送端進行反饋,由發(fā)送端對反饋的信息進行檢測。當信息檢測無誤時,則發(fā)送端就會繼續(xù)發(fā)送下一條信息;如果信息檢測有誤時,則會執(zhí)行自動重發(fā)功能,一直到信息傳輸無誤為止。3.2.3 按鍵模塊電路在本次的設計中,按鍵模塊主要用于主機上,它的工作原理主要是當按下按鍵時,就會在單片機的輸入、輸出接口輸入低電平,其主要的功能是用于控制兩個LED燈的閃爍和關閉,同時也用于對心率預設值的增減。其中,按下K1的按鍵,LED3會一直處于閃爍狀態(tài),當再次按下K1按鍵后,LED3燈滅。K3和K4按鈕連接著單片
18、機的P3.4口和P3.5口,通過軟件設計來對心率預設值進行增減。按鍵模塊的接線圖如圖3-4所示。圖3-4 按鍵模塊的接線圖同時,在按鍵按下的過程中會出現(xiàn)了抖動的現(xiàn)象。為了解決這種現(xiàn)象,一般采用的方式分為硬件去抖動和軟件去抖動。硬件抖動就是電平的不穩(wěn)定,這種抖動持續(xù)的時間范圍在10200ms之間。硬件消抖就是能夠及時的對硬件電路進行處理;軟件消抖是跳過抖動的時間,等到按鍵保持穩(wěn)定的時候,再對其進行處理。本設計采用的是軟件去抖動的方式。3.2.4 心率檢測模塊設計在本次的設計中,心率檢測采用的Pules sensor傳感器,它是一款用于脈搏心率測量的光電反射式模擬傳感器,此傳感器較小,可以佩戴在手
19、指或者耳垂處。它可以通過導線與單片機連接,將模擬信號轉換為數(shù)字信號,再通過單片機進行簡單的計算后得心率的值。此傳感器共有三個借口,分別是S口,+極口和極口,其中S口是脈搏信號輸出口,需要與單片機的AD口相連接,在本次的設計中,S口連接單片機的P1.7口。傳統(tǒng)的脈搏檢測有三種方法:第一種是在心電信號中提??;第二種是對血壓測量的時候壓力傳感器測得到的波動來計算脈搏;第三種是采用光電容積法。前面兩種測量的方法會限制了測量人員的活動范圍,如果長時間的測量會給測量人員造成不適,而第三種方法具有測量方法簡單、佩戴方便等特點。Pulse sensor心率傳感器的接線圖如圖3-5所示圖3-5 心率傳感器接線圖
20、光電容積法是利用人體組織在血管搏動時造成透光率的不同而進行脈搏測量的,此傳感器有光電變換器和光源兩個部分所組成,通過繃帶固定在測量人員的手指上來進行測量。光源采用的是動脈血中氧和血紅蛋白有選擇性的一定波長(500nm700nm)的發(fā)光二極管。當光束透過人體血管時,由于動脈搏動從學容積變化導致光束透光率的變化,此時的觀點傳感器接收到人體組織反射的光線,從而轉變?yōu)殡娦盘柌⑵浞糯蠛洼敵?。由于脈搏波動是隨著周期性變化的,所以動脈血管容積也是隨著周期性變化的,因此光電變化器的變化周期就是脈搏率。3.2.5 報警電路設計本次設計中的主機和副機中都采用了報警電路,其中主機的報警電路主要是用于當心率超過預設
21、值時,蜂鳴器發(fā)出聲響;副機中的報警電路主要是用于當主機與副機斷開連接時,副機上的蜂鳴器發(fā)出聲響。報警電路如圖3-6所示。圖3-6 報警電路圖第4章 軟件設計4.1 系統(tǒng)功能介紹本次的設計是基于單片機的多功能無線防丟系統(tǒng),主要包括自行車無線防丟功能、自行車轉向燈以及心率檢測這三個功能。主要分為主機和副機,當主機斷電時,副機上的蜂鳴器會發(fā)出聲音,代表主機丟失;或者是當副機斷電是,主機上的LCD1602顯示屏上會顯示LOST字樣,表示副機丟失。當主機和副機在接通電源的情況下,兩塊超過一定的距離,副機上的蜂鳴器會發(fā)出聲響或主機上的LCD1602顯示屏會顯示LOST字樣表示丟失。同時將手指放在Pulse
22、 sensor心率傳感器時,會檢測到心率,同時心率的值會顯示在顯示屏上,同時顯示屏上還有心率的預設值,當檢測到心率的值超過了預設值,主機上的蜂鳴器會發(fā)出聲響。主機上還設有四個按鍵,兩個按鍵表示左右轉向燈的,第一次按下左轉向燈的按鈕時,左邊的LED燈會閃爍,再次按下,LED燈滅。右轉向燈同左轉向燈的方法是一樣的。剩下的兩個按鈕分別是心率預設值的增與減,按下按鈕就可以設置預設值。4.2 程序總體框圖4.2.1 主機的程序框圖 由于本次設計中分為了主機和副機,其中主機的程序框圖如圖4-1所示時鐘電路Pulse sensor心率傳感器復位電路NRF24L01無線通信模塊圖4-1 主機的程序框圖4.2.
23、2 副機的程序框圖副機的程序框圖如圖4-2所示圖4-2 副機的程序框圖4.3 程序設計的總體思路4.3.1 NRF24L01無線通信模塊的設計思路使用NRF24L01無線通信模塊,首先要對此模塊進行初始化,在初始化完畢后,要此模塊配置發(fā)送地址和接收地址,并且將CE為配置為高電平后,讀取NRF24L01模塊中的STATUS寄存器中的數(shù)據。同時配置TX_DS和RX_DS后,兩個NRF24L01模塊進行連接。這樣就可以達到無線通信的功能。4.3.2 自行車轉向燈模塊的設計思路自行車轉向燈模塊采用的是兩個按鍵控制兩個LED燈,將兩個LED燈連接到P1.5口和P1.6口,按鍵分別連接P3.3口和P3.4
24、口,通過對單片機的程序編程,當按鍵按下時,LED燈會發(fā)生0.5s閃爍,若再次按下后,LED燈滅。4.3.3 心率檢測模塊的設計思路本次的設計中,采用的是Pules sensor心率傳感器,在使用此傳感器是,首先要I/O口、串口、中斷進行初始化,定義變量,建立時間去讀脈沖信號傳感器,將檢測到的信號進行計算后得到心率值,并顯示在LCD1602顯示屏上,同時將測得的值與預設值進行比較,如果超過預設值,蜂鳴器會發(fā)出聲響。在心率檢測中,還有兩個按鍵就預設值進行增減。4.4 部分程序流程圖4.4.1 NRF24L01無線收發(fā)模塊的程序流程圖設計 NRF24L01模塊流程圖如圖4-3所示圖4-3 NRF24
25、L01無線通信模塊流程圖4.4.2 主機流程圖設計主機流程圖如圖4-4所示圖4-4 主機流程圖4.4.2 副機流程圖設計主機流程圖如圖4-4所示圖4-4 主機流程圖第5章 系統(tǒng)調試5.1 硬件系統(tǒng)調試5.1.1 基本電路檢測 在前期的硬件設計中完成了電路圖的繪制,同時將電路板塊制作出來并進行焊接,在焊接成功后,對焊接好的電路板進行檢查,主要分為以下幾個步驟:(1)查看電路板在制作過程中有沒有出現(xiàn)線路的出現(xiàn)短路,或者是焊盤后有沒有松動或脫離而造成電路板在后期焊接上的錯誤。(2)檢查線路是否與設計的相符合,并用萬用表檢查看在斷電的情況下有沒有焊接上的錯誤,以免在后期通電時發(fā)生的短路。(3)雖然在前
26、期采用萬用表檢查了電路,但是在后期通電狀態(tài)下,用手指觸摸下芯片看芯片是否發(fā)熱,若發(fā)熱,應立即斷開電源,對電路再次進行檢測,如果線路正常,也可查看芯片的是否插反,若插反應立即插好。 5.1.2 基本連線檢查在硬件調試的過程中,要對所設計的每一個部分有清楚的了解,并且知道它的工作特性和優(yōu)缺點,便于在檢查和調試過程中出現(xiàn)的問題進行更好的解決。硬件調試時,必須對每一部分的部件清楚了解,明白他的工作特性,知道它的優(yōu)點、缺點,以便在檢查和后續(xù)的調試過程中對出現(xiàn)問題很好的解決。若問題不是很大的話,可以在電路板上直接加焊或者搭線焊接。在本次的設計中,我謹記這幾個要求,認真的焊接,在焊接中節(jié)省了不少的時間。電路
27、板焊接完成后,如圖5-1和圖5-2所示。在焊接完成后,先不急著上電,首先打開設計原理圖,然后用萬用表對應著設計原理圖認真的檢查焊接好的板是否有焊接錯誤的,或者出現(xiàn)虛焊的。同時使用萬用表檢查無線通信模塊與單片圖5-2 焊接好的正面圖圖5-2 焊接好后的反面圖對應引腳是否接通;然后再檢測兩塊板的電源、地線是否和單片機連通;再檢測板上的按鍵是否焊接正常,按下時按鍵兩側是否能導通;最后檢測板上其他的引出腳是否與單片機正常連接。經過檢查,主機的板和副機的板焊接正常,與單片機I/O引腳均正常接通。5.2 軟件系統(tǒng)調試5.2.1 基本輸入輸出調試在硬件系統(tǒng)制作和調試完成后,下一步要進行的就是軟件程序的編寫。
28、首先是對于一整個軟件系統(tǒng)的編程,也需要分部、分塊進行編寫調試。在本次調試過程中,首先調試的是兩個轉向燈是否可以按照預初設計的那樣正常顯示,當編好程序好,將程序導入到副機的單片機中,按下與單片機P3.3相連接的按鍵,與單片機P1.5口相連的LED燈是否正常閃爍;再次按下這個按鍵,LED燈滅。經過檢測,P3.3口和P3.4口的兩個按鍵按下的現(xiàn)象正常。然后檢查P3.5口和P3.6口,分別按下按鍵,然后觀察顯示屏上的預設值是否能夠進行增、減,經過檢測,按鍵的程序正常。5.2. 基本功能的調試在程序變成好后分別下載到主機模塊和副機模塊的單片機中,然后檢查LCD1602顯示屏能夠正常顯示程序中所設計的字幕
29、,如果顯示屏的對比度過低,調節(jié)板上的調節(jié)電阻,使顯示屏上的字幕更加的清晰。然后檢查一下無線通信模塊和心率檢測模塊在通電的狀態(tài)下是否能夠正常的連接,數(shù)據能夠正常的顯示在液晶顯示屏上,經過檢測,能夠正常的連接和顯示。轉向燈的設計在基本輸入輸出調試中對按鍵和LED燈進行了調試,所以轉向燈的功能也能夠正常的顯示出來。第6章 結論6.1 基本成果經過多次的實驗和調試,最后成功完成了多功能自行車防丟系統(tǒng)的設計與制作,實現(xiàn)了自行車在轉向時的閃爍提醒、自行車在騎行后的心率檢測以及自行車的無線防丟的設計。這樣給以往傳統(tǒng)的自行車有了更多的輔助功能。6.2 改進展望在多功能自行車的設計完成后,實現(xiàn)了預期設想的設。但
30、是這樣還是不足的,比如這次的無線防丟功能,它的功能是有局限性的,在超過一定的范圍距離,無論副機是否丟失,主機上都會發(fā)出聲響。在今后的學習和生活中,我會繼續(xù)努力學習和研究,并對此進行改進。在無線防丟功能上進行更近一步的改進。同時,最為本次系統(tǒng)的設計這,我的目的是希望讓大家在騎自行車的時候,對自己的人身安全有了保障,并且在停放自行車的時候不要再對自行車的丟失而發(fā)愁。同時這次的設計也是對我在學校中的一個學習成功的展示。希望我的多功能自行車無線防丟系統(tǒng)的設計能夠應用在現(xiàn)實的生活中,被更多的人所接受。6.3 經驗總結畢業(yè)設計就是考察學生在大學中所學習到的知識進行一次綜合性的考察,以及對學生的動手能力的檢
31、驗。通過設計能夠體現(xiàn)出學生在對學習過的對知識掌握能力和發(fā)現(xiàn)問題、分析問題、解決問題和實踐能力。在本次的設計、制作和論文的撰寫中然我學習到了很多的東西,首先是對單片機有了更深一步的認識,同時繪圖的能力有明顯提高。在本次的畢業(yè)設計的過程中,起初開始是沒有頭緒的,也不知道從何下手,但是在設計的過程中讓我明白了,分步、分模塊的設計和調試,能夠讓設計變得更為的簡單。所以我認為分步、分模塊的設計這個是尤為重要的。同時在本次的設計中先查閱資料,從芯片選型到電路的設計,再到硬件焊接的檢查,最后到程序的編程和調試,分步的進行讓我的設計過程更為的順利。同時在寫論文的時候,我發(fā)現(xiàn)以我一個人的知識是遠遠不夠的,在此過
32、程中,記住了網絡和同學之間的幫忙、同時到圖書館翻閱資料來完成自己的論文,在此過程中,學到了不少的東西。 在做畢業(yè)設計的這段時間里,不斷的查閱的相關資料,于此同時增強了自己對知識的理解,其中很多以前不是很懂的問題現(xiàn)在都解決了,也豐富了自己,也讓我受益匪淺。致謝經過這段時間的忙碌和學習,本次的設計也已經接近了尾聲,在這里,非常感謝這段時間以來幫助我的同學和老師。同時在曾瑋老師的指導下,我的畢業(yè)設計和畢業(yè)論文能夠如期完成,在此我對增瑋老師給予的幫助表示衷心的感謝。除了指導老師,也要感謝在我大學生活中所以的老師和同學,感謝老師們在平時悉心的教導和同學們在平時中對我的幫助。大學的生活即將結束,我們也即將
33、步入社會,我會老師們平時對我們的教導,在今后的工作和生活中要更加的努力和認真,同時也祝老師們今后的工作順利,身體健康。參考文獻1 宏晶科技(深圳).STC12C5A60S2系列單片機器件手冊M. 2006, 1-22 王嘯東. 尤鳳翔. 基于單片機的智能防丟器系統(tǒng)設計J. 河南科技, 2011, (21): 61-61. 3郭天祥. 新概念51單片機C語言教程M北京:電子工業(yè)出版社,2009, 240-258 4李蛟, 楊仁錕. 肖峻. 2.4GHz無線技術標準及ZigBee抗干擾性能J. 電信工程技術與標準化, 2006, 19(3): 31-35. 5劉雅琨;冷劉偉;汽車尾燈智能控制電路設
34、計J;科技經濟市場;2011年05期6 朱勇.單片機原理與應用技術M.清華大學出版社.2005, 200-2207李朝青.單片機原理及接口技術M.第三版.北京:北京航空航天大學出社.2005, 86-748沈勇, 蔣文雄, 段勇. 基于nRF24L01的通用無線通信模塊設計J. 電子設計工程, 2013, 21(18): 84-86. 9 元增民,張文希.單片機原理與應用基礎.長沙M:國防科技大學出版社. 2006.6,112-11910 陶國正.單片機與接口應用技術M.蘇州:蘇州大學出版社,2004:137-146,190202.11Maxim.+5V Single-Supply,IMsps
35、,16-Bit Self-Calibrating ADCDB/CD,2000.附錄附錄一:基于單片機的多功能自行車防丟系統(tǒng)設計的電路原理圖主機原理圖:副機原理圖:附錄二:基于單片機的多功能自行車防丟系統(tǒng)設計的PCB圖主機PCB圖:副機PCB圖:附錄三:基于單片機的多功能自行車防丟系統(tǒng)設計的部分程序主機主程序:#include common.h#include uart.h#include nRF24L01P.h#define false 0#define true 1#define FOSC 11059200L#define T0MS (65536-FOSC/12/500)/500HZ in
36、12T MODE#define ADC_POWER 0 x80/ADC POWER CONTROL BIT#define ADC_FLAG 0 x10/ADC COMPLETE FLAG#define ADC_START 0 x08;/ADC START CONTROL BIT#define ADC_SPEEDLL 0 x00/540 CLOCKS#define ADC_SPEEDL 0 x20/360 CLOCKS#define ADC_SPEEDH 0 x40/180 CLOCKS#define ADC_SPEEDHH 0 x60/90 CLOCKS#define ADC_MASK 0 x
37、01sbit beep_alarm =P27;sbit loft_alarm_led=P15;sbit init_alarm_led=P14;unsigned char PulsePin = 7; / Pulse Sensor purple wire connected to analog pin 0(P1.0?aAD?)/sbit blinkPin = P20; / pin to blink led at each beat/sbit fadePin = P23; / pin to do fancy classy fading blink at each beat/sbit led1 = P
38、21;/sbit led2 = P22;int fadeRate = 0; / used to fade LED on with PWM on fadePin/ these variables are volatile because they are used during the interrupt service routine!volatile unsigned int BPM; / used to hold the pulse ratevolatile unsigned int Signal; / holds the incoming raw datavolatile unsigne
39、d int IBI = 600; / holds the time between beats, must be seeded!volatile bit Pulse = false; / true when pulse wave is high, false when its lowvolatile bit QS = false; / becomes true when Arduoino finds a beat.volatile int rate10; / array to hold last ten IBI valuesvolatile unsigned long sampleCounte
40、r = 0; / used to determine pulse timingvolatile unsigned long lastBeatTime = 0; / used to find IBIvolatile int Peak =512; / used to find peak in pulse wave, seededvolatile int Trough = 512; / used to find trough in pulse wave, seededvolatile int thresh = 512; / used to find instant moment of heart b
41、eat, seededvolatile int amp = 100; / used to hold amplitude of pulse waveform, seededvolatile bit firstBeat = true; / used to seed rate array so we startup with reasonable BPMvolatile bit secondBeat = false; / used to seed rate array so we startup with reasonable BPMstatic unsigned char order=0;unsi
42、gned char DisBuff4= 0;unsigned int xdata heart_rate = 0;unsigned int xdata loft_time = 0;void ADC_init(unsigned char channel);void T0_init(void);void main(void) char ret; unsigned char RX_BUFTX_PLOAD_WIDTH; unsigned char TX_BUFTX_PLOAD_WIDTH; ADC_init(PulsePin); uart_init(UART_B9600); printf(OKrn);
43、T0_init(); / sets up to read Pulse Sensor signal every 2mS while (NRF24L01_Check() init_alarm_led = init_alarm_led; delay_ms(500); NRF24L01_RT_Init(); init_alarm_led = 0; while(1) if (QS = true) / Quantified Self flag is true when arduino finds a heartbeat fadeRate = 255; / Set fadeRate Variable to
44、255 to fade LED with pulse QS = false; / reset the Quantified Self flag for next time heart_rate = BPM; printf(B:%srn,DisBuff); ret = NRF24L01_RxPacket(RX_BUF,250); if (!ret) if (RX_BUF0 = 0 xaa & RX_BUF1 = 0 xbb & RX_BUF2 = 0 xcc & RX_BUF3 = 0 xdd) delay_ms(100); loft_time = 0; TX_BUF0 = heart_rate
45、 & 0 xFF; / 數(shù)據送到緩存 TX_BUF1 = (heart_rate 8 )& 0 xFF;/ 數(shù)據送到緩存 TX_BUF2 = (heart_rate 16 )& 0 xFF; / 數(shù)據送到緩存 TX_BUF3 = (heart_rate 24 )& 0 xFF; / 數(shù)據送到緩存 ret =NRF24L01_TxPacket(NRF_DEFAULT_CH,TX_BUF,200); NRF24L01_RX_Mode(NRF_DEFAULT_CH);/ 配置為接收模式 if (loft_time + 8) loft_alarm_led = 0; beep_alarm = 0; el
46、se loft_alarm_led = 1; beep_alarm = 1; delay_ms(1); ;void T0_init(void) / Initializes Timer0 to throw an interrupt every 2mS. TMOD |= 0 x01;/16bit TIMER TL0=T0MS; TH0=T0MS8; TR0=1;/start Timer 0 ET0=1;/enable Timer Interrupt EA=1; / MAKE SURE GLOBAL INTERRUPTS ARE ENABLEDvoid ADC_init(unsigned char
47、channel) P1ASF=ADC_MASKchannel;/enable PlusePin as ADC INPUT ADC_RES=0;/clear former ADC result ADC_RESL=0;/clear former ADC result AUXR1 |= 0 x04;/adjust the format of ADC result ADC_CONTR=channel|ADC_POWER|ADC_SPEEDLL|ADC_START;/power on ADC and start conversionunsigned int analogRead(unsigned cha
48、r channel)unsigned int result; ADC_CONTR &=!ADC_FLAG;/clear ADC FLAG result=ADC_RES; result=result8;/reload 16 bit TIMER0 Signal = analogRead(PulsePin); / read the Pulse Sensor sampleCounter += 2; / keep track of the time in mS with this variable N = sampleCounter - lastBeatTime; / find the peak and
49、 trough of the pulse waveif(Signal (IBI/5)*3)/ avoid dichrotic noise by waiting 3/5 of last IBI if (Signal thresh & Signal Peak) / thresh condition helps avoid noise Peak = Signal; / P is the peak if (N 250) / avoid high frequency noise if ( (Signal thresh) & (Pulse = false) & (N (IBI/5)*3) ) Pulse
50、= true; / set the Pulse flag when we think there is a pulse /blinkPin=0; / turn on pin 13 LED IBI = sampleCounter - lastBeatTime; / measure time between beats in mS lastBeatTime = sampleCounter; / keep track of time for next pulse if(secondBeat) / if this is the second beat, if secondBeat = TRUE sec
51、ondBeat = false; / clear secondBeat flag for(i=0; i=9; i+) / seed the running total to get a realisitic BPM at startup ratei = IBI; if(firstBeat) / if its the first time we found a beat, if firstBeat = TRUE firstBeat = false; / clear firstBeat flag secondBeat = true; / set the second beat flag EA=1;
52、 / enable interrupts again return; / IBI value is unreliable so discard it for(i=0; i200)BPM=200; if(BPM30)BPM=30; DisBuff2 = BPM%10+48; DisBuff1 = BPM%100/10+48; DisBuff0 = BPM/100+48; if(DisBuff0=48) DisBuff0=32; QS = true; / set Quantified Self flag / QS FLAG IS NOT CLEARED INSIDE THIS ISR if (Signal 2500) / if 2.5 seconds go by without a beat thresh = 512; / set thres
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。