版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于單片機(jī)的藍(lán)牙接收發(fā)射模塊設(shè)計</p><p><b> 畢業(yè)論文</b></p><p><b> 目錄</b></p><p><b> 第一章 引言3</b></p><p> 1.1 本設(shè)計的背景3</p><p&
2、gt; 1.2 本設(shè)計的系統(tǒng)方案3</p><p> 1.2.1 系統(tǒng)各模塊的選擇4</p><p> 第二章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)的組成框圖4</p><p> 2.1 單片機(jī)數(shù)據(jù)發(fā)送模塊框圖4</p><p> 2.2 PC數(shù)據(jù)接收模塊框圖4</p><p> 第三章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)硬件設(shè)計
3、5</p><p> 3.1 發(fā)送與接收模塊的單片機(jī)最小系統(tǒng)5</p><p> 3.2 發(fā)送與接收模塊的無線通信模塊——BC04-B藍(lán)牙模塊5</p><p> 3.2.1 藍(lán)牙技術(shù)協(xié)議簡介5</p><p> 3.2.2 藍(lán)牙技術(shù)的核心協(xié)議6</p><p> 3.2.3 HCI協(xié)議6<
4、/p><p> 3.2.4 BC04-B藍(lán)牙模塊部分電路7</p><p> 3.3 18B20數(shù)字溫濕度傳感器8</p><p> 3.3.1 18B20簡介8</p><p> 3.4超聲波測距傳感器及其電路部分8</p><p> 3.4.1超聲波傳感器原理8</p><p&g
5、t; 3.5單片機(jī)數(shù)據(jù)傳輸系統(tǒng)的電源部分9</p><p> 3.6 MAX232串口電路10</p><p> 3.7單片機(jī)顯示電路10</p><p> 第四章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)的軟件設(shè)計11</p><p> 4.1單片機(jī)數(shù)據(jù)采集系統(tǒng)的程序流程圖11</p><p> 4.2藍(lán)牙數(shù)據(jù)收發(fā)系
6、統(tǒng)的程序流程圖12</p><p> 第五章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)調(diào)試13</p><p><b> 第六章 總結(jié)14</b></p><p><b> 參考文獻(xiàn)14</b></p><p><b> 附錄14</b></p><p>&
7、lt;b> 第一章 引言</b></p><p> 1.1 本設(shè)計的背景</p><p> 藍(lán)牙技術(shù)是近年來發(fā)展迅速的短距離無線通信技術(shù),可以用來替代數(shù)字設(shè)備間短距離的有線電纜連接。使用全球通用的2.4GHz頻段,即ISM(Industrial、Scientific and Medical)頻段,使得藍(lán)牙設(shè)備可工作于世界上任何地方;采用了跳頻技術(shù),提高了抗干擾性;藍(lán)
8、牙模塊具有低成本、低功耗和低輻射的優(yōu)點(diǎn);具備認(rèn)證和加密機(jī)制,實現(xiàn)了較高的安全性;應(yīng)用范圍廣泛,可應(yīng)用于無線設(shè)備、圖像處理設(shè)備、安全產(chǎn)品、消費(fèi)娛樂、汽車產(chǎn)品、家用電器、醫(yī)療健身、建筑、玩具等多種領(lǐng)域;支持點(diǎn)對點(diǎn)和點(diǎn)對多點(diǎn)傳輸,多個藍(lán)牙設(shè)備可組成微微網(wǎng),具備明顯的網(wǎng)絡(luò)特性。</p><p> 1.2 本設(shè)計的系統(tǒng)方案</p><p> 1.2.1 系統(tǒng)的功能實現(xiàn)</p>&l
9、t;p> 通過溫濕度及距離傳感器采集環(huán)境的溫濕度、距離信號,將信號處理然后通過無線傳輸?shù)骄嚯x十多米的地方進(jìn)行顯示,實現(xiàn)實時監(jiān)測環(huán)境的溫度、距離等信息,具有很大的應(yīng)用前景。</p><p> 本設(shè)計以單片機(jī)和藍(lán)牙模塊BC04-B為主,設(shè)計了基于藍(lán)牙無線傳輸?shù)臄?shù)據(jù)采集系統(tǒng),整個裝置由前端數(shù)據(jù)采集、傳送部分以及末端的數(shù)據(jù)接受部分組成(如PC機(jī))。前端數(shù)據(jù)采集部分由位于現(xiàn)場的傳感器、單片機(jī)、串口通信等構(gòu)成,傳送
10、部分主要利用自帶微帶天線的藍(lán)牙模塊進(jìn)行數(shù)據(jù)的無線傳輸;末端通過藍(lán)牙模塊、串口通信傳輸將數(shù)據(jù)送到上位PC機(jī)進(jìn)一步處理。PC機(jī)可以根據(jù)指令來控制數(shù)據(jù)的獲取。</p><p> 1.2.1 系統(tǒng)各模塊的選擇</p><p> 1.18B20數(shù)字溫濕度傳感器,內(nèi)部包含一個電容式感濕元件和NTC測溫元件,還有A/D轉(zhuǎn)換模塊,實現(xiàn)溫濕度數(shù)字信號輸出。同時18B20又是單總線形式,與單片機(jī)相連減少了
11、I/O口的使用。</p><p> 超聲波測距模塊,利用單片機(jī)發(fā)送觸發(fā)信號,產(chǎn)生40HZ的聲波信號,經(jīng)過物體遮擋住返回的時間,可以計算距離。</p><p> 3.采用STC89C52單片機(jī)控制單元[2],產(chǎn)品較為普遍,價格便宜,易于控制。對STC89C52用C語言編寫程序,可讀性較好。</p><p> 4.無線通信采用全球廣泛使用的藍(lán)牙技術(shù),本設(shè)計采用BC
12、04-B藍(lán)牙模塊,該模塊可實現(xiàn)二十米的無線數(shù)據(jù)傳輸。</p><p> 5.LCD1602液晶顯示器為工業(yè)字符型液晶,能夠顯示32個字符,可實現(xiàn)對數(shù)據(jù)進(jìn)行簡單顯示。</p><p> 第二章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)的組成框圖</p><p> 數(shù)據(jù)傳輸系統(tǒng)分為發(fā)送和接收兩個模塊:發(fā)送模塊主要由溫濕度采集模塊、距離采集模塊、單片機(jī)控制模塊、藍(lán)牙發(fā)送模塊、顯示模塊和電
13、源模塊等組成;接收模塊主要由藍(lán)牙接收模塊、PC控制、串口調(diào)試模塊組成。具體框圖如下:</p><p> 2.1 單片機(jī)數(shù)據(jù)發(fā)送模塊框圖</p><p> 信號采集發(fā)送過程[3]為18B20、超聲波測距模塊[4]將信號傳給STC89C52單片機(jī),單片機(jī)將信號處理,并進(jìn)行超溫濕度、距離報警。處理后的信號經(jīng)串口發(fā)送給BC04-B藍(lán)牙發(fā)射模塊發(fā)射出去,采用2.4GHZ全球免費(fèi)波段。</p
14、><p> 2.2 PC數(shù)據(jù)接收模塊框圖</p><p> 信號接收過程為藍(lán)牙適配器接收模塊接收信號,將信號通過串口傳給PC機(jī),通過串口調(diào)試助手顯示出來。PC可以通過串口調(diào)試助手給單片機(jī)機(jī)發(fā)送指令,控制數(shù)據(jù)的獲取。</p><p> 第三章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)硬件設(shè)計</p><p> 3.1 發(fā)送模塊的單片機(jī)最小系統(tǒng)</p>
15、;<p> 本系統(tǒng)采用MCS-51系列STC89C52單片機(jī)芯片[5]作為發(fā)送與接收模塊的控制單元,芯片具有如下特點(diǎn):</p><p><b> 抗干擾性強(qiáng);</b></p><p><b> 低價格;</b></p><p> 低功耗:掉電模式耗電低于0.1uA,正常工作模式為4mA~7mA,掉電模
16、式可由外部中斷喚醒,適用于電池供電系統(tǒng);</p><p> 通過MAX232電平轉(zhuǎn)換芯片即可進(jìn)行下載,編程方式靈活,可用C語言進(jìn)行編寫,可讀性強(qiáng),8KB的內(nèi)部ROM增強(qiáng)編程方便性。</p><p> 發(fā)送與接收模塊的控制單元電路原理圖如圖3.1:</p><p> 圖3.1 STC89C52單片機(jī)最小系統(tǒng)</p><p> 圖3.1中
17、間部分為STC89C52芯片,該芯片采用40腳雙列直插DIP封裝,第40腳接+5V電源,第20腳接地,左上部分為復(fù)位電路,接單片機(jī)的第9腳,但按下鍵時即對系統(tǒng)進(jìn)行復(fù)位。左下為晶振電路,采用11.0592MHZ的晶振。第31腳接高電平。</p><p> 3.2 發(fā)送與接收模塊的無線通信模塊——BC04-B藍(lán)牙模塊</p><p> 3.2.1 藍(lán)牙技術(shù)的協(xié)議簡介</p>
18、<p> 藍(lán)牙無線通信的協(xié)議標(biāo)準(zhǔn)是由SIG制定的,它規(guī)定了藍(lán)牙應(yīng)用產(chǎn)品應(yīng)遵循的標(biāo)準(zhǔn)和需要達(dá)到的要求。目前頒布的藍(lán)牙規(guī)范有1.0、1.1、2.0、2.1等幾個版本。</p><p> 協(xié)議棧由上至下可分為3個部分:傳輸協(xié)議、中介協(xié)議和應(yīng)用協(xié)議。傳輸協(xié)議負(fù)責(zé)藍(lán)牙設(shè)備間的相互位置確認(rèn),以及建立和管理藍(lán)牙設(shè)備間的物理和邏輯鏈路,包括LMP、L2CAP、HCI;中介協(xié)議為高層應(yīng)用協(xié)議或程序在藍(lán)牙邏輯鏈路上工作
19、提供了支持,為應(yīng)用層提供了各種標(biāo)準(zhǔn)接口,包括:RFCOMM、SDP、IrDA、PPP、TCP/IP、UDP、TSC和AT指令集等;應(yīng)用協(xié)議是指那些位于藍(lán)牙協(xié)議棧之上的應(yīng)用軟甲和其中涉及的協(xié)議,包括開發(fā)驅(qū)動和其他藍(lán)牙應(yīng)用程序等。</p><p> 3.2.2 藍(lán)牙技術(shù)的核心協(xié)議</p><p> 藍(lán)牙技術(shù)的核心協(xié)議分為四個部分,如下:</p><p> (1)基
20、帶協(xié)議(Baseband)</p><p> 基帶和鏈路控制層確保網(wǎng)絡(luò)內(nèi)部藍(lán)牙設(shè)備單元之間由射頻構(gòu)成的物理連接。</p><p> (2)連接管理協(xié)議(LMP)</p><p> 負(fù)責(zé)藍(lán)牙網(wǎng)絡(luò)內(nèi)各設(shè)備之間連接的建立。</p><p> (3)邏輯鏈路控制和適配協(xié)議(L2CAP)</p><p> 是一個為高層
21、傳輸層和應(yīng)用層協(xié)議屏蔽基帶協(xié)議的適配協(xié)議,為高層應(yīng)用傳輸提供了更加有效和更有利于實現(xiàn)的數(shù)據(jù)分組格式。</p><p> ?。?)服務(wù)發(fā)現(xiàn)協(xié)議(SDP)</p><p> 發(fā)現(xiàn)服務(wù)在藍(lán)牙技術(shù)框架中起到了至關(guān)重要的作用,它是所有用戶模式的基礎(chǔ),是為實現(xiàn)網(wǎng)絡(luò)中藍(lán)牙設(shè)備之間相互查詢及訪問提供的服務(wù)。在藍(lán)牙系統(tǒng)中,客戶只有通過服務(wù)發(fā)現(xiàn)協(xié)議,才能獲得設(shè)備信息、服務(wù)信息以及服務(wù)特征,從而在設(shè)備單元之間
22、建立不同的SDP層連接[3]。</p><p> 3.2.3 HCI協(xié)議</p><p> HCI(Host Controller Interface)協(xié)議,即主機(jī)控制接口協(xié)議,屬于藍(lán)牙協(xié)議棧的一部分,是藍(lán)牙規(guī)范定義的一個符合標(biāo)準(zhǔn)的接口,它適用于藍(lán)牙通訊模塊的硬件部分。此定義描述了位于HCI驅(qū)動程序(主機(jī)的一部分,也即藍(lán)牙通訊模塊的使用者)和主機(jī)控制器固件(藍(lán)牙通訊模塊本身的一部分)之
23、間的接口。HCI固件通過訪問基帶命令、硬件狀態(tài)寄存器、控制寄存器以及時間寄存器實現(xiàn)對藍(lán)牙硬件的HCI指令。</p><p> HCI傳輸層是藍(lán)牙主機(jī)與藍(lán)牙主控制器之間的物理接口。目前,藍(lán)牙HCI傳輸層的物理接口由通用串行總線(USB)、串行端口(RS232)、通用異步收發(fā)器(UART)和個人計算機(jī)存儲卡。</p><p> 本系統(tǒng)采用UART方式在藍(lán)牙設(shè)備和主控制器之間傳輸數(shù)據(jù)。UAR
24、T傳輸層發(fā)目標(biāo)在于可以在同一PCB電路板上兩UART之間的串行接口上使用藍(lán)牙HCI協(xié)議。UART傳輸層假定UART通信不存在線路故障,圖1為UART傳輸層。</p><p> 圖1 UART傳輸層</p><p> UART傳輸層采用了RS232的接口參數(shù)配置,如表1:</p><p> 表1 RS232接口參數(shù)配置</p><p>
25、 其中,RTS/CTS流控制用于防止臨時UART緩沖區(qū)溢出,當(dāng)CTS為1時,允許藍(lán)牙主機(jī)/主機(jī)控制器發(fā)送,當(dāng)CTS為0時,禁止藍(lán)牙主機(jī)/主機(jī)控制器發(fā)送。流完成響應(yīng)時間則定義了從設(shè)置RTS為0到字節(jié)流真正結(jié)束時的最大時間。</p><p> UART信號線采取置空調(diào)制解調(diào)器模式,RS232信號處于連接狀態(tài),即本地TXD連接到遠(yuǎn)端RXD,本地RTS連接到遠(yuǎn)端CTS,反之亦然。</p><p>
26、; UART傳輸層同時具備糾錯功能。如果當(dāng)藍(lán)牙主機(jī)與主機(jī)控制器在RS232通信上失去同步,則必須復(fù)位。RS232通信失去同步意味著已檢測到HCI分組指示器或者HCI分組長度超出了范圍。如果藍(lán)牙主機(jī)與主機(jī)控制器在UART通信失去同步,那么主控制器將發(fā)送硬件故障時間,以將同步錯誤告訴藍(lán)牙主機(jī)。主控制器需要從藍(lán)牙主機(jī)接受一個RESET指令以執(zhí)行撫慰,從而實現(xiàn)重新同步。</p><p> 3.2.4 BC04-B藍(lán)牙
27、模塊部分電路</p><p> BC04-B藍(lán)牙模塊[8,9,10]主要性能參數(shù):</p><p> 頻率:2.4GHz ISM band</p><p><b> 調(diào)制方式:GFSK</b></p><p> 發(fā)射功率等級:class2</p><p> 靈敏度:≦-80dBm<
28、/p><p> 通信速率:2Mbps</p><p><b> 供電電源:3.3V</b></p><p> 工作溫度:-20 ~+55℃</p><p> HC-06藍(lán)牙模塊部分電路圖如圖3.2.1:</p><p> 圖3.2.1 HC-06藍(lán)牙模塊部分電路</p><
29、;p> 圖3.2左邊部分為藍(lán)牙芯片,其TX與RX引腳分別接STC89C52的RXD(P3.0)和TXD(P3.1),PIO1接LED燈,當(dāng)LED常亮?xí)r表示藍(lán)牙數(shù)據(jù)開始傳輸。右上部分為電源+5V轉(zhuǎn)為+3.3V電路。BC04-B藍(lán)牙模塊實物如圖3.2.2:</p><p> 圖3.2.2 BC04-B藍(lán)牙模塊</p><p> 3.3 18B20數(shù)字溫濕度傳感器</p>
30、<p> 3.3.1 18B20簡介</p><p> DHT21數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器。該傳感器響應(yīng)快、抗干擾能力強(qiáng)、性價比高等優(yōu)點(diǎn)。單總線串行接口,使系統(tǒng)變得簡單快捷。超小的體積、極低的功耗。主要性能如下:</p><p> (1)供電電壓范圍:+3.0V~+5.5V; </p><p> (2)測溫
31、范圍:-55~+125℃。固有測溫分辨率為0.5℃。當(dāng)在-10℃~+85℃范圍內(nèi),可確保測量誤差不超過0.5℃,在-55~+125℃范圍內(nèi),測量誤差也不超過2℃; </p><p> ?。?)通過編程可實現(xiàn)9~12位的數(shù)字讀數(shù)方式.</p><p> 18B20引腳圖如圖3.3.1。本設(shè)計將1腳接電源+5V,2接STC89C52的I/O口P2.3腳接地。</p><p
32、><b> 圖3.3.1</b></p><p> 3.4超聲波測距傳感器及其電路部分</p><p> 3.4.1超聲波傳感器原理</p><p> (1)采用IO觸發(fā)測距,給至少10us的高電平信號;</p><p> (2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;</p>
33、;<p> (3)有信號返回,通過IO輸出一高電平,高電平持續(xù)的時間就是 超聲波從發(fā)射到返回的時間.測試距離=(高電平時間*聲速(340M/S))/2; </p><p> 圖3.4.5 超聲波發(fā)送接收原理圖</p><p> 3.5單片機(jī)數(shù)據(jù)傳輸系統(tǒng)的電源部分</p><p> 發(fā)射與接收模塊的電源均用+7.
34、2V的干電池經(jīng)7805穩(wěn)壓輸出+5V的電源,+5V電源在經(jīng)過ASM1117穩(wěn)壓輸出+3.3V。其電路原理圖如圖3.5.1。圖中J3的2腳位+7.2V,1腳為地;S4為撥動開關(guān),電容C11、C12、C13、C14均為7805輸入輸出端的濾波電容;D17為發(fā)光二極管,即電源指示燈;D19為1N4007保護(hù)二極管,當(dāng)輸入端短路時,給輸出電容C14一個放電回路,防止7805被擊穿損壞。</p><p> 圖3.5.1
35、 +5V電源部分</p><p> BC04-B藍(lán)牙模塊供電電源由+5V電源在經(jīng)過ASM1117穩(wěn)壓輸出+3.3V供電。其電路原理圖如圖3.5.2</p><p> 圖3.5.2 +3.3V電源部分</p><p> 3.6 MAX232串口電路</p><p> MAX232串口電路主要用于STC89C52單片機(jī)程序的燒寫以及用
36、于擴(kuò)展與上位機(jī)的通信。計算機(jī)串口采用的是RS232C負(fù)邏輯電平,“1”表示-12V,“0”表示+12V,與單片機(jī)的的TTL電平不同,因此通過MAX232串口電路實現(xiàn)與計算機(jī)進(jìn)行通信。其電路圖如圖3.7,圖中的5個電容均為0.1μF的瓷片電容,起到降低芯片的噪聲干擾。MAX232的11腳接STC89C52單片機(jī)的TXD(P3.1),12腳接單片機(jī)的RXD(P3.0);右下為串口母頭,用于與計算機(jī)的通信,第3腳(計算機(jī)數(shù)據(jù)輸出端)為從計算機(jī)
37、輸出至單片機(jī)端口,第2腳(計算機(jī)數(shù)據(jù)輸入端)為從單片機(jī)輸入至計算機(jī),5腳為地線,其余引腳在此不用。</p><p> 圖3.6 MAX232串口電路</p><p> 3.7單片機(jī)顯示電路</p><p> 接收模塊顯示電路采用LCD1602液晶顯示。LCD1602能顯示16個字符×2行,即32個字符。LCD液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)
38、已經(jīng)存儲了160個不同的字符,這些字符有阿拉伯?dāng)?shù)字、英文字母的大小寫、常用符號和日文假名等,每一個字符都有一個固定的ASCII代碼。其引腳說明如表3.8。</p><p> 表3.8 LCD1602引腳說明</p><p> LCD1602在本設(shè)計中的電路連接圖如圖3.8,1腳和3腳接地,2腳接電源+5V,4腳接STC89C52</p><p> 圖3.7 L
39、CD1602電路連接圖</p><p> 單片機(jī)的P2.5,5腳接P2.6,6腳接P2.7,714腳接P0口,15腳串接一個10K的電阻然后接到電源+5V。</p><p> 第四章 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)的軟件設(shè)計</p><p> 單片機(jī)數(shù)據(jù)傳輸系統(tǒng)軟件部分分為數(shù)據(jù)采集和接收發(fā)送數(shù)據(jù)兩個模塊[,在此僅分析主程序與各子程序的流程。涉及的子程序為18B20溫濕度子
40、程序,超聲波測距子程序,藍(lán)牙收發(fā)數(shù)據(jù)子程序,LCD1602液晶顯示子程序。</p><p> 4.1單片機(jī)數(shù)據(jù)采集系統(tǒng)的程序流程</p><p> 圖4.1 系統(tǒng)軟件主程序流程圖</p><p> 4.2藍(lán)牙數(shù)據(jù)收發(fā)系統(tǒng)的程序流程</p><p> 圖4.2 藍(lán)牙收發(fā)程序流程圖</p><p> 第五章 單片
41、機(jī)數(shù)據(jù)傳輸系統(tǒng)調(diào)試</p><p> 系統(tǒng)主要由發(fā)送模塊和接收模塊組成。用萬用表分別檢測無短路或斷路情況,測得電源部分7805輸出端+5V,電源指示燈亮,單片機(jī)等各芯片電壓正常。藍(lán)牙模塊接上電源LED指示燈正常點(diǎn)亮。</p><p> 先對溫度采集電路進(jìn)行調(diào)試,通過下載軟件將HEX文件燒寫進(jìn)入單片機(jī),發(fā)現(xiàn)藍(lán)牙能夠正常傳輸數(shù)據(jù),測得環(huán)境的溫度能在PC機(jī)上正常顯示,溫度精確到0.1℃,濕度
42、精確到0.1%,溫度的測量范圍為-20.0℃+120.0℃。</p><p> 其次距離采集電路進(jìn)行調(diào)試,下載軟件將HEX文件燒寫進(jìn)入單片機(jī),發(fā)現(xiàn)藍(lán)牙能夠正常傳輸數(shù)據(jù),PC機(jī)顯示實時距離值。</p><p> 然后整體系統(tǒng)調(diào)試,測得結(jié)果在空曠地帶,單片機(jī)數(shù)據(jù)傳輸距離可達(dá)30多米;在有障礙物的時候,數(shù)據(jù)傳輸距離也可達(dá)10幾米。</p><p><b>
43、 第六章 總結(jié)</b></p><p> 基于藍(lán)牙技術(shù)的數(shù)據(jù)傳輸系統(tǒng)的設(shè)計,以其低成本、低功耗、便攜式、高精度的設(shè)計理念,實現(xiàn)對環(huán)境的溫度、距離等數(shù)據(jù)的實時采集,讓人們的生產(chǎn)生活安排的更加合理有序。藍(lán)牙技術(shù)是全球廣泛使用的無線通信技術(shù),能夠?qū)崿F(xiàn)短距離快速傳輸大容量的數(shù)據(jù),是短距離數(shù)據(jù)通信的首選技術(shù),其不斷成熟的技術(shù),更是給無線通信領(lǐng)域帶來光明的前景,BC04-B藍(lán)牙模塊,可傳輸十幾米的距離,較好的完
44、成了設(shè)計任務(wù)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1]郭堅. 基于STC89C52單片機(jī)的多路數(shù)據(jù)采集控制系統(tǒng)設(shè)計[J].裝備制造,2010,(4):234.</p><p> [2]張發(fā)海. 基于單片機(jī)STC89C52的LED數(shù)碼管溫度顯示及報警器的實現(xiàn)[J].科技信息,2009,(35):87-88.&l
45、t;/p><p> [3]何國泉. 基于藍(lán)牙的無線接入點(diǎn)設(shè)計[J].微型機(jī)與應(yīng)用,2010,29(18):58-60.</p><p> [4]伍春. 基于藍(lán)牙的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計與實現(xiàn)[J].計算機(jī)應(yīng)用與軟件,2010,27(4):74-76,101.</p><p> [5]付蔚. 基于藍(lán)牙芯片的無線通信模塊設(shè)計與開發(fā)[J].微計算機(jī)信息,2009,25(
46、102):178-179,175.</p><p> [6]喻宗泉.藍(lán)牙技術(shù)基礎(chǔ)[M].北京:機(jī)械工業(yè)出版,2006.40-95.</p><p><b> 附錄 </b></p><p><b> 系統(tǒng)PCB:</b></p><p><b> 系統(tǒng)程序:</b>&l
47、t;/p><p> #include<REG52.H></p><p> #include<math.h></p><p> #include<stdio.h></p><p> #include<intrins.h></p><p> #define uchar
48、unsigned char</p><p> #define uint unsigned int</p><p> sbit DQ=P2^2;</p><p> sbit RS=P3^5;</p><p> sbit RW=P3^6;</p><p> sbit EN=P3^4;</p><
49、;p> sbit R=P2^7;</p><p> sbit T=P2^6;</p><p> unsigned int time=0;</p><p> unsigned long S=0;</p><p> bit flag =0;</p><p> unsigned char dis
50、buff[4] ={ 0,0,0,0,};</p><p> unsigned char code str1[]={"range temp "};</p><p> float RxBuf,disdata[5];</p><p> uint tvalue;//溫度值</p><p> uchar tf
51、lag;//溫度正負(fù)標(biāo)志</p><p> unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M
52、9;,};</p><p> uchar Tx,Ax;</p><p> /*************************lcd1602程序**************************/</p><p> void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的)</p><p><b&
53、gt; { </b></p><p> unsigned int i,j;</p><p> for(i=0;i<ms;i++)</p><p> for(j=0;j<100;j++);</p><p><b> }</b></p><p> void wr_c
54、om(unsigned char com)//寫指令//</p><p><b> { </b></p><p> delay1ms(1);</p><p><b> RS=0;</b></p><p><b> RW=0;</b></p><p&g
55、t;<b> EN=0;</b></p><p><b> P0=com;</b></p><p> delay1ms(1);</p><p><b> EN=1;</b></p><p> delay1ms(1);</p><p><b
56、> EN=0;</b></p><p><b> }</b></p><p> void wr_dat(unsigned char dat)//寫數(shù)據(jù)//</p><p><b> { </b></p><p> delay1ms(1);;</p><
57、p><b> RS=1;</b></p><p><b> RW=0;</b></p><p><b> EN=0;</b></p><p><b> P0=dat;</b></p><p> delay1ms(1);</p>
58、<p><b> EN=1;</b></p><p> delay1ms(1);</p><p><b> EN=0;</b></p><p><b> }</b></p><p> void lcd_init()//初始化設(shè)置//</p>
59、<p><b> {</b></p><p> // BLK=0;</p><p> delay1ms(15);</p><p> wr_com(0x38);</p><p> delay1ms(5);</p><p> wr_com(0x08);delay1ms(5);
60、</p><p> wr_com(0x01);delay1ms(5);</p><p> wr_com(0x06);delay1ms(5);</p><p> wr_com(0x0c);delay1ms(5);</p><p><b> }</b></p><p> void displ
61、ay(unsigned char *p)//顯示//</p><p><b> {</b></p><p> while(*p!='\0')</p><p><b> {</b></p><p> wr_dat(*p);</p><p><b&g
62、t; p++;</b></p><p> //delay1ms(1);</p><p><b> }</b></p><p><b> }</b></p><p> init_play()//初始化顯示</p><p><b> { <
63、/b></p><p> lcd_init();</p><p> wr_com(0x80);</p><p> display(str1);</p><p><b> }</b></p><p> /******************************ds1820程序**
64、*************************************/</p><p> void delay_18B20(unsigned int i)//延時1微秒</p><p><b> {</b></p><p> while(i--);</p><p><b> }</b>
65、</p><p> void ds1820rst()/*ds1820復(fù)位*/</p><p><b> { </b></p><p> unsigned char x=0;</p><p> DQ = 1; //DQ復(fù)位</p><p> delay_18B20(4);
66、 //延時</p><p> DQ = 0; //DQ拉低</p><p> delay_18B20(100); //精確延時大于480us</p><p> DQ = 1; //拉高</p><p> delay_18B20(40); </p><p><b>
67、 } </b></p><p> uchar ds1820rd()/*讀數(shù)據(jù)*/</p><p><b> { </b></p><p> unsigned char i=0;</p><p> unsigned char dat = 0;</p><p> for (i=8
68、;i>0;i--)</p><p><b> { </b></p><p> DQ = 0; //給脈沖信號</p><p><b> dat>>=1;</b></p><p> DQ = 1; //給脈沖信號</p><p><b>
69、 if(DQ)</b></p><p> dat|=0x80;</p><p> delay_18B20(10);</p><p><b> }</b></p><p> return(dat);</p><p><b> }</b></p>
70、;<p> void ds1820wr(uchar wdata)/*寫數(shù)據(jù)*/</p><p><b> {</b></p><p> unsigned char i=0;</p><p> for (i=8; i>0; i--)</p><p><b> { </b>
71、</p><p><b> DQ = 0;</b></p><p> DQ = wdata&0x01;</p><p> delay_18B20(10);</p><p><b> DQ = 1;</b></p><p> wdata>>=1;&
72、lt;/p><p><b> }</b></p><p><b> }</b></p><p> read_temp()/*讀取溫度值并轉(zhuǎn)換*/</p><p><b> {</b></p><p> uchar a,b;</p>&
73、lt;p> ds1820rst(); </p><p> ds1820wr(0xcc);//*跳過讀序列號*/</p><p> ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/</p><p> ds1820rst(); </p><p> ds1820wr(0xcc);//*跳過讀序列號*/ </p&
74、gt;<p> ds1820wr(0xbe);//*讀取溫度*/ </p><p> a=ds1820rd();</p><p> b=ds1820rd();</p><p><b> tvalue=b;</b></p><p> tvalue<<=8;</p><
75、p> tvalue=tvalue|a;</p><p> if(tvalue<0x0fff)</p><p><b> tflag=0;</b></p><p><b> else</b></p><p><b> {</b></p><
76、;p> tvalue=~tvalue+1;</p><p><b> tflag=1;</b></p><p><b> }</b></p><p> tvalue=tvalue*(0.625);//溫度值擴(kuò)大10倍,精確到1位小?</p><p> tvalue=tvalue-15
77、;</p><p> return(tvalue);</p><p><b> }</b></p><p> /*******************************************************************/</p><p> void show()//溫度值顯示</
78、p><p> { uchar flagdat; </p><p> time=TH0*256+TL0;</p><p><b> TH0=0;</b></p><p><b> TL0=0;</b></p><p> S=(time*1.7)/100; /
79、/算出來是CM </p><p> disdata[0]=tvalue/1000+0x30;//百位數(shù)</p><p> disdata[1]=tvalue%1000/100+0x30;//十位數(shù)</p><p> disdata[2]=tvalue%100/10+0x30;//個位數(shù)</p><p> disdata[3]=tval
80、ue%10+0x30;//小數(shù)位</p><p> disdata[4]=0x00;</p><p> if(tflag==0)</p><p> flagdat=0x20;//正溫度不顯示符號</p><p><b> else</b></p><p> flagdat=0x2d;//
81、負(fù)溫度顯示負(fù)號:-</p><p> if(disdata[0]==0x30)</p><p><b> {</b></p><p> disdata[0]=0x20;//如果百位為0,不顯示</p><p> if(disdata[1]==0x30)</p><p><b>
82、 { </b></p><p> disdata[1]=0x20;//如果百位為0,十位為0也不顯示</p><p><b> }</b></p><p><b> }</b></p><p> disbuff[0]=S%1000/100;</p><p>
83、; disbuff[1]=S%1000%100/10;</p><p> disbuff[2]=S%1000%100%10;</p><p> disbuff[3]=S%10000%1000 %100;</p><p> wr_com(0xc0);</p><p> wr_dat(ASCII[disbuff[0]]);//顯示百位
84、</p><p> wr_com(0xc1);</p><p> wr_dat(ASCII[10]);</p><p> wr_com(0xc2);</p><p> wr_dat(ASCII[disbuff[1]]);</p><p> wr_com(0xc3);</p><p>
85、 wr_dat(ASCII[disbuff[2]]);</p><p> wr_com(0xc4);</p><p> wr_dat(ASCII[12]); </p><p> wr_com(0xc8);</p><p> wr_dat(flagdat);//顯示符號?</p><p> wr_com(0
86、xc9);</p><p> wr_dat(disdata[0]);//顯示百位</p><p> wr_com(0xca);</p><p> wr_dat(disdata[1]);//顯示十位 </p><p> wr_com(0xcb);</p><p> wr_dat(disdata[2]);//顯示
87、個位 </p><p> wr_com(0xcc);</p><p> wr_dat(0x2e);//顯示小數(shù)點(diǎn) </p><p> wr_com(0xcd);</p><p> wr_dat(disdata[3]);//顯示小數(shù)位</p><p><b> }</b></p&g
88、t;<p> void StartModule() //啟動模塊</p><p><b> {</b></p><p> T=1; //啟動一次模塊</p><p><b> _nop_(); </b></p><
89、;p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b>
90、 _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b
91、></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p>
92、<p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_();</b></p><p><b> _nop_(); </b></p><p><b>
93、; _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> _nop_();</b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </
94、b></p><p><b> _nop_(); </b></p><p><b> _nop_(); </b></p><p><b> T=0;</b></p><p><b> }</b></p><p> v
95、oid UART_Init(void) //串口初始化</p><p><b> { </b></p><p> PCON = 0x00; </p><p> SCON = 0x50; //串口工作方式為1,允許接收. </p><p> TMOD = 0x21; // T1 定時方式2 c <
96、;/p><p> TH1 = 0xfd; //波特率 9600bps @ fosc = 11.0592MHz </p><p> TL1 = 0xfd; //啟動T1 </p><p><b> TH0 =0;</b></p><p><b> TL0 =0;</b></p
97、><p> ES = 1; //開串口中斷.</p><p><b> ET0 =1;</b></p><p><b> TR1=1; </b></p><p> EA = 1; //開總中斷.</p><p><b> }</b&g
98、t;</p><p> void Send(uchar dat)</p><p> { </p><p> SBUF = dat; //待發(fā)送的數(shù)據(jù)寫入緩沖區(qū) </p><p> while(!TI); //等待發(fā)送完成 </p><p> TI = 0;
99、 //清零發(fā)送標(biāo)志位</p><p><b> }</b></p><p> /////////////////</p><p> /********************主程序***********************************/</p><p> void main()</p>
100、<p><b> { </b></p><p> UART_Init();</p><p> init_play();//初始化顯示</p><p><b> while(1)</b></p><p><b> {</b></p><
101、p> read_temp();//讀取溫度</p><p> StartModule();</p><p> while(!R);//當(dāng)RX為零時等待</p><p> TR0=1; //開啟計數(shù)</p><p> while(R);//當(dāng)RX為1計數(shù)并等待</p><p> T
102、R0=0;//關(guān)閉計數(shù)</p><p> show();//顯示</p><p> delay1ms(80);//80M</p><p> if(Tx==1)</p><p><b> {</b></p><p> Send('t'); </p>
103、;<p> Send('e'); </p><p> Send('m'); </p><p> Send('p'); </p><p> Send('='); </p><p> Send(disdata[1]);</p><p>
104、 Send(disdata[2]);</p><p> Send('.');</p><p> Send(disdata[3]);</p><p><b> Tx=0;</b></p><p> Send(' ');</p><p><b>
105、 }</b></p><p> if(Ax==1)</p><p><b> {</b></p><p> Send('r'); </p><p> Send('a'); </p><p> Send('n'); </
106、p><p> Send('g'); </p><p> Send('e'); </p><p> Send('='); </p><p> Send(ASCII[disbuff[0]]);</p><p> Send('.'); </p>
107、<p> Send(ASCII[disbuff[1]]);</p><p> Send(ASCII[disbuff[2]]);</p><p> Send(' ');</p><p><b> Ax=0;</b></p><p><b> }</b><
108、/p><p><b> }</b></p><p><b> }</b></p><p> void Uart_INT(void) interrupt 4 //串口中斷函數(shù)</p><p><b> { </b></p><p> uchar
109、 Rcv = 0; </p><p> if(RI) //查詢接收標(biāo)志位(有數(shù)據(jù)發(fā)送過來時置為1) </p><p><b> { </b></p><p><b> RI = 0;</b></p><p> Rcv = SBUF;</p><p
110、> RxBuf=Rcv;</p><p> if(RxBuf=='g'){ Tx=1;}</p><p> if(RxBuf=='o'){ Ax=1;}</p><p><b> }</b></p><p><b> }</b></p&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---單片機(jī)串行通信發(fā)射機(jī)
- 畢業(yè)論文----單片機(jī)串行通信發(fā)射機(jī)
- [畢業(yè)論文]單片機(jī)串行通信發(fā)射機(jī)
- 畢業(yè)論文——單片機(jī)串行通信發(fā)射部分設(shè)計
- 基于單片機(jī)的串行通信發(fā)射機(jī)設(shè)計【畢業(yè)論文】
- 基于單片機(jī)的串行通信發(fā)射機(jī)設(shè)計【畢業(yè)論文】
- 基于單片機(jī)的油汀機(jī)控制模塊設(shè)計與實現(xiàn)——畢業(yè)論文
- 畢業(yè)論文-- 基于單片機(jī)的plc工控模塊的研究設(shè)計
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)畢業(yè)論文
- 單片機(jī)秒表設(shè)計畢業(yè)論文
- 基于單片機(jī)的串行通信發(fā)射機(jī)設(shè)計【畢業(yè)論文+文獻(xiàn)綜述+開題報告】
- 基于單片機(jī)的簡易低頻信號發(fā)射源的設(shè)計畢業(yè)論文
- 基于單片機(jī)的簡易低頻信號發(fā)射源的設(shè)計畢業(yè)論文
- 基于avr單片機(jī)液晶模塊界面設(shè)計【畢業(yè)論文】
- 單片機(jī)課設(shè)報告基于單片機(jī)的液晶顯示畢業(yè)論文
- 單片機(jī)畢業(yè)論文8
- 單片機(jī)畢業(yè)論文--基于單片機(jī)的led顯示屏設(shè)計
評論
0/150
提交評論