版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 信息與通信工程學(xué)院</b></p><p> 單片機(jī)系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p> 完成日期:2011年5月2日</p><p> 系:電子信息工程系</p><p> 專(zhuān) 業(yè):通信工程</p><p> 班 級(jí):</p><p
2、> 設(shè)計(jì)題目:智能家居中控系統(tǒng)</p><p> 學(xué)生姓名:</p><p> 指導(dǎo)教師:</p><p><b> 目錄</b></p><p><b> 一、項(xiàng)目概述1</b></p><p> 二、設(shè)計(jì)任務(wù)和性能指標(biāo)2</p><p&
3、gt; 2.1 設(shè)計(jì)任務(wù)2</p><p> 2.2 性能指標(biāo)2</p><p><b> 三、原理概述3</b></p><p><b> 四、設(shè)計(jì)方案4</b></p><p> 4.1 框圖設(shè)計(jì)5</p><p> 4.2 硬件設(shè)計(jì)6&
4、lt;/p><p> 4.2.1 STC89C52單片機(jī)7</p><p> 4.2.2 射頻nRF905發(fā)送模塊8</p><p> 4.2.3 TC35iGSM模塊10</p><p> 4.2.4 紅外線(xiàn)發(fā)送模塊11</p><p> 4.2.5 顯示電路12</p>
5、<p> 4.3 軟件設(shè)計(jì)13</p><p> 4.3.1 主程序14</p><p> 4.3.2 子程序16</p><p> 五、調(diào)試及性能分析20</p><p> 5.1 調(diào)試步驟21</p><p> 5.2 性能分析21</p><p>&
6、lt;b> 六、心得體會(huì)22</b></p><p><b> 參考文獻(xiàn)23</b></p><p> 附錄一 系統(tǒng)硬件電路圖24</p><p> 附錄二 程序清單26</p><p><b> 項(xiàng)目概述</b></p><p>
7、隨著現(xiàn)代科學(xué)技術(shù)的發(fā)展,生活水平的提高,人們的生活方式和生活質(zhì)量的要求也同以前有了追求?;氐郊依锵硎馨察o舒適方便快捷的休息方式已經(jīng)是時(shí)代發(fā)展的要求和人們生活所必需。為了讓人們快速?gòu)漠?dāng)前繁瑣的家庭勞動(dòng)中解放出來(lái),為了迎合時(shí)代科技發(fā)展的要求,我們?cè)O(shè)計(jì)了智能家居中控系統(tǒng)。將家居的環(huán)境參數(shù)諸如:濕度、溫度等信息,還有水煤電等線(xiàn)管數(shù)據(jù)的報(bào)警等信息通過(guò)短信,電話(huà)等多種途徑,將信息快速準(zhǔn)確的及時(shí)的發(fā)送到主人手中,讓你無(wú)論何時(shí)何地隨時(shí)掌握家里的數(shù)據(jù)信息
8、,還有解決了家里電器設(shè)備的操控的繁瑣,只要通過(guò)中控臺(tái)全部控制家里的應(yīng)用電器。 </p><p> 二、設(shè)計(jì)任務(wù)和性能指標(biāo)</p><p><b> 2.1 設(shè)計(jì)任務(wù)</b></p><p> 利用單片機(jī)及外圍接口電路和相關(guān)的功能模塊設(shè)計(jì)制作一個(gè)智能家居中控設(shè)備,并且用LCD12864液晶顯示器把相關(guān)的功能模塊采集到的數(shù)據(jù)顯示出來(lái),顯示當(dāng)
9、前操作的意義等相關(guān)的數(shù)據(jù)信息。</p><p> 要求用AD6 設(shè)計(jì)出相關(guān)的電路圖并且畫(huà)出系統(tǒng)的電路原理圖,印刷電路板,繪出程序流程圖,并給出程序清單。</p><p><b> 2.2 性能指標(biāo)</b></p><p> 數(shù)據(jù)顯示: LCD12864顯示每次中控臺(tái)發(fā)出或是接受到數(shù)據(jù)信息的意義以及相關(guān)的參數(shù)顯示出來(lái)。</p>
10、<p> 控制模塊: 控制模塊主要是由nRF905采集外圍的具有nRF905發(fā)射終端設(shè)備。例如采集溫度,濕度數(shù)據(jù),接受遙控設(shè)備的射頻遙控等命令。短信提醒功能,通過(guò)nRF905采集的數(shù)據(jù)經(jīng)過(guò)MCU控制后,經(jīng)過(guò)TC35i模塊經(jīng)過(guò)手機(jī)的短信平臺(tái)把相關(guān)的數(shù)據(jù)信息發(fā)送給使用者。</p><p> 系統(tǒng)精度:該中控系統(tǒng)是整個(gè)家居體系的核心處理部分,能夠把數(shù)據(jù)進(jìn)行綜合匯總,將所有的有關(guān)的數(shù)據(jù)實(shí)時(shí)準(zhǔn)確的進(jìn)行綜合匯
11、總控制。實(shí)現(xiàn)對(duì)家居設(shè)備的監(jiān)控和管理的掌控能力。經(jīng)過(guò)這幾大模塊功能的組合應(yīng)用,使家居的主人可以在任何時(shí)間,任何地點(diǎn),隨時(shí)掌控家里的所有信息和控制管理。</p><p><b> 三、原理概述</b></p><p> 該系統(tǒng)主要是基于四大控制模塊建立構(gòu)成的控制管理體系。首先是射頻模塊:射頻模塊將家居的具有射頻控制模塊的采集子終端以及遙控終端。主要是進(jìn)行接收控制命令和
12、采集家居的相關(guān)的數(shù)據(jù),在這里具體表現(xiàn)為,采集家居的溫度,濕度,煤氣報(bào)警,水電的報(bào)警數(shù)據(jù)以及射頻遙控器的遙控指令。再者是紅外線(xiàn)發(fā)送模塊:該模塊的主要功能是控制具有紅外線(xiàn)接收能力的家電設(shè)備例如:TV、DVD和電視機(jī)頂盒等相關(guān)的家用電器。該模塊主要是通過(guò)射頻模塊接收到的控制命令控制家用電器設(shè)備。還有就是LCD液晶顯示模塊:該模塊主要功能是用于顯示每次采集到的數(shù)據(jù)或是接受到的命令進(jìn)行顯示,說(shuō)明每次操作的具體意義。最后是GSM模塊:該模塊是基于手
13、機(jī)服務(wù)商的短信平臺(tái)進(jìn)行工作的,該模塊的功能是當(dāng)家里的水電煤氣等管理模塊發(fā)出報(bào)警信息的時(shí)候,家里沒(méi)有人在指定的時(shí)間內(nèi)進(jìn)行先關(guān)的處理控制的時(shí)候,這時(shí)中控系統(tǒng)將采集到的報(bào)警命令通過(guò)GSM模塊以短信的方式發(fā)送給家里的主人,這樣保證了家里的主人無(wú)論在何時(shí)何地,隨時(shí)掌握家里的所以信息。</p><p><b> 四、設(shè)計(jì)方案</b></p><p> 4.1 框圖設(shè)計(jì)&l
14、t;/p><p> 整個(gè)控制系統(tǒng)的基本模塊組成及與MCU之間的聯(lián)系的設(shè)計(jì)如圖所示分別包括了每個(gè)模塊的具體信息其系統(tǒng)框圖如圖4.1 所示。</p><p><b> 圖4.1</b></p><p> 4.2 硬件設(shè)計(jì)</p><p> TC35i新版西門(mén)子工業(yè)GSM模塊是一個(gè)支持中文短信息的工業(yè)級(jí)GSM模塊,工
15、作在EGSM900和GSM1800雙頻段,電源范圍為直流3.3~4.8V ,電流消耗——休眠狀態(tài)為3.5mA,空閑狀態(tài)為25mA,發(fā)射狀態(tài)為300mA(平均),2.5A峰值;可傳輸語(yǔ)音和數(shù)據(jù)信號(hào), 功耗在EGSM900(4類(lèi))和GSM1800(1類(lèi))分別為2W和1W ,通過(guò)接口連接器和天線(xiàn)連接器分別連接SIM卡讀卡器和天線(xiàn)。SIM電壓為3V/1.8V,TC35i的數(shù)據(jù)接口(CMOS電平)通過(guò)AT命令可雙向傳輸指令和數(shù)據(jù),可選波特率為30
16、0b/s~115kb/s , 自動(dòng)波特率為1.2kb/s~115kb/s。它支持Text和PDU格式的SMS(Short Message Service,短消息),可通過(guò)AT命令或關(guān)斷信號(hào)實(shí)現(xiàn)重啟和故障恢復(fù),中文資料如下:TC35i由供電模塊(ASIC)、閃存、ZIF連接器、天線(xiàn)接口等6部分組成。作為T(mén)C35i的核心基帶處理器主要處理GSM終端內(nèi)的語(yǔ)音和數(shù)據(jù)信號(hào),并涵蓋了蜂窩射頻設(shè)備中的所有模擬和數(shù)字功能。4.2.1 STC89C5
17、2單片機(jī)</p><p> STC89C52具體介紹如下:</p><p> ?、?主電源引腳(2根)</p><p> VCC(Pin40):電源輸入,接+5V電源</p><p> GND(Pin20):接地線(xiàn)</p><p> ?、谕饨泳д褚_(2根)</p><p> XTAL1
18、(Pin19):片內(nèi)振蕩電路的輸入端</p><p> XTAL2(Pin20):片內(nèi)振蕩電路的輸出端</p><p><b> ?、劭刂埔_(4根)</b></p><p> RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個(gè)機(jī)器周期的高電平將使單片機(jī)復(fù)位。</p><p> ALE/PROG(Pin30):地
19、址鎖存允許信號(hào)</p><p> PSEN(Pin29):外部存儲(chǔ)器讀選通信號(hào)</p><p> EA/VPP(Pin31):程序存儲(chǔ)器的內(nèi)外部選通,接低電平從外部程序存儲(chǔ)器讀指令,如果接高電平則從內(nèi)部程序存儲(chǔ)器讀指令。</p><p> ?、芸删幊梯斎?輸出引腳(32根)</p><p> STC89C52單片機(jī)有4組8位的可編程I/
20、O口,分別位P0、P1、P2、P3口,每個(gè)口有8位(8根引腳),共32根。</p><p> PO口(Pin39~Pin32):8位雙向I/O口線(xiàn),名稱(chēng)為P0.0~P0.7</p><p> P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O口線(xiàn),名稱(chēng)為P1.0~P1.7 </p><p> P2口(Pin21~Pin28):8位準(zhǔn)雙向I/O口線(xiàn),名稱(chēng)為P2.0~
21、P2.7 </p><p> P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線(xiàn),名稱(chēng)為P3.0~P3.7</p><p> STC89C52主要功能</p><p> nRF905可自動(dòng)完成處理字頭和循環(huán)冗余碼校驗(yàn)的工作,可由片內(nèi)硬件自動(dòng)完成曼徹斯特編碼/解碼, SPI接口與微控制器通信的使用,配置非常方便,其功耗也非常低,輸出功率為-10dBm發(fā)射時(shí)電
22、流只有11mA,在接收模式時(shí)電流為12.5mA。 nRF905單片無(wú)線(xiàn)收發(fā)模塊工作由一個(gè)完全集成的頻率調(diào)制器,一個(gè)帶解調(diào)器的接收器,一個(gè)功率放大器,一個(gè)晶體震蕩器和一個(gè)調(diào)節(jié)器組成。自動(dòng)產(chǎn)生前導(dǎo)碼和CRC是ShockBurst工作模式的特點(diǎn),可以很容易通過(guò)SPI接口進(jìn)行編程配置[8]。</p><p> 為實(shí)現(xiàn)無(wú)線(xiàn)傳輸?shù)墓δ?,本系統(tǒng)采用杭州飛拓電子有限公司生產(chǎn)的NewMsg_RF905SE無(wú)線(xiàn)通信模塊。NewMs
23、g_RF905SE的特點(diǎn)如下:</p><p> 433Mhz開(kāi)放ISM頻段免許可證使用</p><p> 最高工作速率50kbps,高效GFSK調(diào),抗干擾能力強(qiáng),特別適合工業(yè)控制場(chǎng)合</p><p> 125頻道,滿(mǎn)足多點(diǎn)通信和跳頻通信需要</p><p> 內(nèi)置硬件CRC檢錯(cuò)和點(diǎn)對(duì)多點(diǎn)通信地址控制</p><p
24、> 低功耗1 .9—3.6V工作,待機(jī)模式下?tīng)顟B(tài)僅為2.5 Ua</p><p> 收發(fā)模式切換時(shí)間<650us</p><p> 4.2.2 超聲波測(cè)距單片機(jī)系統(tǒng)</p><p> 單片機(jī)系統(tǒng)主要由:STC89C52單片機(jī)、晶振、復(fù)位電路、電源濾波部份構(gòu)成。STC89C52單片機(jī)是超聲波測(cè)距的核心部分,主要任務(wù):</p><
25、;p> 控制GSM模塊的指令發(fā)送。</p><p> 控制射頻模塊的工作。</p><p> 控制LCD顯示電路的工作。</p><p><b> 接受按鍵掃描。</b></p><p> 4.2.3 射頻電路</p><p> NewMsg_RF905SE管腳圖如3.5所示
26、。</p><p> 圖3.5 NewMsg_RF905SE管腳圖</p><p><b> 說(shuō)明:</b></p><p> VCC腳電壓范圍為3V—3.6V之間,不能在這個(gè)區(qū)間之外,超過(guò)3.6V將會(huì)燒毀模塊。推薦3.3V左右。</p><p> 除電源VCC和接地端,其余腳都可以直接和普通的5V單片機(jī)I/O口
27、直接相連,無(wú)需電平轉(zhuǎn)換。當(dāng)然對(duì)3V左右的單片機(jī)更加適用了。</p><p> 表3.1 NewMsg_RF905SE管腳圖</p><p> 3.2.3 工作方式</p><p> nRF905工作模式由TRX_CE、TX_EN、PWR_UP的設(shè)置來(lái)設(shè)定。工作模式由表3.1 </p><p><b> 所示[9]。</
28、b></p><p> 表3.2 nRF905工作模式</p><p> 電路原理圖如圖4.2.3所示。</p><p><b> 圖4.2.3</b></p><p> 4.2.4 GSM模塊TC35i</p><p> TC35i硬件設(shè)計(jì):TC35i模塊有40個(gè)引腳,通過(guò)一個(gè)
29、ZIF(Zero Insertion Force,零阻力插座)連接器引出。這40個(gè)引腳可以劃分為5類(lèi),即電源、數(shù)據(jù)輸入/輸出、SIM卡、音頻接口和控制。TC35i的第1~5引腳是正電源輸入腳通常推薦值4.2V,第6~10引腳是電源地。11、12為充電引腳,可以外接鋰電池,13為對(duì)外輸出電壓(共外電路使用),14為ACCU-TEMP接負(fù)溫度系數(shù)的熱敏電阻,用于鋰電池充電保護(hù)控制。15腳是啟動(dòng)腳IGT,系統(tǒng)加電后為使TC35i進(jìn)入工作狀態(tài),
30、必須給IGT加一個(gè)大于100ms的低脈沖,電平下降持續(xù)時(shí)間不可超過(guò)1ms。16~23為數(shù)據(jù)輸入/輸出,分別為DSR0、RING0、RxD0、TxD0、CTS0、RTS0、DTR0 和DCD0。tc35i模塊的數(shù)據(jù)輸入/輸出接口實(shí)際上是一個(gè)串行異步收發(fā)器,符合ITU-T RS232接口標(biāo)準(zhǔn)。它有固定的參數(shù):8位數(shù)據(jù)位和1位停止位,無(wú)校驗(yàn)位,波特率在300bps~115kbps之間可選,默認(rèn)9600。硬件握手信號(hào)用RTS0/CTS0,軟件流
31、量控制用XON/XOFF,CMOS電平,支持標(biāo)準(zhǔn)的AT命令集。其</p><p><b> 圖4.2.4</b></p><p> 4.2.5 顯示電路</p><p> 該系統(tǒng)采用112864液晶屏顯示模塊</p><p> 2864A-1漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字(
32、16X16點(diǎn)陣)、128個(gè)字符(8X16點(diǎn)陣)及64X256點(diǎn)陣顯示RAM(GDRAM)。</p><p> 主要技術(shù)參數(shù)和顯示特性:</p><p> 電源:VDD 3.3V~+5V(內(nèi)置升壓電路,無(wú)需負(fù)壓);</p><p> 顯示內(nèi)容:128列× 64行</p><p><b> 顯示顏色:黃綠</b&
33、gt;</p><p> 顯示角度:6:00鐘直視</p><p><b> LCD類(lèi)型:STN</b></p><p> 與MCU接口:8位或4位并行/3位串行</p><p><b> 配置LED背光</b></p><p> 多種軟件功能:光標(biāo)顯示、畫(huà)面移位、
34、自定義字符、睡眠模式等</p><p> 邏輯工作電壓(VDD):4.5~5.5V</p><p> 電源地(GND):0V</p><p> 工作溫度(Ta):0~60℃(常溫) / -20~75℃(寬溫)</p><p> 串行數(shù)據(jù)傳送共分三個(gè)字節(jié)完成:</p><p> 第一字節(jié):串口控制—格式 111
35、11ABC</p><p> A為數(shù)據(jù)傳送方向控制:H表示數(shù)據(jù)從LCD到MCU,L表示數(shù)據(jù)從MCU到LCD</p><p> B為數(shù)據(jù)類(lèi)型選擇:H表示數(shù)據(jù)是顯示數(shù)據(jù),L表示數(shù)據(jù)是控制指令</p><p><b> C固定為0</b></p><p> 第二字節(jié):(并行)8位數(shù)據(jù)的高4位—格式 DDDD0000&l
36、t;/p><p> 第三字節(jié):(并行)8位數(shù)據(jù)的低4位—格式 0000DDDD</p><p> 串行接口時(shí)序參數(shù):(測(cè)試條件:T=25℃ VDD=4.5V)</p><p><b> 圖4.2.5</b></p><p><b> 4.3 軟件設(shè)計(jì)</b></p><p&g
37、t; 4.3.1 主程序</p><p> 本系統(tǒng)的智能化核心是STC89C52,其收發(fā)程序和應(yīng)用軟件全部固化在EPROM內(nèi)。它的工作過(guò)程是:當(dāng)系統(tǒng)上電后,單片機(jī)進(jìn)入監(jiān)控狀態(tài),同時(shí)完成對(duì)各端口的初始化工作,當(dāng)外部的采集數(shù)據(jù)模塊的終端設(shè)備有報(bào)警信息時(shí)候,直接發(fā)送傳達(dá)的指令在沒(méi)有采取的到相應(yīng)的指令的情況下,短信發(fā)送模塊激活,向固定的電話(huà)發(fā)送短信報(bào)告之相應(yīng)的數(shù)據(jù)信息。LCD顯示模塊同時(shí)顯示收到數(shù)據(jù)的意義。當(dāng)中控臺(tái)
38、收到射頻遙控器的指令時(shí),通過(guò)MCU的綜合處理,將射頻協(xié)議和紅外線(xiàn)協(xié)議轉(zhuǎn)換,發(fā)射出與之對(duì)應(yīng)的紅外線(xiàn)命令從而實(shí)現(xiàn)對(duì)家用電器的控制和管理的操作。此時(shí)遙控器接收模塊接收相應(yīng)數(shù)據(jù)并將數(shù)據(jù)在LCD顯示屏上顯示。</p><p> 圖4.3為主程序流程圖。</p><p> 圖4.3主程序流程圖</p><p> 4.3.2 系統(tǒng)的子程序。</p><
39、p> RF905無(wú)線(xiàn)數(shù)傳程序包括無(wú)線(xiàn)發(fā)送程序和無(wú)線(xiàn)接收程序。</p><p> ShockBurst TX發(fā)送流程分一下幾步:</p><p> 當(dāng)微控制器有效數(shù)據(jù)要發(fā)送時(shí),通過(guò)SPI接口,按時(shí)序跋接收機(jī)的地址和藥發(fā)送的數(shù)據(jù)傳送給RF905,SPI接口的速率在通信協(xié)議和器件配置時(shí)確定;</p><p> 微控制器置高TRX_CE和TX_EN,激發(fā)RF9
40、05的ShockBurstTM發(fā)送模式;</p><p> RF905的ShockBurstTM發(fā)送:</p><p> 射頻寄存器自動(dòng)開(kāi)啟;</p><p> 數(shù)據(jù)打包(加頭字和CRC校驗(yàn)碼);</p><p><b> 發(fā)送數(shù)據(jù)包;</b></p><p> 當(dāng)數(shù)據(jù)發(fā)送完成,數(shù)據(jù)準(zhǔn)備
41、好引腳被置高;</p><p> AUTO_RETRAN被置高,RF905不斷重發(fā),自動(dòng)進(jìn)入空閑。注意:ShockBurstTM工作模式保證,一旦發(fā)送數(shù)據(jù)的過(guò)程開(kāi)始,無(wú)論TRX-NE和TX_EN引腳是高或低,發(fā)送過(guò)程都會(huì)被處理完。只有在前一個(gè)數(shù)據(jù)包被發(fā)送完畢,RF905才能接受下一個(gè)發(fā)送數(shù)據(jù)包。</p><p> ShockBurst TX發(fā)送流程圖如圖4.4所示五、調(diào)試及性能分析&l
42、t;/p><p><b> 圖 4.4</b></p><p> ShockBurst RX接收流程分一下幾步:</p><p> 當(dāng)TRX_CE高、TX_EN為低時(shí),RF905J進(jìn)入ShockBurst TM接收模式;</p><p> 650us后,RF905不斷監(jiān)測(cè),等待接收數(shù)據(jù);</p><
43、;p> 當(dāng)RF905檢測(cè)到同一頻段的載波時(shí),載波檢測(cè)引腳被置高;</p><p> 當(dāng)接收到一個(gè)匹配的地址,AM引腳;</p><p> 當(dāng)一個(gè)正確的數(shù)據(jù)包接收完畢,RF905自動(dòng)移去字頭、地址和CRC校驗(yàn)位,然后把DR引腳置高;</p><p> 微控制器把TRX_CE置低,RF905進(jìn)入空閑模式;</p><p> 微控制
44、器通過(guò)SPI口,以一定的速率把數(shù)據(jù)移到微控制器內(nèi);</p><p> 當(dāng)所有的數(shù)據(jù)接收完畢,RF905把DR引腳和AM引腳置低;</p><p> RF905此時(shí)可以進(jìn)入ShockBurst TM接收模式、ShockBurst TM發(fā)送模式或關(guān)機(jī)。</p><p> 當(dāng)正在接收一個(gè)數(shù)據(jù)包時(shí),TRX-CE或TX_EN引腳的狀態(tài)發(fā)生改變,RF905立即把其工作模式
45、改變,數(shù)據(jù)包丟失。當(dāng)微處理器接到AM引腳的信號(hào)之后,其就知道RF905正在接收數(shù)據(jù)包,其可以決定是讓RF905繼續(xù)接收該數(shù)據(jù)包還是進(jìn)入另一個(gè)工作模式。</p><p> ShockBurst RX接收流程圖如圖4.5所示。</p><p><b> 圖 4.5</b></p><p> 顯示模塊LCD12864程序編寫(xiě):</p>
46、;<p> 本系統(tǒng)采用的是串行通信方式,這樣可以有效的減少單片機(jī)的I/O的占用,為將來(lái)的功能的擴(kuò)展提供了接口控制。主要的指令如下:</p><p><b> 寫(xiě)指令:</b></p><p> void write_cmd(uchar cmd)</p><p> { <
47、;/p><p> lcdrs = 0;//低電平表命令</p><p> lcdrw = 0;// 低電平表寫(xiě)</p><p> P0 = cmd;//把命令送給P0</p><p> lcden = 0;//產(chǎn)生一個(gè)高脈沖</p><p> delay_ms(5);</p><p>
48、lcden = 1;</p><p> delay_ms(5);//不用的時(shí)候把en拉低,12864不使能</p><p> lcden = 0; </p><p><b> }</b></p><p><b> (2)寫(xiě)數(shù)據(jù):</b></p><p> void
49、 write_dat(uchar dat)</p><p> { </p><p> lcdrs = 1;//高電平表示數(shù)據(jù)</p><p> lcdrw = 0;//低電平表示寫(xiě)</p><p> P0 = dat;//把數(shù)據(jù)送到端口</p><p> lc
50、den = 0;//產(chǎn)生一個(gè)高脈沖</p><p> delay_ms(5);</p><p> lcden = 1;</p><p> delay_ms(5);</p><p> lcden = 0; //不用時(shí)不使能</p><p><b> }</b></p>&l
51、t;p> TC35i的發(fā)送短信程序:</p><p><b> 5.1 調(diào)試步驟</b></p><p> 焊接好各個(gè)模塊后,進(jìn)行模塊的單獨(dú)測(cè)試。紅外線(xiàn)發(fā)送調(diào)試部分比較要求細(xì)致一些,在這里的時(shí)序控制問(wèn)題和頻率精度的設(shè)計(jì)要求較高,在計(jì)算初值和調(diào)試載波的占空比的時(shí)候都要利用示波器精確測(cè)量。GSM模塊根據(jù)相應(yīng)用到的指令進(jìn)行分部的調(diào)試,最后在進(jìn)行整個(gè)模塊的功能調(diào)
52、試。顯示模塊調(diào)試比較簡(jiǎn)單了,只要保證對(duì)應(yīng)的引腳電路的正確,時(shí)能時(shí)鐘應(yīng)用正確,液晶屏就會(huì)按照程序設(shè)計(jì)的方式進(jìn)行顯示。無(wú)線(xiàn)射頻模塊的調(diào)試要進(jìn)行收發(fā)兩種模式的相互配合,在調(diào)試的時(shí)候可以利用DR引腳和CD引腳在工作模式下的特殊性進(jìn)行調(diào)試。在所有的模塊都調(diào)試成功后才可以進(jìn)行系統(tǒng)的軟件的綜合控制管理MAIN函數(shù)測(cè)試和調(diào)試工作。</p><p><b> 六、心得體會(huì)</b></p>&l
53、t;p> 兩個(gè)月的單片機(jī)課程設(shè)計(jì)結(jié)束了,在這次的課程設(shè)計(jì)中不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過(guò)程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。課程設(shè)計(jì)是我們專(zhuān)業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過(guò)程.”千里之行始于足下”,通過(guò)這次課程設(shè)計(jì),我深
54、深體會(huì)到這句千古名言的真正含義.我今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開(kāi)這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ).通過(guò)這次智能家居中控設(shè)計(jì),本人在多方面都有所提高。通過(guò)這次智能家居中控設(shè)計(jì),綜合運(yùn)用本專(zhuān)業(yè)所學(xué)課程的理論和生產(chǎn)實(shí)際知識(shí)進(jìn)行一次智能家居中控設(shè)計(jì)工作的實(shí)際訓(xùn)練從而培養(yǎng)和提高學(xué)生獨(dú)立工作能力,鞏固與擴(kuò)充了智能家居中控設(shè)計(jì)等課程所學(xué)的內(nèi)容,掌握智能家居中控設(shè)計(jì)的方法和步驟,同時(shí)各科相關(guān)的課程都有了全面的復(fù)習(xí),獨(dú)立
55、思考的能力也有了提高。在這次設(shè)計(jì)過(guò)程中,體現(xiàn)出我們?cè)O(shè)計(jì)智能家居中控的能力以及綜合運(yùn)用知識(shí)的能力,體會(huì)了學(xué)以致用、突出自己勞動(dòng)成果的喜悅心情</p><p><b> 七,參考文獻(xiàn)</b></p><p> [1] 樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例.北京航空航天大學(xué)出版社 ,2003</p><p> [2] 何希才.常用集成電路應(yīng)用
56、實(shí)例.電子工業(yè)出版社,2007</p><p> [3] 楊國(guó)田,白 焰,董 玲.51單片機(jī)實(shí)用C語(yǔ)言程序設(shè)計(jì).中國(guó)電力出版社,2009</p><p> [4] 楊居義.單片機(jī)課程設(shè)計(jì)指導(dǎo).清華大學(xué)出版社,2009</p><p> 附錄一 系統(tǒng)硬件電路圖</p><p><b> 附錄三 程序清單</b>
57、</p><p> 超聲波測(cè)距器單片機(jī)程序 (文件1保存為ceju.c)</p><p> #include<reg51.h></p><p> #defineuchar unsigned char</p><p> #define unit unsigned int</p><p> #d
58、efine ulong unsigned long</p><p> #include"intrins.h"</p><p> #include"string.h"</p><p> sbit ir=P3^4;//紅外發(fā)射管控制腳 </p><p> uint count, set_count;
59、//中斷計(jì)數(shù),設(shè)定中斷次數(shù) </p><p> bit keyflag,flag;//紅外發(fā)送標(biāo)志,按鍵標(biāo)志位 </p><p> uchar irsys[4]={0x1a,0xa1,0xdc,0x03};//26位系統(tǒng)碼,最后一個(gè)字節(jié)只用2位 </p><p> uchar ircode,irdata,num; </p><p>
60、unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> #define buf_max 72//緩存長(zhǎng)度72</p><p> uchar a,i;</p><p> uchar rec_buf[buf_max];//接收緩存</p&
61、gt;<p> #include"stdio.h"</p><p> #include"math.h"</p><p> #define uchar unsigned char </p><p> #define uint unsigned int</p><p> #defi
62、ne WC0x00// Write configuration register command </p><p> #define RC0x10 // Read configuration register command</p><p> #define WTP0x20 // Write TX Payload command</p>
63、;<p> #define RTP0x21// Read TX Payload command</p><p> #define WTA0x22// Write TX Address command</p><p> #define RTA0x23// Read TX Address command</p><
64、p> #define RRP0x24// Read RX Payload command</p><p> typedef struct RFConfig</p><p><b> {</b></p><p><b> uchar n;</b></p><p> uch
65、ar buf[10];</p><p> }RFConfig;</p><p> code RFConfig RxTxConf = </p><p><b> {</b></p><p><b> 10,</b></p><p> 0x4c, 0
66、x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58</p><p><b> };</b></p><p> // 905配置初始化數(shù)據(jù)//字節(jié)1以10dBm功率輸出//RX、TX地址寬度為4字節(jié)。</p><p> //0x20, 0x20:收發(fā)32字節(jié)//允許CRC8位校驗(yàn)外接(模塊
67、自身帶有的)16MHz晶振。</p><p> //0x4c:頻率430mhz s</p><p> // 0x20, 0x20:收發(fā)32字節(jié)</p><p> // 0xcc, 0xcc, 0xcc,0xcc:spi寫(xiě)入的地址</p><p> uchar data TxBuf[]="12345";</p&
68、gt;<p> uchar data RxBuf[6];</p><p> uchar temp;</p><p> unsigned char code table1[]=</p><p> {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86
69、,0x8e,0xaa}; </p><p> uchar bdata DATA_BUF;//片內(nèi)RAM尋址存儲(chǔ)</p><p> sbitflag=DATA_BUF^7;</p><p> sbitflag1=DATA_BUF^0;</p><p> sbitTX_EN =P0^7;</p><
70、p> sbitTRX_CE =P0^6;</p><p> sbitPWR_UP =P0^5;</p><p> sbitMISO =P0^1;</p><p> sbitMOSI =P0^0;</p><p> sbitSCK =P2^7;</p><
71、;p> sbitCSN =P2^3;</p><p> sbitAM =P0^3;</p><p> sbitDR =P2^2;</p><p> sbitCD =P0^4;</p><p> sbit SDATA_595 = P1^0;</p
72、><p> sbit SCLK_595 = P1^1;</p><p> sbit SRCLK_595 = P1^2;</p><p> sbit wei_y0 = P1^4;</p><p> sbit LED=P2^0;</p><p> sbit key1 = P3^0;&
73、lt;/p><p> sbit key4 = P3^1;</p><p> sbit key5 = P3^2;</p><p> sbit dula = P2^6;sbit wela = P2^7;//SCM12864-05端口定義#define LCD_DATA P0 //數(shù)據(jù)口sbit RS = P3^5; //并行的指令/數(shù)據(jù)選擇信號(hào)
74、, H數(shù)據(jù), L命令sbit RW = P3^6; //并行讀寫(xiě)選擇信號(hào), H讀, L寫(xiě)sbit E = P3^4; //并行使能端, H有效, L無(wú)效sbit PSB = P3^7; //并/串接口選擇, H并,L串sbit RET = P3^3; //復(fù)位, L有效</p><p> uchar code datas1[] = {"歡迎使用家居中控系統(tǒng)"};uchar code
75、 datas2[] = {"工作模式:"};uchar code datas3[] = {"意義:"};uchar code datas4[] = {"指令碼:"};</p><p> void InitIO(void);// Initialize IO port</p><p> void Inituart(vo
76、id); // initialize 232 uart</p><p> void Config905(void);// Config nRF905 module配置NRF905模式</p><p> void SetTxMode(void);// Set nRF905 in Tx mode</p><p> void TxPacket
77、(void);// Send data by nRF905</p><p> void SpiWrite(uchar);// Write data to nRF905</p><p> void Delay(uchar n);// Delay 100us</p><p> void display();</p><p>
78、; void SendData_595 ();</p><p> void OutputData_595 ();</p><p> void main()</p><p><b> {</b></p><p><b> while(1)</b></p><p>
79、{//=========RF905初始化 ===========================</p><p> CSN=1;// Spi disable</p><p> SCK=0;// Spi clock line init high</p><p> DR=1;// Init DR for input
80、</p><p> AM=1;// Init AM for input</p><p> PWR_UP=1;// nRF905 power on</p><p> TRX_CE=0;// Set nRF905 in standby mode spi編程模式</p><p> TX_EN=0;
81、// set radio in Rx mode</p><p> Config905(); // Config nRF905 module</p><p><b> key1=0;</b></p><p> if(key4!=1) //電動(dòng)機(jī)反轉(zhuǎn) 窗簾打開(kāi) </p><p><b>
82、 {</b></p><p> TxBuf[0] =1;</p><p><b> } </b></p><p> if(key5!=1) //電動(dòng)機(jī)正轉(zhuǎn) 窗簾關(guān)閉</p><p><b> { </b></p><p> TxBuf[0] =2;
83、</p><p><b> }</b></p><p> if(key6!=1) //電動(dòng)機(jī)停止 </p><p><b> { </b></p><p> TxBuf[0] =3;</p><p><b> }</b></p&
84、gt;<p> if(key7!=1) //進(jìn)入自動(dòng)模式(光控窗簾) </p><p><b> { </b></p><p> TxBuf[0] =4;</p><p><b> }</b></p><p> SetTxMode(); // Set Tx
85、Mode*/</p><p> TxPacket(); // T發(fā)送數(shù)據(jù)包</p><p><b> } </b></p><p><b> }</b></p><p> void Delay(uchar n)</p><p><b>
86、{</b></p><p><b> uint i;</b></p><p> while(n--)</p><p> for(i=0;i<80;i++);</p><p><b> }</b></p><p> void Config905(v
87、oid)</p><p><b> {</b></p><p> uchar i;</p><p> CSN=0;// Spi enable for write a spi command</p><p> SpiWrite(WC);// Write config command寫(xiě)放配置
88、命令</p><p> for (i=0;i<RxTxConf.n;i++)// Write configration words 寫(xiě)放配置字</p><p><b> {</b></p><p> SpiWrite(RxTxConf.buf[i]);</p><p><b> }</b
89、></p><p> CSN=1;// Disable Spi</p><p><b> }</b></p><p> void SpiWrite(uchar byte)</p><p><b> {</b></p><p><b> u
90、char i;</b></p><p> DATA_BUF=byte;// Put function's parameter into a bdata variable </p><p> for (i=0;i<8;i++) // Setup byte circulation bits</p><p><
91、;b> {</b></p><p> if (flag) // Put DATA_BUF.7 on data line</p><p><b> MOSI=1;</b></p><p><b> else</b></p><p><b>
92、MOSI=0;</b></p><p> SCK=1; // Set clock line high</p><p> DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF</p><p> SCK=0; // Set clock line low </p>
93、<p><b> }</b></p><p><b> SCK=0;</b></p><p><b> }</b></p><p> void TxPacket(void)</p><p><b> {</b></p>
94、<p><b> uchar i;</b></p><p> PWR_UP=1;//上電</p><p> TX_EN=1;//發(fā)送使能</p><p> TRX_CE=0;// Set TRX_CE low進(jìn)入spi編程模式</p><p> CSN=0;// Spi
95、enable for write a spi command spi使能</p><p> SpiWrite(WTA);// Write address command 寫(xiě)入“寫(xiě)地址命令”</p><p> for (i=0;i<4;i++)// Write 4 bytes address</p><p><b> {</b
96、></p><p> SpiWrite(RxTxConf.buf[i+5]);</p><p><b> }</b></p><p> CSN=1;// Spi disable</p><p><b> Delay(1);</b></p><p&
97、gt; CSN=0;// Spi enable for write a spi command</p><p> SpiWrite(WTP);// Write payload command寫(xiě)入“寫(xiě)數(shù)據(jù)命令”</p><p> for (i=0;i<32;i++)//寫(xiě)入“寫(xiě)地址命令”</p><p><b> {<
98、/b></p><p> SpiWrite(TxBuf[i]);// Write 32 bytes Tx data </p><p><b> }</b></p><p> CSN=1;// Spi disable</p><p> TRX_CE=1;// 進(jìn)入發(fā)送模式
99、發(fā)送數(shù)據(jù)</p><p><b> Delay(1);</b></p><p> /*if (DR)</p><p><b> { </b></p><p><b> LED=0;</b></p><p> Delay(500);</p
100、><p><b> LED=1;</b></p><p> Delay(500);</p><p><b> }*/</b></p><p> TRX_CE=0;// Set TRX_CE low進(jìn)入spi編程模式</p><p> display();
101、</p><p><b> }</b></p><p> void SetTxMode(void)</p><p><b> {</b></p><p><b> TX_EN=1;</b></p><p><b> TRX_
102、CE=1;</b></p><p> Delay(1); // delay for mode change(>=650us)</p><p><b> }</b></p><p> //延時(shí)約2usvoid delayUs(){nop_();_nop_();}//延時(shí) a * 1msvoid dela
103、yMs(uint a){ uint i, j; for(i = a; i > 0; i--) for(j = 100; j > 0; j--);}</p><p> //檢測(cè)LCD是否處于忙狀態(tài), 若忙返回1, 空閑返回0bit ch
104、eckBusy(){ bit busy; RS = 0; RW = 1; E = 1; delayUs(); busy = (bit)(LCD_DATA&0x80); E = 0;
105、160; return busy;}</p><p> //等待LCD到空閑void wait(){ while(checkBusy());}</p><p> //寫(xiě)命令void writeCmd(uchar cmd){ wait(); RS =
106、0; RW = 0; E = 0; delayUs(); LCD_DATA = cmd; delayUs(); E = 1; delayUs(); &
107、#160; E = 0;}</p><p> //寫(xiě)數(shù)據(jù)void writeData(uchar dat){ wait(); RS = 1; RW = 0; E = 0; delayUs();
108、 LCD_DATA = dat; delayUs(); E = 1; delayUs(); E = 0;}</p><p> //初始化LCDvoid init(){ PSB = 1; //并口方式
109、60; writeCmd(0x30); //基本指令, 擴(kuò)充指令為34H delayMs(10); writeCmd(0x0c); //顯示開(kāi), 關(guān)光標(biāo) delayMs(10); writeCmd(0x01); //清屏 de
110、layMs(10);}</p><p> void setPosition(uchar x, uchar y){ uchar p; switch(x%4) { case 0: p = 0x80; break; //第一行開(kāi)始地址 &
111、#160; case 1: p = 0x90; break; //第二行 case 2: p = 0x88; break; //第三行 case 3: p = 0x98; break; //第四行
112、; } p += y; writeCmd(p);}</p><p> void writeString(uchar * str){ uchar i = 0; while(str[i] != '\0') {
113、0; writeData(str[i++]); }}</p><p> /**//***************************LCD12864***************************/</p><p> void display(){//先關(guān)閉數(shù)碼管
114、, 使兩個(gè)鎖存器鎖存, 因開(kāi)了數(shù)碼管, USB電壓驅(qū)動(dòng)不夠, 將 無(wú)法使LCD正常工作 dula = wela = 0; init(); setPosition(0, 0); writeString(datas1); setPosi
115、tion(1, 0); writeString(datas2); setPosition(2, 0); writeString(datas3); setPosition(3, 0); writeString(datas4);
116、 while(1);}</p><p> //******************************************************************</p><p> void delay(uint z) //1ms延時(shí)</p><p><b> {</b></p><
117、p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void SerialInit()//初始化程序(必須使用,否則
118、無(wú)法收發(fā))</p><p><b> {</b></p><p> TMOD=0x20;//設(shè)置定時(shí)器工作方式為8位自動(dòng)裝入數(shù)據(jù)</p><p> TH1=0xfd;//裝入初值,波特率9600</p><p><b> TL1=0xfd;</b></p><p>
119、 TR1=1;//打開(kāi)定時(shí)器</p><p> SM0=0;//設(shè)置串行通訊工作模式,(10為一部發(fā)送,波特率可變,由定時(shí)器1的溢出率控制)</p><p> SM1=1;//(同上)在此模式下,定時(shí)器溢出一次就發(fā)送一個(gè)位的數(shù)據(jù)</p><p> REN=1;//串行接收允許位(要先設(shè)置sm0sm1再開(kāi)串行允許)</p><p><
120、;b> EA=1;</b></p><p><b> ES=1;</b></p><p><b> }</b></p><p> /*//////////////////////////////////////////////////////////////////////////////////
121、//////////////////</p><p> // 函數(shù)名:void Uart1Sends(char* at)</p><p> // 作用: 發(fā)送字符串到串口1</p><p> // 參數(shù): char* at 字符串頭地址</p><p><b> // 返回:</b></p><
122、;p> ////////////////////////////////////////////////////////////////////////////////////////////////////*/</p><p> void Uart1Sends(char* at)</p><p> { </p><p>
123、; uchar cnt=0; </p><p> ES=0;//關(guān)串行口中斷</p><p> while(*(at+cnt))//判斷一串?dāng)?shù)據(jù)是否結(jié)束</p><p><b> {</b></p><p> SBUF=*(at+cnt);//發(fā)送數(shù)據(jù)</p&
124、gt;<p> while(TI==0);//查詢(xún)發(fā)送是否結(jié)束</p><p> TI=0;//清除發(fā)送一標(biāo)志位</p><p> cnt++;//準(zhǔn)備發(fā)送一個(gè)數(shù)據(jù)</p><p><b> }</b></p><p> ES=1;//開(kāi)串行口中斷</p><p>
125、;<b> }</b></p><p> /*****************判斷緩存中是否含有指定的字符串函數(shù)******************/</p><p> /*函數(shù)原型:bit hand(unsigned char *a)</p><p> /*函數(shù)功能:判斷緩存中是否含有指定的字符串</p><p&g
126、t; /*輸入?yún)?shù):unsigned char *a 指定的字符串</p><p> /*輸出參數(shù):bit 1---含有 0---不含有</p><p><b> /*調(diào)用模塊:無(wú)</b></p><p> /*************************************************************
127、*********/</p><p> bit hand(uchar *a)</p><p><b> { </b></p><p> if(strstr(rec_buf,a)!=NULL) //!=是不等于</p><p><b> return 1;</b></p>&
128、lt;p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> /**************************清除緩存數(shù)據(jù)函數(shù)****************************/</p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)智能家居系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)-基于gsm的智能家居系統(tǒng)
- 基于單片機(jī)的智能家居安防系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的智能家居控制設(shè)計(jì)
- 基于單片機(jī)的智能家居控制設(shè)計(jì)開(kāi)題報(bào)告.doc
- 基于單片機(jī)的智能家居控制設(shè)計(jì)開(kāi)題報(bào)告.doc
- 基于單片機(jī)的智能家居控制設(shè)計(jì) (2)
- 基于單片機(jī)的智能家居畢業(yè)設(shè)計(jì)
- 基于arduino單片機(jī)的智能家居設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的智能家居系統(tǒng)的研究.pdf
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)控制秒表系統(tǒng)
- 基于單片機(jī)的智能家居安保系統(tǒng)的設(shè)計(jì)研究.pdf
- 畢業(yè)設(shè)計(jì)-----基于單片機(jī)的智能家居控制系統(tǒng)設(shè)計(jì)
- 智能家居控制系統(tǒng)課程設(shè)計(jì)
- 文獻(xiàn)綜述--基于單片機(jī)的智能家居控制設(shè)計(jì).doc
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 《單片機(jī)課程設(shè)計(jì)》報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論